Mencari String Tertentu pada Sekumpulan File

Happy Nyu Nyet!
(eh, telat ya?)

Jadi ceritanya saya sedang mempelajari API dari sebuah layanan push service yang digunakan pada sebuah aplikasi. Aplikasi tersebut hanya memiliki dokumentasi event apa yang mengunakan API, tapi tidak ada keterangan nama file dan lokasi dimana controller yang menangani event tersebut. Dari pada harus membuka satu-persatu file yang ada, lebih baik kita menyuruh orang lain komputer yang melakukannya.

Caranya?
Gunakan saja perintah grep.

Misalkan saja API yang kita gunakan memiliki penanda khusus yang berupa string (contoh: apiku). Maka jika kita ingin mencari file apa saja yang di dalamnya terdapat string apiku, kita ketikkan perintah berikut:

$ find . -type f -exec grep -l apiku {} \;

Keterangan:
Perintah di atas akan mencari seluruh file yang berada di dalam directory yang sedang aktif, kemudian dari seluruh file yang ada akan dicari string yang sudah kita tentukan. Perintah ini juga akan mencari sampai ke dalam subdirectory.

Selamat mencoba.

New Place, New Hope

Tak terasa sudah sebulan kini saya bekerja di tempat baru, di sebuah startup yang bergerak dalam bidang instant messaging. Mungkin banyak yang bertanya, seberapa waras kah saya meninggalkan pekerjaan sebelumnya di perusahaan swasta nasional yang telah established selama dua puluh tahun dengan status karyawan tetap dan jaminan ini itu, menuju ke perusahaan startup yang masih tergolong ‘balita’. Well, tentu semuanya sudah saya pikirkan dengan baik, dan semoga saja saya tidak salah dengan keputusan ini.🙂

Ada alasan utama mengapa saya memilih startup ini dibandingkan dengan startup atau perusahaan lainnya sebagai tempat baru. Yaitu, produk mereka adalah instant messaging. Sejak masih di bangku kuliah, minat saya adalah real time web application. Pas sekali. Apalagi teknologi yang digunakan oleh startup ini sama dengan topik skripsi saya (yang sebentar lagi akan diterbitkan dalam prosiding Seminar Ilmiah Ilmu Komputer). Yang kedua, saya percaya startup ini dipenuhi dengan orang-orang hebat. Entah mengapa saya memiliki keyakinan ini sejak awal. Padahal tak ada satupun orang yang saya kenal sebelumnya (hanya referensi co-founder-nya yang saya dapatkan dari seorang rekan). Dan benar saja, saya bertemu dengan orang-orang hebat di sini dengan latar belakang yang beragam.🙂

Layaknya hal baru lainnya, tentu saja saya berharap mendapatkan sesuatu yang baru. Bukan hanya tempat kerja dan orang yang baru, tapi juga ilmu baru, kompetensi baru, dan semangat baru yang mungkin tidak pernah saya dapatkan di tempat sebelumnya.

Ulasan Buku Kodenesia

Kodenesia, sebuah buku yang mengingatkan saya jauh menuju beberapa tahun silam. Di saat sebagian besar anak SMP mengenal komputer melalui permainan-permainannya yang sungguh mengasyikkan, saya malah langsung berkenalan dengan bahasa pemrograman Pascal. Dan buku ini berhasil membawa saya bernostalgia pada saat saya berada di babak final sebuah kompetisi pemrograman nasional tingkat SMA.

– – –

Awalnya saya kira buku ini selain menyajikan soal, juga menyajikan pembahasannya. Namun saya keliru. Buku ini hanya berisi soal cerita yang hampir cocok disebut dengan cerpen.😀

Setiap permasalahan pasti memiliki banyak cara untuk menyelesaikannya. Mungkin pesan inilah yang hendak disampaikan Pak Yanmarshus melalui Kodenesia. Maka jangan heran kalau buku ini tidak disertai dengan ‘kunci jawaban’ layaknya buku latihan Tes CPNS ataupun Tes SNMPTN. Pembaca bebas menentukan akan menggunakan bahasa pemrograman apa maupun bebas menentukan kompleksitas algoritma yang akan digunakan.

Buku ini sangat cocok bagi pelajar SMA yang sedang (ataupun ingin) mempersiapkan diri mengikuti ajang olimpiade komputer, atau bagi para mahasiswa yang sedang mengambil mata kuliah algoritma. Dan para programmer, buku ini wajib anda miliki untuk membuktikan bahwa anda bukanlah seorang programmer ‘slonong boy’.😀

Node.JS VS PHP : Algoritma Fibonacci

Menarik sekali ketika melihat perbedatan yang sengit mengenai performa PHP dan Node.JS. Saya bukan fansboy PHP ataupun Node.JS, tetapi saya menggunakan keduanya sesuai dengan kebutuhan.

Berikut ini adalah contoh perbandingan performa antara PHP dan Node.JS. Saya menggunakan algoritma fibonacci untuk membandingkannya.

PHP

<?php
function fibonacci($n) {
  if ($n < 2) {
    return 1;
  } else {
    return fibonacci($n-2) + fibonacci($n-1);
  }
}
echo fibonacci(30)."\n";
?>

Node.JS

function fibonacci(n) {
  if (n < 2) {
    return 1;
  } else {
    return fibonacci(n-2) + fibonacci(n-1);
  }
}
console.log(fibonacci(30));

Nilai awal yang saya gunakan adalah 30. Dan inilah hasilnya.

Fibonacci 30

Terlihat hasilnya. Anda bisa mencobanya sendiri. Dan jika anda kurang puas dengan perbandingan di atas, cobalah untuk menaikkan nilai fibonacci-nya.

Selamat mencoba.🙂

 

HTPM: Hypertext Push Messaging – Coretan Awal

Push merupakan protokol yang memungkinkan sebuah server melakukan inisiasi pengiriman pesan kepada client. Protokol ini digunakan pada layanan yang membutuhkan adanya real time communication, seperti email (SMTP) dan chat (IRC dan XMPP).

HTTP Push Service

Kebalikan dari push adalah pull, yang digunakan pada HTTP. Mekanisme pull protocol dapat digambarkan sebagai proses ‘tarik informasi’. Sebagai contoh, sebuah situs web akan menampilkan informasi yang diinginkan oleh pengguna jika dan hanya jika pengguna melakukan sebuah request. Apabila web server menerima request tersebut dengan baik, maka web server dengan segera akan membalas response tersebut. Tanpa adanya request dari pengguna, mustahil web server akan mengirimkan data berbentuk apapun.

Namun saat ini HTTP tidak hanya bekerja berdasarkan prinsip pull protocol, melainkan juga push protocol. Hal ini dikarenakan adanya teknologi server push yang memungkinkan sebuah server dapat bertindak sebagai push service. Informasi terperinci mengenai HTTP push service ini diatur dan dijelaskan pada Bayeux Protocol.

Cara Kerja Push Service

Push service bekerja berdasarkan ketersediaan informasi. Client biasanya melakukan subscribe terlebih dahulu pada channel tertentu. Setiap client bisa melakukan subscribe ke banyak channel, begitu pula sebaliknya, setiap channel bisa berisi banyak client. Apabila terdapat informasi baru pada salah satu channel, server dengan segera akan mengirimkan informasi tersebut kepada client yang berada di channel tersebut. Itu berarti client yang tidak berada pada channel tersebut tidak akan mendapatkan informasi. Itulah mengapa push service juga dikenal dengan publish/subscribe model, dimana publish merupakan proses pengiriman informasi dari client ke channel tertentu.

HTPM: Hypertext Push Messaging

HTPM merupakan salah satu implementasi instant messaging yang mengandalkan push service. Dengan push service ini, pertukaran data antar user cukup dilakukan melalui protokol HTTP. HTPM dirancang mendekati standar yang ditentukan oleh RFC 1459 dan RFC 2779.

HTPM vs IRC

Sekilas, cara kerja push service mirip dengan IRC, dimana komunikasi dilakukan melalui sebuah channel. Tentu saja HTPM dibangun tidak untuk menyaingi eksistensi IRC, melainkan hanya sebatas proofing of concept bahwa push service dapat diimplementasikan pada pembuatan instant messaging.

bersambung…

HTML5 Text Editor

Sebagai pengguna komputer, tentu kita sudah tidak asing lagi dengan yang namanya text editor, salah satunya mungkin yang terkenal adalah notepad. Tapi pernahkah anda membayangkan jika menggunakan text editor yang dibangun dengan menggunakan HTML5?

Kali ini saya sedikit iseng untuk membuat sebuah text editor berbasis HTML5 yang saya beri nama note5. Aplikasi ini menggunakan fitur File API, khususnya FileReader dan Blob pada HTML5. Dari fitur yang saya sebutkan tadi, jelas bahwa aplikasi ini mampu untuk membaca dan menulis sebuah file text. Berikut ini adalah tangkapan layarnya.

note5

Bagi anda yang ingin mencobanya, anda bisa menuju pada tautan demo. Dan bagi anda yang ingin mendapatkan kode sumbernya, silakan unduh pada github. Sekedar catatan, aplikasi ini hanya berjalan pada peramban web Google Chrome, atau peramban web lainnya yang menggunakan WebKit.

 

Memberdayakan Ekonomi Umat Melalui Masjid

Di setiap awal sebelum khatib naik ke mimbar untuk memberikan khutbah jum’at, seringkali kita menyimak ada salah satu pengurus masjid yang menyampaikan beberapa informasi, entah itu informasi mengenai siapa khatib yang bertindak, waktu pelaksanaan shalat jum’at, hingga informasi saldo keuangan masjid yang diperoleh dari infaq masyarakat. Yang menarik di sini adalah informasi saldo keuangan masjid. Kita mungkin tak jarang mendengar angka saldo yang begitu ‘wah’ jumlahnya, apalagi kalau itu masjid besar atau masjid agung. Puluhan juta atau bahkan mungkin ratusan juta rupiah. Membuat jama’ah yang (benar-benar) menyimak saat itu menjadi bertanya-tanya, “kira-kira akan digunakan untuk apa dana sebesar itu ya?”.

Tentu dana yang dimiliki sebuah masjid akan digunakan untuk biaya operasional masjid atau kemaslahatan umat oleh pengurusnya. Entah itu untuk biasa digunakan untuk membayar tagihan listrik dan air masjid, biaya penyelenggaraan pengajian rutin atau hari besar agama, hingga penyaluran bantuan bagi mereka yang membutuhkan. Kegiatan penghimpunan dan penyaluran dana ini, membuat masjid tidak hanya menjadi sebagai tempat ibadah bagi kaum muslim, tetapi juga sebagai lembaga penghimpun dana atau baitul mal yang berfungsi sebagai lembaga penyalur zakat, infaq, maupun shadaqah. Hal ini sebagaimana pernah dicontohkan oleh Rasulullah dan para khulafaur rasyidin.

Selain sebagai baitul mal, sebenarnya masjid juga bisa berperan sebagai baitul tamwil, atau lembaga keuangan dan pembiayaan. Ini yang belum banyak diterapkan oleh sebagian besar masjid di Indonesia. Dengan perannya sebagai baitul tamwil, masjid dapat berperan untuk memajukan perekonomian umat islam melalui pembiayaan mikro. Tentunya praktik pembiayaan mikro yang dilakukan harus sesuai dengan syariat islam, misalnya bebas riba, pinjam sepuluh juta dikembalikan sepuluh juta. Model pembiayaan yang dilakukan bisa berbentuk mudharabah atau murabahah, tergantung bagaimana kesepakatannya.

Pasti akan lebih bermanfaat apabila dana yang dimiliki masjid digunakan sebagai pembiayaan mikro, daripada digunakan untuk mempermegah dan mempermewah masjid. Mari kita bayangkan jika seandainya setiap masjid di lingkungan kita mengambil peran sebagai baitul tamwil, berapa banyak pelaku usaha mikro di sekitar masjid yang akan terbantu, berapa banyak perputaran uang yang terjadi, dan berapa banyak manfaat lainnya yang bisa diperoleh. Di satu sisi perekonomian masyarakat meningkat, di sini lain dana yang dimiliki masjid tak hanya mengendap di bank, meskipun itu bank berlabel syariah. Tentu semua ini bisa tercapai apabila masjid mengambil peran ini.

Sebagai contoh, salah satu masjid di sebuah perumahan di Depok telah mempraktikan hal tersebut. Dengan mengambil target masyarakat di beberapa kampung di sekitar perumahan, masjid tersebut menyediakan fasilitas pembiyaan hingga lima puluh juta rupiah. Tentunya masyarakat yang ingin menggunakan fasilitas ini harus memenuhi beberapa persyaratan, mulai dari sudah memiliki usaha, memiliki laporan keuangan yang teratur, hingga telah beberapa tahun usaha tersebut berjalan. Dan tentunya sekali lagi, berjalan sesuai dengan syariat.