Saya menginstall billing ini di Zencafe 1.4 dan Zencafe 1.2. Saya kira di setiap distro linux hampir sama langkah langkah dalam menginstallnya.Baiklah, mari kita mulai.
File yang diperlukan :
#SERVER = billserver5.60.tar.gz
lib_billing.tar.gz
dbsql.tar.gz
dbwarnet.tar.gz
#CLIENT = billclient5.0.20.tar.gz
lib_billing.tar.gz
Anda bsa mendownload file file tersebut disini
A. Install Xampp.
Download xampp disini
1. Masuk root
2. Extract file hasil download
#tar xzvf namafile.tar.gz -C /opt
3. Sebelumnya buat folder /opt
#mkdir /opt
4. Jalankan xampp
#/opt/lampp/lampp start
5. Buka web browser (firefox dll.) ketik : http://localhost
Bila muncul logo xampp, berarti xampp sudah jalan.
B. Install Billing Server.
1. Masuk root
2. Ketik #tar xzvf billserver5.60.tar.gz -C /usr/bin
3. Ketik #tar xzvf lib_billing.tar.gz -C /usr/lib
C. Extract dbsql dan dbwarnet
#tar xzvf dbsql.tar.gz ---> hasilnya foleder /dbsql/var/lib/mysql
#tar xzvf dbwarnet.tar.gz ---> hasilnya folder /dbwarnet/var/lib/warnet
Pindah folder mysql & warnet
Caranya :
Buka Menu > System > New Nested Login Window > masuk sebagai root > buka file manager.
Cari folder mysql & warnet hasil extract tadi lalu copy paste ke /opt/var/mysql
Kemudian klik kanan pada folder /opt/var/mysql & /opt/var/warnet. Pilih Properties >
Tab Permission > ubah permissionnya pada guest dan user pada pilihan read & write. Atau
bisa juga dengan perintah #chmod 700 pada konsole / terminal.
D. Jalankan billing server
$mkdir .vartmp
$billserver &
$billserver > maka akan muncul desktop billing server. Bila mysql sudak connect, maka
diatas desktop terdapat tulisan 'Indobilling Demo for 4 Clients'
E. Register Billing
Caranya : copy kan file registry nya ke dalam folder /home/username/.vartmp
Lalu jalankan lagi $billserver. Klik tab Help > About > isi serial numbernya (harus di ketik
manual). Lalu refresh, billing server siap dijalankan.
F. Install Billing Client.
Masuk root, dan ketik :
#tar xzvf billclient5.0.20.tar.gz -C /usr/bin
#tar xzvf lib_billing.tar.gz -C /usr/lib
#Exit
$mkdir .vartmp
$billclient &
$billclient
Maka akan muncul desktop billing client. Ketik IP server yang dituju lalu tekan tombol
connect.
Tutup konsole / terminal, maka desktop billing client juga ikut keluar.
Jalankan lagi $billclient > sampai pada tahap ini, billing client seharusnya sudah jalan dan
terkoneksi dengan billing server.
Agar billing client tidak dapat di hide, maka buat file dengan nama bill.conf dan letakkan di
folder /etc. Caranya :
Login pada New Nested Login Window dan masuk sebagai root. Buka folder /etc di file
manager lalu klik kanan dan pilih new document, beri nama bill.conf. Lalu Log out dan
jalankan billing client.Selesai.
Klik disini untuk melihat sumber artikel.
Wednesday, November 26, 2008
Install Indobilling di Zencafe 1.4 dan 1.2
Posted by renceman at 12:26 PM 0 comments
VMware di Ubuntu 8.04
Untuk nginstall VMware di Ubuntu 8.04 ternyata tidak bisa menggunakan trik di Ubuntu 7.10. Berikut step yang harus dilalui agar VMware dapat berjalan di Hardy.
- build-essential
- linux-headers-`uname -r`
- xinetd
cokorda@gutsy:/vmware$ tar xfz VMware-server-1.0.5-80187.tar.gz
cokorda@gutsy:/vmware$ ls
VMware-server-1.0.5-80187.tar.gz vmware-server-distrib
cokorda@gutsy:/vmware$ cd vmware-server-distrib/
cokorda@gutsy:/vmware/vmware-server-distrib$ ls
bin doc etc FILES installer lib man sbin vmware-install.pl vmware-vix
cokorda@gutsy:
/vmware/vmware-server-distrib/$ sudo ./vmware-install.pl
Setelah itu tinggal jawab pertanyaan yang disajikan saat melakukan instalasi, jawab sesuai dengan apa yang disarankan.
Trik tambahan untuk ubuntu 8.10
Selamat mencoba
Klik disini untuk melihat sumber artikel. SelengkapnyaPosted by renceman at 12:21 PM 0 comments
install vmware di linux ubuntu 8.10 intrepid
download file vmwarenya (contoh via console) :
wget -c http://download3.vmware.com/software/vmserver/VMware-server-1.0.7-108231.tar.gz
download file patchnya (contoh via console) :
wget -c http://www.insecure.ws/warehouse/vmware-update-2.6.27-5.5.7-2.tar.gz
install compiler (contoh via console) :
sudo aptitude install build-essential linux-kernel-headers xinetd
extract filenya (contoh via console) :
tar xf vmware-update*.tar.gz
tar xf VMware-server*.tar.gz
installing (contoh via console) :
cd vmware-server-distrib/
sudo ./vmware-install.pl
cd ../vmware-update*/
sudo ./runme.pl
Klik disini untuk melihat sumber artikel.
Posted by renceman at 11:28 AM 0 comments
VMWare Gratis !!!
Tahu VMWare? Itu adalah aplikasi yang dapat membuat komputer baru di dalam komputer kita.
Jadi nanti, kalo diinstal, kita bisa bikin komputer palsu (virtual machine). Komputer palsu ini dapat dinyalakan dan dimatikan. Kalo dinyalakan, tampilannya benar-benar seperti komputer menyala, yaitu ada memory check, bisa masuk BIOS, bahkan bisa boot via jaringan segala.Setelah dibuat, komputer palsu tersebut bisa kita instal sistem operasi apa saja. Jumlah komputer palsu yang dibuat juga bisa lebih dari satu. Setiap komputer palsu bisa kita kasi jatah memori dan harddisk sesuai keinginan. Jadi bisa saja terjadi, dalam satu komputer kita menjalankan tiga distro linux (Ubuntu, Debian, Fedora) dan dua versi windows (XP dan 2000) secara berbarengan.
Aplikasi VMWare ini sangat penting apabila kita mengembangkan aplikasi yang harus bisa bekerja dengan baik di berbagai sistem operasi dan konfigurasi.Jadi kita tidak perlu punya banyak komputer untuk bisa mengetes aplikasi secara simultan.
Beberapa minggu yang lalu, VMWare menggratiskan aplikasi servernya. Wah … langsung saya buru-buru download dan instal.
Instalasi di Linux (Debian Sarge) membutuhkan kernel header. Jadi, lakukan ini dulu:
apt-get install kernel-headers-2.6-686-smp
Baru kemudian instal VMWare.
Instalasi VMWare gampang, tinggal login sebagai root, jalankan skrip instalasi, dan next beberapa kali. Kita akan diminta memasukkan serial number. Serial number ini akan dikirim ke alamat email kita pada saat kita registrasi di websitenya. Untuk bisa mendownload kita harus teregistrasi terlebih dahulu.
Setelah VMWare terinstal, kita dapat mulai membuat komputer palsu sebanyak mungkin.
Sekarang saya bisa menggunakan Visio dan M$ Project di komputer Linux saya.
Posted by renceman at 10:24 AM 0 comments
Labels: utilities
Memperbesar kapasitas Hard Disk di VMware
Pernah dengar VMware kan? Bagi yang belum, VMware adalah suatu software virtualisasi PC dalam komputer kita. Sehingga kita seakan-akan memiliki dua buah PC, meski aslinya kita hanya punya satu buah PC. Software ini sangat bermanfaat, terutama bagi yang belajar Jaringan Komputer, kemanan, atau bagi yang ingin belajar sistem operasi lain tanpa khawatir masalah partisi hard disk.
Jadi dengan VMware, kita bisa install Linux di dalam Windows atau sebaliknya, kita bisa nginstall Windows di dalam Linux kita. Saya juga pernah ngetes MAC OS X Tiger di dalam VMware dengan komputer saya yang berbasis Windows. Udah dulu cerita VMwarenya, bagi yang tertarik lebih jauh silakan dibuka websitenya di http://www.vmware.com.
Nah bagi yang pernah install VMware, biasanya kita saat awal-awal membuat virtual machine yang baru, kita akan diminta menentukan ukuran Hard Disk yang hendak kita pakai.
Biasanya saya akan mengeset dengan ukuran secukupnya, tidak terlalu besar, misal 2 GB. Saat kita melakukan instalasi, biasanya ukuran segini dah cukup untuk sekedar install sistem operasi dan aplikasi-aplikasi standar. Cuma seiring perjalanan waktu, biasanya kita akan segera kehabisan space HD kita karena kita ngeset terlalu kecil. Masalahnya, VMware tidak memungkinkan kita untuk memperbesar ukuran hard disk begitu sudah kita set sejak awal. Untuk itu perlu dilakukan trik, agar HD di VMware kita memiliki kapasitas lebih besar tanpa harus mengorbankan sistem operasi+aplikasi yang sudah terinstall sebelumnya karena harus membuat sistem yang baru.
Untungnya, VMware memungkinkan kita memiliki HD lebih dari satu, biasanya HD kita ada di 0:0 (primary, master), CD/DVD ROM di 0:1 (primary, slave), nah kita punya dua spare, yakni 1:0 (secondary, master), dan 1:1 (secondary, slave).
Untuk itu kita create HD baru di sistem yang sudah ada, melalui menu VM-Settings (atau Ctrl-D) yang ada di VMware Workstation, kemudian pilih tombol Add, pilih menu untuk nambah Hard Disk, dan kemudian Create a new virtual disk. Tentukan jenisnya, boleh IDE (recommended) atau SCSI. Kemudian set ukuran yang kita inginkan. Selesai ! Kita sekarang punya hard disk yang baru. Next question? Untuk apa hard disk baru ini, yang kita inginkan kan memperbesar ukuran Hard Disk virtual yang sudah ada sebelumnya.
Untuk itu, kita butuh, Hiren’s Bootable CD. . Setelah kita burn ISO filenya, jadilah dia sebagai Bootable CD. Nah, nyalakan mesin virtual kita di VMware, pilih boot pertama adalah CD. Setelah dia Loading, pilih menu Disk Clone Tools, kemudian pilih Acronis True Image. Setelah dia nyala, pilih menu Disk Clone, kemudian Next, dan pilih cara manual. Tentukan source hard disk kita (tentunya hard disk lama dengan ukuran kecil), dan destinasi adalah hard disk baru yang ukurannya lebih besar. Setelah proses kloning selesai, kita setting kembali VMware kita, dan Hard Disk lama bisa kita pindah ke posisi, misal 1:1 (secondary, slave), dan hard disk baru diset 0:1 (primary, master). Done !
Sekarang hard disk baru kita yang memiliki ukuran lebih besar, telah memiliki sistem operasi+aplikasi yang sama persis dengan hard disk yang lama, hanya saja sekarang kapasitasnya jauh lebih besar, sehingga bisa diinstal sama aplikasi-aplikasi baru. Dan setelah ini, kita bisa membuang/mendelete Hard Disk yang lama.
Klik disini untuk melihat sumber artikel.
Posted by renceman at 10:10 AM 0 comments
Labels: utilities
i386, i586, i686,x86-64 ........???
Yang sudah sering berhubungan dengan kompilasi source di LINUX, pasti dah terbiasa dengan istilah i386, i586, i686 dan x86-64....dan apa arti simbol-simbol tersebut...?
Sebenernya...simbol-simbol tersebut dipakai sebagai petunjuk untuk compiler dengan tujuan optimisasi agar pada saat proses kompilasi source fitur-fitur spesifik prosesor dapat lebih optimal
INGAT!!!.....prosesor yang lebih baru dapat meng-compile source (atau menjalankan program binary) dengan menggunakan fitur prosesor yang lebih tua (alias jadul)....
TAPI.....tidak akan sebaliknya....(!!!)
biasanya....fitur-fitur prosesor yang sifatnya low-level....yang khusus dibuat sebagai keunggulan/keistimewaan 1 tipe prosesor....akan sengaja di-disable ketika program binary dijalanken di prosesor yang lebih tua.....
masalahnya adalah....program menjadi berjalan tidak optimal....atau malah akan malfunction....
tapi kebanyaken....programmer/distro dengan sengaja akan meng-compile source (menjadi program-program binary) hanya dengan memanfaatken fitur prosesor standar....biasanya hanya dengan fitur i386 ato i586....
semata2 hanya untuk tujuan kompatibalitas sistem
untuk beberapa kompilasi program aplikasi.....pemanfaatan fitur prosesor yang lebih baru, TIDAK SELALU menjamin peningkatan performa-nya secara signifikan....
bahkan....bagi end-user....perbedaanya tidak akan terlalu terasa.... :?
jadi....sering ada anggapan (dari programmer atau distro) bahwa tidak banyak gunanya meng-compile source dengan memanfaatken fitur prosesor di atas i386....
tapi khusus untuk beberapa paket....misalnya kernel, glibc, atau openssl....pemanfaatan fitur prosesor yang lebih baru akan sangat meningkatken performa kerja sistem (signifikan)....
sehingga biasanya distro dengan sengaja akan menyediaken paket binary yang sesuai dengan tipe prosesor....
simbol-simbol prosesor tersebut paling sering digunakan oleh compiler "GCC/G++" (GNU C/C++ Compiler) untuk optimasi fitur "machine dependent option" ("-m")
opsi tersebut dinyataken dg syntax = "-mtune=__"
Beberapa populer...yang termasuk dlm keluarga x86 :
# i386 #
Original Intel's i386 CPU.
# i486 #
Intel's i486 CPU. (No scheduling)
# i586 / pentium #
Intel Pentium Classic CPU (no MMX support)
# pentium-mmx #
Intel Pentium Classic core with MMX instruction set support
# i686 / pentiumpro #
Intel PentiumPro CPU
# pentium2 #
Intel Pentium2 CPU based on PentiumPro core with MMX instruction set support
# pentium3 / pentium3m #
Intel Pentium3 CPU based on PentiumPro core with MMX and SSE instruction set support
# pentium-m #
Low power version of Intel Pentium3 CPU with MMX, SSE and SSE2 instruction set support (Centrino notebooks)
# pentium4 / pentium4m #
Intel Pentium4 CPU with MMX, SSE and SSE2 instruction set support
# prescott #
Improved version of Intel Pentium4 CPU with MMX, SSE, SSE2 and SSE3 instruction set support
# nocona #
Improved version of Intel Pentium4 CPU with 64-bit extensions, MMX, SSE, SSE2 and SSE3 instruction set support
# k6 #
AMD K6 CPU with MMX instruction set support
# k6-2 / k6-3 #
Improved versions of AMD K6 CPU with MMX and 3dNOW! instruction set support
# athlon / athlon-tbird #
AMD Athlon CPU with MMX, 3dNOW!, enhanced 3dNOW! and SSE prefetch instructions support
# athlon-4 / athlon-xp / athlon-mp #
Improved AMD Athlon CPU with MMX, 3dNOW!, enhanced 3dNOW! and full SSE instruction set support.
# k8 / opteron / athlon64 / athlon-fx #
AMD K8 core based CPUs with x86-64 instruction set support
(which are supersets MMX, SSE, SSE2, 3dNOW!, enhanced 3dNOW! and 64-bit instruction set extensions.)
# winchip-c6 #
IDT Winchip C6 CPU, dealt in same way as i486 with additional MMX instruction set support.
# winchip2 #
IDT Winchip2 CPU, dealt in same way as i486 with additional MMX and 3dNOW! instruction set support.
# c3 #
Via C3 CPU with MMX and 3dNOW! instruction set support (No scheduling is implemented for this chip)
# c3-2 #
Via C3-2 CPU with MMX and SSE instruction set support (No scheduling is implemented for this chip)
# x86-64 #
AMD64 atau x86-64 atau x64 adalah prosesor dengan arsitektur 64-bit yang diciptakan (invented) oleh AMD. Merupakan superset dari arsitektur x86 dan juga didukung secara nativ. Set instruksi AMD64 saat ini digunakan di prosesor tipe Athlon 64, Athlon 64 FX, dan Opteron.
Intel (kemudian)merilis salinan arsitektur AMD64 yang diimplementasikan di Xeon generasi baru dan prosesor Pentium 4 F kemudian ganti nama rebranding menjadi EM64T. Intel juga menambahkan beberapa instruksi di EM64T terutama untuk menangani teknologi Hyperthreading.
Set instruksi AMD's x86-64 atau AMD64 merupakan usaha ambisius untuk membersihkan dan mengupdate arsitektur Intel x86-32 ke format yang lebih dekat dengan leading edge 64 bit RISC environments. Dirk Meyer adalah salah satu original co-architects dari DEC Alpha 64 bit chip disebutkan berperan dalam pembuatan spesifikasi AMD64.
NOTE :
- beberapa simbol hanya berfungsi di GCC/G++ versi yang paling baru
Klik disini untuk melihat sumber artikel.
Posted by renceman at 9:22 AM 0 comments
Tuesday, November 25, 2008
Distro turunan Slackware, Zencafe 1.0 untuk Warnet
Sedikit informasi buat temen-temen maniac Slack. Zencafe 1.0 , salah satu keluarga Zenwalk (MiniSlack) dan distro turunan Slack yang di khususkan untuk warnet telah rilis dan bisa di download di ftp://slackware.linux.or.id/pub/zencafe/iso/
Adapun beberapa paket yg disertakan didalam Zencafe 1.0 antara lain:
- Kernel 2.6.20
- Xorg 7.1.1
- OpenOffice 2.10
- Gimpshop 2.2.11
- Firefox 2.0.0.2
- Gaim 2.0beta6
- GyachEnhanced 1.0.7
- CCL Billing 0.7.1
- Deepfreeze like tools
- dan masih banyak lagi.
Untuk screenshot bisa lihat di unofficial websitenya di http://linux.blogs.ie.
Klik disini untuk melihat sumber artikel.
Posted by renceman at 12:57 PM 0 comments
Interface Antar Muka Visual Basic 6.0
Bahasa Basic pada dasarnya adalah bahasa yang mudah dimengerti sehingga pemrograman di dalam bahasa Basic dapat dengan mudah dilakukan meskipun oleh orang yang baru belajar membuat program. Hal ini lebih mudah lagi setelah hadirnya Microsoft Visual Basic, yang dibangun dari ide untuk membuat bahasa yang sederhana dan mudah dalam pembuatan scriptnya (simple scripting language) untuk graphic user interface yang dikembangkan dalam sistem operasi Microsoft Windows.
Visual Basic merupakan bahasa pemrograman yang sangat mudah dipelajari, dengan teknik pemrograman visual yang memungkinkan penggunanya untuk berkreasi lebih baik dalam menghasilkan suatu program aplikasi. Ini terlihat dari dasar pembuatan dalam visual basic adalah FORM, dimana pengguna dapat mengatur tampilan form kemudian dijalankan dalam script yang sangat mudah.
Ledakan pemakaian Visual Basic ditandai dengan kemampuan Visual Basic untuk dapat berinteraksi dengan aplikasi lain di dalam sistem operasi Windows dengan komponen ActiveX Control. Dengan komponen ini memungkinkan penguna untuk memanggil dan menggunakan semua model data yang ada di dalam system operasi windows. Hal ini juga ditunjang dengan teknik pemrograman di dalam Visual Basic yang mengadopsi dua macam jenis pemrograman yaitu Pemrograman Visual dan Object Oriented Programming (OOP).
Visual Basic 6.0 sebetulnya perkembangan dari versi sebelumnya dengan beberapa penambahan komponen yang sedang tren saat ini, seperti kemampuan pemrograman internet dengan DHTML (Dynamic HyperText Mark Language), dan beberapa penambahan fitur database dan multimedia yang semakin baik. Sampai saat buku ini ditulis bisa dikatakan bahwa Visual Basic 6.0 masih merupakan pilih pertama di dalam membuat program aplikasi yang ada di pasar perangkat lunak nasional. Hal ini disebabkan oleh kemudahan dalam melakukan proses development dari aplikasi yang dibuat.
Pembuatan program aplikasi menggunakan Visual Basic dilakukan dengan membuat tampilan aplikasi pada form, kemudian diberi script program di dalam komponen-komponen yang diperlukan. Form disusun oleh komponen-komponen yang berada di [Toolbox], dan setiap komponen yang dipakai harus diatur propertinya lewat jendela [Property]. Menu pada dasarnya adalah operasional standar di dalam sistem operasi windows, seperti membuat form baru, membuat project baru, membuka project dan menyimpan project. Di samping itu terdapat fasilitas-fasilitas pemakaian visual basic pada menu. Untuk lebih jelasnya Visual Basic menyediakan bantuan yang sangat lengkap dan detail dalam MSDN. Toolbox berisi komponen-komponen yang bisa digunakan oleh suatu project aktif, artinya isi komponen dalam toolbox sangat tergantung pada jenis project yang dibangun.
Klik disini untuk melihat sumber artikel.
Posted by renceman at 11:27 AM 0 comments
Labels: programs
ActiveX Component
Bagi beberapa penguna bahasa Visual Basic ( selanjutnya kita sebut VB ) akan terdengar canggung dengan judul di atas. Terminologi di atas merupakan “Panggilan” saja, tapi tekniknya mungkin sudah sering dipakai dalam pekerjaan sehari-hari.
Sebelum ke sana mari kita lihat dasarnya dahulu dan term yang di pakai pada artikel ini adalah term VB developer.
- ActiceX Component
- Com and ActiveX
- Component Binding
- Late Binding
- Early Binding
- Tips
- Kesimpulan
ActiveX Component
ActiveX Component sebuah standar Container Class yang dapat di gunakan oleh satu atau lebih aplikasi.
Agak membingungkan bukan, untuk lebih mudahnya seperti ini:
Anda memiliki sebuah Public Metode di dalam Class anda dan Class anda ini ada didalam sebuah Component yang memiliki standar untuk dapat berbicara secara binary dengan binary lainnya sesuai standar yang ada.
ActiveX Component biasa di sebut Server Aplikasi, karena ia meng-service aplikasi yang menggunakannya.
Sedang yang memanggil-nya di sebut Client Aplikasi. Tentu karena ia meng-consume ActiveX server tersebut.
Contohnya:
Microsoft Excel, ia merupakan software yang di buat dengan Visual C++. Dan ia membuat ActiveX atau OLE object-nya agar pengguna VB dapat meng-akses atau membuat sebuah Worksheet Excel di dalam VB aplikasi.
ActiveX Excel bisa di sebut sebagai Server aplikasi dan VB tentu Client Aplikasinya.
COM and ActiveX
Component Object Model ( selanjutnya kita sebut COM ) merupakan teknologi di belakang ActiveX ini. COM ini yang membantu kita meng-expose method dan property kita kepada object lain serta membuat kedua object itu saling ber-’bicara’.
Implement dari Interface ( baca Antar Muka ) IUnKnown yang membuat COM kita melakukan keajaibannya.
( sebetulnya ada satu lagi, mungkin di topik yang lain )
Setiap ActiveX yang kita buat, harus meng-implement IUnknown ini. Sebagai VB developer, ini sudah dilakukan secara automatis oleh IDE VB.
Sekarang kita akan melihat secara detail bagaimana ia bekerja.
1. Ketika VB aplikasi kita bekerja, maka ia akan mencari di Window Registry untuk melihat apakah ada Excel Server-nya,
2. Setelah itu Excel Server itu di invoke/bangkitkan dan load as server ( terjadi di memory ),
3. Client aplikasi ( VB kita ) akan me-request ke pada Excel server lewat interface IUnKnown,
4. Dan Excel server itu juga menjadi client dari VB aplikasi lewat interface IUnKnown.
Walau terdengar sedikit rumit, tapi itu menunjukan mereka menjadi client server bagi aplikasi. VB merupakan client bagi Excel server tapi sekaligus menjadi Server bagi client Excel aplikasi,
5. Pada saat Client VB meng-request kepada IUnKnown, ia menggunakan QueryInterface untuk meminta kepada Excel Server interface yang ia miliki ( dalam hal ini Whorksheet ),
6. Bila Excel Server response-nya maka hasil dari IUnknown yang di kirim oleh client Excel kepada VB Server akan di pergunakan oleh VB sebagai bagian dari aplikasi-nya.
Jadi setiap metode dan property yang di declare class akan memiliki interface IUnKnown, agar dapat di akses oleh penggunan interface IUnKnown lainnya.
Analoginya seperti kita meng-contact seseorang lewat telepon. kita men-dial nomor, mendapatkan respon dan merespon dengan pembicaraan. Kita menjadi Client bagi yang kita telepon dan kita menjadi Server bagi yang kita telepon.
Component Binding
Saat process kita me-request dan meng-load ActiveX Server di sebut Component Binding ( baca: Mengikat Component )
Ada 3 macam tipe binding-nya:
1. Early Binding
2. Late Binding
3. Very Early Binding ( tidak ada dalam VB )
Late Binding
Dalam VB kita tanpa perlu me-reference ke binary tertentu. Jadi VB IDE tidak menyimpan GUID dari ActiveX server.
code:
Dim oXL as Object
Set oXL = CreateObject("Excel.Application")
Karena ia tidak di reference maka ia tidak memiliki list dari interface ‘Excel.Application’.
Early Binding
Teknik binding ini yang sering kita pakai dalam VB.
Cara kerjanya agak sedikit berbeda. Early Binding mengharuskan kita menyimpan GUID dari ActiveX server itu.
Biasanya dilakukan di References Dialog pada VB IDE, dan tercatat di Project file.Jadi ketika aplikasi kita meload ActiveX server itu, kita mencari parameter di window registry sesuai dengan GUID yang ada dan mencari file Type LiBrary ( selanjutnya di sebut TLB ).
Dalam TLB ini terdapat list dari Interface yang di miliki oleh ActiveX server itu.
Maka ketika di design time IDE, kita dapat melihat Method dan Property dari ActiveX server-nya. ( maksudnya: namaobject kemudian di titik muncul dropdown dari metode dan property -nya ).
code:
Dim oXL as Excel.Application
Set oXL = new Excel.Apllication
Tips
Secara performa, Early Binding jauh lebih baik dari Late Binding. Jadi untuk VB aplikasi lebih di sarankan menggunakan Early Binding, mengingat overhead yang terjadi ketikan melakukan Late Binding.Lalu kapan kita menggunakan Late Binding? Pada saat kita akan menggunakan remote object maka kita menggunakan Late Binding, seperti pada DCOM ( Distribute Component Object Model ) yang gunakan secara standalone ataupun sebagai transport buat MTS atau COM+.
contoh:
Dim oXL as Object
Set oXL = CreateObject("Excel.Application", "NameServer")
Satu lagi ialah ketika kita menghendaki aplikasi kita me-reference ActiveX karena masalah versioning, karena setiap kita merubah interface maka siganture dari TLB akan berubah.
Untuk Active Server Pages, memang untuk menggunakan COM kita menggunakan Late Binding. Tapi tidak di anjurkan menggunakan hanya CreateObject.
contoh:
Dim oXL
Set oXL = Server.CreateObject("Excel.Application")
Secara Explicit, meng-create object di memory server.
Kesimpulan
Kita tidak membahas COM secara mendalam, topik ini hanya memperkenalkan konsep dari Component Binding dari COM teknologi.
Dari pemaparan di atas kita bisa membedakan Early dan Late Binding dalam penggunaannya di VB.
Klik disini untuk melihat sumber artikel
Ilmuwan Australia Buat Internet 100 Kali Lebih Cepat
Pengguna komputer yang frustasi dengan koneksi internet lambat sebentar lagi dapat menelusuri web 100 kali lebih cepat berkat teknologi baru dari Australia. Ilmuwan dari Universitas Sydney mengatakan bahwa mereka telah mengembangkan teknologi baru yang dapat mempercepat internet tanpa membebankan biaya tambahan kepada pengguna.
Digambarkan sebagai "retak kecil pada sebuah gelas," sirkuit photonic yang terintegrasi ini meningkatkan kinerja serat optik tradisional, kata Profesor Ben Eggleton.
"Sirkuit ini menggunakan retakan sebagai pedoman atau jalur informasi, mirip seperti kereta yang dapat berpindah dari satu rel ke rel lain, tetapi perpindahan ini hanya membutuhkan waktu satu picodetik. Ini berarti dalam satu detik tombol ini aktif dan non-aktif sekitar satu juta kali."
Prof Eggleton mengatakan bahwa teknologi ini telah dikembangkan selama empat tahun terakhir. Saat ini kita masih menggunakan elektronik untuk switching yang bekerja cukup baik, tetapi dengan majunya kita menuju masa depan berteknologi tinggi, pemakai menginginkan internet yang memuaskan.
Prof Eggleton mengatakan pada pengujian awal teknologi ini menunjukkan kemungkinan memperoleh kecepatan internet sampai dengan 60 kali dari jaringan Telstra yang ada sekarang.
Jika dikembangkan lebih lanjut, sirkuit ini dapat menghasilkan kecepatan sampai dengan 100 kali, katanya. "Kita berbicara mengenai jaringan yang memiliki potensi peningkatan kecepatan sampai dengan 100 kali tanpa membebankan pelanggan dengan biaya lebih."
di sini untuk sumber artikel.
Posted by renceman at 10:35 AM 0 comments
Labels: internet
11 Situs Gratis untuk Bertukar File Besar dengan Cepat
File hosting gratis mungkin sudah tidak menjadi masalah besar dengan cepatnya perkembangan teknologi informasi yang sedemikian cepat, tetapi saat ini masih sulit untuk menemukan situs berkecepatan tinggi yang dapat membantu Anda untuk dengan mudah mengirim atau menerima file berukuran besar. Dan inilah 11 situs gratis yang bisa membantu Anda dalam mengirim atau menerima file berukuran besar:
1. FileBanker : Gratis File Hosting 10GB
FileBanker dapat membantu Anda mengirim file dengan cepat tanpa spam. Anda tidak akan dipaksa untuk mendaftar atau membayar. Ketika Anda harus mengirim sebuah file yang terlalu besar untuk dikirim melalui email, maka FileBanker dapat membantu Anda dengan cepat.
2. DropSend : Meng-email File Besar dengan Mudah dan Aman
Situs untuk berbagi file yang bagus untuk mengirim dan menerima file besar. Anda juga dapat menyimpan file Anda di DropSend. Jasa mereka cepat, sederhana dan aman.
3. 2Big2Send : Cepat, Mudah, Gratis
Memungkinkan Anda untuk mengirim file besar yang melebihi batas penyedia jasa email. Mereka melakukan hal ini dengan meminta Anda meng-unggah (upload) file sebesar apapun ke server penyimpan mereka lalu Anda dapat mengirim email dari sistem mereka dengan sebuah link ke file tersebut.
4. Badongo : Gratis Hosting File Dan Gambar
Badongo memberikan pengguna link ke file yang dapat dengan mudah dikirim melalui email atau IM untuk dilihat atau diunduh tanpa harus mengkhawatirkan tentang ukuran atau batasan dari aplikasi IM atau email. Badongo memungkinkan pengguna untuk bergabung dan membentuk jaringan komunitas dimana Anda diperbolehkan mengakses file yang diunggah oleh para anggotanya.
5. Gigasize : Host dan Berbagi File
Gigasize adalah jasa hosting file yang gratis. Dengan gigasize Anda dapat meng-unggah file besar dengan satu klik.
6. Share Send : Cara Mudah untuk Membagi File
Share Send adalah situs berbagi file yang mudah dan sederhana. Tidak membutuhkan pendaftaran, Anda hanya perlu meng-unggah file dan Anda akan mendapatkan sebuah url untuk membaginya dengan teman atau orang lain.
7. File ai: Membagi File Besar untuk Email dengan Aman dan Gratis
File ai adalah situs gratis yang memungkinkan penggunanya untuk berbagi file yang tidak dapat dikirimkan melalui email. Anda tidak perlu mengunduh atau menginstal apapun dan file Anda tidak diunggah ke server apapun. File Anda akan dienkripsi dan dikirim secara peer-to-peer melalui browser Anda.
8. Windows Live SkyDrive
Windows Live SkyDrive bekerja dengan baik pada Windows apapun atau Mac dengan Firefox 1.5+ atau IE 6+. SkyDrive menyediakan kapasitas penyimpanan gratis sebesar 5 GB yang dapat diakses dari komputer apapun yang memiliki akses internet. Anda dapat membuat folder pribadi atau umum dan Anda apat memutuskan siapa saja yang memiliki akses ke masing-masing folder.
9. ADrive : Revolusi Backup dan Penyimpanan Online
ADrive.com saat ini memimpin dalam industri backup dan penyimpanan data online dengan menawarkan kapasitas penyimpanan terbesar di internet.
10. Oosah : Galeri, Slideshow dan Berbagi File Online
Oosah adalah situs hosting mudah pakai tetapi kaya dengan konten web 2.0. Di sini Anda dapat mengatur semua konten digital media Anda mulai dari foto, video hingga audio. sushi juga sebelumnya pernah membahas layanan ini secara mendetil.
11. Mozy Online Backup: Sederhana, Otomatis, Aman
Mozy dapat mem-backup semua dokumen, foto, file penting dan lainnya di internet.
Posted by renceman at 9:53 AM 0 comments
Labels: internet
Empat Linux Mini untuk Flash Disk Anda
Sekarang ini, hanya dibutuhkan sebuah flash disk mini dan program seperti UNetBootin untuk menciptakan sebuah Linux portabel yang bisa dijalankan di semua komputer yang mendukung boot dari USB. UNetbootin memiliki daftar distro yang didukung, tetapi tidak memberikan petunjuk mana pilihan yang terbaik untuk digunakan.
Di bawah ini, terdapat 4 program yang tidak perlu dijalankan dari hard disk yaitu: Damn Small Linux, Puppy Linux, Xubuntu dan Fedora. Baca beberapa penjelasannya di bawah ini dan silakan tentukan mana yang terbaik bagi anda.
Keterangan: semua sistem di bawah ini kecuali satu dibuat dengan UNetbootin versi terbaru. Semua distro diuji pada laptop yang sama yaitu Thinkpad 2.0 GHz Centrino Duo dengan RAM 2GB. Fedora 9 dijalankan dengan live USB creator miliknya sendiri (informasi lebih lanjut, klik di sini.
1. Damn Small Linux 4.46
Distro yang berukuran sangat kecil dan efisien yang menggunakan versi lama dari kernel Linux. Sangat cocok untuk perangkat keras yang sudah berumur tetapi tidak disarankan untuk digunakan di PC baru.
* Syarat minimum: prosesor Intel 486 dengan RAM 24MB
* Ukuran: 50MB (selamanya, menurut kepala proyek)
* Waktu boot: 23,1 detik
* Kelebihan: browser Firefox dan Dillo yang super ringan. Akses ke banyak fitur tambahan seperti server SSH/FTP dan Conky sudah tersedia. Dapat menggunakan klik kanan untuk mengakses hampir segalanya semua fitur distro ini
* Kekurangan: menu-menu yang terlalu padat. Deteksi perangkat keras yang kurang, tidak mendeteksi tetikus USB ThinkPad, kartu Wi-Fi Intel dan audio. Hanya menggunakan VESA untuk tampilan grafis.
* Cocok untuk: siapapun dengan perangkat keras yang sudah sangat tua atau siapapun yang merasa nyaman melakukan banyak hal dari command line.
2. Puppy LinuxPuppy Linux 4.1
Sistem ringan yang bisa di-boot dan dijalankan sepenuhnya pada USB. Jika sistem memiliki RAM yang lebih dari 256MB, Puppy bisa memindahkan dirinya penuh ke RAM disk sehingga Anda dapat mencabut flash disk Anda dari komputer dan terus mengoperasikan Puppy Linux.
* Syarat minimum: Pentium 166MMX dengan RAM 128MB
* Ukuran: 94MB
* Waktu boot: boot pertama 43,5 detik sambil memilih konfigurasi, akan lebih lama jika Anda memilih video driver XORG yang lebih baik. Boot setelah konfigurasi tersimpan: 32 detik.
* Kelebihan: wizard untuk membuat koneksi jaringan. Dukungan untuk MP3 dan media lainnya (bahkan menulis Blu-ray) pada boot pertama. Mengemas banyak fitur unik seperti Puppy podcast grabber, PDF converter, custom Puppy distro maker, Gparted partition editor dan password manager. Puppy juga menawarkan wizard untuk mengaktifkan perangkat keras yang tidak secara otomatis terdeteksi dan beberapa tugas lainnya.
* Kekurangan: boot pertama yang lamban dan opsi video. Konfigurasi nirkabel harus dikonfigurasi secara manual dan kemudian menghilang lagi. Seperti Damn Small Linux, menu agak padat dan sulit dinavigasi.
* Cocok untuk: siapapun yang mencari sistem yang bekerja pada ukuran mini hingga Linux portabel yang berkinerja tinggi
3. Xubuntu 8.04
Pada dasarnya adalah Ubuntu yang dioptimisasi untuk mengoperasikan Xfce desktop environment yang jauh lebih ringan dari Gnome.
* Syarat minimum: prosesor sekelas Pentium dan RAM 128MB untuk penggunaan LiveCD (192 untuk instalasi)
* Ukuran: 544MB
* Waktu boot: 48,4 detik
* Kelebihan: aplikasi dan fitur spesifik Ubuntu (Add/Remove programs, modifikasi Firefox, setting manager, dan lain-lain). Juga mendukung berbagai aplikasi GNOME dan/atau KDE. Bisa diinstalasikan pada Windows tanpa membutuhkan partisi tambahan (via Wubi). Network manager menawarkan kemudahan koneksi nirkabel. Dukungan untuk akses drive NTFS.
* Kekurangan: sistem yang berada pada ambang batas bawah RAM minimum akan berjalan lambat jika membuka beberapa aplikasi secara bersamaan.
* Cocok untuk: pada dasarnya siapapun yang menyukai Ubuntu, tetapi ingin mengecilkannya pada sebuah USB, dengan beberapa programnya dimodifikasi.
4. Fedora 9 Live
Proyek Fedora memiliki fitur Live USB maker yang dapat dipakai di Windows sehingga mengemas Fedora ke dalam sebuah USB tanpa merusak data-data lain sangatlah mudah.
* Syarat minimum: Pentium II 400MHz dan RAM 256MB
* Ukuran: mendekati 725MB
* Waktu boot: 45,5 detik
* Kelebihan: mendukung perangkat keras arsitektur PowerPC. Persistent overlay untuk menyimpan dokumen dan data yang bisa dikustomisasi. Kuat, GNOME dan KDE yang sudah diperbaharui, dengan beberapa fitur tambahan.
* Perbaikan yang dibutuhkan: memungkinkan akses drive NTFS dan akses media akan sangat baik jika telah dijadikan dasar (default). Terkadang menyangkut (hang) ketika sedang mengakses fitur sistem tertentu.
*
* Cocok untuk: siapapun yang memiliki komputer cukup canggih, terminal USB, dan menginginkan GNOME dan KDE yang terbaru.
Silakan coba dan tentukan distro USB mana yang paling cocok untuk Anda. Untuk sumber artikel, dan ingat, distro Linux yang ditulis di sini hanyalah segelintir dari distro Linux yang tersedia secara gratis di internet saat ini, sehingga apabila distro-distro di atas belum cocok untuk kebutuhan Anda, melakukan sedikit riset di Google akan memberikan Anda lebih banyak opsi lagi.
Posted by renceman at 9:32 AM 0 comments
Internet Explorer 8 Ditunda Hingga Tahun Depan
Microsoft telah mengkonfirmasikan bahwa Internet Explorer 8 (IE8) akan dirilis di tahun 2009, mengumumkan bahwa mereka akan mengeluarkan sebuah versi release candidate (RC) di kuartal pertama tahun depan sebelum akhirnya mengeluarkan versi final di tahun yang sama. Perubahan jadwal ini berarti Microsoft tidak akan dapat mengikuti target awal mereka untuk merilis IE8 di akhir tahun 2008.
Dean Hachamovitch, general manager IE menulis di blog IE bahwa "versi publik IE berikutnya (biasanya dinamakan release candidate mengindikasikan berakhirnya periode beta. Kami menginginkan komunitas pengguna dan perusahaan teknis yang tertarik dengan teknologi browser untuk menganggap update ini sebagai sinyal kuat bahwa IE8 secara efektif sudah lengkap dan rampung."
Microsoft pertama kali mendemonstrasikan IE8 pada bulan Maret di konferensi Mix. Salah satu fitur baru yang ditawarkan versi terbaru dari browser besutan Microsoft ini adalah perlindungan malware, dukungan untuk standar web yang lebih baik, mode private browsing yang tidak meninggalkan jejak pemakaian web dan fitur "Web Slice."
Versi beta pertama IE8 telah dirilis di bulan Maret sedangkan versi beta dua IE8 telah dirilis beberapa bulan lalu. Hachamovitch menyarankan kepada para pengembang situs untuk menguji situs mereka dengan IE8 dan melaporkan isu-isu penting kepada Microsoft.
Microsoft akan "sangat selektif dalam melakukan perubahan dalam versi berikutnya dan versi final. Kami hanya akan melakukan perubahan untuk isu-isu yang paling penting saja. Kami akan menjelaskan semua perubahan yang kami lakukan antara dua versi ini dengan sangat jelas."
Apabila tertarik untuk menguji IE8, Anda dapat mengunduh IE8 Beta 2. (via CNet)
Posted by renceman at 9:28 AM 0 comments
Labels: windows
Microsoft Akan Rilis Antivirus Gratis
Untuk memenuhi kebutuhan keamanan PC di negara berkembang, PC berukuran kecil dan terus bertambahnya malware, Microsoft berencana untuk mengeluarkan produk sekuriti baru dengan kode nama "Morro" di pertengahan kedua 2009 yang menawarkan perlindungan terhadap virus, spyware, rootkit dan trojan. Solusi ini akan disediakan secara bebas biaya kepada para konsumen dan dirancang untuk menggunakan sumber daya seminimal mungkin, ideal untuk PC dengan spesifikasi yang lebih rendah.
Amy Barzdukaz, direktur senior manajemen produk untuk divisi layanan online dan Windows di Microsoft mengatakan bahwa "pelanggan di seluruh dunia mengatakan kepada kami bahwa mereka membutuhkan perlindungan lengkap yang terus menerus dari ancaman-ancaman keamanan baru, dan kami dengan serius menanggapi kekhawatiran mereka. Produk baru yang gratis ini memungkinkan kita untuk melindungi lebih banyak lagi konsumen, terutama di wilayah di mana tingkat pertumbuhan PC baru hanya dikalahkan oleh tingkat pertumbuhan malware.
Morro akan menggunakan teknologi anti malware yang digunakan di produk Microsoft saat ini yang telah memenangkan penghargaan VB100 dari Virus Bulletin, sertifikasi Checkmark dari Coast Labs dan sertifikasi dari Internaional Computer Security Association Labs. Solusi baru ini akan mengantarkan perlindungan terhadap malware yang sudah ditawarkan melalui berbagai layanan korporat Microsoft, akan tetapi tidak akan mengemas banyak fitur yang tidak berhubungan dengan keamanan seperti produk keamanan lainnya.
Morro akan tersedia sebagai unduhan gratis untuk Windows XP, Windows Vista dan Windows 7. Saat digunakan dengan berbagai fitur keamanan dan privasi yang terus diperbaharui di Windows dan Internet Explorer, solusi baru ini menawarkan konsumen solusi keamanan gratis untuk melindungi dirinya dari sebagian besar ancaman keamanan online.
Windows Live OneCara yang menjadi produk keamanan unggulan Microsoft hari ini akan terus dijual untuk Windows XP dan Vista hingga tanggal 30 Juni 2009. Penjualan OneCare akan dihentikan secara bertahap saat Morro telah tersedia. (Microsoft)
Walaupun hal ini merupakan berita baik bagi semua pengguna Windows, berita ini merupakan kabar terburuk bagi banyak perusahaan yang berkecimpung dalam bisnis anti malware seperti Symantec, McAfee, Grisoft dan banyak lagi.
Posted by renceman at 9:26 AM 0 comments
Labels: windows
Codename Ubuntu 9.04 "Jaunty Jackalope"
Di komunitas Ubuntu ada satu momen yang sering dinanti oleh para pengguna Ubuntu, yaitu momen dimana codename pengembangan untuk rilis Ubuntu berikutnya diumumkan. Codename Ubuntu sendiri memang cukup unik, sistem penamaannya berasal dari frase nama binatang dengan variasi rima atau huruf depan yang bersesuaian. Dan pada tanggal 8 September 2008, Mark Shuttleworth telah mengumumkan codename pengembangan untuk rilis Ubuntu 9.04 yang dinamakan: "Jaunty Jackalope".
"As we approach the launch of Ubuntu 8.10, it's time to create space for future plans, and so I'm writing to introduce you to The Jaunty Jackalope.
Jaunty, the code name for what will most likely become Ubuntu 9.04, will be the focus of our efforts from November through to April next year. We will be gathering forces in Mountain View on 8th - 12th December to survey the upstream landscape and finalize Jaunty plans, enjoying the excellent hospitality of Google and Silicon Valley's abundance of talent and innovation. The Ubuntu Developer Summit is the social and strategic highlight of each release cycle and it would be a great pleasure to welcome you there. Jono Bacon has written up a http://www.jonobacon.org/?p=1278 guide to sponsorship for those who would have a substantial amount to offer at the Summit.
The Warrior Rabbit is our talisman as we move into a year where we can reasonably expect Ubuntu to ship on several million devices, to consumers who can reasonably expect the software experience to be comparable to those of the traditional big OSV's - Microsoft and Apple. The bar is set very high, and we have been given the opportunity to leap over it. It's a once-in-a-lifetime chance to shine, and we want to make sure that the very best thinking across the whole open source ecosystem is reflected in Ubuntu, because many people will judge free software as a whole by what we do.
There are some specific goals that we need to meet in Jaunty. One of them is boot time. We want Ubuntu to boot as fast as possible - both in the standard case, and especially when it is being tailored to a specific device. The Jackalope is known for being so fast that it's extremely hard to catch, and breeds only when lightning flashes. Let's see if we can make booting or resuming Ubuntu blindingly quick.
Another goal is the the blurring of web services and desktop applications. "Is it a deer? Is it a bunny? Or is it a weblication - a desktop application that seamlessly integrates the web!" This hare has legs - and horns - and we'll be exploring it in much more detail for Jaunty. We have already laid some foundations for weblications in the online services discussions that took place in Prague, but since we fully expect those services to ship in 9.04 the discussion will be that much more intense in Mountain View.
Those bizarre-but-fearsome antlers might well remind one of the intricate pattern of collaboration between developers in a distributed version control system. So it's fitting that Jaunty will see us move all of Ubuntu into Bazaar. For the first time, any developer will be able to branch any Ubuntu package with a single bzr command, publish their changes, and perhaps even publish builds of that package in their own Package Archive. We will also make the developer community structure of Ubuntu much richer - in addition to MOTU and core-dev, we are introducing ways for developers to participate in specific applications, either at the package-upload level or at the version-control level. Whatever your level and specialisation of interest, we'll make sure that you can participate accordingly.
December's UDS is likely to be packed full of interesting people and ideas. I very much look forward to seeing everyone there. "There he goes! That way!"
Mark"
Posted by renceman at 9:22 AM 0 comments
Jaunty Jackalope Alpha 1 Release 22 Nopember 2008
Ubuntu 9.04 atau juga disebut The Jackalope akan menjadi sistem operasi Ubuntu yang ke-10 telah hadir. Mark Shuttleworth telah mengumumkan kode nama untuk Ubuntu 9.04 yang akan dirilis di bulan April tahun depan: 'Jaunty Jackalope'. Shuttleworth menulis di milis Ubuntu bahwa 'kelinci prajurit ini akan menjadi jimat dalam memasuki tahun di mana kita memprediksi Ubuntu akan dikemas ke dalam beberapa juta komputer ke konsumen yang mengantisipasi pengalaman pemakaian yang sebanding dengan vendor sistem operasi tradisional — Microsoft dan Apple.' Seperti banyak perangkat lunak yang diluncurkan akhir-akhir ini, versi Ubuntu terbaru juga akan mengutamakan kinerja — sebuah faktor yang menurut saya sangat penting dan akan menjadi tren besar di industri komputer dalam waktu dekat ini.
Ada beberapa tujuan utama yang harus tercapai di Jaunty, salah satunya adalah waktu boot. Canonical ingin agar Ubuntu dapat melakukan boot secepat mungkin baik versi standarnya ataupun versi Ubuntu yang dikustomisasi untuk alat-alat tertentu. Jackalope terkenal gesit, sulit ditangkap dan berkembang biak hanya saat kilat menyambar. Satu lagi tujuan Jaunty adalah mengintegrasikan layanan web dan aplikasi desktop menjadi 'weblication — sebuah aplikasi desktop yang terintegrasi kuat dengan web.'Setelah para pengembang merampungkan peluncuran Ubuntu 8.10 Intrepid Ibex di akhir bulan Oktober, Canonical akan mendiskusikan pengembangan Jaunty di Ubuntu Developer Summit berikutnya yang akan digelar di Mountain View, markas besar Google.Berikut adalah jadwal peluncuran Jaunty Jackalope :
November 22th, 2008 - Alpha 1 release
December 18th, 2008 - Alpha 2 release
January 15th, 2009 - Alpha 3 release
February 5th, 2009 - Alpha 4 release
February 26th, 2009 - Alpha 5 release
March 12th, 2009 - Alpha 6 release
March 26th, 2009 - Beta release
April 16th, 2009 - Release Candidate
April 23rd, 2009 - Final release of Ubuntu 9.04
Beritanya silahkan baca di https://lists.ubuntu.com/archives/ubuntu-devel-announce/2008-November...
File bisa di download di :
- http://cdimage.ubuntu.com/releases/jaunty/alpha-1/ (Ubuntu)
- http://cdimage.ubuntu.com/kubuntu/releases/jaunty/alpha-1/ (Kubuntu)
- http://cdimage.ubuntu.com/xubuntu/releases/jaunty/alpha-1/ (Xubuntu)
- http://cdimage.ubuntu.com/ubuntustudio/releases/jaunty/alpha-1/ (UbuntuStudio)
Posted by renceman at 8:59 AM 0 comments
Monday, November 24, 2008
Membuat Sendiri File OCX (ActiveX Control) - Masino Sinaga
Pada Visual Basic yang Anda gunakan, mungkin Anda akan menggunakan suatu control yang terdiri dari sebuah control label dan control shape, dan digunakan secara berulang-ulang di atas form Anda. Jika Anda mengalami hal seperti ini, maka suatu ide yang sangat bagus untuk menghemat sebagian besar waktu Anda (dan tentu memiliki banyak waktu yang menyenangkan dengan hasil yang memuaskan) untuk membuat sebuah control ActiveX yang dapat digunakan di project Anda setiap saat.
Berikut ini kita akan mencoba membuat sebuah ActiveX Control yang sederhana bernama "ShapeLabel". Walaupun control ini sendiri tidaklah begitu menarik, dengan membuat control ini, Anda akan mengetahui dengan cepat sebagian besar event yang digunakan oleh ActiveX Control, menunjukkan bagaimana menjalankan source code tersebut saat design-time, dan menunjukkan langkah-langkah dasar untuk membuat dan menggabungkan sebuah halaman property.
ActiveX control dapat ditambahkan ke project dengan tipe apapun. Ketika sebuah control dikompilasi sebagai bagian dari sebuah file .exe, biar bagaimanapun, dia tidak dapat digunakan oleh aplikasi-aplikasi lainnya. Kontrol ShapeLabel akan dikompilasi ke sebuah file .ocx sehingga bisa digunakan bersama. Oleh karena itu, project ControlDemo akan dibuat sebagai sebuah project ActiveX control.
Sebuah project ActiveX control dapat terdiri dari banyak control yang ingin Anda buat. Ketika membuat project, file .ocx yang dihasilkan akan terdiri dari semua control yang telah Anda tambahkan.
Untuk membuat project ControlDemo:
1.
Dari menu "File", klik "New Project" untuk membuka sebuah kotak dialog project baru. (Hal ini akan menutup project atau project group yang sedang terbuka; Anda akan diminta untuk menyimpan perubahan yang baru saja Anda buat). Dobel klik icon ActiveX Control untuk membuat sebuah project baru. Visual Basic otomatis menambahkan sebuah UserControl Designer ke project ini. Nama defaultnya adalah "UserControl1", dan akan kelihatan sebagai caption dari designer-nya.
2.
Pada menu "Project", klik "Project1 Properties" untuk membuka kotak dialog. Pilih tab "General", isikan informasi yang ditampilkan di bawahnya. Di antaranya: pada kotak isian "Project Name", masukkan: "Project_ShapeLabel" dan pada kotak isian "Project Description", masukkan: "ActiveX Control Creation Demo", lalu klik tombol "OK".
3.
Dobel klik "UserControl1" di jendela "Project Explorer" untuk menampilkan designer.
4.
Di jendela "Properties", dobel klik property "Name" dan ganti nama usercontrol menjadi: "ShapeLabel". Nama yang baru kelihatan di caption (bagian atas) dari designer dan di jendela "Project Explorer". Nama yang Anda pilih menjadi nama class dari control Anda, sama seperti "CommandButton" adalah nama class untuk sebuah control command button. Catatan bahwa: jendela "Properties" kelihatan seperti jendela untuk sebuah form milik Visual Basic. Beberapa properti yang Anda gunakan kelihatannya hilang, tapi, ada properti yang tidak dimiliki oleh form di Visual Basic. Properti-properti ini tidak dibahas di sini. Anda bisa melihat informasi tentang hal ini selengkapnya pada artikel yang berjudul "Building ActiveX Controls". Silahkan cari dari google.com.
5.
Dalam control designer, atur ukuran control dengan mendrag pada sudut kanan bawah dari control, drag ke atas dan ke kiri akan membuat control semakin kecil. Hal ini menentukan ukuran default dari control.
6.
Dari menu "File", klik "Save Project" untuk menyimpan file-file project ini. Namakan mereka dengan nama yang ada di tabel berikut ini. Visual Basic akan menambahkan dengan ekstensi yang sesuai dengan file-nya secara otomatis.
File Nama File Ekstensi
UserControl ControlDemo_ShapeLabel .ctl
Project ControlDemo_ShapeLabel .vbp
Informasi binary di sebuah control - seperti bitmaps - akan disimpan di dalam sebuah file binary dengan nama yang sama, dan memiliki ekstensi .ctx.
Untuk mencoba control ShapeLabel, Anda membutuhkan sebuah form. Anda tidak dapat hanya menambahkan sebuah form ke ControlDemo dan menjalankan project, karena sebuah project .ocx tidak dapat dijalankan oleh dirinya sendiri. (Hal ini sama dengan menjalankan file .ocx sendiri).
Untuk mengizinkan proses debug di component in-process, Visual Basic membolehkan Anda untuk me-load dua atau lebih project di dalam sebuah project group. Dengan tujuan untuk memungkinkan proses debug in-process, project group membuat hal ini semakin mudah untuk memuat project .ocx dan project test Anda tadi.
Untuk menambahkan sebuah project ke project group:
1.
Dari menu "File", klik "Add Project" untuk membuka kotak dialog Add Project. Jangan klik "Open Project" atau "New Project", karena hal ini akan menutup project control tadi.
2.
Dobel klik icon "Standard EXE" untuk menambahkan sebuah project exe baru. Anda sekarang dapat melihat kedua project ini di dalam jendela "Project Explorer", dan caption dari jendela Project Explorer akan menampilkan nama default dari project group. Project baru dengan segera menjadi project Startup untuk project group. Jendela "Project Explorer" menandakan project awal dengan menampilkan namanya dengan huruf tebal. Sebuah project ActiveX Control seperti ControlDemo, tidak dapat sebagai project Startup.
3.
Dari menu "File", klik "Save Project Group" untuk menyimpan project test dan project group. Nama-nama file tersebut ditampilkan di bawah ini. Visual Basic akan menambahkan dengan ekstensi yang sesuai dengan file-nya secara otomatis.
File Nama File Ekstensi
Form TestCtlDemo_Forml .frm
Project TestCtlDemo .vbp
Project Group ControlDemo .vbg
Tidak seperti object-object di pemrograman lainnya, control-control memiliki perilaku saat "design-time" dan "run-time". Itulah mengapa beberapa code di control Anda akan dieksekusi ketika seorang pengembang menempatkan sebuah instansiasi dari control di atas sebuah form saat design-time.
Sebagai contoh, code yang ditempatkan di event procedure "UserControl_Reisize" akan dieksekusi, keduanya saat design-time dan run-time.
Untuk men-debug perilaku "design-time" dari control Anda, Anda harus dapat mengeksekusi code di control selagi form tempat menempatkan control tadi dalam keadaan "design-mode".
Dua procedure berikut ini akan menunjukkan hal tersebut. Dalam procedure pertama, Anda akan menambahkan coding untuk event Resize dari control ShapeLabel. Dalam procedure kedua, Anda akan meletakkan bagian dari ControlDemo ke dalam "mode-run"-selagi test project masih dalam keadaan "mode-design"-kemudian menambahkan sebuah instansiasi dari control ShapeLabel ke sebuah form di dalam project test.
Untuk menambahkan coding ke event Resize:
1.
Dari jendela "Project Explorer", dobel klik "ShapeLabel" untuk membuatnya sebagai designer yang aktif.
2.
Dobel klik control "ShapeLabel" untuk membuka jendela coding.
3.
Di dalam kotak Procedure, klik event Resize untuk menuju ke procedure tersebut. Tambahkan coding berikut:
Private Sub UserControl_Resize()
Static intCt As Integer
intCt = intCt + 1
Debug.Print "Resize " & intCt
End Sub
Catatan: Nama dari event procedure memiliki awalan "UserControl", sama seperti event procedure "Form_Resize" untuk sebuah form, memiliki awalan "Form".
Dalam pengembangan sebuah aplikasi Visual Basic, Anda sekarang akan mengklik tombol "Start" yang berada di bagian toolbar, atau menekan tombol F5 di keyboard, untuk menjalankan aplikasi Anda. Jika Anda ingin menempatkan sebuah control ShapeLabel ke atas Form1, biar bagaimanapun, Anda telah menjalankan coding di control, meninggalkan semua lainnya dalam "mode-design".
Untuk menjalankan control ShapeLabel saat design-time:
1.
Dalam jendela "Project", dobel klik "ShapeLabel" untuk menampilkannya, lalu tekan tombol CTRL+F4 di keyboard untuk menutup jendela. Tutup jendela designer untuk meletakkan control ShapeLabel dalam mode-run. Begitu control dalam mode-run, icon-nya (default icon toolbox untuk sebuah control pengguna) menjadi aktif di toolbox. Penting Anda ketahui: Jangan klik tombol "Start" di toolbar, atau tekan F5, karena hal ini akan meletakkan project group yang sedang berjalan ke dalam mode-run, dan Anda tidak akan dapat menambahkan sebuah control baru ke sebuah form. Ketika Anda meletakkan sebuah control dalam mode-run, hal ini bukanlah masalah untuk Anda menutup jendela designer. (Anda selalu dapat mengatakan jika designer sedang terbuka, karena icon control di toolbox akan berwarna abu-abu).
2.
Dalam jendela "Project Explorer", dobel klik "Form1" untuk menampilkannya.
3.
Dobel klik icon "ShapeLabel" untuk menambahkan control ini ke Form1. Control akan kelihatan sebagai sebuah kotak persegi berwarna abu-abu dengan kotak-kotak kecil di sekelilingnya: Di jendela Properties Anda dapat melihat properties default untuk sebuah control baru. Control ShapeLabel yang baru saja Anda tambahkan ke form telah memiliki nama default, yaitu: ShapeLabel1. Catatan: Penamaan control Anda ketika Anda sedang mendisainnya mengabaikan sesuatu yang dapat membingungkan. Misalkan Anda menempatkan sebuah control dengan sebuah nama default, seperti UserControl1, di atas sebuah form. Otomatis penomoran pada control-control baru akan menambahkan sebuah nomor ke nama control tersebut, menjadi UserControl2, UserControl3, dst.
4.
Event Resize milik "ShapeLabel" terjadi ketika control ini ditempatkan di atas form, seperti yang dapat Anda lihat di jendela "Immediate". Gunakan penanganan drag untuk mengatur ukuran control beberapa kali. Setiap kali Anda melakukan pengaturan ukuran, event Resize akan terjadi. Jika Anda menggerakkan control di sekitar form, event Resize tidak terjadi.
5.
Di Form1, dobel-klik control ShapeLabel untuk membuka jendela coding untuk Form1. Cursor akan berada pada default event procedure, ShapeLabel1_GotFocus. Anda dapat menggunakan kotak Procedure ini untuk menampilkan event ketiga Visual Basic secara otomatis yang disediakan control Anda. Tutup jendela coding ketika Anda telah selesai.
6.
Di jendela "Project Explorer", dobel klik "ShapeLabel" untuk membuka designer ShapeLabel. Catatan: Control ShapeLabel yang telah Anda taruh di Form1 ditandai dengan tanda lubang abu-abu yang berarti control ini sedang tidak aktif. Dengan membuka sebuah designer milik control ini, membuat semua instansiasi dari control ini menjadi tidak aktif. Dengan mengubah coding di jendela coding control mungkin juga membuat instansiasi control menjadi tidak aktif.
7.
Coding di module "ShapeLabel" tidak dapat dieksekusi ketika jendela designer sedang terbuka. Gunakan penanganan drag untuk mengatur bayangan control di atas Form1. Event Resize tidak ditimbulkan, jadi tidak ada pesan baru tampil di jendela Immediate.
8.
Yakinkan bahwa designer ShapeLabel sedang ditampilkan, lalu tekan CTRL+F4 untuk menutup jendela, dan akan mengaktifkan kembali instansiasi dari control. Bayangan hilang dari control di Form1, menandakan bahwa instansiasi menjadi aktif lagi. Jika control telah berubah menjadi tidak aktif, itu karena perubahan di codingnya, Anda dapat mengklik kanan di form test untuk menampilkan konteks menunya, dan mengklik "Update UserControls" untuk mengaktifkan kembali instansiasi control.
Catatan: Berhubungan ke sejumlah procedure yang dibutuhkan Windows, Anda mungkin sering kali menemukan designer ShapeLabel telah hilang di belakang form lainnya. Anda dapat men-dobelklik ShapeLabel di jendela Project Explorer untuk menampilkan designer ke depan.
Usia dari sebuah form biasa Visual Basic ditandai oleh event-event tertentu, seperti: Initialize, Load, QueryUnload, dan Unload. Untuk membuat aplikasi yang seharusnya, merupakan hal yang penting untuk mengetahui kapan event-event ini terjadi di siklus hidup sebuah form.
Hal yang sama berlaku juga untuk control. Event-event kunci di dalam siklus hidup sebuah UserControl adalah: Initialize, InitProperties, ReadProperties, WriteProperties, dan Terminate. Procedure-procedure berikut akan menampilkan event-event ini.
Untuk menampilkan event-event ShapeLabel:
1.
Dari jendela "Project Explorer", dobel klik "ShapeLabel" untuk membuka designer-nya.
2.
Dobel klik designer untuk membuka jendela coding untuk ShapeLabel, lalu masukkan coding dalam event procedure berikut ini:
Private Sub UserControl_Initialize()
Debug.Print "Initialize"
End Sub
Private Sub UserControl_InitProperties()
Debug.Print "InitProperties"
End Sub
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
Debug.Print "ReadProperties"
End Sub
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
Debug.Print "WriteProperties"
End Sub
Private Sub UserControl_Terminate()
Debug.Print "Terminate"
End Sub
Catatan: Untuk object-object UserControl, Load dan Unload digantikan dengan event ReadProperties dan WriteProperties.
3.
Yakinkan bahwa designer ShapeLabel sedang ditampilkan di depan, lalu tekan tombol CTRL+F4 untuk menutup jendela, lalu letakkan control di mode-run. Pesan debug akan tampil di jendela Immediate. Apa yang sedang terjadi di sini? Anda belum membuat instansiasi dari control ShapeLabel di Form1. Dari mana semua event-event ini berasal?
Hal ini menggambarkan sebuah hal yang penting mengenai control. Seorang user meletakkan control di atas form, dan setelah itu control sebagai sesuatu yang bersifat tetap di form. Dari sisi pembuat control, biar bagaimanapun, control-control ini dihancurkan dan dibuat kembali setiap saat.
Ketika Anda meletakkan ShapeLabel di mode-run dengan menutup designer-nya, instansiasi dari ShapeLabel di Form1 dihancurkan dan dibuat kembali setiap control ini menerima event Initialize. Mengapa Anda tidak melihat event Terminate terlebih dulu? Karena instansiasi asli dari ShapeLabel yang telah Anda tempatkan di Form1 dibuat sebelum Anda menambahkan coding di event procedure "UserControl_Terminate! Selamat datang di dunia pembuatan control yang penuh "kekejaman" dan "keasyikan"!!!.
Catatan: Instansiasi control juga dihancurkan dan dibuat kembali ketika Anda mengklik "Update UserControlls" dari context menu miliknya form (klik kanan di form...).
4.
Tekan CTRL+F5, atau klik tombol Start di toolbar, untuk menjalankan TestCtlDemo. Ketika project sedang berjalan, grid di Form1 hilang, jadi Anda tidak dapat melihat ShapeLabel, tapi Anda dapat melihat sekilas siklus hidup sebelumnya di jendela Immediate.
Setelah sebuah control yang diinstansiasi dibuat, event ReadProperties memberikan Anda sebuah kesempatan untuk memperoleh property yang tersimpan di control dari file .frm yang terdiri dari instansiasi control tersebut.
Ketika instansiasi control saat design-time dihancurkan, event WriteProperties memberikan kepada Anda kesempatan untuk menyimpan nilai-nilai properties yang diset saat design-time oleh pengguna yang memakai control Anda. Nilai-nilai property ini disimpan di file .frm tempat control ini berada, seperti yang akan Anda lihat di bagian "Menyimpan Nilai Property ShapeLabel" di bagian selanjutnya pada tutorial ini.
Event Terminate terjadi ketika control dihancurkan.
Catatan: Secara default, pilihan "Compile On Demand" yang terpilih di tab "General" pada kotak dialog "Option" (yang dapat Anda akses dari menu "Tools"). Dengan menggunakan CTRL+F5 (atau Start dengan Full Compile, di menu Run) akan meng-override Compile On Demand, dan meng-compile secara penuh semua project di group sebelum memasuki mode-run. Hal ini sangat berguna karena kompilasi error biasanya membutuhkan pengaturan ulang project, yang mana berarti harus kembali lagi ke mode-design. Ketika Anda sedang men-debug control, Anda mungkin lebih memilih untuk mematikan pilihan "Compile On Demand" daripada mengingat untuk menggunakan CTRL+F5.
5.
Tutup Form1, untuk kembali ke mode-design project. Di jendela Immediate, Anda akan melihat sebuah event Terminate (tapi tidak WriteProperties, mengapa tidak ada?) saat instansiasi run-time dari ShapeLabel dihancurkan. Kemudian, Anda akan melihat Initialize, ReadProperties, dan event Resize, saat instansiasi design-time dari control tersebut dibuat.
Instansiasi control saat run-time tidak pernah memperoleh event WriteProperties, karena dia tidak membutuhkan nilai property-nya yang tersimpan. Untuk melihat mengapa tidak, pertimbangkan ShapeLabel untuk berikutnya. Ketika dia dikompilasi ke dalam sebuah file .ocx, Anda akan menambahkannya ke project lain, meletakkan sebuah instansiasi ke atas sebuah form, mengkompilasi project menjadi sebuah file .exe, dan menjalankannya. Ketika Anda menutup exe tadi, hanya tempat instansiasi ShapeLabel yang dapat menyimpan nilai properties-nya ke dalam file .exe. Urutan perilaku ini tidak ditoleransi oleh perilaku sistem operasi yang seharusnya.
6.
Scroll ke atas dari jendela Immediate, klik di bagian atas sudut kiri, dan drag untuk memilih semua text di jendela tersebut. Tekan tombol "Delete" di keyboard untuk menghapusnya dari jendela Immediate.
7.
Di jendela "Project Explorer", dobel klik "Form1" untuk membawa Form1 ke depan.
8.
Di Toolbox, dobel klik icon ShapeLabel untuk menambahkan instansiasi dari control ke Form1. Anda akan melihat sebuah event baru saat ini.
Ketika sebuah instansiasi dari control Anda ditempatkan pada sebuah kontainer (Form1), dia memperoleh sebuah event InitProperties. Di event procedure "UserControl_InitProperties", Anda dapat menempatkan coding untuk melakukan sebagai berikut:
* Menentukan nilai default untuk setiap nilai properties milik control.
* Membentuk tugas-tugas ketika seorang pengguna membuat instansiasi control Anda.
9.
Tutup designer Form1 dengan mengklik tombol Close di pojok kanan atas form tersebut atau dengan menekan tombol CTRL+F4 selagi designer ini berada di depan. Di jendela Immediate, Anda akan melihat dua kelompok dari event WriteProperties dan Terminate, masing-masing instansiasi dari ShapeLabel.
10.
Dari jendela "Project Explorer", dobel klik "Form1" untuk membuka designer-nya lagi. Ketika designer terbuka, semua controls di atas Form1 dibuat, dan event-event Initialize mereka dibangkitkan. Semua control kemudian menerima event ReadProperties, yang mengizinkan mereka untuk mengambil nilai property yang sudah tersimpan sebelumnya. Event InitProperties tidak terjadi, karena kedua instansiasi dari control ShapeLabel sudah ada.
Anda dapat menggunakan methode graphics, seperti Circle (bulatan) dan Line (garis), untuk menggambar control Anda, atau Anda dapat membuat tampilan control dengan menggunakan control ActiveX yang sudah ada dan control-control Visual Basic lainnya. Control-control yang Anda tambahkan ke UserControl untuk membuat tampilannya disebut dengan: constituent controls
Seperti namanya, Tampilan ShapeLabel dibuat dengan menggunakan sebuah control Shape dan sebuah control Label.
Untuk menambahkan constituent controls ke control ShapeLabel:
1.
Dari jendela "Project Explorer", dobel klik "ShapeLabel" untuk membuka designer-nya.
2.
Di Toolbox, dobel klik control Shape milik Visual Basic untuk menempatkan sebuah control Shape ke atas designer ShapeLabel. Jika Anda belum pernah memakai control Shape sebelumnya, lewatkan mouse Anda di atas tombol-tombol di Toolbox sampai Anda menemukan salah satu ToolTip berisi "Shape".
3.
Di jendela "Properties", set nilai-nilai property untuk control Shape tersebut:
Property Value
BorderStyle 0 - Transparent
FillColor &H000000FF (Red)
FillStyle 0 - Solid
Name shpBack
Shape 2 - Oval
4.
Di Toolbox, dobel klik control Label untuk menambahkan sebuah Label di bagian atas dari control Shape. Di jendela "Properties", set nilai property untuk control Label:
Property Value
Alignment 2 - Center
BackStyle 0 - Transparent
ForeColor &H00FFFFF (White)
Name lblCaption
5.
Gunakan penanganan drag untuk mengubah tinggi dari label sehingga lebih tinggi dari teks yang berada di dalamnya. ShapeLabel kira-kira kelihatan akan menjadi seperti ini:
Gambar Control ShapeLabel
6.
Dobel klik designer ShapeLabel untuk menampilkan jendela coding ke depan, dan masukkan coding berikut ke event procedure "UserControl_Resize":
Private Sub UserControl_Resize()
'Atur ukuran control Shape untuk memenuhi ukuran ShapeLabel
'Tampilkan area permukaannya.
shpBack.Move 0, 0, ScaleWidth, ScaleHeight
'Ketengahkan control Label secara vertikal, dan
'buat ukuran lebarnya sama dengan ukuran ShapeLabel.
lblCaption.Move 0, _
(ScaleHeight - lblCaption.Height) / 2, ScaleWidth
End Sub
7.
Ketika Anda sedang mendisain sebuah controluser, ingatlah bahwa area yang harus Anda kerjakan dengan mengacu pada batas ScaleWidth dan ScaleHeight dari control tersebut. Di luar batas ini tidak ada yang bisa ditampilkan ke pengguna control Anda. Lebih lanjut, ukuran dari luas client akan berubah pada saat pengguna mengubahnya. Event Resize adalah salah satu event yang paling penting dalam pendisainan controluser.
8.
Yakinkan bahwa designer ShapeLabel sedang berada di depan, lalu tekan CTRL+F4 untuk menutup jendela, dengan meletakkan control di mode-run. Di jendela "Project", dobel klik Form1 untuk membawanya ke bagian depan.
9.
Kedua control ShapeLabel seharusnya sekarang ditampilkan sebagai sesuatu berbentuk oval berwarna merah, dengan tulisan putih "Label1" berada di tengah-tengah. Atur ukuran ShapeLabel untuk mencoba efek dari coding di event Resize.
Anda dapat menambahkan properties dan methods kepada sebuah ActiveX Control dengan cara yang sama Anda menambahkan mereka ke dalam class modules: dengan membuat procedure yang bersifat Public. Sejak ShapeLabel akan menjadi sebuah control label yang lain dari yang lain, dia harus memiliki sebuah property Caption.
Procedure berikut menambahkan sebuah property bernama "Caption", dan mendukung coding untuk menyimpan dan mengambil nilai property. Sebuah nilai property disimpan bersamaan dengan data yang mendeskripsikan tempat control ini berada, dalam hal ini adalah: Form1.
Untuk menambahkan property Caption ke control ShapeLabel:
1.
Dari jendela "Project Explorer", dobel klik "ShapeLabel" untuk membuka designer-nya, lalu dobel klik lagi designer-nya untuk membuka jendela coding.
2.
Dari menu "Tools", klik "Add Procedure" untuk membuka kotak dialog. Di kotak "Name", masukkan nama "Caption". Klik atau pilih "Property" dan property "Public", lalu klik OK.
3.
Di jendela coding, ganti procedure pada property yang baru saja dibuat seperti tampak di bawah ini (ganti "vNewValue As Variant" menjadi: "NewCaption As String"):
Public Property Get Caption() As String
Caption = lblCaption.Caption
End Property
Public Property Let Caption(ByVal NewCaption As String)
lblCaption.Caption = NewCaption
PropertyChanged "Caption"
End Property
Catatan: Hati-hati mengganti kedua deklarasi property dengan menambahkan "As String", seperti yang ditampilkan di atas. Property "Get" dan Property "Let" haruslah saling cocok. Dengan menggunakan tipe yang lebih spesifik (menggunakan String lebih spesifik daripada jika menggunakan Variant), maka akan meningkatkan kecepatan dalam pengeksekusian, dan menyediakan pemeriksaan tipe nilai untuk pengguna yang memakai control Anda.
Procedure Property Let dieksekusi ketika sebuah nilai baru di-assign ke property Caption. Dia menyimpan nilai baru langsung ke property Caption dari control label yang bernama lblCaption pada control ShapeLabel.
Procedure Property Get dieksekusi ketika nilai property ini diambil. Dia membaca nilai yang disimpan di property Caption miliknya label lblCaption.
Procedure Property Let di control haruslah memanggil PropertyChanged, seperti yang akan dijelaskan di bagian "Adding Properties to Controls" dalam "Building ActiveX Controls". Hal ini menjelaskan jendela Properties untuk me-refresh tampilannya, dan menginformasikan ke Visual Basic bahwa form telah berubah.
Procedure Property dijelaskan lebih lanjut di bagian "Adding Properties to a Class" pada "Programming with Objects" di dalam "Visual Basic Programmer’s Guide". Silahkan cari di google.com.
4.
Untuk menginisialisasi property "Caption", tambahkan coding berikut ke dalam event procedure "UserControl_InitProperties":
Private Sub UserControl_InitProperties()
'Biarkan nilai awal untuk property Caption
'diberikan untuk instansiasi dari ShapeLabel.
Caption = Extender.Name
Debug.Print "InitProperties"
End Sub
Apakah ini object tambahan (Extender)? Untuk pengguna dari sebuah control, properties tambahan seperti Name, Top, dan Left kelihatan menjadi bagian dari control Anda. Walaupun properties ini benar-benar disediakan oleh tempat dari control tempat Anda diletakkan. Object tambahan dari UserControl memberikan Anda: designer control, akses ke properties ini langsung dari dalam control Anda.
Property "Name" yang bersifat read-only dari object tambahan mengembalikan nama dari container (atau pengguna) yang memberi sebuah instansiasi yang tertentu dari control Anda. Dengan menggunakan nama ini (sebagai contoh, namanya: ShapeLabel1) sebagai inisial nilai dari property Caption, menirukan perilaku dari control Label.
Apa yang akan terjadi jika Anda membuat sebuah property bernama "Name" di control Anda? Anda akan dapat mengaksesnya dari dalam control Anda, tapi hanya property Name yang pengguna control Anda lihat saja yang akan menjadi property Name dari object tambahan tersebut.
Hal ini memperkenalkan sebuah topik yang sudah ada untuk control: Container mendeteksi sebagian besar dari perilaku dan tampilan control. Dia adalah container yang mendeteksi property Name, Top, dan Left dari control Anda yang berhubungan kepada koordinate dari container itu sendiri. Topik ini dapat Anda lihat di "Building ActiveX Controls".
Satu hal lagi: Mengapa coding ini ditempatkan di dalam event InitProperties? Mengapa tidak menggunakan event Initialize? Seperti yang telah Anda lihat, Initialize dipanggil setiap kali control yang diinstansiasi dibuat, di mana hal ini akan sering sekali terjadi. InitProperties terjadi hanya ketika pengguna control Anda menempatkan control di atas container-nya. InitProperties membuat control ini tempat yang cocok untuk mengeset nilai awal untuk instansiasi sebuah control.
Sebagai tambahan, object-object tambahan milik UserControl dan object-object AmbientProperties belumlah tersedia ketika event Initialize terjadi. "Understanding Control Lifetime dan Key Events" di "Building ActiveX Control", menerangkan pemakaian yang tepat untuk event Initialize.
5.
Untuk menyimpan nilai dari property Caption, tambahkan coding berikut ke event procedure "UserControl_WriteProperties":
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
Debug.Print "WriteProperties"
PropBag.WriteProperty "Caption", Caption, Extender.Name
End Sub
PropertyBag adalah sesuatu yang diimplikasikan oleh namanya; sebuah "tas" (bag) tempat nilai-nilai property disimpan. "Tas" ini disediakan oleh container. Anda tidak dapat melihat ke dalamnya, dan Anda tidak mengetahui di mana atau bagaimana data tersebut disimpan. Yang hanya dapat Anda lakukan adalah meletakkan nilai-nilai di dalamnya dan mengambilnya kembali.
Argumen yang pertama dari method WriteProperty adalah nama dari property, yang akan digunakan sebagai kunci untuk keperluan pengambilan. Anda seharusnya menggunakan nama dari property untuk argumen ini, karena dia akan kelihatan di dalam file teks .frm (di Visual Basic, container lainnya mungkin menggunakan nama file lainnya untuk menyimpan data project), dan mungkin dapat dilihat oleh pengguna control tersebut.
Argumen kedua adalah nilai. Sebuah property yang disimpan bernilai Variant.
Argumen ketiga, cukup aneh, adalah nilai default. Mengapa menyediakan nilai default ketika menyimpan nilai property? Sebelum menyimpan nilai, method WriteProperty membandingkan nilai property dengan nilai default ini. Jika nilai mereka sama, nilai property tidak perlu disimpan, karena nilai default akan diset secara otomatis ketika control diload kembali. Hal ini menjaga file .frm dari "kekacauan" dengan ratusan nilai masukan default, sebuah hal yang bagus untuk membantu pengguna control Anda!
6.
Tempatkan coding berikut di dalam event ReadProperties, untuk mengambil nilai property yang tersimpan untuk property Caption:
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
Debug.Print "ReadProperties"
Caption = PropBag.ReadProperty("Caption", Extender.Name)
End Sub
Argumen kedua dari method ReadProperty adalah sebuah nilai default yang digunakan jika tidak ada nilai yang disimpan, jika pengguna telah menghapus property dari file teks .frm, atau jika nilai telah diganti dari nilai default, dan oleh karena itu tidak pernah disimpan dengan menggunakan methode WriteProperty.
7.
Yakinkan bahwa designer ShapeLabel berada di bagian depan, klik tombol Close atau tekan CTRL+F4 untuk menutup jendela, control diposisikan ke dalam mode-run. Seperti sulap, caption dari control ShapeLabel berubah ke nama default dari dua instansiasi, ShapeLabel1 dan ShapeLabel2.
Gunakan jendela "Properties" untuk mengubah property Caption dari control ShapeLabel yang kedua di Form1, lalu klik tombol Close di designer Form1. Di jendela Project Explorer, dobel klik Form1 untuk membuka kembali designer Form1.
Dari pesan yang muncul di jendela Immediate, Anda dapat melihat bahwa control-control telah dihancurkan dan dibuat ulang kembali, tapi nilai dari property Caption telah disimpan dan diambil.
8.
Tekan CTRL+F5 untuk menjalankan TestCtlDemo, project Startup dari project group, dan mencoba perilaku saat run-time dari control ShapeLabel.
9.
Klik tombol close di Form1 untuk kembali ke mode-design.
Properties sederhana baru saja Anda buat dengan menggunakan procedure property yang akan ditampilkan otomatis di jendela Properties Visual Basic. Anda juga dapat menghubungkan control Anda ke halaman property (property pages), yang akan menampilkan properties control dalam sebuah alternatif format lainnya.
Setiap halaman property Anda terhubung ke control Anda menjadi satu tab pada kotak dialog Tabbed Properties. Visual Basic menangani semua detail dari halaman yang ditampilkan sebagai sebuah tabbed dialog, dan mengatur tombol OK, Cancel, dan Apply. Yang perlu Anda lakukan hanya mengatur tata-letak dari nilai property yang akan ditampilkan di halaman property ini.
Halaman-halaman property berguna ketika sebuah kelompok property berinteraksi dalam sebuah tempat yang kompleks, seperti dengan control Toolbar yang terdapat di Visual Basic. Mereka juga berguna untuk control-control yang akan didistribusikan secara Internasional, karena caption-nya dapat diatur untuk bahasa yang berbeda-beda. Halaman-halaman property ini juga mengizinkan control Anda untuk digunakan oleh tools pengembangan yang tidak mempunyai jendela "Property".
Untuk menambahkan sebuah halaman property (property page) ke project:
1.
Di jendela "Project Explorer", klik "ControlDemo" untuk memilih project control. Dari menu "Project", klik "Add Property Page" untuk membuka kotak dialog "PropertyPage". Dobel klik icon "Property Page" untuk menambahkan sebuah halaman property ke project.
2.
Di jendela Properties, dobel klik property "Name", dan ganti nama dari halaman property menjadi "SLGeneral". Dobel klik property "Caption", dan ganti captionnya menjadi: "General". Caption yang akan kelihatan adalah caption di tab halaman property ketika dia sedang digunakan (aktif). Mengapa nama SLGeneral digantikan oleh General? Anda boleh memiliki beberapa control di dalam sebuah project, dan setiap control boleh memiliki sebuah halaman General. Ini adalah halaman General untuk control ShapeLabel.
3.
Dari menu "File", klik "Save Project Group" untuk menyimpan project group. Namakan property yang bertalian seperti yang ditampilkan pada tabel berikut. Visual Basic akan menambahkan ekstensi untuk setiap file yang bertalian secara otomatis.
File Nama File Ekstensi
Property page ControlDemo_SLGeneral .pag
Informasi binary di dalam sebuah halaman property - seperti bitmaps - akan disimpan di dalam sebuah file binary dengan nama yang sama dan memiliki ekstensi .pgx.
Designer untuk sebuah halaman property nampaknya kelihatan seperti designer untuk sebuah control, kecuali bahwa caption bar dari designer menampilkan property "Caption" dari halaman property, menggantikan property "Name".
Untuk mendisain halaman property General control ShapeLabel:
1.
Tempatkan sebuah control Label di atas halaman property, dan ganti property "Caption" label menjadi kata Caption.
2.
Di bawah label, tempatkan sebuah control TextBox, dan masukkan nilai property:
Property Value
Name txtCaption
Text (empty)
Dengan menempatkan deskripsi property label di atas textbox dalam bagian ini akan membuat lebih mudah untuk membuat control Anda untuk berbagai bahasa, di mana kata "Caption" mungkin lebih panjang atau lebih pendek.
3.
Dobel klik halaman property, untuk membuka jendela coding. Di dalam combobox "Events" pilih event bernama "SelectionChanged", dan tambahkan coding berikut:
Private Sub PropertyPage_SelectionChanged()
'Tampilkan caption control pertama di daftar
'dari control-control yang sudah ada.
txtCaption.Text = SelectedControls(0).Caption
'Agar saat muncul, tombol Apply mula-mula tidak aktif.
Changed = False
End Sub
Kegunaan dari event ini adalah untuk mendapatkan property yang sudah ada dari control ShapeLabel atau control-control yang sudah terpilih. Hal ini benar, mungkin ada lebih dari satu control ShapeLabel yang terpilih. Pemilihan secara banyak adalah suatu hal yang penting untuk pengguna dari control Anda, tapi ini artinya sangat banyak berarti bagi pekerjaan Anda.
Sebuah halaman property menerima event "SelectionChanged" ketika dia dibuka. Dia juga menerima event ini ketika daftar dari control-control yang terpilih mengalami perubahan. Hal ini perlu karena kotak dialog "Property Pages" bersifat "modeless", jadi, seorang pengguna mungkin memilih untuk menambahkan control lagi ketika kotak dialog ini sedang terbuka.
Anda telah memutuskan bagaimana menangani pemilihan secara banyak dalam sebuah "basis property oleh property". Sebagai contoh, jika halaman property Anda menampilkan property "Width" dari control pertama di koleksi "SelectedControls" yaitu: SelectedControls(0), seperti ditunjukkan di dalam coding di atas, hal ini akan lebih mudah bagi pengguna untuk mengganti lebar dari semua control yang terpilih kepada nilai tersebut.
Di sisi lain, ada sedikit penggunaan setting caption dari semua control ShapeLabel yang berada di atas sebuah form untuk nilai yang sama, jadi logika untuk melakukan dengan property Caption adalah menonaktifkan txtCaption jika property "Count" dari koleksi SelectedControls lebih besar dari satu.
Biar bagaimanapun, procedure ini tidak melakukan hal tersebut. Sebagai ilustrasi, halaman property akan diizinkan untuk menentukan caption secara bersamaan. Berikutnya, jika Anda ingin mengaktifkan perilaku yang dijelaskan di atas, Anda dapat menambahkan coding berikut ini ke dalam event procedure yang bernama "PropertyPage_SelectionChanged":
'Tolong jangan lakukan ini sebelumnya!
If SelectedControls.Count > 1 Then
txtCaption.Enabled = False
Else
txtCaption.Enabled = True
End If
4.
Untuk menentukan nilai property untuk semua control-control yang sedang terpilih, tambahkan coding berikut ini ke dalam event "ApplyChanges":
Private Sub PropertyPage_ApplyChanges()
'Gunakan sebuah variabel Object umum, dalam hal
'lebih dari satu control yang dipilih.
Dim objControl As Variant
For Each objControl In SelectedControls
objControl.Caption = txtCaption.Text
Next
End Sub
Halaman property Anda menerima event ApplyChanges ketika pengguna mengklik tombol Apply atau OK pada kotak dialog Property Pages, atau jika berpindah ke tab lainnya.
Bagaimana Anda tahu bahwa setiap control di dalam SelectedControls mempunyai sebuah property Caption? Sebagai designer dari component control, Anda menentukan halaman property yang mana yang terhubung ke setiap control. Sebuah halaman property hanya akan kelihatan jika semua control yang terpilih mempunyai halaman tersebut di dalam daftar Property Pages mereka. Hal termudah untuk melakukan ini adalah dengan meyakinkan bahwa halaman-halaman di-assign ke setiap control yang tidak menampilkan properties yang tidak dimiliki control.
Jika Anda berharap untuk menggunakan sebuah halaman property dengan manfaat yang umum untuk sejumlah control, dan beberapa dari control-control tersebut tidak memiliki semua properties yang ditampilkan di halaman property, Anda dapat menambahkan coding ke event ApplyChanges untuk mencoba tipe dari control, dan tambahkan nilai property yang pantas. Sebagai alternatif, Anda dapat menggunakan sebuah statement On Error untuk mengatasi dan mengabaikan error-error dari control yang tidak memiliki property.
Anda hanya perlu memusatkan pada control-control di component Anda, karena control- control yang tidak merupakan bagian dari component Anda tidak akan pernah menggunakan halaman property component Anda tersebut.
5.
Untuk mengaktifkan tombol Apply dari kotak dialog Property Page ketika property Caption mengalami perubahan, tambahkan coding berikut ke event Change dari control txtCaption:
Private Sub txtCaption_Change()
Changed = True
End Sub
6.
Dalam jendela "Project", dobel klik "SLGeneral" untuk menampilkan halaman designer ke depan. Klik tombol close atau tekan CTRL+F4 untuk menutup designer dan menempatkan halaman tersebut ke mode-run. Seperti object-object UserControl, object PropertyPage harus dijalankan sementara sisa dari project group berada dalam keadaan mode-design.
4. Untuk menghubungkan halaman property ke control ShapeLabel:
Dari jendela "Project Explorer", dobel klik "ShapeLabel" untuk membuka designer.
5.
Dari jendela Properties, dobel klik property "PropertyPages" untuk menampilkan kotak dialog berjudul "Connect Property Pages".
Kotak dialog "Connect Property Pages" dapat digunakan untuk menghubungkan banyak halaman ke sebuah usercontrol, dan untuk menentukan urutan tampilan tab di kotak dialog Property Pages control Anda. Property pages juga dapat dihubungkan saat run-time.
6.
Ceklist atau tandai "SLGeneral", lalu klik tombol OK.
7.
Bawa designer ShapeLabel ke depan, lalu klik tombol Close atau tekan CTRL+F4 untuk menempatkan control ShapeLabel ke dalam mode-run.
8.
Dari jendela "Project Explorer", dobel klik Form1 untuk membawa designer-nya ke depan.
9.
Klik kanan di salah satu control ShapeLabel yang ada di Form1, untuk menampilkan menu pop-up, lalu klik "Properties" untuk menampilkan kotak dialog "Property Pages".
10.
Di dalam textbox Caption yang ada di tab General, ganti nilai caption yang ada dengan sebuah nilai yang baru. Ketika Anda melakukan hal ini, tombol Apply menjadi aktif. Klik tombol Apply untuk mengganti caption dari control tersebut. Catatan: Anda juga dapat mengganti caption tersebut dengan mengklik tombol OK, tapi hal ini akan langsung menutup kotak dialog Property Pages. Kotak dialog seharusnya terbuka untuk langkah selanjutnya di bawah ini.
11.
Tahan tombol CTRL di keyboard Anda, lalu klik control ShapeLabel yang kedua di Form1, sehingga ada dua control ShapeLabel yang terpilih sekarang. Ganti caption dan klik tombol Apply untuk mengganti kedua caption menjadi nilai yang sama.
Anda boleh saja menambahkan control lainnya, misalnya Commandbutton, ke atas Form1, lalu amati efek dari perbedaan pemilihan banyak pada kotak dialog Property Pages.
Selengkapnya
Posted by renceman at 3:03 PM 0 comments
Saturday, November 22, 2008
Panduan instalasi Blankon LiveCD
Sumber :
http://wiki.ubuntu-id.org/BlankOn/Dokumentasi/Lontara/PanduanInstalasiLiveCD
Persiapan Komputer
Sebelum anda memulai instalasi BlankOn ada baiknya anda:Dianjurkan untuk menjaga ke stabilan tegangan listrik, hal ini dikarenakan pada saat instalasi BlankOn akan mengakses dan mengformat harddisk sehingga apabila saat instalasi tiba-tiba listrik mati maka di mungkinkan terjadi kerusakan dalam hardisk anda (bad sector)
Perangkat Yang DiButuhkan
- Spesifikasi minimal BlankOn adalah : Prosesor 700Mhz, RAM 256Mb, HD 5Gb, VGA 8Mb- Spesifikasi Rekomendasi BlankOn adalah : Prosesor 1Ghz, RAM 384Mb, HD 10Gb, VGA 32Mb 3D
Menyetel BIOS agar Booting Awal dari CD
Sebelum meng-install BlankOn pada BIOS harus di set Boot Device Priority-nya dulu, dalam menginstall BlankOn Boot Device Priority harus di arahkan ke CDROM. Untuk masuk ke BIOS tiap Motherboard mempunyai standart sendiri. Namun sebagian besar tinggal menekan tombol delete atau F2, berikut adalah tobol default berdasarkan BIOS yang anda pakai:
Jenis BIOS ------- Tombol defaultAMI BIOS -------- Tombol Delete selama POST (power on self test)
Award BIOS ------ Ctrl+Alt+Esc, atau Delete selama POST (power on self test)
DTK BIOS -------- Esc selama POST (power on self test)
IBM PS/2 ---------BIOS Ctrl+Alt+Insert setelah Ctrl+Alt+Delete
Phoenix BIOS -----Ctrl+Alt+Esc atau Ctrl+Alt+S atau F1
Apabila anda menekan tombol seperti diatas makan tampilannya akan seperti berikut: (dalam kasus ini menggunakan PhoenixBIOS, tampilan akan berbeda-beda dalam setiap jenis BIOS)
pilih tab BOOT, dan arahkan ke CDROM. Kemudian simpan konfigurasinya
Kemudian reboot ulang dengan memilih opsi YESLangkah - langkah Instalasi
- Memasukkan LiveCD BlankOn- Jalankan komputer dengan memboot dari LiveCD BlankOn
- Tunggu hingga LiveCD BlankOn sampai pada tampilan Desktop
Gambar diatas adalah tampilan awal pada saat anda menggunkan LiveCD BlankOn. Sehingga anda bisa Mencoba Dahulu sebelum menginstallnya.
Proses awal Instalasi
Jika semuanya berjalan dengan baik dan anda ingin memasang BlankOn pada komputer, maka klik tombol singkat “Pasang” pada Desktop dan ikuti langkah langkah berikut :
Selamat Datang di Instalasi
Pada bagian ini anda mendapat sambutan hangat “Selamat Datang” dan dipersilahkan untuk memilih bahasa, Pilih Bahasa Indonesia, dan klik “Maju”
Memilih Lokasi Anda
Pilih lokasi Anda pada peta atau menu kebawah, jika sudah klik “Maju”
Susunan Papan Ketik
Pilih jenis Susunan Papan Ketik (Keyboard) yang sesuai dengan kebutuhan Anda, biasanya USA. Jika sudah klik “Maju”Mempersiapkan Ruang Hardisk
Pilih Otomatis jika anda menginstall BlankOn ada seluruh ruang hardisk anda, atau jika ingin membagi ruang partisi maka ikuti petunjuk Membagi Ruang Partisi Hardisk Jika Otomatis langsung klik “Maju”Isian Indentitas Anda
Isikan identitas anda dan identitas komputer anda, jika sudah klik “Maju”Proses Instalasi / Pemasangan
Silahkan istirahan sebentar sambil ambil air minum dan cemilan untuk menunggu proses ini, proses ini memakan waktu 15-30 menit tergantung dengan spesifikasi komputer Anda.
Instalasi Selesai
Selamat Anda terlah berhasil memasang BlankOn di komputer Anda, silahkan pilih “restart sekarang’ jika ingin langsung mencobanyaSelamat !!! BlankOn Linux sudah terinstall
SelengkapnyaPosted by renceman at 9:50 AM 0 comments
Link Exchange
Donation
Visitor
Online
Do you like this blog
Arsip Blog
-
▼
2008
(90)
-
▼
November
(52)
- Install Indobilling di Zencafe 1.4 dan 1.2
- VMware di Ubuntu 8.04
- install vmware di linux ubuntu 8.10 intrepid
- VMWare Gratis !!!
- Memperbesar kapasitas Hard Disk di VMware
- i386, i586, i686,x86-64 ........???
- Distro turunan Slackware, Zencafe 1.0 untuk Warnet
- Interface Antar Muka Visual Basic 6.0
- ActiveX Component
- Ilmuwan Australia Buat Internet 100 Kali Lebih Cepat
- 11 Situs Gratis untuk Bertukar File Besar dengan C...
- Empat Linux Mini untuk Flash Disk Anda
- Internet Explorer 8 Ditunda Hingga Tahun Depan
- Microsoft Akan Rilis Antivirus Gratis
- Codename Ubuntu 9.04 "Jaunty Jackalope"
- Jaunty Jackalope Alpha 1 Release 22 Nopember 2008
- Membuat Sendiri File OCX (ActiveX Control) - Masin...
- Panduan instalasi Blankon LiveCD
- Upgrade ke ubuntu 8.10 ?
- Blankon 3, Codename : Lontara
- Source List Repo Blankon 3 : Lontara
- Distribution Release: Ubuntu 8.04.1
- Release Ubuntu 8.10 dan turunannya
- Kerja dari rumah
- Contoh program VB6 menggunakan Access
- Kumpulan OCX buat Visual Basic 6 / VB6
- Cara Menampilkan Icon YM Status
- Komunitas Ubuntu
- Dokumentasi Ubuntu
- ShipIt - CD Ubuntu Gratis
- Negara-negara Asia Afrika Bersatu Gunakan Open Source
- Puluhan Negara Diskusikan Open Source di Jakarta
- Tiga Mitos Open Source Software
- Palestina Belajar Open Source dari Indonesia
- Gartner: 85 Persen Perusahaan Pakai Open Source
- Membuat bahasa Pemrograman sendiri untuk Ubuntu da...
- Tantangan BlankOn 2009
- Ubuntu 8.10 DVD Repository
- BlankOn 4.0 Resmi Dirilis!
- Linux Untuk Umat Manusia
- Cara Buat Read More (Ringkasan Artikel)
- Cara Promosi Blog
- Cara Memasang Google Adsense di Web/Blog
- Cara memasang kode HTML/javascript pada blog
- Cara Meningkatkan Traffic ke Website Adsense? SEO
- Tips untuk meningkatkan Google Adsense
- 50 Cara Meningkatkan Traffic Jumlah Pengunjung Blo...
- PANDUAN GOOGLE ADSENSE – MENINGKATKAN TRAFFIC WEB ...
- Cara Legal & Sesuai TOS Meningkatkan Traffic Googl...
- Meningkatkan traffic google adsense
- Membuat program kecamatan menggunakan VB6 dan SQL ...
- Pembuatan program menggunakan Visual Basic 6
-
▼
November
(52)