Rabu, Agustus 20, 2008

Post Blog via Email, Every where anywhere any device

Iseng-iseng coba fitur Pengaturan > Email Blogger.com hihihi... unik
juga, kayaknya bisa di manfaatkan deh...
Rencananya pengen bikin Blog Posting menggunakan SMS Email Push

User -> Mobile Device -> SMS -> SMS Gateway -> Email Push -> Blogger.com

Baru konsep sih...
Posting ini di coba lewat script sederhana
Email push <?php mail("user.blog.post@blogger.com","JUDUL","ISI"); ?>
ISI mail di generate manual.
Rencananya ingin pake SMTP :)

Regards,
Stieven K.

MySQL Error & Can not start (2)

Kejadian berulang sama seperti sehari sebelum saya kembali ke Manado, ya lagi-lagi MySQL server error. Disc space di system kembali used 100% padahal datadir mysql sudah di pindahkan. Setelah di cek dan re-cek ternyata path backup sql masih di lokasi partisi yang kecil :) . Setelah di pindahkan akhirnya beres... Yang tetap jadi masalah datadir MySQL memakan space membengkak dari sebelumnya 15GB skarang sudah 44GB wah.. wah.... setelah di selidik one by one file di datadir mysql ternyata mysql-bin log yang menggunakan space tersebut. Hal apa yang menyebabkan demikian ?
  1. Karena saya menghidupkan server replication (Master-Slave)
  2. Query perdetik terlalu banyak dan Replication dilakukan --all-database --all-table (kebayang atau hitung sendiri, tiap 1 jam MySQL melakukan import empat CVS file masing masing berkapasitas lebih dari 100MB)
  3. Tidak membuat logrotate :(
  4. SQL Full Backup dan truncate file rentang waktu terlalu jauh (14 hari) sedangkan 1 hari sudah melalui kompresi memakan space lebih dari 1 GB
Akhirnya saya mengambil keputusan
  1. Server Replication di stop dulu.
  2. Query Import dilakukan every day
  3. Membuat logrotate untuk mysql-bin (baru logic dan konsep belum teruji)
  4. Backup SQL rentang waktu truncate 2 hari
Skarang dalam proses monitoring... mudah-mudahan tidak ada masalah lagi.

Rabu, Agustus 13, 2008

Launching Essilor Crizal A2 di Hotel Grand Melia Jakarta

Selasa 12 Agustus 2008 kemarin tepatnya pkl 18.00 WIB, saya menghadiri acara Launching Essilor Crizal A2. Acaranya keren banget.... menampilkan acara yang Hi-Tech dan sangat aktraktif, design panggung yang cool dan MC yang keren dan cantik. Acara yang di pandu Novita Angie sungguh memukau para undangan, apalagi saat launching produk Crizal A2 dengan gaya James Bond. Dan sebagai puncaknya Mulan Jameela. membawakan lagu-lagu hitsnya sampai-sampai membuat semua hadirin yang tadinya duduk langsung berdiri menuju panggung.

Selasa, Agustus 12, 2008

MySQL Error & Can not start

Sekitar pkl 8.30 WIB saya dibangunkan dengan telepon tiba-tiba terdengar suara "WEB ORDER SERVER tidak jalan" weleh.... sempat panik padahal malam sebelumnya baru selesai di test dan tidak ada masalah. Di test satu persatu ternyata Apache Server Hidup, MySQL Server hidup. Anehnya saat login ke user page browser hang, server not reply. Ada apa yaa..... Segera saya mandi dan menuju ke kantor Essilor (beruntung jarak penginapan hanya 5 menit jalan kaki). Ya benar, setelah saya cek kondisi services Apache dan MySQL masih dalam status running. Betapa terkejut ketika saya buka MySQL Administrator dan phpMyAdmin tiba muncul pesan (Errcode: 28) wow... table di database tidak bisa saya akses. Saya pun melakukan trace back aktifitas tadi malam. Malam sebelumnya yang saya lakukan
  1. Background Proses import CVS file dari Server Lab Essilor ke server WOS, schedule setiap 1 jam.
  2. Background Proses import CVS file dari Server Gudang Essilor ke Server WOS, schedule setiap 30mnt
Dalam asumsi saya mungkin terjadi memory leak atau crash DB file pada saat melakukan query, soalnya kedua proses itu bisa mencapai 500.000 (mungkin lebih) query permenitnya (dalam satu kali eksekusi). Akhirnya saya coba repair table (myisamchk) dan lakukan restart server. Apa yang terjadi saat server hidup sungguh mengejutkan MySQL tidak mau hidup dan setiap kali saya paksakan untuk start muncul pesan error
InnoDB: Unable to lock ./ibdata1, error: 11 InnoDB: Check that you do not already have another mysqld process InnoDB: using the same InnoDB data or log files.
Waduh... semakin lama saya semakin panik.... dengan asumsi diatas tadi, akhirnya saya drop databasenya dengan harapan akan merestore backup file. Saya pikir databasenya tidak berhasil di repair. Ketika lihat di manual MySQL aduh betapa bodohnya kalau dalam keadaan panik, yang bisa di repair hanya table Engine MyISAM saya lupa kalo Engine yang saya gunakan adalah InnoDB. Maka semakin paniklah saya.... dengan berbagai cara mengutak atik file my.cnf dan terus berupaya start MySQLd secara paksa tiba-tiba muncul pesan berikut:
080812 10:38:39 InnoDB: Started; log sequence number 1 3473883535 /usr/libexec/mysqld: Disk is full writing './mysql-bin.000050' (Errcode: 28). Waiting for someone to free space... Retry in 60 secs
Weleh..... ternyata.... itu toh... setelah periksa #: df Use% = 100% Astaga.... Pantas saja selalu error saat di start... saya pun mengubah config datadir ke partisi lain, awalnya datadir secara default lokasinya /var/lib/mysql (Slackware Default) dan kebutulan partisi HDD cuman 20GB. Setelah di moving dan start akhirnya berhasil... Masalah sekerang kenapa ya Databasenya bisa sampe 15GB ????? itu yang perlu di selidiki sekarang... yang penting sekarang ini Servicesnya jalan dulu...

Senin, Agustus 11, 2008

Essilor Indonesia Web Order System using TNUX Frameworks AGL Engine 2.0.1 limited

Pengembangan TNUX Frameworks AGL Engine 2.0.1 (limited) akhirnya digunakan untuk Web Order System Essilor Indonesia. Supported:
PHP4 PHP5 MVC Multiple DB's ORM DB Objects Templates Caching Validation Ajax Auth Module Modules EDP
Y Y UD N Y Y Y Y Y Y Y Y N
Y = YES; N = NO; UD=UNDER DEVELOPMENT (BELUM 100%) TNUX Frameworks untuk sementara masih digunakan untuk kalangan terbatas, mudah-mudahan dalam waktu dekat akan di release versi public (kemungkinan akan free). Satu kebanggaan buat kita adalah semua anggota tim 100% anak bangsa Indonesia dan sebagian besar dari Manado Sulawesi Utara. Satu lagi yang mungkin menjadi hambatan yaitu baru bisa bisa berjalan dengan baik di mesin Linux khusus Slackware 11 ke atas (current test on Ubuntu Server 7.x+). TNUX Frameworks saat ini dalam proses uji coba untuk Web Order System Essilor Indonesia, berikut skemanya Mohon maaf kalau tidak memberikan informasi lebih detail. Sebelumnya TNUX Frameworks sudah digunakan pada aplikasi optikal Optopro 2, dan prototype TNUX Frameworks AGL Engine 1.2 juga pernah digunakan pada CPPDA Remote Order Optopro 1. Dan dengan selesainya Project EI-WOS (Essilor Indonesia Web Order System) maka berakhir pula tugas saya di Jakarta, tapi belum bisa pulang besok hehehehhe... katanya harus mengikuti acara Launching produk (update 13/08/08) Essilor Crizal A2 yang akan dilaksanakan besok (Selasa, 12/08/2008) di Hotel Grand Melia.

Senin, Agustus 04, 2008

Handle Incoming Mail with PHP script

Dari tulisan Gijs van Tulde, hasil pencarian lewat Google.com keyword "Handle Incoming Mail with PHP script", sangatlah menarik.
Why would we want this? Well, that's a stupid question, because we don't know how to do it and it's fun. You're reading evolt because you want to learn something, aren't you? But this script could be useful. For example: * we could write our own mailing list; * we could send out a survey by email, that can be filled out by just clicking 'reply'; * we could manage parts of our site by sending commands by email; * etc...
Dan tentunya saya hanya melengkapi sedikit sekali dari artikel Gijs van Tulde, sangat jelas yang ditulis dalam artikel step by step nya, bahkan jika anda membaca bagian commentnya disitu banyak yang mendiskusikan tentang masalah yang terjadi dan bagaimana mengatasinya. Berikut adalah Script php dari artikel Gijs van Tulde, Step 3:

Since our script will function as a shell script, the first line should contain the path to the PHP CGI program. This is most likely located at /usr/bin/php of /usr/local/bin/php. This tells the operating system that this script must be parsed by PHP.

#!/usr/bin/php

The email is sent to the script through stdin. This is a special 'file' that can be reached by opening php://stdin. We will do that now and read the email.

// read from stdin
$fd = fopen("php://stdin", "r");
$email = "";
while (!feof($fd)) {
$email .= fread($fd, 1024);
}
fclose($fd);

Now we have the full text of the email in the $email variable, we can start splitting headers from body. We will do that line by line, so the first step would be splitting the email. We also empty the variables that we will fill with the From header, the Subject header, and save other information in.

// handle email
$lines = explode("\n", $email);

// empty vars
$from = "";
$subject = "";
$headers = "";
$message = "";
$splittingheaders = true;

We have just set the $splittingheaders variable to true. As long as this variable is true, and we have not yet seen an empty line, the text should be added to $headers. If we find a Subject or a From header, we will save it in the appropriate variable.

After we have seen the first empty line, we have processed the headers and can start adding the lines to $message.

for ($i=0; $i < subject =" $matches[1];" from =" $matches[1];" splittingheaders =" false;" style="font-weight: bold; color: rgb(255, 0, 0);">?>

We now have the headers, the message, the From and Subject information and can save these in a database. You could also use the mail() function to send an automatic reply. That's up to you.

Dari tulisannya saya coba satu persatu, mulai dari step 3. Mengapa Step 3 ?? ya karena sebelumnya server sudah terinstall sendmail, kebetulan menggunakan share hosting :) (Webhosting) jadi tidak perlu repot. Dari script diatas saya upload ke webhosting (sesuai dengan petunjuk webhosting mengenai pine email dengan script php) biasanya di folder home dan file php di ubah ke mode 755. Lalu saya buatkan satu email forwader yang di forward ke script php tadi. Saat di coba kirim email ke alamat forwader tersebut berjalan dengan baik, hasil parsing saya simpan ke dalam file email.txt. Tapi beberapa saat kemudian muncul pesan balasan dari server ke email saya seperti berikut : Mail delivery failed: returning message to sender. Ada apa ya ?? Akhirnya dapat sedikit informasi (lupa alamat referensinya) bahwa sendmail saat menerima email dan selesai membaca diperlukan nilai balik true (return true). Akhirnya dibagian bawah baris sebelum tanda ?> saya tambahkan return true. Dan BERHASIL... berikut contoh scriptnya: #!/usr/bin/php -q <?php // read from stdin $fd = fopen("php://stdin", "r"); $email = ""; while (!feof($fd)) { $email .= fread($fd, 1024); } fclose($fd); // handle email $lines = explode("\n", $email); // empty vars $from = ""; $subject = ""; $headers = ""; $message = ""; $splittingheaders = true; for ($i=0; $i < count($lines); $i++) { if ($splittingheaders) { // this is a header $headers .= $lines[$i]."\n"; // look out for special headers if (preg_match("/^Subject: (.*)/", $lines[$i], $matches)) { $subject = $matches[1]; } if (preg_match("/^From: (.*)/", $lines[$i], $matches)) { $from = $matches[1]; } } else { // not a header, but message $message .= $lines[$i]."\n"; } if (trim($lines[$i])=="") { // empty line, header section has ended $splittingheaders = false; } } $fp=fopen("mail.txt","w+"); fwrite($fp,"Headers\n$headers\nJudul:\n$subject\nDari:\n$from\nPesan:\n$message"); fclose($fp); return true; ?> Selanjutnya silahkan berimajinasi sendiri untuk pengembangan script ini.

IRC untuk pemula menggunakan mIRC

Mungkin ini terasa aneh buat mereka yang sudah lama didunia ini, bahkan ada yang berkata-kata dalam hati "IRC??? udah ndak zamannya lagi." Masa sih ??? menurut saya rasanya masih sangat bermanfaat, apalagi kalo ditinjau dari kelebihan dan kekurangannya setiap tipe messenger (IRC, Yahoo, ICQ dll) semua tergantung fungsi dan kebutuhan. Alasan utama IRC kenapa saya masih memilih IRC yaitu; mudah digunakan, berjalan baik walaupun bandwidth pas-pasan, bisa lebih privasi (internal server), fiturnya hampir lengkap, dapat dijalankan hampir semua OS dan semua IRC client, tidak tergantung server terentu (kalo punya server sendiri hehehe), mudah untuk conferences dalam arti lebih mudah membuat room walaupun tetap ada keterbatasannya Ok, langsung saja. Artikel ini ditujukan khusus untuk mereka yang baru mengenal IRC. Jadi apa itu IRC ? IRC = Internet Relay Chat, lebih jelasnya boleh klik deh tanya sama Om WiKi. Saat ini kita hanya membahas ruang lingkup menggunakan IRC Client (khususnya mIRC dan OS Windws XP/2003/Vista) mulai dari Download, Installasi, Konek ke Server, Join Room dan berinteraksi. Lets, Start
  1. Download IRC Client => mIRC di http://www.mirc.com/
  2. Save ke harddisk kemudian install jika download telah selesai
  3. Jalankan mIRC yang sudah terinstall kemudian masukkan informasi pada Window Dialog Option :
    • Fullname = Nama Lengkap
    • Email Address = Email
    • Nickname = nama yang akan digunakan saat chating (tidak boleh ada spasi atau karakter lain, selain huruf dan angka)
    • Alrternatif = nama lain apabila nickname sudah digunakan orang lain
    Setelah itu klik OK. Untuk memunculkan mIRC Option ini tekan Alt + O.
  4. Selanjutnya lakukan koneksi ke server dengan cara ketik pada status textbar: /server irc.dal.net (enter)
  5. Tunggu sampai tersambung dengan server, jika sudah lanjut dengan join ke room (channel). Masukkan nama room diawali dengan tanda '#' contoh: #myoom Kemudian klik join. Atau ketik pada TextBar : /join #myroom (enter)
  6. Setelah join di room anda dapat berinteraksi dengan user di dalam, atau dapat melakukan private messeges (PV) dengan cara : /query nickname pesan anda disini (enter) Contoh : /query puitis hi apa kabar ? (enter)
  7. Anda dapat mengganti nickname walaupun sedang ada dalam room maupun pv, caranya ketik: /nick nicnamebaru (enter) Contoh: /nickname stieven (enter)
  8. Untuk keluar dari room (tanpa disconnect) ketik: /part #namaroom (enter)
  9. Untuk keluar dari server (disconnect) ketik: /quit atau /exit sekaligus menutup mIRC

Aplikasi Pengenalan Wajah menggunakan PHP

Meskipun PHP bukanlah bahasa yang paling umum digunakan untuk pengenalan wajah (Python dengan pustaka seperti OpenCV dan face_recognition le...