Sunday, February 16, 2014

WARNING SYS(2015)

Hello all,

Pertama kali, coba lihat kode di bawah ini. Apakah ada bagian dari program Anda yang menggunakan kode seperti ini?
 

lcCursor = SUBSTR(SYS(2015), 3, 8)

Select some_field ;
  From some_table ;
   Into Cursor (lcCursor)

Kalau ada, HATI-HATI!!!  Lho, kenapa? Karena VFP mengambil nilai SYS(2015) dari jam dan tanggal sistem komputer. DAN HARI KEMARIN (15 Februari 2014) sekitar jam 08-09 pagi adalah saatnya algoritma SYS(2015) akan mulai menghasilkan angka nol pada karakter ke-3 dari SYS(2015). Efeknya pada program apa? Kalau Anda menggunakan 8 karakter terakhir untuk penamaan cursor, maka VFP akan memberikan pesan Syntax Error karena penamaan cursor VFP tidak boleh diawali dengan numerik. Jadi bisa saja program Anda yang sudah berjalan bertahun-tahun normal-normal saja, eh... tau-tau sejak kemarin pagi mendadak error.
 
Fenomena ini akan berlanjut sampai sekitar bulan Juli 2014. Setelah bulan Juli 2014, huruf ketiga dari fungsi SYS(2015) akan mulai memberi karakter 'A' ; yang berarti nilai dari SUBSTR(SYS(2015), 3, 8)akan kembali aman untuk digunakan sebagai nama cursor. Sampai kapan? Wah, saya gak ada waktu untuk mencari tau. Tapi pastinya antara 4 sampai 5 tahun lagi kasus seperti ini akan terjadi lagi. Solusinya? Ya, jelas, jangan pakai kode itu untuk penamaan cursor. Lebih aman kalau langsung pakai SYS(2015) tanpa di-truncated (karena hasil dari SYS(2015) termasuk underscore di depannya adalah 10 karakter, dan penamaan cursor masih bisa 10 karakter). Atau, kalau memang harus 8 huruf (karena sesuatu hal semisal mengikuti penamaan sistem operasi DOS yang masih 8.3), maka pastikan Anda menggunakan karakter yang diijinkan untuk huruf pertamanya. Contoh;

lcCursor = '_' + SUBSTR(SYS(2015), 3, 7)

atau kalau pembuatan cursor dilakukan di dalam loop yang mungkin berjalan dalam hitungan milli-second (berarti kalau diambil dengan kode di atas bisa saja penamaan double), maka bisa digunakan:

lcCursor = '_' + SUBSTR(SYS(2015), 4, 7)

Ok guys (and gals). Semoga post ini bisa membantu Anda. :) . See you around...  




Friday, December 13, 2013

Hati-hati tembak database. Gunakan BEGIN TRANSACTION dan ROLLBACK

Hi guys....

Kemarin adalah hari yang bikin heboh. Waktu sedang me-maintain data dengan SQL Management Studio, secara tidak sengaja, saya memberikan perintah UPDATE ke master items TANPA perintah WHERE. Ini adalah database live di sebuah supermarket. Masih untung toko sedang tidak terlalu ramai dan saya berhasil menyelamatkan empat kasir dari data update. Ini adalah supermarket dengan 16 kasir dan kebetulan ada sekitar 8 kasir yang buka, 4 kasir ditutup paksa (sambil diomelin customer dan mendadak jadi ada antrian kasir) karena semua item punya harga jual = 49,900  (bayangkan: indomie = 49,900, permen = 49,900.... Tapi juga bayangkan: microwave = 49,900, rice cooker = 49,900, semua oli = 49,900, dll-dll-dll....

Wah stress banget. Anyway, singkat cerita mengenai kasus itu; semua data kembali normal dalam 1/2 jam dan kasir bisa beroperasional normal lagi.

Pelajaran yang saya ambil; sejak kemarin, di semua perintah yang saya kerjakan di live database dan berpengaruh ke data (sebelum INSERT/UPDATE) saya berikan blok BEGIN TRANSACTION ... ROLLBACK TRANSACTION dulu. Jadi:

BEGIN TRANSACTION
...
... proses perubahan data
...

SELECT query untuk memeriksa hasil data
ROLLBACK TRANSACTION


Nah... hasilnya bener, barulah, SELECT query yang di bawah di comment, dan ROLLBACK TRANSACTION diganti menjadi COMMIT TRANSACTION.


Huuuuuffff.... semoga bisa jadi pelajaran untuk rekan-rekan. Ada pepatah yang bilang pengalaman adalah guru yang terbaik. Tapi sebenarnya pepatah itu harusnya berbunyai "Pengalaman ORANG LAIN adalah guru yang terbaik"

Thursday, October 31, 2013

Virtualbox sebagai server real? MANTAAAAB.... :)

Salam semuaaaa..... :)

WOW... gak tau udah berapa lama terakhir saya post di blog ini. Anyway, ada banyak berita, tapi hal menarik yang bisa saya share dalam dua bulan terakhir ini adalah, saya memutuskan untuk menggunakan Virtualbox + ubuntu 12.04.3 (LTS) x86 + Samba 3.6.3 sebagai server untuk aplikasi POS saya. Host dari Virtualbox adalah Windows Server 2008R2 x64. Hasilnya bagus sekali. File sharing-nya lebih stabil daripada waktu menggunakan Windows Server 2003 --- dan aneh-nya juga lebih cepat. Padahal saya hanya memberikan 512MB dan mengalokasikan 1 processor saja untuk memory Virtualbox (ada sekitar 20 POS yang dilayani oleh virtual server ini). CPU server sendiri hanya Intel Quad Core dengan memory 4GB. Jadi, kalau Anda tertarik untuk menggunakan Virtualbox di production --- biarpun banyak master-master di amrik sono yang tidak menganjurkan --- jangan kuatir., Pake aja... Dalam dua bulan terakhir ini udah kejadian 3 atau 4 kali komputer nya tewas mendadak gara-gara gak ketauan battery UPS udah jebol. Data yang hilang? Tidak ada :D

Okay guys. Begitu aja post awal dari saya. Nanti ngobrol lagi. Okay?
 :)

Sunday, April 29, 2012

Memanfaatkan Virtualbox sebagai server development (Ubuntu LAMP + Samba Server) part 1


Hi guys... Long time no see... :) Wow... hampir dua tahun saya gak post di blog ini. Lots of things happen, tapi itu untuk lain kali dah... Untuk sekarang, saya mau share bagaimana saya memanfaatkan Oracle Virtualbox untuk membantu saya saat membangun aplikasi. Mungkin ada yang bertanya; "Ngapain kok capek-capek harus menggunakan virtualbox? Install aja langsung XAMPP atau AppServ. Beres kan?" . Nah alasannya ini:
  1. Melatih kita untuk ‘terbiasa’ dengan environment Linux, jadi kita bisa men-setup server Linux di production (berarti menghindari penggunaan keluarga Window$). Kalau aplikasi di-deploy dengan Linux, tentunya akan meniadakan biaya lisensi Windows. Berarti biaya yang lebih murah untuk client.
  2.  Dengan LAMP Server, kita juga menginstall Apache dan PHP. Jadi bisa digunakan juga untuk belajar PHP di waktu luang.
  3. Pasti pernah dengar keluhan, "Aplikasi saya bisa jalan di komputer saya dengan baik, tapi waktu diinstall di client kok gak jalan?” . Nah, dengan mesin virtual yang terpisah dari development box, saat development kita bisa lebih mensimulasi keadaan di production secara lebih riil (untuk yang gak tau apa itu production: yang dimaksud production adalah kondisi yang sebenarnya di client).
  4. Masih melanjutkan point 3) di atas, kita bisa melakukan testing aplikasi kita dengan lebih baik. Kita bisa memberi beban kepada server, bisa mengurangi kecepatan network, atau bahkan bisa mensimulasi keadaan koneksi network terputus atau server mendadak mati ditengah-tengah aplikasi yang sedang berjalan.
  5. Sebagian besar aplikasi yang saya buat menggunakan database MS-SQL Server sebagai back-end. Saya gak mau membebani komputer saya dengan service PHP atau MySQL atau PostgreSQL atau service-service lain yang tidak sedang saya gunakan. Dengan Virtualbox, kita bisa 'mematikan' server dan hanya menyalakan kalau diperlukan saja.
  6. Saya juga akan memanfaatkan Samba Server sebagai pengganti File Server Windows. Jadi ini juga bisa digunakan sebagai file server pengganti Windows Server. Lumayan kan? Windows Server harga-nya sekitar Rp 7jt. Daripada untuk beli Windows Server, client pasti gak akan keberatan kalau mereka cuma bayar 1/4-nya saja kepada kita untuk support Linux Server-nya :)
  7. "Kenapa Virtualbox? Kan lebih bagus VMWare?" Yup. Betul. Silahkan pakai VMWare kalau Anda mau --- tapi daripada Anda pakai VMWare versi pasar minggu, apa gak lebih baik pakai Oracle Virtualbox yang resmi (dan gratis)
Okay. Itu mengenai alasan kenapa menggunakan Virtualbox. Selanjutnya, pre-requisite. Apa yang perlu Anda siapkan untuk mengikuti tutorial ini:
  1. Komputer dengan sistem operasi Windows XP/Vista/7 yang sudah terinstall dengan baik
  2. Oracle Virtual Box (silahkan download http://www.virtualbox.org) yang sudah terinstall
  3. Ubuntu Server (juga bisa di-download di http://www.ubuntu.com/server . Saat saya menulis post ini, baru saja keluar versi 12.04 LTS)
Next: langkah-langkah yang akan kita lakukan:

  • Membuat mesin virtual baru dan menginstall Ubuntu

    • Jalankan Virtualbox, lalu klik New
    • Selanjutnya, ketik nama mesin (untuk tutorial ini, saya pakai nama Ubuntu Server). Pilih Operating System Linux dan server Ubuntu.
    • Next, alokasikan memory untuk server Anda. Untuk tutorial ini saya hanya mengalokasikan 512MB.
    • Pilih Create New Hard Disk, lalu pilih Next
    • Pilih VDI
    • Pilih Dynamically Allocated
    • Berikan path/lokasi file yang akan menjadi 'hard disk' server, dan tentukan ukuran-nya. Untuk tutorial ini saya hanya mengalokasikan 4GB.
    • Selanjutnya, pilih Create.
    • Setelah di-Create, VirtualBox akan mengatakan bahwa "Karena ini adalah pertama kali-nya Anda menjalankan virtual machine ini, maka silahkan berikan path dimana kami bisa menemukan paket installasi operating system..." Nah, yang Anda berikan saat ini adalah path file ubuntu ISO yang sudah Anda download.
    • Kalau semua langkah Anda benar, harusnya Anda akan menemukan layar depan installasi Ubuntu seperti di bawah ini:



    • Pilih Install Ubuntu Server
    • Saya tidak akan menjelaskan detail langkah installasi Ubuntu server, karena rasanya cukup simple. Yang penting adalah saat Software Selection; jangan lupa memilih LAMP Server dan Samba Server

    • Pilih Continue
    • Pada saat installasi Ubuntu meminta password root MySQL, jangan lupa mengisikan password root-nya. Oh ya, jangan lupa untuk MENCATAT nama komputer, nama user id, password Ubuntu dan password root MySQL-nya yang Anda isi. Pengalaman saya, seringkali waktu mengisi password ini user yang baru sangat semangat dan kreatif memilih password yang 'antik' dan 'canggih'. Biasanya begitu mau dipakai sudah lupa.
    • Setelah installasi beres, virtual box kita akan di-restart dan Anda layar seperti ini-lah yang Anda dapatkan setelah Anda mengisi login dan password Anda (di tutorial ini, nama mesin saya adalah midgard dan nama user ragnarok)
    • Nah, kalau Anda sudah sampai tahap ini, berarti Anda sudah berhasil menginstall Ubuntu server. Sekarang kita tinggal melakukan langkah berikutnya;

  • Setting jaringan

    • Untuk kepentingan tutorial ini, saya akan menggunakan fasilitas networking  Host-Only Adaptor. Kalau virtual machine (VM) Anda sekarang sedang pada posisi seperti pada layar di atas,  mematikan VM tersebut terlebih dahulu. Caranya, ketik:
      sudo shutdown -P now
    • Setelah itu, ketik password Anda.
    • Setelah system VM shutdown, tampilkan layar utama Virtualbox, sorot nama server (kasus saya: Ubuntu Server) lalu klik pada button Settings.
    • Pilih Network di list sebelah kiri. Apabila operating system host Anda (Windows) terhubung dengan internet, biasanya Network Adapter 1 sudah digunakan untuk NAT. Biarkan saja network ini. klik Adapter 2, lalu klik Enable Network Adapter untuk menambahkan network Adapter 2 seperti pada screen shot di bawah (tentu saja Mac Address di tempat Anda akan berbeda. Abaikan saja):

    • Beres? Okay, selanjutnya, jalankan kembali VM Anda. 
    • Yang baru saja kita lakukan adalah menambahkan adapter Network baru. Ibaratnya Anda baru saja membuka PC Server dan menginstall satu card network tambahan lagi. Nah, sekarang kita akan membuat Ubuntu 'mengenali' card tersebut.
    • Setelah Anda masuk kembali ke Ubuntu, cobalah untuk mengetikkan ifconfig. Setelah itu, ketik seperti pada screen shot yang saya beri garis kuning di bawah ini:



'
  • Kemudian, tambahkan baris seperti dibawah ini:





  • Perhatikan, saya menggunakan IP address 192.168.56.3. Saya mendapatkan angka 56 dari Windows. Apabila di Windows saya masuk ke Command Window, lalu mengetikkan IPCONFIG, ini yang saya dapatkan:


    • Selanjutnya: kembali ke VM kita; kalau saya mengetikkan sudo ifconfig eth1 up, dan dilanjutkan dengan ifconfig; maka saya akan mendapati bahwa card eth0 sudah dikenali (perhatikan screen shot di bawah. Silahkan ketik yang saya beri kotak kuning):



    • Kalau ini sudah tercapai, harusnya kalau dari Windows Anda memberikan perintah PING 192.168.56.3 -t dan dari Ubuntu Anda memberikan perintah ping 192.168.56.101, maka Anda akan mendapatkan tampilan seperti screen shot saya di bawah ini (dua window; CMD dan Virtualbox saya letakkan berdampingan).

  • Ok. Kalau Anda mengikuti tutorial ini, berarti Anda sudah berhasil membuat mesin virtual Ubuntu dan berhasil menghubungkannya dengan host melalui network virtual. Selanjutnya jadwal kita adalah melakukan setting MySQL dan melakukan setting Samba Server. Tapi berita buruknya, saya sudah membuat tutorial ini cukup lama -- jadi saya udah capek. Karena itu, daripada kita bikin dua part, mendingan saya berikan screen capture-nya aja tanpa penjelasan. :D

  • Kalau Anda men-set web server, sebenarnya tidak ada lagi yang perlu Anda lakukan. Ini sudah selesai. Anda sudah bisa mendevelop web apps Anda dengan Dreamweaver dari Windows, dan mengakses PHP di Ubuntu. Hmm... yah, paling tinggal install phpmyadmin di Ubuntu.
  • Lain ceritanya kalau Anda bermaksud untuk men-develop aplikasi VFP (desktop) dengan memanfaatkan MySQL yang ada di Ubuntu. MySQL tersebut harus di set supaya bisa menerima perintah dari luar. Caranya, edit file konfigurasi MySQL dengan mengetikkan:

  • Setelah itu, restart mysql dengan mengetikkan sudo /etc/init.d/mysql restart.
  • Duh... capek deh... Lanjutin besok lagi yaaaa.... :)

Good luck guys...



Friday, June 18, 2010

Error 34 minutes remining waktu install Windows Server 2003

MAAAAAAAN... this is really nuts!

Beberapa waktu yang lalu (gak terlalu lama - belum ada sebulan) - saya membeli komputer untuk server; Processor Intel Core 2 Quad Q8400 (2.66GHz, FSB 1333MHz, L2 Cache 4MB) dengan mo-bo Gigabyte GA-G41M-52L.

... dan waktu saya install Windows Server 2003 (masih 32bit) --- SELALU HANG saat 34 min remaining. Berkali-kali dicobain; gagal terus. Yang terakhir malah saya biarkan hang sampai 45 menit. Tapi si komputer tetap hang.

Support Microsoft seperti biasa tidak membantu. Mereka bilang itu karena driver SATA2 harus di load dulu. Dan untuk me-load, perlu punya driver SATA2 DALAM BENTUK floopy disk! HAAAH?!!! Bweeeek.... floppy disk! dimana kita bisa mencari floppy disk sekarang? Tidak bisa pakai CD ROM/DVD karena 'sudah by design'. Kalau mau pakai CD, driver SATA2 harus di-inject dengan mendownload program (bla-bla-bla... bingung deh pokoknya). Kalau mau mengerjakan sendiri, silahkan lihat article KB sekian-sekian.... (makin bingung).

Dalam keputusasaan, saya coba untuk menginstall Windows XP dulu, baru rencana-nya upgrade ke Windows Server. Harapan saya, semoga driver SATA yang diinstall di XP akan bisa dimanfaatkan oleh program setup Windows Server 2003. Ternyata masih gagal.

Jalan-jalan ke internet juga menghasilkan hasil yang hampir sama. Rata-rata bilang error di menit ke-34 itu karena hardware; berarti SATA2 juga yang jadi masalah. Nah, tapi ada satu forum, yang bilang bahwa itu karena setup Windows 2K3 ada masalah dengan keyboard USB lama! Na lho! Saya masih  pakai keyboard favorite saya -- dan memang betul. Ini keyboard USB lama. Iseng-iseng, saya ganti dengan keyboard PS/2, dan... JALAN! Normal tanpa hang.

Thank God... But this is really NUTS! Cuma gara-gara salah keyboard -- habis waktu sampai 6 jam! Semoga ini bisa membantu Anda; Kalau Anda menginstall Windows dan hang -- terutama saat 34 minutes remaining... cobalah ganti keyboard.

Saturday, June 05, 2010

Microsoft menutup forum-nya yang berbasis nntp - termasuk forum VFP :(

Halo rekan-rekan foxpro Indonesia....
Sedikit berita sedih... Microsoft sejak awal juni kemarin menutup server nntp-nya (microsoft.public.xxxxx ). Sedih karena, jujur, itu adalah tempat hang out saya sejak tahun 2001. Di sana saya mengenal banyak senior-senior foxpro kelas dunia seperti Nancy Folsom, Cindy Winegarden, Steven Wuebe, Igor, Eric Den Doop, Robert Ansell, dll-dll-dll.... dari sana juga saya banyak dapat link-link ke forum-forum lain yang luar biasa. Dari sana juga saya belajar dan bertanya. Singkatnya - kalau ibarat seorang anak, saya merasa 'dibesarkan' oleh forum itu. Dan sekarang microsoft menutupnya.... Dasar b*go!

Anyway, alasan microsoft adalah seperti ini:

Date 5/4/2010
Starting in early summer 2010, Microsoft will begin progressively closing down the Microsoft public newsgroups to enrich conversations in the rapidly-growing forum platform.  This decision is in response to worldwide market trends and evolving customer needs. 

Microsoft continues to invest in forums to reduce customer effort, consolidate community venues and make it easier for active contributors to retain their influence. Forums provide a healthy community environment with less spam and make answers easier to find by customers and search engines.  Additionally, forums offer a better user and off-topic management platform that will improve customer satisfaction by facilitating discussions in a clean space.  

We understand that some newsgroups are still active, and important to the community.  In the coming days and weeks, we will be rolling out tools and resources to minimize disruption to the community discussions. 

We are working diligently on providing additional resources and information in local languages later this week.  In the meantime, please refer to the official Microsoft Newsgroup website http://www.microsoft.com/communities/newsgroups/default.mspx concerning this issue.  The Microsoft Newsgroup website will be made available in additional languages in the next few days.

Singkat cerita, alasan microsoft, forum newsgroup sudah 'ketinggalan jaman' apalagi dengan adanya forum berbasis web dan social network yang sekarang berkembang pesat. Tapi, microsoft lupa keunggulan-keunggulan nntp. Yang sangat saya rasakan selama menggunakan forum newsgroup adalah forum nntp jauh lebih cepat dari forum web karena berbentuk teks mode. Gratis - tidak perlu login-login-an. Dan yang untuk saya paling penting dari dulu; bisa dengan mudah di-download secara offline dengan size yang kecil (sekali lagi-- karena text mode) jadi bisa dipelajari/dibaca sambil dimana saja. Saya ingat dulu sering nge-print thread-thread di forum dan membawa print out itu ke wc untuk di baca sambil 'ngebom'... Ha-ha-ha... jorok sedikit.... Tapi ya, memang begitulah. Saya belajar banyak melalui forum. Dan sekarang ditutup. Untuk saya penutupan forum ini lebih menyakitkan daripada waktu microsoft mengumumkan bahwa VFP10 gak akan ada. MICROSOFT SUUUUUUUUUCCCCCCCCKS! Mungkin memang untuk ke depan kita harus memikirkan alternatif lain selain produk microsoft. Beberapa hari yang lalu, waktu online di forum ubuntu, saya lihat ada signature seorang user di sana; tulisannya gini: "I've been Microsoft free for 322 days". Yah- kira-kira seperti gitu deh... Hmmmmmm............. Kapan ya saya bisa bikin signature seperti itu?

Friday, June 04, 2010

GUID di Foxpro 2.6 for DOS (atau bahkan Clipper)

Halo semua....

Udah tau GUID? Kalau belum, silahkan jalan-jalan ke situs wiki mengenai GUID . Selanjutnya, pernah kepikir gak untuk menggunakan GUID di aplikasi foxpro for DOS? He-he-he... sekarang, triknya; gimana caranya aplikasi DOS bisa bikin GUID? Jawabnya; susah! Harus ambil mac address, bikin random number sesuai dengan algoritma GUID.... wah.. repot deh... Waktu kemarin ini saya memulai project saya, sempet bingung juga tuh.... Tapi untung selalu ada solusi kalau mau sedikit ngulik. Awalnya, saya bikin program kecil ini dengan VFP:
Set talk off

Declare Integer CoCreateGuid In Ole32.Dll ;
    string @lcGUIDStruc

Declare Integer StringFromGUID2 In Ole32.Dll ;
    STRING cGUIDStruc, ;
    STRING @cGUID, ;
    LONG nSize

lcFilename = putfile("File &name:", "", "DBF")

if !empty(lcFilename)
    Create cursor [xGuid] (guid c(36))

    For i = 1 to 100000
        Insert into [xGuid] ;
        Values (NewGuid())
        if i%100 = 0
            wait transform(i) window nowait
        endif

    Endfor

    Select [xGuid]
    Copy to (lcFilename) type FOX2X

    Messagebox("Done", 64, "Generate GUID")
endif

*----------------------------------------------------------------------------
* Function    : NewGuid
* Entry with  : none
* Return with : A valid 36-chars GUID value
*----------------------------------------------------------------------------
Function NewGuid
    local lcStruc_GUID
    local lcGUID
    local lnSize
   
    lcStruc_GUID = Space(16)
    lcGUID = Space(80)
    lnSize = 40
   
    If CoCreateGuid(@lcStruc_GUID) = 0 And ;
            StringFromGUID2(lcStruc_GUID,@lcGUID,lnSize) <> 0
        lcGUID = Substr( Strconv(Left(lcGUID,76),6), 2, 36 )
    Else
        lcGUID = .F.
    Endif
   
    Return lcGUID
Endfunc
Lalu, file tersebut (yang berisi 100,000 GUID) dalam format Fox2x - dengan size sekitar 3.5meg - saya copy-kan ke folder data aplikasi FPD26 saya. Nah.. sekarang saya punya 100,000 GUID yang siap pakai. Untuk aplikasi saya, ini adalah jumlah yang jauh dari cukup untuk transaksi satu hari di satu komputer. Karena GUID selalu unik, kalaupun saya men-generate 10 file GUID untuk 10 komputer, dijamin tidak akan ada GUID yang sama (asal jangan satu file GUID yang sama di-copy ke dua komputer!). Nah, pada saat aplikasi DOS memerlukan Primary key, tinggal ambil data dari guid. Paling gampang, ambil aja field pertama. Setelah ambil, langsung hapus. Jadi field itu tidak akan bisa dipakai lagi.

Mungkin Anda bertanya sekarang, "Untuk apa menggunakan GUID di aplikasi DOS?" Nah... tujuannya, supaya kalau data hasil transaksi di aplikasi DOS itu ditarik ke SQL Server, maka kita tidak perlu lagi mengatur primary key-foreign key. Primary key dan foreign key tinggal pakai dari data asli saja. Toh tidak akan konflik. "Gimana kalau semua GUID di file dictionary-nya terpakai semua?" Yah, jangan sampai terpakai semua dong... Setiap hari isi aja dictionary dengan data GUID baru. Jadi GUID yang ada gak pernah kurang.

"Memangnya ini aplikasi apa sih? Kegunaannya untuk apa? Cara koneksi ke SQL Server-nya gimana?" He-he-he.... saya belum bisa sharing sekarang, karena selain ceritanya panjang, informasi itu juga sekarang masih 'classified' alias rahasia perusahaan... Jadi ide ini saya lemparkan karena untuk saya, ini adalah raw idea alias ide mentah. Aplikasinya? Silahkan berkreasi sendiri.... :)