Harshad Number in Multiple Languages

Harshad Number was a Thursday Code Puzzler from DZone.

A Harshad or Niven number is a number that is divisible by the sum of its digits. 201 is a Harshad number because it is divisible by 3 (the sum of its digits.)

Belows are one-liners of Harshad in different languages.

Here’s a Ruby version written by Rafael Naufal (given on comment):

(1..99999).select { |n| n % n.to_s.chars.map(&:to_i).reduce(:+) == 0 }

My Python version:

[x for x in range(1,99999) if x % sum([int(y) for y in list(str(x))]) == 0]

My PHP version:

array_filter( range( 1, 99999 ), function($n) { return $n % array_sum( str_split($n) ) === 0; } );

Do you have any for one-liners?

Buku-template

Recently I’m writing a buku-template, another open source project to write html book in Markdown. I’m planning to write books about programming that freely available on the web. My books, of course, will be on Bahasa Indonesia. Buku-template itself is a script that converts chapters written in Markdown into html file. You can test it by cloning the repo and run bin/build.py, sample chapters (book titled “Belajar Bahasa Lorem Ipsum Cara Susah”) is provided. Wish me luck with my new book!

Mendapatkan Visa Amerika

Saya akan berbagi pengalaman bagaimana cara mendapatkan visa Non-Immigrant Amerika, yang “katanya” terkenal sulit. Pengalaman saya adalah mendapatkan visa jenis B1/B2 (business dan pleasure). Untuk mengetahui jenis visa, lihat halaman disini. Saat apply visa, harap sesuaikan jenis visa dengan maksud/tujuan Anda ke Amerika. Visa B1/B2 dapat digunakan untuk keperluan bisnis, konferensi, pengobatan, kunjungan keluarga, turis, rekreasi dan lainnya. Pada kasus saya, tujuan datang ke Amerika adalah untuk menghadiri developer meeting. Prosedur pembuatan visa Amerika sekarang agak sedikit berbeda dengan prosedur beberapa tahun yang lalu, dan sekarang terasa lebih mudah karena semua form dapat kita isi secara online dan pembayaran MRV (biaya visa application) dapat dilakukan kapan saja setelah form terisi lengkap. Okay, langkah-langkah berikutlah yang membuat saya mendapatkan kertas putih bertuliskan “…Your U.S visa application is approved…”:

Continue reading Mendapatkan Visa Amerika »

Belajar Menjadi Touch Typist

Seriously. Saya baru, sekitar, satu bulan ini berusaha menjadi touch typist. Saya seorang programmer, tentunya mengetik merupakan hal yang sering dilakukan. Selama bertahun-tahun saya belajar mengetik otodidak, dan saya (pikir) cukup cepat mengetik. Tapi ada beberapa karakter yang saya harus melihat dulu ke keyboard untuk mengetiknya. Kebanyakan orang yang belajar mengetik otodidak, tanpa memahami letak jari kanan dan kiri pada layout keyboard QWERTY, akan melihat keyboard untuk karakter yang sulit (seperti angka dan simbol). Istri saya yang sudah bertahun-tahun menggunakan keyboard QWERTY hanya dapat mengetik di bawah 30 WPM (Words Per Minute) dan sambil melihat. Saya yang mulai membiasakan diri sebagai touch typist sudah dapat mencapai 70 WPM. Dan tentunya seiring saya berlatih dan sering mengetik, kecepatan saya bisa naik menjadi 100 WPM.

Continue reading Belajar Menjadi Touch Typist »

Menggunakan Beanstalkd dan Gammu

Gammu menyediakan SMS Daemon, gammu-smsd, yang akan men-scan sms yang diterima (inbox) dan menempatkan pengiriman sms ke dalam antrian. gammu-smsd menggunakan storage (baik files maupun database) untuk menyimpan pesan di inbox ataupun antrian outbox. Jika menggunakan SMS daemon untuk mengirim sms kita tidak perlu khawatir akan kondisi concurrent, karena pesan sms akan di-enqueue dulu di storage. Jika kita hanya menggunakan perintah gammu saja, yaitu misal dengan : gammu --sendsms TEXT 081315528932 -text "test", maka jika ada dua proses yang waktunya hampir bersamaan, salah satu proses akan mendapatkan device dalam keadaan busy, dan gagal pengiriman sms untuk proses yang telat waktu bacanya.

Continue reading Menggunakan Beanstalkd dan Gammu »

Upgrading and Cleaning

Howdy. It’s been a while I didn’t write any post. So in this idle time I try to write a post — not tech one. I upgraded my blog to 3.1.1 and used the default theme. The old theme that I created manually just a bit hackish. So here they are my new looks, hope you enjoy!

Quick Tips to Help You get Accepted on Google Summer of Code

I’ve great news that, AFAIK, there are two students from Indonesia that have been accepted on Google Summer of Code 2010. They are (drum roll please) Akeda and Dwi. I’ve been posted a message on gsoc student mailing list to alert other Indonesian students, but no one replying. So, I guess there’s only me and dwi get accepted this year.Since, I’ve accepeted I’ll give my own tips on how to get accepted as a student of Google Summer of Code.

Continue reading Quick Tips to Help You get Accepted on Google Summer of Code »

ls direktori dalam format tree

Apabila kita bekerja dengan konsol dan ingin mengetahui struktur direktori tertentu biasanya kita melakukannya dengan perintah ls nama_direktori, lalu kita ls lagi direktori di dalamnya. Jika kita bekerja di desktop, kita dapat mengetahui struktur direktori tertentu dengan membuka penjelajah berkas (file browser). Sebenarnya di konsol, ada perintah tree untuk melihat senarai direktori dalam format tree.

Continue reading ls direktori dalam format tree »

Copy dari clipboard konsol (X11)

Suatu saat Anda berada dalam konsol server yang tidak memiliki tetikus (mouse). Katakanlah Anda perlu mengkopi suatu berkas ke berkas lain, mungkin langkahnya seperti berikut:

  1. membuka suatu berkas (misal dengan vim), dan
  2. memblok seluruh baris lalu melakukan kopi (Ctrl-C), tutup berkas, dan
  3. membuka berkas lainnya untuk mem-paste-nya.

Ups, mungkin Anda lupa bagaimana perintah di Vim untuk memblok keseluruhan baris. Disini xclip membantu Anda. Hal yang umum dilakukan kita adalah mengkopi isi dari berkas SSH Public Key di dalam berkas ~/.ssh/id_rsa.pub. Contohnya:

cat ~/.ssh/id_rsa.pub | xclip -sel clip

Silahkan klik Ctrl-V di tempat yang Anda inginkan. Untuk yang belum terinstall xclip, silahkan unduh di sini. Untuk pengguna Ubuntu:

sudo apt-get install xclip`

Sebelum Menggunakan Email Component CakePHP

Yang umum dalam halaman pendaftaran adalah selesai mendaftar akan ada konfirmasi telah mendaftar. Halaman konfirmasi tersebut bisa saja dengan halaman web atau dikirim ke email pendaftar. Kebetulan saya sedang mengerjakan hal serupa dimana konfirmasi juga dikirimkan ke email pendaftar. Saya menggunakan CakePHP untuk mengembangkan aplikasi, dimana telah tersedia komponen Email untuk memudahkan pekerjaan seperti ini. Penjelasan di cookbook CakePHP, bagian Email Component itu sudah cukup jelas dan sudah saya coba. Tapi jika Anda mengalami kendala tidak terkirimnya Email, mungkin saja sistem operasi Anda belum terinstall MTA (Mail Transfer Agent). Anda bisa gunakan sendmail. Instalasi MTA dan asosiasinya dengan DNS Server-nya tidak akan saya jelaskan disini, saya sendiripun belum pernah mencoba!. Untuk coba-coba saat pengembangan, Anda bisa menggunakan MTA sendmail.

Continue reading Sebelum Menggunakan Email Component CakePHP »