Selasa, Februari 26, 2008

Hari terkahir tugas di Jakarta

Malam ini (26 Feb 2008) hari terakhir saya tugas di jakarta, capek juga nih. Sejak 12 Feb 2008 lalu saya data di jakarta hampir tiap hari tidur larut malam. Itulah tugas dan kerja, untuk mencapai keberhasilan bukanlah satu perkara yang mudah. Tapi saya bersyukur kepada Tuhan, semua berkat kuasa dan anugerahNya sehingga saya dapat menyelesaikan tugas ini. Sebenarnya tugas dan pekerjaan ini belum selesai 100%. Untuk hari yang terakhir ini, saya merasakan ada kuasaNya yang turut bekerja disaat saya sedang menyelesaikan pekerjaan saya. Betapa tidak, dalam hitungan logika manusia tugas yang saya kerjakan ini bakalan tidak selesai hari ini (26 Feb 2008). Tapi toh bisa juga selesai seperti yang di targetkan. Terima kasih Tuhan Yesus atas kuasa roh kudus yang telah kau curahkan untuk selalu menyertaiku. Pimpin langkahku untuk mencapai cita-cita besarku. I miss manado, I miss my beatiful wife Lanny, I miss my sweet angie. GOD bless us.

Membuat Web CMS Sendiri dengan PHP (1. Menyiapkan Database)

Perlengkapan

  1. Komputer untuk kerja
  2. Web Server termasuk PHPnya
  3. Database Server MySQL
  4. Text Editor Favorit (notepad,wordpad dll)
  5. Web Hosting + Domain (optional)
Untuk Webserver PHP dan MySQL bisa menggunakan XAMPP http://www.apachefriends.org/en/xampp.html Jika anda menggunakan XAMPP silahkan install berdasarkan petunjuk XAMPP. Artikel ini hanya membahas tentang PHP Code, jadi diasumsikan anda sudah memenuhi perlengkapan diatas.

Konfigurasi Database

Membuat Database Dengan MySQL Client shell> CREATE DATABASES mycms; atau gunakan phpMyAdmin jika anda menggunakan XAMPP
Masukkan nama database kemudian klik 'Create'
Membuat Table User
CREATE TABLE `cms_user` ( `id` bigint(9) unsigned zerofill NOT NULL auto_increment, `username` varchar(20) default NULL, `password` varchar(80) default NULL, `fullname` varchar(80) default NULL, `email` varchar(200) default NULL, `date_register` datetime NOT NULL default '2008-01-01 00:00:00', `last_login` datetime NOT NULL default '2008-01-01 00:00:00', `last_ip` varchar(100) default NULL, `level` int(3) NOT NULL default '1', `gender` enum('M','F') NOT NULL default 'M', `date_of_birth` date default '0000-00-00', `address` text, `province` varchar(100) default NULL, `zipcode` varchar(5) default NULL, `country` varchar(100) default NULL, `phonehome` varchar(50) default NULL, `handphone` varchar(50) default NULL, `phoneoffice` varchar(50) default NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`), UNIQUE KEY `email` (`email`) ) ENGINE=InnoDB;
klik link SQL di phpMyAdmin, kemudian ketik code diatas dan klik 'GO' Seperti cara sebelumnya lewat link SQL masukkan kode-kode berikut: Membuat Table Kategori Konten
CREATE TABLE `cms_content_category` ( `id` bigint(6) unsigned NOT NULL auto_increment, `parent_id` bigint(6) unsigned default '0', `name` varchar(200) default NULL, `auth_level_view` int(3) unsigned default '0', `auth_level_post` int(3) unsigned default '99', `status_category` int(2) default '1', `language` varchar(80) NOT NULL default 'bahasa', `link_module` varchar(80) default NULL, `position` enum('mtop','mleft','mright','no') NOT NULL default 'mtop', `default_content` bigint(15) unsigned NOT NULL default '0', `order` bigint(6) default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Membuat Table Konten
CREATE TABLE `cms_content` ( `id` bigint(12) unsigned NOT NULL auto_increment, `name` varchar(80) default NULL, `category` bigint(6) unsigned default NULL, `description` longtext, `date_post` datetime NOT NULL default '2008-01-01 00:00:00', `date_edit` datetime NOT NULL default '2008-01-01 00:00:00', `flag_view` int(3) default '1', `author` bigint(9) unsigned zerofill default NULL, `language` varchar(80) NOT NULL default 'bahasa', `flag_default` tinyint(3) default '0', PRIMARY KEY (`id`), KEY `category` (`category`), KEY `author` (`author`), CONSTRAINT `cms_content_ibfk_1` FOREIGN KEY (`category`) REFERENCES `cms_content_category` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `cms_content_ibfk_2` FOREIGN KEY (`author`) REFERENCES `cms_user` (`id`) ON DELETE SET NULL ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Membuat Table Vote
CREATE TABLE `cms_vote` ( `id` bigint(5) unsigned NOT NULL auto_increment, `description` varchar(200) default NULL, `vote_start` datetime default NULL, `vote_end_interval` int(3) unsigned default '0', `vote_flag_status` int(3) unsigned default '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Membuat Table Vote List
CREATE TABLE `cms_vote_list` ( `id` bigint(9) unsigned NOT NULL auto_increment, `id_vote` bigint(5) unsigned default NULL, `description` varchar(40) default NULL, `hit` bigint(9) unsigned NOT NULL default '0', PRIMARY KEY (`id`), KEY `id_vote` (`id_vote`), CONSTRAINT `cms_vote_list_ibfk_1` FOREIGN KEY (`id_vote`) REFERENCES `cms_vote` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Ok, itu dulu persiapan databasenya. Kalo ada yang kurang akan dilanjutkan pada sesi berikutnya.

Jumat, Februari 22, 2008

Membuat Grafik Bar dengan PHP


Copy code berikit dan Simpan file ini dengan nama class.wchar.php
<?php
  /*
  W.Chart By Stieven R. Kalengkian
  All Right Reserved 
  Copyright (c) 2008
  Free for Personal use
  */
  class wchart {
  var $kanvas;
  var $kanvas_width_master   = 400;
  var $kanvas_height_master   = 300;
  var $kanvas_free = 50;
  var $max_data = 5000;
  var $kanvas_legend_height = 100;
  var $kanvas_legend_width = 100;
  var $string_head = "Wow!! Chart";
  var $space = 15;
 function wchart($w,$h,$f=50,$m=5000,$g=10) {
  $this->kanvas_width_master = $w;
  $this->kanvas_height_master = $h;
  if ($f < 40) { $f = 40; }
  $this->kanvas_free = $f;
  $this->max_data = $m;
  $this->grid = $g;
  }
  
  function set_title($t) {
  $this->string_head=$t;
  $string_foot="Generated ".date("M, d Y h:i:sa")." GCM Graph";
  imagestring($this->kanvas,2,($this->kanvas_width_master-(strlen($string_foot)*6))/2,$this->kanvas_height_master-15,$string_foot,$this->dgrey);
  imagestring($this->kanvas,5,($this->kanvas_width_master-(strlen($this->string_head)*9))/2,15,$this->string_head,$this->black);
  }
  
  function make_kanvas() { 
  $this->kanvas = imagecreatetruecolor($this->kanvas_width_master+$this->kanvas_legend_width,$this->kanvas_height_master+$this->kanvas_legend_height);
  
  $this->kanvas_height = $this->kanvas_height_master - ($this->kanvas_free*2);
  $this->kanvas_width = $this->kanvas_width_master - ($this->kanvas_free);
  $this->start_x = $this->kanvas_free;
  $this->end_x = $this->kanvas_width;
  $this->start_y = $this->kanvas_free;
  $this->end_y = $this->kanvas_height;
  
  $this->red=imagecolorallocate($this->kanvas,0xFF,0x00,0x00);
  $this->black=imagecolorallocate($this->kanvas,0x00,0x00,0x00);
  $this->green=imagecolorallocate($this->kanvas,0x00,0xFF,0x00);
  $this->white=imagecolorallocate($this->kanvas,0xFF,0xFF,0xFF);
  $this->blue=imagecolorallocate($this->kanvas,0x00,0x00,0xFF);
  $this->grey=imagecolorallocate($this->kanvas,0xF6,0xF6,0xF6);
  $this->dgrey=imagecolorallocate($this->kanvas,0xCF,0xCF,0xCF);
  imagefill($this->kanvas,0,0,$this->white);
  imagerectangle($this->kanvas,1,1,$this->kanvas_width_master-1+$this->kanvas_legend_width,$this->kanvas_height_master-1+$this->kanvas_legend_height,$this->black);
  }
  
  function make_grid($g = 10) {
  $dataPersen = $this->max_data/$g;
  $maxPersen = $dataPersen*$g;
  $gridScale = round(($this->kanvas_height)/$g);
  for ($i = 0; $i <= $g; $i++) {
  imageline($this->kanvas,$this->start_x,$gridScale*$i+$this->kanvas_free,$this->end_x,$gridScale*$i+$this->kanvas_free,$this->grey);
  }
  
  $gs = round(($this->kanvas_width-$this->kanvas_free)/$g);
  $gridV = round(($this->kanvas_width-$this->kanvas_free)/$gs);
  for ($i = 0; $i <= $gridV; $i++) {
  imageline($this->kanvas,$this->start_x+$i*$gs,$this->start_y,$this->start_x+$i*$gs,$this->end_y+$this->kanvas_free,$this->grey);
  }
  imageline($this->kanvas,$this->start_x,round(($this->kanvas_height)/2)+$this->kanvas_free,$this->end_x,round(($this->kanvas_height)/2)+$this->kanvas_free,$this->dgrey);
  imageline($this->kanvas,$this->start_x,$this->end_y+$this->kanvas_free,$this->end_x,$this->end_y+$this->kanvas_free,$this->black);
  imageline($this->kanvas,$this->start_x,$this->start_y,$this->start_x,$this->end_y+$this->kanvas_free,$this->black);
  for ($i = 0; $i <= $g; $i++) {
  imagestring($this->kanvas,2,$this->start_x-($this->start_x-10),$gridScale*$i-5+$this->kanvas_free,round($maxPersen-($dataPersen*$i),2),$this->black);
  }
  }
  
  function polygon($arr,$filled = 0) {
  if ($filled == 0 ) {
  imagepolygon($this->kanvas,$arr,round(count($arr)/2),$this->red);
  } else {
  imagefilledpolygon($this->kanvas,$arr,round(count($arr)/2),$this->red);
  }
  }
  
  function bar($data,$text,$t3d=0) {
  $color[0]=imagecolorallocate($this->kanvas,0x00,0xFF,0x00);
  $color[1]=imagecolorallocate($this->kanvas,0xFF,0x00,0x00);
  $color[2]=imagecolorallocate($this->kanvas,0x00,0x00,0xFF);
  $color[3]=imagecolorallocate($this->kanvas,0x99,0x00,0x00);
  $color[4]=imagecolorallocate($this->kanvas,0x99,0x00,0x99);
  $color[5]=imagecolorallocate($this->kanvas,0xFF,0x66,0x00);
  $color[6]=imagecolorallocate($this->kanvas,0x33,0x33,0x00);
  $color[7]=imagecolorallocate($this->kanvas,0xFF,0x66,0x00);
  $color[8]=imagecolorallocate($this->kanvas,0x00,0x66,0x00);
  $color[9]=imagecolorallocate($this->kanvas,0xFF,0x66,0xFF);
  $color[10]=imagecolorallocate($this->kanvas,0x33,0x33,0xcc);
  if ($t3d == 1) { $this->bar3d($data,$text); }
  $space=$this->space;
  $jarak=round(($this->end_x-$this->kanvas_free-(count($data)*10))/count($data));
  $c=0;
  for ($i=0;$i<count($data);$i++) {
  $titik=round($data[$i]/$this->max_data*($this->end_y))-($this->kanvas_free);
  $x1 = $this->start_x+$space+($i*$jarak);
  $x2 = $x1+$jarak-$space;
  $y1 = $this->end_y-$titik;
  $y2 = $this->end_y+($this->kanvas_free-1);
  $tt=$data[$i];
  $tl=round(strlen($text[$i])*6)/2;
  $xt=$x1;
  if ($c > count($color)) { $c=0; }
  imagefilledrectangle($this->kanvas,$x1,$y1,$x2,$y2,$color[$c]);
  $string="$tt";
  if ($this->text_persen == 1) { $string="$tt%"; }
  //imagestring($this->kanvas,2,$x1+5,$y1-$space-30,$tt,$this->black);
  imagestring($this->kanvas,2,$xt+5,$y1-15-$space,$string,$this->black);
  $ls=10; $sp=5;
  $ly=$this->kanvas_height_master+($i*($ls+$sp));
  imagefilledrectangle($this->kanvas,$this->start_x,$ly,$this->start_x+10,$ly+$ls,$color[$c]);
  imagestring($this->kanvas,2,$this->start_x+20,$ly-1,$text[$i],$this->black);
  $c++;
  }
  }
  
  function bar3d($data,$text) {
  $color[0][0]=imagecolorallocate($this->kanvas,0x00,0x99,0x00);
  $color[0][1]=imagecolorallocate($this->kanvas,0x00,0x33,0x00);
  $color[1][0]=imagecolorallocate($this->kanvas,0x99,0x00,0x00);
  $color[1][1]=imagecolorallocate($this->kanvas,0x33,0x00,0x00);
  $color[2][0]=imagecolorallocate($this->kanvas,0x00,0x00,0x99);
  $color[2][1]=imagecolorallocate($this->kanvas,0x00,0x00,0x33);
  $color[3][0]=imagecolorallocate($this->kanvas,0x66,0x00,0x00);
  $color[3][1]=imagecolorallocate($this->kanvas,0x11,0x00,0x00);
  $color[4][0]=imagecolorallocate($this->kanvas,0x66,0x00,0x66);
  $color[4][1]=imagecolorallocate($this->kanvas,0x11,0x00,0x11);
  $color[5][0]=imagecolorallocate($this->kanvas,0x99,0x33,0x00);
  $color[5][1]=imagecolorallocate($this->kanvas,0x66,0x00,0x00);
  $color[6][0]=imagecolorallocate($this->kanvas,0x21,0x21,0x00);
  $color[6][1]=imagecolorallocate($this->kanvas,0x10,0x10,0x00);
  $color[7][0]=imagecolorallocate($this->kanvas,0x99,0x33,0x00);
  $color[7][1]=imagecolorallocate($this->kanvas,0x66,0x00,0x00);
  $color[8][0]=imagecolorallocate($this->kanvas,0x00,0x33,0x00);
  $color[8][1]=imagecolorallocate($this->kanvas,0x00,0x11,0x00);
  $color[9][0]=imagecolorallocate($this->kanvas,0x99,0x33,0x99);
  $color[9][1]=imagecolorallocate($this->kanvas,0x33,0x11,0x33);
  $color[10][0]=imagecolorallocate($this->kanvas,0x33,0x33,0xFF);
  $color[10][1]=imagecolorallocate($this->kanvas,0x00,0x00,0xCC);
  $space=$this->space;
  $p=$space-2;
  $jarak=round(($this->end_x-$this->kanvas_free-(count($data)*10))/count($data));
  $c=0;
  for ($i=0;$i<count($data);$i++) {
  $titik=round($data[$i]/$this->max_data*($this->end_y))-($this->kanvas_free);
  $x1 = $this->start_x+$space+($i*$jarak);
  $x2 = $x1+$jarak-$space;
  $y1 = $this->end_y-$titik;
  $y2 = $this->end_y+($this->kanvas_free-1);
  $tt=$data[$i];
  $tl=round(strlen($text[$i])*6)/2;
  $xt=$x1;
  if ($c > count($color)) { $c=0; }
  
  $point=array($x1,$y1,$x2,$y1,$x2+$p,$y1-$p,$x1+$p,$y1-$p);
  $numpoint=round(count($point)/2);
  imagefilledpolygon($this->kanvas,$point,$numpoint,$color[$c][0]);
  $point=array($x2,$y1,$x2+$p,$y1-$p,$x2+$p,$y2-$p,$x2,$y2);
  $numpoint=round(count($point)/2);
  imagefilledpolygon($this->kanvas,$point,$numpoint,$color[$c][1]);
  $c++;
  }
  }
  
  function cstring($x,$y,$string,$f=2) {
  imagestring($this->kanvas,$f,$x,$y,$string,$this->black);
  }
  
  function draw() {
  header("Content-type: image/png");
  imagepng($this->kanvas);
  }
  }
?>
Gunakan kode berikut untuk menggunakan class.wchart.php, tapi ingat jangan lupa include file terlebih dulu
<?php
include "class.wchart.php";
$data=array(100,50,20,30,50);
$text=array("satu","dua","tiga","empat","lima");
$chart = new wchart(600,300,40,100);
$chart->make_kanvas();
$chart->make_grid(10);
$chart->set_title("My Chart Demo for Me");
$chart->bar($data,$text);
$chart->draw();
?>

Rabu, Februari 20, 2008

Using XML in MySQL 5.1 and 6.0

Dalam artikel ini akan dibahas penggunaan fitur baru di MySQL 5.1 dan 6.0 yaitu penggunaan fungsi XML. Sebelumnya mohon maaf karena hanya dibahas untuk beberapa bagian penting saja. Untuk lengkapnya anda bisa membacanya disini MySQL AB

Gunakan option --xml, option ini berlaku untuk client mysql dan mysqldump. Dengan fungsi ini hasil query akan ditampilkan dengan format XML. Berikut Contohnya dan hasilnya:

shell> mysql -uroot -e "SHOW VARIABLES LIKE '%version%'" --xml

<?xml version="1.0"?>

<resultset statement="SHOW VARIABLES LIKE '%version%'" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<row> <field name="Variable_name">protocol_version</field> <field name="Value">10</field> </row>

<row>

<field name="Variable_name">version</field> <field name="Value">5.1.22-beta-debug</field> </row>

<row>

<field name="Variable_name">version_comment</field> <field name="Value">Source distribution</field> </row>

<row>

<field name="Variable_name">version_compile_machine</field> <field name="Value">x86_64</field> </row>

<row>

<field name="Variable_name">version_compile_os</field> <field name="Value">suse-linux-gnu</field> </row> </resultset>

Sedangkan jika tidak menggunakan Option --xml hasilnya:
shell> mysql -uroot -e "SHOW VARIABLES LIKE '%version%'"
+-------------------------+---------------------+
| Variable_name           | Value               |
+-------------------------+---------------------+
| protocol_version        | 10                  |
| version                 | 5.1.22-beta-debug   |
| version_comment         | Source distribution |
| version_compile_machine | x86_64              |
| version_compile_os      | suse-linux-gnu      |
+-------------------------+---------------------+

Ataupun dapat dilakukan untuk query SELECT, contohnya :

shell> mysql -uroot --xml -e 'SELECT * FROM xmltest.cities ORDER BY name'

<resultset statement="SELECT * FROM xmltest.cities ORDER BY name" xsi="http://www.w3.org/2001/XMLSchema-instance">

<row> <field name="name">Ciudad de Méico</field> <field name="country">Mexico</field> <field name="population">8591309</field> </row>

<row>

<field name="name">Istanbul</field> <field name="country">Turkey</field> <field name="population">8787958</field> </row>

<row>

<field name="name">Jakarta</field> <field name="country">Indonesia</field> <field name="population">9604900</field> </row>

<row>

<field name="name">Karachi</field> <field name="country">Pakistan</field> <field name="population">9269265</field> </row>

<row>

<field name="name">Moscow</field> <field name="country">Russian Federation</field> <field name="population">8389200</field> </row>

<row>

<field name="name">Mumbai (Bombay)</field> <field name="country">India</field> <field name="population">10500000</field> </row>

<row>

<field name="name">New York</field> <field name="country">United States</field> <field name="population">8008278</field> </row>

<row>

<field name="name">São Paulo</field> <field name="country">Brazil</field> <field name="population">9968485</field> </row>

<row>

<field name="name">Seoul</field> <field name="country">South Korea</field> <field name="population">9981619</field> </row>

<row>

<field name="name">Shanghai</field> <field name="country">China</field> <field name="population">9696300</field> </row> </resultset>

Perlindungan Konten Internet (Lindungi Blogger Karya Sendiri)

Asyikkk.... sekarang kita bisa tenang dan bahagia, karena untuk semua konten yang sudah di publish telah memiliki perlindungan hukum. Jadi kita tidak perlu takut lagi konten kita di curi. Mau tahu ????? "Menurut Andi Noorsaman Sommeng, Dirjen HaKI Departemen Hukum dan HAM, keuntungan dari mengembangkan konten di internet memang bisa berpromosi secara gratis. Meski begitu, pencipta bisa saja menuntut pihak yang mengkomersilkan konten buatannya." Hak tersebut dilindungi dalam UU 19 tahun 2002 tentang Hak Cipta, yang ancaman maksimalnya denda Rp 5 miliar dan penjara sebulan. "Jadi begitu ada publikasi, tanpa harus mendaftar ke Depkumham perlindungannya sudah ada," imbuh Andi. Silahkan baca selengkapnya disini

Software Bajakan?

Penegakkan hukum terkait penggunaan software ilegal kembali menyeruak. Kali ini, Polsek Serpong menggulung 11 perusahaan sekaligus menyita sejumlah komputer yang terdapat software bajakan tersebut. Software besutan Microsoft, Windows dan Microsoft Office, masih menjadi software primadona bagi para pelaku. Terbukti, kedua software tersebut paling banyak ditemukan di dalam komputer pelaku, selain antivirus Norton buatan Symantec dan Adobe Photoshop. Demikian di kutip dari www.detikinet.com Banyak yang berpikir Software Bajakan hanya menggunakan OS Microsoft Windows XP/2003/Vista yang bajakan, sehingga banyak juga yang keliru mereka hanya membeli OS Microsoft Windows sedangkan untuk Aplikasi yang terinstall seperti Office: MS Word, Excel, PowerPoint; Antivirus: Symantec Norton, McAfee; Graph/Photo Editor: Adobe Photo Shop, Corel Draw, AutoCad dll tetap saja menggunakan bajakan. Kalau seperti tetap saja di tangkap oleh pihak berwajib, benarkan ??? Jadi, kalau dihitung-hitung untuk 1 unit komputer dengan OS + Aplikasi lengkap (Office, Antivirus, Graph/Photo Editor) anda harus menyiapkan lebih dari Rp. 15 juta. So... yang mahal itu bukan hardwarenya tapi softwarenya. Di negara kita memang belum begitu menghargai akan software, apalagi software karya anak dalam negeri. Tidak heranlah Software Development / Home Software Indonesia susah berkembang untuk pasar dalam negeri. Rata-rata mereka maju dan berkembang jika pasarnya di luar Indonesia. Coba bandingkan, kalo di US dan EURO satu software sederhana saja harganya berkisar 5 - 10 juta rupiah. Di Indonesia software yang sudah begitu komplit dengan harga 10 juta dianggap mahal dan ditawarr lagi harganya :). Si pengguna software tidak pernah memperhitungkan, dengan mengeluarkan biaya 10 juta sekali bayar, dia menggunakan software tersebut untuk membantu usahanya selama usaha terus berjalan. 5 - 10 tahun kedepan sejak software digunakan cobalah dihitung antara kontribusi software dan cost terhadap software tersebut, mungkin 10 juta akan terlihat kecil nilainya. Dengan menggunakan software banyak manfaat yang kita peroleh, waktu yang lebih efisien dan efektif, informasi data yang lebih cepat dan akurat dan lain sebagainya yang dapat memberikan profit margin meningkat. Jika anda masih melakukan perkejaan secara manual, mulai sekarang walau perlahan tapi pasti, anda harus mulai beralih ke dunia Digital dan Teknologi Informasi (TI or IT). Mulanya gunakanlah software-software untuk membantu proses pekerjaan anda semisal gunakan MS - Word sebagai ganti Mesin Ketik Manual selain pekerjaan mengetik lebih cepat, bisa lebih mudah dalam editing dan hasilnya lebih rapih dan memuaskan. OK.... selamat datang di Dunia Digital.

Selasa, Februari 19, 2008

Posting Pertama

Salam, Ini adalah posting pertama di Edisi kali ini, walaupun bukan yang paling pertama. Karena blog ini sudah aktif kira antara tahun 2006 - 2007 (lupa tepatnya kapan). Tadinya kepengen bikin Blog dengan Engine sendiri, tapi sejauh ini ada indikasi bakalan ndak selesai :) so akhirnya setelah di timbang-timbang sebaiknya menggunakan Blogspot, apalagi sekarang udah join dengan Google so jadi beberapa service digooggle yang saya gunakan bisa saling dukung lah. Ok deh itu dulu ya sebagai pembuka। Ada yang lupa :) hari ini adalah hari jadian saya dengan pacar terakhir yang sekarang sudah jadi Istri. I LOVE YOU.

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...