Pengertian Windows API

05 February 2010

Windows API (Application Programming Interface) merupakan sekumpulan fungsi-fungsi eksternal yang terdapat dalam file-file perpustakaan Windows (library Windows) atau file library lainnya yang dapat digunakan oleh program. Fungsi ini dapat menangani semua yang berhubungan dengan Windows, seperti pengaksesan disk, interface printer, grafik Windows, kotak dialog (buka file, simpan file, memilih font, memilih warna, dll) Windows shell, setting sistem operasi, penanganan file, mengakses sitem registry, memainkan musik, dan sebagainya. Fungsi inni menyediakan banyak fitur-fitur standar untuk semua program yang berbasis Windows.

Hampir semua fungsi Windows API terdapat dalam direktori sistem milik Windows dan paling banyak berekstensi .DLL yang digunakan oleh sistem operasi Windows. Selain itu fungsi ini juga memastikan secara konsisten penggunaan semua sumber yang terdapat dalam Windows. File-file itulah yang disebut dengan Windows API.

Karena fungsi Windows API merupakan fungsi eksternal, maka untuk menggunakan fungsi tersebut terlebih dahulu dideklarasikan dengan perintah Declare didalam kode program. Setelah pendeklarasian fungsi selesai dilakukan, selanjutnya anda bebas untuk menggunakan fungsi tersebut layaknya bahasa Visual Basic didalam program.

Dari Berbagai Sumber.
http://gnoubdils.blogspot.com/
READ MORE - Pengertian Windows API

Membuat Polling Tanpa Database

Polling atau jajak pendapat merupakan sebuah cara untuk mengetahui jawaban yang paling banyak dipilih oleh sejumlah orang dari sejumlah opsi yang ada dari sebuah pertanyaan.
Sebenarnya dalam pembuatan polling pada website cukuplah mudah dengan tanpa menggunakan database sekalipun kita bisa membuat sebuah fasilitas polling pada website kita.

Untuk membuat sebuah polling tanpa database hal pertama yang harus kita lakukan adalah membuat terlebih dahulu sebuah file *.TXT menggunakan Notepad.
Didalam jendela Notepad isikan judul, jawaban, dan nilai awal polling yang anda buat. Contohnya :

Sistem Operasi Pilihan Anda? + Windows; Linux; Machintos; Unix + 0;0;0;0;

Simpan file tersebut dengan nama polling.txt
Kemudian masih menggunakan Notepad / anda bisa juga menggunakan Dreamweaver buatlah sebuah file php baru kemudian ketikan skrip dibawah ini untuk membuat halaman utama polling :

<?php

if(file_existx("polling.txt")) {

echo "<form method=post action=\"polling1.php\">";

$file =fopen("polling.txt", 'r');

$poll = fgets($file,4000);

fclose($file);

$data = explode("+",$poll);

echo $data[0]."<br>";

$pilihan = explode(";",$data[1]);

for($i = 0;$i < count($pilihan);$i++){

if($i == 0){

echo "<input type=radio name pil

value=$i checked>$pilihan[$i]<br>";

} else {

echo "<input type=radio name=pil

value=$i>$pilihan[$i]<br>";

}

}

echo "<input type=submit value=Vote>";

echo "</form>";

} else {

echo "Tidak ada polling";

}

?>
Simpanlah file tersebut dengan nama polling.php
Kemudian buatlah kembali sebuah file *.php yang berfungsi untuk melakukan proses penyimpanan data polling, berikut skripnya :

<?php

session_start();

if(file_exists("polling.txt")) {

$file = fopen("polling.txt",'r');

$poll = fgets($file,4000);

fclose($file);



$data = explode("+",$poll);

$pilihan = explode(";",$data[1]);

$counter = explode(";",$data[2]);



if(!$_SESSION['status']) {

$_SESSION['status']="pilih";

$counter[$pil]++;

$file = fopen("polling.txt",'w');

$poll = $data[0]."+".$data[1]."+";

for($i = 0;$i < count($pilihan);$i++) {

$poll .= $counter[$i].";";

}

fputs($file,$poll);

fclose($file);

}



echo $data[0],"<br>Pilihan anda $pilihan[$pil]<br>";

for($i = 0;$i < count($pilihan); $i++){

$jml=$jml+$counter[$i];

}

echo "<table>

<tr>

<th>Jawaban</th>

<th>Persentase</th>

<th></th>

</tr>";

for($i = 0;$i < count($pilihan); $i++){

if($jml==0){

$j=1;

} else {

$j=$jml;

}

$hasil_vote=sprintf("%01.1f",

(($counter[$i]/$j)*100));

echo "<tr>

<td>$pilihan[$i]</td>

<td>

<table>

<tr>

<td bgcolor=\"$pilihan[$i]\"

width=$hasil_vote>Â </td>

</tr>

</table>

</td>

<td>$hasil_vote %</td>

<td align=center>$counter[$i]</td>

</tr>";

}

}

?>
Simpanlah file tersebut dengan nama polling1.php
Yupz... selesai sudah... anda tinggal letakan file tersebut di localhost kemudian jalankan melalui browser anda.
Selamat mencoba...
READ MORE - Membuat Polling Tanpa Database

Membuat RSS 2.0

RSS atau really simple syndication merupakan sebuah dokumen XML yang dibangun sedemikian rupa yang akan menampilkan daftar dari sekumpulan data dan biasanya merupakan data yang terbaru, sehingga pengunjung lebih mudah untuk melihat perubahan data.

Ketika RSS dipanggil (direquest), maka akan mengembalikan dokumen XML berisi daftar data terbaru, yang nantinya di-parsing sama RSS client, dan ditampilkan pada client. Cara ini lebih mudah dan murah, karena user dapat memilih mana saja yang ingin dibaca lebih lanjut.

Dalam artikel ini akan dibahas cara membuat fitur RSS yang sederhana -banget- pada website kita. Pakai PHP tentu saja

Langkah pertama, yakinkan diri anda bahwa dokumen RSS adalah bertipe XML, jadi sedikit banyak anda mesti tau apa itu XML dan aturan mainnya.

Karena bertipe XML, output dari webserver ke client mesti menandakan hal tersebut. Banyak cara untuk itu, misalnya pake AddType pada konfigurasi Apache atau .htaccess, tapi dalam hal ini, kita gunakan fungsi Header.

Pada awal script, tuliskan seperti ini:

<?php
Header("Content-Type: text/xml");
echo '<rss version="2.0">
<channel>
<title>GnouBdilS Personal Website</title>
<link>http://www.gnoubdils.com/</link>
<description>10 Berita dan Artikel terbaru</description>
<language>en-us</language>
<pubDate>'.Date("r").'</pubDate>
<lastBuildDate>'.Date("r").'</lastBuildDate>
<generator>GnouBdilS Personal Website RSS Generator</generator>
<managingEditor>gnoubdils@gmail.com (GnouBdilS)</managingEditor>
<webMaster>gnoubdils@gmail.com (GnouBdilS)</webMaster>
';
Pada field tanggal mesti pake format RFC-822. Oleh karena itu script di atas menggunakan fungsi Date("r"), yang akan menghasilkan nilai tanggal dan jam dalam format RFC-822.
Selanjutnya, menampilkan data RSS:

$rc = mysql_query('select *,UNIX_TIMESTAMP(tanggal)
AS pubDate from berita order by tanggal desc limit 0,10');
while ($r = mysql_fetch_array($rc))
{
$id = $r['id'];
$judul = htmlentities(strip_tags($r['judul']), ENT_QUOTES);
$keterangan = htmlentities(strip_tags($r['keterangan']), ENT_QUOTES);
$pubDate = strftime("%a, %d %b %Y %T %Z",$r['pubDate']);
echo "<item>";
echo "<title>$judul</title>";
echo "<link>berita.php?id=$id</link>";
echo "<description>$keterangan</description>";
echo "<pubDate>$pubDate</pubDate>";
echo "</item>";
}
echo "</channel></rss>";
?>

Karena isi RSS cuma daftar dokumen terbaru, mestinya yang ditampilkan cuma record terbaru saja (biasanya per tanggal). Disini digunakan LIMIT 0, 10, yaitu 10 record terbaru.

Untuk meyakinkan bahwa format RSS anda benar, silakan masukkan RSS anda ke :

Feed Validator

Untuk lebih jelas mengenai rss silahkan klik Disini
READ MORE - Membuat RSS 2.0

Memahami bluescreen of death

Blue Screen of Death!!Ngedengernya aja ngeri banget!Siapa yang pernah mengalami Blue Screen of Death? Apabila telah mengalaminya, maka tampilan layer biru yang menampilkan pesan-pesan kesalahan sudah tidak asing lagi. BsOD, menurut wikipedia, dapat diartikan sebagai pesan kesalahan yang muncul di Windows akibat kerusakan system yang tidak bisa di recover.

Munculnya BsOD disebabkan karena berbagai masalah yang beragam baik dari sistem maupun dari perangkat keras. Munculnya BsoD sebenarnya dapat membantu kita untuk mengetahui di manakah kerusakan yang menebabkan komputer kita menjadi rancu. Namun bagi pengguna awam, munculnya BsoD dapat berarti sangat menakutkan, karena justru pesan-pesan di BsOD dapat membingungkan pengguna awam, dan jujur saja, justru banyak pesan-pesan pada BsOD yang terkesan tidak nyambung dalam menjelaskan letak sektor masalah. Pada waktu penulis menemukan BsOD yang pertama kali di komputer penulis, penulis hampir putus asa untuk mengatasi permasalahan yang diminta si BsOD.

Oke, kita kupas saja isi dari BsOD ini. Di atas bagian-bagian BsOD dikategorikan sebagai berikut:

Pesan kerusakan/pesan error: Berisi pesan kesalahan utama, yang akan kita bahas artinya

Troubleshooting: Berisikan anjuran atau saran-saran apa yang harus dilakukan untuk memperbaiki kesalahan. Letaknya berada di bawah pesan error.

Kode-kode hexadesimal: yang menuliskan kode-kode crash.

Memory Dump Message: mengindikasikan bahwa semua proses yang saat itu sedang berlangsung di memory disalin ke dalam sebuah file di harddisk untuk kepentingan debugging. Biasanya file debugging ini dibutuhkan para teknisi untuk menganalisa dan memperbaiki kesalahan.

Pada pembahasan kali ini kita hanya akan membahas arti pesan-pesan error utama yang terdapat dalam BsOD, tidak termasuk dengan troubleshooting mendetail, yang apabila tak ada halangan InsyaAllah akan di posting di lain waktu:

IRQL_NOT_LESS_OR_EQUAL (0X0000000A)
Ini merupakan biangnya biang kerok pada BsOD. Kenapa? Karena umumnya pada BsOD, pesan ini yang paling sering muncul. Pesan kesalahan ini disebabkan umumnya kerena ada ketidakcocokan driver yang terinstall di komputer.

Daftar Penyebab:

- Masalah driver yang bentrok atau tidak cocok

- Masalah Video Card, hal ini mencakup video card yang di overclock melebihi batas atau Anda baru berganti Video card dan Anda belum menguninstall driver Video card lama dari chipset berbeda

- Masalah Audio Card, meliputi kesalahan konfigurasi atau bug dalam driver sound card

NTFS_FILE_SYSTEM atau FAT_FILE_SYSTEM (0X00000024) atau (0X00000023)
Nah, pesan ini setidaknya sudah sedikit nyambung memberikan gambaran di mana kerusakan berada, yaitu ada di partisi atau filesystemnya tetapi bukan di harddisknya. Kita bisa melakukan pengecekan dengan memeriksa kabel SATA atau PATA atau bisa mengecek partisi dengan tool chkdsk.

UNEXPECTED_KERNEL_MODE_TRAP (0X0000007F)
Bila Anda mendapatkan pesan seperti ini, dapat disebabkan karena:

- Overclock Hardware yang berlebihan

- Komponen komputer yang kepanasan

- BIOS yang korup

- Memory dan CPU yang cacat

DATA_BUS_ERROR
Pesan ini disebabkan karena adanya kemungkinan bahwa memory atau slot memory di motherboard rusak.

PAGE_FAULT_IN_NONPAGED_AREA
Disebabkan karena adanya kerusakan hardware, termasuk memory utama, memory video card, atau memory di processor (L2 Cache)

INACCESSIBLE_BOOT_DEVICE
Disebabkan karena adanya kesalahan dalam konfigurasi jumper harddisk yang salah, virus boot sector, driver IDE controller yang salah, atau kesalahan driver chipset.

VIDEO_DRIVER_INIT_FAILURE
Kesalahan terjadi pada instalasi driver video card yang kurang sempurna, restart pada saat instalasi atau juga dapat terjadi karena kesalahan dalam instalasi driver.

BAD_POOL_CALLER
Kesalahan ini dapat terjadi karena kesalahan atau driver yang tidak kompatibel. Sering terjadi saat melakukan instalasi XP dari upgrade, atau bukan dari instalasi baru.

PEN_LIST_CORRUPT
Pesan ini disebabkan karena adanya kerusakan RAM

MACHINE_CHECK_EXCEPTION
Disebabkan oleh cacatnya CPU, atau yang di overclock secara agresif, serta power supply yang kekurangan daya atau rusak.

Itulah sepuluh pesan yang umumnya muncul di BsOD, semoga tulisan ini dapat membantu Anda untuk menganalisa kerusakan yang terjadi di komputer Anda.

dari berbagai sumber.
http://gnoubdils.blogspot.com/
READ MORE - Memahami bluescreen of death

Cloning Buzz YM

Buzz merupakan salah satu fasilitas di YM yang akan membuat tampilan form bergerak dan mengeluarkan suara untuk mengingatkan seseorang teman chat anda di YM bahwa anda sedang chat dengannya tapi tidak dibalas-balas olehnya.
Disini saya akan membuat sebuah program sederhana yang fungsinya seperti buzz di ym menggunakan visual basic 6.0. Pada form yang dibutuhkan hanya sebuah komponen timer dan command button.

Tambahkan sebuah module kedalam project kemudian ketikan script dibawah ini ( copy paste aja deh klu ga mau susah (^^,) ) :

'fungsi windows api untuk memainkan file *.wav
Public Const SND_ALIAs = &H10000
Public Const SND_ASYNC = &H1
Public Const SND_FILENAME = &H20000
Public Const SND_LOOP = &H8
Public Const SND_NODEFAULT = &H2
Public Const SND_NOSTOP = &H10
Public Const SND_NOWAIT = &H2000
Public Const SND_SYNC = &H0
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uflags As Long) As Long
Pada formnya tambahkan 1 komponen command button, dan 1 buah komponen timer.
untuk command button rubah saja captionnya menjadi BUZZ dan untuk timer rubah intervalnya menjadi 10. k`lo udah copas lagi ajah script dibawah ini :

Option Explicit

Dim i As Integer
Dim l As Integer

Private Sub Command1_Click()
i = 1
l = 1
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Dim X As Byte
Select Case i
Case 1
Form1.Left = Form1.Left - 100
Case 2
Form1.Top = Form1.Top - 100
Case 3
Form1.Left = Form1.Left + 100
Case 4
Form1.Top = Form1.Top + 100
Case 5
Form1.Left = Form1.Left - 100
Case 6
Form1.Top = Form1.Top - 100
Case 7
Form1.Left = Form1.Left + 100
Case 8
Form1.Top = Form1.Top + 100

X = sndPlaySound(App.Path & "\BUZZ.wav", SND_ALIAs Or SND_SYNC)
i = 0

Timer1.Enabled = False
End Select
i = i + 1
End Sub

tinggal di running dengan menekan tombol F5. eeiiitttzzz.... tapi jangan lupa dulu siapin file wavnya.. copy ajah dari foldernya ym (^^,)...
selamat mencoba
READ MORE - Cloning Buzz YM

CRC Generator

28 January 2010

Dalam tutorial ini saya akan sedikit menuliskan bagaimana membuat sebuah CRC Generator agar kita bisa mendapatkan nilai CRC sebuah file dengan menggunakan visual basic 6.0.
Disini kita hanya membutuhkan sebuah form dan sebuah user control.

kita mulai dengan membuat sebuah project baru lalu tambahkanlah sebuah user control
Atur properti heightnya menjadi 360 kemudian widthnya menjadi 480 kemudian simpan dengan nama CRC
Lalu ketikanlah script berikut ini pada user control tersebut :

Option Explicit
Private crcTable(0 To 255) As Long

Private Sub UserControl_Initialize()
BuildTable
End Sub

Private Function CRC32(ByRef bArrayIn() As Byte, ByVal lLen As Long, Optional ByVal lcrc As Long = 0) As Long
Dim lCurPos As Long
Dim lTemp As Long
If lLen = 0 Then Exit Function
lTemp = lcrc Xor &HFFFFFFFF
For lCurPos = 0 To lLen
lTemp = (((lTemp And &HFFFFFF00) \ &H100) And &HFFFFFF) Xor (crcTable((lTemp And 255) Xor bArrayIn(lCurPos)))
Next lCurPos
CRC32 = lTemp Xor &HFFFFFFFF
DoEvents
End Function

Private Function BuildTable() As Boolean
Dim i As Long, x As Long, CRC As Long
Const Limit = &HEDB88320
For i = 0 To 255
CRC = i
For x = 0 To 7
If CRC And 1 Then
CRC = (((CRC And &HFFFFFFFE) \ 2) And &H7FFFFFFF) Xor Limit
Else
CRC = ((CRC And &HFFFFFFFE) \ 2) And &H7FFFFFFF
End If
Next x
crcTable(i) = CRC
Next i
DoEvents
End Function

Public Function FromFile(SPathFile As String) As String
Dim b() As Byte, lcrc As Long
On Error Resume Next
If Len(SPathFile) = 0 Then Exit Function
Open SPathFile For Binary Access Read As #1
ReDim b(FileLen(SPathFile) - 1)
Get #1, , b
Close #1
lcrc = UBound(b())
lcrc = CRC32(b(), lcrc)
FromFile = Hex(lcrc)
DoEvents
End Function


Sekarang kita mulai mendesign tampilan formnya..
tambahkan sebuah form baru lalu designlah seperti gambar berikut ini :

Di form tersebut digunakan 5 buah objek yaitu label, textbox, command button, common dialog, crc ( user control yang sebelumnya telah dibuat). atur propertiesnya sesuai dengan gambar.
kalau sudah tambahkan script berikut ini pada form :

Private Sub cmdbrowse_Click()
On Error Resume Next
With cd
.Filter = "All Files (*.*) |*.*"
.ShowOpen
If Len(.FileName) = 0 Then Exit Sub
txtfilename.Text = .FileName
End With
End Sub

Private Sub cmdproses_Click()
txtcrc32.Text = CRC.FromFile(txtfilename.Text)
End Sub

Selamat mencoba
READ MORE - CRC Generator

Screenshot G-Customizer 2010

23 January 2010

Posting kali ini saya hanya sedikit share tampilan project program G-Customizer 2010 yang akan segera dirilis..
Berikut ini screenshot programnya :


Gambar 1 : Layar login program

Gambar 2 : Tampilan pengingat password

Gambar 3 : Tampilan pengaturan program

Gambar 4 : Tampilan manajemen sandi


Gambar 5 : Tampilan tweak

Program ini sekarang masih dalam proses..
jadi buat yang kepengen ditunggu tanggal rilisnya ok.. ^^

http://gnoubdils.blogspot.com/
READ MORE - Screenshot G-Customizer 2010

Konsep OOP di Visual C++ 2005

19 January 2010

Dalam konsep OOP (Object Oriented Programming) salah satu syarat dari bahasa pemrograman agar dapat dikelompokan kedalam bahasa pemrogramman yang mendukung OOP yaitu class. Visual C++ 2005 yang merupakan bahasa pemrograman berbasis OOP-pun mendukung class.
Ditutorial ini yang akan saya bahas yaitu mengenai class yang berisi beberapa method dan juga cara membuat sebuah object/instance class.

Setiap kali membuat sebuah class baru maka harus juga dibuat 2 buah file baru dengan nama yang sama, yaitu satu file header dengan ekstensi *.h dan satu file source yang berekstensi *.cpp.
Misalkan ingin dibuat sebuah class dengan nama Class1, maka harus dibuat juga file Class1.h dan Class1.cpp. Dengan menggunakan Visual C++ 2005 hal tersebut bisa diatasi dengan mudah karena akan dapat dibuat secara langsung oleh Visual C+ 2005.

File header berguna untuk menampung prototype dari konstruktor class dan juga prototype dari setiap method yang ada di dalam class tersebut. Sedangkan file source berguna untuk menampung baris perintah atau isi dari constructor dan method tersebut.


Ok buatlah sebuah project baru kemudian designlah form seperti gambar berikut ini :


form tersebut terdiri dari 4 buah componen yaitu label, maskedtextbox, combobox, button.
aturlah properties dari form tersebut seperti dibawah ini :

Nama Kontrol : Form1
Properties : AcceptButton
Nilai : button1

Nama Kontrol : From1
Properties : Text
Nilai : Konversi Suhu

Nama Kontrol : label1
Properties : Text
Nilai : Input Suhu

Nama Kontrol : label2
Properties : Text
Nilai : Pilihan Konversi

Nama Kontrol : label3
Properties : Text
Nilai : Hasil

Nama Kontrol : label4
Properties : Text
Nilai : Celcius

Nama Kontrol : maskedtextbox1
Properties : Mask
Nilai : 00

Nama Kontrol : combobox1
Properties : Items
Nilai : Fahrenheit, Reamur, Kelvin

Nama Kontrol : combobox1
Properties : Text
Nilai : Fahrenheit

Nama Kontrol : button1
Properties : Text
Nilai : Konversi


kemudian tambahkan sebuah class baru dengan mengklik menu dropdown Add New Item yang ada pada toolbar lalu pilih Add Class atau dengan menggunakan kombinasi tombol shorcut SHIFT + ALT + C. Pada jendela yang tampil dibagian kategori pilih Visual C++ > C++ kemudian pada bagian template pilih lalu klik C++ Class.

Lalu klik tombol Add seperti tampil pada gambar dibawah ini :


Akan tampil kotak dialog Generik C++ Class Wizard isilah Class Namenya menjadi classkonversi seperti yang saya bilang diawal ketika kita membuat sebuah class di Visual C++ 2005 maka file header dan file source akan langsung dibuat secara otomatis sesuai dengan nama class seperti tampil pada gambar dibawah ini, dimana nama file header dan file source akan terisi secara otomatis ketika menulis nama class :



Lihat pada Solution Explorer akan tercipta 2 buah file baru. klik ganda file classkonversi.cpp lalu tambahkan listing code berikut ini dibawah code yang telah ada :

double classkonversi::keFahrenheit(double celcius)
{
double fahrenheit;
fahrenheit = (celcius * 1.8) + 32;
return fahrenheit;
}

double classkonversi::keReamur(double celcius)
{
double reamur;
reamur = celcius * 0.8;
return reamur;
}

double classkonversi::keKelvin(double celcius)
{
double kelvin;
kelvin = celcius + 273.15;
return kelvin;
}

setelah itu kliklah pada classkonversi.h lalu tambahkan code berikut ini :

#pragma once
ref class classkonversi
{
public:
classkonversi(void);
double classkonversi::keFahrenheit(double celcius);
double classkonversi::keReamur(double celcius);
double classkonversi::keKelvin(double celcius);
};

setelah itu pindahlah ke tab Form1.h [Design] kemudian tekan F7 pada bagian paling atas kode dibawah #pragma once tambahkan kode berikut ini :

#include "classkonversi.h"
supaya class tersebut bisa dikenali diprogram utama. pindah lagi ke tab Form1.h [Design] klik ganda button1 kemudian ketikan code program dibawah ini :


private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

if(maskedTextBox1->Text == ""){
maskedTextBox1->Focus();
goto keluar;
}

classkonversi^ konversisuhu = gcnew classkonversi;
double suhu, hasil;
suhu = Convert::ToDouble(maskedTextBox1->Text);

switch(comboBox1->SelectedIndex){
case 0 :
hasil = konversisuhu->keFahrenheit(suhu);
break;

case 1:
hasil = konversisuhu->keReamur(suhu);
break;

case 2:
hasil = konversisuhu->keKelvin(suhu);
break;

default:
MessageBox::Show("Maaf, pilihan tidak ada","Pesan");
goto keluar;
break;
}

label3->Text = "Hasil konversi Celcius ke " + comboBox1->SelectedItem + " = " + hasil.ToString();

keluar:;
}
jalankan program dengan menenkan F5.

Selamat mencoba..
READ MORE - Konsep OOP di Visual C++ 2005

Artikel Lain

 
 
 

Go To Link

  »  A1VBCode
  »  Bina Sarana Informatika
  »  Blogger
  »  Deconstruction Code
  »  Diskusiweb
  »  dremi.info
  »  Echo
  »  Facebook
  »  Gary Abraham
  »  Ilmu Website
  »  JQuery
  »  Mahesajenar Widget
  »  STMIK Nusa Mandiri
  »  OOM Blog
  »  Planet Source Code
  »  Rahma Blog
  »  Terren Jr
  »  VB-Bego
  »  Herry Blog

Advertisement