tag:blogger.com,1999:blog-65086822024-03-08T17:39:45.778+07:00HantuLab's blogAn another day in cyber space...Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.comBlogger128125tag:blogger.com,1999:blog-6508682.post-23850374270490933452012-07-14T14:38:00.001+07:002012-07-14T14:50:52.202+07:00Back to blogspotSudah cukup lama blog ini tidak saya update. Sekitar 2 tahun lalu saya memiliki blog lain menggunakan engine wordpress dan di hosting di dreamhost, dan sekarang ikut pindah hosting ke webfaction.<br />
<br />
Walaupun ada blog yang baru, saya tetap menaruh alamat blog ini di signature email saya. Ada cukup banyak tulisan di blog ini yang bermanfaat baik bagi saya pribadi dan semoga juga untuk pengunjung blog ini.<br />
<br />
Mulai hari ini, saya mungkin akan mengupdate lagi blog ini. Sudah ada komputer mini yang selalu terkoneksi ke internet di saku celana saya yang bisa saya gunakan untuk menulis dengan mudah kapanpun saya inginkan. Cerita ttg komputer mini ini mungkin akan saya tuliskan di tulisan lain kalau sempat.Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0tag:blogger.com,1999:blog-6508682.post-44205724121291309672009-02-01T21:05:00.001+07:002009-02-03T20:11:52.570+07:00Akses file secara remote, beda antara linux dan windowsBeberapa waktu lalu ada pertanyaan di milis <a href="mailto:tanya-jawab@linux.or.id">tanya-jawab@linux.or.id</a> menanyakan editor teks yang memiliki kemampuan mengedit file remote secara langsung, baik lewat ftp maupun sftp. Pada tulisan ini saya tidak akan membahas aplikasi editor teksnya karena sudah dibahas di milis. Silahkan baca sendiri di arsip milis tersebut. Saya akan membahas perbedaan Windows dengan Linux tentang kemampuan mengedit file remote.<br /><br />Sewaktu saya masih menggunakan Windows beberapa tahun yang lalu, saya memiliki kebutuhan yang sama, mengedit file remote secara langsung. Ada beberapa aplikasi teks editor yang memiliki kemampuan ini, dua diantaranya yang free adalah <a href="http://www.jedit.org/">jEdit</a> dan <a href="http://notepad-plus.sourceforge.net/">Notepad++</a>.<br /><br />Ketika akhirnya saya beralih penuh ke Ubuntu, saya mencari editor teks dengan kemampuan tersebut. Saya tidak menemukan fitur yang dimaksud di aplikasi teks editor, tetapi saya menemukan fitur yang jauh lebih hebat. Linux memiliki kemampuan me-mount direktori remote sehingga akses file bisa dilakukan secara transparan, seakan-akan file tersebut berada di lokal file sistem. Fitur ini belum saya temukan di Windows tanpa bantuan aplikasi third-party.<br /><br />Linux memiliki fitur mount yang secara paradigma, sangat mumpuni. File sistem perlu di-mount ke dalam struktur file dibawah / . Dengan adanya FUSE, berbagai file sistem baru bisa dibuat dengan mudah. saat ini gmail, flick, bahkan amazon s3 sudah ada driver FUSE-nya, sehingga bisa di-mount dan diakses dengan mudah.<br /><br />Windows sebaliknya masih memiliki arsitektur sistem yang sama semenjak versi awalnya. Windows hanya perduli dengan file dan direktori lokal. Mapping direktori lewat jaringan hanya mendukung protokol SMB dan DAV. Dukungan akses ftp dan sftp menjadi drive letter tidak tersedia di level OS, sehingga perlu disediakan oleh aplikasi.<br /><br />Saya sangat puas dengan fitur-fitur Ubuntu. Tak ada lagi alasan saya untuk menggunakan Windows, kecuali untuk beberapa hal tertentu, dan ini bisa saya lakukan lewat VirtualBox. Ubuntu telah menjadi platform ideal saya untuk semua hal yang bisa saya lakukan lewat komputer.Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com1tag:blogger.com,1999:blog-6508682.post-29555424755521548952009-01-23T13:25:00.002+07:002009-01-23T13:44:21.212+07:00Langkah-langkah integrasi phpBB3 ke dalam sistem lainPada tulisan ini saya akan berbagi pengalaman mengintegrasikan phpBB3 ke sistem lain. Bagian yang diintegrasikan adalah data user, sehingga perlu dilakukan penanganan login, logout, add user, edit user, edit password, dan delete user. Versi phpBB3 yang saya gunakan adalah versi 3.0.4, dan saya menggunakan bantuan class phpbb_integrator yang bisa didownload <a href="http://www.phpclasses.org/browse/package/4826.html">http://www.phpclasses.org/browse/package/4826.html</a><br />Pada tulisan ini, hanya ada dua group pengguna pada sistem existing, yaitu admin dan user, sehingga dapat dilakukan mapping dengan mudah ke group Registered dan Administrators yang telah ada secara default di phpBB3.<br /><br /><span style="font-weight: bold;">Instalasi</span><br /><br />Instalasi phpBB3 dilakukan menggunakan installer default phpBB3. Download dan extract phpBB3 dari sumber resminya di <a href="http://www.phpbb.com/downloads/">http://www.phpbb.com/downloads/</a><br />Sebaiknya letakkan phpBB3 di direktori tersendiri, agar file-file php-nya tidak tercampur dengan file-file php dari sistem existing yang akan diintegrasikan. Saya menggunakan direktori <code>/forum</code>, sehingga akses ke forum dilakukan ke alamat <code>http://<url-sistem>/forum</code><br /><br /><span style="font-weight:bold;">Setting phpbb_integrator</span><br /><br />Extract phpbb_integrator ke salah satu direktori sistem yang ada. File yang dibutuhkan adalah <code>phpbb.class.php</code><br />File ini akan di-include sewaktu diperlukan untuk melakukan integrasi sistem dengan phpBB3.<br /><br />Untuk setiap pemanggilan fungsi integrasi berikut ini, inisialisasi objek dari class phpbb dengan kode:<br /><code><br />$phpbb = new phpbb(FORUM_DIR, "php");<br /></code><br /><br /><code>FORUM_DIR</code> adalah konstanta yang berisi path lengkap di file sistem mengarah ke direktori tempat forum berada, contohnya:<br /><code><br />define (FORUM_DIR, '/var/www/cms/forum');<br /></code><br />Sesuaikan dengan kondisi sistem yang ada.<br /><br /><span style="font-weight:bold;">Penggunaan $db</span><br /><br />phpbb_integrator menggunakan variabel <code>$db</code> milik phpBB3 untuk melakukan query ke database. Jika sistem existing juga menggunakan variabel yang sama, baik untuk keperluan akses database, maupun untuk keperluan lain, perlu dilakukan antisipasi mencegan variabel sistem ditimpa oleh variabel phpBB3.<br />Gunakan kode berikut ini:<br /><code><br />//simpan variabel asli $db<br />$db_orig = $db;<br />//kode integrasi disini<br />//...<br />//kembalikan variabel $db<br />$db = $db_orig;<br /></code><br /><br /><span style="font-weight:bold;">Kode-kode integrasi menggunakan phpbb_integrator</span><br /><br />Login<br /><code><br />$phpbb_vars = array("username" => $username, "password" => $password);<br />$phpbb_result = $phpbb->user_login($phpbb_vars);<br /></code><br /><br />Logout<br /><code><br />$phpbb_result = $phpbb->user_logout();<br /></code><br /><br />Add user<br /><code><br />//untuk administrators<br />$group_id = 2;<br />//untuk registered user<br />$group_id = 5;<br />$phpbb_vars = array("username" => $username, "password" => $password, "user_email" => $email, "group_id" => $group_id);<br />$phpbb_result = $phpbb->user_add($phpbb_vars);<br /></code><br /><br />Edit password<br /><code><br />$phpbb_vars = array("username" => $username, "password" => $password);<br />$phpbb_result = $phpbb->user_change_password($phpbb_vars);<br /></code><br /><br />Edit user<br /><code><br />$phpbb_vars = array("username" => $username, "user_email" => $email);<br />$phpbb_result = $phpbb->user_update($phpbb_vars);<br /></code><br /><br />Delete user<br /><code><br />$phpbb_vars = array("username" => $username);<br />$phpbb_result = $phpbb->user_delete($phpbb_vars);<br /></code><br /><br />Setelah integrasi di sisi sistem existing, sekarang akan dilakukan penutupan registrasi dan login di sisi phpBB3. Hal ini karena user yang register di phpBB3 tidak akan masuk ke sistem, sehingga akan dilakukan pemaksaan register user baru di sistem existing melalui integrasi di atas. Data user memang akan tersimpan di dua tabel, karena itu cukup disimpan data minimum di sisi phpBB3, yaitu hanya username, password, group dan email.<br /><br /><span style="font-weight:bold;">Menghilangkan register new user dari phpBB3</span><br />Di halaman Administration Control Panel, tab GENERAL, klik menu 'User registration settings'.<br />Set 'Account activation' menjadi Disabled<br /><br /><span style="font-weight:bold;">Menghilangkan notifikasi email dari phpBB3</span><br />Pengiriman pesan lewat email seharusnya dihandle oleh sistem, sehingga fungsi kirim email di phpBB3 tidak diperlukan.<br />Di halaman Administration Control Panel, tab GENERAL, klik menu 'E-mail settings'.<br />Set 'Enable board-wide e-mails' dan 'Users send e-mail via board' menjadi Disabled<br /><br /><span style="font-weight:bold;">Menghilangkan edit profil dari phpBB3</span><br />Di halaman Administration Control Panel, tab SYSTEM, klik menu 'User Control Panel'.<br />Klik 'Profile'<br />Pindahkan 'Edit avatar' dan 'Edit signature' ke atas, sehingga menjadi urutan pertama dan kedua.<br />Set 'Edit account settings' dan 'Edit profile' menjadi disable dengan mengklik tulisan 'Disable'.<br />Option yang telah di-disable ditandai dengan icon gembok dan tulisan di kanan menjadi 'Enable'<br /><br /><span style="font-weight:bold;">Menghilangkan form login dari phpBB3</span><br />Halaman login akan dihilangkan dengan mengedit template. Sebelum melakukan pengeditan, lakukan setting berikut ini terlebih dahulu, agar kode php di template bisa dijalankan oleh phpBB3:<br />Di halaman Administration Control Panel, tab GENERAL, klik menu 'Security settings'.<br />Set 'Allow php in templates' menjadi 'Yes'<br /><br />Edit template:<br />Di halaman Administration Control Panel, tab STYLES, klik menu 'Templates'.<br />Klik link edit di template yang sedang digunakan.<br />Edit 3 file berikut ini:<br /><br /><span style="font-style:italic;">index_body.html</span><br />cari baris ini (di sekitar pertengahan file)<br /><code><br /><!-- IF not S_USER_LOGGED_IN and not S_IS_BOT --><br /></code><br />Ubah menjadi<br /><code><br /><!-- IF not S_USER_LOGGED_IN and S_USER_LOGGED_IN and not S_IS_BOT --><br /></code><br />untuk menghilangkan tampilan login form di halaman forum.<br /><br /><span style="font-style:italic;">login_body.html</span><br />Tambahkan baris berikut di bagian atas file, sehingga template menjadi:<br /><code><br /><!-- IF not S_ADMIN_AUTH --><br /><!-- PHP --><br />header( 'Location: /' ) ;<br /><!-- ENDPHP --><br /><!-- ENDIF --><br /><!-- INCLUDE overall_header.html --><br />...<br /></code><br /><br />Kode ini akan me-redirect halaman login ke halaman system. Jika sistem berada di sub direktori, atau memiliki halaman login, sesuaikan parameter 'Location' untuk mengarah ke halaman sistem yang diinginkan.<br /><br /><span style="font-style:italic;">overall_header.php</span><br />Cari baris:<br /><code><br /><li class="icon-logout"><a href="{U_LOGIN_LOGOUT}" title="{L_LOGIN_LOGOUT}" accesskey="l">{L_LOGIN_LOGOUT}</a></li><br /></code><br />Ubah menjadi:<br /><code><br /><li class="icon-logout">{L_LOGIN_LOGOUT}</li><br /></code><br />Saya mempertahankan label <code>L_LOGIN_LOGOUT</code> agar user tahu bahwa dia sedang login di forum. Untuk keperluan ini saya mengedit file berikut ini:<br /><br /><code>/forum/language/en/common.php</code><br />Cari baris:<br /><code><br />'LOGIN' => 'Login',<br /></code><br />Ubah menjadi:<br /><code><br />'LOGIN' => '&nbsp;',<br />'LOGIN_BTN' => 'Login',<br /></code><br /><br />Cari baris:<br /><code><br />'LOGOUT_USER' => 'Logout [ %s ]',<br /></code><br />Ubah menjadi:<br /><code><br />'LOGOUT_USER' => '[ %s ]',<br /></code><br /><br />Selanjutnya edit kembali template <span style="font-style:italic;">login_body.html</span>:<br />Cari baris:<br /><code><br /><dd>{S_HIDDEN_FIELDS}<input name="login" tabindex="6" value="{L_LOGIN}" class="button1" type="submit"></dd><br /></code><br />Ubah menjadi:<br /><code><br /><dd>{S_HIDDEN_FIELDS}<input name="login" tabindex="6" value="{L_LOGIN_BTN}" class="button1" type="submit"></dd><br /></code><br /><br />Sekarang login di phpBB3 sudah tidak bisa dilakukan, harus melalui login di sistem yang telah dipasang phpbb_integrator.<br /><br />Semoga tulisan singkat ini bisa membantu.Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0tag:blogger.com,1999:blog-6508682.post-72702660441464052402009-01-10T08:25:00.002+07:002009-01-10T08:37:50.644+07:00Setting Squid di Intrepid Ibex Ubuntu untuk YM dan GTalk pakai GAIMBeberapa hari ini saya baru menginstall squid di laptop saya. Tujuannya selain ingin belajar cara setting squid, juga untuk mengetahui detail koneksi internet saya. Dari beberapa panduan di internet, dan juga komentar pada file <code>/etc/squid/squid.conf</code>, saya berhasil menjalankan squid dan hasilnya cukup memuaskan. Koneksi saya rasakan menjadi lumayan stabil ketimbang koneksi langsung tanpa squid.<br /><br />Satu hal yang baru saya sadari kemaren, adalah YM dan GTalk pakai GAIM ga bisa connect. Semula saya kira masalah koneksi Isat Eco yang memang kadang lambat. Setelah melihat log squid di <code>/var/log/squid/access.log</code>, saya mendapati baris log berikut ini:<br /><pre><br />1231494883.082 0 127.0.0.1 TCP_DENIED/403 1422 CONNECT scs.msg.yahoo.com:5050 - NONE/- text/html<br />1231494883.962 0 127.0.0.1 TCP_DENIED/403 1418 CONNECT talk.google.com:5222 - NONE/- text/html<br /></pre><br /><br />Dari baris diatas terlihat bahwa koneksi ke port 5050 Yahoo dan port 5222 GTalk di-deny oleh squid. Berikut ini isi konfigurasi squid di <code>/etc/squid/squid.conf</code> terkait port:<br /><pre><br />#Recommended minimum configuration:<br />acl all src 0.0.0.0/0.0.0.0<br />acl manager proto cache_object<br />acl localhost src 127.0.0.1/255.255.255.255<br />acl to_localhost dst 127.0.0.0/8<br />acl SSL_ports port 443 # https<br />acl SSL_ports port 563 # snews<br />acl SSL_ports port 873 # rsync<br />acl Safe_ports port 80 # http<br />acl Safe_ports port 21 # ftp<br />acl Safe_ports port 22 # ssh<br />acl Safe_ports port 443 # https<br />acl Safe_ports port 70 # gopher<br />acl Safe_ports port 210 # wais<br />acl Safe_ports port 1025-65535 # unregistered ports<br />acl Safe_ports port 280 # http-mgmt<br />acl Safe_ports port 488 # gss-http<br />acl Safe_ports port 591 # filemaker<br />acl Safe_ports port 777 # multiling http<br />acl Safe_ports port 631 # cups<br />acl Safe_ports port 873 # rsync<br />acl Safe_ports port 901 # SWAT<br />acl Safe_ports port 995 # SSL<br />acl Safe_ports port 587 # TLS<br />acl purge method PURGE<br />acl CONNECT method CONNECT<br /></pre><br /><br />Di konfigurasi, port 1025 s/d 65535 sudah ada di acl Safe_ports, tetapi koneksi ke port 5050 dan 5222 masih di-deny oleh squid. Saya coba juga tanya ke oom Google, tapi hanya menemukan pertanyaan yang sama tanpa ada solusi yang menjelaskan sebab di-deny-nya koneksi. Akhirnya saya coba solusi yang terlintas di pikiran.<br /><br />Pada konfigurasi ada dua acl untuk port. Sayapun mencoba menambahkan port YM dan GTalk ke acl SSL_ports, sehingga konfigurasi sekarang menjadi:<br /><pre><br />...<br />acl SSL_ports port 443 # https<br />acl SSL_ports port 563 # snews<br />acl SSL_ports port 873 # rsync<br />acl SSL_ports port 5050 # YM<br />acl SSL_ports port 5222 # GTalk<br />...<br /></pre><br /><br />Setelah squid di-restart, sekarang saya sudah bisa terhubung lagi ke YM dan GTalk pakai GAIM. Di log sekarang ada baris:<br /><pre><br />1231514336.530 883324 127.0.0.1 TCP_MISS/200 24334 CONNECT scs.msg.yahoo.com:5050 - DIRECT/66.163.181.184 -<br />1231514828.691 11193 127.0.0.1 TCP_MISS/200 81031 GET http://address.yahoo.com/yab/us?v=XM&prog=ymsgr&.intl=us&diffs=1&t=0&tags=short&rt=0&prog-ver=8.1.0.249&useutf8=1&legenc=codepage-1252 - DIRECT/209.191.93.51 text/xml<br />...<br />1231515222.670 247205 127.0.0.1 TCP_MISS/200 40954 CONNECT talk.google.com:5222 - DIRECT/72.14.235.125 -<br /></pre><br /><br />Saya masih penasaran, kenapa sampai perlu dua acl untuk port. Ternyata saya menemukan jawabannya di file konfigurasi squid, di baris berikut ini<br /><pre><br />#Recommended minimum configuration:<br />#<br /># Only allow cachemgr access from localhost<br />http_access allow manager localhost<br />http_access deny manager<br /># Only allow purge requests from localhost<br />http_access allow purge localhost<br />http_access deny purge<br /># Deny requests to unknown ports<br />http_access deny !Safe_ports<br /># Deny CONNECT to other than SSL ports<br />http_access deny CONNECT !SSL_ports<br /></pre><br /><br />Ternyata acl SSL_ports digunakan untuk membolehkan akses `CONNECT` yang memang dilakukan oleh GAIM untuk YM dan GTalk. Konfigurasi default squid akan melakukan deny terhadap semua koneksi ke port selain yang ada pada acl SSL_ports. Ini sebabnya kenapa YM dan GTalk tidak bisa terhubung, jika portnya tidak ditambahkan ke acl SSL_ports.<br /><br />Semoga tulisan singkat ini dapat membantu rekan-rekan yang mengalami masalah serupa.Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0tag:blogger.com,1999:blog-6508682.post-78939779737718900102008-12-31T10:20:00.003+07:002008-12-31T11:11:01.387+07:00Belajar RubyBerawal dari sebuah kebutuhan untuk mengetahui kapan DHCP Client memperbaharui IP Address, saya akhirnya malah belajar Ruby dan jadilah script sederhana berikut ini. FYI, saya menggunakan GNU/Linux Ubuntu Intrepid Ibex. Saya butuh informasi waktu perbaharuan IP berikutnya dari DHCP Client. Dari file /var/log/daemon.log saya bisa mendapatkan informasi berikut ini<br /><pre><br />$ grep renewal /var/log/daemon.log<br />Dec 29 10:32:41 hantulab dhclient: bound to 192.168.1.31 -- renewal in 14563182 seconds.<br />Dec 29 10:39:10 hantulab dhclient: bound to 192.168.1.31 -- renewal in 14168572 seconds.<br />Dec 29 12:18:45 hantulab dhclient: bound to 192.168.1.31 -- renewal in 13948234 seconds.<br />Dec 30 08:08:48 hantulab dhclient: bound to 10.2.13.34 -- renewal in 1496 seconds.<br />Dec 30 08:33:44 hantulab dhclient: bound to 10.2.13.34 -- renewal in 21496 seconds.<br />Dec 30 14:32:00 hantulab dhclient: bound to 10.2.13.34 -- renewal in 18630 seconds.<br />Dec 31 08:53:45 hantulab dhclient: bound to 10.2.13.34 -- renewal in 1446 seconds.<br /></pre><br /><br />Ide awalnya adalah mengubah angka detik menjadi format jam. Dari tiga bahasa scripting yang terinstall di laptop saya, Perl, Python, dan Ruby, saya memutuskan untuk coba menggunakan Ruby sambil belajar. Dengan bekal panduan dari <a href="http://pine.fm/LearnToProgram/">http://pine.fm/LearnToProgram/</a>, sayapun membuat script sederhana berikut ini:<br /><pre><br />#!/usr/bin/env ruby<br /><br />hour = ARGV[0].to_i / 3600<br />reminder = ARGV[0].to_i % 3600<br />minute = reminder / 60<br />second = reminder % 60<br /><br />puts ARGV[0] + ' = ' + hour.to_s + ':' + minute.to_s + ':' + second.to_s<br /></pre><br /><br />Lalu saya coba jalankan<br /><pre><br />$ ruby sectomin.rb 1446<br />1446 = 0:24:6<br /></pre><br /><br />Hmm, lumayan. Script simple pertamaku pake Ruby. Selanjutnya aku juga perlu penjumlahan jam nih. Cari-cari nama fungsi dengan fungsionalitas sama dengan explode di PHP, nemu method split. Sekalian aku edit scriptnya dengan membuat fungsi.<br /><pre><br />#!/usr/bin/env ruby<br /><br />def sectohour sec<br /> hour = sec / 3600<br /> reminder = sec % 3600<br /> minute = reminder / 60<br /> second = reminder % 60<br /><br /> hour.to_s + ':' + minute.to_s + ':' + second.to_s<br />end<br /><br />def houradd hour1 hour2<br /> arr_hour1 = hour1.split(':')<br /> arr_hour2 = hour2.split(':')<br /> result = (arr_hour1[0].to_i + arr_hour2[0].to_i) * 3600<br /> + (arr_hour1[1].to_i + arr_hour2[1].to_i) * 60<br /> + (arr_hour1[2].to_i + arr_hour2[2].to_i)<br /> sectohour result<br />end<br /><br />hour = sectohour ARGV[0].to_i<br /><br />puts ARGV[0] + ' = ' + hour<br />puts ARGV[1] + ' + ' + ARGV[0] + ' = ' + houradd ARGV[1] hour<br /></pre><br /><br />Coba dijalankan:<br /><pre><br />$ ruby sectomin.rb 1446 08:53:45<br />sectomin.rb:12: syntax error, unexpected tIDENTIFIER, expecting '\n' or ';'<br />sectomin.rb:19: syntax error, unexpected kEND, expecting $end<br /></pre><br /><br />Wah...wah... koq error yah. Sebelum buka manual, coba-coba lagi, kali ini nambah koma sebagai pemisah argumen, ternyata berhasil. Untuk statemen multi baris juga mesti pake backslash, karena ga ada akhir baris pake ' seperti php. Untuk manggil fungsi dua argumen mesti pake tanda kurung. Inilah hasil script yang jalan, plus penyempurnaan sectohour.<br /><pre><br />#!/usr/bin/env ruby<br /><br />def sectohour sec<br /> hour = sec / 3600<br /> reminder = sec % 3600<br /> minute = reminder / 60<br /> second = reminder % 60<br /><br /> hour.to_s \<br /> + ':' + (minute.to_s.length < 2 ? '0' : '') + minute.to_s \<br /> + ':' + (second.to_s.length < 2 ? '0' : '') + second.to_s<br />end<br /><br />def houradd hour1,hour2<br /> arr_hour1 = hour1.split(':')<br /> arr_hour2 = hour2.split(':')<br /> result = (arr_hour1[0].to_i + arr_hour2[0].to_i) * 3600 \<br /> + (arr_hour1[1].to_i + arr_hour2[1].to_i) * 60 \<br /> + (arr_hour1[2].to_i + arr_hour2[2].to_i)<br /> sectohour result<br />end<br /><br />hour = sectohour ARGV[0].to_i<br /><br />puts ARGV[0] + ' = ' + hour<br />puts ARGV[1] + ' + ' + ARGV[0] + ' = ' + (houradd ARGV[1],hour)<br /></pre><br /><br />Hasil running:<br /><pre><br />$ ruby sectomin.rb 1446 08:53:45<br />1446 = 0:24:6<br />08:53:45 + 1446 = 9:17:51<br /></pre><br /><br />Setelah ini selesai, selanjutnya perlu otomatisasi dari pembacaan log sampai didapatkan hasil penjumlahannya. Dengan kombinasi grep dan tail, saya bisa dapat info ini:<br /><pre><br />$ grep renewal /var/log/daemon.log | tail -n 1<br />Dec 31 08:53:45 hantulab dhclient: bound to 10.2.13.34 -- renewal in 1446 seconds.<br /></pre><br /><br />Selanjutnya dengan bantuan gawk yang powerfull, saya bisa membentuk string ini<br /><pre><br />$ grep renewal /var/log/daemon.log \<br />| tail -n 1 \<br />| gawk '{print "ruby sectomin.rb " $12 " " $3;}'<br />ruby sectomin.rb 1446 08:53:45<br /></pre><br /><br />Lalu saya tambahkan backtick (`) sehingga saya bisa mendapatkan:<br /><pre><br />$ grep renewal /var/log/daemon.log \<br />| tail -n 1 \<br />| `gawk '{print "ruby sectomin.rb " $12 " " $3;}'`<br />1446 = 0:24:6<br />08:53:45 + 1446 = 9:17:51<br /></pre><br /><br />Jreng...jreng... selesailah script sederhana Ruby pertama saya, plus parsing log. Semoga tulisan singkat saya ini bermanfaat. Ruby ternyata asik juga, cuman kadang saya terbawa kebiasaan di php. Belajar bahasa baru memang harus merubah paradigma dan pola pikir. Nantikan tulisan saya selanjutnya di blog ini.Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0tag:blogger.com,1999:blog-6508682.post-85028065539063769602008-12-05T13:21:00.001+07:002008-12-17T09:24:48.786+07:00OSS Week di ITBSaya membaca info rilis OpenSolaris 2008.11 dari <a title="blognya mas Alex Budiyanto" href="http://alexbudiyanto.web.id/2008/12/04/opensolaris-200811.html" id="kk2r">blognya mas Alex Budiyanto</a>. Di akhir tulisan blognya, ada link mengenai <a title="OSS Week" href="http://www.itb.ac.id/news/2271.xhtml" id="vgll">OSS Week</a> yang diadakan di ITB. Karena itu, siang ini saya sempatkan berkunjung ke bekas kampus saya itu, setelah sholat Jumat.<br><br>Saya datang dari arah Borromeus menuju jalan Ganeshe. Karena jalan Ganesha sehabis sholat Jumat pasti macet, saya putuskan untuk memarkir motor di parkir Timur. Setelah itu, saya berjalan kaki menuju aula barat dan mendapati aula barat penuh kursi, panggung, dan peralatan band. Install Fest kok gini yah, curiga ini bukan acara Install Fest, akhirnya saya coba mencari outlet POSS ITB yang katanya ada di jalan Ganesha No 15A.<br><br>Karena tidak tahu letaknya, saya sempat tanya di Pusat Inkubasi ITB yang di depannya ada tulisan alamat Ganesha. Saya diberitahu bahwa POSS ITB ada di sebelah. Saya pun jadi sempat nyasar masuk Plasa Telkom, dan diberitahu bahwa POSS ada di belakang Plasa Telkom ini.<br><br>Saya masuk ke ruangan POSS ITB dan langsung nodong CD OpenSolaris dan NetBeans. Sebenarnya saya ingin berkenalan lebih lanjut dengan rekan-rekan di POSS, tapi berhubung saya sudah capek jalan-jalan di kampus nyari-nyari letak POSS, dan juga harus segera kembali ke kantor karena jam istirahat akan segera berakhir, saya pun tidak sempat berkenalan dan memperkenalkan diri.<br><br>Untuk rekan-rekan di POSS ITB, terima kasih atas CD OpenSolaris dan NetBeans-nya. Mungkin lain kali kita bisa berkenalan dan saling berbagi pengalaman. Semoga berhasil memperkenalkan Open Source di bekas kampus saya ini :)<br>Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0tag:blogger.com,1999:blog-6508682.post-33844472132529264052008-11-19T09:36:00.002+07:002008-12-17T09:23:55.850+07:00Panduan Instalasi modul OCI8 pada PHP5 Ubuntu<div xmlns=""><p style="margin-bottom: 0cm;">Pada tulisan ini saya akan mencoba menerangkan langkah-langkah menginstall modul OCI8 untuk PHP5 sehingga PHP bisa melakukan koneksi ke database Oracle. Pada <a href="http://hantulab.blogspot.com/2007/02/kompilasi-ulang-php5-untuk-mendukung.html">tulisan saya terdahulu</a>, saya melakukan kompilasi ulang PHP-nya. Cara ini kurang menguntungkan, karena dengan keluarnya versi baru PHP, kita perlu melakukan kompilasi ulang. Dengan menggunakan modul, kita tetap dapat mengupdate PHP dengan versi terbaru, tanpa perlu repot kompilasi ulang setiap saat.</p><p style="margin-bottom: 0cm;">Operating System yang digunakan adalah Ubuntu 8.04 Hardy Heron, tetapi langkah2 ini juga sama untuk versi sebelum maupun sesudahnya. Paling-paling hanya berbeda versi PHP dan OCI8-nya saja.</p><p style="margin-bottom: 0cm;">Persiapan</p><p style="margin-bottom: 0cm;">Berikut ini adalah paket aplikasi dan library yang harus dipersiapkan.</p><p style="margin-bottom: 0cm;">Paket kompilasi</p><p style="margin-bottom: 0cm;">Paket-paket berikut ini dibutuhkan agar kita bisa melakukan kompilasi modul OCI8. Install dengan menggunakan perintah :</p><pre style="border: 1px solid rgb(0, 0, 0); padding: 0.16cm; text-align: left;"><a name="zt6:4" id="zt6:4"></a><a name="zt6:5" id="zt6:5">sudo apt-get install<br /><code>checkinstall build-essential gcc</code> re2c<br /></a></pre><p style="margin-bottom: 0cm;"><a name="zt6:5" id="zt6:5"></a><a name="zt6:5" id="zt6:5">Paket development PHP5</a></p><p style="margin-bottom: 0cm;"><a name="zt6:5" id="zt6:5">Paket-paket berikut ini adalah paket development PHP5 yang dibutuhkan untuk mengkompile modul-modul PHP5</a></p><pre style="border: 1px solid rgb(0, 0, 0); padding: 0.16cm; text-align: left;"><a name="zt6:5" id="zt6:5"></a><a name="zt6:41" id="zt6:41"></a><a name="zt6:51" id="zt6:51">apt-get install php-pear php5-dev<br /></a></pre><p style="margin-bottom: 0cm;"><a name="zt6:51" id="zt6:51"></a><a name="zt6:51" id="zt6:51">Oracle Client</a></p><p style="margin-bottom: 0cm;"><a name="zt6:51" id="zt6:51">Agar kita bisa melakukan koneksi ke database Oracle, dibutuhkan library Oracle Client. Untuk modul OCI8 kita cukup menggunakan instantclient. Download melalui alamat </a><a href="http://www.oracle.com/technology/software/tech/oci/instantclient/index.html">http://www.oracle.com/technology/software/tech/oci/instantclient/index.html</a></p><p style="margin-bottom: 0cm;">Setelah download selesai, lakukan langkah berikut ini sebagai root:</p><pre style="border: 1px solid rgb(0, 0, 0); padding: 0.16cm; text-align: left;">mkdir -p /opt/oracle/instantclient<br /><a name="xywa0" id="xywa0">cd /opt/oracle/instantclient<br />unzip instantclient-basic-linux32-<version>.zip<br />unzip instantclient-sdk-linux32-<version>.zip<br /></a><a name="xywa3" id="xywa3">echo "/opt/oracle/instantclient"<br />>> /etc/ld.so.conf.d/oracle.conf<br /></a><a name="xywa4" id="xywa4">ldconfig<br /></a><a name="zt6:1" id="zt6:1">ln -s libclntsh.so.10.1 libclntsh.so<br /></a><a name="zt6:2" id="zt6:2">ln -s libocci.so.10.1 libocci.so<br /></a></pre><p style="margin-bottom: 0cm;"><a name="zt6:2" id="zt6:2">Kompilasi dan Instalasi modul OCI8</a></p><p style="margin-bottom: 0cm;"><a name="zt6:2" id="zt6:2"></a><a name="zt6:2" id="zt6:2">Setelah paket-paket aplikasi yang kita butuhkan tersedia, sekarang kita akan melakukan kompilasi modul OCI8. Berikut ini langkah-langkah yang akan kita lakukan.</a></p><p style="margin-bottom: 0cm;"><a name="zt6:2" id="zt6:2"></a><a name="zt6:2" id="zt6:2">Download modul OCI8</a></p><p style="margin-bottom: 0cm;"><a name="zt6:2" id="zt6:2">Kita akan mendownload source code modul OCI8. Untuk melakukannya, lakukan perintah berikut ini sebagai root.</a></p><pre style="border: 1px solid rgb(0, 0, 0); padding: 0.16cm; text-align: left;"><a name="zt6:2" id="zt6:2"></a><a name="ijfp1" id="ijfp1">mkdir -p /usr/local/src<br /></a><a name="ijfp2" id="ijfp2">cd /usr/local/src<br /></a><a name="ijfp3" id="ijfp3">pecl download oci8<br /></a></pre><p style="margin-bottom: 0cm;"><a name="ijfp3" id="ijfp3"></a><a name="ijfp3" id="ijfp3">Ekstrak dan konfigurasi modul</a></p><p style="margin-bottom: 0cm;"><a name="ijfp3" id="ijfp3">Setelah langkah diatas selesai dilakukan, kita akan mendapatkan file oci8-1.3.3.tgz (versi terbaru mungkin telah tersedia, sehingga sesuaikan nama filenya dengan nama file yang didapat dari langkah diatas). Selanjutnya kita akan mengekstrak file ini dan mengkonfigurasi modul oci8</a></p><pre style="border: 1px solid rgb(0, 0, 0); padding: 0.16cm; text-align: left;"><a name="ijfp3" id="ijfp3"></a><a name="ijfp11" id="ijfp11">tar xzf oci8-1.3.3.tgz<br /></a><a name="ijfp5" id="ijfp5">cd oci8-1.3.3<br /></a><a name="ijfp6" id="ijfp6">phpize5<br /></a><a name="ijfp7" id="ijfp7">./configure<br />--with-oci8=shared,instantclient,/opt/oracle/instantclient<br /></a></pre><p style="margin-bottom: 0cm;"><a name="ijfp7" id="ijfp7"></a><a name="ijfp7" id="ijfp7">Kompilasi dan Instalasi</a></p><p style="margin-bottom: 0cm;"><a name="ijfp7" id="ijfp7">Setelah kita mengkonfigurasinya sesuai dengan library instantclient yang ada, sekarang waktunya kita melakukan kompilasi. Jalankan perintah berikut ini;</a></p><pre style="border: 1px solid rgb(0, 0, 0); padding: 0.16cm; text-align: left;"><a name="ijfp7" id="ijfp7"></a><a name="ijfp12" id="ijfp12">make<br /></a><a name="ijfp9" id="ijfp9">make install<br /></a></pre><p style="margin-bottom: 0cm;"><a name="ijfp9" id="ijfp9"></a><a name="ijfp9" id="ijfp9">Selesai? Belum juga :) Modul OCI8 sekarang sudah berada di direktori modul PHP5, tetapi PHP5 belum ditambahkan setting agar meload modul tersebut. Kita akan menambahkan setting ini dengan perintah</a></p><pre style="border: 1px solid rgb(0, 0, 0); padding: 0.16cm; text-align: left;"><a name="ijfp9" id="ijfp9"></a><a name="jnvk" id="jnvk">echo "extension=oci8.so" ><br />/etc/php5/conf.d/oci8.ini<br /></a></pre><p style="margin-bottom: 0cm;"><a name="jnvk" id="jnvk"></a><a name="jnvk" id="jnvk">Selanjutnya silahkan restart server apache httpd, lalu cek dengan phpinfo. Saat ini modul OCI8 seharusnya telah dikenali oleh PHP5 dan muncul di halaman phpinfo. PHP5 siap melakukan koneksi ke database Oracle.</a></p><p style="margin-bottom: 0cm;"><a name="jnvk" id="jnvk"></a><a name="jnvk" id="jnvk">Selamat mencoba.</a></p><p style="margin-bottom: 0cm;"><a name="jnvk" id="jnvk"></a><a name="jnvk" id="jnvk">Sumber tulisan:</a></p><p style="margin-bottom: 0cm;"><a name="jnvk" id="jnvk"> </a><a href="http://ubuntuforums.org/showthread.php?t=92528">http://ubuntuforums.org/showthread.php?t=92528</a> </p><p style="margin-bottom: 0cm;"><br /></p> </div>Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0tag:blogger.com,1999:blog-6508682.post-76469506468854989822008-11-16T08:12:00.002+07:002008-12-17T09:24:05.761+07:00Mengatasi firefox berjalan di modus offline di ubuntu terbaru<div xmlns=""><p style="margin-bottom: 0in;">Pengguna Ubuntu sejak rilis Hardy Heron dan sekarang Intrepid Ibex, yang terkoneksi Internet menggunakan modem, atau tidak menggunakan Internet sama sekali, hampir dipastikan mengalami masalah Firefox berjalan pada modus Work Offline. Permasalahan ini bersumber dari NetworkManager yang tidak mendeteksi adanya koneksi melalui ethernet kabel, maupun wireless, sehingga mengirimkan status offline kepada Firefox. Firefox yang mendapatkan status offline ini akan otomatis mengaktifkan modus Work Offline.</p><p style="margin-bottom: 0in;">Bagi web developer yang bekerja pada localhost, hal ini tentu sangat mengesalkan. Bagi yang terkoneksi lewat modem juga akan merasakan hal yang sama, karena NetworkManager tidak mendeteksi koneksi lewat modem. Saya mencoba mencari cara mengatasi hal ini. Di beberapa halaman yang saya temui menyarankan untuk menonaktifkan NetworkManager, atau mematikan pengiriman notifikasi dari NetworkManager ke aplikasi. Tentu hal ini kurang tepat untuk dilakukan, karena jika suatu saat kita membutuhkan koneksi melalui jaringan kabel ethernet maupun wireless, kita akan membutuhkan NetworkManager.</p><p style="margin-bottom: 0in;">Saya akhirnya menemukan jawaban pada <a href="http://ubuntuforums.org/showthread.php?t=800179&page=4">thread ini</a>. Pada post nomer 34, saya mengetahui adanya opsi <code>toolkit.networkmanager.disable</code> pada firefox. Untuk mengetahui fungsi dari opsi ini, saya mencari informasinya di mozillazine dan mendapatkan <a href="http://kb.mozillazine.org/Toolkit.networkmanager.disable">halaman ini</a>. Opsi ini sesuai dengan kebutuhan saya, yaitu membuat firefox tidak menggunakan NetworkManager untuk mengetahui status koneksi. Dengan mengeset opsi ini menjadi <code>true</code>, maka firefox tidak akan masuk ke modus Work Offline lagi. NetworkManager tetap berjalan, dan dapat digunakan untuk memilih koneksi kabel ethernet atau wireless saat dibutuhkan.</p><p style="margin-bottom: 0in;">Semoga informasi ini membantu para pengguna Ubuntu maupun distro Linux lainnya mengatasi permasalahan Firefox Work Offline. Saya menggunakan juga varian Firefox yaitu Flock dan Mozilla Prism, dan opsi <code>toolkit.networkmanager.disable</code> juga bisa diterapkan.</p><p style="margin-bottom: 0in;">Cara untuk mengeset <code>toolkit.networkmanager.disable</code> menjadi <code>true</code>:</p><ol><li><p style="margin-bottom: 0in;">Pada Firefox, ketikkan <code>about:config</code> di kolom isian lokasi</p></li><li><p style="margin-bottom: 0in;">Klik tompol peringatan yang muncul</p></li><li><p style="margin-bottom: 0in;">Pada kolom isian filter, ketik <code>toolkit.networkmanager.disable</code></p></li><li><p style="margin-bottom: 0in;">Sekarang tabel akan menampilkan opsi <code>toolkit.networkmanager.disable</code> saja. Nilai default adalah <code>false</code>. Klik dobel baris tersebut untuk mengubah nilai <code>false</code> menjadi <code>true</code>.</p></li><li><p style="margin-bottom: 0in;">Cara alternatif, terutama untuk mengeset opsi ini pada Mozilla Prism adalah dengan mengedit file <code>prefs.js</code>, lalu tambahkan baris ini di akhir file:<br /><code>user_pref("toolkit.networkmanager.disable", true);</code><br />Lokasi file prefs.js untuk Mozilla Prism akan berada di dalam folder <code>.prism</code> di home direktory. Tiap aplikasi prism memiliki folder setting sendiri-sendiri, gunakan fitur search di nautilus untuk mencari semua file <code>prefs.js</code> yang ada.</p></li></ol><p style="margin-bottom: 0in;">Selamat mencoba.</p> </div>Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0tag:blogger.com,1999:blog-6508682.post-33223948374803175722008-11-09T11:33:00.001+07:002008-11-09T11:36:06.056+07:00Publish tulisan ke blog menggunakan OpenOffice<div xmlns=''><p style='margin-bottom: 0in'>Saya baru saja menemukan extension Sun Weblog Publisher di halaman <a href='http://extensions.services.openoffice.org/project/swp'>ini</a>. Extension ini akan membantu pengguna OpenOffice untuk mempublish tulisannya langsung ke blog. Blog yang didukung cukup banyak, diantaranya adalah Blogger dan Wordpress.</p><p style='margin-bottom: 0in'> <br/> </p><p style='margin-bottom: 0in'>Extension ini tentu saja akan memudahkan blogger untuk menulis blognya, karena tidak perlu repot membuka control panel blognya untuk menulis tulisan. Cukup dengan menulis menggunakan OpenOffice, lalu mengklik File > Send > To Weblog... maka tulisannya akan langsung dipublish ke blog. Sangat mudah, cepat, dan nyaman.</p><p style='margin-bottom: 0in'> <br/> </p><p style='margin-bottom: 0in'>Tulisan ini saya tulis menggunakan OpenOffice.org 3.0 yang berjalan pada OS GNU/Linux Ubuntu 8.10 Intrepid Ibex. Indahnya dunia ini dengan adanya software freeware yang menjamin kemerdekaan penggunanya untuk berkreasi.</p><br clear='left'/></div>Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0tag:blogger.com,1999:blog-6508682.post-44396277942300863022008-10-15T15:12:00.002+07:002008-10-15T17:18:06.188+07:00Berbagi pengalaman apply kartu kredit BCASiang ini saya pergi ke kantor BCA Dago untuk apply kartu kredit BCA. Oleh satpam, saya dipersilahkan menuju lantai 2 untuk menemui Customer Service. Setelah bertemu dengan Customer Service, saya diberikan penjelasan tentang kartu kredit BCA.<br /><br />Kartu kredit BCA yang akan diterima oleh pemegang kartu kredit ada 2 kartu. Yang pertama adalah kartu BCA Silver atau kartu Gold, dan yang kedua adalah kartu BCA VISA atau MasterCard. Saya bertanya apakah bisa hanya mendaftar untuk kartu VISA saja dan dijawab oleh mbak CS tidak bisa. Biaya tahunan kartu Silver adalah Rp 75.000,- dan biaya tahunan kartu VISA/MasterCard adalah Rp 125.000,- sehingga total biaya tahunan yang harus dibayar oleh pemegang kartu kredit BCA adalah sebesar Rp 200.000,-<br /><br />BCA memiliki program tahun pertama gratis biaya tahunan kartu Silver/Gold, sehingga pemegang kartu yang baru setahun hanya membayar biaya tahunan untuk kartu VISA/MasterCard. Jika dalam setahun rata-rata penggunaan kartu kredit setiap bulannya mencapai 30% dari limit kartu kredit, maka biaya tahunan kartu Silver/Gold menjadi gratis.<br /><br />Saya tadi mendaftar untuk kartu VISA, karena akan digunakan untuk aktivasi rekening PayPal yang selama ini masih inaktif. Mumpung saat ini masih berstatus karyawan. Mudah-mudahan saja permohonan aplikasi kartu kredit saya ini disetujui :)Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com1tag:blogger.com,1999:blog-6508682.post-33772439775867282292008-09-23T09:32:00.003+07:002008-09-23T09:58:07.302+07:00Mencoba Mozilla PrismPagi ini saya mencoba aplikasi <a href="http://developer.mozilla.org/en/Prism">Mozilla Prism</a> (sebelumnya bernama WebRunner). <a href="http://developer.mozilla.org/en/Prism">Prism</a> adalah aplikasi browser mini yang menjadi jembatan penghubung aplikasi web dengan desktop. Prism tidak menampilkan tampilan menu dan toolbar seperti browser lainnya, tetapi langsung menampilkan halaman aplikasi web secara penuh. Produk lain yang serupa dengan Prism ini adalah <a href="http://www.adobe.com/products/air/">Adobe AIR</a>.<br /><br />Prism menyediakan aplikasi bantu untuk menciptakan file deskripsi dari halaman aplikasi web yang akan dijalankan dengan prism. Shortcut ke aplikasi web ini akan diciptakan di Desktop. Untuk menghapus aplikasi, cukup hapus shortcut ini. Saat ini saya sudah membuat webapp (istilah file deskripsi prism) untuk <a href="http://www.plurk.com/">Plurk</a>, <a href="https://www.rememberthemilk.com/">RememberTheMilk</a>, dan <a href="http://www.blogger.com/">Blogger</a>. Posting ini saya tulis dari halaman blogger yang dijalankan menggunakan Prism.<br /><br />Untuk mendownload Prism, silakan mengunjungi <a href="https://wiki.mozilla.org/Prism#Installs">halaman ini</a>. Pengguna Ubuntu Hardy Heron dapat langsung menginstall prism melalui synaptic maupun apt-get, karena prism telah ada di repository standar ubuntu. Terdapat juga bundel webapp yang disertakan, diantaranya adalah google docs, google calendar, facebook, twitter, dan aplikasi google lainnya. Andapun dapat dengan mudah membuat webapp untuk aplikasi web favorit menggunakan aplikasi bantu bawaan dari Prism.Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0tag:blogger.com,1999:blog-6508682.post-55167785170853119792008-08-31T03:44:00.004+07:002008-09-23T09:57:50.593+07:00Menyimpan file ke dalam database dan menampilkannya di halaman webHari ini saya membaca artikel yang sangat menarik di <a href="http://asktom.oracle.com/pls/asktom/f?p=100:1:0::NO:::">asktom</a> tentang <a href="http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1011065100346196442">keuntungan dan kerugian menyimpan file ke dalam database</a>. Tom menjawab bahwa dia sampai saat ini tidak menemukan keuntungan menyimpan data dari file diluar database. Tom memaparkan keuntungan-keuntungan yang didapatkan kalau data file disimpan ke dalam database, diantaranya:<br /><ol><li>data akan dikelola dengan profesional oleh DBMS</li><li>data akan ikut di-backup</li><li>dapat di-rollback / di-recover bersama data-data lainnya</li><li>data ikut terlindungi / aman</li><li>scalable</li><li>locking</li><li>konsistensi data</li></ol>Membaca pembahasan-pembahasan yang ada disana, saya jadi tertarik untuk mencoba menyimpan file ke dalam database. Kebetulan proyek yang sedang saya kerjakan di kantor memilki permasalahan sinkronisasi file. Ada dua website, gambar diupload di salah satu website, dan ditampilkan di kedua website. Keduanya akan berada di mesin yang terpisah, sehingga saya perlu memikirkan cara sinkronisasi file hasil upload. Jika file yang diupload saya simpan ke database, saya tentu tidak akan memiliki masalah sinkronisasi, karena kedua website dapat mengambil data dari database yang sama.<br /><br />Saya pun mencoba membuat halaman sederhana untuk upload file yang akan disimpan ke database, dan menampilkan file yang tersimpan di database. Saya menggunakan framework <a href="http://codeigniter.com">codeigniter</a> dan untuk akses database saya menggunakan <a href="http://phplens.com/lens/adodb/docs-oracle.htm">adodb</a>. Untuk DBMS sendiri saya menggunakan OracleXE.<br /><br />Berikut ini potongan struktur tabel, dan potongan kode yang saya buat. Silahkan dipelajari dan dikembangkan lebih lanjut.<br /><br /><span style="font-weight:bold;">Tabel</span><br /><code><br />CREATE TABLE "T_BLOB"<br />("ID" NUMBER NOT NULL ENABLE,<br /> "TITLE" VARCHAR2(255 CHAR),<br /> "FILE_DATA" BLOB,<br /> "CONTENT_TYPE" VARCHAR2(100 CHAR),<br /> CONSTRAINT "T_BLOB_PK" PRIMARY KEY ("ID"));<br /></code><br /><span style="font-weight:bold;">Sequence</span><br /><code><br />CREATE SEQUENCE "SEQ_BLOB" INCREMENT BY 1 START WITH 1;<br /></code><br /><span style="font-weight:bold;">Package</span><br /><code><br />CREATE OR REPLACE PACKAGE "P_PUBLIC_TYPES" AS<br /> TYPE theCursor IS REF CURSOR;<br />END P_Public_Types;<br />/<br /><br />CREATE OR REPLACE PACKAGE "PG_BLOB" as<br /><br /> function get_single(v_id in INTEGER) return p_public_types.theCursor;<br /><br /> function get_all(v_order in VARCHAR2) return p_public_types.theCursor;<br /><br /> function add_blob(v_title in VARCHAR2<br /> ,v_content_type in VARCHAR2) return INTEGER;<br /><br /> function delete_blob(v_id in integer) return INTEGER;<br /><br />end pg_blob;<br />/<br /><br />CREATE OR REPLACE PACKAGE BODY "PG_BLOB" as<br /><br /> function get_single(v_id in INTEGER) return p_public_types.theCursor as<br /> cc p_public_types.thecursor;<br /> begin<br /><br /> open cc for '<br /> SELECT B.*<br /> FROM T_BLOB B<br /> WHERE B.ID = ' || v_id || '<br /> ';<br /><br /> return cc;<br /> end get_single;<br /><br /> function get_all(v_order in VARCHAR2) return p_public_types.theCursor as<br /> cc p_public_types.thecursor;<br /> orderby VARCHAR2(255);<br /> begin<br /> <br /> if v_order is not null then<br /> orderby := ' ORDER BY ' || orderby;<br /> end if;<br /><br /> open cc for '<br /> SELECT B.*<br /> FROM T_BLOB B<br /> ' || orderby || '<br /> ';<br /><br /> return cc;<br /> end get_all;<br /><br /> function add_blob(v_title in VARCHAR2<br /> ,v_content_type in VARCHAR2) return INTEGER as<br /> new_id INTEGER;<br /> BEGIN<br /> select SEQ_BLOB.nextval into new_id from dual;<br /><br /> INSERT INTO T_BLOB (ID, TITLE, FILE_DATA, CONTENT_TYPE) <br /> VALUES (new_id, v_title, empty_blob(), v_content_type);<br /><br /> if SQL%ROWCOUNT > 0 then<br /> return new_id;<br /> else<br /> return 0;<br /> end if;<br /> end add_blob;<br /><br /> function delete_blob(v_id in integer) return INTEGER as<br /> begin<br /><br /> DELETE FROM T_BLOB<br /> WHERE ID = v_id;<br /><br /> return SQL%rowcount;<br /> end delete_blob;<br /><br />end pg_blob;<br />/<br /></code><br /><span style="font-weight:bold;">Controller function index</span><br /><code><br />function index()<br />{<br /> echo '<p><a href="'.site_url('/testblob/add').'">Add new data</a></p>';<br /><br /> $rs =& $this->adodb->db->ExecuteCursor('begin'<br /> .' :result := pg_blob.get_all(:v_order);'<br /> .'end;'<br /> ,'result'<br /> ,array('v_order' => ''));<br /> if ($rs && $rs->RecordCount() > 0)<br /> {<br /> $this->load->library('table');<br /> $this->table->set_heading('No'<br /> , 'Title'<br /> , 'Content-Type'<br /> , 'File');<br /> $i = 1;<br /> foreach ($rs as $row)<br /> {<br /> $this->table->add_row($i++<br /> , $row['TITLE']<br /> , $row['CONTENT_TYPE']<br /> , $row['FILE_DATA'] ?<br /> '<a href="'.site_url('/testblob/file/'.$row['ID']).'">Download File</a>'<br /> : 'No File');<br /> }<br /> echo $this->table->generate();<br /> }<br /> else<br /> {<br /> echo '<p>No Data yet</p>';<br /> }<br />}<br /></code><br /><span style="font-weight:bold;">Controller function add</span><br /><code><br />function add()<br />{<br /> if ($this->input->post('submit'))<br /> {<br /> $uploaded = false;<br /> if ($_FILES['file']['name'] != '')<br /> {<br /> //upload image<br /> $conf_upload['upload_path'] = realpath(BASEPATH.'../').'/tmp/';<br /> $conf_upload['allowed_types'] = 'gif|jpg|png';<br /> $conf_upload['encrypt_name'] = true;<br /><br /> $this->upload->initialize($conf_upload);<br /><br /> if ( ! $this->upload->do_upload('file'))<br /> {<br /> //echo '<p>'.$this->upload->display_errors().'</p>';<br /> }<br /> else<br /> {<br /> $data_upload = $this->upload->data();<br /> $uploaded = true;<br /> }<br /> }<br /> //insert data<br /> $sql = 'declare'<br /> .' result integer;'<br /> .'begin'<br /> .' :result := pg_blob.add_blob(:v_title'<br /> .', :v_content_type);'<br /> .'end;';<br /> $stmt =& $this->adodb->db->PrepareSP($sql);<br /><br /> $this->adodb->db->InParameter($stmt, $this->input->post('title'), 'v_title', 255);<br /> $this->adodb->db->InParameter($stmt, $data_upload['file_type'], 'v_content_type', 255);<br /> $this->adodb->db->OutParameter($stmt, $result, 'result');<br /><br /> $this->adodb->db->Execute($stmt);<br /><br /> if ($result > 0)<br /> {<br /> if ($uploaded)<br /> {<br /> $this->adodb->db->UpdateBlobFile('T_BLOB', 'FILE_DATA', $data_upload['full_path'], 'ID='.$result, 'BLOB');<br /> unlink ($data_upload['full_path']);<br /> }<br /> redirect('/testblob/index');<br /> }<br /> }<br /><br /> echo form_open_multipart('/testblob/add', array('name' => 'form_add', 'id' => 'form_add'));<br /> echo '<ol>';<br /> echo '<li>'.form_label('Title', 'title').form_input('title', $this->input->post('title'), 'id="title"').'</li>';<br /> echo '<li>'.form_label('File', 'file').form_upload('file', '', 'id="file"').'</li>';<br /> echo '<li>'.form_submit('submit', 'Add');<br /> echo '</ol>';<br /> echo form_close();<br />}<br /></code><br /><span style="font-weight:bold;">Controller function file</span><br /><code><br />function file()<br />{<br /> $id = intval($this->uri->segment(3));<br /> if (! $id)<br /> {<br /> redirect('/testblob/index');<br /> }<br /><br /> $rs =& $this->adodb->db->ExecuteCursor('begin'<br /> .' :result := pg_blob.get_single(:v_id);'<br /> .'end;'<br /> ,'result'<br /> ,array('v_id' => $id));<br /> if ($rs && $rs->RecordCount() > 0)<br /> {<br /> if ($rs->fields['FILE_DATA'])<br /> {<br /> header('Content-type: '.$rs->fields['CONTENT_TYPE']);<br /> echo $rs->fields['FILE_DATA'];<br /> }<br /> else<br /> {<br /> echo '<p>No File</p>';<br /> }<br /> }<br /> else<br /> {<br /> echo '<p>Data no longer exist</p>';<br /> }<br />}<br /></code><br />Semoga tulisan singkat ini dapat memberikan gambaran kepada pembaca yang ingin menyimpan file ke dalam database dan menampilkan data file dari database.<br /><br />Silahkan juga baca pembahasan dan contoh di link berikut ini:<br /><ol><br /><li><a href="http://www.devarticles.com/c/a/MySQL/Blobbing-Data-With-PHP-and-MySQL/">http://www.devarticles.com/c/a/MySQL/Blobbing-Data-With-PHP-and-MySQL/</a></li><br /><li><a href="http://phplens.com/lens/adodb/docs-oracle.htm">http://phplens.com/lens/adodb/docs-oracle.htm</a></li><br /><li><a href="http://forums.oracle.com/forums/thread.jspa?threadID=205149">http://forums.oracle.com/forums/thread.jspa?threadID=205149</a></li><br /></ol>Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0tag:blogger.com,1999:blog-6508682.post-23909511078601679372008-08-31T00:34:00.001+07:002008-09-23T09:57:36.637+07:00Penjumlahan jam dan menit di PHPBeberapa jam yang lalu seorang <a href="http://aespe.blogspot.com">teman</a> bertanya tentang kode PHP untuk menjumlahkan dua string jam dan menit. Saya coba cari di google tapi tidak ada solusi yang saya temukan. Saya pun menyarankan untuk parsing manual stringnya, di-explode dan dijumlahkan secara terpisah menit dan jamnya. Cara dasar tapi memang bisa dipakai untuk menyelesaikan permasalahan.<br /><br />Beberapa saat yang lalu tiba-tiba saja terlintas ide untuk menggali lagi kehebatan fungsi strtotime yang ada pada PHP. Hasilnya adalah potongan kode berikut ini<br /><code><br /><?php<br /><br />$time1 = '10:20';<br />$time2 = '12:40';<br /><br />$time1_unix = strtotime(date('Y-m-d').' '.$time1.':00');<br />$time2_unix = strtotime(date('Y-m-d').' '.$time2.':00');<br /><br />$begin_day_unix = strtotime(date('Y-m-d').' 00:00:00');<br /><br />$jumlah_time = date('H:i', ($time1_unix + ($time2_unix - $begin_day_unix)));<br /><br /></code><br /><br />Dengan kode diatas penjumlahan dua string jam:menit dapat dilakukan dengan mudah. Semoga bermanfaat.<br /><br /><br />Update: kesalahan ketik diatas sudah diperbaiki :) Maklum ditulisnya malem<sup>2</sup> sih...Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0tag:blogger.com,1999:blog-6508682.post-14371329087679204412008-07-31T14:04:00.001+07:002008-09-23T10:00:12.352+07:00Tri Duta Suci memang mengecewakanSaat saya bertanya kepada teman saya ke bengkel mana dia mempercayakan servis motor yamaha miliknya, teman saya itu menyarankan bengkel Sentra Anugrah Motor di Jl. Dipati Ukur, depan STHB. Alasannya seserhana saja, "Pelayanannya lebih baik daripada Tri Duta Suci." Saat itu, saya masih berdomisili di Jl. Puyuh, sehingga bisa melakukan servis berkala I dan II motor saya di Sentra Anugrah. <br /><br />Pelayanan di Sentra Anugrah memang memuaskan. Ketika saya datang, yang menjaga konter bengkel langsung mencatat motor saya dan menanyakan keluhan yang saya alami dengan motor ini. STNK diberikan kembali kepada saya sebagai bukti pengambilan motor setelah selesai diservis.<br /><br />Sekarang saya sudah pindah rumah ke daerah Cibaduyut. Kemarin saya hendak menservis di bengkel resmi Yamaha, tetapi bengkel di Taman Kopo Indah ternyata ikut libur. Pagi ini sambil berangkat kerja, saya memutuskan untuk meninggalkan motor di bengkel untuk diservis, sehingga siang hari bisa langsung diambil. Saya memutuskan mencoba servis di Tri Duta Suci karena lokasinya yang dekat dengan kantor.<br /><br />Pagi hari tadi saya datang ke Tri Duta Suci. Di konter bengkel, saya disambut oleh mbak penjaga konter. Saya menyerahkan buku servis, kunci dan STNK. Si mbak menyuruh saya menunggu. Saya bilang padanya bahwa motor akan saya tinggal disini saja, nanti siang diambil. Si mbak bertanya, "mau diambil jam berapa?" "Jam 12 siang," kata saya. Tidak ada pertanyaan tentang keluhan yang saya alami dengan motor, maupun pencatatan. Saya meminta STNK yang saya serahkan bersama kunci, tetapi kata si mbak, semua ditinggalkan disana saja. Dalam hati saya berpikir, mudah banget ya nanti kalo mau ngambil motor milik orang lain, kan STNK, buku, dan kunci disana semua. Sungguh suatu kelemahan yang sangat fatal.<br /><br />Siang harinya setelah sholat dzuhur saya langsung ke Tri Duta Suci untuk mengambil motor. Saya berencana makan siang nanti setelah mengambil motor. Sesampainya di bengkel, saya kembali menjumpai mbak penjaga konter yang sama. Saya katakan ingin mengambil motor. Oleh si mbak, saya diminta menunggu karena kasirnya sedang keluar makan siang. "Duh, kenapa ga bilang tadi pagi kalo jam 12 pada istirahat," kata saya dalam hati.<br /><br />Sayapun menunggu dengan sabar dan tak terasa 45 menit telah berlalu. Perut saya sudah protes dengan hebatnya. Si mbak penjaga itu kayaknya berusaha mencari keberadaan si kasir 'penting' itu. "Kayaknya kasirnya kekenyangan," begitu guraunya kepada saya. "Lucu banget mbak, pengen ketawa perut saya ini," kembali saya berujar dalam hati.<br /><br />Sayapun menghampiri si mbak sambil bertanya, "Memangnya kasirnya cuma satu ya mbak?" "Iya, sekarang manajemennya digabung dengan showroom. Jadi menyulitkan konsumen sih. Saya sudah berkali-kali bilang agar kalau keluar jangan sampai lewat jam 1. " begitu jawaban si mbak. Si mbak pun memberikan kuitansi (2 lembar) dan KSG III dari buku servis kepada saya, dan menyarankan saya agar menunggu di showroom saja.<br /><br />Di showroom, ada 2 orang mbak penjaga. Seorang dari mereka bertanya keperluan saya, dan saya jawab hendak bayar servis bengkel. Si mbak menerima kuitansi dan ksg dari saya. Ketika saya memberi uang Rp 50rb, si mbak minta uang pas saja, karena kasirnya lagi keluar. Saya pun bertanya padanya, "kasirnya hanya satu orang ya mbak?" "Iya, mas mau melamar jadi kasir disini?" begitu jawaban si mbak itu. Saya jawab saja, "nggak sih, cuman kalo ada yang sampai masukin ke surat pembaca, bisa sepi nih bengkel," begitu kaya saya. "Kenapa memangnya?" tanya si mbak. "Saya sudah menunggu dari jam 12 tadi. Setidaknya tolong diinformasikan kepada konsumen, " begitu jawaban saya padanya. Si mbak kemudian memberi cap di kuitansi dan KSG, lalu menyerahkan kembali pada saya. Lembar kuitansi hijau disimpan olehnya.<br /><br />Saya kembali ke si mbak penjaga konter bengkel. Dia malah heran ketika saya sodorkan kembali kuitansi putih dan KSG. "Kok dikembalikan ke saya, " tanyanya kepada saya. "Di sana sudah bayar mbak," kata saya padanya. Si mbak pun akhirnya menyerahkan kunci+STNK dan buku servis pada saya.<br /><br />Duh, coba kalo yang ambil motor ini bukan saya, apa Tri Duta Suci mau bertanggung jawab? Setidaknya kasi pertanyaan kek, atau coba tiru Sentra Anugrah yang menggunakan STNK sebagai bukti ketika hendak mengambil motor kembali.<br /><br />Ini merupakan pengalaman saya yang pertama dan terakhir di Tri Duta Suci. Kepada manajemen Tri Duta, mohon lebih selektif dalam menerima dan membina pegawai-pegawai Anda. Kalau bengkel Anda sampai sepi dan bangkrut, kasihan para pekerja Anda yang lain yang telah bekerja dengan baik, tapi harus ikut menderita akibat ulah satu orang yang tidak becus bekerja.<br /><br /> <div class="flockcredit" style="text-align: right; color: #CCC; font-size: x-small;">Blogged with the <a href="http://www.flock.com/blogged-with-flock" style="color: #999; font-weight: bold;" target="_new" title="Flock Browser">Flock Browser</a></div>Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0tag:blogger.com,1999:blog-6508682.post-53057855776488253452008-06-22T12:00:00.002+07:002008-06-22T13:26:18.862+07:00Hapuskan Israel dari dropdown country list, tambahkan Palestina...Hari ini saya membaca <a href="http://tech.slashdot.org/article.pl?sid=08/06/21/2046214&from=rss">berita</a> di <a href="http://slashdot.org">slashdot</a> tentang pengalaman sebuah organisasi yang menerima sumbangan/donasi lewat website. Pada halaman data pengirim sumbangan, terdapat sebuah dropdown negara, dan Israel tidak tercantum di sana. Sebaliknya, dropdown negara ini memiliki entri Palestina sebagai sebuah negara. Berita lengkapnya dapat dibaca <a href="http://blogs.eweek.com/epiphanies/content/machinations/the_trojan_social_opensource_dropdown.html">disini</a>.<br /><br />Cerita itu ditulis oleh <span class="post-footers"> Michael Hickins tentang situs yang dikelola oleh istrinya. Situs ini menerima sumbangan dari seluruh dunia. Halaman situs untuk menerima sumbangan dibangun dengan komponen open-source bernama <a href="http://apps.facebook.com/causes/?m=f053e">Causes</a>. Menurut pengembang </span><span class="post-footers"><a href="http://apps.facebook.com/causes/?m=f053e">Causes</a></span><span class="post-footers">, list negara didapatkan menggunakan <a href="http://api.rubyonrails.com/classes/ActionView/Helpers/FormOptionsHelper.html">API Ruby on Rails</a> yang memang menyertakan Palestina sebagai salah satu item pada list-nya. Selanjutnya, negara Israel tidak terdapat pada list negara pada cerita diatas disebabkan karena blokir yang dilakukan oleh payment processor <a href="http://www.networkforgood.org/">Network For Good</a> yang digunakan oleh </span><span class="post-footers"><a href="http://apps.facebook.com/causes/?m=f053e">Causes</a></span><span class="post-footers">.<br /><br />Pada cerita diatas, istri </span> <span class="post-footers"> Michael Hickins menerima ancaman dari salah satu pemimpin grup pro-Israel yang akan menyebarkan cerita ini ke orang-orang yahudi yang berpotensial sebagai kontributor</span>. Grup ini menuduh organisasi penerima sumbangan ini sebagai anti-semit dan anti-zionis.<br /><br />Terlepas dari masalah teknis kenapa negara Israel hilang dari list negara dan justru ada negara Palestina, ada hikmah yang dapat kita petik dari kejadian ini. Kita bisa memboikot Israel lewat cara ini. Hapuslah Israel dari daftar list negara untuk drop-down negara, dan tambahkan negara Palestina. Israel bukanlah sebuah negara, tetapi adalah perampok yang telah merampas tanah Palestina lalu berbuat kerusakan di seluruh dunia. Tidak pantas situs-stus kaum muslimin menampilkan Israel pada list negara di situs mereka. Hapus Israel sekarang juga dari list negara di situs yang Anda miliki.<br /><br />Semoga perjuangan kecil ini menjadi amal ibadah yang besar pahalanya kelak di akhirat nanti.<div class="flockcredit" style="text-align: right; color: #CCC; font-size: x-small;">Blogged with the <a href="http://www.flock.com/blogged-with-flock" style="color: #999; font-weight: bold;" target="_new" title="Flock Browser">Flock Browser</a></div>Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com2tag:blogger.com,1999:blog-6508682.post-6205289697590325262008-06-22T10:05:00.001+07:002008-06-22T10:05:32.070+07:00Maag dan pengobatan dengan air kelapaSekitar sebulan yang lalu saya sempat menderita sakit maag. Bermula dari sakit yang gejalanya mirip dengan demam berdarah, sayapun memeriksakan diri ke rumah sakit. Hasil test sarah menunjukkan trombosit saya masih normal. Karena malam sebelum nya saya menderita mencret, saya diberi enzim pencernaan oleh dokter yang memeriksa. Dua hari kemudian saya mulai merasakan gejala mual. Ketika dimuntahkan, bukannya mualnya berkurang, tapi badan ikutan jadi tambah lemas.<br /><br />Beruntung kerabat istri saya bisa melakukan pijat refleksi. Setelah dipijat, gejalanya terasa berkurang. Kata si uwa, emang ini yang kena lambung. Setelah browsing di internet, saya memang menemukan bahwa salah satu penyebab maag bisa dikarenakan enzim pankreas buatan. Semenjak muntah, saya memang tidak meminum lagi obat yang diberikan dari dokter.<br /><br />Setelah muntah, istri meminumkan madu kepada saya. Madu cukup menolong mengisi lambung yang sedang kosong setelah seluruh isinya keluar. Madu juga mengurangi rasa pahit dan tidak nyaman yang ada di mulut dan kerongkongan setelah muntah.<br /><br />Untuk memperbaiki lambung, ada satu obat yang sudah saya buktikan mujarab. Air kelapa muda. Air ini merupakan cairan ber-ion yang lebih baik dari minuman ion buatan. Bahkan salah satu produk minuman ion ada yang beriklan bahwa produknya mengandung manfaat yang terkandung pada air kelapa. Tetapi tentu saja air kelapa muda alami jauh lebih baik ketimbang minuman hasil produksi pabrik.<br /><br />Saya membeli air kelapa muda di warung es kelapa muda di dekat kantor. Pada penjualnya, saya meminta air kelapa yang belum dicampur dengan es. Ternyata bisa beli air dari satu kelapa muda. Penjualnya membelah satu kelapa muda, menampung airnya, dan menyerut daging kelapa mudanya. Air dari satu kelapa harganya Rp 4000,- sedangkan kalau beli es kelapa, segelasnya Rp 2000,- Tapi air dari satu kelapa muda emang banyak, lebih dari 2 gelas.<br /><br />Air kelapa mampu menetralisir kelebihan asam lambung yang menyebabkan maag. Air kelapanya tidak perlu dicampur apa-apa. Sekali minum juga jangan banyak-banyak, maksimal 1 gelas saja. Sisa air kelapa simpan di kulkas agar tidak berubah rasa menjadi asam. Kalau sudah tersimpan lebih dari 2 hari, sebaiknya jangan diminum lagi, buang saja, karena biasanya sudah tidak baik.<br /><br />Dalam masa penyembuhan, makan harus teratur. Jangan memakan makanan yang memicu produksi asam lambung berlebihan, seperti lemak, makanan pedas, dan makanan / minuman yang asam. Makan secukupnya, jangan sampai terlalu penuh, karena makanan juga merangsang produksi asam lambung. Semakin banyak makanan yang ada di lambung, asam lambung juga makin banyak diproduksi. Jangan lupa juga untuk air yang banyak.<br /><br />Setelah gejala maag hilang, pertahankan kebiasaan makan secara teratur. Alhamdulillah semenjak sembuh sampai sekarang, gejala sakit maag saya belum pernah kambuh lagi. Semoga pengalaman saya ini dapat membantu pembaca yang juga sedang mengalami sakit maag. Semoga cepat sembuh.<br /> <div class="flockcredit" style="text-align: right; color: #CCC; font-size: x-small;">Blogged with the <a href="http://www.flock.com/blogged-with-flock" style="color: #999; font-weight: bold;" target="_new" title="Flock Browser">Flock Browser</a></div>Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com3tag:blogger.com,1999:blog-6508682.post-61263230614907057192008-06-21T14:01:00.001+07:002008-06-22T13:25:16.882+07:00Blogging menggunakan FlockPosting ini saya tulis menggunakan fitur blogging yang terdapat pada browser <a href="http://www.flock.com/">flock</a>. Browser ini dibangun menggunakan komponen <a href="http://www.spreadfirefox.com/">Mozilla Firefox</a>, sehingga memiliki tampilan yang serupa dengan Firefox. Add-ons untuk firefox pun dapat langsung diinstall, walau tidak semuanya kompatibel.<br /><br />Saya menjalankan flock versi 2.0b1 berdampingan dengan Firefox 3.0 yang baru saja dirilis. Saya menginstall beberapa add-ons, dan membuka tab dengan jumlah yang sama dan ke alamat yang sama pada kedua browser. Flock menggunakan memory lebih sedikit ketimbang Firefox 3.<br /><br />Pada Flock telah terdapat berbagai fasilitas untuk memudahkan kita bersosialisasi di era Web 2.0. Ada fitur Accounts and Services yang menampilkan list situs web 2.0 yang didukung oleh Flock. Fitur ini tampil sebagai sidebar dan akan menampilkan status kita, apakah sedang login atau logoff.<br /><br />Ada juga People sidebar, yang akan menampilkan list teman dari situs pertemanan dan situs web 2.0 lainnya yaitu Facebook, Flickr, Pownce, dan Youtube. Photo Uploader juga memudahkan proses upload foto ke situs yang dapat menyimpan foto seperti Flickr, Photobucket, Picasa, dan Facebook. Upload dapat dilakukan secara batch. Cukup men-drag foto dari komputer ke area yang terdapat pada jendela Photo Uploader.<br /><br />Dan satu yang tidak ketinggalan adalah fitur Post Blog yang saya gunakan untuk menulis posting ini. Fitur ini sudah langsung tersedia tanpa perlu menginstall add-ons. Fiturnya hampir sama bagusnya dengan add-ons <a href="http://www.scribefire.com/">Scribefire</a> untuk Firefox. Blog yang didukung juga banyak, yaitu Blogger, Blogsome, LiveJournal, Typepad, Wordpress.com, Xanga, and Self-Hosted Blog.<br /><br />Jika Anda ingin alternatif browser selain Firefox, pertimbangkanlah Flock. Semua yang dapat dilakukan oleh Firefox dapat dilakukan oleh browser ini. Browser yang ringan dan banyak fitur ini akan menjadi teman setia Anda dalam menjelajahi dunia pertemanan dan sosial web 2.0<br /> <div class="flockcredit" style="text-align: right; color: #CCC; font-size: x-small;">Blogged with the <a href="http://www.flock.com/blogged-with-flock" style="color: #999; font-weight: bold;" target="_new" title="Flock Browser">Flock Browser</a></div>Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0tag:blogger.com,1999:blog-6508682.post-60764583177640668542008-05-02T20:46:00.002+07:002008-06-22T13:21:07.177+07:00Catatan upgrade Gutsy Gibbon menjadi Hardy Heron<div xmlns='http://www.w3.org/1999/xhtml'>Sudah seminggu sejak <a href='http://ubuntu.com/'>Hardy Heron</a> dirilis, dan sudah seminggu ini pula saya mengupgrade Gutsy Gibbon di laptop saya menjadi Hardy. Dengan koneksi internet Centrin yang saya gunakan, upgrade sebesar 1GB lebih memang tidak dapat dilakukan dengan cepat. Untunglah koneksi internet di kantor yang menggunakan Speedy cukup membantu mempercepat proses upgrade yang saya lakukan. Tadi siang, upgrade selesai dan laptop saya resmi menggunakan ubuntu 8.04 Hardy Heron.<br/><br/>Versi terbaru Ubuntu ini merupakan versi LTS, yang akan disupport selama 2 tahun. Banyak aplikasi yang di-upgrade. Beberapa paket harus diremove karena telah digantikan oleh paket baru dengan nama yang sedikit berbeda. Saya melakukan upgrade secara bertahap, sebagian menggunakan synaptic, sebagian menggunakan perintah apt-get install.<br/><br/>Tidak ada kendala berarti yang saya hadapi selama proses upgrade ini. Hanya sedikit masalah di akhir proses upgrade sempat membuat saya kalang kabut. Pagi tadi saya iseng mencoba fitur dual screen yang sudah menjadi default di Hardy. Malam sebelumnya upgrade xserver sudah selesai. Di bagian setting System > Preferences > Screen Resolution sekarang memang langsung diset pada bagian Clone Screens. Saya menyambungkan monitor yang nganggur di kantor. Walaupun Clone Screens dimatikan, tetap saja yang tampil di layar kedua sama dengan tampilan di layar utama. Cari-cari informasi di internet, trus nyoba-nyoba setting pake xandr, eh malah layar laptop jadi mati. Akhirnya saya coba cara kasar, Ctrl+Alt+BackSpace untuk merestart Xserver.<br/><br/>Ketika masuk lagi ke xsession, saya sedikit heran karena <a href='https://launchpad.net/awn'>avant-window-navigator</a> ga jalan. Ketika dicoba dijalankan dari gnome-terminal, avant memberikan pesan bahwa screen composite, yaitu <a href='http://compiz.org/'>compiz</a>, ga jalan. Saya coba jalankan compiz, eh malah menghasilkan Segmentation Fault.<br/><br/>Saya pun kemudian mencari di internet cara mengaktifkan compiz. Sebagai catatan, kartu grafis di laptop saya adalah Intel GMA 900. Saya mendapatkan berbagai macam solusi, tapi setelah dicoba tidak ada yang berhasil. Saya bahkan sempat menguninstall driver xserver-xorg-video-intel. Padahal ternyata biang keladi kenapa compiz tidak berjalan karena saya harus perlu menginstall paket xserver-xgl. Entah kenapa paket ini tidak ikut terinstall sewaktu proses upgrade.<br/><br/>Karena tadi saya sempat menguninstall driver video intel, ketika konfigurasi xorg saya balikin lagi ke driver intel, tampilan jadi lambat sekali. Scrolling menjadi patah-patah. Ketika dicek dengan perintah :<br/><code><br/>$ glxinfo | grep direct<br/></code><br/>Saya mendapatkan hasil ini:<br/><code><br/>direct rendering: No<br/></code><br/>Cari-cari lagi di internet, akhirnya saya mencoba solusi di <a href='https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/182284'>sini</a>, yaitu dengan mengedit file /etc/X11/xorg.conf, kemudian mengedit bagian ini dan menambahkan bagian yang saya tandai dengan huruf tebal.<br/><code><br/>Section "Device"<br/> Identifier "Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller"<br/> Boardname "intel"<br/> Busid "PCI:0:2:0"<br/> Driver "intel"<br/> Screen 0<br/><b> Option "AccelMethod" "xaa"</b><br/>EndSection<br/></code><br/>Setelah xserver direstart, akhirnya compiz bisa saya jalankan dengan lancar, seperti semula. Avant-window-navigator pun berjalan dengan baik.<br/><br/>Semoga pengalaman saya ini dapat bermanfaat bagi pembaca yang juga sedang melakukan upgrade dari Gutsy ke Hardy.</div>Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com1tag:blogger.com,1999:blog-6508682.post-87776714750158068832008-04-24T11:20:00.001+07:002008-06-22T13:25:16.883+07:00New version of ScribeFire<div xmlns='http://www.w3.org/1999/xhtml'>Setelah beberapa waktu ini scribefire mogok berfungsi, sekarang baru muncul versi barunya. Fitur-fiturnya jadi lumayan lengkap, ada add image dari flickr dan add video dari youtube. Post ini untuk mengetes apakah scribefire sudah berfungsi dengan baik atau belum.<br/></div>Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0tag:blogger.com,1999:blog-6508682.post-80111084223226122982008-04-18T16:30:00.002+07:002008-04-18T17:05:59.195+07:00Mendapatkan kembali SIM tanpa sidang tilangSeperti yang saya tuliskan pada tulisan sebelum <a href="http://hantulab.blogspot.com/2008/04/laporan-pandangan-mata-sidang-tilang.html">ini</a>, sore ini saya kembali ke pengadilan negeri Bandung untuk mengambil SIM yang kena tilang. Saat saya sampai di pengadilan, parkir motor di pelataran halaman pengadilan sudah kosong. Saya tidak jadi parkir di tempat parkir motor tapi saya parkir di dekat pos satpam, karena ada 3 motor sedang terparkir disana. Ruang pengadilan pun sudah tampak sepi, hanya ada dua orang petugas ketika saya masuk ke ruang sidang VI.<br /><br />Saya langsung menemui seorang petugas dan menyerahkan surat tilang kepadanya. Beliau memberikan surat itu ke petugas yang berada di meja hakim, yang duduknya di sisi kanan hakim. Petugas itu lalu menyarankan saya untuk langsung ke loket pengambilan bukti tilang di bagian pidana. Petugas pertama tadi menyerahkan kembali surat tilang ke tangan saya sambil menunjukkan letak ruangannya. Dari pintu ruang sidang VI, berjalan lurus ke depan, lalu masuk ke pintu di sebelah kiri. Ada dua pintu, kebetulan ada petugas parkir lewat dan mengarahkan saya ke ruangan yang benar, yaitu pintu sebelah kanan diantara dua pintu yang ada. Saya langsung menyerahkan surat tilang dan surat pasangannya langsung ditemukan. SIM diserahkan ke saya oleh petugas disana sambil bilang dendanya Rp 25.000,-<br /><br />Bagian pidana tempat saya mengambil SIM kurang tepat disebut loket, karena bentuknya seperti ruang kantor biasa. Mungkin jika ingin mengambil sitaan tilang di hari selain hari sidang yang tercantum di surat tilang, ke tempat inilah pengurusannya. Tentang sidang sendiri, saya sempat bertanya ke petugas di ruang sidang, kata beliau, sidang selesai sekitar pukul 2 siang tadi. dari hasil perkiraan saya, dengan sidang per 5 orang yang waktunya ga sampai 5 menit untuk kelima orang itu, memang sekitar jam 2 s/d 2:30, semua pelanggar yang ada di ruang sidang tadi itu bakal selesai diproses semuanya.<br /><br />Dari dua kali pengalaman saya ditilang ini, sudah dua cara saya tempuh untuk mengambil SIM yang disita. Cara pertama yang telah saya tulis <a href="http://hantulab.blogspot.com/2007/11/pengalaman-mengurus-tilang-di-bandung.html">di sini</a> adalah mengambilnya di kantor Polresta sesuai dengan surat tilang yang diberikan saat ditilang. Waktu itu saya dapat slip biru tapi tanpa nominal, dan bayar di kantor Polresta cuman Rp 20.000, waktu pengambilan hari senin setelah tanggal sidang. Cara kedua adalah pengalaman hari ini, dapet slip merah dan diambil di pengadilan, setelah waktu sidang, bayar Rp 25.000,- Satu cara lagi yang baru saya ketahui dari <a href="http://www.kaskus.us/showthread.php?p=29816341">sini</a> yaitu dapat diambil di kantor Polres sesuai surat tilang segera setelah tilang sampai dengan H-1 waktu sidang. Mungkin lain kali akan saya coba cara ini (mudah-mudahan ga akan pernah lagi ditilang :D)<br /><br />Semoga informasi ini berguna bagi pembaca semua. Jangan takut ditilang. Jangan mau diurus calo, mending urus sendiri. Kalau belum tahu tempatnya, tanya ama calo, tapi jangan tunjukkan surat tilang, pura-pura bego aja, atau bilang nyari temen yang lagi sidang atau alasan lain. Tapi informasi akurat tetap dari petugas, karena kadang calo bisa aja bohong, atau memang tidak tahu lalu ngarang jawabnya. Kalau ga mau antri, datanglah ketika sidang hampir selesai, atau setelah waktu sidang.Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0tag:blogger.com,1999:blog-6508682.post-66228384291276644062008-04-18T13:56:00.001+07:002008-04-24T11:30:05.539+07:00Laporan pandangan mata sidang tilang dari pengadilan negeri Bandung<div xmlns='http://www.w3.org/1999/xhtml'>Saya kena tilang lagi. Kejadiannya hari Senin minggu yang lalu, tanggal 7 April 2008. Penyebabnya sebenarnya sepele, tapi emang melanggar sih. Saat itu saya dari arah pasteur mau naik ke jalan layang cikapayang. Ketika hampir sampai di persimpangan dengan jalan cihampelas, lampu lalu lintas menjadi merah. Karena tanggung, saya putuskan saja untuk berhenti, karena dari arah cihampelas sudah banyak mobil dan motor yang bersiap-siap untuk melaju. Daripada ketabrak, mending nunggu bentar kan. Saat itu saya tidak sadar bahwa posisi saya berada di depan garis batas.<br /><br />Dari arah kanan datanglah seorang polisi dengan isyarat tangan menyuruh saya mundur. Celakanya di belakang sudah penuh oleh motor yang datang belakangan dan tidak ada ruang lagi bagi saya untuk mundur. Si polisi itu kemudian memberi isyarat dengan tangan agar saya mengikutinya, sambil meminta sim dan stnk. Sayapun mengikutinya ke seberang jalan pasteur. Jadilah saya kena tilang untuk kedua kalinya semenjak memegang SIM.<br /><br />Kali ini saya diberikan slip merah. Artinya saya harus datang sidang pada tanggal 18, yaitu hari ini. Saya pun mencari-cari informasi tentang sidang tilang, terutama sidang di Bandung. Ada yang menyarankan datang di hari lain selain hari sidang, ada yang menyarankan datang di hari sebelum sidang ke Polwiltabes, langsung bayar denda di sana. Sayang saya baca saran terakhir ini baru tadi pagi.<br /><br />Tadi jam 1-an, setelah sholat jumat, saya pergi ke pengadilan negeri. Karena saya tidak tau persis alamatnya di mana, dan di blog maupun wikimapia juga tidak ada, saya putuskan untuk mencari sendiri saja. Perkiraan lokasi ada di dekat KFC, dan ternyata memang benar. Dari kejauhan tampak banyak sepeda motor diparkir di trotoar. Saya terus melaju, kebetulan di depan ada mobil belok masuk ke pengadilan, jadi saya ikuti saja. Di dalam halaman pengadilan ada parkir motor dan saya lalu parkir motor disana. Saat parkir seperti biasa disapa para calo, menawarkan bantuan. Saya tolak dengan halus, sambil tanya kemana saya harus masuk. Dijawab oleh mang calo, ruang sidangnya ada di ruang VI.<br /><br />Ruang VI adalah ruang sidang yang dipadati pengunjung, sebagian besar adalah pelanggar lalu lintas yang hendak sidang. Untuk mencapai ruang ini, masuklah di pintu paling kiri, yang berada di dekat pos satpam, dari arah pintu masuk jalan RE Martadinata. Masuk saja terus ke lorong yang gelap karena ga ada lampu itu, lalu belok ke kiri, belok kanan lagi. Ruangnya ada di ujung lorong dengan label Ruang VI di atas pintu masuk.<br /><br />Saat saya datang, ada banyak orang yang sedang menunggu. Ternyata saat itu hakim belum datang. Bagi yang ingin sidang, tinggal masuk memberikan surat tilang ke petugas di meja sebelah kiri. Saya kemudian iseng jalan-jalan ke bagian lain pengadilan. Bangunan di bagian lain bagus-bagus dengan lantai keramik, sedangkan ruang sidang VI seperti ruang tak terawat, dengan suasana gelap dan lantai semen saja. Saya kembali ke ruang VI dan tak lama kemudian hakim memasuki ruangan. Selanjutnya dipanggillah nama sesuai surat yang sudah ada di meja hakim, untuk duduk di kursi panjang di tengah ruangan yang dapat menampung lima orang. Hakim selanjutnya mengatakan tujuan sidang saat itu, ditutup dengan pesan agar para terdakwa tidak melanggar lagi. Hukuman yang dijatuhkan berupa denda yang dibayarkan pada petugas di meja sebelah kanan, setelah mengambil surat tilang kepada petugas di samping kiri hakim.<br /><br />Saya lalu meninggalkan ruang sidang, berencana untuk balik sore nanti. Di tempat parkir, saya menanyakan ke calo yang kebetulan lewat sampai jam berapa sidang dilaksanakan, dan dijawab olehnya sampai sore, jam 4-an jam 5-an. Ketika dia bertanya ke saya dapat slip merah apa biru, saya jawab aja udah sidang. Iseng juga sekalian nanya kalau telat sidang, diurus dimana, dijawab di dalam, di loket pidana. Tak lupa sang calo menambahkan bahwa dendanya juga bakal beda kalo telat. Saya jawab dengan terima kasih dan sayapun meninggalkan pengadilan negeri, balik ke kantor nerusin kerjaan dan posting tulisan ini :)<br /><br />Nanti sore saya mau balik lagi kesana, tunggu aja laporan pandangan matanya di tulisan selanjutnya.<br /><br />Tulisan lain tentang tilang:<br /><a href='http://standalone.blogsome.com/2006/01/03/tilang-kenapa-takut-disidang/'>http://standalone.blogsome.com/2006/01/03/tilang-kenapa-takut-disidang/</a><br /><a href='http://my.opera.com/teguh_widodo/blog/2007/02/01/prosedur-tilang?cid=3131197'>http://my.opera.com/teguh_widodo/blog/2007/02/01/prosedur-tilang?cid=3131197</a><br /><a href='http://www.kaskus.us/showthread.php?p=29816341'>http://www.kaskus.us/showthread.php?p=29816341</a><br /><a href='http://riyogarta.com/2006/12/05/sidang-akibat-tilang/'>http://riyogarta.com/2006/12/05/sidang-akibat-tilang/</a><br /><a href='http://indrariawan.wordpress.com/2007/06/20/sidang-tilang/'>http://indrariawan.wordpress.com/2007/06/20/sidang-tilang/</a><br /><a href='http://papabonbon.wordpress.com/2007/02/12/kena-tilang-p/'>http://papabonbon.wordpress.com/2007/02/12/kena-tilang-p/</a></div>Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com2tag:blogger.com,1999:blog-6508682.post-27924860147268628602008-04-17T21:27:00.002+07:002008-04-17T21:41:04.784+07:00Kompilasi dan instalasi modul ffmpeg-php di UbuntuTahun lalu sewaktu saya membutuhkan module oracle untuk PHP, saya perlu melakukan kompilasi php sendiri dari source code saat itu. Proses kompilasi, selain lama, juga perlu diulang setiap kali versi/rilis baru php keluar. Hal ini tentunya tidak praktis untuk dilakukan.<br /><br />Saat ini ternyata kompilasi php tidak perlu lagi dilakukan sendiri. Saya dapat mengkompile sendiri modul php yang saya butuhkan, untuk kemudian tinggal diload melalui php.ini. Kompilasi modul sangatlah sebentar, karena ukurannya yang memang kecil. Selain waktu kompilasi yang cepat, jika versi baru php dirilis, saya juga tidak perlu melakukan kompilasi ulang, selama modul masih kompatibel dengan versi php tersebut.<br /><br />Berikut ini saya akan menuliskan langkah-langkah instalasi modul ffmpeg-php. Langkah-langkah ini adalah hasil rangkuman dari panduan di situs <a href="http://www.escapegoat.org/2007/11/11/installing-ffmpeg-php-on-ubuntu-7-10">ini</a> dan <a href="http://www.goose-media.net/sfSimpleBlog/show/stripped_title/installing-ffmpeg-and-ffmpeg-php-on-ubuntu-gutsy-gibbon">ini</a>, dan saya sesuaikan dengan kondisi saat saya melakukan kompilasi dan instalasi.<br /><br /><h4>Langkah pertama, persiapan</h4><br /><br />Siapkan ubuntu untuk melakukan kompilasi. Ada beberapa paket development yang perlu diinstall yaitu:<br />Paket php development:<br /><code><br />$ sudo apt-get install php5-dev<br /></code><br />paket ffmpeg saran dari <a href="http://www.goose-media.net/sfSimpleBlog/show/stripped_title/installing-ffmpeg-and-ffmpeg-php-on-ubuntu-gutsy-gibbon">goose blog</a>:<br /><code><br />$ sudo apt-get install ffmpeg libavformat-dev libavcodec1d libavformat1d<br /></code><br />paket ffmpeg saran dari <a href="http://www.escapegoat.org/2007/11/11/installing-ffmpeg-php-on-ubuntu-7-10">escapegoat.org</a>:<br /><code><br />$ sudo apt-get install liblame-dev libfaad2-dev libfaac-dev libxvidcore4-dev liba52-0.7.4 liba52-0.7.4-dev libx264-dev libdts-dev libgsm1-dev libvorbis-dev libdc1394-13-dev checkinstall build-essential gcc<br /></code><br /><br /><h4>Langkah kedua, download</h4><br /><br />Untuk langkah ini dan seterusnya, saya mengikuti panduan dari <a href="http://www.goose-media.net/sfSimpleBlog/show/stripped_title/installing-ffmpeg-and-ffmpeg-php-on-ubuntu-gutsy-gibbon">goose blog</a>. Jika Anda ingin mengikuti panduan dari <a href="http://www.escapegoat.org/2007/11/11/installing-ffmpeg-php-on-ubuntu-7-10">escapegoat.org</a> silahkan saja dicoba :)<br /><br />Download source code ffmpeg-php dari sourceforge.net. Saat saya melakukan ini, alamatnya adalah :<br />http://downloads.sourceforge.net/ffmpeg-php/ffmpeg-php-0.5.2.1.tbz2?modtime=1207482494&big_mirror=0<br /><br /><h4>Langkah ketiga, kompilasi</h4><br /><br />Lakukan ekstrak terhadap file <code>ffmpeg-php-0.5.2.1.tbz2</code> dengan perintah :<br /><code><br />$ tar jxvf ffmpeg-php-0.5.2.1.tbz2<br /></code><br /><br />Setelah itu, masuklah ke direktori ffmpeg-php-0.5.2.1 hasil ekstraksi dengan perintah:<br /><code><br />$ cd ffmpeg-php-0.5.2.1<br /></code><br /><br />dan lakukan perintah berikut ini untuk mengkompile modul ffmpeg-php :<br /><code><br />$ phpize5<br />$ ./configure<br />$ make<br />$ sudo make install<br /></code><br /><br />Perintah-perintah diatas akan mempersiapkan source code ffmpeg-php, mengkompile-nya, dan menginstallnya di direktori modul php. Lokasi modul php akan terlihat saat perintah terakhir dijalankan. Ini hasil pada sistem yang saya gunakan:<br /><code><br />$ sudo make install<br />Installing shared extensions: /usr/lib/php5/20060613+lfs/<br /></code><br /><br /><h4>Langkah keempat, konfigurasi <code>php.ini</code></h4><br /><br />Setelah modul selesai dikompile dan diinstall, sekarang kita perlu menambahkannya pada <code>php.ini</code>, agar modul dikenali dan diload oleh php. Saran dari <a href="http://www.escapegoat.org/2007/11/11/installing-ffmpeg-php-on-ubuntu-7-10">escapegoat.org</a> maupun dari <a href="http://www.goose-media.net/sfSimpleBlog/show/stripped_title/installing-ffmpeg-and-ffmpeg-php-on-ubuntu-gutsy-gibbon">goose blog</a> adalah mengedit file <code>php.ini</code>, tetapi saya tidak setuju dengan ini. Ada mekanisme yang lebih mudah daripada harus mengedit file <code>php.ini</code>.<br /><br />Saya tidak tahu sejak kapan fitur loading konfigurasi secara dinamis ada, tetapi Debian yang saya gunakan tahun lalu sudah memiliki fitur ini. Saya juga tidak tahu nama resminya apa. Konfigurasi apache dan php di ubuntu maupun debian bukan 1 file lagi, tetapi sudah dipecah-pecah menjadi file-file kecil yang dapat diload secara otomatis ketika server dihidupkan. Fitur ini memudahkan kita menambahkan konfigurasi kustom dan tidak perlu takut konfigurasi kita ditimpa saat melakukan upgrade.<br /><br />Folder konfigurasi dinamis <code>php.ini</code> ada di <code>/etc/php5/conf.d</code>. Di direktori ini telah ada banyak file-file <code>.ini</code>, masing-masing meload modul sesuai dengan nama filenya. Untuk menambahkan modul ffmpeg-php hasil kompilasi kita tadi, kita cukup membuat file <code>ffmpeg.ini</code> di direktori ini dan isikan konfigurasi berikut ini:<br /><code><br /># configuration for ffmpeg-php module<br />extension=ffmpeg.so<br /></code><br /><br /><h4>Langkah kelima, restart apache</h4><br /><br />Sekarang tiba saatnya kita menguji dan menggunakan modul ffmpeg-php. Restart apache dengan perintah :<br /><code><br />$ sudo /etc/init.d/apache2 restart<br /></code><br /><br />Buka halaman php yang memanggil fungsi phpinfo(); menggunakan browser. Jika instalasi ffmpeg-php sukses, maka modul ffmpeg-php akan tampil di halaman phpinfo ini dan modul ini siap untuk digunakan.<br /><br />Selamat menginstall dan menggunakan ffmpeg-phpDonny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0tag:blogger.com,1999:blog-6508682.post-23524549760295232062008-04-17T16:48:00.003+07:002008-04-18T17:05:12.952+07:00Langkah-langkah membuat HoaxMenyambung <a href="http://hantulab.blogspot.com/2008/02/lagi-lagi-spam-lewat-messenger.html">posting saya lang lalu</a>, saya pernah mendapatkan tulisan dibawah ini lewat milis beberapa tahun lalu. Tulisan ini bukan untuk menyuruh Anda semua membuat hoax, tetapi untuk membekali diri agar tidak terkecoh dengan hoax yang banyak beredar.<br /><br />Semoga bermanfaat bagi pembaca semua.<br /><br />------<br /><br />Date: Wed, 15 Mar 2006 14:02:02 +0700 (WIT)<br /><br />Beberapa orang masih bingung membedakan antara spam dan hoax. Gampangnya,<br />spam adalah email yang berisi iklan suatu produk/website tertentu dimana<br />kita tidak menginginkan menerima email tersebut, keterangan lengkap bisa<br />dilihat di wiki. Sementara itu, hoax adalah berita bohong atau berita<br />palsu.<br /><br />Hoax beredar di mana saja: email, bulettin friendster, Yahoo Messenger,<br />bahkan SMS. Sebelum dapat membedakan hoax dan bukan, mari kita belajar<br />membuat hoax.<br /><br />Langkah-langkah membuat hoax.<br /> - Pilih topik yang unik<br />Tidak harus berhubungan dengan dunia komputer, boleh kesehatan, keuangan,<br />kemanusiaan, atau bahkan tentang cuaca. Coba yang sepele dulu, tapi setiap<br />hari digunakan orang, misalnya "mouse".<br /><br /> - Cari 'masalah'<br />Carilah yang kira-kira akan membuat orang mengernyitkan dahi dan berupaya<br />untuk memberitahukan teman-temannya. Misalnya:<br /><br />"Penggunaan optical mouse dapat menimbulkan Kanker"<br /><br /> - Gunakan istilah-istilah ilmiah<br />Usahakan yang sudah diketahui oleh banyak orang. Jangan lupa berikan<br />data-data berupa angka.<br /><br />"Kenyamanan optical mouse ternyata mempunyai efek samping yang berbahaya.<br />Tiga tahun semenjak peluncuran pertama optical mouse oleh microsoft, telah<br />ditemukan ribuan kasus kelainan pada jaringan tangan akibat radiasi yang<br />dipancarkan mouse. Optical mouse bekerja dengan memancarkan gelombang<br />elektromagnetik frekuensi tinggi ke permukaan di bawahnya. Frekuensi yang<br />digunakan jauh lebih tinggi dari pada pada handphone.<br /><br />Telah diketahui secara luas bahwa telapak tangan dan kaki merupakan pusat<br />ujung-ujung syaraf tubuh. Radiasi yang dirasakan oleh telapak tangan bisa<br />berpengaruh fatal pada kesehatan, karena menurut laporan WHO radiasi dari<br />mouse setara 5 kali radiasi handphone. Akan tetapi radiasi mouse menjadi<br />berbahaya karena dipegang terus menerus oleh pemakai komputer.<br /><br />Pengaruh radiasi dari mouse lebih terasa pada produk-produk berkualitas<br />rendah, karena produk-produk yang bagus memiliki shield (pelindung) untuk<br />melindungi pergelangan tangan. "<br /><br /> - Tambahkan alamat kantor berita di internet<br /><br />"WHO, GreenPeace, dan CNN sudah menghentikan penggunaan optical mouse<br />untuk seluruh kegiatan di kantornya, sementara Microsoft dan IBM<br />mengucurkan dana sekitar 2milyar dolar untuk kerjasama pembuatan pointing<br />device yang lebih aman.<br /><br />Industri-industri hardware terbesar di cina dan taiwan berusaha<br />menutup-nutupi hal ini. Jika diperhatikan, mouse-mouse optical yang<br />beredar di pasaran saat ini diproduksi oleh merk-merk yang tidak terkenal,<br />padahal itu hanyalah sisa produksi industri besar yang sudah menghentikan<br />penjualan."<br /><br /> - Berikan solusi yang tidak kalah gebleknya<br /><br />"Untuk itu, cobalah memegang mouse hanya di saat diperlukan saja.<br />Berlatihlah menggunakan Hotkey (Ctrl-C, Ctrl-V untuk kopi paste).<br />Kembalilah menggunakan mouse model lama (bola)".<br /><br /><br /> - Tambahkan kata-kata ajaib<br /><br />"Sekedar untuk berjaga-jaga, seorang temanku sudah kena 2 hari yang lalu.<br />Tolong teruskan ke orang-orang yang anda sayangi".<br /><br />*hihihi*<br /><br /> - Berikan efek forward.<br />Agar seolah-olah email ini didapat dari kalangan eksklusif, atau dari<br />milis yang berkaitan, beri efek forward pada judul email<br /><br />"Fwd:[milis-kesehatan]Mouse Optical dapat menyebabkan kanker<br />(PENTING!!!)".<br /><br />Gampang? Tentu Saja<br />Dari uraian diatas semoga bisa terlihat betapa mudahnya orang membuat hoax<br />di internet. Oleh karena itu, setelah dapat membuat hoax sendiri seperti<br />di atas, kita dapat membedakan mana berita hoax dan mana berita yang<br />benar. Semakin banyak orang yang bisa mengerti ciri-ciri hoax, semakin<br />sedikit sampah yang akan beredar di internet.<br /><br />Bagaimana memeriksa apakah suatu berita itu Hoax atau bukan?<br />1. Gunakan logika saja. misalnya "forward berita ini sebagai tanda bahwa<br />account anda aktif, karena friendster terlalu penuh dan akan menutup<br />account yang tidak aktif". Yang benar saja gitu loh, dengan satu query di<br />database saja sudah kelihatan kapan suatu account terakhir login, lagipula<br />mana ada online industry yang menutup kliennya dengan semena-mena.<br />2. Jika ada link, coba cari di link tersebut<br />3. Tanyakan pada rekan yang lebih memahami hal ini<br />4. Tanya paman google<br /><br />Dalam urutan 'penyampah internet', menurutku hoax berada setingkat lebih<br />tinggi daripada spam. Orang membuat spam untuk sekedar mencari makan,<br />mungkin untuk anak-anaknya atau istri-istrinya. Sedangkan orang membuat<br />hoax tak lain hanyalah untuk kepuasan pribadi : berhasil membohongi orang<br />banyak. (Junk mail tergolong sampah jinak)<br /><br />Membuat hoax tidak menjadikan seseorang mendapatkan keuntungan apapun,<br />kecuali kesenangan semu karena 'hasil karya'nya beredar luas di internet.<br />Sementara itu, ribuan bahkan jutaan orang yang bekerja pada industri yang<br />berkaitan mengalami kerugian karena produknya tiba-tiba saja tidak laku.<br />Sementara ribuan orang yang lain mengalami kecemasan (fraud) akibat<br />membaca hoax tersebut.<br /><br />Ketahuilah, hanya ciken yang membuat hoax dan menyebarkannya, dan hanya<br />idiot yang memforwardnya. Selamatkan internet dari sampah berbahaya,<br />sebarkan informasi ini pada teman-teman yang anda sayangi.Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0tag:blogger.com,1999:blog-6508682.post-68109230821532443782008-04-10T14:12:00.002+07:002008-06-22T13:22:46.626+07:00Solusi menghadapi konten negatifSetelah <a href="http://hantulab.blogspot.com/2008/04/pemblokiran-website-sebuah-eksperimen.html">tulisan emosional</a> saya sebelum ini, saat ini saya mencoba menuliskan solusi untuk masalah peredaran konten negatif, salah satunya berupa film Fitna. Tindakan pemerintah memblokir akses ke website yang mengandung konten negatif bagi saya sangat tidak efektif. Konten itu bukan milik website bersangkutan, tetapi dapat diletakkan disana oleh siapa saja dan dari mana saja.<br /><br />Ibarat sebuah papan besar yang boleh ditempel dengan selebaran, poster, pengumuman, dll, maka seperti itu jugalah website seperti YouTube dan Multiply. Hanya karena ada satu selebaran negatif tertempel di papan itu, apa lantas kita harus melarang orang lain melihat keseluruhan papan? Yang harus dilakukan adalah menghubungi pengurus yang bertanggung jawab atas papan pengumuman tersebut, memberitahu dia bahwa ada selebaran yang tidak pantas berada disana. Saya yakin dengan cara ini, pengurus tersebut akan mencabut selebaran negatif yang ada tadi.<br /><br />YouTube dan Multiply memiliki admin yang dapat menghapus konten negatif yang ada pada server mereka. Tidak perlu campur tangan pemerintah, siapapun bisa melakukan laporan kepada mereka tentang adanya konten negatif di server mereka. Laporan yang tepat pasti akan ditanggapi oleh mereka. Tidak perlu sampai boikot keseluruhan website, konten negatif yang banyak dikeluhkan oleh pengakses sebuah website pasti akan dihapus oleh admin website tersebut.<br /><br />Pak Menteri Menkominfo tampaknya harus memperdalam ilmu kominfo-nya. Di negara ini memang 'wajar' pejabat diangkat bukan karena keahliannya, tapi karena alasan politik yang sering disebut 'politik balas budi'. Walaupun begitu, tidak ada kata terlambat untuk belajar. Banyak otak-otak cemerlang di negeri ini yang bisa diajak bertukar pikiran, sebelum suatu keputusan diambil. Kalau suatu urusan dilaksanakan oleh orang yang tidak memiliki keahlian, hal yang pasti terjadi adalah kehancuran. Sudah bukan masanya lagi 'pakar' gadungan dimintai pendapat tentang suatu hal yang bukan bidang keahliannya.Donny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0tag:blogger.com,1999:blog-6508682.post-53721016212685433812008-04-10T11:37:00.002+07:002008-06-22T13:23:00.607+07:00Pemblokiran website, sebuah eksperimen pemerintah... LAWAN!!!Beberapa waktu lalu saya membaca berita tentang pemblokiran website YouTube oleh pemerintahan beberapa negara, diantaranya Thailand, Iran, dan Pakistan. Pemerintahan negara ini termasuk sukses dalam tuntutannya kepada YouTube untuk menghapus video yang tidak disukai oleh pihak pemerintah negara bersangkutan. Thailand mempermasalahkan video yang menghina raja mereka. YouTube akhirnya mengikuti tuntutan Thailand dan menghapus video tersebut dari koleksi video yang mereka miliki, dan YouTube pun bisa diakses kembali oleh warga Thailand. Thailand tidak sekali saja melakukan hal ini, tetapi dua kali, dan kedua-duanya tergolong sukses.<br /><br />Kali ini hal yang sama dicoba dilakukan oleh pemerintahan NKRI. Pemerintahan kita ini tampaknya tidak mau kalah dari negara tetangga. Mereka ingin menguji keefektifan dari UU ITE yang baru saja disahkan oleh para wakil rakyat yang terhormat itu. Surat sakti dari menteri pun langsung dikirimkan ke penyelenggara jasa internet / ISP. Ancaman pencabutan izin usaha tampaknya cukup ditakuti oleh para perusahaan penyelenggara jasa internet, sehingga sekarang saya akhirnya menikmati internet tanpa YouTube, Multiply, dan beberapa website lain yang ikut diblok.<br /><br />Sebuah eksperimen, pastilah menunggu hasil. Saya yakin bahwa pemblokiran beberapa website ini hanyalah eksperimen pemerintah. Apa kira-kira hasil yang diharapkan? Saya menduga adalah sikap nrimo dari kita semua, pada pengguna jasa internet. Jika eksperimen ini sukses, di masa mendatang akan banyak situs-situs lain yang akan 'diberangus' oleh pemerintahan dengan berbagai alasan 'klise' seperti yang selalu kita dengar selama ini. Mengingat tahun depan adalah masa pemilu, maka bisa jadi, ini adalah persiapan dari para pemegang tampuk pemerintahan saat ini untuk mencoba mengendalikan informasi yang berada di ruang maya internet. Seperti tulisan Pak Budi, selamat datang <a href="http://rahard.wordpress.com/2008/04/07/internet-endonesha-order-baru-20/">Orde Baru 2.0</a>.<br /><br />Apa yang harus kita lakukan? Hanya ada satu kata ... lawan. Ini yang banyak beredar di milis dan forum-forum pembahasan tentang pemblokiran ini. Kita harus dapat bergerak bersama, melawan tindakan pemerintah yang akan mengekang dan mengendalikan informasi. Mari kita bersama menggagalkan eksperimen pemerintah yang satu ini. Sudah cukup media cetak dan elektronis saja yang dikuasai oleh tangan-tangan pemerintahan, jangan sampai tangan-tangan kotor itu ikut mencekik media internet.<br /><br />Mari kita bersama mengentaskan kebodohan yang disuapkan oleh pemerintah agar rakyatnya tetap dalam kegelapan dan mudah diatur. Mulailah rajin menulis di media internet, suarakan aspirasi Anda semua. Mari berbagi ilmu, sekecil apapun itu, melalui internet. Ilmu dibagikan akan semakin bertambah.<br /><br />Kepada pemerintah NKRI, kalian tidak akan mampu membodohi kami terus-menerus. Janji-janji manis dari mulut kalian sudah bosan kami dengar. Kami sangat kasihan dengan kalian yang sangat kelaparan, sehingga aspal, minyak tanah, sembako, bahkan makanan jatah rakyat kecil pun ikut kalian makan sendiri. Tak usah mengalihkan perhatian kami ke masalah-masalah sepele seperti pemblokiran internet ini. Kebusukan pasti akan tercium juga, walau susah payah kalian sembunyikan.<br /><br />Bandung, 10 April 2008 14:11 WIBDonny Kurniahttp://www.blogger.com/profile/01140311188040344376noreply@blogger.com0