Clamshell Mode

Saya kenal istilah mode Clamshell saat pertama kali memiliki Macbook Air tahun 2012 lalu. Saya ingin menghubungkan Macbook dengan eksternal monitor. Karena ukuran layar Macbook cukup kecil, saya ingin layar yang lebih lega saat bekerja di rumah. Waktu itu saya membeli layar LED HP x2401, saya bisa menghubungkan layar ini ke Macbook melalui port VGA atau HDMI atau DVI. Tentu saya perlu adaptor Mini DisplayPort untuk menyambungkan Macbook ini ke layar monitor eksternal. Setup-nya seperti foto berikut ini :

Nah istilah Clamshell tadi maksudnya adalah saya bisa menutup layar Macbook (close the lid) saat terhubung ke eksternal monitor. Hmmm mungkin istilah menutup layar kurang tepat, saya masih belum tahu padanan istilah close lid. Mungkin karena Macbook menutup seperti kerang makanya disebut dengan istilah Clamshell. Mode ini mengharuskan saya untuk menggunakan keyboard & mouse external. Mode ini juga mengharuskan saya menghubungkan Macbook dengan kabel power-nya supaya Macbook tidak pindah ke mode Sleep. Memang saya bisa membiarkan Macbook Air dalam kondisi terbuka, tapi ini kurang nyaman karena saya harus bolak-balik memindahkan aplikasi agar muncul di layar eksternal bukan di layar Macbooknya sendiri.

Sejak punya MacMini, saya tidak pernah menggunakan Macbook dengan mode Clamshell lagi. Layar monitor satu-satunya itu hanya dipakai oleh MacMini. Minggu lalu saya coba menghubungkan Macbook lagi dengan eksternal monitor (lengkap dengan tambahan keyboard & mouse). Anehnya Macbook saya selalu pindah ke mode Sleep. Baca-baca di Google sebentar rupanya sejak OSX Yosemite, banyak orang yang gagal menggunakan mode Clamshell. Tapi sayangnya saya belum explore lebih lanjut mengapa sekarang saya tidak bisa lagi menggunakan mode Clamshell pada OSX Yosemite. Ada yang bisa bantu saya tentang hal ini?

Vim : Menghapus Ekstra Spasi Di Akhir Baris

Ada kalanya saya perlu menghapus semua spasi kosong di akhir semua baris (trailing whitespace). Dengan Vim saya bisa gunakan perintah :

:%s/\s\+$//g

Misalnya saya punya berkas teks seperti ini :

Pada contoh di atas semua baris saya beri garis merah, ada spasi kosong pada bagian bergaris kuning. Saya ingin semua baris itu hilang. Dengan menggunakan perintah tadi semua spasi ekstra di akhir baris akan otomatis terhapus. Lihat contoh pada baris ketiga, kursornya langsung berada pada bagian akhir baris di huruf “D” pada kata “ENTITYID”.

Vim : Search & Replace

Fitur penting dari sebuah editor teks di antaranya adalah kemampuan cari & ganti (search & replace). Bayangkan repotnya bila harus mengganti banyak kata (atau frase) satu persatu. Di editor Vim, saya biasa gunakan perintah berikut ini bila ingin melakukan search & replace teks tertentu :

:%s/<pattern>/<replacement>/g   

<pattern> maksudnya kata/frase yang ingin saya ganti sementara <replacement> adalah kata penggantinya. Misalnya saya punya berkas teks yang berisi data koneksi Oracle database seperti contoh berikut ini :

Saya ingin ganti informasi Oracle SID dari uimdb menjadi uimdbsit. Dengan menggunakan Vim, saya bisa mengedit satu persatu berkas tersebut lalu menjalankan perintah :

:%/uimdb/uimdbsit/g

Lalu tinggal Save dengan perintah :wq. Tapi sayangnya cara ini tidak praktis bila ternyata saya punya banyak sekali berkas. Cara yang paling sering saya gunakan adalah dengan bantuan perintah find, perl seperti ini :

find . -name "*pola nama file*" -exec perl -pi -e 's/<pattern>/<replacement>/g' {}\;

Contoh saat digunakan seperti ini berikut ini :

Perintah di atas bisa dimodifikasi untuk memanfaatkan fitur-fitur yang dimiliki perintah find. Misalnya fitur -maxdepth di atas berguna untuk membatasi area pencarian. Tanpa menggunakan opsi -maxdepth maka semua berkas berakhiran *.xml dalam semua sub-directori akan ikut terkena perubahan tadi. Misalnya contoh di bawah ini, ada banyak berkas *.xml dalam 3 sub-direktori (ditunjukkan dengan garis merah).

Karena saya hanya ingin memodifikasi berkas *.xml yang berada tepat di bawah direktori jdbc, saya harus menggunakan opsi maxdepth 1. Opsi tersebut akan membatasi area pencarian pada direktori itu saja (current directory) tanpa menyentuh berkas *.xml lain dalam setiap sub-direktori.