Menu
Imam Ferianto Blogs
  • Home
  • About
Imam Ferianto Blogs

migrasi php-yii ke golang-part 1

Posted on February 13, 2020February 17, 2020 by feri

Belum lama ini iseng ngoprek golang, ternyata performancenya keren banget, ditambah bisa dicompile ke binary (cocok banget ini untuk jualan software web).

Request Per Second (more is better)

sumber:
https://www.toptal.com/back-end/server-side-io-performance-node-php-java-go

 

Nah pada sesi kali ini saya akan berbagi tips bagaimana membuat crud-mysql dan mvc structrure menggunakan golang dengan mudah, tanpa harus coding modelnya guys. Saya tulis karena sepertinya belum banyak yang mendokumentasikan atau menulis dengan lengkap step by stepnya.

About Yii Framework

Topik kali ini saya beri judul migrasi php-yii ke golang, karena memang case kali ini dilakukan untuk melakukan conversi dari aplikasi yang sebelumnya menggunakan php framework yii.  Apa itu yii  ? akan saya bahas di tulisan lainnya.  Intinya yii ini adalah framework php yang membuat programmer dimanjakan dengan fitur crud code generatornya yang cocok banget untuk programmer lazy coding seperti saya yang ingin membuat aplikasi dengan cepat. Selain yii ada juga puluhan framework lain seperti laravel , slim, silex, CI, symfony, zend, phalcon dan masih banyak framework lainnya  dengan pro dan cons masing-masing. ini juga akan dibahas dalam tulisan lainnya.  Phalcon tampaknya cukup menjanjikan performancenya karena frameworknya di embed dalam code c didalam engine php interpreternya (belum sempet oprek gaes)

 

1. Instalasi golang devkit

Langkah pertama yang perlu dilakukan yaitu install dependencynya. Karena saya menggunakan macos , maka dapat digunakan perintah brew untuk menginstall golang, penggunaan brew otomatis akan install dependenciesnya dengan mudah, sintaknya sebagai berikut:

 

brew install go .

Pastikan golang sudah terinstall dengan mengetik perintah go, atau which go. selanjutnya adalah melakukan setting path agar perintah go dikenali di semua path

export GOPATH="${HOME}/.go"
export GOROOT="$(brew --prefix golang)/libexec"
export PATH="$PATH:${GOPATH}/bin:${GOROOT}/bin"

2. Membuat Project Golang (kali ini saya menggunakan go mod)


mkdir -p /Users/feri/Documents/goproject
cd /Users/feri/Documents/goproject
go mod init github.com/ferianto

 

3. Membuat database mysql (jangan lupa pilih engine innodb dan lengkapi dengan constraint)

contohnya sebagai berikut: (dibuat dengan microolap)

     

 

4. Download golang struct (model) generator

go get github.com/smallnest/gen

setelah perintah diatas generator akan di download dan biasanya di taruh di go path/pkg.
menurut petunjuknya perintah yang digunakan adalah sebagai berikut

gen --connstr "root:passsword@tcp(127.0.0.1:3306)/dbname?&parseTime=True" --database dbname --json --gorm --guregu --rest

Tetapi pada laptop saya , karena go path ada ditempat lain (/opt/gopath) , jadi saya jalankan sebagai berikut:

go run /opt/gopath/pkg/mod/github.com/smallnest/gen@v0.0.0-20200128073349-1f934538bcff/main.go --connstr "root:password@tcp(127.0.0.1:3306)/dbname?&parseTime=True" --database dbname --json --gorm --guregu --rest

jika perintah diatas berhasil dijalankan, maka akan muncul folder  model dengan banyak namafile.go sesuai nama table yang ada di database dbname , contoh isinya sebagai berikut:

Dapat kita lihat hasilnya, fungsi dari (gen) akan melakukan mapping column pada mysql menjadi go struct (model) dengan tipe data yang bersesuaian dengan gorm.model, file diatas sebenarnya sama dengan  *gorm.model , tinggal kita tambahkan text berikut:

…..

Masih bersambung ya gaes, ada kommentar? silahkan taruh di comment. ditinggal ngoding dulu ya…..

 

Referensi bacaan:

  • https://github.com/smallnest/gen
  • https://blog.golang.org/using-go-modules
  • http://gorm.io/docs/models.html
  • https://ahmadawais.com/install-go-lang-on-macos-with-homebrew/
  • https://go-tour-id2.appspot.com/basics/13
  • https://astaxie.gitbooks.io/build-web-application-with-golang/content/en/index.html?ref=hackr.io
  • https://gobyexample.com/slices

Social Media Links

  • Linkedin Profile
  • Facebook Profile
  • Instagram Profile
  • GitHub Pages
  • Google Play Portofolio
  • Postgresql Training Service
  • PHP Security Training Service
  • Active State Writing

Recent Posts

  • Ngoding Data Analytics di Handphone Part 2
  • Ngoding Data Analytics di Iphone Part 1
  • Cara Mudah Membuat Report Dengan Fastreport pada dotnet core project
  • Cara Alternatif mengakses Webservice Soap pada dotnet core tanpa menggunakan soap client
  • Tutorial Yii2 Singkat padat dan jelas untuk programmer pemula. Bagian 1 – Membuat Aplikasi Penjualan Menggunakan yii2

Archives

  • September 2022
  • May 2021
  • April 2021
  • March 2021
  • January 2021
  • September 2020
  • July 2020
  • June 2020
  • May 2020
  • March 2020
  • February 2020
  • December 2019

Categories

  • #dotnetcore
  • arduino
  • c#
  • data-analytics
  • docker
  • oracle
  • php
  • programming
  • python
  • selingan
  • Uncategorized
©2023 Imam Ferianto Blogs | Powered by WordPress & Superb Themes