Restrict access to your Apache Virtual Host


In some case you need to restrict your virtual host site by IP address. Usually the type of site that handle important information such as Administrator site or web-based database administration site (eg : phpMyAdmin) or else. For example the admin site of your website can be accessed only in Office network. This Apache configuration below may helps you.

<VirtualHost *:80>
    DocumentRoot /path/to/website/admin

    <Location />
          Order Deny,Allow
          Deny from all
          Allow from


The IP address above is your public IP address of your office. Beside <Location>, you also can use the other Apache directive <Directory>.

You can see the complete documentation of configuration sections containers in Apache, that may be suits your need. Here is the link

Yup. That’s all.

How to export your MongoDB collections to CSV files


For some reasons, we might want to export our data in our mongodb collections into csv files. Is it possible? Yes, it is. Mongodb provide a tools called mongoexport which can used to export your data to JSON or CSV files.

Here is the usage example.

mongoexport –db pricebook –collection product_specification –csv –fields “product_id,category_id,specs” -o specs.csv

This operation written above is exporting product_specification collection in pricebook database into specs.csv file with specified fields. If you want to export your data into CSV file you have to specify what fields that you want to exports. If you want to export into JSON file you don’t have to specifiy the fields.

Check the complete mongodb documentation of mongoexport on the link below. All you need to know about mongoexport are there, usage overview and its complete options.

Now, you know how to export your mongodb collections into csv files. What if you have 99 collections? What if in every collections you have more than 100 fields? Exporting it one by one and specifying fields for each collections is bothersome. Sometimes you might want to export all of your collections without specifying field name.

Thanks to drzon and his little bash script. Here is the script.

Hope that helps. Cheers.


How to license your application


Choose a license

“How to license my application?”

That question never popped out in my mind, not even once, until today. Someone emailed me this morning, saying that suggesting me to put OSS license to my “monode-crud” application that i uploaded on my github. This is his email says.

Would you consider putting an open source license on your monode-crud application so I may modify it to my needs and give you credit for the original app? I suggest any open source software license such as the MIT License. See
Many thanks in advance,

Well, okay, putting a license to my application maybe a good idea. Umm.. how do i license my application? and what license should i choose for my application?

We, software developers mostly just love to code, try new things, upload and share it on our github account. I assume many software developers still not familiar with this licensing things, well, at least myself. Don’t worry bros, i will show you how to do it. Thanks to good guy pk.

  • Open
  • Read carefully and pick whichever that suits your application the most. In my case, i pick MIT license, the most permissive one, the shortest and straight to the point.
  • Go to detail page of the license that you chose. There will be “how to apply this license” on the top right sidebar.
  • Copy and paste the license, create a file named LICENSE or LICENSE.txt in your application directory.
  • Edit the placeholder that marked with brackets { }. eg : {year}, {fullname}
  • Done.

That’s all about it. You have your application licensed.

Simple CRUD web using Nodejs and MongoDB

a simple CRUD web using nodejs (expressjs f/w, hbs templating) and mongodb
a simple CRUD web using nodejs (expressjs f/w, hbs templating) and mongodb

a simple CRUD web using nodejs (expressjs f/w, hbs templating) and mongodb

In this article, i just want to share my one day experiment with node.js and mongodb. I build a simple web that does CRUD in node.js and save the records to MongoDB. I stupidly built this although this post says that build CRUD in node.js is a bad use case :p

Skip the talks, lets go to the points. I built this on Windows. I need (of course) node.js and mongodb, go to their websites, download and install them to your computer. Once you got them installed then you are ready to code.

Next step is get a HTML template for user interface, if you are LAZY like me just use Bootstrap, from twitter. I need their awesome HTML CSS tables and forms, icons right away. Download and use one of their examples, i am using the fluid layout. User interface? Done.

This is the hardest part (for me), code in node.js. Step one, to make this easier i have to install expressjs. In your app directory type this…

npm install -g express

express “D:/monode-crud” (this is depend on you app directory)

Line one will install expressjs as node modules on your app, and line two will create a directories that expressjs needed. Go to for complete guide.

I don’t like the jade that expressjs used as their default template engine. Instead of using jade, i am installing another node modules called hbs. What is hbs? Hbs is a view engine for express.js. Here is hbs website Hbs is basically a handler for Handlebars.js, a Mustache.js-like template engine. Both of them are logic less templates.

npm install hbs

After you are finished installing hbs, then modify your node.js app configurations.

var hbs = require('hbs');

app.engine('html', require('hbs').__express);
app.set('views', __dirname + '/views/html');
app.set('view engine', 'html');

And then copy all the assets (image, javascript, css files) from bootstrap to “public” directory. Put your .html template under “views” directory.

In order to connect to Mongodb to store the records, i am using node-mongodb-native. There are many other libraries to do this, but IMHO, this is the easiest way to connect node.js and mongodb. Install this via npm as usual.

npm install mongodb

Okay. All done. :)

Check out the complete node.js app and codes at my github page. Here is the repo.

Please drop your comments or questions through this blog or follow me @hadiariawan at twitter. Thanks., Berbagi ucapan dengan Kartu Digital

Standard! : greet with caring

Mungkin berbagi ucapan dengan kartu lalu dikirim via pos sudah ketinggalan zaman untuk tahun 2012 ini. Berkirim ucapan dengan kartu yang dikirim via pos ini lebih lama sampai di tujuannya. Sekarang semua serba digital, ucapan ulang tahun, Natal dan tahun baru, Lebaran dan lain-lain dikirim via BBM, Twitter, Facebook atau email. Tetapi kartu ucapan dengan kartu selalu lebih mengena kepada yang dikirimkan, rasanya lebih dekat dan personal.

Untuk yang masih suka berkirim kartu, Anda bisa menggunakan layanan situs memungkinkan penggunanya untuk saling berkirim kartu digital yang dikirimkan secara digital diatas platform Twitter. Situs web ini dapat digunakan oleh pengguna secara cuma-cuma alias gratis. cocok sekali untuk event dan waktu tertentu, misalnya ucapan selamat ulang tahun, menikah, kelahiran putra/putri atau hari-hari besar lainnya.

Dengan menggunakan layanan situs web ini kita dapat membuat kartu ucapan digital dan dikirimkan via Twitter. Bagi pengguna yang ingin berkirim kartu ucapan digital via ini harus mempunyai akun Twitter. tidak menghilangkan yang menjadi khasnya kartu ucapan, pengguna dapat menggunakan stok foto yang sudah disediakan sebagai latar belakang kartu atau juga bisa mengunggah foto dari komputer pengguna sendiri.

Pengguna juga dapat memilih bermacam-macam font untuk mengganti tulisan tangan yang biasa dituliskan di kartu ucapan biasa.

Situs ini masih terhitung baru dan sekarang masih dalam fase public beta. Stok foto yang terbagi beberapa kategori masih sedikit. Saat ini pengguna hanya bisa membuat teks di satu area saja, akan lebih baik juga jika mention username Twitter dilengkapi dengan fitur autocomplete untuk menghindari salah ketik username.

Secara keseluruhan, situs ini sudah lumayan untuk berkirim kartu digital. Silahkan berbagi ucapan dengan kartu digital dengan

original article :

Ayoo… rame-rame cobain!! :)

Alasan Menggunakan PHP Framework


Baru-baru ini ada kesempatan diskusi dengan orang soal penggunaan php framework dengan akademisi dengan latar belakang pemrograman java, mengapa perlu menggunakan php framework, apa gunanya php framework. Diskusinya lumayan menggoyahkan iman :p

Posting kali ini adalah jawaban dan kesimpulan saya soal ini, yang kebetulan belum bisa saya utarakan waktu diskusi tempo hari. Kalau mas dan mbak semua ditanya kenapa menggunakan framework/tidak menggunakan framework, apa jawabannya? Pasti jawabannya beragam. Berikut jawaban populer yang saya dapatkan dari survey kecil2an via Y!m dengan temen2.

Kenapa pake framework?

  • “Coding lebih cepat, biasanya pake framework jadi nulis good code”
  • “Framework X base penggunanya banyak, community besar”
  • “Kalau ukuran project/aplikasi besar lebih mudah dengan framework”
  • “Biar gak reinvent the wheel, reuse code”
  • “dan lain-lain, dan sebagainya, dan teman-temannya… “

Kenapa tidak menggunakan framework?

  • “Framework gak transparan, banyak activity yang di hidden”
  • “Framework gak fleksibel, terus konvensinya beda-beda”
  • “Ga punya full control atas framework, mending bikin sendiri”
  • “dan lain-lain, dan sebagainya, dan teman-temannya… “

Pro dan kontra soal ini memang gak ada habisnya. IMHO, poin2 diatas gak sepenuhnya bener. Coding cepat itu relatif dan pake framework juga belum tentu kita bisa nulis good code. Pengguna framework X banyak juga bukan alasan tepat kita menggunakan framework, tapi ini bisa jadi alasan pertimbangan memilih framework. Ukuran aplikasi yang akan di develop juga bukan tolak ukur penggunaan framework, besar kecil aplikasi bisa di develop menggunakan/tidak menggunakan f/w. Reuse code ini juga relatif, yang tidak pake framework juga pasti punya koleksi class/function bukan?

Kalo dibilang framework itu banyak activity yang di hidden, saya gak setuju, tinggal di trace saja, corenya ada kok, gak sreg ya tinggal modifikasi aja. Konvensi tiap framework beda-beda itu jelas, gak hanya di PHP kan ya? Di Java pun begitu, Spring misalnya pasti beda dengan f/w lainnya di java. Kalo kata mas @neofreko sih bikin apa2 sendiri itu buat orang masih muda aja, kalo yang dewasa ini harusnya bijaksana, lagipula development time kan juga jadi pertimbangan besar.

Ini poin-poin yang jadi kesimpulan saya mengapa menggunakan framework :

  • Mudah dimaintain dan konsisten
  • Development time lebih cepat dengan menggunakan framework
  • Stable and Less Error

Alasan dan penjelasannya kira-kira gini :

  • Mudah dimaintain dan konsisten, ini karena framework sudah ada konvensinya. Aspek ini menurut saya penting jika bekerja dengan tim yang terdiri dari beberapa orang atau anggota tim yang berganti-ganti (as they always do). Dengan adanya konvensi ini debugging lebih mudah dilakukan, alurnya sudah jelas. Ya memang konvensi tiap framework beda-beda, tapi itu bukan masalah menurut saya.
  • Dengan menggunakan framework, development time juga akan lebih cepat. Framework simplify things. Dengan menggunakan framework kita memangkas waktu mengerjakan library basic yang mutlak diperlukan, misal database connectivity, security, session management. Untuk developer yang baru masuk tim pun tidak akan terlalu banyak makan waktu untuk ikut develop langsung dengan membaca dokumentasi dan contoh penggunaan f/w (apalagi f/w yang digunakan termasuk populer).
  • Framework jelas stable dan less error. Apa jaminannya? Cek di websitenya, tiap framework ada testnya. Kalo bikin sendiri error prone alias rawan error.

Kalo kata mas @neofreko lagi sih. “Siapa yang mau bikin ACL (Access Control List) sendiri? cuman orang gila yang mau bikin sendiri” :p

Tapi semuanya balik lagi soal kebijakan dan/atau kasus/aplikasi yang akan dikerjakan. Yaah itu pendapat saya soal alasan penggunaan framework untuk development, boleh setuju boleh juga gak setuju. Silahkan komentar yang setuju dan gak setuju di form komentar dibawah ini… ;)

Selamat makan siang semuanya :)

Review : Firefox With Twitter

Firefox With Twitter

Firefox With Twitter

JUMAT (17/6/2011) lalu, akun resmi twitter mengumumkan bahwa mereka telah merilis browser firefox dengan twitter. Ada dua modifikasi di firefox yang dirilis oleh twitter ini, yaitu firefox telah ditanam built-in Twitter search bar dan Twitter app tab.

Fitur baru firefox dengan twitter ini dapat diunduh di Untuk pengguna yang sudah menginstall browser firefox, maka akan dialihkan ke halaman download addons firefox Twitter search bar.

Twitter search bar ini ada di bagian kanan address bar firefox. Jika default pencarian adalah google, anda dapat mengubahnya menjadi twitter dengan klik drop-down arrow yang ada di dalam search bar tersebut. Kemudian Twitter app tab ada di sebelah kanan menu firefox atau di sebelah kiri kumpulan tab firefox anda.

Dua modifikasi yang dilakukan oleh twitter ini memungkinkan anda untuk terkoneksi langsung dengan apa yang sedang terjadi di dunia via twitter. Anda dapat melakukan pencarian orang/username dan topik langsung di browser firefox anda.

Caranya ketik keyword pencarian di twitter search bar, untuk mencari orang/username gunakan tanda @username kemudian untuk topik gunakan tanda #topik. Contoh: @okezonenews, untuk mencari username okezonenews dan #okezone untuk mencari topik okezone di twitter.


Beberapa hari setelah dirilis firefox with twitter ini, Firefox 5 juga telah dirilis tepatnya tanggal 21 Juni 2011 kemarin. Bagi yang belum update versi firefoxnya, silahkan langsung download atau update via browser firefox… ;)

Server Stress Test dengan Apache Benchmark


Banyak tool yang bisa digunakan untuk mengukur performance dari web server, salah satunya posting dulu yang ada di blog ini menggunakan web stress tool untuk windows. kali ini kita akan menggunakan Apache Benchmark (ab) dari Apache HTTP Server salah satu web server yang banyak digunakan di internet. Apache Benchmark ini adalah tool untuk mengukur performance apache, dengan ab kita dapat melihat kapabilitas apache untuk melayani request dari client.

Pertanyaan yang sering ditemukan tentang apache benchmark ini adalah bagaimana cara menginstall dan dimana men-download apache benchmark ini. Ab ini telah terinstall secara otomatis ketika menginstall Apache HTTP Server, jika apache sudah terinstall maka tool benchmarking ini juga sudah otomatis ada. Lokasi tool ab ini biasanya di direktori /bin. Tool apache benchmark ini bisa digunakan tidak hanya untuk apache, tapi untuk web server lain juga seperti lighthttpd, nginx atau Miscrosoft IIS.

Cara menggunakan ab adalah sebagai berikut :

# ab -c 1000 -n 1000 ‘′

Parameter c adalah jumlah request concurrent (berbarengan) yang dibuat, dengan contoh diatas berarti jumlah request yang dibuat adalah 1000 request dalam satu waktu. Parameter n adalah jumlah koneksi yang dibuat ke server tujuan, dengan contoh diatas berarti koneksi yang dibuat adalah 1000 koneksi. Ab ini mengkonsumsi resource server, mulai dari memori (RAM), bandwidth dan processor. Masukkan jumlah koneksi dan conccurent request yang sesuai, agar web server tidak sampai kehabisan resource dan kemudian hang. Parameter terakhir adalah URL, halaman yang akan diproses oleh web server di-benchmark.

Contoh hasil benchmarknya sebagai berikut :

Apache Benchmark Result

Apache Benchmark Result

Sambil menjalankan ab ini coba lihat pemakaian resource di mesin yang sedang di-test. Gunakan command “top”,  perhatikan memory used, processor used tiap2 service (httpd dalam kasus ini). Benchmark ini juga kebetulan sekalian untuk testing mongodb yang sudah di-insert 3jutaan documents (records) dalam satu collection (table). Surprisingly mongodb cuman perlu sekitar 20Mb memory untuk ab dengan 1000 concurrent dan 1000 koneksi. Cool…

Anyway.. silahkan mencoba apache benchmark…

Artikel resminya disini gan :

Sekilas PHP dan MongoDB


Posting kali ini sekedar sharing percobaan menggunakan PHP dengan MongoDB. Apa itu MongoDB? MongoDB adalah document-based database server. MongoDB ini open source dibangun dengan bahasa pemrograman c++. Kata wikipedia, MongoDB ini scalable, high-performance, schema-free, web-scale. Isi dari MongoDB ini adalah koleksi dari dokumen – dokumen JSON-like. Kira – kira isinya begini…

       "username" : "bob",
       "address" : {
           "street" : "123 Main Street",
           "city" : "Springfield",
           "state" : "NY"

Di bawah ini ada slide presentasi yang sempat dibuat dari hasil coba – coba PHP dan MongoDB. Apa? Kenapa? dan Bagaimananya MongoDB silahkan browsing – browsing sendiri ya.. :)

View more presentations from Hadi Ariawan.

Note :

Articles to read related to MongoDB and PHP.