tag:blogger.com,1999:blog-97176222024-03-20T03:41:27.821+07:00Foxy Land[Nothing runs like a fox...]Foxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.comBlogger26125tag:blogger.com,1999:blog-9717622.post-20231086127365158162014-05-26T11:16:00.002+07:002014-05-26T11:19:19.488+07:00NEVER use Linux x64 + SAMBA for MS-DOS clientHi all,<br />
<br />
First of all, welcome again all. This will be my first blog here in English. By doing so, I hope this blog will not only help Indonesian foxer but also all foxer in the world.<br />
<br />
So here it goes; as the title says: NEVER use Linux x64 + SAMBA for MS-DOS client. See, I've been using ubuntu 12.04 + samba 3 as a file server for my Point-of-Sales DOS based application. It works well. Recently, I tried to upgrade the system with ubuntu 14.04 (LTS) x64. I thought, the machine is Core 2 Duo Q9400 and 4gigs RAM. So, why not using 64 bit version instead of old 32 bit version? The installation went well, and samba seem to worked okay. Problem arouse when my POS system tried to read the samba folder. My POS application simply hung there. My log file stated that the faulty line was the line with ADIR() function in FPD26. Confused, I tried to put DIR from DOS prompt only to find that DOS shows the file in an endless loop. In a confusion I switched the system back to the backup server (Yes! This is important. Always have backups --- including server backup). For almost two hours I tried to find what went wrong and found nothing. So I re-format the server and switch back to 12.04.4 LTS 32 bit. Worked like a charm. I didn't know what went wrong until this morning. I tried to install the same ISO (14.04LTS x64) in my development machine virtualbox. Got the same error. A search on the net got me to <a href="https://bugzilla.samba.org/show_bug.cgi?id=10341">https://bugzilla.samba.org/show_bug.cgi?id=10341</a> . So the story is clear now. No wonder I couldn't get MS DOS to connect to Samba that day. I was fighting bugs. If it were my apps bug, I would certainly find it. But if it is an operating system or system bug? Well, just stay out :)<br />
<br />
Hope this post helps anyone having the same problem. See you all......Foxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com1tag:blogger.com,1999:blog-9717622.post-10179413127668334832014-05-01T00:23:00.002+07:002014-05-01T00:39:11.371+07:00Attach MDF di SQL Server 2012; error Access Denied<a href="http://technet.microsoft.com/en-us/library/jj219062.aspx" target="_blank">Found the solution here!</a><br />
<br />
Cerita komplitnya menyusul yaaah..... :D<br />
<br />Foxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com0tag:blogger.com,1999:blog-9717622.post-36657876013536057872014-02-16T01:04:00.002+07:002014-02-16T01:14:39.852+07:00WARNING SYS(2015)Hello all,<br />
<br />
Pertama kali, coba lihat kode di bawah ini. Apakah ada bagian dari program Anda yang menggunakan kode seperti ini?<br />
<span style="font-family: "Courier New",Courier,monospace;"><br /></span><br />
<span style="font-family: "Courier New",Courier,monospace;">lcCursor = SUBSTR(SYS(2015), 3, 8)</span><br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">Select some_field ;</span><br />
<span style="font-family: "Courier New",Courier,monospace;"> From some_table ;</span><br />
<span style="font-family: "Courier New",Courier,monospace;"> Into Cursor (lcCursor)</span><br />
<br />
Kalau ada, HATI-HATI!!! Lho, kenapa? Karena VFP mengambil nilai SYS(2015) dari jam dan tanggal sistem komputer. <u><b>DAN HARI KEMARIN </b></u>(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 <span style="color: #ea9999;"><b><u>tidak boleh</u></b></span> diawali dengan numerik. Jadi bisa saja program Anda yang sudah berjalan bertahun-tahun normal-normal saja, eh... tau-tau sejak kemarin pagi mendadak error.<br />
<span style="font-family: inherit;"> </span><br />
<span style="font-family: inherit;">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;</span><br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">lcCursor = '_' + SUBSTR(SYS(2015), 3, 7)</span><br />
<br />
<span style="font-family: inherit;">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:</span><br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">lcCursor = '_' + SUBSTR(SYS(2015), 4, 7)</span><br />
<br />
<span style="font-family: inherit;">Ok guys (and gals). Semoga post ini bisa membantu Anda. :) . See you around... </span><br />
<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"></span><br />
<br />Foxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com0tag:blogger.com,1999:blog-9717622.post-24218711822134317632013-12-13T11:09:00.000+07:002013-12-13T11:09:02.208+07:00Hati-hati tembak database. Gunakan BEGIN TRANSACTION dan ROLLBACKHi guys....<br />
<br />
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....<br />
<br />
Wah stress banget. Anyway, singkat cerita mengenai kasus itu; semua data kembali normal dalam 1/2 jam dan kasir bisa beroperasional normal lagi.<br />
<br />
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:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">BEGIN TRANSACTION</span><br />
<span style="font-family: "Courier New",Courier,monospace;">...</span><br />
<span style="font-family: "Courier New",Courier,monospace;">... proses perubahan data</span><br />
<span style="font-family: "Courier New",Courier,monospace;">...</span><br />
<span style="font-family: "Courier New",Courier,monospace;"><br /></span>
<span style="font-family: "Courier New",Courier,monospace;">SELECT query untuk memeriksa hasil data</span><br />
<span style="font-family: "Courier New",Courier,monospace;">ROLLBACK TRANSACTION</span><br />
<br />
<br />
Nah... hasilnya bener, barulah, SELECT query yang di bawah di comment, dan ROLLBACK TRANSACTION diganti menjadi COMMIT TRANSACTION.<br />
<br />
<br />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"Foxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com2tag:blogger.com,1999:blog-9717622.post-60088056381091974792013-10-31T11:54:00.001+07:002013-10-31T11:54:22.417+07:00Virtualbox sebagai server real? MANTAAAAB.... :)Salam semuaaaa..... :)<br />
<br />
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<br />
<br />
Okay guys. Begitu aja post awal dari saya. Nanti ngobrol lagi. Okay?<br />
:)Foxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com0tag:blogger.com,1999:blog-9717622.post-21173682441760384232012-04-29T23:12:00.001+07:002012-04-29T23:12:20.126+07:00Memanfaatkan Virtualbox sebagai server development (Ubuntu LAMP + Samba Server) part 1<br />
<div class="MsoNormal">
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; <i>"Ngapain kok capek-capek harus menggunakan virtualbox? Install aja langsung XAMPP atau AppServ. Beres kan?"</i> . Nah alasannya ini:</div>
<div class="MsoNormal">
</div>
<ol>
<li><span style="text-indent: -0.25in;">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.</span></li>
<li><span style="font-size: 7pt; text-indent: -0.25in;"> </span><span style="text-indent: -0.25in;">Dengan LAMP Server, kita juga menginstall Apache
dan PHP. Jadi bisa digunakan juga untuk belajar PHP di waktu luang.</span></li>
<li><span style="text-indent: -0.25in;">Pasti pernah dengar keluhan, <i>"Aplikasi saya bisa jalan di komputer saya dengan baik, tapi waktu diinstall di client kok gak jalan?”</i> . 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).</span></li>
<li><span style="text-indent: -0.25in;">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.</span></li>
<li><span style="text-indent: -0.25in;">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.</span></li>
<li><span style="text-indent: -0.25in;">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 :)</span></li>
<li><span style="text-indent: -0.25in;"><i>"Kenapa Virtualbox? Kan lebih bagus VMWare?" </i>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 (<u>dan</u> gratis)</span></li>
</ol>
Okay. Itu mengenai alasan kenapa menggunakan Virtualbox. Selanjutnya, pre-requisite. Apa yang perlu Anda siapkan untuk mengikuti tutorial ini:<br />
<div>
<ol>
<li><span style="text-indent: -0.25in;">Komputer dengan sistem operasi Windows
XP/Vista/7 yang sudah terinstall dengan baik</span></li>
<li><span style="text-indent: -0.25in;">Oracle Virtual Box (silahkan download </span><a href="http://www.virtualbox.org/" style="text-indent: -0.25in;">http://www.virtualbox.org</a><span style="text-indent: -0.25in;">) yang sudah
terinstall</span></li>
<li><span style="text-indent: -0.25in;">Ubuntu Server (juga bisa di-download di </span><a href="http://www.ubuntu.com/server" style="text-indent: -0.25in;">http://www.ubuntu.com/server</a><span style="text-indent: -0.25in;"> . Saat saya menulis post ini, baru saja keluar versi 12.04 LTS)</span></li>
</ol>
Next: langkah-langkah yang akan kita lakukan:</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div>
<h4>
<ul>
<li>Membuat mesin virtual baru dan menginstall Ubuntu</li>
</ul>
</h4>
<ul><ul>
<li>Jalankan Virtualbox, lalu klik New</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJvFgL8IXpTFpW0R-AY2TnvdH3jyyPE5LjRHt6THUmghGjjTha2DiyC84_IOFRE2-1oHjlA5s2-RoaNCCbnT19cNZ-Xd1yZbHCXrSh2CJCmIv7fDXAN9lRYS4KIfh0ubIp37uphg/s1600/Pic1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="457" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJvFgL8IXpTFpW0R-AY2TnvdH3jyyPE5LjRHt6THUmghGjjTha2DiyC84_IOFRE2-1oHjlA5s2-RoaNCCbnT19cNZ-Xd1yZbHCXrSh2CJCmIv7fDXAN9lRYS4KIfh0ubIp37uphg/s640/Pic1.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<ul>
<li style="text-align: left;">Selanjutnya, ketik nama mesin (untuk tutorial ini, saya pakai nama Ubuntu Server). Pilih Operating System Linux dan server Ubuntu.</li>
<li style="text-align: left;">Next, alokasikan memory untuk server Anda. Untuk tutorial ini saya hanya mengalokasikan 512MB.</li>
<li style="text-align: left;">Pilih Create New Hard Disk, lalu pilih Next</li>
<li style="text-align: left;">Pilih VDI</li>
<li style="text-align: left;">Pilih Dynamically Allocated</li>
<li style="text-align: left;">Berikan path/lokasi file yang akan menjadi 'hard disk' server, dan tentukan ukuran-nya. Untuk tutorial ini saya hanya mengalokasikan 4GB.</li>
<li style="text-align: left;">Selanjutnya, pilih Create.</li>
<li style="text-align: left;">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.</li>
<li style="text-align: left;">Kalau semua langkah Anda benar, harusnya Anda akan menemukan layar depan installasi Ubuntu seperti di bawah ini:</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjpd9MaKeNTJU9yIV6J1vMM9fy22UzLBUuxamMQ26dQwbNZwNPrM7F2P7MI2IVmF9GJyD6-vILDfJtPtLK-ZnKSag9_P7BNQM1nK2dHwJtD8xe4DU0GSFFi3Ui4B12MYeUrtnNvQ/s1600/Pic2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="476" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjpd9MaKeNTJU9yIV6J1vMM9fy22UzLBUuxamMQ26dQwbNZwNPrM7F2P7MI2IVmF9GJyD6-vILDfJtPtLK-ZnKSag9_P7BNQM1nK2dHwJtD8xe4DU0GSFFi3Ui4B12MYeUrtnNvQ/s640/Pic2.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<ul>
<li>Pilih Install Ubuntu Server</li>
<li>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</li>
</ul>
</ul>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgWIvRZXianpE2x6MXxI1YTkHh5jMYj1wzYXTVDWKBEvMC_oN0ohQ9RsijVQTTrPMd6FW2a3tIQszJ6c0MghpyphSuTudV1LqwutgaMUQQOH-ITMY6Gmlgw6RWuavtv_p0vG0GdQ/s1600/Pic3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="474" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgWIvRZXianpE2x6MXxI1YTkHh5jMYj1wzYXTVDWKBEvMC_oN0ohQ9RsijVQTTrPMd6FW2a3tIQszJ6c0MghpyphSuTudV1LqwutgaMUQQOH-ITMY6Gmlgw6RWuavtv_p0vG0GdQ/s640/Pic3.png" width="640" /></a><br />
<ul><ul>
<li>Pilih Continue</li>
<li>Pada saat installasi Ubuntu meminta password root MySQL, jangan lupa mengisikan password root-nya. Oh ya, jangan lupa untuk<b> MENCATAT</b> 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.</li>
<li>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)</li>
</ul>
</ul>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdTL5eBhgJQFXr8zY-je7EtjBpi4w_DFiu99wpGTF7vqOSWd6MrgA3gfBfLTEpsLfoBaOJaMOi2CJMPnRKCw1Oc4stD6y8akk4MQ7pOnyOhLJlgdNlxCsULAwXQX81BlEEIItpzA/s1600/Pic4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="474" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdTL5eBhgJQFXr8zY-je7EtjBpi4w_DFiu99wpGTF7vqOSWd6MrgA3gfBfLTEpsLfoBaOJaMOi2CJMPnRKCw1Oc4stD6y8akk4MQ7pOnyOhLJlgdNlxCsULAwXQX81BlEEIItpzA/s640/Pic4.png" width="640" /></a></div>
<div>
<div style="text-indent: -24px;">
<ul style="text-indent: 0px;"><ul>
<li>Nah, kalau Anda sudah sampai tahap ini, berarti Anda sudah berhasil menginstall Ubuntu server. Sekarang kita tinggal melakukan langkah berikutnya;</li>
</ul>
</ul>
<h4>
<ul style="text-indent: 0px;">
<li>Setting jaringan</li>
</ul>
</h4>
<ul style="text-indent: 0px;"><ul>
<li>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:<br /><span style="font-family: 'Courier New', Courier, monospace;"><b>sudo shutdown -P now</b></span></li>
<li>Setelah itu, ketik password Anda.</li>
<li>Setelah system VM shutdown, tampilkan layar utama Virtualbox, sorot nama server (kasus saya: Ubuntu Server) lalu klik pada button Settings.</li>
<li>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):</li>
</ul>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOqTanXelKVVMJOlNP6pLSLNcJS3aBJE0nFaU2pqt1D7Tz1Ze6srY7im43TDJ6xbWhVlAVVxEImqJrwbnBcxjeA_r6vOyRsHt62F1sCGz4sYymi7jdII4Zg8ii8ASty4bp_VvPbg/s1600/Pic5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="478" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOqTanXelKVVMJOlNP6pLSLNcJS3aBJE0nFaU2pqt1D7Tz1Ze6srY7im43TDJ6xbWhVlAVVxEImqJrwbnBcxjeA_r6vOyRsHt62F1sCGz4sYymi7jdII4Zg8ii8ASty4bp_VvPbg/s640/Pic5.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
</div>
<ul><ul>
<li>Beres? Okay, selanjutnya, jalankan kembali VM Anda. </li>
<li>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.</li>
<li>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:</li>
</ul>
</ul>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHrTWn5i2qDYCGRGLQBlku-S0izqeWxI5M8OJXN91RzN-vQNHuoCgeKi6vyEsCcU5If1JzTh3BmgZjIFcI7n6XC1w7auV8T4AYTq4x9iTQPuEyb1yYLBxMPP3wjFXmdjeT-qdt6A/s1600/Pic6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="476" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHrTWn5i2qDYCGRGLQBlku-S0izqeWxI5M8OJXN91RzN-vQNHuoCgeKi6vyEsCcU5If1JzTh3BmgZjIFcI7n6XC1w7auV8T4AYTq4x9iTQPuEyb1yYLBxMPP3wjFXmdjeT-qdt6A/s640/Pic6.png" width="640" /></a>'</div>
<div style="text-indent: -24px;">
<ul>
<li>Kemudian, tambahkan baris seperti dibawah ini:</li>
</ul>
</div>
<div style="text-indent: -24px;">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghJf_SNoSqJFnZNPaY5K12TiBMnY_W9ypN5LHv-EEggMOLehgAiQSr-jSyJkDn2xZ1Ncbx_lSCBMAVjfDZ0GJ3EdHEgUDieD7WJKLcftXuAVSif8gFcO03dFt10MHwP9sTv6hSYQ/s1600/Pic7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="460" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghJf_SNoSqJFnZNPaY5K12TiBMnY_W9ypN5LHv-EEggMOLehgAiQSr-jSyJkDn2xZ1Ncbx_lSCBMAVjfDZ0GJ3EdHEgUDieD7WJKLcftXuAVSif8gFcO03dFt10MHwP9sTv6hSYQ/s640/Pic7.png" width="640" /></a></div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-indent: -24px;">
<br />
<br />
<ul>
<li>Perhatikan, saya menggunakan IP address 192.168.<b><u><span style="color: red;">56</span></u></b>.3. Saya mendapatkan angka 56 dari Windows. Apabila di Windows saya masuk ke Command Window, lalu mengetikkan IPCONFIG, ini yang saya dapatkan:</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfRo25nDX0gQiui7L9Z31bw3espny1SLEGQ4oCC-82nPKOHiif-zzfw5mB64rUbU9neV4OSxrD4Y9TlhYLR3iJjwhckbfH5vk14umuJg5Wd-MFutF35OmdECfDPmdiU96kaXC3bw/s1600/Pic8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="270" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfRo25nDX0gQiui7L9Z31bw3espny1SLEGQ4oCC-82nPKOHiif-zzfw5mB64rUbU9neV4OSxrD4Y9TlhYLR3iJjwhckbfH5vk14umuJg5Wd-MFutF35OmdECfDPmdiU96kaXC3bw/s640/Pic8.png" width="640" /></a></div>
<br /><ul><ul>
<li>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):</li>
</ul>
<li><br /></li>
</ul>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPjo0r_OPN00vJvJb6j5KgP3EXRiXXJgsJ0kul0Ps5DIqOIMJvoFQi1MHsAypQWBlly8ZGSONaI0n-NxhAM3tHcakq__JsWfAc_jTesQ7B6RSQeerrL3rbjgHqHyi75b6B4OgZKw/s1600/Pic9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="478" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPjo0r_OPN00vJvJb6j5KgP3EXRiXXJgsJ0kul0Ps5DIqOIMJvoFQi1MHsAypQWBlly8ZGSONaI0n-NxhAM3tHcakq__JsWfAc_jTesQ7B6RSQeerrL3rbjgHqHyi75b6B4OgZKw/s640/Pic9.png" width="640" /></a><br /><ul><ul>
<li><br /></li>
<li>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).</li>
</ul>
</ul>
</div>
<div style="text-indent: -24px;">
<br /></div>
<div style="text-indent: -24px;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg13a5nXOCos8NUGHEavaZMBCFfv-QqtYy-lJ0GHOzQeeym5fPo1oQDIKf23GmCBNiFz3Rvsaciw_9Z99nScwpT7tUELkWWbQaywgzll4wSjxCeQFgBibOGSSbSAAIhkG8F5VHy5g/s1600/pic10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center; text-indent: 0px;"><img border="0" height="353" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg13a5nXOCos8NUGHEavaZMBCFfv-QqtYy-lJ0GHOzQeeym5fPo1oQDIKf23GmCBNiFz3Rvsaciw_9Z99nScwpT7tUELkWWbQaywgzll4wSjxCeQFgBibOGSSbSAAIhkG8F5VHy5g/s640/pic10.png" width="640" /></a></div>
<div style="text-indent: -24px;">
<ul>
<li>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</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNwOTGGoTidFuN4anrB6_x-SdssObp4LTWOGb94Vx4InvBFPOrvFgvGxiAFcyvmZ3B3HaQH3xk7d31arForOafKX-h8Vbl8J2a1WN6i9Hef70YhE9wuhMy_Vl5OlDhIIlbazOVjg/s1600/pic11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="394" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNwOTGGoTidFuN4anrB6_x-SdssObp4LTWOGb94Vx4InvBFPOrvFgvGxiAFcyvmZ3B3HaQH3xk7d31arForOafKX-h8Vbl8J2a1WN6i9Hef70YhE9wuhMy_Vl5OlDhIIlbazOVjg/s640/pic11.png" width="640" /></a></div>
<div>
<br /></div>
<div>
<ul>
<li>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.</li>
<li>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:</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgioHzqtQA7aVTS6Adqq5AZuY4sACzfOfobUTCBv___DWjE63Se_Yx2VNWv1Y5po3IYNLanwVT39izengPG_3zltw8Tv2eI2_iC70p5wVYTcg6YmQh7nT9vNADWI-Me5hwBFL4RIg/s1600/pic12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgioHzqtQA7aVTS6Adqq5AZuY4sACzfOfobUTCBv___DWjE63Se_Yx2VNWv1Y5po3IYNLanwVT39izengPG_3zltw8Tv2eI2_iC70p5wVYTcg6YmQh7nT9vNADWI-Me5hwBFL4RIg/s640/pic12.png" width="610" /></a></div>
<div>
<br /></div>
</div>
<div>
<ul>
<li>Setelah itu, restart mysql dengan mengetikkan sudo /etc/init.d/mysql restart.</li>
<li>Duh... capek deh... Lanjutin besok lagi yaaaa.... :)</li>
</ul>
<div>
<br /></div>
<div>
Good luck guys...</div>
<ul>
<li><br /></li>
</ul>
</div>
<div>
<br /></div>
<div>
<br /></div>
</div>
<div style="text-indent: -24px;">
</div>
<div>
</div>
</div>Foxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com7tag:blogger.com,1999:blog-9717622.post-30182739371104638082010-06-18T23:31:00.000+07:002010-06-18T23:31:02.507+07:00Error 34 minutes remining waktu install Windows Server 2003MAAAAAAAN... this is really nuts!<br />
<br />
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.<br />
<br />
... 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.<br />
<br />
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).<br />
<br />
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. <br />
<br />
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.<br />
<br />
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.Foxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com6tag:blogger.com,1999:blog-9717622.post-10257471376597758382010-06-05T10:56:00.000+07:002010-06-05T10:56:30.663+07:00Microsoft menutup forum-nya yang berbasis nntp - termasuk forum VFP :(Halo rekan-rekan foxpro Indonesia....<br />
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!<br />
<br />
Anyway, alasan microsoft adalah seperti ini:<br />
<blockquote><br />
<pre wrap="">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 <a class="moz-txt-link-freetext" href="http://www.microsoft.com/communities/newsgroups/default.mspx">http://www.microsoft.com/communities/newsgroups/default.mspx</a> concerning this issue. The Microsoft Newsgroup website will be made available in additional languages in the next few days.</pre></blockquote><br />
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?Foxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com2tag:blogger.com,1999:blog-9717622.post-60020438255747603732010-06-04T11:54:00.000+07:002010-06-04T11:54:59.322+07:00GUID di Foxpro 2.6 for DOS (atau bahkan Clipper)Halo semua....<br />
<br />
Udah tau GUID? Kalau belum, silahkan jalan-jalan ke <a href="http://en.wikipedia.org/wiki/Globally_Unique_Identifier">situs wiki mengenai GUID</a> . 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:<br />
<blockquote><span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">Set talk off</span><br style="font-family: "Courier New",Courier,monospace;" /><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">Declare Integer CoCreateGuid In Ole32.Dll ;</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> string @lcGUIDStruc</span><br style="font-family: "Courier New",Courier,monospace;" /><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">Declare Integer StringFromGUID2 In Ole32.Dll ;</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> STRING cGUIDStruc, ;</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> STRING @cGUID, ;</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> LONG nSize</span><br style="font-family: "Courier New",Courier,monospace;" /><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">lcFilename = putfile("File &name:", "", "DBF")</span><br style="font-family: "Courier New",Courier,monospace;" /><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">if !empty(lcFilename)</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> Create cursor [xGuid] (guid c(36))</span><br style="font-family: "Courier New",Courier,monospace;" /><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> For i = 1 to 100000</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> Insert into [xGuid] ;</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> Values (NewGuid())</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> if i%100 = 0</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> wait transform(i) window nowait</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> endif</span><br style="font-family: "Courier New",Courier,monospace;" /><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> Endfor</span><br style="font-family: "Courier New",Courier,monospace;" /><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> Select [xGuid]</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> Copy to (lcFilename) type FOX2X</span><br style="font-family: "Courier New",Courier,monospace;" /><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> Messagebox("Done", 64, "Generate GUID")</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">endif</span><br style="font-family: "Courier New",Courier,monospace;" /><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">*----------------------------------------------------------------------------</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">* Function : NewGuid</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">* Entry with : none</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">* Return with : A valid 36-chars GUID value</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">*----------------------------------------------------------------------------</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">Function NewGuid</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> local lcStruc_GUID</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> local lcGUID</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> local lnSize</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> </span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> lcStruc_GUID = Space(16)</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> lcGUID = Space(80)</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> lnSize = 40</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> </span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> If CoCreateGuid(@lcStruc_GUID) = 0 And ;</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> StringFromGUID2(lcStruc_GUID,@lcGUID,lnSize) <> 0</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> lcGUID = Substr( Strconv(Left(lcGUID,76),6), 2, 36 )</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> Else</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> lcGUID = .F.</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> Endif</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> </span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> Return lcGUID</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">Endfunc</span></span></blockquote>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.<br />
<br />
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.<br />
<br />
"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.... :)Foxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com6tag:blogger.com,1999:blog-9717622.post-13427734237446740182010-04-19T22:56:00.002+07:002010-04-19T23:34:17.770+07:00PENGHAPUSAN RECORD DI DBF = Ingat: SET DELETED ON!DBF adalah format standard table yang mulai dikembangkan sejak pertengahan tahun 1960-an (Wow! Selama ini banyak yang bilang DBF dikembangkan sejak tahun 80-an! --- Saya gak akan cerita panjang. Silahkan baca di <a href="http://www.foxprohistory.org/">http://www.foxprohistory.org</a> ). Pada waktu itu (jujur- saya juga belum lahir), semua mengenai komputer identik dengan MAHAL. Harga mengakses komputer mahal. Media penyimpanan mahal. Operasional komputer mahal. Dan proses-proses yang sekarang sederhana, waktu itu juga MAHAL. Kata MAHAL (expensive) disini, bukan hanya berarti uang. MAHAL juga bisa berarti membutuhkan proses yang panjang, sedemikian rupa sehingga si komputer tidak dapat mengerjakan hal lain kecuali hal yang ‘mahal’ itu. Nah, penghapusan record adalah salah satu dari proses yang mahal itu. Kenapa?<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXQCZ8_eGsycs5mW1ym3ohl-qQIn2gbAVrqWrfTy_PBMyXVeEzIZnQUZuAQy5tEYuaP_EH-tdn7lA0YVxzBRxVnyDYZWMWaCqPz7ceSAXiQ6vs798fx0OOFMhmqh8uLh60RnI5g/s1600/records-1.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinXQCZ8_eGsycs5mW1ym3ohl-qQIn2gbAVrqWrfTy_PBMyXVeEzIZnQUZuAQy5tEYuaP_EH-tdn7lA0YVxzBRxVnyDYZWMWaCqPz7ceSAXiQ6vs798fx0OOFMhmqh8uLh60RnI5g/s320/records-1.JPG" /></a></div>Coba lihat diagram di samping. Katakanlah ada file database dengan 8 record. (Catatan: untuk menyederhanakan, kita akan mengasumsi data setiap record disimpan secara sequential. Kita juga tidak akan membahas struktur index, jadi diasumsi file database ini adalah file sequential tanpa index).<br />
<div class="MsoNormal">Nah, coba bayangkan apabila ada penghapusan record. Katakanlah, record 3 dan record 5 dihapus. Kira-kira apa yang akan terjadi?</div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQEMeX3ewVE-KlukT-8RatDL8UfDzJ6gdoFKkApyL8jSylp6Lk225YTXLA9rjMFEvK8f_lSa2W2LmA-QCv8gMHP6jPSj5WgtT-XsRYWtN0ZRSTr0VCa_DuQp9jnG4Q-tvco-iIKQ/s1600/records-2.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQEMeX3ewVE-KlukT-8RatDL8UfDzJ6gdoFKkApyL8jSylp6Lk225YTXLA9rjMFEvK8f_lSa2W2LmA-QCv8gMHP6jPSj5WgtT-XsRYWtN0ZRSTr0VCa_DuQp9jnG4Q-tvco-iIKQ/s320/records-2.JPG" /></a></div>Okay. Anda bisa lihat efeknya pada gambar di sebelah ini? Tempatnya jadi kosong alias bolong. Nah, karena record-record ini ada di dalam satu file, apa yang akan dilakukan oleh operating system untuk meng-klaim space kosong ini?<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqA_2gGZGyFtyoe-zDZnBYmBOwlowIb4jzyAj1oaFquW0BpyBKYNamxJA9K55SsnfcHGyM__UhZTtsTROzf7otPc1p2LzqmUHffSed7Y1EvFge8TWee3nlleAKrffBSis1BKJQyA/s1600/records-3.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqA_2gGZGyFtyoe-zDZnBYmBOwlowIb4jzyAj1oaFquW0BpyBKYNamxJA9K55SsnfcHGyM__UhZTtsTROzf7otPc1p2LzqmUHffSed7Y1EvFge8TWee3nlleAKrffBSis1BKJQyA/s320/records-3.JPG" /></a></div>Yup. Operating system akan 'menulis ulang' file tersebut dan menyusun ulang isinya seperti pada gambar di samping.<br />
<div class="MsoNormal"><br />
Okay. Anda lihat efeknya? Berapa besar 'biaya' untuk membangun ulang sebuah file? Yang pasti, lupakan multi user. Bagaimana caranya bisa ada dua user yang mengakses satu file kalau file itu dihapus lalu ditulis ulang oleh salah satu user? Atau, gak usah ngomong jauh-jauh multi user deh... Katakanlah hanya satu user. Tapi record yang ada bukan 8; melainkan 800,000 record. Na lho! Anda bisa bayangkan berapa banyak rewrite yang harus dilakukan hanya untuk menghapus satu record (yang di mata orang awam/client, "sistem kita sederhana kok!" --- sounds familiar?)<br />
</div><div class="MsoNormal">Jadi, apa yang dilakukan oleh orang-orang yang menciptakan system logic database xBase pada jaman kuda belum ada buntut dulu? Anda pasti bisa menebak! YUP. Mereka membuat sistem database sedemikian rupa sehingga apabila ada penghapusan, record yang dihapus <b>TIDAK</b> dihapus secara fisik, melainkan <b>HANYA DITANDAI</b> bahwa record tersebut sudah dihapus. Tujuannya, pada saat yang dianggap aman, atau saat sistem komputer tidak sedang bekerja, barulah proses penghapusan secara fisik dilakukan (ini yang kita kenal sekarang dengan proses <b>PACK</b>).<br />
</div><div class="MsoNormal">Sekarang kita kembali ke dunia VFP yang kita kenal. Database VFP juga masih menggunakan dasar-dasar xBase, jadi tetap ada kasus seperti di atas. Record pada table DBF yang dihapus, juga hanya akan 'ditandai' oleh VFP. Record tersebut masih bisa dikembalikan dengan perintah RECALL. Kalau kita ingin sistem menampilkan record yang sudah ditandai tersebut, berarti kita beritahu VFP dengan perintah <b>SET DELETED OFF</b>. Kalau kita ingin 'menyembunyikan' record yang sudah ditandai, berarti kita berikan perintah <b>SET DELETED ON</b>. Nah, sejauh ini simple kan? Jadi apa yang menyebabkan begitu banyak pertanyaan dan kasus-kasus di forum yang berhubungan dengan record yang ditandai-tapi-belum-dihapus ini? Biasanya masalah yang muncul tidak jauh dari kasus berikut:</div><div class="MsoNormal"><br />
1. Record yang sudah dihapus, masih ngotot muncul</div><div class="MsoNormal"><br />
2. Record yang sudah dihapus ikut terhitung</div><div class="MsoNormal"><br />
3. Mau masukin record baru jadi gak bisa karena katanya record tersebut sudah ada. Saat di-check... ternyata sudah di-delete -- tapi belum di-pack....</div><div class="MsoNormal"><br />
4. Perintah SET DELETED ON sudah diberikan di awal program, tapi kok gak <i>ngefek </i>ya?</div><div class="MsoNormal"><br />
5. Ini lebih aneh lagi... SET DELETED ON sudah diberikan, udah jalan dengan baik... Tapi <i>kok </i>tiba-tiba VFP mengembalikan SET DELETED ke OFF??? Wah.. ini sih pasti bug VFP! </div><div class="MsoNormal"><br />
Programmer-programmer VFP sangat terkenal dengan kelihaiannya ngulik sana-sini. Maklum... maskot VFP kan rubah, jadi gak heran kalau lihai. Apa saja kelihaian programmer VFP untuk mengakali kasus di atas?</div><div class="MsoNormal">1. Habis DELETE, langsung PACK.</div><div class="MsoNormal"><br />
2. Keluar program/masuk program = PACK dulu dong.... Bisa kita akalin dengan proses PACK wajib dilakukan saat mau posting harian (keren banget namanya = <i>posting</i>... padahal kita cuman minjem istilah akuntansi untuk ngebersihin sampah kan?)</div><div class="MsoNormal"><br />
3. Yang ini sedikit lebih advance; JANGAN gunakan DELETE! bikin field sebagai flag untuk record-record yang dihapus.</div><div class="MsoNormal"><br />
4. Ada cara satu lagi yang cukup mantap: "Di sistem kami, semua transaksi langsung dibukukan. Tidak ada istilah DELETE. Yang ada adalah RETUR. Jadi apabila ada kesalahan, sistem tetap memiliki catatan"</div><div class="MsoNormal"><br />
Gak tau apa lagi deh... tapi yang pasti, masalah utama adalah programmer tidak tau atau gagal menggunakan SET DELETED ON/OFF untuk mengelola record yang dihapus. Kenapa gagal? Karena <i>banyak </i>programmer VFP yang tidak tau bahwa:</div><div class="MsoNormal">1. SET DELETED <b>OFF</b> adalah <b>nilai default</b> VFP</div><div class="MsoNormal"><br />
2. Perintah SET DELETED ON/OFF <b>hanya <u>memiliki scope</u> di data session <u>dimana perintah tersebut diberikan</u></b>. Jadi kalau Anda menggunakan Private Data Session di form Anda, setiap kali Anda harus menset preferensi Anda dengan memberikan perintah SET DELETED ON (atau OFF -- biarpun sebenarnya kalau preferensi Anda OFF ya jelas tidak perlu -- <i>kan </i>sudah default?)</div><div class="MsoNormal"><br />
3. Setelah SET DELETED ON atau OFF berlaku, maka semua table dan perintah yang digunakan akan mengikuti aturan tersebut. Ini berarti, apabila Anda membuat SELECT query saat SET DELETED OFF, maka record yang sudah terhapus akan... YUP. AKAN TERBAWA - dan tidak ada tanda bahwa record itu sudah di-delete! Bagaimana bila setelah query tersebut Anda memberikan SET DELETED ON? Apakah hasil query (cursor) akan terpengaruh? NOPE! Record di cursor tidak diberi tanda deleted kan? Jadi ya dianggap itu adalah record yang valid. Nah.. satu lagi nih yang sering dilupakan... Local view pada dasarnya adalah... SELECT QUERY! Jadi kasus SET DELETED ON yang gak ngefek juga dengan mudah terjadi di Local View. Gimana ngakalinnya? Silahkan lihat point berikut....</div><div class="MsoNormal"><br />
4. Karena peletakkan SET DELETED ON sangat penting, pastikan Anda sudah men-set preferensi SET DELETED ON ini <u>sebelum</u> Anda membaca data. Karena umumnya aplikasi kita menggunakan form (tentu saja pengecualian bila Anda membuat COM+ -- Tapi kalau Anda udah bisa bikin aplikasi COM+ dan masih bingung dengan SET DELETED, itu namanya <i>kebangeten</i>), jadi saya akan membahas penggunaan SET DELETED di form.</div><div class="MsoNormal"><br />
Apa yang dijalankan dulu waktu form VFP dipanggil? Yang pertama adalah event BeforeOpenTable yang ada di Data Environment. Setelah itu, event Load dari form. Kemudian berturut-turut: Init, Show, dan Activate. Untuk mempermudah mengingat, biasanya saya bilang urutannya m<b style="color: blue;"><span style="background-color: yellow;">BO</span></b>k-<b style="background-color: yellow; color: blue;">LISA</b>.</div><div class="MsoNormal">Jadi, kalau Anda menggunakan Data Environment, berarti Anda membuka table dari Data Environment, ada dua alternatif:</div><div class="MsoNormal">1. Berikan perintah SET DELETED ON di event BeforeOpenTable yang ada di Data Environment</div><div class="MsoNormal">2. Kalau Anda membuka local view dari DE, Set property NoDataOnLoad di Data Environment table. Lalu, setelah Anda secara eksplisit memberikan perintah SET DELETED ON, refresh data dengan fungsi REQUERY()<br />
</div><div class="MsoNormal">Saya pribadi, lebih suka me-load data (table atau view) dari event Load. Jadi, sebelum me-load table atau view apa-pun, berikan dulu perintah SET DELETED ON. Setelah perintah itu, baru berikan perintah USE... untuk membuka table atau view.</div><div class="MsoNormal"><br />
Okay. Saya rasa segini saja yang bisa saya share. Untuk membuat post ini saja sudah hampir satu setengah jam. Jadi sudah melewati batas break saya... Ha-ha-ha... Ya ndapapalah... sekali-kali.</div><div class="MsoNormal">Sebagai penutup, saya berharap artikel yang saya buat ini bisa bermanfaat untuk rekan-rekan programmer Microsoft Visual FoxPro. VFP ROCKS!</div><div class="MsoNormal"><br />
</div><div class="MsoNormal"><br />
</div><div class="MsoNormal"><br />
</div><div class="MsoNormal"><br />
</div><div class="MsoNormal"><br />
</div><div class="MsoNormal"></div>Foxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com8tag:blogger.com,1999:blog-9717622.post-76884849768274519582010-03-19T23:30:00.002+07:002010-03-20T00:00:33.442+07:00MySQL Workbench, Linux, MySQL, myphpadminHalo rekan-rekan. Sekarang udah jam 23. Dari tadi jam 9, saya ngerjain hal yang sangat tidak produktif: Bergulat dengan pinguin dan berusaha membuat lumba-lumba mau main lompat-lompatan dengan rubah yang sedang berlari di atas jendela. Fiuuuh... cape deh.. sampai sekarang masih belum selesai. Lagi nunggu download nih... Jadi saya pikir, sambil nunggu download, saya berbagi dengan teman-teman semua. Semoga suatu saat bisa berguna.<br />
<br />
By the way, sebenarnya apa yang membuat saya tertarik dengan linux dan mysql. Teman saya bang armen, bilang 'Better late than never'. Jujur aja, sebenarnya minggu lalu saya tidak tertarik. Tapi akhir-akhir ini memang ada beberapa perkembangan baru; 1) Ada client yang ingin menekan lisensi, karena ada sekitar 75 PC untuk POS, dan ada 5 server. Kalau gak pakai Window$ original, dia khawatir. Kalau pakai Windows, dia tekor. Jadi saya mau coba Linux yang harga lisensi nya sangat tidak terkalahkan alias gratis :) 2) Dua minggu terakhir ini, banyak sekali post di <a href="http://www.fox-id.org/">Forum fox-id</a> mengenai MySQL begini lah, MySQL begitu-lah... Sulit koneksi. Koneksi lambat, dll-dll... Jadi saya juga penasaran.<br />
<br />
So anyway, ini yang udah saya kerjakan dari tadi jam 9:<br />
1. Install MySQL Workbench. Tadi udah di-download di kantor. Hanya 19++ Megs saja.<br />
2. Install MyODBC Connector. Tadi siang juga sudah di dl. 4++ Megs saja.<br />
3. Buka VMWare, jalankan uBuntu Server, secara otomatis MySQL service juga jalan.<br />
4. Launch MySQL Workbench. Hmmm... Looks great and sophisticated. :) Coba koneksi... GAGAL! Pesannya: Cannot connect to mysql server on 192.168.0.2 (10060)<br />
5. Cari tau kenapa.... pusing juga... Ternyata harus mengedit my.cnf. Gimana cara meng-edit-nya? Kalau di DOS dulu ada file EDIT untuk mengedit text. Di Windows, ada Notepad... Kalau di ubuntu? Pakai command editor yang namanya "VI". Aneh sekali. Mau ngetik susah. Tombol INS ternyata sangat berpengaruh. Mau nge-save? Ho-ho-ho... Ketik ':', lalu ketik 'W' ... Hmmmm... jadi ingat waktu pakai DEBUG dulu.... Nge-save-nya juga pakai -w<br />
6. Katanya harus di-edit. IP 127.0.0.1 diganti dengan 0.0.0.0. Okay... Sudah. Lalu restart service mysql, coba lagi dengan MySQL Workbench... GAGAL LAGI... tapi sekarang pesannya udah ganti. Setelah tanya oom google, ternyata harus update user table yang ada di mysql. Cara termudah adalah dengan phpmyadmin. Jadi, mari kita install phpmyadmin.<br />
7. Perintah sudo apt-get install phpmyadmin menghasilkan error... Kenapa lagi ya? Oooo... kelihatannya uBuntu mencari package yang ada di CD-ROM. Mari kita mount CD-ROM uBuntu... Sudah di mount. MASIH TIDAK BERHASIL INSTALL. Tanya lagi oom google<br />
8. Oooh.. katanya, harus edit sources.list. Oke deh.. edit lagi dengan command editor VI. Wah, udah pakai beberapa kali, akhirnya jago juga pakai VI :D<br />
9. Sudah di-edit, masih gak bisa. Hmmm.... coba deh, kita update program aptitude-nya.. Jadi sudo aptitude update. Naaa. download deh... gak tau berapa mega.<br />
10. Sudah download beres, sekarang, sekali lagi kita coba sudo apt-get install phpmyadmin . Naaah... sekarang bisa. Download lagi... 42 mega...<br />
11. Installasi udah beres. Sekarang lagi configure apache2... Hmmm... apache2 kan web server. Jadi kelihatannya saya akan bisa meng-konfigurasi MySQL dari web browser ya? Hmmm... gimana caranya.. Oh... Ternyata, tinggal ketik http://192.168.0.2/phpmyadmin . Beres. Tinggal isi credential user ID mySQL dan password-nya...<br />
12. Udahan ah blogingnya... Mau nyobain lagi nih... Senangnya weekend... Besok gak harus ke client, jadi bisa memanfaatkan waktu sebaik-baiknya untuk belajar. Yah, sampai malam minggu besok deh... Hari minggu udah harus siap-siap lagi. Dapur harus ngebul kan? :D<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBUWFEoP-VBfiNSqhsJa0uDJc6IwKS8NEI11wlD9ZIjhrcbuUvaC31If2sQ_6UmWNIeOei4TbJmo90DcZJnQDc6H1tXwm4Q0NSEFKbd9vs_ysfMMnKaYdCxjN6Dwk6CagweNL4xg/s1600-h/mysql1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBUWFEoP-VBfiNSqhsJa0uDJc6IwKS8NEI11wlD9ZIjhrcbuUvaC31If2sQ_6UmWNIeOei4TbJmo90DcZJnQDc6H1tXwm4Q0NSEFKbd9vs_ysfMMnKaYdCxjN6Dwk6CagweNL4xg/s320/mysql1.JPG" width="320" /></a></div><br />
Bye all... :)Foxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com10tag:blogger.com,1999:blog-9717622.post-2505791006004691782010-03-18T01:17:00.001+07:002010-03-18T01:22:59.939+07:00This fox try to run along with the penguinHalo rekan-rekan foxer... Selama ini saya tidak pernah betul-betul serius dengan Linux dan MySQL. Tapi kelihatannya dalam waktu dekat ini saya akan mempertimbangkan MySQL untuk production. Jadi, saya menginstall Linux dan MySQL di laptop saya. Dan inilah ceritanya....<br />
1. Okay. Keputusan untuk menginstall Linux di laptop saya. Eh, tentu saja tidak langsung di hard disk. Nanti production gimana? Gampang.. gunakan saja Sun VirtualBox.<br />
<br />
2. Next, pertama kali pilih dulu distro apa... Hmmm.. di library, saya punya Sidux, Fedora, Centos, dan uBuntu. Pilih yang mana ya? Setelah melihat internet, ternyata yang paling banyak penggunanya - hmm... maksud saya yang paling banyak saya temukan -- adalah uBuntu. Jadi uBuntu lah yang terpilih.<br />
<br />
3. Install uBuntu... Ups... Setelah diinstall, pikir-pikir, ngapain juga saya install x-window nya? Interface gnome memang lumayan okay. Serasa pakai Macintosh. Tapi.. Untuk apa GUI-nya? Jadi saya pergi ke <a href="http://www.ubuntu.com/GetUbuntu/download">http://www.ubuntu.com/GetUbuntu/download</a> dan men-download distro server-nya (Linux uBuntu 9.10 Karmic Koala).<br />
<br />
4. Linux di Virtual Box ter-install. ah.. tapi ternyata setup network-nya gak bisa. Virtual Network-nya tidak bisa di-detect di uBuntu. Sun VirtualBox saya ternyata versi lama. Jadi harus update Virtual Box ke versi baru... 70 Mega? Hmmm... malas ah... apalagi forum dan dokumentasi-nya agak kurang okay. Jadi saya beralih ke VMWare 7.0. Install VMWare, install ulang uBuntu server. Yup. Langsung jalan. Dan ethernet-nya? Mari kita lihat dengan perintah <span style="font-family: "Courier New",Courier,monospace;">ifconfig</span>. Perfect. Langsung ada eth0, dan IP-nya sudah di set.... :)<br />
<br />
5. Sekarang saya perlu download MySQL. Eh... ternyata dulu pernah download. Ada kok. MySQL 4.1 dalam format tar.gz... Eh.. tapi sebentar dulu.. Gimana caranya meng-copy dari folder Windows ke folder Linux? Dan setelah masuk ke Linux, gimana cara install-nya ya? Terus, bakal cocok gak? Hmmm..... <br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhomUPJI0DXvAf5DVjEoN6KIRRHpCpLeTBoVYvY7LeCRBoVEiEgHfx1SAetnNLdkd-z83uvpGMJ6-TyO-BPdJ6AJBk_yIqKuhAj0theI7BuVwAnIqaVLNh22fHcAdH02cFVu6xMjg/s1600-h/post1.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhomUPJI0DXvAf5DVjEoN6KIRRHpCpLeTBoVYvY7LeCRBoVEiEgHfx1SAetnNLdkd-z83uvpGMJ6-TyO-BPdJ6AJBk_yIqKuhAj0theI7BuVwAnIqaVLNh22fHcAdH02cFVu6xMjg/s320/post1.JPG" /></a></div><br />
6. Ah.. pusing-pusing... Mendingan download aja MySQL versi terbaru langsung dari Linux. Caranya gimana ya? Oooh.. gampang... Coba tanya Oom Google... WAH??? Tinggal ketik <b><span style="font-family: "Courier New",Courier,monospace;">sudo apt-get install mysql-server</span></b>??? Kok gampang ya? Kirain bakal susah! Eh, tapi berarti, Linux yang ada di dalam virtual machine harus ada koneksi internet. Should be easy. Share koneksi 3G-saya, lalu, coba cek linux lagi...<br />
<br />
7. Wah-wah-wah.. ternyata saya harus rubah IP address Linux. Sharing koneksi tadi merubah IP. Nah.. sekarang gimana caranya merubah IP di Linux... Mari kita tanya Oom Google... <a href="http://www.howtogeek.com/howto/ubuntu/change-ubuntu-server-from-dhcp-to-a-static-ip-address/">http://www.howtogeek.com/howto/ubuntu/change-ubuntu-server-from-dhcp-to-a-static-ip-address/</a><br />
<br />
8. IP Beres. Coba nge-ping ke fox-id... <br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV4gxWZre44zU0SmztO23xV6Er5egY73lCOxv6ST-_rztWxLxjPD3lVFxnGvoWMQeCqbaid-GVBpNuK1p0dUAqjt7ZBKKOmMbtvdiJtpBvEQZwRUjPRXNFQYrSM5dTCqP9tCgXaA/s1600-h/Post4.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV4gxWZre44zU0SmztO23xV6Er5egY73lCOxv6ST-_rztWxLxjPD3lVFxnGvoWMQeCqbaid-GVBpNuK1p0dUAqjt7ZBKKOmMbtvdiJtpBvEQZwRUjPRXNFQYrSM5dTCqP9tCgXaA/s320/Post4.jpg" /></a></div>Mantaaaafff...<br />
<br />
9. Sekarang, tinggal jalankan sudo apt- tadi... Coba kita lihat.. Apakah semudah yang dikatakan?<br />
YUP... Ternyata memang semudah itu. Gambar disamping ada yang saya garis kuning. Yang saya garis kuning itu adalah command yang salah. Ternyata kurang kata install... Dasar Command Line.... Ha-ha-ha... Yang kedua (yang di beri box merah) adalah command yang betul. Tinggal download 22 mega... Hmmmm... Jadi saya tinggal dulu untuk post blog ini<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpYPdkiUBsT9SSl97UyathpFYvoOb_VGG5bO1CY5ZjKInDwX52TLJYMEczEwdmsxCLyULrTDeKPSPU37yWAI-o8A61o-aZq4Rq6i7Jqu4glrlbA9uW1zkShrgtMjp_sNI6nSMOEw/s1600-h/post5.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpYPdkiUBsT9SSl97UyathpFYvoOb_VGG5bO1CY5ZjKInDwX52TLJYMEczEwdmsxCLyULrTDeKPSPU37yWAI-o8A61o-aZq4Rq6i7Jqu4glrlbA9uW1zkShrgtMjp_sNI6nSMOEw/s320/post5.JPG" /></a></div>10. By the way, waktu saya ngetik sampai point 8 (atau 7) di atas, ternyata download udah selesai. Cepat juga. Dan langsung terinstall lagi!<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqgh_KwqAu5LwGVxeZrqBgt1dY2qxx_-FNR-TR6RMAm2gwu9k8ESPL5fZJ5gHBH7TdoZJnJtQPJAvpZonT4iEZv6ERu2ETIVGCP87jdz4YUMdbcyB7_IGtpogKxVmPGJsr5SMrhw/s1600-h/post3.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqgh_KwqAu5LwGVxeZrqBgt1dY2qxx_-FNR-TR6RMAm2gwu9k8ESPL5fZJ5gHBH7TdoZJnJtQPJAvpZonT4iEZv6ERu2ETIVGCP87jdz4YUMdbcyB7_IGtpogKxVmPGJsr5SMrhw/s320/post3.jpg" /></a></div>11. WOW... sekarang tinggal menyelesaikan post di blog, lalu coba MySQL ODBC. Tapi sekarang udah jam 01.15.... Tidur dulu ah... Mimpiin fox balapan sama pinguin.. Menang siapa ya???<br />
<br />
Thank you guys and gals for reading!<br />
<br />
FOX ROCKS!!!!Foxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com3tag:blogger.com,1999:blog-9717622.post-46995442716842542882010-03-05T13:48:00.000+07:002010-03-05T14:42:38.629+07:00Welcome 2010Okay guys and gals... judulnya memang udah telat. Sekarang udah bulan Maret. Tapi heck, ini adalah post pertama saya tahun 2010. Jadi ya udah. Tetap Welcome 2010. :D<br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN48_7HpNqOS5CNng1Qg1zNRxfU9iMHy2nL2jF04199sYX-0ejxHV9rP8XdwA6PW7nJUgJP1iOBFwQDnCN1WWbeBTz0OpkDOueTxDg_XsrpZyvf6EmLI1U27O5z63o9vKJ1VhofA/s1600-h/25012010013.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN48_7HpNqOS5CNng1Qg1zNRxfU9iMHy2nL2jF04199sYX-0ejxHV9rP8XdwA6PW7nJUgJP1iOBFwQDnCN1WWbeBTz0OpkDOueTxDg_XsrpZyvf6EmLI1U27O5z63o9vKJ1VhofA/s320/25012010013.jpg" /></a></div>Anyway, saya sangat bersemangat dengan tahun 2010 ini. Ada banyak rencana besar di depan. Anak saya yang kecil masuk SD. Wow... so many exciting things. Sejak Januari kemarin juga sudah banyak exciting things. Salah satu-nya saya mengalami patah kaki... :D Yup. Betul-betul patah. Di gips selama satu bulan! Weks..... Betul-betul luar biasa yang namanya gips itu. Jalan kemana-mana harus pakai tongkat.... Pokoknya rasanya sengsara banget. Tapi untungnya.... (selalu untung... itulah orang timur. Kita selalu untung :D ).. Untungnya yang patah bukan tangan atau jari... Jadi selama bulan Januari saya tetap bisa menggunakan laptop, dan - Puji Tuhan - masih ada dua client baru yang masuk bulan Januari.. (lumayan... untuk nutupin biaya berobat... ongkos ke dokter dan nge-gips rp 700,000 -- Belum obatnya yang muahal-muahal....).<br />
<br />
So anyway, ada pelajaran yang saya dapat selama saya sakit. I think I share it with you guys...<br />
1. Setiap kali ke dokter, saya harus foto rontgen dulu (X-Ray). Sekali X-Ray Rp 120,000. Dari ruangan X-Ray, saya ke ruang praktek dokter. Si dokter kemudian akan mempelajari foto x-ray itu, lalu bilang, "Pak, coba lihat tuh patahan-nya... lumayan nih.. sudah mulai bagus... Tapi harus hati-hati ya Pak. Masih harus dijaga. Gips-nya kita ganti ya Pak. Sudah mulai longgar nih...." dst.dst...<br />
Yang saya perhatikan; saya tidak pernah menawar; "Dok... gak usah x-ray deh...", atau "Dok, masa dokter cuma ngomong gitu-gitu aja dan lihat foto kaki saya --- yang saya juga bisa lihat --- minta bayaran sampai segitu sih?" Saya gak nawar. Kenapa? Ya karena saya <b>mau </b>sembuh. Saya juga nurut sama si dokter. Karena saya percaya sama expertise beliau. Nah... yang saya renungkan, bayangkan betapa nikmatnya kalau kita bisa menciptakan perasaan seperti itu pada client kita. Mereka menghargai expertise kita. Dan kita juga tidak ragu-ragu memberi 'nilai' pada diri kita sendiri.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEOBHQQMVSRKMevUR6kAcsrUCysFlgGNsgB6s3wWlxcRd0mxyqIEW6ZLW-sliIcmd5AAwakZtct161S7NCLm9pt0g19pXmIiPZSRucBWyrFdLrR05B4ZzvLywEKMyRq9opc-sJlQ/s1600-h/03022010043.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEOBHQQMVSRKMevUR6kAcsrUCysFlgGNsgB6s3wWlxcRd0mxyqIEW6ZLW-sliIcmd5AAwakZtct161S7NCLm9pt0g19pXmIiPZSRucBWyrFdLrR05B4ZzvLywEKMyRq9opc-sJlQ/s320/03022010043.jpg" /></a></div>2. Foto disamping adalah foto si dokter waktu mau ngelepas gips. Itu alat yang digunakan untuk membuka gips yang kerasnya seperti batu. Ampun deh waktu digips. Saya sampai gak bisa nginjek kopling. Jadi gimana cara saya pergi-pergi ke sana kemari? Yah, terpaksa pakai supir. Lumayan tuh, bayar supir. Hitung-hitung hampir 2jt habis untuk supir. Tapi ini yang saya pelajari... Justru kalau saya lihat jadwal saya bulan Januari dan Februari, jadwal saya sangat padat. Bener-bener gak ada waktu santai... Sekarang malah saya lebih santai. Jujur, ada perasaan bersalah juga pada diri sendiri. Kemarin ini istri saya bilang, "Kemarin waktu pakai supir, rasanya jadwalnya strict terus. Kok sekarang molor?" Hmmmm...... saya baru sadar... Saat pakai supir, istilah "waktu adalah uang" betul-betul bisa diartikan secara harafiah. Tiap hari supir datang. Harus dibayar. Jadi saya harus efektif. Ini refleksi juga buat saya. Dan saya sekarang bertekad untuk lebih efektif lagi. Doa-in ya teman-teman :)<br />
<br />
Yah, jadi beginilah awal 2010 yang sangat exciting. Looking forward for a great times this year. Wish you all the same! Happy New Year guys and gals! TETAP SEMANGAT!!!!Foxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com4tag:blogger.com,1999:blog-9717622.post-60270262059505299792009-05-20T15:02:00.003+07:002009-05-24T15:32:28.050+07:00Belajar dari user interface iPhoneWow... sudah 4 tahun sejak blog saya yang terakhir.... LUAR BIASA!!! Ternyata 4 tahun bisa berlalu begitu cepat!!! Wow... But so many things have happen in these last four years. Obviously, I cannot recall everything, but maybe I'll just start with what I have in mind now....<br /><br />Pertama kali, saya ingin mengucapkan terimakasih untuk Anda yang sudah membaca blog saya. Semoga ada hal-hal yang bisa Anda petik dari tulisan saya.<br /><br />Selanjutnya, saya ingin sedikit sharing mengenai ide yang saya dapatkan dalam satu bulan terakhir ini. Ceritanya begini; awal April 2009 kemarin, Telkomsel menawarkan iPhone. Waktu itu hari Selasa, dan sebenarnya saya gak niat beli. Cuman karena di-undang ke Hilton waktu grand launching, tujuan saya sebenarnya lihat hotel-nya. Kebetulan hotel Hilton itu adalah hotel baru di Bandung, dan saya belum pernah masuk. So anyway, saya datang, dan ternyata yang namanya iPhone itu user interface-nya bagus sekali. Sangat simple. Semua user interface logis dan masuk akal (akhirnya setelah saya beli, anak saya yang 5 tahun juga bisa mengoperasikannya tanpa diajarin). Akhirnya saya beli dan menghadiahkan iPhone itu untuk istri saya (yang kemudian jadi 'autis' dengan Facebook :D )<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxSEAB4viPlPn5QKvCZCbWPD4P1j070DjWOI59hYmspfs2wo7k3HQc9U_iU8WyYVVgd9Xfv2iLG4jqJewb1nSCYXCbkKNlRoPFJ-g6v7FHd4Korj4xHq4BndO8kOTLCXtYWG7q9Q/s1600-h/iPhone2.jpg"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxSEAB4viPlPn5QKvCZCbWPD4P1j070DjWOI59hYmspfs2wo7k3HQc9U_iU8WyYVVgd9Xfv2iLG4jqJewb1nSCYXCbkKNlRoPFJ-g6v7FHd4Korj4xHq4BndO8kOTLCXtYWG7q9Q/s320/iPhone2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5339305304350167026" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHz3TLNnaO23qzyc5z9aCAcHkSSHeonD58YFq4LR2j1xtW7pk08SXbleILodKo8cIb6uyN1PWS-vTNgBgBUgcfPW8mwT4jK_CeHhQc-8HoVVfEglg0RBcXYY1234Owx98iJkZjuQ/s1600-h/Iphone1.jpg"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 214px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHz3TLNnaO23qzyc5z9aCAcHkSSHeonD58YFq4LR2j1xtW7pk08SXbleILodKo8cIb6uyN1PWS-vTNgBgBUgcfPW8mwT4jK_CeHhQc-8HoVVfEglg0RBcXYY1234Owx98iJkZjuQ/s320/Iphone1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5339305303387219554" /></a><br /><br />Okay, itu cerita intermezo aja. Tapi intinya, setelah saya tau interface iPhone (terus terang, ini adalah Apple pertama saya sejak waktu saya kelas 4 SD ortu saya beli Apple II+ dengan sistem operasi CP/M dan PC DOS -- jadi inget game Load Runner, Frogger, dan Karateka...)... ups... sori... back to the story... jadi setelah saya pakai iPhone, ternyata interface-nya sangat membius. Betul-betul merubah paradigma. Setelah sekitar 3 jam-an main-main dengan iPhone, waktu buka laptop, I actually tried to slide the laptop screen to make the window scroll!!! What a fool.... And it took me almost two-to-three seconds to realize that!!! Luar biasa... bagaimana interface iPhone bisa merubah paradigma seseorang mengenai cara interaksi manusia dengan komputer.<br /><br />Apa yang saya pelajari dari iPhone ini? Beberapa hal:<br />1. Interface harus simple! Di layar iPhone jarang sekali kita melihat lebih dari 5 buttons. Biasanya ada dua button navigasi di atas, lalu menu di atas atau di bawah. Sangat konsisten.<br />2. Saya harus bisa membuat interface yang sangat bersahabat dengan user, sehingga user yang sudah menggunakan program saya, tidak akan pergi ke lain hati lagi...<br />3. Harga mahal tidak jadi masalah. Telkomsel menjual iPhone dengan harga yang lebih mahal daripada pesaingnya (Blackberry Storm kayanya pantas jadi pesaing-nya). Sudah jelas iPhone kalah dalam banyak hal dari BB, tapi siapa yang tidak tergoda dengan interface-nya yang sangat classy.<br />4. Hampir semua fitur dalam iPhone resmi 'dijaga' oleh Apple. Komunitas Apple bahkan punya istilah yang unik dalam meng-unlock iPhone. Mereka bilangnya: "jailbreak" alias keluar dari penjara. Ternyata kemampuan processor iPhone jauh lebih hebat daripada yang dimunculkan. Banyak sekali setting-setting yang dibatasi oleh Operating System iPhone (sekarang versi 2.2.1). Tapi dengan penjagaan yang sangat ketat itu, Apple bisa menjaga agar iPhone itu bisa stabil dan sesuai dengan 'standard' Apple (biarpun untuk komunitas iPhone geeks, standard itu sangat tidak memuaskan). Tapi ya itu tadi yang hebat. Ibaratnya Apple bilang; "Ya, pokoknya, biarpun kemampuan iPHone ini bisa 10, saya batasi 7 aja deh...)", dan orang-orang awam (yang tujuannya untuk "PAKAI" iPhone, bukan "NGOPREK" iPhone -- seperti istri saya) cukup puas dengan itu. "So what?", katanya. Saya tawarkan istri saya untuk men-jailbreak iPhone-nya dan ditolak mentah-mentah. Saya juga setelah mendengar berbagai resiko jailbreak juga jadi ragu-ragu... Udah aja nunggu update Operating System 3.0 yang bisa di-dl gratis bulan juli nanti deh....<br /><br /><br />Ok guys... itu aja mengenai pendahuluan saya setelah absen hampir 4 tahun dari blogging di foxyland ini. Semoga bisa menjadi ice breaker dan membuat saya semangat untuk blogging lagi... :)<br /><br />See you around guys!Foxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com1tag:blogger.com,1999:blog-9717622.post-1129178977887053742005-10-13T11:27:00.000+07:002005-10-13T11:49:37.893+07:00TIps: Mengirim dan menerima parameter dalam jumlah tidak terbatasHi all,<br /><br />Welcome again to Foxyland. Kali ini saya ingin membagikan tips mengenai trik untuk menerima dan mengembalikan parameter dalam jumlah yang bisa dikatakan tidak terbatas. Tips ini boleh dibilang bukan hal baru, tapi saya rasa cukup banyak foxer-foxer yang belum tau metode ini.<br /><br />Selama ini, Anda mungkin bisa memanggil fungsi lain dan mengirimkan parameter dengan cara seperti ini:<br /><br />my_function (123)<br /><br />FUNCTION my_function<br />LPARAMETERS liPara1<br />{body_of_function}<br />RETURN liReturnValue<br />ENDFUNC<br /><br />Kalau yang dipanggil adalah form, anda bisa menggunakan event Init dari form untuk 'menangkap' parameter dan menggunakan DO FORM {form_name} WITH {para1, para2, ...} untuk memanggil form dan mengirim parameter.<br />Anda juga bisa menangkap return value dari form dengan meletakkan RETURN {any_value} di Unload event form dan menangkap-nya dengan parameter ...TO... pada perintah DO FORM anda;<br />DO FORM {form_name} WITH {para1, para2, ...} TO liReturnValue<br />Nah, sekarang bagaimana caranya kita bisa mengirim dan menerima parameter dalam jumlah yang tak terbatas?<br /><br />Caranya, yaitu dengan memanfaatkan object dengan class Empty.<br /><br />Coba lihat code berikut ini:<br /><br />[vfp code]<br />LOCAL loMyObject<br />loMyObject = CREATEOBJECT("Empty")<br />ADDPROPERTY(loMyObject, 'iParameter1')<br />ADDPROPERTY(loMyObject, 'iParameter2')<br />ADDPROPERTY(loMyObject, 'cParaString1')<br />ADDPROPERTY(loMyObject, 'tJamTanggal')<br />DO FORM other_form WITH loMyObject<br />[end of vfp code]<br /><br />Nah, dengan cara ini, kita bisa menangkap banyak parameter:<br />[vfp code lagi]<br />*!* Di init event dari other_form:<br />LPARAMETERS loParameter<br />ADDPROPERTY(THISFORM, 'oParameter')<br />THISFORM.oParameter = loParameter<br />[end]<br /><br />Karena object di VFP di-pass sebagai reference, maka dengan cara di atas, apabila di other_form kita membutuhkan parameter tJamTanggal, kita tinggal menggunakan referensi THISFORM.oParameter.tJamTanggal. Demikian juga dengan parameter lainnya.<br /><br />Mudah-mudahan bermanfaat!<br /><br />Happy coding!<br /><br />FoxyFoxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com1tag:blogger.com,1999:blog-9717622.post-1117455810143523042005-05-30T19:00:00.000+07:002005-05-30T19:23:30.146+07:00Almost two months without internetHi gang!!!!<br /><br />Hampir dua bulan saya hidup tanpa internet. Dua bulan yang sangat sibuk. Kami (saya dan keluarga) baru saja pindah ke rumah baru. Repot luar biasa. Tapi juga exciting luar biasa. Ini boleh dibilang adalah 'dream house' saya dan istri saya. Rumahnya memang lebih kecil dari rumah kami sebelumnya, tapi hampir semua detail sesuai dengan dream kami. Mulai dari style, lampu, dll. Dalam dua bulan terakhir ini, fokus kami hanya di rumah saja. Mendadak saya juga jadi seperti kuliah Interior Designer. Saya belajar teknik lighting, bermacam-macam lampu, dan efek apa yang diinginkan, bermacam-macam style furniture, dll-dll-dll. Itu masih belum urusan filter air, pengkabelan (kabel telpon, listrik, terus -- setelah berdebat dengan istri -- saya juga install kabel jaringan di rumah) , listrik, lokasi AC, feng shui, dan dll-dll-dll....<br /><br />Repot tapi senang. Di malam hari, saya geder-gederan bikin program dan nyelesain project MRP. Siang ngurusin rumah. Sejak bulan lalu kami sudah pindah, tapi biarpun pindah ada aja yang masih harus diurus. Mulai dari dinding yang cat-nya belang, sampai kaca etsa untuk partisi ("gambar apa ya?", "warna atau putih doang?")<br /><br />Sekarang rumah kami sudah lumayan enak. Sekarang lagi nyobain pasang wireless di rumah. Tapi kayanya ini juga harus dirubah lagi. Kayanya harus ditinggiin pakai tower, karena kok sering drop.<br /><br />Anyway, I've been very busy, but this last few months has been one of the most exciting time in my life. <br /><br />So... ini aja untuk kali ini. Next time ketemu lagi.<br /><br />FoxyFoxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com1tag:blogger.com,1999:blog-9717622.post-1111942737930410102005-03-27T23:52:00.000+07:002005-03-28T01:48:10.666+07:00ExitOnOutsideClickTips berikut ini berguna apabila Anda ingin membuat suatu form yang apabila si user melakukan mouse click di luar form, maka otomatis form tersebut akan di release. Mungkin banyak dari Anda yang bertanya, "Untuk apa jenis form seperti ini?" --- he-he-he... sebenarnya banyak fungsinya. Jadi silahkan kreatif aja...<br /><p>Untuk Demo, silahkan copy-and-paste kode di bawah ini, kemudian jalankan di VFP!<br /><br />*!* Code Starts Here:<br />oFrm = CREATEOBJECT("frmExitOnOutsideClick")<br />oFrm.Show(1)<br />Return<br /><br />DEFINE CLASS frmExitOnOutsideClick AS form<br /><br /><br /> DoCreate = .T.<br /> Caption = "ExitOnOutsideClick Demo by Foxy"<br /> Name = "frmExitOnOutsideClick"<br /><br /> ADD OBJECT label1 AS label WITH ;<br /> WordWrap = .T., ;<br /> Caption = "Click yang dilakukan di dalam form " + ;<br /> "akan berfungsi seperti biasa. Tetapi, coba saja click " + ;<br /> "di luar form ini. Otomatis form ini akan tertutup!" + CHR(13) + ;<br /> "Grid di bawah ini hanya berfungsi untuk demo saja...", ;<br /> Height = 72, ;<br /> Left = 12, ;<br /> Top = 6, ;<br /> Width = 348, ;<br /> Name = "Label1"<br /><br /><br /> ADD OBJECT command1 AS commandbutton WITH ;<br /> Top = 216, ;<br /> Left = 276, ;<br /> Height = 27, ;<br /> Width = 84, ;<br /> Caption = "Click Me!", ;<br /> Name = "Command1"<br /><br /><br /> ADD OBJECT grid1 AS grid WITH ;<br /> Height = 132, ;<br /> Left = 12, ;<br /> Top = 78, ;<br /> Width = 348, ;<br /> Name = "Grid1"<br /><br /><br /> PROCEDURE clickme<br /> lcMsg = "Click di terima oleh cmdClickMe.Click()" + CHR(13) + ;<br /> "dan method ClickMe dijalankan..."<br /> MESSAGEBOX(lcMsg, 64, "Click Me!")<br /> ENDPROC<br /><br /><br /> PROCEDURE Destroy<br /> && Kembalikan status ON KEY LABEL MOUSE ke default<br /> ON KEY LABEL MOUSE<br /> ENDPROC<br /><br /> PROCEDURE Click<br /> && Kalau click bukan terjadi di form ini, langsung keluar<br /> IF !(MWINDOW() == ThisForm.Name)<br /> ThisForm.Release()<br /> ENDIF<br /> ENDPROC<br /><br /> PROCEDURE Init<br /> && Rubah nama form supaya form dijamin unik<br /> THISFORM.Name = SYS(2015)<br /> && Trap setiap mouse click di _Screen <br /> && ke event Click dari form ini:<br /> ON KEY LABEL MOUSE _SCREEN.ActiveForm.Click()<br /> ENDPROC<br /><br /> PROCEDURE command1.Click<br /> && Panggil method THISFORM.ClickMe()<br /> THISFORM.ClickMe()<br /> ENDPROC<br /><br /> PROCEDURE grid1.Init<br /> CREATE CURSOR curTest (name C(30), address C(100))<br /> SELECT curTest<br /> APPEND BLANK<br /> WITH THIS<br /> .ColumnCount = 2<br /> .AllowAddNew = .T.<br /> .RecordSource = "curTest"<br /> .Column1.Header1.Caption = "NAME"<br /> .Column1.Width = 100<br /> .Column2.Header1.Caption = "ADDRESS"<br /> .Column2.Width = 200<br /> ENDWITh<br /> ENDPROC<br />ENDDEFINE<br /><br />*!* Code Ends here<br /><p><br />Happy coding!<br /><br />FoxyFoxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com1tag:blogger.com,1999:blog-9717622.post-1111677573543018422005-03-24T22:09:00.000+07:002005-03-24T22:19:33.546+07:00Memeriksa tabel apakah ada duplikasi data atau tidak.Pernahkah Anda perlu memeriksa tabel Anda; apakah di tabel itu (field tertentu) ada duplikasi data atau tidak? Kalau pernah, apa cara yang Anda gunakan? Berikut ini adalah skeleton dari simple query yang menampilkan duplikasi data yang ada di field pada tabel tertentu:<br /><br /><pre><br />SELECT c_name, c_address, c_city<br /> FROM customer<br /> WHERE c_name IN <br /> (SELECT c_name FROM customer GROUP BY c_name HAVING COUNT(*) > 1)<br /></pre><br /><br />Catatan: kalau Anda menggunakan native vfp, jangan lupa menyertakan tanda titik koma untuk menyambung expresi antar baris.<br /><br />Query di atas akan menampilkan nama, alamat, dan kota dari customer yang nama-nya ada lebih dari dua di data customer. Untuk memodifikasi sesuai dengan kebutuhan Anda, Anda bisa perhatikan frame berikut:<br /><pre><br />SELECT {field1}, {field2}, {field3}, ...<br /> FROM {tabel}<br /> WHERE {field_X} IN <br /> (SELECT {field_X} FROM {tabel} GROUP BY {field_X} HAVING COUNT(*) > 1)<br /></pre><br /><br />dimana {field_X} adalah nama field yang ingin dicari kemungkinan ada/tidak duplikasi data.<br /><br />Mudah-mudahan bisa membantu menambah wawasan!<br /><br />FoxyFoxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com4tag:blogger.com,1999:blog-9717622.post-1111258817547029872005-03-20T01:59:00.000+07:002005-03-20T02:00:17.546+07:00Wanita ingin dimengerti? Get Real!Baru aja liat iklan Softex (please guys... jangan berpikiran ngeres dulu!)<br />Tag line terakhirnya: "Karena wanita ingin dimengerti..."<br />Menurut saya BULL! BIG MISTAKE! Come on guys! Face it! Kita nggak AKAN pernah bisa mengerti wanita. Jalur pemikirannya sangat kompleks. Kalau mau diceritain bisa lebih dari 100 jam (blog ini gak akan beres-beres) - dan itupun belum cukup! Anda nggak percaya? Coba kupingin kalau para wanita sedang 'ngobrol' (read: nge-gosip). I mean, LUAR BIASA. Dari satu topik ke topik yang lain, wuiiiih.... tau-tau di sini tau-tau di sana! Belum lagi kebiasaan mereka yang disebut 'curhat' aduh-aduh.... bercerita tanpa bermaksud untuk menemukan solusi!? Nuts...<br /><br />So guys... I'm not an expert in woman psychology, neither am I a man having thousand girls surrounding me (though I like that idea very much ;) ) - but here is my suggestion to you guys: nggak usah repot-repot berusaha mengerti wanita, 'cause your gonna fall flat on your face to do that! Tanya pada semua wanita; mana yang mereka pilih: pria yang 'mengerti' mereka, atau pria yang 'mencintai' mereka? Aha, now you see what I mean? Women don't need to be understood, they need to be loved.<br /><br />OK. Guys (and gals too...). See you around!<br /><br />FoxyFoxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com0tag:blogger.com,1999:blog-9717622.post-1111258777864459642005-03-20T01:56:00.000+07:002005-03-20T01:59:37.866+07:00VB is going down, VFP is moving up!Dalam satu minggu terakhir ini Microsoft mengambil keputusan yang mengejutkan banyak developer classic VB di dunia. Microsoft memutuskan untuk menghentikan support kepada VB6. Sampai-sampai 100 MVP Visual Basic menandatangani petisi kepada Microsoft. Di sisi lain, VFP9 mendapatkan expose yang positif dari microsoft. Microsoft sampai-sampai 'memperkenalkan' VFP9 secara resmi. Padahal sejak dilepaskannya VFP dari keluarga Visual Studio (back in 2001 with VFP7), microsoft tidak pernah mengeluarkan pernyataan resmi mengenai VFP (kecuali satu halaman tanpa link dari web site resmi microsoft untuk menanggapi kontroversi VFP jalan di Linux). Apalagi, disebutkan juga dukungan untuk VFP9 akan dilakukan sampai tahun 2014. Jadi saya rasa, masih cukup banyak waktu untuk mempelajari VFP dengan serius dan memetik hasilnya. Memang betul, kita para software developer hanya pion di permainan catur software dunia. Tapi jangan salah. Dengan strategi yang benar, kita bisa maju terus sampai ke kotak akhir dan menjadi menteri. <br /><br />Just my 2c<br />FoxyFoxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com3tag:blogger.com,1999:blog-9717622.post-1108023154503236982005-02-10T15:01:00.000+07:002005-02-10T15:12:34.503+07:00Gong Xi Fa CaiGong Xi, Gong Xi... :)
<br />
<br />Selamat Tahun Baru Imlek untuk Anda yang merayakan. Semoga tahun Ayam akan menjadi tahun yang makmur untuk Anda, banyak hoki, dan selalu sehat.
<br />
<br />Btw, ayam adalah salah satu makanan rubah (fox). Jadi harusnya, tahun ini developer yang menggunakan Visual FoxPro juga akan kenyang, karena makanan tersedia sepanjang tahun :)
<br />
<br />Gong Xi, Gong Xi...
<br />Wang Se Ru Yi...
<br />
<br />FoxyFoxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com0tag:blogger.com,1999:blog-9717622.post-1107544378525842872005-02-05T17:30:00.000+07:002005-02-05T02:12:58.526+07:00U T M a g a z i n e G r a t i sHalo foxer Indonesia!
<br />
<br />Salah satu yang ingin saya lakukan dengan aktif di komunitas foxpro indonesia adalah memberi. Terus terang semangat sharing mztolo dan signature taz (2 Share, 2 Act, 2 Learn) banyak memberi inspirasi untuk saya. Jadi, inilah yang bisa saya bagikan kali ini: Anda bisa mendapat majalah Uni-ver-sal T h r e a d secara gratis.
<br /> Ketikkan URL berikut di browser Anda:
<br /> http://www.utmag.com/[nama_bulan+tahun]
<br />
<br />[nama_bulan+tahun] adalah bulan dan tahun majalah yang Anda inginkan. Misalnya April2003, atau January2003 atau October2002.
<br />
<br />Ceveat-nya, [nama_bulan+tahun] yang bisa Anda isikan hanya dari June2001 sampai October2003. Masalahnya, sebenarnya memang edisi tersebut (waktu itu) bisa dilihat secara gratis (waktu itu belum punya domain sendiri, masih di bawah www.universalthread.com). Tapi kemudian jadi komersil (CAN$ 50.00 setaun). Setelah komersil, kalau melalui home page-nya, bahkan edisi yang dulunya gratis-nya pun hanya bisa diakses oleh member. 'Gak tau kenapa (apakah disengaja atau tidak), ternyata kalau url-nya diisi langsung, maka majalah itu bisa diakses. Ya udah. Saya asumsi aja ini memang public domain.
<br />Jangan kuatir. Biarpun informasinya sudah terlambat 3 bahkan hampir 4 tahun, tapi informasi-nya masih berharga dan tentu saja bisa dimanfaatkan.
<br />
<br />Jadi... selamat membaca!
<br />
<br />Best regards,
<br />Foxy
<br />Foxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com3tag:blogger.com,1999:blog-9717622.post-1107334775870108212005-02-03T07:10:00.000+07:002005-02-02T15:59:35.870+07:00Sekolah Mahal! Semua mahal! Software kita harus mahal juga dong... ;)Sekolah Mahal! Saya bulan Januari ini masukin anak ke TK. Bukan TK favorit sih sebenarnya, yah, menengah lah. Anda tau berapa biayanya? Uang pangkal Rp 5,550,000 dan uang sekolahnya Rp 300,000!!! TK lho! Bukan SMP atau SMA (sekarang SMU-ya?). Apa lagi saya masukin dua anak! Abisnya kembar. Mau gimana?! Gila memang! Tapi ya mau ngomong apa lagi? Sekarang harga memang gila-gilaan. Belanja ke supermarket aja, minimal duit Rp 100,000 udah harus keluar. Coba aja liat, Attack 12,500, Susu anak Frisan Flag 1 kilo Rp 42,000, Tissue Nice satu pak Rp 15,000, mie instan 20 biji Rp 15,000 - na lho, udah berapa tuh! Belum diapers (Mamy Poko M-26 Rp 56,000), dan bahan makanan seperti telur, daging, sayur, dll.
<br />
<br />Kesimpulan; software yang kita jual juga harus dapat memberikan hasil yang mencukupi. Kalau nggak? Masa' software developer harus nombok?
<br />
<br />FoxyFoxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com2tag:blogger.com,1999:blog-9717622.post-1107334216892815592005-02-03T07:00:00.000+07:002005-02-02T15:50:16.893+07:00Beli Original atau versi Pasar Minggu?Di forum fox-id (http://www.fox-id.com) baru saja ada post dari nyolik yang mengatakan bahwa VFP9 yang sudah tersedia di 'toko-toko kesayangan'. Sebelumnya, mztolo juga sudah secara halus menginformasikan hal ini dengan mengatakan 'saran dari mBah Dukun' untuk 'silahturahmi' ke Mangga Dua. Maksudnya saya yakin sudah jelas; VFP9 bajakan sudah tersedia, rekan-rekan yang berminat silahkan mencari sendiri.
<br />
<br />Terus terang saya juga membeli VFP9 versi Mangga Dua. Saya rasa dua minggu yang lalu. Saya gak duga akan secepat ini launching di Indonesia. Waktu versi 8 dulu, rasanya waktunya agak lama (mungkin sekitar 5 atau 6 bulan). Saya memang baru mau beli VFP9 original bulan depan. Maklum, bulan ini pengeluaran sangat banyak karena masukin anak ke TK (blog lain untuk itu). Mungkin Anda bertanya, "Ngapain beli original, kalau udah punya bajakan?". Nah, saya punya argumen begini: saya adalah software developer. 'Gak tau kapan, tapi ada kemungkinan suatu saat sweeping software akan sampai ke saya. Kalau saat itu tiba, saya tidak mau kedapatan dengan software bajakan. Jadi, ya terpaksa saya harus membeli VFP9 original. Yah, punya deh, minimal satu. Operating system udah punya yang original - bawaan dari laptop saya. Office XP, waktu itu juga terpaksa beli. Pokoknya minimal laptop saya software-nya original semua (atau freeware). Jadi kalau kerja tenang.
<br />
<br />Anyway, dengan beli bajakan, sebenarnya ada minus-nya juga lho:
<br />1) Semangat untuk belajar tidak maksimum, karena toh harga software-nya murah. Kalaupun gak dipelajari ("yah, someday-lah"), juga gak rugi-rugi amat. Karena itu, perlu untuk menyadari apa yang ada di tangan kita (sulitnya; tidak mudah menyadari kalau harga software-nya cuman 25,000). Kesempatan dengan harga yang murah! Manfaatkanlah kesempatan ini untuk belajar. Meminjam istilah mztolo: NSL - Non Stop Learning.
<br />2) Hati-hati. Dengan membeli bajakan (=beli software murah), jangan sampai mengurangi kepercayaan diri kita untuk menjual software dengan harga tinggi. Jangan sampai menciptakan mental 'menyetujui pembajakan software'. Pokoknya, biarpun software untuk membuat program kita bajakan, tapi software yang kita buat bukan bajakan, dan tidak akan ditemui bajakannya. Jadi untuk para client, silahkan beli software kita dengan harga original. Karena itu, salah satu prinsip saya adalah yang saja jual adalah jasa, bukan software. Kalau software, banyak tuh, bajakannya di mangga dua. Tapi kalau jasa saya, gak ada bajakannya kan? ;)
<br />
<br />Terlepas dari itu semua, selamat menikmati VFP9. Jangan lupa pelajari Report Listener dan jangan ragu menggunakan SQL query. Engine SQL query di VFP9 sudah di tulis ulang dan di optimasi lebih baik lagi, jadi kecepatannya juga semakin baik. Nikmati juga dokumentasi yang punya layout lebih manis, juga PEM window yang lebih manis dengan customize font dan multi color-nya. Pendek kata; Enjoy!
<br />
<br />Regards,
<br />FoxyFoxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com3tag:blogger.com,1999:blog-9717622.post-1106723337787322262005-01-27T05:07:00.000+07:002005-01-26T14:08:57.786+07:00"Berapa harga program yang Anda buat?""Berapa biayanya?", ini adalah pertanyaan yang pasti ditanyakan oleh client (atau calon client) Anda apabila Anda menawarkan program atau aplikasi yang Anda buat. Ini selalu jadi masalah, karena seringkali sulit untuk menentukan suatu angka hingga akhirnya si client sepakat untuk membeli. Kalau akhirnya client batal memesan, banyak orang yang kemudian down dan mengatakan, "Wah, salah ngasih harga nih. Kemahalan!" Kebingungan makin bertambah kalau si client menawar harga software kita dengan berbagai alasan. Mau dikasih, kok harganya jauh dari yang diharapkan. Mau nggak dikasih, takutnya malah mental. Karena itu, biasanya banyak software developer (atau mungkin ada yang senang juga dengan istilah freelance programmer) takut menyebutkan harga aplikasinya. Tapi, itu juga jadi masalah. Bayangkan gimana kalau Anda ketemu dengan seseorang. Setelah ketemu, ngobrol-ngobrol, lalu karena ternyata dia adalah penjual martabak, Anda bertanya berapa harga martabak yang dia jual, dan jawabannya, "Ehm.. eh, uh, ehm, yah tergantung sih..." :D Sounds familiar?
<br />
<br />Nah, karena itu menurut saya kita sebagai software developer harus menilai diri kita sendiri lebih tinggi. Jangan ragu untuk memberikan harga yang tinggi (bukan mahal!).Berikut ini adalah ide-ide dan pemikiran saya. Sengaja saya buat dalam bentuk point-point, karena setiap point bisa tidak saling berhubungan (moreover saya report kalau harus menyusun kalimat supaya saling berhubungan :D)
<br />
<br />1) Dengan membeli aplikasi kita, client bukan hanya membeli aplikasi itu saja, tapi dia juga membeli jasa dan waktu kita.
<br />Kalau client Anda menelpon Anda dan menanyakan gimana caranya ngirim e-mail dengan file attachment, atau menanyakan gimana caranya nge-crop gambar hasil digital cameranya, apa kira-kira jawaban Anda? Apakah jawaban Anda, "Wah, maaf Pak. Itu bukan bidang saya", atau: "Saya bisa jelasin Pak. Biayanya Rp 100,000 per jam kalau Bapak datang ke sini. Kalau saya yang kesana, biayanya Rp 200,000 per jam. Oh ya, minimum charge Rp 100,000 lho Pak...", atau yang lebih parah lagi: "Wah Pak, saya gak tau."
<br />See? Bukan hanya aplikasi Anda yang Anda jual. Anda juga menjual jasa Anda, waktu Anda, dan pengetahuan Anda mengenai komputer.
<br />
<br />2) Siapkan untuk memberi 11 apabila client membeli 10 (karena client pasti minta tambah).
<br />Dengan kata lain; siap-siaplah untuk harus meluangkan extra waktu dan membuat extra program. Kenapa? Karena client pasti akan meminta tambahan 'sedikit' di luar batasan program yang awalnya sudah disepakati. Mereka tidak mengerti bahwa tambahan 'sedikit' itu, bisa jadi kerjaan empat, lima atau bahkan delapan jam untuk kita. Jadi, selalu menyiapkan waktu extra. Hal ini juga berarti selalu tambahkan nilai harga jual software kita untuk mengantisipasi.
<br />
<br />3) Pelajari kecepatan Anda membuat aplikasi. Berapa lama waktu yang Anda butuhkan untuk membuat sebuah aplikasi. Satu hari? Dua hari? Satu minggu? Satu bulan? Dua bulan? Tiga bulan? Enam bulan? Jadikan ini sebagai bahan referensi untuk memberi timeline kepada client Anda. Hati-hati! Kalau Anda bisa menyelesaikan program dalam dua bulan, lebih baik mengatakan program baru selesai setelah tiga bulan, tetapi di bulan kedua Anda bisa menyelesaikannya. Ini bukan hanya lebih baik, tetapi jauh-jauh-jauh lebih baik daripada mengatakan selesai dalam dua bulan, tetapi Anda terlambat satu minggu!
<br />
<br />4) Masih berhubungan dengan point 3) di atas, dari waktu yang kita perlukan, susun jadwal berapa lama kita bisa bekerja dalam satu minggu. Kemudian setelah memperkirakan waktu, kalikan waktu yang Anda butuhkan dengan nilai Anda per jam. Saya pribadi sekarang menilai harga waktu bagi saya saat membuat program di rumah adalah Rp 100,000 per jam. Anda mungkin bisa menilai waktu Anda dengan nilai lain. Terserah Anda. Tapi yang penting, nilai waktu Anda supaya Anda bisa lebih bertanggungjawab dengan scheduling yang Anda susun sendiri.
<br />
<br />5) Jangan lupa membebankan biaya service di harga program. Pertimbangkan berapa kali kira-kira Anda harus ke sana. Berapa jam Anda di sana. Berapa biaya transportasi (dan akomodasi bila ada) dan biaya makan yang Anda perlukan.
<br />
<br />6) Setelah Anda menjumlahkan semuanya, besar kemungkinan Anda akan mendapatkan harga yang jauh lebih besar daripada yang selama ini Anda berikan kepada client Anda sebelumnya. Sekali lagi, jangan takut untuk memberikan harga tinggi. Profesi kita patut dihargai lebih. Anda tau, gaji programmer-programmer dan system developer di corporate-corporate multi national? Besar lho! Kalau ada di antara Anda yang bilang, "Ah.. kecil kok, cuman ....", nah, mungkin Anda lupa memperhitungkan tunjangan-tunjuangan dan fasilitas-fasilitas yang diberikan perusahaan! Saya melihat banyak software developer yang 'kekurangan' karena penghasilannya tidak mencukupi. Salah siapa nih? Coba deh, kalau Anda sudah membuat aplikasi Anda, buat juga Cost Benefit. Cara membuat Cost Benefit gak susah kok. Contoh:
<br />Untuk dapat menghasilkan laporan sesuai dengan aplikasi MRP yang Anda buat, maka perusahaan X harus:
<br />- Menggaji satu tenaga pembukuan dengan gaji Rp 1,000,000 per bulan
<br />- Menggaji tiga tenaga pencatat dengan gaji Rp 600,000 per bulan
<br />- Tidak dapat memperoleh laporan penjualan secara real time, berarti kehilangan kesempatan penjualan repeat order lebih kurang 0.5% dari omzet bulanan. Dengan omzet Rp 1,000,000,000 per bulan, kerugian ini mencapai Rp 5,000,000 per bulan.
<br />- Tidak dapat memperoleh laporan outstanding order secara real time, berarti kehilangan kesempatan follow up yang lebih baik, dan berarti juga kemungkinan berkurangnya kepercayaan customer. Kerugian ini dapat mencapai 0.5% dari omzet bulanan. Dengan omzet Rp 1,000,000,000 per bulan, kerugian ini mencapai Rp 5,000,000 per bulan.
<br />- Tidak dapat memperoleh laporan work-in-process secara real time. Berarti potensial buruh tidak bekerja produktif dan keterlambatan hasil produksi. Kerugian yang bisa ditimbulkan:
<br />Inefisiensi karyawan 0.5% = 0.5% x Rp 30,000 = Rp 150.00 per karyawan per hari
<br />Ada 500 karyawan: 500 x Rp 150.00 = 75,000 per hari
<br />Asumsi 25 hari kerja: 75,000 x 25 = 1,875,000 per bulan.
<br />
<br />Total per bulan = Rp 13,475,000
<br />Total per tahun = Rp 144,750,000
<br />
<br />Harga program dan jasa Anda: Rp 80,000,000
<br />
<br />Berarti program Anda akan pay out dalam:
<br />Biaya program = Rp 80,000,000 / Biaya yang keluar tanpa program = Rp 144,750,000 per tahun
<br />= 0.55268 tahun =
<br />= 6 bulan ++
<br />= 7 bulan.
<br />
<br />Jadi investasi Rp 80,000,000 akan pay out dalam 7 bulan.
<br />
<br />Tentu saja dalam membuat analisa Cost Benefit, perlu data yang lebih lengkap dan lebih akurat. Tapi, pada intinya, jangan takut untuk memberi harga yang tinggi.
<br />
<br />
<br />Nah, kesimpulan yang saya harap Anda dapat dari tulisan saya ini. Hidup jadi software developer (programmer freelance) bisa menyenangkan juga kok!
<br />
<br />Okay guys, segini aja artikel dari saya. Untuk Komentar dan uneg-uneg, silahkan post di fox-id. Kalau bisa saya jawab, pasti akan saya jawab.
<br />
<br />Thanks for reading!
<br />
<br />FoxyFoxyhttp://www.blogger.com/profile/06533278610577630841noreply@blogger.com15