Vim in my life ❤️

I Love VIM
Standar

I ❤️ vim!! Terutama dengan key binding-nya. Sangat-sangat nikmat. 😍

Berapa lama anda mengetik dengan menggunakan keyboard? Keyboard disini maksudnya keyboard laptop atau PC. Bukan swipe keyboard seperti di Android 😓. Saya hampir setiap hari mengetik. Ntah itu mengetik status, jawaban dan pertanyaan di forum, atau membuat code.

Dulu seringkali pergelangan tangan saya sakit karena harus pindah posisi tangan. Mungkin itu yang disebut gejala carpal tunnel syndrome karena melakukan gerakan tangan ringan dan berulang-ulang. Misalnya menggeser posisi tangan ke mouse supaya bisa meng-klik sesuatu. Menggeser tangan untuk menetak arrow key. Menekan tombol PageUp, PageDown, Home, End, Delete. Well, saat menekan tombol-tombol itu, saya harus mengangkat tangan, atau menekukkan tangan supaya bisa menekan tombol tsb. Tapi setelah mengenal vim dan membiasakan muscle memory saya dengan vim, saya dapat meminimalisir gerakan tangan yang tidak perlu.

Bahkan saya menggunakan vim key binding saat browsing. Dengan Chrome/Chromium saya menggunakan Vimium. Jika menggunakan Firefox, saya pakai Vimperator.

Di editor seperti Sublime Text, LightTable, Atom, JetBrains IDE, NetBeans, dll juga ada vim mode.

Juga saat menggunakan shell seperti bash dan zsh, saya menggunakan vim mode. Di bash, tambahkan ini di ~/.inputrc

set editing-mode vi

Di ZSH, cukup dengan menjalankan command bindkey -v

Saya bahkan mengganti tombol Esc menjadi Capslock 😊. Tentu pengguna vim paham karena seringkali harus menekan tombol Esc. Dan selama menggunakan komputer saya sangat-sangat jarang sekali menggunakan tombol Capslock. Untuk huruf besar dan kecil, cukup menggunakan Shift-key. Karena tombol Capslock ini besar, sangat mudah dijangkau dan berada di home row, saya ganti saja dengan Esc.

Untuk mengganti tombol Capslock menjadi Esc, di Mac OS X, saya menggunakan Seil. Di Linux, cukup menggunakan Xmodmap. Dan di Windows menggunakan AutoHotkey.

Sebenarnya ada dua hal lagi untuk memanjakan jari dan tangan anda, selain vim. Pertama adalah menggunakan keyboard yang bentuknya ergonomis. Dan yang kedua ini masih terus saya pelajari dari dulu dan belum lulus 😅. Apa itu? DVORAK keyboard layout!!

Agak berbeda memang saya belajar menggunakan vim dan dvorak. Saat menggunakan vim, saya efektif menggunakannya dalam 3 bulan. Sehingga muscle memory saya terlatih. Tapi pas belajar dvorak, nggak pernah bisa efektif lebih dari satu hari 😭. Hmm… mungkin nanti dibahas mengenai dvorak+vim.

Rencananya mau bikin video tutorial yang bahas vim. Tungguin aja 😜.

Perkalian, Obat dan Wikipedia Indonesia

Perkalian - Wikipedia bahasa Indonesia, ensiklopedia bebas
Standar

Ini bahas tentang perkalian anak kelas 2 SD yang sedang heboh. Tapi bukan fokus pada guru dan si murid. Tapi orang yang menganggap matematika murni dengan resep obat itu sama, seperti minum obat 3×1 hari.

Orang-orang yang beranggapan minum obat itu sama dengan matematika, kebanyakan info Perkalian itu bersumber dari Wikipedia Indonesia. Bukan yang berbahasa inggris. Yang mana kalau kita lihat disitu, ada tanda belum terperiksa. Kebetulan kemarin sempat ambil gambarnya sebelum bagian obat-nya dihilangkan.

Perkalian - Wikipedia bahasa Indonesia, ensiklopedia bebas

Jadi tingkat valid-nya masih dipertanyakan. Anda tau sendiri kontributor Wikipedia bisa siapa saja. Bahkan anonymous sekalipun bisa berkontribusi di Wikipedia. Jadi bisa saja isinya salah. Saya juga tidak tau ada atau tidaknya expert dari Indonesia yang berkontribusi di Wikipedia.

Saya tidak melihat contoh obat ini di Wikipedia yang berbahasa inggris. Dan yang Bahasa Indonesia penjelasannya tidak sedetail versi inggris. Referensi luarnya juga minim.

Intinya yang mau saya sampaikan perkalian 3×1 itu berbeda dengan minum obat 3×1 hari.

Mungkin sebaiknya resep obat itu diganti aja tulisannya. Misalnya 3×1 hari berarti 24/3, artinya minum obat setiap 8 jam sekali. Jadi diresep obat tulis aja “Setiap 8 jam sekali” agar tidak ambigu.

SQLite di SessionBuddy Error :'(

Error di SessionBuddy
Standar

Malam ini begitu dingin… Halah!!

Jadi gini… ntah kenapa tiba-tiba SessionBuddy error. Icon-nya berubah menjadi warna merah. Ada error message seperti ini:

Date: Mon Sep 22 2014 01:48:34 GMT+0700 (WIB); 
Platform: Linux x86_64; 
OS: UNIX; 
User Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36; 
Language: en-US; 
SB Version: 3.2.9; 
Source: 1103948101; 
Code: 11; 
Message: Failed to execute 'openDatabase' on 'Window': unable to open database, failed to start transaction (1546 disk I/O error)
Stack Trace: Error
 at Object.SbUtil.SbUtil.saveSessionTransactions (chrome-extension://edacconmaakjimmfgnblocblbcdcpbko/js/sbUtil.js:145:37)
 at chrome-extension://edacconmaakjimmfgnblocblbcdcpbko/js/background.js:177:12

Dafuq is that? :O
Karena data yang saya simpan di SessionBuddy cukup banyak (96 session yang disimpan), gimana caranya saya harus perbaiki ini.

Singkat cerita search sedikit, ternyata ini error message berhubungan dengan SQLite. Yup, karena ini Chrome extension, hal yang wajar kalau menggunakan SQLite.

Saya cari dimana file database ini disimpan. Chrome extension punya unique ID. Misalnya untuk SessionBuddy ID-nya adalah edacconmaakjimmfgnblocblbcdcpbko. Jadi tinggal saya cari di ~/.config/google-chrome, dan dapat /home/mul14/.config/google-chrome/Default/databases/chrome-extension_edacconmaakjimmfgnblocblbcdcpbko_0. Di dalam folder itu ada satu file yang berukuran besar. Untuk memeriksa file itu adalah SQLite database atau bukan di Linux, sangat mudah. Cukup masukkan perintah file 1. Boom, terlihat dengan jelas SQLite 3.x database.

Check file type

Langsung saja cari cara bagaimana memperbaiki file sqlite yang corrupt. Ketemu info di FAQ. Pertama backup dulu file yang rusak. Lalu masuk ke database dengan menggunakan sqlite3 1, dan periksa dengan pragma integrity_check;. Hmm, katanya OK, tapi tetep error :/

Lalu coba dump ke file baru
echo '.dump'|sqlite3 1|sqlite3 hasil-dump

Ganti file hasil-dump menjadi 1. Dan tadaaa!!! :D SessionBuddy sudah normal. Belum tau kalau mungkin ada kehilangan data. At least, saya bisa liat disitu ada 96 sessions yang disimpan dan 57 session sebelumnya ;)

Cara Install Yii2

yii
Standar

Oke, ini sudah menjadi draft lama banget -_-. Dari Yii Mei tahun lalu pada saat Yii2 public preview di-release. Karena sekarang bisa pake composer create-project, jadi tulis ulang deh.

First, you need composer. It’s the future of php. So, grab it from http://getcomposer.org/

Lalu create project baru.

composer create-project yiisoft/yii2-app-basic [folder baru] --prefer-dist -s dev

Sebenarnya Yii2 menyediakan dua template/skeleton untuk starting a project. Yaitu basic dan advanced. Untuk belajar, coba-coba atau project kecil-kecilan, basic lebih dari cukup.

That’s it…

Mengecek Penggunaan Storage di *nix

Standar

Overview

Saya biasa mengecek penggunaan storage di *nix dengan menggunakan command df. Contoh menggunakan df -h

Filesystem   Size    Used   Avail  Use%  Mounted on
/dev/sda5    55G     13G    40G     24%  /
dev          3.9G    0      3.9G     0%  /dev
run          3.9G    916K   3.9G     1%  /run
tmpfs        3.9G    7.6M   3.9G     1%  /dev/shm
tmpfs        3.9G    0      3.9G     0%  /sys/fs/cgroup
tmpfs        3.9G    268K   3.9G     1%  /tmp
/dev/sda7    19G     14G    3.5G    80%  /opt
/dev/sda8    95G     90G    220M   100%  /home

Tapi belakangan ini saya mulai merasa kurang nyaman. Saya butuh sesuatu yang hanya dilihat sekilas, langsung terlihat jelas. Jika menggunakan GUI, seperti gnome-system-monitor, mate-system-monitor, kdisk-free, etc agak merepotkan. Apalagi kalau menggunakan tiling window manager, dan aktivitas saya sebagian besar di terminal.

Saya coba cari di repository dengan keyword “df”, pacman -Ss df. Yup… saya menemukan pydf, dfc dan di. Berikut tampilan masing-masing:

pydf

☁  ~  pydf
Filesystem Size Used Avail Use%                                Mounted on
/dev/sda5   55G  12G   40G 22.3 [########....................] /         
/dev/sda8   95G  90G  221M 94.7 [##########################..] /home     
/dev/sda7   18G  14G 3579M 75.6 [####################........] /opt

Konfigurasi global pydf ada di /etc/pydfrc. Anda bisa menggunakan konfigurasi level user dengan cara copy ke home directory anda.

cp /etc/pydfrc ~/.pydfrc

Edit ~/.pydfrc sesuai dengan keinginan anda.

dfc

☁  ~  dfc
FILESYSTEM  (=) USED      FREE (-) %USED AVAILABLE     TOTAL MOUNTED ON 
rootfs      [======--------------]   27%     39.8G     54.9G /
dev         [--------------------]    0%      3.9G      3.9G /dev
run         [=-------------------]    0%      3.9G      3.9G /run
/dev/sda5   [======--------------]   27%     39.8G     54.9G /
tmpfs       [=-------------------]    0%      3.9G      3.9G /dev/shm
tmpfs       [--------------------]    0%      3.9G      3.9G /sys/fs/cgroup
tmpfs       [=-------------------]    0%      3.9G      3.9G /tmp
/dev/sda7   [=================---]   81%      3.5G     18.2G /opt
/dev/sda8   [====================]  100%    219.6M     94.6G /home

Konfigurasi global pydf ada di /etc/xdg/dfc/. Anda bisa menggunakan konfigurasi level user dengan cara copy ke home directory anda.

mkdir ~/.config/dfc/ -p
cp -r /etc/xdg/dfc/ ~/.config/dfc/

Edit ~/.config/dfc/dfcrc sesuai dengan keinginan anda.

di

☁  ~  di
Filesystem         Mount             Size     Used    Avail %Used  fs Type
/dev/sda5          /                54.9G    12.2G    39.8G   27%  ext4   
tmpfs              /dev/shm          3.9G     0.0G     3.9G    0%  tmpfs  
/dev/sda8          /home            94.6G    89.6G     0.2G  100%  ext4   
/dev/sda7          /opt             18.2G    13.8G     3.5G   81%  ext4   
run                /run              3.9G     0.0G     3.9G    0%  tmpfs  
tmpfs              /sys/fs/cgroup    3.9G     0.0G     3.9G    0%  tmpfs  
tmpfs              /tmp              3.9G     0.0G     3.9G    0%  tmpfs

Finally…

Setelah mencoba beberapa saat, saya langsung memutuskan untuk menggunakan dfc. Alasannya sederhana… Saat menggunakan dfc terasa lebih cepat dibandingkan menggunakan pydf. Itu wajar karena dfc dibuat dengan menggunakan bahasa C.