Jumat, 19 Oktober 2012

Bagaimana membina Jam Analog dan Jam Digital vb.net

Pernahkah Anda melihat jam analog dan jam digital.? Pernahkah Anda berpikir bagaimana mau membuat satu program yang bisa berfungsi seperti itu.? disini saya sertakan satu simple program untuk membuat jam analog dan jam digital dalam vb.net 2010.

Jam Analog


Imports System.Math
Public Class Form1
    Dim l As Label
    Const sete = 150
    Const panjangDetik = 100
    Const panjangMenit = 80
    Const panjangJam = 60
    Dim Pen As New Drawing.Pen(System.Drawing.Color.Red, 2)
    Dim detik, menit, jam As Integer
    Dim x1, y1, x2, y2 As Integer
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Refresh()
        detik = Microsoft.VisualBasic.DateAndTime.Second(Now)
        menit = Microsoft.VisualBasic.DateAndTime.Minute(Now)
        jam = Microsoft.VisualBasic.DateAndTime.Hour(Now)
        Pen = New Drawing.Pen(System.Drawing.Color.RoyalBlue, 6)
        x1 = Sin(((jam Mod 12) * 30 + menit / 2) * PI / 180 + PI) * panjangJam / 5 + sete 'Tail x
        y1 = Cos(((jam Mod 12) * 30 + menit / 2) * PI / 180) * panjangJam / 5 + sete 'Tail y
        x2 = Sin(((jam Mod 12) * 30 + menit / 2) * PI / 180) * panjangJam + sete 'Head x
        y2 = Cos(((jam Mod 12) * 30 + menit / 2) * PI / 180 + PI) * panjangJam + sete 'Head y
        Me.CreateGraphics.DrawLine(Pen, x1, y1, x2, y2)
        Pen = New Drawing.Pen(System.Drawing.Color.Purple, 4)
        x1 = Sin(menit * PI / 30 + detik * PI / 1800 + PI) * panjangMenit / 5 + sete
        y1 = Cos(menit * PI / 30 + detik * PI / 1800) * panjangMenit / 5 + sete
        x2 = Sin(menit * PI / 30 + detik * PI / 1800) * panjangMenit + sete
        y2 = Cos(menit * PI / 30 + detik * PI / 1800 + PI) * panjangMenit + sete
        Me.CreateGraphics.DrawLine(Pen, x1, y1, x2, y2)
        Pen = New Drawing.Pen(System.Drawing.Color.Orange, 2)
        x1 = Sin(detik * PI / 30 + PI) * panjangDetik / 5 + sete
        y1 = Cos(detik * PI / 30) * panjangDetik / 5 + sete
        x2 = Sin(detik * PI / 30) * panjangDetik + sete
        y2 = Cos(detik * PI / 30 + PI) * panjangDetik + sete
        Me.CreateGraphics.DrawLine(Pen, x1, y1, x2, y2)
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim Angle As Double
        Dim i As Integer
        Height = sete * 2.3
        Width = sete * 2
        For i = 0 To 11
            Angle = i * PI / 6
            x1 = Sin(Angle) * (panjangDetik + 20) + sete
            y1 = Cos(Angle + PI) * (panjangDetik + 20) + sete
            l = CallByName(Me, "lblDigit" & i, CallType.Get)
            l.Left = x1 - l.Width / 2
            l.Top = y1 - l.Height / 2
        Next
    End Sub
End Class
Jam Digital

Public Class Form1

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim jamku As Date
        jamku = DateTime.Now
        Label2.Text = jamku.Hour.ToString()
        Label1.Text = jamku.Minute.ToString()
        Label3.Text = jamku.Second.ToString()
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Start()
    End Sub
End Class



Sabtu, 13 Oktober 2012

Cara membuat file XML di C #


XML adalah bahasa platform independen, sehingga informasi yang diformat dalam XML dapat digunakan dalam platform lain (Sistem Operasi). Setelah kita membuat file XML dalam satu platform yang dapat digunakan dalam platform lain juga.
Dalam rangka untuk membuat file XML baru di C #, kita menggunakan Kelas XmlTextWriter. Kelas mengambil FileName dan Encoding sebagai argumen. Juga kita di sini melewati detail format. Kode C berikut # source membuat file XML product.xml dan menambahkan empat baris dalam file


using System;
using System.Data;
using System.Windows.Forms;
using System.Xml;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
XmlTextWriter writer = new XmlTextWriter("product.xml", System.Text.Encoding.UTF8);
writer.WriteStartDocument(true);
writer.Formatting = Formatting.Indented;
writer.Indentation = 2;
writer.WriteStartElement("Table");
createNode("1", "Product 1", "1000", writer);
createNode("2", "Product 2", "2000", writer);
createNode("3", "Product 3", "3000", writer);
createNode("4", "Product 4", "4000", writer);
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();
MessageBox.Show("XML File created ! ");
}
private void createNode(string pID, string pName, string pPrice, XmlTextWriter writer)
{
writer.WriteStartElement("Product");
writer.WriteStartElement("Product_id");
writer.WriteString(pID);
writer.WriteEndElement();
writer.WriteStartElement("Product_name");
writer.WriteString(pName);
writer.WriteEndElement();
writer.WriteStartElement("Product_price");
writer.WriteString(pPrice);
writer.WriteEndElement();
writer.WriteEndElement();
}
}
}

Output Contoh

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Table>
  <Product>
    <Product_id>1</Product_id>
    <Product_name>Product 1</Product_name>
    <Product_price>1000</Product_price>
  </Product>
  <Product>
    <Product_id>2</Product_id>
    <Product_name>Product 2</Product_name>
    <Product_price>2000</Product_price>
  </Product>
  <Product>
    <Product_id>3</Product_id>
    <Product_name>Product 3</Product_name>
    <Product_price>3000</Product_price>
  </Product>
  <Product>
    <Product_id>4</Product_id>
    <Product_name>Product 4</Product_name>
    <Product_price>4000</Product_price>
  </Product>
</Table> 

Jumat, 05 Oktober 2012

Hash Password di C # dan Visual Basic Menggunakan SHA-512

Kami baru-baru ini dibahas cara mudah untuk password hash menggunakan SHA-1 di NET baik menggunakan Visual Basic atau C #.. Dalam kebanyakan kasus, SHA-1 enkripsi adalah "cukup aman", namun ada beberapa kelemahan matematika. . NET platform Microsoft (khusus kelas System.Security) memungkinkan Anda untuk mengenkripsi password dengan sejumlah algoritma differnet tanpa harus mengetahui matematika di belakang mereka.
Hari ini, kita akan mengenkripsi string dengan SHA-2, khususnya SHA-512 derivasi dari SHA-2, yang secara hipotetis harus lebih aman daripada SHA-1 karena memiliki pesan yang lebih panjang dibanding mencerna SHA-1. Contoh kode saya akan memamerkan hari juga menggunakan "garam", sedangkan fungsi sebelumnya saya memamerkan tidak. Ini akan membuat Anda immume hashed password-lebih untuk attacts kamus karena tidak hanya akan hacker harus mengembangkan hash untuk setiap password yang umum dikenal, tetapi juga sebagai setiap password yang biasa dikenal dikalikan dengan jumlah hampir tak terbatas dari garam mungkin.

 
Berikut fungsi


Public Shared Function CreateSHAHash(Password As String, Salt As String) As String
    Dim HashTool As New System.Security.Cryptography.SHA512Managed()
    Dim PasswordAsByte As [Byte]() = System.Text.Encoding.UTF8.GetBytes(String.Concat(Password, Salt))
    Dim EncryptedBytes As [Byte]() = HashTool.ComputeHash(PasswordAsByte)
    HashTool.Clear()
    Return Convert.ToBase64String(EncryptedBytes)
End Function

Cara kerjanya: 

Metode ini memanfaatkan kelas System.Security.Cryptography. Ini menggabungkan password dan garam yang Anda berikan dan mengubahnya menjadi array byte-. Ini berjalan mereka byte melalui fungsi perhitungan telah disediakan oleh kelas dan mengembalikan sebuah string 88-bit dari message-digest/hash yang dibuat.

Rabu, 03 Oktober 2012

C #: Stub kode untuk menulis komponen ActiveX

Berikut adalah kode dasar untuk menulis komponen ActiveX, ini perlu diikuti dengan instruksi untuk dll setup seperti didokumentasikan di sini


mengkonversi c # untuk Vb.Net. di sini

 
***********************
Class: ActiveXDotNet.cs
***********************

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

//Selain itu ditambahkan untuk ActiveX
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Windows.Forms;

namespace NSActiveXDotNet
{
[Guid("E86A9038-368D-4e8f-B389-FDEF38935B2F"), InterfaceType(ComInterfaceType.InterfaceIsDual), ComVisible(true)]
public interface IActiveXDotNet
{
[DispId(1)]
void ShowDialog(string message);
};

[Guid("B769DA4B-FDDD-41BD-BDD2-7101D08E8E0C"), ClassInterface(ClassInterfaceType.None),
ComDefaultInterface(typeof(IActiveXDotNet)), ComVisible(true), ProgId("ActiveXDotNet.CActiveXDotNet")]
public class CActiveXDotNet : IObjectSafetyImpl, IActiveXDotNet
{

#region IActiveXDotNet Members

public void ShowDialog(string message)
{
MessageBox.Show(message, "Message From ActiveX", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

#endregion
}
}


***********************
Class: IObjectSafety.cs
***********************

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Text;

namespace NSActiveXDotNet
{
[
Serializable,
ComVisible(true)
]
public enum ObjectSafetyOptions
{
INTERFACESAFE_FOR_UNTRUSTED_CALLER = 0x00000001,
INTERFACESAFE_FOR_UNTRUSTED_DATA = 0x00000002,
INTERFACE_USES_DISPEX = 0x00000004,
INTERFACE_USES_SECURITY_MANAGER = 0x00000008
};

//
// MS IObjectSafety Antarmuka definisi
//
[
ComImport(),
Guid("CB5BDC81-93C1-11CF-8F20-00805F2CD064"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)
]
public interface IObjectSafety
{
[PreserveSig]
long GetInterfaceSafetyOptions(ref Guid iid, out int pdwSupportedOptions, out int pdwEnabledOptions);

[PreserveSig]
long SetInterfaceSafetyOptions(ref Guid iid, int dwOptionSetMask, int dwEnabledOptions);
};

//
// Menyediakan Pelaksanaan default untuk scripting yang aman.
// Ini pada dasarnya berarti IE tidak akan mengeluh tentang objek ActiveX tidak menjadi aman

//
public class IObjectSafetyImpl : IObjectSafety
{
private ObjectSafetyOptions m_options =
ObjectSafetyOptions.INTERFACESAFE_FOR_UNTRUSTED_CALLER |
ObjectSafetyOptions.INTERFACESAFE_FOR_UNTRUSTED_DATA;

#region [IObjectSafety implementation]
public long GetInterfaceSafetyOptions(ref Guid iid, out int pdwSupportedOptions, out int pdwEnabledOptions)
{
pdwSupportedOptions = (int)m_options;
pdwEnabledOptions = (int)m_options;
return 0;
}

public long SetInterfaceSafetyOptions(ref Guid iid, int dwOptionSetMask, int dwEnabledOptions)
{
return 0;
}
#endregion
};
}

Selasa, 02 Oktober 2012

Array – Satu Dimensi, Multi Dimensi vb.net

Array adalah konstruksi pemrograman yang menyimpan data dan memungkinkan kita untuk mengaksesnya dengan indeks numerik atau subscript. Array membantu kita membuat kode lebih pendek dan sederhana dalam banyak situasi. Array di Visual Basic NET. Mewarisi dari kelas Array dalam namespace System. Array dideklarasikan menggunakan Dim, ReDim, Static, Private.

Array dapat memiliki satu dimensi (array linear) atau lebih dari satu (array multidimensi). Dimensi dari array mengacu pada jumlah subskrip digunakan untuk mengidentifikasi elemen individu. Dalam Visual Basic kita dapat menentukan hingga 32 dimensi. Array tidak memiliki ukuran yang tetap dalam Visual Basic.
Ok langsung saja tutorial vb.net Algoritma Pemrograman Array Satu dimensi dan Multi dimensi dalam program vb.net :
  1. Langsung saja buka Microsoft Visual Studio 2010 anda.
  2. Muncul “Form1”, masukkan Label, TextBox, ComboBox, Button dan juga ListView yang terdapat di ToolBox dengan cara double klik ToolBox yang dipilih.
  3. Ubah Propertiesnya seperti ini :
Nama ControlPropertiesNilai
Label1TextKode Barang
Label2TextNama Barang
Label3TextJenis
Label4TextSatuan
TextBox1Text[Dikosongkan]

NameTxtKodeBarang
TextBox2Text[Dikosongkan]

NameTxtNamaBarang
ComboBox1Text[Dikosongkan]

NameCmbJenis
ComboBox2Text[Dikosongkan]

NameCmbSatuan
Button1TextSimpan

NameBtnSimpan


4.  Setelah itu masukkan kode berikut ini :
Public Class Form1Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Arr(4, 1) As String

Arr(0, 0) = “Kode Barang”
Arr(0, 1) = “Nama Barang”
Arr(1, 0) = “Jenis”
Arr(1, 1) = “Satuan”
Arr(2, 0) = “Sabun Mandi”
Arr(2, 1) = “Pasta Gigi”
Arr(3, 0) = “Pcs”
Arr(3, 1) = “Box”
Arr(4, 0) = “Lusin”
Arr(4, 1) = “Kodi”

ListView1.GridLines = True
ListView1.View = View.Details

For Baris = 0 To 1
For kolom = 0 To 1
ListView1.Columns.Add(Arr(Baris, kolom), 100)
Next kolom
Next Baris

For Baris = 2 To 2
For kolom = 0 To 1
CmbJenis.Items.Add(Arr(Baris, kolom))
Next kolom
Next Baris

For Baris = 3 To 4
For kolom = 0 To 1
CmbSatuan.Items.Add(Arr(Baris, kolom))
Next kolom
Next Baris
End Sub

Private Sub BtnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSimpan.Click
Dim Arr(4) As String

Arr(1) = TxtKodeBarang.Text
Arr(2) = TxtNamaBarang.Text
Arr(3) = CmbJenis.Text
Arr(4) = CmbSatuan.Text

Dim listitem As ListViewItem
listitem = New ListViewItem
listitem = ListView1.Items.Add(Arr(1))
listitem.SubItems.Add(Arr(2))
listitem.SubItems.Add(Arr(3))
listitem.SubItems.Add(Arr(4))

TxtKodeBarang.Text = TxtKodeBarang.Text + 1

TxtNamaBarang.Text = “”
CmbJenis.Text = “”
CmbSatuan.Text = “”
TxtNamaBarang.Focus()
End Sub

End Class
5. Setelah itu klik “Start Debugging (F5)
6.  Maka akan tampil form1 dan coba masukkan kode barang sampai satuan, dan klik simpan maka di listview akan tampil data yang telah terinput tadi…

Algoritma Pemrograman Array Satu dimensi dan Multi dimensi dalam program vb.net, kita akan masih lanjut ke tutorial vb.net berikutnya yang lebih banyak dan seru lagi.
tetap semangat dan lanjut gan !!!

Angka Terbilang Indonesia dengan vb.net

Dalam tutorial vb.net berikut ini, penulis mencoba membuat angka menjadi tulisan terbilang dengan bahasa Indonesia dari besar angka yang dimasukkan ke dalam textbox. Besar angka yang dimasukkan bukan bilangan pecahan, tapi bilangan bulat.

Pada tutorial vb.net kali ini kita akan membutuhkan “Class” dari vb.net untuk membuatfungsi terbilang indonesia.
Ok langsung saja tutorial angka terbilang indonesia dengan vb.net :
  1. Langsung saja buka Microsoft Visual Studio 2010 anda.
  2. Muncul “Form1”, masukkan Label, TextBox, dan Juga Button yang terdapat di ToolBox dengan cara double klik ToolBox yang dipilih.
  3. Ubah Propertiesnya seperti ini :
Nama ControlPropertiesNilai
Label1TextAngka
Label2TextTerbilang
TextBox1Text[Dikosongkan]

NameTxtAngka
TextBox2Text[Dikosongkan]

NameTxtTerbilang

MultilineThrue

ScrollBarsVertical
Button1TextTerbilang Indonesia

NameBtnTerbilang

4.  Sebelum Memasukkan Kode di Form1 anda harus membuat “Class” terlebih dahulu,caranya klik “Add New Item” di ToolBar, Lalu Pilih “Class”, ganti namanya dengan “TerbilangIndonesia” pada kolom “Name”, Lalu Pilih “Add” :

5.  Pada “Class” TerbilangIndonesia masukkan kode sebagai berikut ini :

Imports VB = Microsoft.VisualBasic
Public Class TerbilangIndonesia
Function Terbilang(ByRef Indx As String) As String

Dim satu(10) As String
Dim dua(10) As String
Dim tiga(10) As String
Dim ratus As String
Dim ribu As String
Dim juta As String
Dim Millyar As String
Dim Trilliun As String

satu(0) = “Nol” : satu(1) = “Satu” : satu(2) = “Dua” : satu(3) = “Tiga” : satu(4) = “Empat” : satu(5) = “Lima” : satu(6) = “Enam” : satu(7) = “Tujuh” : satu(8) = “Delapan” : satu(9) = “Sembilan”
dua(0) = “Sepuluh” : dua(1) = “Sebelas” : dua(2) = “Dua belas” : dua(3) = “Tiga belas” : dua(4) = “Empat Belas” : dua(5) = “Lima Belas” : dua(6) = “Enam Belas” : dua(7) = “Tujuh belas” : dua(8) = “Delapan belas” : dua(9) = “Sembilan belas”
tiga(2) = “Dua puluh” : tiga(3) = “Tiga puluh” : tiga(4) = “Empat puluh” : tiga(5) = “Lima puluh” : tiga(6) = “Enam Puluh” : tiga(7) = “Tujuh Puluh” : tiga(8) = “Delapan puluh” : tiga(9) = “Sembilan puluh”
ratus = “ratus” : ribu = “ribu” : juta = “juta”
Millyar = “millyar” : Trilliun = “trilliun”

Dim inp, BhsNilai As String

inp = CStr(Val(Indx))


Select Case Len(inp)
Case 1
BhsNilai = satu(CInt(Indx))

Case 2
If Int(CDbl(VB.Right(inp, 1))) > 0 And CDbl(VB.Left(inp, 1)) > 1 Then BhsNilai = Terbilang(CStr(Int(CDbl(VB.Right(inp, 1)))))
If CDbl(VB.Left(inp, 1)) > 1 Then BhsNilai = tiga(CInt(VB.Left(inp, 1))) & BhsNilai
If CDbl(VB.Left(inp, 1)) = 1 Then BhsNilai = dua(CInt(VB.Right(inp, 1)))
BhsNilai = Replace(BhsNilai, “Satu ribu”, “Seribu”)

Case 3
BhsNilai = satu(10)
If Int(CDbl(VB.Right(inp, 2))) > 0 Then BhsNilai = Terbilang(CStr(Int(CDbl(VB.Right(inp, 2)))))
BhsNilai = Terbilang(Int(CDbl(VB.Left(inp, 1)))) & ratus & BhsNilai

Case 4
If Int(CDbl(VB.Right(inp, 3))) > 0 Then BhsNilai = Terbilang(CStr(Int(CDbl(VB.Right(inp, 3)))))
BhsNilai = Terbilang(Int(CDbl(VB.Left(inp, 1)))) & ribu & BhsNilai
BhsNilai = Replace(BhsNilai, “Satu ribu”, “Seribu”)

Case 5
If Int(CDbl(VB.Right(inp, 3))) > 0 Then BhsNilai = Terbilang(CStr(Int(CDbl(VB.Right(inp, 3)))))
BhsNilai = Terbilang(Int(CDbl(VB.Left(inp, 2)))) & ribu & BhsNilai

Case 6
If CInt(VB.Right(inp, 3)) > 0 Then BhsNilai = Terbilang(CStr(CInt(VB.Right(inp, 3))))
BhsNilai = Terbilang(Int(CDbl(VB.Left(inp, 3)))) & ribu & BhsNilai

Case 7
If CInt(VB.Right(inp, 6)) > 0 Then BhsNilai = Terbilang(CStr(CInt(VB.Right(inp, 6))))
BhsNilai = Terbilang(Int(CDbl(VB.Left(inp, 1)))) & juta & BhsNilai

Case 8
If CInt(VB.Right(inp, 6)) > 0 Then BhsNilai = Terbilang(CStr(CInt(VB.Right(inp, 6))))
BhsNilai = Terbilang(Int(CDbl(VB.Left(inp, 2)))) & juta & BhsNilai

Case 9
If CInt(VB.Right(inp, 6)) > 0 Then BhsNilai = Terbilang(CStr(CInt(VB.Right(inp, 6))))
BhsNilai = Terbilang(Int(CDbl(VB.Left(inp, 3)))) & juta & BhsNilai

Case 10
If CInt(VB.Right(inp, 9)) > 0 Then BhsNilai = Terbilang(CStr(CInt(VB.Right(inp, 9))))
BhsNilai = Terbilang(Int(CDbl(VB.Left(inp, 1)))) & Millyar & BhsNilai

Case 11
If CInt(VB.Right(inp, 9)) > 0 Then BhsNilai = Terbilang(CStr(CInt(VB.Right(inp, 9))))
BhsNilai = Terbilang(Int(CDbl(VB.Left(inp, 2)))) & Millyar & BhsNilai

Case 12
If Val(VB.Right(inp, 9)) > 0 Then BhsNilai = Terbilang(VB.Right(inp, 9))
BhsNilai = Terbilang(Int(CDbl(VB.Left(inp, 3)))) & Millyar & BhsNilai

Case 13
If Val(VB.Right(inp, 12)) > 0 Then BhsNilai = Terbilang(VB.Right(inp, 12))
BhsNilai = Terbilang(Int(CDbl(VB.Left(inp, 1)))) & Trilliun & BhsNilai

Case 14
If Val(VB.Right(inp, 12)) > 0 Then BhsNilai = Terbilang(VB.Right(inp, 12))
BhsNilai = Terbilang(Int(CDbl(VB.Left(inp, 2)))) & Trilliun & BhsNilai

Case 15
If Val(VB.Right(inp, 12)) > 0 Then BhsNilai = Terbilang(VB.Right(inp, 12))
BhsNilai = Terbilang(Int(CDbl(VB.Left(inp, 3)))) & Trilliun & BhsNilai
End Select

BhsNilai = Replace(BhsNilai, “Satu ratus”, “Seratus”)
BhsNilai = Trim(BhsNilai)

Terbilang = ” ” & BhsNilai & ” ”
Terbilang = Replace(Terbilang, ” “, ” “)

End Function
End Class

6. Pada “Form1” Masukkan kode berikut ini :
Public Class Form1
Dim TerBilangIndonesia As New TerbilangIndonesia

Private Sub BtnTerbilang_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnTerbilang.Click
TxtTerbilang.Text = TerBilangIndonesia.Terbilang(TxtAngka.Text) + “Rupiah”
End Sub

End Class

7.  Setelah itu klik “Start Debugging (F5)
8.  Maka akan tampil form1 dan coba masukkan angka berapapun, dan klik terbilang maka di di textbox akan tampil angka terbilang indonesia

Demikian tutorial angka terbilang indonesia dengan vb.net, kita akan masih lanjut ke tutorial vb.net berikutnya yang lebih banyak dan seru lagi.
tetap semangat dan lanjut gan !!!
Recommended Post Slide Out For Blogger
Related Posts Plugin for WordPress, Blogger...