Arsip untuk Kategori 'Programming'

19
Mar
09

membuat grafik chart di php menggunakan google chart api

Sebelumnya saya sudah posting tulisan mengenai cara membuat chart menggunakan PHPlot pada php melalui artikel “Membuat grafik chart di php menggunakan PHPlot”, sekarang kita coba bermain-main chart di php lagi menggunakan Google Chart API.

Cara penggunaannya sangat sederhana dan tidak memerlukan instalasi library tertentu di script php Anda, yang perlu dilakukan hanyalah mengakses alamat http://chart.apis.google.com/chart dengan melewatkan parameter-parameter yang sudah disediakan. Sebagai contoh, mari kita lihat contoh berikut ini:

chart1

Pie chart di atas muncul setelah kita menuliskan URL berikut ini di browser Anda:

http://chart.apis.google.com/chart?cht=p3&chd=t:60,40&chs=250×100&chl=Hello|World

Pada contoh URL di atas, kita melewatkan beberapa parameter ke alamat http://chart.apis.google.com/chart, yaitu: chs, chd, cht dan chl. Untuk penjelasannya kurang lebih sebagai berikut:

  • http://chart.apis.google.com/chart? merupakan lokasi Chart API
  • & memisahkan parameter
  • chs=250x100 merupakan ukuran dari chart (dalam pixel)
  • chd=t:60,40 merupakan data dari chart yang ditampilkan
  • cht=p3 merupakan tipe chart
  • chl=Hello|World merupakan label chart

Untuk penggunaannya kita tinggal memasukkan URL diatas ke dalam tag <img> sebagai berikut:

<img src="http://chart.apis.google.com/chart? 
chs=250x100 
&amp;chd=t:60,40 
&amp;cht=p3 
&amp;chl=Hello|World" 
alt="Sample chart" />

*Pastikan untuk mengganti karakter ampersand (&) menjadi &amp;

 

Perlu diketahui bahwa Google Chart API akan menghasilkan gambar dengan format PNG. Beberapa tipe chart yang bisa dihasilkan adalah line, bar, pie, venn diagram, scatter plot, radar, maps, Google-o-meter dan QR codes. Berikut beberapa contoh chart yang bisa dihasilkan. :)

chart2

 chart3 chart4

 

Untuk ukuran gambarnya, Google Chart API hanya mengijinkan maksimal 300.000 pixel. Itu artinya, hasil perkalian nilai parameter chs tidak boleh melebihi dari angka 300.000. Misalnya angka 1000×300, 300×1000, 600×500, 800×375 dan 375×800 masih diperbolehkan karena tidak melebihi 300.000, tapi nilai 800×600 tidak diperbolehkan karena menghasilkan angka 480.000 pixel.

Untuk manual lengkapnya, silahkan mengunjungi alamat http://code.google.com/apis/chart/. Disana dijelaskan semua parameter yang tersedia untuk menghasilkan tipe chart yang diinginkan.

Satu-satunya kelemahan dari Google Chart API ini adalah harus selalu terhubung ke internet. Untuk sistem yang hanya bisa diakses lokal, sepertinya PHPlot masih jadi pilihan utama. Atau mungkin Anda bisa menggunakan Open Flash Chart biar lebih cantik lagi karena menghasilkan chart berbasis flash. Tunggu saja tulisan berikutnya… ;)

Sedangkan kelebihan Google Chart API (seperti yang sudah disebutkan di bagian awal) adalah kita tidak perlu menginstalasi modul-modul tertentu ke script php/html kita.

Semoga bermanfaat…

14
Feb
09

Menjadikan form “Always On Top” di Delphi

Udah lama ga ngoprek Delphi, jadi agak2 lupa & lama nyambungin otak ke lingkungan IDE Delphi. Banyak juga fitur-fitur standar Delphi yg lupa juga. Apalagi setelah pindah ke Delphi 2007, cukup drastis lah perubahannya (sebelumnya pake Delphi 7).

Sesuai dengan judulnya, kmaren ada kerjaan lama yg mau direvisi dikit. Jadi pengennya form utamanya di set ke “always on top”. Pusing juga cari2 di properties formnya… akhirnya setelah googling sana-sini, ketemu juga caranya. Jadi intinya, kita memanfaatkan fungsi SetWindowPos() yg ada di unit Windows. Sintaks lengkapnya adalah sebagai berikut:

BOOL SetWindowPos(     
    HWND hWnd,
    HWND hWndInsertAfter,
    int X,
    int Y,
    int cx,
    int cy,
    UINT uFlags
);

Keterangan:

  • hWnd: handle dari form
  • hWndInsertAfter: yg akan menentukan form kita itu akan “always on top” atau nggak
  • X, Y: koordinat form
  • cx, cy: ukuran form
  • uFlags: flag yg berhubungan dengan ukuran dan penempatan posisi form.

Sorry ya, lg males translate… jadi untuk detilnya silahkan liat saja di help-nya Delphi… :p

Ya untuk lebih singkatnya, cara pakai fungsi tersebut adalah dengan cara meletakkannya di event OnShow() milik form yg bersangkutan.

SetWindowPos(Self.Handle,
HWND_TOPMOST,
0, 0, 0, 0,
SWP_NOMOVE or SWP_NOSIZE or SWP_SHOWWINDOW);

Hasilnya bisa dicoba sendiri… ;)

02
Jun
08

Lupa Password mysql di Windows?

Pernah ga sih lupa password mysql? Klo cuma menangani 1-2 server sih ga masalah, tapi klo dah banyak terkadang lupa juga tuh sama. Saya pernah loh suatu hari lupa password mysql. Ngeselin banget. Apalagi pas diburu2… wuih bener2 bikin jengkel.

Alhamdulillah ada mister google. Setelah beberapa menit ngubek2 google… akhirnya ketemu juga cara untuk me-restore password mysql yang kelupaan itu (http://www.mydigitallife.info/2006/04/23/reset-the-root-password-of-mysql-server/). Berikut langkah2nya:

  1. Pastikan kita masuk ke Windows semagai Administrator.
  2. Jika mysql sedang berjalan, tentunya harus dihentikan dulu donk.
  3. Sekarang, buatlah file teks biasa yang berisi baris:
  4. SET PASSWORD FOR 'root@localhost' = PASSWORD('PasswordBaru');

    Simpanlah dengan nama file apa saja. Untuk memudahkan, simpan saja di root drive, misalnya C:\mysql-reset.txt

  5. Dengan asumsi mysql diinstal di C:\mysql, jalankan perintah berikut ini di command-prompt:
  6. C:\> C:\mysql\bin\mysql-nt -init-file=C:\mysql-reset.txt
  7. Restart mysql.
  8. Silahkan konek ke mysql dengan menggunakan PasswordBaru.

Saya sudah coba dan berhasil. Silahkan mencoba.

22
Mei
08

Object vs Class

Dalam konsep berorientasi objek, istilah objek dan kelas merupakan hal yang mendasar. Sulit membedakannya bagi orang yang awam dalam konsep object-oriented. Penulis juga sempat bingung harus memulai dari “siapa”, objek dulu atau kelas dulu. Akhirnya dengan melewati renungan yang panjang (dan eksplorasi beberapa sumber), diputuskan bahwa kita mulai dari objek dulu yang kemudian disusul dengan kelas.

Objek (Object)
Secara sederhana, objek merupakan segala sesuatu yang dapat dibedakan satu sama lainnya. Segala sesuatu yang ada di alam semesta ini adalah objek. Contohnya: manusia, mobil, hewan, tumbuhan, tempat, atau bahkan yang tidak bersifat fisik seperti kejadian atau konsep-konsep. Sehingga bisa disimpulkan bahwa objek tidak harus bersifat fisik, karena jika dikaitkan dengan OOP objek akan menjadi bentuk logis.

Dalam dunia nyata, objek memiliki dua karakteristik: keadaan (state) dan sifat (behavior). Contohnya, sapi memiliki keadaan (nama, warna, tanduk, berat, jenis kelamin) dan sifat (bersuara, berjalan, makan). Mobil juga memiliki keadaan (jumlah ban, status gigi, merk, jumlah penumpang) dan sifat (berjalan, belok, berhenti, merubah gigi).


Objek dalam konsep OOP masih memiliki keadaan dan sifat seperti halnya objek di dunia nyata, karena pada dasarnya objek dalam OOP merupakan representasi dari dunia nyata. Objek dalam OOP merepresentasikan keadaan melalui variabel, sedangkan sifatnya direpresentasikan menjadi method. Method merupakan suatu fungsi (sub-routine) yang berhubungan dengan objek.

Definisi: “objek merupakan penggabungan variabel-variabel dan method-method yang berhubungan dengannya.”

Setiap objek bisa dibedakan antara satu dengan yang lainnya. Misalnya, objek mobil bisa dibedakan berdasarkan merknya. Objek hewan bisa dibedakan berdasarkan jenis dan ciri fisiknya. Walaupun objek tersebut bernama sama, tetapi masih tetap bisa dibedakan. Misalnya, objek mobil Kijang bisa dibedakan berdasarkan nomor rangka, warna, tahun keluaran, tipe, nomor polisi, dan sebagainya. Objek kucing bisa dibedakan dari warna dan corak bulunya. Bahkan dua orang yang kembar pun masih bisa dibedakan satu sama lainnya, misalnya dengan nama atau ciri tertentu yang spesifik dan juga sifatnya. Konsep “pembedaan” ini disebut dengan konsep identitas.

Segala sesuatu yang diketahui oleh objek (state) dan yang bisa dilakukannya (behavior) terangkum dalam variabel dan method. Misalnya objek yang memodelkan mobil memiliki variabel yang menandakan keadaan dari objek tersebut, misalnya: jumlah ban ada 4, penumpang ada 5, sedang berjalan dengan kecepatan 60 km/jam, dan giginya sedang pada gigi 4. Variabel-variabel tersebut biasanya disebut dengan variabel instans (instance variable) karena pada dasarnya menjelaskan keadaan tertentu dari objek mobil. Sedangkan objek tertentu tersebut (mobil) dalam terminologi OOP disebut dengan instans (instance).

Seperti halnya variabel, objek mobil juga harus memiliki method untuk mengurangi kecepatan, mengerem, dan merubah gigi. Method ini disebut dengan method instans (instance method) karena method-method tersebut merubah keadaan objek mobil tersebut.

Pada hampir kebanyakan sumber, objek diilustrasikan dalam diagram sebagai berikut.

Diagram objek

Pada diagram tersebut tergambarkan bahwa variabel posisinya di tengah-tengah (inti) objek. Method-method mengelilingi dan terkesan menyembunyikan keberadaan inti objek tersebut (variabel) dari objek lain. Pembungkusan variabel-variabel objek yang dijaga oleh methodnya disebut dengan enkapsulasi (encapsulation).

Suatu objek bisa juga spesialisasikan menjadi objek yang lebih rendah tingkatnya (spesialisasi/specialization) atau bisa digeneralisasikan menjadi objek yang lebih tinggi tingkatnya (generalisasi/generalization). Untuk lebih jelasnya bisa dilihat pada gambar 3.

Mobil bisa dispesifikasikan menjadi mobil Toyota Kijang, Honda Jazz, Daihatsu Xenia, dan Hyundai Atoz. Selain itu mobil juga bisa digeneralisasi bersama-sama dengan objek pesawat terbang dan kapal laut menjadi objek alat transportasi. Begitu juga dengan manusia, hewan, dan tumbuhan bisa dikelompokkan menjadi objek mahluk hidup.

Contoh generalisasi & spesialisasi

Konsep generalisasi dan spesifikasi (gen-spec) hanyalah masalah dari mana kita “membaca” suatu objek. Gambar 2a bisa juga disebut generalisasi jika kita membacanya dari bawah ke atas.

Generalisasi sering disebut juga dengan klasifikasi, dan klasifikasi inilah yang akan mengantarkan kita pada konsep kelas yang akan kita bahas di bagian berikutnya.

Kelas (Class)
Kelas merupakan suatu konsep yang lebih tinggi lagi hierarkinya dari objek yang dihasilkan dari proses generalisasi objek-objek yang memiliki beberapa ciri yang sama. Dalam OOP, kelas merupakan suatu hasil pemodelan fakta-fakta dari suatu objek yang berguna bagi suatu aplikasi yang diprogram. Proses pemodelan fakta-fakta tersebut disebut dengan abstraksi.

Proses abstraksi sangat penting ketika kita melakukan analisa sesuatu dari dunia nyata agar bisa dimodelkan menjadi bentuk logis yang dimengerti oleh aplikasi/komputer. Misalnya, untuk memodelkan mahasiswa, kita cukup memasukkan nama, alamat, tempat lahir, tanggal lahir, telepon, orang tua, dan sebagainya.

Perlu dicatat bahwa proses abstraksi hanya memasukkan fakta-fakta yang berguna (penting) saja bagi aplikasi yang bersangkutan. Misalnya pada objek mahasiswa tadi, kita belum tentu perlu memasukkan warna mata, berat badan, ukuran sepatu, bentuk wajah, bentuk hidung, warna kulit, dan lain-lain yang tidak ada hubungannya dengan kegiatan perkuliahan nantinya di universitas yang bersangkutan.

Fakta-fakta yang dimodelkan bisa berupa ciri dan fungsi dari suatu objek. Pada kelas hasil abstraksi, ciri-ciri tadi akan berubah menjadi data yang memiliki tipe, dan fungsi akan lebih sering disebut sebagai method. Kadang-kadang data juga disebut dengan variabel instan.

Sehingga bisa ditarik kesimpulan sederhana, bahwa kelas merupakan suatu metode logis yang mengorganisir/menggabung data dan method pada struktur yang sama.

Perbedaan Objek dan Kelas
Setelah melalui penjelasan tentang objek dan kelas di atas, kita bisa simpulkan perbedaan antara keduanya.

Kelas adalah sesuatu yang menjelaskan ciri-ciri secara umum dari suatu objek, termasuk apa-apa yang bisa dilakukan objek tersebut. Sedangkan objek adalah keadaan tertentu dari suatu kelas, atau sering juga disebut dengan instans dari kelas.

Mari kita simak kalimat singkat berikut untuk lebih memperdalam pemahaman kita tentang objek dan kelas:

“Seekor kucing Persia memiliki empat ekor anak.”

Kalimat tersebut mengisyaratkan bahwa kucing Persia merupakan kelasnya, sedangkan anak-anaknya merupakan objek. Dengan kata lain, jika seekor kucing Persia tersebut memiliki empat anak, berarti dia telah membuat empat buah objek (instans) dari kelas kucing Persia. Setiap anak kucing memiliki cirinya tersendiri. Ada yang berbulu putih, kuning hitam, atau campuran hitam kuning. Selain itu ada yang memiliki ekor panjang sempurna, panjang bengkok, pendek, ekor “keriting”, dan sebagainya. Dan jenis kelaminnya juga ada beberapa yang jantan dan ada juga yang betina. Tetapi walaupun berbeda dalam hal ciri-ciri fisiknya, harus diingat bahwa semuanya tetaplah kucing Persia.

Semoga dengan tulisan yang singkat ini bisa memperdalam pemahaman Anda mengenai objek dan kelas.

*Tulisan ini pertama kali dipublikasikan di website sony-ak.com

26
Jul
07

Buat Grafik Chart di PHP menggunakan phplot

pie1

Bisa lihat grafik pie disamping ini? Awalnya bingung banget gimana caranya bikin grafik chart kaya gitu di PHP. Pokoknya ga kebayang deh gimana caranya.

Tapi, setelah googling sana-sini… akhirnya ditemukanlah yang namanya PHPlot.

PHPlot adalah suatu kelas PHP untuk membuat chart untuk keperluan ilmiah maupun bisnis. Persyaratannya mudah banget. Kita hanya butuh minimal PHP versi 4.3.0. Kemudian kita juga perlu mengaktifkan GD extension. Jika bingung apakah PHP yang sedang digunakan sudah mengaktifkan GD extension atau belum, silahkan buat file PHP yang diberi nama phpinfo.php misalnya, kemudian simpan disembarang tempat yang bisa diakses di web server:

<?php phpinfo(); ?>

Buka file tersebut melalui browser, kemudian akan tampil konfigurasi PHP. Carilah tabel yang judulnya ‘gd’ seperti gambar di bawah ini:gdinfo

Jika tidak ditemukan, berarti PHP Anda belum memiliki GD extension. Silahkan cari di website PHP untuk mendapatkan informasi mengenai bagaimana mengaktifkannya.

Penggunaan PHPlot juga sangat mudah, apalagi didukung dengan dokumentasi yang lengkap. Untuk menampilkan chart pie di gambar atas saja, hanya diperlukan script PHP sebagai berikut:

<?php
# PHPlot Example: Pie/text-data-single
require_once ‘phplot.php’;

# The data labels aren’t used directly by PHPlot.
# They are here for our
# reference, and we copy them to the legend below.
$data = array(
  array(‘Australia’, 7849),
  array(‘Dem Rep Congo’, 299),
  array(‘Canada’, 5447),
  array(‘Columbia’, 944),
  array(‘Ghana’, 541),
  array(‘China’, 3215),
  array(‘Philippines’, 791),
  array(‘South Africa’, 19454),
  array(‘Mexico’, 311),
  array(‘United States’, 9458),
  array(‘USSR’, 9710),
);

$plot =& new PHPlot(800,600);
$plot->SetImageBorderType(‘plain’);

$plot->SetPlotType(‘pie’);
$plot->SetDataType(‘text-data-single’);
$plot->SetDataValues($data);

# Set enough different colors;
$plot->SetDataColors(array(‘red’, ‘green’, ‘blue’,
        ‘yellow’, ‘cyan’, ‘magenta’, ‘brown’,
        ‘lavender’, ‘pink’, ‘gray’, ‘orange’));

# Main plot title:
$plot->SetTitle("World Gold Production, 1990\n".
                "(1000s of Troy Ounces)");

# Build a legend from our data array.
# Each call to SetLegend makes one line as:
# "label: value".
foreach ($data as $row)
  $plot->SetLegend(implode(‘: ‘, $row));

$plot->DrawGraph();
?>