Skip to main content

Posts

Showing posts with the label Linux

Bash | Learning Bash/Shell Scripting The Hard Way

Meskipun saya sudah menggunakan Sistem Operasi berbasis Linux sejak lebih dari 8 tahun lalu. Cukup jarang saya harus berkutat dengan bash/shell scripting/programming, saya hanya sekedar tahu dan tidak pernah belajar lebih dalam. Tapi karena tuntutan profesi (*haha profesi jare), mau tidak mau saya harus sedikit belajar, dengan bekal script warisan dari SysAdmin sebelumnya. Langsung saja studi kasusnya adalah membuat bash script untuk melakukan proses backup database sistem (kami menggunakan PostgreSQL)  ke layanan Google Drive (berikutnya kita sebut gdrive ). Kami mempunyai beberapa database server dan beberapa diantaranya dibatasi hanya bisa diakses dan mengakses via jaringan lokal (private network). Untuk keperluan komunikasi dengan Google Drive via terminal, saya menggunakan tool bernama drive yang merupakan project open source dan bisa diakses via  https://github.com/odeke-em/drive . Gambaran untuk prosesnya adalah seperti ini: Di node backup masih ada file ...

Bash | Solusi "Warning: remote port forwarding failed for listen port 9000"

Halo Sobat, mohon maaf saya cukup lama hiatus di blog ini. *sok pakai kata hiatus :P Langsung saja saya mau share pengalaman melakukan remote debugging PHP melalui ssh tunnel di port 9000 (standar port xdebug, yap saya menggunakan xdebug untuk debugging aplikasi PHP). Dengan ssh tunnel kita bisa menforward port 9000 dari server yang ada di cloud ke port 9000 di komputer lokal kita, sehingga kita bisa mendebug aplikasi di server melalui IDE/tool debug di komputer lokal. (Saya penyuka PHPStorm, please no IDE war here haha). Namun karena internet yang saya pakai tidak stabil sehingga seringkali ssh tunnel ini freeze di bash window, sehingga saya harus menutup paksa window tersebut. Akibatnya di sisi server, port forwarding masih aktif, jadi ketika saya melakukan tunneling lagi maka akan muncul warning  remote port forwarding failed for listen port 9000. Solusinya adalah kita harus meng-kill proses port forwarding tsb via ssh ke server dengan menjalankan perintah lsof |...

Ubuntu | Install Git Version Control

Bagi sahabat yang sudah lama berkecimpung di bidang software development profesional tentunya sudah tidak asing dengan version control , yakni sebuah sistem yang biasa digunakan untuk mengontrol perubahan dan version dari source code program kita. Meskipun begitu, version control ini tidak hanya dapat digunakan pada source code saja, bahkan bisa digunakan pada dokumen pribadi . Salah satu contoh version control yang banyak digunakan adalah Subversion , kantor saya pun menggunakan Subversion tersebut. Namun kelemahan yang dimiliki Subversion adalah sistem koneksinya yang berupa client server, sehingga jika server down ataupun koneksi internet mati, kita tidak dapat melakukan proses version control seperti commit, update dan sebagainya. Untuk itu datang salah satu version control yang sedang naik daun saat ini, yaitu Git . Terlebih lagi dengan munculnya penyedia layanan host repository source code dengan menggunakan version control git ini. Yap benar, github.com  yang sedang po...

PostgreSQL | Set Default Output Data Binary/ByteA PostgreSQL 9.x

Hari ini saya sedang melakukan pengecekan salah satu modul pekerjaan saya, yakni penyimpanan data image (binary/bytea) ke dalam database PostgreSQL (saya menggunakan PostgreSQL 9.1.6 pada Ubuntu 12.04). Ternyata setelah dilakukan pengujian retrieval data gambar menjadi kacau, file image hasil generate dari database tidak sesuai dengan image asli yang datanya disimpan ke dalam database. Setelah googling, saya menemukan petunjuk bahwa hal ini terjadi karena default output data binary pada PostgreSQL 9.1.6 mempunyai format hex. Untuk mengatasi hal tersebut kita bisa melakukan alter pada database yang bersangkutan dengan perintah sebagai berikut (perintah dilakukan pada psql prompt bukan bash prompt linux/Ubuntu): database=> ALTER DATABASE database SET bytea_output TO 'escape'; Namun kekurangan perintah tersebut adalah kita harus melakukan alter pada semua database yang kita miliki. Hal ini tentu sangat merepotkan bila database yang ada jumlahnya cukup banyak. Unt...

Ubuntu | Install Inconsolata Font

Inconsolata merupakan font favorit saya terutama untuk digunakan sebagai programming font. Baik itu untuk disetting pada terminal, gedit, maupun Netbeans Berikut adalah cara install font inconsolata di Ubuntu : *saya menggunakan Ubuntu 12.04 aka. Precise Pangolin sudo apt-get install ttf-inconsolata Berikut tampilan font inconsolata pada terminal referensi: www.webupd8.org

PostgreSQL | Export Query Output ke File CSV

Sebelum menemukan artikel outputting from postgres to csv untuk melakukan export hasil dari query saya ke file csv, saya selalu menggunakan cara concatenation yang sangat painful , seperti berikut ini bee19_beta=> \o /home/eko/item.csv bee19_beta=> select itemid||','||itemdesc from item; bee19_beta=> \o bisa kita bayangkan jika saya ingin meng export query yang kompleks. ( painful ) Dari artikel tersebut di atas , disebutkan 1 cara sebagai berikut : COPY (SELECT foo,bar FROM whatever) TO ‘/tmp/dump.csv’ WITH CSV HEADER Namun perintah tersebut memiliki kelemahan karena user database diharuskan memiliki hak akses write file. Masih dalam artikel yang sama, juga disebutkan 1 cara yang lebih baik karena kita tidak perlu melakukan setting hak akses atas user database echo “COPY (SELECT foo from BAR) TO STDOUT with CSV HEADER” |  psql -o filename.csv database_name referensi : http://pookey.co.uk/wordpress/archives/51-outputting-from-postgres-to-csv