Azwar

Berbagi cerita dan informasi

Category Archives: Teknologi Informasi

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…

Iklan

Maaf belum punya kantor sendiri.

image

Profesionalisme seorang Author

Membuat website berbasis konten seperti website berita adalah hal yang gampang-gampang susah. Gampang karena selain kita bisa mencari sumber langsung ke lapanga, kita juga bisa mendapatkan sumber yang melimpah di Internet. Seperti meliput berita tentang versi baru web browser Mozilla Firefox, kita bisa langsung mengunjungi website resi Firefox, karena firefox sendiri pun membuat website tersebut untuk dijadikan konsumsi publik.

Menulis sebuah konten bisa menjadi hal yang mudah jika ceritanya seperti di atas, kita tinggal membaca referensi website Mozilla (sebagai contoh). Tidak boleh copy paste tentunya, kita bisa mengolah dengan gaya bahasa kita sendiri. Bila perlu kita juga harus menyampaikan “berdasarkan website resmi Mozilla.. bla bla bla”. Tapi bagaimana jika hal yang mudah ini tidak ‘disyukuri’ oleh seorang author?

Suatu ketika saya membentuk team untuk membuat website berbasis konten dengan tema, berita seputar IT. Masing-masing anggota memiliki tugasnya sendiri-sendiri. Namun selain tugas spesifik bagi tiap anggota, ada juga tugas bersama, yaitu membuat konten website itu sendiri. Setiap anggota wajib menyumbangkan tulisan untuk website tsb, karena kita belum punya author.

Singkat cerita, tibalah saatnya untuk mengumpulkan sumbangan tulisan, dan tiba juga waktu untuk mereview tulisan. Apa yang saya temukan ternyata sangat mencengankan. Tatanan kalimat sama sekali tidak bisa dipahami. Bukan hanya kalimatnya rancu, tapi inti kalimat in tak ada arahnya. Saya bingung, sekaligus sedih, karena saya tahu persis bahwa ada di anggota ini yang menggunakan Google Translate dalam menulis artikel tsb, murni copy paste dari Google Translate. Dengan ini, saya berkesimpulan, sepertinya mengolah tulisan dari referensi yang sudah ada pun masih menjadi sesuatu yang sulit, apakah memang sulit ataukah memang orangnya yg tidak bisa. Well, saya tidak tahu.

Kesalahan besar terhadap studi kasus di atas:

  1. Meng-copy tanpa menuliskan sumbernya adalah kesalahan besar.
  2. Melakukan translate dengan mesin (Google Translate) juga sebuah kesalahan besar dan tidak profesional.

Kesimpulannya, melakukan copy-paste Google Translate adalah suatu ketidak profesionalan seorang author. Dan dengan melakukan copy-paste Google Translate berarti telah membuat minimal dua dosa/kesalahan besar. Yaitu: copy-paste dan translate palsu (translate dg mesin).

 

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.