Azwar

Berbagi cerita dan informasi

Category Archives: Programming

HMVC Design Patern tidak dapat menggantikan Source Code Management

Pada artikel ini saya ingin membahas mengenai Design Patern pada Software Development yang saat ini sedang naik daun, nama Design Patern itu adalah HMVC.

HMVC 结构图

HMVC adalah versi pengembangan dari Design Patern MVC (Model-View-Control). HMVC sendiri adalah singkatan dari Hierarchical Model View Control. Atau bisa kita bilang sebagai versi MVC yang diimplementasikan secara hirarkis. Hirarkis di sini maksudnya adalah hirarki folder (struktur folder) yang mana menjadi modul.

Kuncinya adalah, satu modul memiliki satu MVC, atau bisa dikatan lebih gampangnya adalah, satu modul memiliki masing2 file model, file view dan file controll. Meskipun masing-masing file tersebut tidak selamanya diperlukan, ada kalanya cuma perlu file view dan controll saja.

Contoh: Saya memiliki folder modules folder ini nantinya akan saya gunakan sebagai tempat menaruh modul-modul saya. Oke, sekarang anggaplah saya ingin membuat modul produk, maka saya buat folder produk di dalam folder modules maka struktur foldernya menjadi modules/produk, di dalam folder produk ini akan kita buat folder untuk masing-masing file MVC, dengan kata lain kita akan membuat folder bernama model, view control .

Jika digambarkan, maka struktur hirarki nya akan menjadi sebagai berikut:

-modules/
….|
…+—-produk/
…….|
……+—-model/
……+—-view/
……+—-control/

File-file model akan diletakkan dalam folder model, begitu juga file view dan file control (controller) akan diletakkan ditempatnya masing-masing sesuai nama foldernya.

Keuntungan dari design pater ini, terutama bagi aplikasi web adalah, modularitas file pada aplikasi yang dikelompokkan berdasarkan fungsinya. Contohnya, file-file yang berhubungan dengan produk ditempatkan pada modul produk (file view nya produk, file controllernya produk, dan file modelnya produk).

Maksud dari pengelompokkan folder berdasarkan fungsinya tersebut adalah agar ketika ada tambahan fungsi baru pada program, misal tadi ada fungsi produk kemudian teman kita sudah membuat fungsi user maka kita tinggal mengkopikan modul user yang telah dikerjakan oleh teman kita tersebut pada folder modules/ dengan demikian maka didalam folder modules/ sekarang ada dua folder, yaitu produk dan user. Singkatnya seperti itu.

Sampai tahap ini terlihat simpel dan mudah ketika kita melakukan kerja dalam team. Nyatanya cerita pewayangan, eh salah, cerita software development model HMVC ini belum berhenti sampai disini.

Ketika ada suatu update-an file yang sifatnya tidak spesifik pada modul, maksud saya adalah perubhan diluar folder modul, maka pada saat itu bentrok update-an akan bermunculan. Misalkan saya mengedit file style.css pada folder CSS/, maka ketika ada orang lain yang juga mengupdate file style.css tersebut dan ditimpakan pada folder CSS makan akan menimpa kepunyaan saya tadi. Dengan demikian model kolaborasi ini tidak efektif jika tidak ada komunikasi yang intens, sayangnya, kebanyakan programmer pada umumnya enggan berkomunikasi tentang update-an yang seperti ini. Kebanyakan hanya main replace-replace aja tanpa peduli versi baru file tsb. Akibatnya, ini akan menjadi bencana yang tak akan pernah reda.

Masalah lain yg timbul. Masalah lainnya adalah, jika dalam folder modul kita mengupdate file yang sama. Misalkan si A da si B bertugas mengerjakan module produk pada PC nya masing-masing. Ketika salah satu akan melakukan update source code, maka masing-masing akan saling menimpa file yang telah dibuat. Lagi-lagi tanpa komunikasi dari keduanya maka semua ini hanya akan menjadi spageti monster, alias kodingan yang acak-aduk amburadul. Dan lagi-lagi, kebanyakan enggan untuk berkomunikasi.

HMVC adalah Design Patern, bukan Source Code Management, jadi jangan disamakan fungsinya. Jangan disamakan fungsi Gelas dan Pisau, jenisnya saja beda, yg satu alat untuk minum yang satu alat untuk mengiris. Apalagi kategorinya, gelas teh dan pisau lipat, apa pun kategorinya, keduanya tidak bisa disandingkan untuk dijadikan pengganti. Begitu juga dengan HMVC dengan misalkan GIT atau Mercurial atau sejensnya.

HMVC design patern, tidak bisa menggantikan GIT, Mercurial, SVN dll yang jenisnya adalah Source Code Management.

Saya pernah terpaksa menggunakan HMVC sebagai pengganti Source Code Management, karena ikut aturan main team.

Berdasarkan pengalaman saya HMVC tidak bisa efektif untuk dijadikan pengganti Source Code Management, karena HMVC tidak diciptakan untuk itu dan HMVC pun bukan “itu” (Source code Management).

HMVC = Design Patern
Git, Mercurial, SVN, Bazzar dll = Source Code Versioning
Github, Gitlab, Bitbucket = Source Code Repository untuk Source Code Versioning

Design Patern tidak bisa dibandingkan dg Source Code Versioning
(Design patern itu banyak jenisnya, pada umumnya orang cuma kenal MVC dan HMVC)

Semoga artikel ini berguna. Terimakasih.

Baca artikelnya dulu dari awal paragraf hingga akhir paragraf, baru boleh komentar ya…

Maaf belum punya kantor sendiri.

image

Library MySQL-Python di openSuse — sh: mysql_config: command not found

Ada yang luput dari pengamatan saya ketika menginstall library MySQL-Python di Linux OpenSuse. Sewaktu saya install library tsb dengan pip, ternyata tidak bisa, error yg muncul adalah sh: mysql_config: command not found  begitu kata error dari pip. Saya cek apakah mysql sudah saya install di Linux saya, ternyata sudah. Terus saya cari di package manager OpenSuse barangkali ada paket yg kurang. Namun tak ketemu, paket apa yang kurang.

Setelah Googling, akhirnya nemu petunjuk di forum OpenSuse. Disitu dikatakan bahwa agar bisa menggunakan mysql_config kita harus menginstall libmysqlclient-devel. Saya langsung install paket tsb. Dan… huraa.. setelah saya jalanin lagi pip untuk menginstall mysql_config, akhirnya errornya hilang.

 

Tips Memilih Web Framework Python

Django logo

logo django framework

Halo teman, setelah kemarin saya posting mengenai beberapa buku Python gratis dan legal dengan lisensi OpenSource (baca: Buku Python Gratis, Lisensi OpenSource), sekarang saya akan memberikan sedikit tips bagaimana memilih web framework Python yang akan anda gunakan.

1. Full stack atau Basic framework??

Anda harus menentukan apakah framework yang akan anda gunakan adalah jenis Full stack atau basic.

Fullstack adalah, semua komponen yang dibutuhkan seperti databse library (ORM, active record, DRM), templating, authentication module, dll sudah tersedia alias included. User tinggal menginstall saja, tidak perlu menambah atau mengganti komponen tsb.

Basic adalah, framework yang hanya menyediakan core/inti dari framework tsb. Tidak menyediakan fitur templating, database library, authentication module dan sebagainya. Oleh karena itu, user bebas memilih komponen yang mana yang dia suka untuk digabungkan/dimasukkan kedalam framework basic ini. Contoh untuk templating, user bisa memilih Mako, Jinja2, Genshi atau yang lain. Begitu juga dengan pemilihan database library serta komponen yang lain.

Perhatikan, jika anda memilih Full stack, berarti anda harus siap mempelajari semua komponen yang disediakan oleh framework tersebut. Jika framework tersebut menggunakan ORM buatannya sendiri, maka anda harus mempelajari ORM bawaan framework tersebut, begitu juga dengan komponen yang lain. Sebaliknya, jika anda memilih basic framework, anda harus meluangkan waktu sedikit untuk mengkombinasikan componen yang diperlukan oleh framework tersebut, anda harus memasukkan templating enggine pilihan anda, ORM pilihan anda, dan sebagainya. Atau jika anda sudah memiliki komponen favorite, sebagai contoh SQLAlchemy sebagai ORM, anda akan dengan mudah menggunakannya dan bisa memotong learning curve (proses belajar).

2. Skala besar atau kecil

Apakah anda akan membuat aplikasi web skala besar atau skala kecil? Pilihlah framework yang sesuai untuk kebutuhan tsb. Biasanya, jika kita akan membuat apliakasi yang besar, solusinya adalah full stack framework, sedangkan untuk skala kecil menggunakan basic framework. Namun ini tidak mengikat, semua tergantung dari sang programmer.

3. Rapid development atau biasa-biasa saja

Jika anda ingin membuat aplikasi web secara rapid, melakukan pendekatan secara hi-level, anda bisa menggunakan fullstack framework, dan anda tinggal fokus dengan apa yang ada pada framework tsb. Sedangkan jika anda ingin membuat aplikasi web dengan jangka waktu yang biasa-biasa saja (santai), anda bisa menggunakan basic framework, anda bisa mencoba mengkombinasikan beberapa komponen sesuai kenginan anda.

4. Jumlah komunitas dan aktivitasnya

Perhatikan juga jumlah komunitas yang menggunakan framework tsb, biasanya framework yang memiliki banyak komunitas akan terjaga kelangsungan developementnya. Terlebih lagi semakin banyak developer yang terlibat dalam project framework tsb.

Aktivitas komunitas juga perlu diperhatikan, semakin tinggi aktivitas, maka semakin besar kemungkinan peran developer dalam merespon bug fixing dan melakukan development lifecycle.

5. Umur dari project framework tsb

Semakin tua umur sebuah project framework, maka biasanya framework tersebut sudah teruji. Tua dalam hal ini adalah pengembangannya sudah berlangsung lama dan pihak yang menggunakannya pun cukup banyak. Berbeda dengan framework yang baru muncul, biasanya penggunanya masih sedikit dan masih sering atau banyak bug (meskipun stable release), developer yang ikut andil dalam pembuatan project tsb pun biasanya masih sedikit.

6. Lisensi

Berhati-hatilah dengan lisensi dari apa yang anda pakai, begitu juga denga framework, untungnya oh untungnya, dunia Python adalah dunia orang bergotong-royong secara bebas, tidak dikekang atau di-drive oleh suatu perusahaan dibaliknya. Kultur Python adalah benar-benar OpenSource secara total, maka kebanyakan lisensi dari framework tsb berlisensi OpenSource friendly, meskipun demikian kita harus tetap selektif.

Beberapa web framework pada Python:

Kesimpulan.

Masih banyak faktor yang perlu diperhatikan dalam memilih framework, sayangnya saya tidak bisa menjabarkan semuanya disini. Anda bisa membaca website resmi dari framework yang akan anda pilih dari situ anda bisa membuat penilaian dari apa yang anda baca.

Bacalah dokumentasi resmi dari framework tersebut, dan bila perlu, bergabunglah dengan forum atau milisnya.

Demikian sedikit tips dari saya, semoga memberi manfaat dan bisa menjadikan gambaran bagi yang sedang bingung memilih framework.

Tips SVN – Cara menghapus folder .svn di GNU Linux

Ada beberapa konsekwensi ketika anda menggunakan versioning sistem SVN dibanding Git. Salah satunya adalah banyaknya folder .svn di setiap subfolder.

Bagaimana jika anda ingin menimpa semua code yang ada di repolokal anda dengan degan file-file yang sama namun beda versi, anggaplah anda sudah melakukan perbaikan akan tetapi perbaikan tersebut anda lakukan di luar repo lokal. Terpaksa anda harus mengkopy (merge) pekerjaan anda tersebut. jika folder .svn terikut sertakan, maka akan membuat data versioning jadi kadaluarsa.
Salah satu cara terbaik adalah dengan check-out dengan versi baru, terus timpa dengan file terbaru yang telah anda edit, lalu commit.

Berikut adalah cara menghapus folder .svn melalui perintah shell script di GNU Linux.

Dan inilah perintah yang bisa anda guakan pada Terminal/Konsole GNU Linux anda.

find ./ -name ".svn" | xargs rm -Rf

Sedikit penjelasan:

Inti dari perintah tsb adalah mencari semua folder bernama .svn, setelah itu dilakukan penghapusan dengan perintah rm.

*Simpel tapi penting*