Tuesday, December 18, 2012

Blogging - Merapikan Kode XML Dengan Mudah - XML Tidy

Struktur XML (Extensible Markup Language) memiliki tag pembuka juga tag penutup, memiliki parent (induk), dari parent ini kemudian memiliki child (anak), dari child ini memiliki child lagi, dan seterusnya. Sehingga secara tidak langsung parent yang tadi bisa menjadi grandfather, tak terkecuali uncle serta aunt, berikut daughter and son.

Berdasarkan dari cara penulisannya maka format XML ini memungkinkan untuk dibaca oleh kedua belah pihak, baik manusia maupun mesin (compiler/interpreter). Salah satu dari sekian banyak yang menggunakan XML diantaranya adalah template blogger.

Nah, apabila Anda menemukan kode XML misalnya widget yang kurang terformat rapi, dan menyebabkan ia hanya mudah dibaca oleh satu pihak saja yaitu mesin, maka ada cara yang paling mudah untuk merapikannya yaitu dengan menggunakan software editor Notepadd++. Adapun caranya adalah sebagai berikut:

  1. Copykan potongan code XML tersebut ke Notepad++
  2. Pada Notepad++ klik menu TextFX >> TextFX HTML Tidy >> Tidy: Reindent XML, seperti pada gambar di bawah ini:

Merapikan kode XML - XML Tidy dengan Notepad++
Gambar: Merapikan kode XML - XML Tidy dengan Notepad++

Dengan dirapikannya kode XML tersebut, maka struktrurnya menjadi logis, mudah untuk dibaca kedua belah pihak (manusia dan mesin), sehingga menjadi mudah untuk diedit.

Contoh XML yang belum dirapikan:

<b:includable id=breadcrumb var="posts">
<b:if cond="data:blog.homepageUrl == data:blog.url">
<b:else></b:else><b:if cond='data:blog.pageType == "item"'>
<DIV class=breadcrumbs>Browse » <A rel=tag expr:href="data:blog.homepageUrl">Beranda</A>
<b:loop var="post" values="data:posts"><b:if cond="data:post.labels">
<b:loop var="label" values="data:post.labels"><b:if cond='data:label.isLast == "true"'> »
<A rel=tag expr:href="data:label.url"><?xml:namespace prefix = data /><data:label.name></data:label.name></A>
</b:if></b:loop>» <SPAN><data:post.title></data:post.title></SPAN>
</b:if></b:loop></DIV><b:else></b:else><b:if cond='data:blog.pageType == "archive"'>
<DIV class=breadcrumbs>Browse » <A expr:href="data:blog.homepageUrl">Beranda</A> » Arsip untuk <data:blog.pageName></data:blog.pageName></DIV><b:else></b:else>
<b:if cond='data:blog.pageType == "index"'>
<DIV class=breadcrumbs>
<b:if cond='data:blog.pageName == ""'>
Browse » <A expr:href="data:blog.homepageUrl">Beranda</A> » Seluruh Artikel
<b:else></b:else>
Browse » <A expr:href="data:blog.homepageUrl">Beranda</A> » Artikel Pada Kategori <data:blog.pageName></data:blog.pageName>
</b:if></DIV></b:if></b:if></b:if></b:if></b:includable>
Contoh XML yang sudah dirapikan:
<b:includable id=breadcrumb var="posts">
<b:if cond="data:blog.homepageUrl == data:blog.url">
<b:else></b:else>
<b:if cond='data:blog.pageType == "item"'>
<DIV class=breadcrumbs>Browse »
<A rel=tag expr:href="data:blog.homepageUrl">Beranda</A>
<b:loop var="post" values="data:posts">
<b:if cond="data:post.labels">
<b:loop var="label" values="data:post.labels">
<b:if cond='data:label.isLast == "true"'>»
<A rel=tag expr:href="data:label.url">
<data:label.name></data:label.name>
</A></b:if>
</b:loop>»
<SPAN>
<data:post.title></data:post.title>
</SPAN></b:if>
</b:loop></DIV>
<b:else></b:else>
<b:if cond='data:blog.pageType == "archive"'>
<DIV class=breadcrumbs>Browse »
<A expr:href="data:blog.homepageUrl">Beranda</A>»
Arsip untuk
<data:blog.pageName></data:blog.pageName></DIV>
<b:else></b:else>
<b:if cond='data:blog.pageType == "index"'>
<DIV class=breadcrumbs>
<b:if cond='data:blog.pageName == ""'>Browse »
<A expr:href="data:blog.homepageUrl">Beranda</A>»
Seluruh Artikel
<b:else></b:else>Browse »
<A expr:href="data:blog.homepageUrl">Beranda</A>»
Artikel Pada Kategori
<data:blog.pageName></data:blog.pageName></b:if>
</DIV>
</b:if>
</b:if>
</b:if>
</b:if>
</b:includable>
READ MORE - Blogging - Merapikan Kode XML Dengan Mudah - XML Tidy

Wednesday, December 12, 2012

Mengirim SMS Menggunakan Modem Wavecom - VB6 Code

Mengenai cara mengirim SMS menggunakan aplikasi yang dibuat dengan VB6 menggunakan modem GSM Wavecom - Adapun cara mengirim SMS menggunakan aplikasi VB6 secara sederhana kodenya adalah sebagai berikut:
Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Command1_Click()
With MSComm1
.CommPort = 7 'Port disesuaikan terhadap modem Wavecom yang terdeteksi
.Settings = "115200,n,8,1"
.Handshaking = comRTS
.RTSEnable = True
.DTREnable = True
.RThreshold = 1
.SThreshold = 1
.InputMode = comInputModeText
.InputLen = 0
.PortOpen = True
End With
MSComm1.Output = "AT+CMGS=" & Chr(34) & TxtNumber.Text & Chr(34) & vbCrLf
Sleep 1000
MSComm1.Output = TxtMessage.Text & Chr(26)
End Sub

Caranya:

  1. Buatlah 2 TextBox masing-masing diberi nama TxtNumber dan TxtMessage
  2. Tambahkan OCX Microsoft Comm Control 6.0 (MSComm)
  3. Tambahkan satu CommandButton dengan nama default.
READ MORE - Mengirim SMS Menggunakan Modem Wavecom - VB6 Code

Mengirim SMS Disertai Verifikasi Terkirim - VB Source Code

Mengenai mengirim SMS menggunakan modem wavecom melalui aplikasi yang dibuat menggunakan VB6 - Ini merupakan kelanjutan dari project sebelumnya, pada kesempatan kali, kita akan menambahkan fitur verifikasi, apakah SMS telah terkirim atau gagal terkirim. Nah, bagaimanakah kode untuk mengirim SMS menggunakan modem wavecom melalui aplikasi VB6 yang disertai pesan verifikasi? berikut adalah kodenya:
Option Explicit

Dim strBuffer As String

Private Sub Command1_Click()
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
With MSComm1
.CommPort = 7
.Settings = "115200,N,8,1"
.Handshaking = comRTS
.RTSEnable = True
.DTREnable = True
.RThreshold = 1
.SThreshold = 1
.InputMode = comInputModeText
.InputLen = 0
.PortOpen = True
End With
MSComm1.Output = "AT+CMGS=" & Chr(34) & TxtNumber.Text & Chr(34) & vbCrLf
Delay 1
MSComm1.Output = TxtMessage.Text & Chr(26)
If WaitForSuccess Then
MsgBox "SMS telah terkirim", vbInformation + vbOKOnly
Else
MsgBox "SMS gagal terkirim", vbCritical, "SMS Gagal"
End If

End Sub

Private Sub Form_Unload(Cancel As Integer)
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
End Sub

Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive
strBuffer = strBuffer & MSComm1.Input
End Select
Debug.Print strBuffer
End Sub

Private Function WaitForSuccess() As Boolean
Dim i As Integer
Dim strInput As String
Dim strPart As String
Dim c As String, b As String
For i = 1 To 5
Do
Delay 1
c = strBuffer
strBuffer = ""
If c = "" Then Exit Do
b = strInput & c
Loop
strPart = b
strInput = strInput & strPart
If InStr(1, strInput, vbCrLf & "OK" & vbCrLf) > 0 Then Exit For
If strPart = "" Then
Delay 1
End If
Next
WaitForSuccess = InStr(1, strInput, vbCrLf & "OK" & vbCrLf) > 0
End Function

Private Sub Delay(ByVal HowLong As Date)
Dim endDate As Date
endDate = DateAdd("s", HowLong, Now)
While endDate > Now
DoEvents
Wend
End Sub
Demikian mengenai cara mengirim SMS menggunakan modem wavecom melalui aplikasi VB6 yang ditambahkan fitur verifikasi, semoga bermanfaat.
READ MORE - Mengirim SMS Disertai Verifikasi Terkirim - VB Source Code

Fungsi Wait Sleep Tanpa Windows API - VB6 Code

Mengenai fungsi wait atau sleep tanpa menggunakan fungsi API - Melanjutkan posting sebelumnya klik disini, sekarang kita akan membuat fungsi sleep atau wait tanpa bantuan API hanya menggunakan kode VB6 murni. Perbedaan fungsi sleep kali ini dengan fungsi sleep sebelumnya adalah:

Fungsi sleep menggunakan Sleep Kernel32.dll:

  • Mem-freeze GUI (membekukan tampilan)
  • Hitungan dalam millisecond

Fungsi sleep kali ini (lebih tepatnya delay time):

  • Tidak mem-freeze GUI
  • Hitungan dalam second

Adapun fungsi sleep atau wait tanpa fungsi API adalah sebagai berikut:

Private Sub Sleep(ByVal HowLong As Date)
Dim endDate As Date
endDate = DateAdd("s", HowLong, Now)
While endDate > Now
DoEvents
Wend
End Sub
Jika Anda mau bereksperimen maka buatlah kodenya seperti di bawah ini kemudian bandingkan antara fungsi sleep Kernel32.dll dengan fungsi sleep tanpa API.
Option Explicit

'Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Command1_Click()
Label1.Caption = "Mulai menjalankan fungsi sleep atau wait"
Label1.Refresh
Sleep 5 'sleep/wait/hentikan eksekusi kode ke baris berikutnya selama 5 detik
Label1.Caption = "Terhenti selama 5 detik"
End Sub

Private Sub Command2_Click()
Dim frm As New Form1
frm.Show
End Sub

Private Sub Timer1_Timer()
Static i As Integer
Caption = i
i = i + 1
End Sub

Private Sub Sleep(ByVal HowLong As Date)
Dim endDate As Date
endDate = DateAdd("s", HowLong, Now)
While endDate > Now
DoEvents
Wend
End Sub
Demikianlah seputar fungsi sleep atau wait, menggunakan API dan tanpa menggunakan API.
Option Explicit

Private Function Sleep(mSecs As Long) As Double
Dim Duration!
Duration! = Timer + mSecs
Do Until Timer > Duration!
DoEvents
Loop
End Function

Private Sub Command1_Click()
Sleep 0.9
MsgBox "Test"
End Sub
READ MORE - Fungsi Wait Sleep Tanpa Windows API - VB6 Code