Friday, February 28, 2014

Membuat Symbolic Link di Windows 7

Fig 1. MKLINK.EXE

Sebagai programer yang banyak bekerja dengan command-line, baik untuk mengeksekusi tools pembantu, atau pun untuk otomasi, seringkali kita ingin berpindah dari satu folder ke folder lain, atau ingin mengakses secara cepat suatu file tanpa menghiraukan path file sesungguhnya. Maka kita memerlukan Symbolic Link file atau folder tersebut di folder kita bekerja sekarang.  

Symbolic Link adalah file atau folder simbolik yang menunjuk ke file atau folder sesungguhnya di sistem file. Bila Anda pengguna sistem operasi Unix-based, maka konsep ini familiar. Bila Anda pengguna Windows, konsep ini mirip dengan shortcut.

Shortcut hanya berlaku di desktop, sehingga bila Anda klik shortcut tersebut, maka File Explorer akan mengarahkan Anda ke folder fisik sesungguhnya. Bila Anda di mode command-line (CMD.EXE), kita tidak bisa berikan perintah CD (Change Directory) ke shortcut.
Misalnya kita buat shortcut file dari File Explorer untuk direktori "devel", seperti Fig 1. di bawah ini.

Fig 1. File shortcut untuk direktori "devel"
Maka misalnya, bila kita ingin menjalankan perintah CD, kita akan gagal.
Fig 2. Gagal masuk shortcut suatu folder dengan di console CMD
Solusinya adalah memanfaatkan tools mklink.exe, junction.exe atau linkd.exe. Artikel ini membahas solusi dengan tools mklink.exe. Sebagaiman Fig 1. di atas.

Fig 3. Opsi-opsi perintah MKLINK
Biasanya kita akan sering menggunakan opsi /D, untuk membuat symbolic link ke suatu folder. Tetapi jangan lupa, kita perlu previlige Administrator untuk menjalankan perintah ini. Oleh karenanya, kita harus menjalankan perintah CMD.EXE dengan 2 cara:

Cara pertama, dari Windows Start --> "Command Prompt", atau kalau "Command Prompt" tidak muncul, dari Windows Start --> All Programs --> Accessories --> Command Prompt.
Kemudian klik tombol kanan mouse, dan pilih "Run as Administrator"


Cara kedua, dari Windows Start, ubah input "search program" dengan "CMD", kemudian tekan Control+Shift Kiri+Enter.

Untuk membuat symbolic link dengan nama "folderA" untuk folder "C:/Program/FolderB" maka kita dapat memberikan perintah sebagai berikut di konsole CMD.EXE

 mklink \D folderA C:/Program/FolderB

Hati-hati:
Padanan perintah mklink.exe di unix-based (GNU) adalah perintah ln. Hanya saja, letak argumen link dan target terbalik.


Wednesday, February 19, 2014

Lingkungan pemrograman portabel dengan Vagrant

Bekerja sebagai programer dalam suatu tim lebih dari 8 orang sering membuat saya, sebagai sys-admin dan pemimpin teknis, harus kerja keras menyiapkan lingkungan yang bisa digunakan banyak orang dengan banyak preferensi. Tidak semua programer bekerja di lingkungan hardware dan software yang sama, bahkan sistem operasi  yang mereka gunakan juga berbeda. Setiap update hasil pekerjaan, integrasi dan testing, error dan bug seringkali terjadi karena konfigurasi system yang berbeda, misal: path dari command/perintah/program, konfigurasi database, konfigurasi aplikasi, library dll/so yang terinstal dlsb. Setelah pekerjaan coding selesai pun, instalasi ke sistem akhir juga menjadi masalah karena perbedaan lingkungan ini.

Hal yang sama juga terjadi saat saya harus mengelola kelas dengan sesi eksperimen pemrograman atau paling tidak demo. Setiap peserta/siswa memiliki laptop/komputer yang berbeda-beda. Biasanya sesi awal eksperimen habis waktu untuk menyelesaikan masalah instalasi dan konfigurasi tools. Oleh karenanya lebih suka menggunakan IDE/tools portable seperti Eclipse IDE, teks editor Notepad++ portable atau Sublime Text (favorit saya sekarang). Saya juga lebih suka menggunakan lingkungan shell seperti Cygwin atau semisalnya. Untuk web server saya lebih suka XAMPP (WAMPP atau LAMPP), sebab karena portabilitas mereka.

Sampai akhirnya saya install Virtual Box. Kami bisa saling berbagi image system, dan bisa bekerja di system yang memiliki kemiripan tinggi dengan target system dimana software kami akan diinstal. Permasalahannya adalah konfigurasi untuk bridging antara system image di Virtual Box dengan system operasi yang kami gunakan sebagai lingkungan pengembangan tidak semudah yang dibayangkan.

Kami juga menggunakan kontrol revisi seperti SVN dan Git. Tetapi mereka hanya menyelesaikan masalah sinkronisasi kode, bukan menyelesaikan masalah konfigurasi system. Tetap saja rekan-rekan tim memiliki konfigurasi database yang berbeda, misalnya: port, username dan password.

Tetapi, tetap saja saya, sebagai sys-admin, harus memastikan bahwa semua orang memiliki konfigurasi yang sama. Hal ini seringkali membuat saya frustasi. Sampai akhirnya saya berkenalan dengan Vagrant beberapa bulan ini.

Vagrant
Vagrant adalah tool untuk membuat dan mengkonfigurasi lingkungan pengembangan (software) yang ringan, reproducible dan portabel. Artinya, tidak ada lagi sakit kepala karena konfigurasi XAMMP, lingkungan virtual (virtual box) dan bekerja secara remote via SSH+FTP. Dengan satu file konfigurasi Vagrant akan mengerjakannya semua untuk kita. Selain itu kita bisa mengakses/mengedit source code kita dari OS dengan editor kesayangan kita selayaknya bekerja di lokal. Semua perubahan source-code akan disharing ke lingkungan virtual.

Instalasi dan dokumentasi di situs Vagrant sendiri cukup jelas bagi para pemula seperti saya.

Tuesday, February 04, 2014

Sublime Text: some useful keyboard shortcuts to remember

Sublime Text 2, adalah editor programmer favorit. Berikut beberapa shortcuts keyboard yang banyak digunakan:


  • ctrl+d - (** favorit) memilih kemunculan string yang terpilih. Sering saya gunakan untuk memulai multiple-cursor, sehingga saya bisa mengedit beberapa tempat (multipe cursor) secara simultan. Multiple-cursor ini adalah salah satu fitur terbaik yang menjadi alasan saya pindah ke Sublime Text.  
  • alt+f3, (** favorit) memilih seluruh kemunculan string yang terpilih, sehingga kita memilih multiple-cursor sebagaimana ctrl+d di atas.
  • ctrl+k, ctrl+b - (favorit) toggle sidebar (ditampilkan atau tidak)
  • f11 - toggle fullscreen
  • shift+f11 - (favorit) toggle Distraction Free, hanya menampilkan editor SAJA, sehingga kita tidak terganggu dengan window/menu lain (salah satu fitur yang juga membuat saya jatuh hati ke Sublime Text)
  • alt+. - menutup tag otomatis (mis: html)
  • ctrl+shift+p - menampilkan panel overlay "command"
  • ctrl+alt+p - menampilkan panel pemilih project
  • ctrl+p - (* favorit) menampilkan panel overlay "goto file", kita bisa jump ke file/code snippet (salah satu yang juga menyebabkan saya pindah ke Sublime Text)
  • ctrl+r - (* favorit) menampilkan panel overlay "goto method", kita bisa jump ke method yang diinginkan.
  • ctrl+g - (* favorit) menampilkan panel overlay "goto line",jump ke line tertentu
  • ctrl+; - (* favorit) menampilknna panel overlay "goto variable", jump ke variable tertentu
  • ctrl+shift+up - menukar posisi baris code dengan baris di atasnya
  • ctrl+shift+down - menukar posisi baris code dengan baris di bawahnya
  • ctrl+/ - toggle comment (per baris)
  • ctrl+shift+/ - toggle commen block (per blok)
  • ctrl+shift+d - menduplikasi baris
  • ctrl+` - menampilkan panel konsole
  • ctrl+space - autocomplete snippet yang sekarang terpilih
 Di package Emmet
  •  tab - (** favorit) menghasilkan format html berbasis syntax emmet, mempercepat coding html.

Catatan:
** favorit: paling favorit
* favorit: sering dipakai

favorit berbintang satu atau dua, adalah salah satu sebab saya meninggalkan editor lainnya.