Thursday, January 5, 2012

Download Software Speech/Voice Recognition

Ini merupakan software pembelajaran untuk melatih mengucapkan frase-frase pendek dalam percakapan. Adapun yang menjadi lawan bicaranya adalah sebuah komputer.


Cara menggunakan:
  1. Isi terlebih dahulu database percakapan yang terdapat pada C:\Program Files\Speech\dbase.mdb. Isi dari percakapan tersebut disesuaikan dengan kebutuhan Anda atau anak didik Anda.
  2. Siapkan mikrofon berkualitas baik
  3. Atur volume
  4. Bacalah frase-frase pendek yang telah Anda isi ke dalam database yang terdapat pada sisi kiri. Selanjutnya komputer akan menjawabnya.
Keunggulan dari software ini adalah sangat sederhana, sehingga sangat mudah untuk digunakan. Disamping itu ukurannya sangat kecil, sekitar 400kb lebih. Nah, selamat berlatih dan bercakap-cakap dengan komputer dan Insya Allah dikembangkan jika ada waktu.

Download: Speech 1.5
READ MORE - Download Software Speech/Voice Recognition

Wednesday, November 23, 2011

Software Kamus Bahasa Inggris Freeware 1.0

Kamus Bahasa Inggris Freeware 1.0
Ini merupakan aplikasi kamus bahasa inggris versi pertama, kosakatanya belum begitu banyak hanya ada sekitar 23 ribuan. Merupakan pengembangan dari cara membuat kamus bahasa inggris yang telah dijelaskan secara panjang lebar. Kelebihan dan kekurangannya bisa Anda lihat pada link tersebut.

Download: Kamus Bahasa Inggris Freeware 1.0

Jika Anda tertarik dengan source codenya, harganya Rp. 100.000

READ MORE - Software Kamus Bahasa Inggris Freeware 1.0

Tuesday, November 22, 2011

Alternate Color/Zebra Color Untuk Listview Codejock - VB6

Di bawahi ini merupakan module untuk memberi warna-warni (alternate color/zebra color) pada row listview codejock di bawah versi 15.x.x (versi yang belum mendukung property TextBackColor.

Option Explicit 
 
'--------------------------------------------------------------------------------------------- 
' http://khoiriyyah.blogspot.com 
' Module Alternate Color Listview Codejock untuk versi di bawah 15.x.x 
'--------------------------------------------------------------------------------------------- 
 
Private Const NOERROR = &H0& 
Private Const S_OK = &H0&  
Private Const S_FALSE = &H1& 
Private Const LVM_FIRST = &H1000 
Private Const LVM_SETBKIMAGE = (LVM_FIRST + 68) 
Private Const LVM_SETTEXTBKCOLOR = (LVM_FIRST + 38) 
Private Const LVBKIF_SOURCE_URL = &H2 
Private Const LVBKIF_SOURCE_HBITMAP As Long = &H1 
Private Const LVBKIF_STYLE_TILE = &H10 
Private Const CLR_NONE = &HFFFFFFFF 
  
Private Type LVBKIMAGE 
    ulFlags As Long 
    hbm As Long 
    pszImage As String 
    cchImageMax As Long 
    xOffsetPercent As Long 
    yOffsetPercent As Long 
End Type 
 
Private Declare Sub CoUninitialize Lib "OLE32.DLL" () 
Private Declare Function CoInitialize Lib "OLE32.DLL" (ByVal pvReserved As Long) As Long 
Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As  Long, ByVal lParam As Long) As Long 
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 
 
Private Const LVM_GETITEMRECT As Long = (LVM_FIRST + 14) 
Private Const LVIR_BOUNDS As Long = 0 
 
Private Type RECT 
    Left As Long 
    Top As Long 
    Right As Long 
    Bottom As Long 
End Type 
 
Public  Const vbBackColor As Long = &HFCD5C2 
 
'//Ambil satu tinggi listitem codejock untuk dibuat acuan/referensi 
Private Function ListItemHeight(lvw As XtremeSuiteControls.ListView) As Long 
    Dim rc As RECT, i As Long, c As Long, dy As Long 
    c = lvw.ListItems.Count 
    If c = 0 Then Exit Function 
    rc.Left = LVIR_BOUNDS 
    SendMessage lvw.hWnd, LVM_GETITEMRECT, ByVal 0&, rc 
    dy = rc.Bottom - rc.Top  
    ListItemHeight = (dy * Screen.TwipsPerPixelY) 
End Function 
 
'//Bikin dummy picture dari tinggi item codejock yang telah diketahui dari fungsi di atas 
Public Sub SetLvCodeJockTextBKColor(Lv As XtremeSuiteControls.ListView, ByVal BackColorOne As OLE_COLOR, ByVal BackColorTwo As OLE_COLOR, Optional bGradient As Boolean) 
 
    Dim lH As Long 
    Dim lSM As Byte 
    Dim picAlt As PictureBox 
 
    With Lv 
        If .View = xtpListViewReport And .ListItems.Count Then 
            Set picAlt = Lv.Parent.Controls.Add("VB.PictureBox", "picAlt") 
            lSM = .Parent.ScaleMode 
            .Parent.ScaleMode = vbTwips 
            lH = ListItemHeight(Lv) '.ListItems(1).Height 
            With picAlt 
                .BackColor = BackColorOne 
                .AutoRedraw = True 
                 .Height = lH * 2 
                .BorderStyle = 0 
                .Width = 10 * Screen.TwipsPerPixelX 
                If bGradient Then 
                    FadeVertical picAlt, vbWhite, BackColorTwo, lH, lH * 2 
                Else 
                    picAlt.Line (0, lH)-(.ScaleWidth, lH * 2), BackColorTwo, BF 
                End If 
            End With 
            picAlt.Visible = True 
            picAlt.ZOrder 
             Lv.Parent.ScaleMode = lSM 
        End If 
    End With 
 
    SavePicture picAlt.Image, App.Path & "\alternate_color.bmp" 
 
    Lv.Parent.Controls.Remove "picAlt" 
    Set picAlt = Nothing 
    SetBackground Lv 
 
End Sub 
 
'//Jadikan gambar dummy menjadi background listview secara tile (LVBKIF_STYLE_TILE) 
'//Coba hilangkan Constanta LVBKIF_STYLE_TILE, dan lihat apa yang terjadi 
Private Sub SetBackground(lvwTest As XtremeSuiteControls.ListView) 
     Dim sI As String 
    Dim lHDC As Long 
 
    sI = App.Path & "\alternate_color.bmp" 
 
    If (Len(sI) > 0) Then 
        If (InStr(sI, "")) = 0 Then 
            sI = App.Path & "" & sI 
        End If 
        On Error Resume Next 
        If (Dir(sI) <> "") Then 
            If (Err.Number = 0) Then 
                ' Set background - tile 
                Dim tLBI As LVBKIMAGE 
                tLBI.pszImage = sI & Chr$(0) 
                tLBI.cchImageMax = Len(sI) + 1 
                tLBI.ulFlags = LVBKIF_SOURCE_URL Or LVBKIF_STYLE_TILE 
                SendMessage lvwTest.hWnd, LVM_SETBKIMAGE, 0, tLBI 
                'jadikan transparan 
                SendMessageLong lvwTest.hWnd, LVM_SETTEXTBKCOLOR, 0, CLR_NONE 
            Else 
                MsgBox "Error with File '" & sI & "' :" &  Err.Description & ".", vbExclamation 
            End If 
        Else 
            MsgBox "File '" & sI & "' not found.", vbExclamation 
        End If 
    End If 
 
End Sub 
 
'//Membuat warna gradient Start(R,G,B) to End (R,G,B) 
'//FadeVertical picAlt, 255, 255, 255, 266, 233, 216, 0, lH - 20 
Private Sub FadeVertical(ByVal pic As PictureBox, iColorStart As Long, iColorEnd As Long, ByVal start_y, ByVal end_y) 
    Dim start_r As Single, start_g As  Single, start_b As Single 
    Dim end_r As Single, end_g As Single, end_b As Single 
    Dim hgt As Single 
    Dim wid As Single 
    Dim r As Single 
    Dim g As Single 
    Dim b As Single 
    Dim dr As Single 
    Dim dg As Single 
    Dim db As Single 
    Dim Y As Single 
    ColorCodeToRGB iColorEnd, end_r, end_g, end_b 
    ColorCodeToRGB iColorStart, start_r, start_g, start_b 
    wid = pic.ScaleWidth 
    hgt = end_y - start_y 
    dr = (end_r - start_r) / hgt 
    dg = (end_g - start_g) / hgt 
    db = (end_b - start_b) / hgt 
    r = start_r 
    g = start_g 
    b = start_b 
    For Y = start_y To end_y 
        pic.Line (0, Y)-(wid, Y), RGB(r, g, b) 
        r = r + dr 
        g  = g + dg 
        b = b + db 
    Next Y 
End Sub 
 
Public Function ColorCodeToRGB(lColorCode As Long, iRed As Single, iGreen As Single, iBlue As Single) As Boolean 
    Dim lColor As Long 
    lColor = lColorCode      'work long 
    iRed = lColor Mod &H100  'get red component 
    lColor = lColor \ &H100  'divide 
    iGreen = lColor Mod &H100 'get green component 
    lColor = lColor \ &H100  'divide 
    iBlue = lColor Mod &H100 'get blue component 
    ColorCodeToRGB = True 
End Function 

Contoh penggunaan:
SetLvCodeJockTextBKColor lvSuppliers, vbWhite, vbBackColor, True 'True untuk gradient  

Contoh Source Code: http://www.i-bego.com/post32199.html#p32199
READ MORE - Alternate Color/Zebra Color Untuk Listview Codejock - VB6

ADO Database dan Progress Bar - VB6 Source Code

Umumnya pada saat kita me-load database, seluruh form akan menjadi freeze (beku). Hal ini disebabkan kompiler hanya melakukan satu eksekusi kode dalam satu waktu. Ini tentu saja mempengaruhi terhadap splash form (form loading) yang dilengkapi unlimited progress bar. Pada dasarnya progress bar tersebut tidak akan pernah ditampilkan dengan baik, dan akan ditampilkan setelah database ter-load secara sempurna dan hal ini bisa dikategorikan sebagai sebuah humor dalam pemrograman. Nah, agar kompiler dapat mengeksekusi 2 kode dalam waktu bersamaan (load database/recordset dan tampilan progress bar) maka load-lah database tersebut menggunakan mode Asyncron. Nah, Asyncron ini merupakan kata kuncinya.
READ MORE - ADO Database dan Progress Bar - VB6 Source Code

Memahami Bookmark Pada Microsoft ADO - VB6 Souce Code

Masing-masing record akan memiliki bookmark. Bookmark itu sifatnya unik (berbeda satu sama lainnya). Bookmark tidak dapat dilihat. Bookmark hanya bisa ditampung dalam datatype variant. Bookmark itu ... dan lain sebagainya.

Di bawah ini merupakan contoh sederhana untuk memudahkan memahami penggunaan bookmark pada Microsoft ADO:

Download: Contoh Penggunaan Bookmark
READ MORE - Memahami Bookmark Pada Microsoft ADO - VB6 Souce Code

Mengcopy Seluruh Folder Beserta Isinya - VB6 Source

Berikut merupakan contoh source code untuk mengcopy folder beserta seluruh isi yang terdapat di dalamnya. Menggunakan Microsoft Scripting Runtime. Untuk lebih memudahkan penggunaan Anda dapat merubahnya menjadi Function.

Sumber: http://www.i-bego.com/visual-basic/copy-folder-pada-vb-t3616.html

Private Sub CopyFolder() 
    Dim fso 
    Dim sfol As String, dfol As String 
    sfol = "c:\MyFolder" ' change to match the source folder path 
    dfol = "e:\MyFolder" ' change to match the destination  folder path 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    If Not fso.FolderExists(dfol) Then 
        fso.CopyFolder sfol, dfol 
    Else 
        MsgBox dfol & " already exists!", vbExclamation, "Folder Exists" 
    End If 
End Sub 
READ MORE - Mengcopy Seluruh Folder Beserta Isinya - VB6 Source

Drag And Drop Pada Dua ListBox - VB6 Souce Code

Terkadang dalam memprogram kita membutuhkan operasi drag and drop antara dua object ListBox, contohnya untuk pembuatan wizard dan lain sebagainya. Di bawah ini merupakan contoh source codenya. Dibuat oleh Luciano Esteban Lodola pemilik situs: http://www.recursosvisualbasic.com.ar
Option Explicit 
' --------------------------------------------------------------------------------------- 
' \ -- Autor : Luciano Lodola -- http://www.recursosvisualbasic.com.ar 
' --------------------------------------------------------------------------------------- 
 
' \ -- funciNn de windows para poder obtener un elemento (Indice) de un control de lista a partir de  la psiciNn del mouse 
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long 
                 
' -- Constante / mensaje para recupera el Item a partir de la posiciNn del mouse ( con SendMessage ) 
Private Const LB_ITEMFROMPOINT = &H1A9 
Public iX As Integer 
' -------------------------------------------------------------------------------------- 
'\ -- Inicio 
' -------------------------------------------------------------------------------------- 
Private Sub Form_Load() 
 
    Dim i As Byte 
    ' -- Agregar elementos de muestra para el ejemplo 
    With List1 
        .AddItem "Impresora Epson" 
        .AddItem "Impresora Lexmark" 
        .AddItem "Monitor LG" 
        .AddItem "Monitor Samsung" 
        .AddItem "PC Pentium Dual Core" 
        .AddItem "PC Pentium Core Duo" 
        .AddItem "Impresora  lDser HP - MonocromDtica" 
        .AddItem "Impresora lDser Epson - MonocromDtica" 
        .AddItem "Impresora lDser color" 
    End With 
    ' -- Importante !!!! Habilitar el Drag con el método OLEDragMode, y el Drop para el List2 
    List1.OLEDragMode = 1 
    List2.OLEDropMode = 1 
End Sub 
 
' -------------------------------------------------------------------------------------- 
'\ -- FunciNn que retorna el Jndice del Item del List2 ( Donde se encuentra el mouse ) 
'  -------------------------------------------------------------------------------------- 
Private Function pvGetItemFromPoint(X As Single, Y As Single, lBox As ListBox) As Long 
 
    Dim indice      As Long 
    Dim XPoint      As Long 
    Dim YPoint      As Long 
    Dim ZPoint      As Long 
     
    ' -- Valor por defecto de retorno de la funciNn ( NingRn item estD seleccionado) 
    indice = -1 
     
    XPoint = CLng(X / Screen.TwipsPerPixelX)  
    YPoint = CLng(Y / Screen.TwipsPerPixelY) 
    ZPoint = CLng(YPoint * &H10000 + XPoint) 
    With lBox 
         ' -- Recupera el item seleccionado (el Jndice ) 
         indice = SendMessage(.hwnd, LB_ITEMFROMPOINT, 0, ByVal ZPoint) 
         If indice >= 0 And indice <= .ListCount Then 
            pvGetItemFromPoint = indice 
         End If 
    End With 
End Function  
' -------------------------------------------------------------------------------------- 
'\ -- Iniciar Drag del item 
' -------------------------------------------------------------------------------------- 
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 
    iX = X 
    List1.OLEDrag 
End Sub 
 
' -------------------------------------------------------------------------------------- 
'\ -- evento que se produce al soltar el item  
' -------------------------------------------------------------------------------------- 
Private Sub List2_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) 
     
    Dim lIndex As Long 
    ' -- Obtener el Jndice pasando a la funciNn 
    lIndex = pvGetItemFromPoint(X, Y, List2) 
    ' -- Agregar con el método Additem en la posiciNn indicada por el Jndice 
    If lIndex >= 0  Then 
        List2.AddItem Data.GetData(1), lIndex 
    Else 
        List2.AddItem Data.GetData(1) 
    End If 
    ' -- seleccionar el dato 
    If lIndex <> -1 Then List2.Selected(lIndex) = True 
    ' -- Opcional - eliminar el elemento del List 
    List1.RemoveItem (List1.ListIndex) 
 
End Sub 
READ MORE - Drag And Drop Pada Dua ListBox - VB6 Souce Code

Monday, November 21, 2011

Memiliki Akun Google Adsense Itu Mudah - Blogging

Artikel ini, untuk yang memahami permainan google adsense tetapi tidak/belum/gagal memiliki akun google adsense, dan sedikitnya telah memahami mengenai dunia blogging.

Mengirim artikel dan diterima menjadi publisher google adsense itu tidaklah sulit, yang sangat sulit adalah memperoleh penghasilan darinya.Sebelum Anda mengirimkan blog/artikel, ada beberapa hal yang harus diperhatikan yakni pada saat kita mengirimkan sebuah blog/artikel sebenarnya blog yang kita kirimkan tersebut pada dasarnya tidak langsung direview oleh manusia, tetapi harus melewati mesin pemindai yang dilengkapi auto respond dan sistem pakar terlebih dahulu. Jika blog yang Anda kirim tidak sesuai kreteria google (sesuai dengan sistem pakar yang diprogramkan), maka si mesin tersebut akan mengirimkan email penolakan sesuai dengan kreteria kesalahan yang terdapat pada blog tersebut (sistem pakar). Hal ini dilakukan untuk menekan biaya, tenaga, waktu, terlebih kecepatan. Kesimpulannya Google akan mengandalkan mesin bagi tugas-tugas yang seratus persen dapat diselesaikan oleh sebuah mesin. Contoh sederhananya adalah masalah yang berkenaan dengan broken link, dll.

Nah, setelah kita mengetahui bahwa Google mengandalkan mesin untuk tugas yang seratus persen bisa dilakukan mesin tersebut, lalu bagaimana dengan peran manusianya?.

Pada jaman modern dan canggih menurut versi kita sekarang (bukan versi 200 tahun mendatang), ketahuilah masih banyak sekali hal-hal yang menurut manusia sangat sederhana akan tetapi menjadi sangat-sangat rumit bahkan mustahil dilakukan oleh sebuah mesin. Contoh sederhananya mengidentifikasi gambar. Terlebih mengenai detail dari gambar tersebut, apakah wajahnya terlihat bahagia atau sedih? laki-laki atau perempuan (keduanya memiliki rambut yang sama panjang)?. Adapun kaitan dengan tulisan di atas, bagaimana jika blog yang kita submit memuat konten-konten yang tidak diperbolehkan? apakah mesin dapat menyelesaikannya? tentu saja tidak, tetapi manusia yang melakukannya. Ini sekedar contoh sederhana saja mengenai peran manusia di dalamnya.

Setelah kita memahami dua hal di atas, maka untuk mudah diterima menjadi publisher adsense ikuti langkah berikut:
  • buatlah email baru di gmail.com
  • buatlah blog baru di blogger menggunakan akun gmail tadi (bukankah harus berumur 6 bulan dengan domain sendiri?)
  • gantilah template dengan minima, ini untuk menangkal penolakan karena navigasi yang sulit
  • pastikan untuk mengisi data secara lengkap
  • buatlah beberapa belas atau beberapa puluh artikel.
  • gunakan Bahasa Inggris.
Mengenai artikel, perhatikan:
  • tidak ada broken link (penolakan kebanyakan bukan berada di sini)
  • bukan duplikat konten (100% copy paste tanpa edit)
  • Konten yang berhubungan antara judul, sub judul, isi/artikel menurut versi mesin bukan menurut versi manusia (penolakan kebanyakan berada di sini).
Dari sekian baris tulisan di atas, konten yang tidak berhubungan inilah yang paling banyak dan menjadi penyebab utama penolakan, bukan masalah domain, bukan masalah umur yang 6 bulan itu, bukan masalah Bahasa Inggris, bukan masalah duplikat konten, juga bukan masala broken link karena kita telah yakin dan memastikan serta mematuhi semuanya.

Konten yang berhubungan menurut versi manusia, belum tentu berhubungan menurut versi mesin, disinilah letak permasalahan utamanya, mengapa terjadi demikian? Ini disebabkan karena mesin tersebut bekerja dengan cara menumpuk keyword-keyword dari artikel yang kita kirimkan dan membandingkannya dengan judul-judul blog tersebut, kemudian mesin tersebut membuat keputusan sebagai blog yang memiliki konten berhubungan atau sebaliknya, dan hasilnya kebanyakan adalah blog dengan konten yang tidak memiliki hubungan menurut versi mesin, dan hasil akhirnya adalah ditolak. Nah, jika sudah demikian, bagaimana cara mengatasinya? seret dan giring saja si mesin pemindai tersebut ke daerah (blog/artikel) yang sangat sempit. Sebuah daerah (blog/artikel) yang kemungkinan peluang salah terjemahnya sangat kecil. Jika Anda memahami salah satu bahasa pemrogrman tentu hal ini lebih mudah, yakni dengan membuat artikel dari awal sampai akhir hanya berisi kode-kode saja (saya menyarankan yang ini).

Link/tautan di bawah merupakan salah satu contoh blog dari seluruh penjelasan di atas, tidak pernah di rubah baik template maupun judul-judulnya semenjak diterima menjadi publisher adsense tahun 2009. Karena tidak pernah dikelola dan sepi pengunjung, di dalamnya hanya ada satu dollar saja, padahal sudah dua tahun ya? tidak apa-apa, setidaknya rasa penasaran itu sudah terobati.

http://4basic-vb.blogspot.com

Anda diperbolehkan mengcopy paste seluruh artikel yang terdapat pada http://4basic-vb.blogspot.com
tanpa menyebutkan sumbernya, yang perlu Anda lakukan adalah mengganti judul-judul artikelnya dan mengganti header-headernya saja, agar tidak terjadi duplikat konten. Untuk memastikan tidak terdapat duplikat konten, ujilah judul-judul dan header-header yang telah Anda ganti melalui search engine google dengan memberi tanda petik di kiri dan kanan.

Blog yang baru Anda buat dan submit pertama kali tersebut harus langsung diterima menjadi publisher google adsense, jika masih ragu, pastikan sekali lagi bahwa seluruhnya telah terselesaikan dengan baik. Waktu tersedia banyak dan google sabar menunggu.

Catatan Penting:
Hindari membuat beberapa akun (misalnya Anda dan teman-teman Anda) dalam ip adress yang sama, jika satu akun dibanned, kemungkinan akan dibanned seluruhnya. Karena yang diperhitungkan mesin di sini lebih kepada IP Adress, tetapi ini hanya sekedar kemungkinan saja.
READ MORE - Memiliki Akun Google Adsense Itu Mudah - Blogging