Migration database, apa dan kenapa

Saya akan coba berbagi pengalaman singkat saat develpment web-app yang menurut saya perlu dibagikan.

Berawal dari pusingnya dapat proyek yang ‘lumayan’, di mana di dalam proyek tersebut terdapat 1 database dengan tabel lebih dari 20 biji. Kebayang gimana pusingnya menghandle versi databasenya. Untuk sourcenya selama ini saya percayakan pada git. dan amat sangat tidak masalah selama development. Yang jadi masalah sekarang (dan saya baru sadar) adalah handle versi databasenya,
karena pada web aplikasi, sebenarnya bukan cuman source apps saja yang berubah versi, tapi juga database perlu dijaga versinya. yang mana git tidak bertanggung jawab pada versioning database (kecuali databasenya diinclude ke source)

Saya coba kasih contoh kasus begini.

  • Pada apps versi 1, saya punya sistem login dengan table yang memiliki 4 kolom, ‘username’ – ‘password’ – ’email’ – ‘nama_lengkap’
  • Lalu pada saat development kita kepikiran, “ok kolom nama lengkap dipisah aja jadi nama depan dan nama belakang”, maka jadilah apps versi 2 dengan table ‘username’ – ‘password’ – ’email’ – ‘nama depan’ – ‘nama belakang’. kita commitlah source kita ke git.
  • Jika kita perhatikan, database pada apps versi 1 dan apps versi 2 strukturnya berbeda. API yang dijalankan apps versi 2 ke database versi 1 akan mengalami error karena kolom yang berbeda nama,  karena saat kita rollback menggunakan git, git tidak bertanggung jawab apa yang terjadi sama database, git hanya merollback source tanpa merollback database.

Sebenarnya kita bisa saja menyisipkan ‘SQL command’ disetiap commit versi, tapi ada cara yang lebih elegan dan terstruktur yang baru saya tau,
namanya MIGRATION (migrasi)

Secara garis besar, migrasi ada beberapa cara. tapi disini saya bahas migrasi menggunakan kelas bawaan codeigniter karena saya juga baru menerapkan dan mencoba migrasi pake codeigniter.

Migrasi itu seperti kita membuat versi-versi dan log tentang apa saja yang kita lakukan terhadap database apps tersebut. Jadi tidak ada ceritanya kita membuat table langsung lewat phpmyadmin, karena selain tidak tercatat perubahannya, kita juga akan kesusahan membandingkan database mana yang lebih baru saat kolaborasi, jika kita langsung melakukan perubahan lewat phpmyadmin atau database management lain.

Jadi intinya create dan alter table dengan prosedur migrasi itu semuanya ditulis script php (kalau pake codeigniter), dan karena bentuknya script php, maka akan tercommit juga ke git.

Di codeigniter tutorial dan penjelasan singkat tentang migrasi ada di link ini
http://www.codeigniter.com/user_guide/libraries/migration.html

Karakteritik file migrasi biasanya seperti ini #prefix_nama_yang_dilakukan.php
#prefix – biasanya nomor versi
jadi filenya nanti akan begini :
– 001_add_table_user.php
– 002_add_table_user_detail.php
– 003_add_alter_column_username_name_to_firtsname.php

Di apps kita akan tahu perubahan apa saja yang dilakukan pada database selama proses development oleh kita sendiri atau teman kolaborasi kita. Jadi saat versi migrasi kita masih versi 002, berarti tinggal jalanin aja versi 003 dst kalau ternyata server versi migrasinya sudah diatas 2. dengan begitu kita bisa menjaga versi database tetap sesuai dengan apps.

Jika kita ingin merollback aplikasi ke versi sebelumnya tinggal kita set aja migrasi ke versi yang cocok, misal apps v1 cocoknya migrasi v002. maka gak akan ada lagi ceritanya database gak cocok. di script migrasi biasanya ada fungsi up dan down
saat kita melakukan update migrasi, fungsi yang dipanggil adalah fungsi up.
saat kita melakukan rollback migrasi yang dipanggil adalah fungsi down.
jadi fungsi down itu isinya kebalikan dari fungsi up.
kalau di up kita bikin table
kalau di down kita drop table
kalau di up kita rename a->b
kalau di down kita rename b->a

Migrasi menurut saya amat sangat penting, apalagi jika kita bekerja secara grup, dengan melakukan prosedur migrasi yang benar, maka kita secara tidak langsung memberi tahu  developer lain tentang update yang kita lakukan pada database.

Karena saya sendiri baru sadar, ternyata semua webapp yang saya simpan pakai git saat saya rollback ke versi versi stable sebelumnya pada gak jalan, karena database gak cocok,

lalu apa gunanya git? kalau jatuhnya gak jalan juga.

Saya rasa semua alasan diatas itu udah jadi alesan kuat buat saya sendiri untuk membiasakan menggunakan prosedur migration. Dan seperti biasa, karena saya gak mau susah sendiri, saya akan coba racunin juga temen temen kantor. Hahahahaha

Thanks

Yusuf Afandi

Aplikom?

Aplikom
Mata kuliah yang berkepanjangan aplikasi komputer,

Pas dulu awal mau ketemu mata kuliah ini nganggepnya ini mata kuliah pembuatan aplikasi komputer.
Ternyata bukan, aplikom lebih ke pengenalan tentang dunia komputer secara general. Membahas dari apa itu komputer sampai apa apa saja yang bisa dikerjaan oleh komputer. Agak kecewa sih awalnya, tapi makin kesini makin ngerti ternyata ini penting. Selain pastinya menambah wawasan, mata kuliah aplikom juga memberikan kita pondasi yang kuat sebelum masuk ke dunia IT yang sebenarnya. Kalian akan tau apa itu ol shop, apa itu B to B, B to C, agile, waterfall, ring lan, dan masih banyak lagi.

Yang lebih membuat lebih bersemangat, aplikom barusan membahas tentang database dan ada banyak sekali yang saya dapat dan bisa langsung saya aplikasikan di pekerjaan saya :D.

Intinya saya sangat beruntung mendapatkan mata kuliah ini. Ditambah dosen pengajar yang sangat kompetitif. 😀

Terima kasih.

Kenapa informatika?

Kenapa informatika?, Kenapa memilih informatika? Kan udah programmer? Kenapa gak nyari ilmu lain? bukannya udah bisa koding? Bukannya sekarang udah jadi senior?

Ya, seperti itulah reaksi teman-teman saya pas saya beritahukan jurusan yang saya ambil di jenjang S1 saya. Banyak orang yang mengira aneh, kolot, gak mau belajar baru. Padahal mereka salah. Justru dengan saya mengambil jurusan yang saya kuasai, saya lebih bisa dengan mudah belajar yang lain. Lah bingung kan?. Akan coba saya jelaskan alasannya satu persatu.

Alasan pertama, mengurangi beban belajar hal baru. Jadi gini, kuliah gak melulu diajarin koding. Pasti ada pelajaran yang lain, macam kalkulus, statistika, bahasa Indonesia, agama dsb. Dengan saya mengambil jurusan teknik informatika saya lebih ada waktu untuk mempelajari mata kuliah sekunder tersebut. Karena untuk mata kuliah yang inti alkhamdulillah tidak ada masalah. Coba bayangkan jika saya mengambil mata kuliah yang bukan saya kuasai. Ambil contohnya diskomvis. Di mata kuliah inti saya mesti belajar keras, mana ada waktu saya mempelajari mata kuliah sekunder kayak kalkulus dkk tersebut, ditambah saya mengambil program kelas karyawan. Dimana kuliah saat sisa-sisa tenaga selepas kerja. Jadi dengan mengambil mata kuliah yang saya kuasai saya rasa sudah sangat tepat. Mata kuliah inti terasa ringan, dan saya punya sisa tenaga untuk mempelajari mata kuliah lain, seperti agama, pkn, isbd, dsb. Yang ternyata, tetap saja banyak yang dapat nilai jelek. Saya gak bisa bayangin kalau kemaren saya ambil bahasa inggris, atau management, atau diskomvis. Mata kuliah intinya jeblok, mata kuliah lain tambah jeblok 😀 .

Alasan kedua karena saya belum jago, saya pengen jadi programmer yang jago, bukan jago koding aja tapi jago yang lebih kearah professional. Jujur saja, saya sebelum kuliah tidak tau apa itu compiler, assembler, pseudo code, algoritma, linked list, bubble sort dan masih banyak lagi. Ya kalau disuruh bikin aplikasi sih saya gak masalah, tapi kalau taunya cuman bikin aja, ya apa bedanya sama buruh kasar. Saya harap dengan menekuni kuliah di jurusan teknik informatika membuat saya tidak hanya jago, tapi juga professional. aamiin.

Alasan ke tiga relasi, Iya relasi, dengan mengambil mata kuliah teknik informatika maka saya punya hubungan dengan calon calon programmer masa depan. Dan saya yakin itu akan sangat membantu saya dikemudian hari. 😀

Sebenarnya ada banyak lagi alasan kenapa saya memilih jurusan informatika yang saya bingung gimana dan mulai dari mana ceritanya, namun dibalik semua alasan alasan tersebut intinya hanya satu, yaitu saya ingin belajar dan jadi manusia yang lebih baik lagi. aamiin.

 

 

Thanks,
NB : Ini tugas aplikom ke 2 / 0615103015

Kesan kuliah di Widyatama

Catatan : Ini tugas 1 untuk mata kuliah aplikom.

Ada banyak sekali yang akan dibahas jika kita berbicara mengenai Widyatama. Sebuah kampus yang bertempat di daerah cikutra bandung. Namun sebelum kita membahas lebih jauh. pertama tama saya ingin menceritakan apa itu widyata menurut versi saya.

Widyatama adalah sebuah kampus yang memiliki program kelas karyawan yang dimulai dari jam 5 sore sampai jam 11 malam. Peserta dari program kelas karyawan sendiri juga bermacam macam. Dulu saya mengira kalau mahasiswa yang mengikuti program kelas karyawan adalah mahasiswa yang memang sudah bekerja di bidang tersebut. Jadi jika kelas karyawan diskomvis, berarti orang orangnya sudah bekerja di bidang desain, jika kelas karyawan TI berarti orang orangnya sudah bekerja di bidang TI (Programmer, sys admin, teknisi). Ternyata bukan, ada banyak macam background bekerjaan dari mereka. Dan saya rasa itu keren. Jadi minimal saya gak ketemu programmer lagi programmer lagi :D.

Karena kelas karyawan, maka untuk peraturan-peraturan sepertinya juga disesuaikan, dulu saya sering diceritakan teman saya, kalau telat 10 menit maka sama dosen disuruh nutup pintu dari luar, tapi tidak disini kami cukup diberi kelonggaran untuk jam masuk, saya sendiri kadang gak telat, kadang telat 10 menit kadang telat 1 jam, malah dulu pernah datang 5 menit setelah mata kuliah selesai. Percaya atau tidak sang dosen tetap memberikan absen masuk pada saya. Memang hal ini sangat membantu. Karena ada banyak kegiatan kantor yang bentrok dengan jam kuliah. Walaupun saya sudah mensosialisasikan kepada komunitas kantor bahwa saya hanya bisa diganggu jam 8-5 sore, tapi ya tetap saja akan ada hal-hal tak terduga yang memaksa saya untuk tetap di kantor dan berangkat lebih telat dari biasanya. Dan bagusnya pihak kampus amat sangat memaklumi masalah ini, bahkan banyak dari dosen yang bilang kalau sudah datang disini (Widyatama) sudah merukapan sesuatu yang sangat hebat buat kami para pekerja. 😀

Sistem pembelajaran Widyatama juga menyenangkan. 50% tatap muka 50% e-learning, Jadi ada beberapa mata kuliah yang tatap muka dan ada beberapa mata kuliah yang menggunakan sistem e-learning. Tapi kadang saya bingung tentang pemilihan mata kuliah yang e-learning. Kalau e-learningnya macam pkn, isbd, agama, atau bahasa indonesia. Itu sih gak masalah, tapi semester ini mata kuliah yang e-learning-kan adalah statistika. Waw, jelas gak ada yang masuk materinya ke saya. Sepertinya memang saya aja yang bego. haha. Tapi saya harap pemilihan mata kuliah yang di-e-learningkan lebih diperhitungkan kembali, karena sistem e-learning sangat tergantung kemandirian kita, kasarnya sih, e-learning itu belajar sendiri. Kalau kita gak bisa ya gak ada yang ngajarin. Kalau statistika, diajarin aja kayaknya saya gak mudeng apalagi gak diajarin, haha.Tapi balik lagi, mungkin saya sendirinya saja yang gak pinter :D.  hahaha

Jadi seperti itu Widyatama menurut versi saya, sangat menyenangkan dan perhatian :D.

Tapi apa kalian tau? dari sekian banyak kelebihan-kelebihan yang telah saya bicarakan, sebenernya yang membuat saya pengen kuliah disini adalah. Uang pendaftaran yang bisa dicicil. 😀 hahahahahaha , Aneh kan? , kampus sudah menggembor-gemborkan kelebihan kelebihan mereka, kampus sudah mengiklankan bahwa juara A juara B, namun ternyata yang bikin tertarik sesimpel “uang pendaftaran yang bisa dicicil”. Mungkin ini terlihat simpel bagi kebanyakan orang, tapi sebenarnya ini merupakan hal besar dan sangat berpengaruh buat kami para pekerja. Karena :

  1.  Dengan adanya cicilan berarti kita bisa mulai kuliah sewaktu waktu.
    Maksud saya, jika saya mengetahui kampus Widyatama ini 3 tahun yang lalu (pertama di Bandung) tentunya saya akan daftar pada saat itu juga. Karena hal yang membuat saya menunda kuliah adalah uang pendaftaran yang senilai lebih dari 10 jta dikebanyakan kampus dengan jurusan teknik informatika. Dan Widyatama mengeliminasi masalah saya tersebut.
  2. Dengan dicicil, maka saya akan lebih sedikit unsur gambling saat saya memulai kuliah sambil kerja. Kenapa gambling? karena kuliah sambil kerja merupakan pengalaman pertama saya. Siapa tahu kalau ternyata saya sangat kualahan dengan kuliah yang dibarengi tugas kantor, jadi jika ternyata 1 semester keluar. Maka saya tidak perlu kehilangan uang 10 juta sebagai pendaftaran. Yang walaupun ternyata saya fine-fine saja dengan keadaan sekarang (kuliah sambil kerja).
  3. Saya menganggap kalau kampus juga menanggung resiko yang sama besar dengan mahasiswanya. Jadi dengan adanya sistem cicilan pendaftaran ini maka tidak akan ada 1 pihak yang terus dirugikan dan 1 pihak yang terus diuntungkan. Semua menanggung beban yang sama. Jika lanjut kampus untung, jika mahasiswa berhenti maka mahasiswa gak rugi rugi amat. 😀
  4. Menghindari niat yang salah saat kuliah, buat para pekerja pemula seperti saya, uang sebesar itu merupakan uang yang sangat amat banyak. Namun terasa ringan jika dibayarkan dengan cara dicicil. Dengan perasaan ringan tersebut maka akan menghilangkan niat salah saat kuliah seperti “Saya kuliah karena terlanjur udah bayar mahal” yang jadinya membuat mahasiswa tidak ikhlas untuk kuliah.
  5. Dan masih banyak lagi.

Ya, kurang lebih seperti itulah. Karena sebagus apapun image kampus jika kami gak sanggup bayar ya gak akan kami pilih, Karena kami adalah kaum pekerja, kaum yang sudah dewasa, kaum yang gak mudah terbujuk dengan iming iming image, kami cukup realistis, apa yang menguntungkan buat kami ya kami ambil kalaupun tidak menguntungkan ya gak kami ambil. Jadi saya merasa sangat beruntung kuliah di kampus Widyatama ini. Diluar biaya yang bisa dicicil 😀 tapi kampusnya juga bukan kampus abal abal, yang bermodal ruko dan papan nama *jleb.

Tapi saya tekankan, dengan adanya sistem cicilan maka tidak akan membuat image Widyatama menjadi buruk, malah saya rasa ini malah tambah bagus. Karena Widyatama mengerti bahwa kami gak akan kerja + kuliah jika kami kebanyakan uang :D. Kami akan lebih memilih kuliah pagi dan malamnya belajar jika kami kebanyakan uang. Intinya ini merupakan hal yang amat sangat keren dari Widyatama. dan Widyatama merupakan kampus yang siap menerima mahasiswa dari kalangan manapun yang haus akan pengetahuan.
Astaga malah curhat.

Thanks Widyatama.
You are awesome !!

Apakah gw akan merekomendasikan Widyatama?
Yajelaslah !! :D. Sekarang aja saya lagi bujuk teman saya buat ikut kuliah bareng saya. Lumayan dapat tebengan berangkat kuliah :D.

Oh iyaaa, buat kalian yang mau daftar di Widyatama, bilang aja dari saya Yusuf Afandi / 0615103015. <- maksud terselubung. hahaha

A race between turtle and rabbit

The rabbit taunt the turtle, a slow turtle.
“did you ever reach your destination?” the rabbit said.
“yes i did” the turtle said “and i would reach my destination faster than you imagine” the turtle said again.
“why we not create a race?  and look who faster between us? you or me?” the turtle said again and the rabbit had been felt funny and happy. the rabbit approve the race.

the fox be a referee.

At the sunday morning, the game begin.
Rabbit running very fast after game started. The rabbit left turtle very far away.
At the middle of the race, the rabbit is sleeping at the bottom of tree, cz the rabbit felt that  it will win the game very easyly.
meanwhile, at the far away, the turtle walk calmly and slowly  until the turtle pass the sleeping rabbit.
After turtle reached the finish line, the rabbit wake up  and sprinted with a full speed but the rabbit still lose and can not beat the rabbit.