Skip to main content

Posts

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 backup yang lama untuk ke…
Recent posts

PostgreSQL | Query Select Dengan Tuple Sebagai Kondisi di Where Clause

Salam SQL ^_^)!

Kali ini saya mau berbagi pengalaman untuk menggunakan tuple dalam query (kondisi di WHERE clause).

Beberapa minggu yang lalu saya harus melakukan cek data, dimana saya membuat query yang membutuhkan beberapa kombinasi kondisi yang harus dipenuhi. Jika menggunakan operator logical biasa, eg:


WHERE column1=value1 AND column2=value2 AND column3=value3

saya mengalami kesulitan apabila value1..3 tersebut terdiri dari beberapa row yang merupakan hasil subquery dalam clause IN.

Setelah googling ternyata clause WHEREsudah mendukung penggunaan tuple, jadi query yang saya buat menjadi


WHERE (column1, column2, column3) IN (SELECT value1, value2, value3 FROM ...)

Wah, saya baru tahu hahaha ^_^)!

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 | grep 9000 , maka ak…

Hardware | Banyak Bersyukur dengan SSD

Seperti yang sudah saya sampaikan pada post sebelumnya, kali ini saya mau membahas upgrade laptop saya ke SSD sebagai "main" hard drive.

Saya sudah cukup banyak mendengar mengenai hebatnya kecepatan yang ditawarkan SSD, namun belum mempunyai keinginan untuk upgrade karena ketidaktahuan saya bahwa ada cara untuk memasang SSD ke laptop secara mandiri (*Saya beralih dari PC ke laptop karena adik saya membutuhkan PC saya). Beruntung saya mengikuti feed dari blog Mas Vatih dan menemukan satu artikel menarik mengenai cara memasang SSD di Macbook miliknya.

Berbekal info dari post tersebut dan uang tabungan yang cukup, saya memutuskan untuk mencobanya.
Saya membeli SSD Crucial MX200 250GB dan HDD Caddy SATA 12.7mm dari JakartaNotebook.com *bukan iklan.
Bagi yang belum tahu, HDD Caddy adalah suatu alat yang digunakan untuk memasang hard drive pada slot DVD ROM.
Berikut penampakan HDD Caddy



Perlu diketahui juga bahwa HDD Caddy mempunyai 2 ukuran ketebalan yakni 9.5mm dan 12.7mm, yak…

Kotlin | kotlin.String steroid untuk java.lang.String

Sama seperti String di Java, Kotlin String adalah obyek immutable yang berarti sekali diinisialisasi, valuenya tidak akan bisa diubah. Jika dilakukan assignment value baru, yang sebenarnya terjadi adalah JVM akan membuat obyek String baru dengan value yang diassign.

String kode = "Sebenarnya hubungan kita ini apa sih?"; // misalkan object di memory adalah ABCkode = "Oke, besok aku datang ke Ayah kamu"; // object yang ada di memory saat ini adalah XYZ
Seperti halnya dengan Java, String literal di Kotlin juga dimulai dengan tanda petik ganda (").
Hanya saja class String di Kotlin memeliki beberapa kelebihan dibanding String di Java.
Diantaranya:
Setiap element character dari string bisa diakses dengan array syntax
eg: kode[index], sedangkan di Java kode.charAt(index)

Untuk iterasi tiap element

Java
for (char c : kode.toCharArray()) { System.out.println(c); }
Kotlin
for (c in kode) { println(c) } String template, yakni dalam string literal bisa disisipkan kode …

I'm not that fanatic anymore ^^!

Haiiii *impersonate cara Takeru Satoh mengucapkan hai (iya dalam bahasa Jepang) di dorama Emperor's Cook :P

Yak, sesuai judul post kali ini, saya sudah tidak sefanatik dulu terhadap bahasa pemrograman yang saya gunakan, yakni Java. Semua berawal ketika saya mengenal JVM language lain (bahasa pemrograman yang berjalan di Java Virtual Machine) seperti :

Groovy yang mengusung Dynamic Typing

Bagi programmer dynamic type seperti PHP mungkin akan merasa familiar dengan Groovy, karena kita tidak perlu mendeklarasikan tipe data pada variable. Saya sempat jatuh cinta pada bahasa ini, namun saya masih merasakan keamanan "bermain" OOP dengan static type.Scala dengan konsep Functional OOP (Object Oriented Programming)

Bahasa ini membuka wawasan saya bahwa diluar pemrograman struktural dan berbasis object (imperative), pernah ada bahasa yang mengusung konsep functional dan belakangan ini mulai muncul lagi ke permukaan dan bahkan banyak menyedot perhatian para developer.
Functional progr…

Java | Retrolambda, Coding dengan Java 8 untuk Java 5, 6, 7

Seperti yang kita ketahui bahwa versi paling akhir untuk saat ini dari Java adalah Java 8.
Pada Java (sebagai bahasa pemrograman) 8 terdapat cukup banyak fitur baru yang memudahkan hidup kita sebagai programmer, terutama untuk mengurangi verbosity/boilerplate dari code yang kita tulis. Fitur-fitur tersebut antara lain adalah lambda expressions, method reference, dantry with resources.

Lambda expressions (fitur ini dirilis mulai java 8)

Sebagai contoh di swing, apabila kita menambahkan actionlistener pada button adalah sebagai berikut

clickButton.addActionListener(new ActionListener() {     @Override     public void actionPerformed(ActionEvent event) {         System.out.println(event);     } });
terlihat bahwa koding yang kita tulis cukup banyak (verbose), namun dengan lambda expressions kita cukup menuliskan

clickButton.addActionListener((ActionEvent event) -> {     System.out.println(event); });
atau bahkan

clickButton.addActionListener(event -> {     System.out.println(event); });