Hanya aplikasi sederhana untuk untuk membuat avatar sebagai pertanda anda sudah tua :P. Silahkan pilih template yang sesuai, Pilih File Untuk mengunggah foto. Foto anda bisa di geser2 agar penampilan lebih Pas. Klik Simpan jika sudah sesuai. Jika browser membuka window baru berisi gambar hasil, gambar tersebut dapat disimpan di komputer anda menggunakan shortcut Ctrl+S.
Komentar, masukan, saran, kritik dan sebagainya dari anda sangat diharapkan. Selamat mencoba.

Terima Kasih.
Salam dari Rekan sesama 80an


Aplikasi di atas adalah aplikasi sederhana untuk membuat avatar dukungan terhadap Ahok. Silahkan Pilih Template untuk memilih jenis template, Pilih File Untuk mengunggah foto. Foto anda bisa di geser2 agar penampilan lebih Pas. Klik Simpan jika sudah sesuai. Jika browser membuka window baru berisi gambar hasil, gambar tersebut dapat disimpan di komputer anda menggunakan shortcut Ctrl+S.
Komentar, masukan, saran, kritik dan sebagainya dari anda sangat diharapkan. Selamat mencoba.

Terima Kasih



Aplikasi di atas adalah aplikasi untuk transliterasi Aksara Bali. Mungkin dalam berbagai hal aplikasi ini masih memerlukan pembenahan.
Komentar, masukan, saran, kritik dan sebagainya dari anda sangat diharapkan. Selamat mencoba.



Update : Aplikasi ini sudah dibuat dalam versi Android, lebih update dari yang ada di blog ini. Untuk pengguna android silahkan install dari Play Store, cari aplikasi dengan keword : com.agusmade.aksarabali
atau klik link ini https://play.google.com/store/apps/details?id=com.agusmade.aksarabali.



Update Lagi (April 2020): Mohon maaf, Aplikasi berbasis web ini sudah tidak jalan, karena tempat hosting dropbox yang tadinya digunakan untuk menampung font tidak mengijinkan CORS lagi.

Namun bagi pengguna Android, saya sudah buat aplikasi Android yang lebih mutakhir, support unicode, jadi bisa copas ke aplikasi lain. Bisa konversi Aksara Bali ke Tulisan Latin, bisa bikin kartu ucapan menggunakan Aksara Bali, dan berbagai fitur lainnya.
Temukan di playstore, gunakan keword: com.agusmade.anaksarabali atau klik link ini https://play.google.com/store/apps/details?id=com.agusmade.anaksarabali
.



Terima kasih

Sebagai lanjutan dari tulisan sebelumnya masih mengenai Canvas dalam HTML5, berikut kita membahas mengenai Fill dan Gradasi (Gradient). Tentu kita hanya menggunakan fungsi2 bawaan HTML5 untuk mengelola canvas. Hasil akhir dari pelajaran kita hari ini kira2 seperti gambar berikut :

HTML5 Canvas Fill and Gradient

Langkah2nya pembuatannya masih sama mulai dari mempersiapkan halaman HTML yang berisi tag canvas dalam <body></body> seperti tag berikut :

<canvas id="canvasku" width="300" height="300"></canvas>

See the Pen Canvas Basic (Fill & Gradient) by Agus Made (@agusmade) on CodePen.

Selanjutnya rujuk ke file JS atau tambahkan tag <script></script> yang berisi code berikut

var canvas=document.getElementById('canvasku');
var context=canvas.getContext('2d');

/* SOLID */
//kotak 1
context.beginPath();
context.rect(10, 10, 80, 40);
context.fillStyle = 'lime';
context.fill();

//kotak 2
context.beginPath();
context.rect(100, 10, 80, 40);
context.strokeStyle = 'green';
context.stroke();

//kotak 3
context.beginPath();
context.rect(190, 10, 80, 40);
context.fillStyle = 'lime';
context.strokeStyle = 'green';
context.fill();
context.stroke();

/* LINEAR GRADIENT */
//kotak 4
context.beginPath();
var grdf = context.createLinearGradient(10, 3, 10+80, 3); //x1,y1,x2,y2
grdf.addColorStop(0, '#234');   
grdf.addColorStop(1, '#23e');
context.rect(10, 60, 80, 40);
context.fillStyle = grdf;
context.fill();

//kotak 5
context.beginPath();
var grdl = context.createLinearGradient(3, 60, 3, 100);
grdl.addColorStop(0, '#865');   
grdl.addColorStop(1, '#f65');
context.rect(100, 60, 80, 40);
context.strokeStyle = grdl;
context.stroke();

//kotak 6
context.beginPath();
var grdl = context.createLinearGradient(3, 60, 3, 100);
grdl.addColorStop(0, '#865');   
grdl.addColorStop(1, '#f65');
var grdf = context.createLinearGradient(190, 3, 190+80, 3);
grdf.addColorStop(0, '#234');   
grdf.addColorStop(1, '#23e');
context.rect(190, 60, 80, 40);
context.fillStyle = grdf;
context.fill();
context.strokeStyle = grdl;
context.lineWidth = 5;
context.stroke();

//garis bantu
circles([[3, 60],[3, 100]]);
lines([[3, 60],[3, 100]],grdl);
circles([[190, 3],[190+80, 3]]);
lines([[190, 3],[190+80, 3]],grdf);

/* RADIAL GRADIENT */
//lingkaran 1
context.beginPath();
var grdf = context.createRadialGradient(40, 140, 0, 40, 140, 30); //circle1x,circle1y,circle1radius,circle2x,circle2y,circle2radius,
grdf.addColorStop(0, '#234');   
grdf.addColorStop(1, '#23e');
context.arc(40, 140, 30, 0, 2 * Math.PI, false); //lingkaran
context.fillStyle = grdf;
context.fill();

//lingkaran 2
context.beginPath();
var grdf = context.createRadialGradient(110, 140, 20, 110, 140, 30);
grdf.addColorStop(0, '#234');
grdf.addColorStop(1, '#23e');
context.arc(110, 140, 30, 0, 2 * Math.PI, false);
context.fillStyle = grdf;
context.fill();

//lingkaran 3
context.beginPath();
var grdf = context.createRadialGradient(180, 140, 0, 180, 140, 50);
grdf.addColorStop(0, '#234');
grdf.addColorStop(1, '#23e');
context.arc(180, 140, 30, 0, 2 * Math.PI, false);
context.fillStyle = grdf;
context.fill();

//lingkaran 4
context.beginPath();
var grdf = context.createRadialGradient(250, 110, 0, 250, 140, 30);
grdf.addColorStop(0, '#234');
grdf.addColorStop(1, '#23e');
context.arc(250, 140, 30, 0, 2 * Math.PI, false);
context.fillStyle = grdf;
context.fill();

/* KOMBINASI */
//lingkaran besar
context.beginPath();
var grdlin = context.createLinearGradient(0, 235-65, 0, 235+65);
grdlin.addColorStop(0, '#23e');   
grdlin.addColorStop(1, '#234');
context.arc(145, 235, 65, 0, 2 * Math.PI, false);
context.fillStyle = grdlin;
context.fill();
context.beginPath();
var grdf = context.createRadialGradient(145+20, 235+80, 0, 145+20, 235+80, 130);
grdf.addColorStop(0, 'rgba(255,255,255,0.7)');
grdf.addColorStop(1, 'rgba(255,255,255,0)');
context.arc(145, 235, 65, 0, 2 * Math.PI, false);
context.fillStyle = grdf;
context.fill();
context.beginPath();
var grdf = context.createRadialGradient(145-10, 235-40, 0, 145-10, 235-40, 90);
grdf.addColorStop(0, 'rgba(255,255,255,0.9)');
grdf.addColorStop(1, 'rgba(255,255,255,0)');
context.arc(145, 235, 65, 0, 2 * Math.PI, false);
context.fillStyle = grdf;
context.fill();

/* fungsi tambahan */
function circles(a,color){
  color=color||'rgba(0,0,0,0.5)';
  for (var i=0; i<a.length; i++ ){
    context.beginPath();
    context.arc(a[i][0], a[i][1], 3, 0, 2 * Math.PI, false);
    context.fillStyle = color;
    context.fill();
  }
}

function lines(a,color){
  color=color||'rgba(0,0,0,0.5)';
  context.beginPath();
  context.moveTo(a[0][0],a[0][1]);
  for (var i=1; i<a.length; i++ ){
    context.lineTo(a[i][0],a[i][1]);
  }
  context.lineWidth = 1;
  context.strokeStyle = color;
  context.stroke();
}

See the Pen Canvas Basic (Fill & Gradient) by Agus Made (@agusmade) on CodePen.

Maka hasilnya akan menjadi seperti gambar di atas, atau hasil berikut :

See the Pen Canvas Basic (Fill & Gradient) by Agus Made (@agusmade) on CodePen.

Maaf saya masih males ngasi panduan bertele2 dalam kata2, karna dalam soure code sudah disertai ketarangan tidap bagiannya. Kalo ada yang belum jelas, atau salah, atau usul atau protes, silahkan tulis komen.
Moga pikiran yang baik senantiasa menyertai kita.
Makasih

Canvas dalam HTML5 bukanlah barang baru, namun kebanyakan dari web developer khususnya yang berkutat di HTML5 dan javascript jarang peduli sama hal ini. Mengapa demikian? karena udah banyak library2 javascript yang instan dan mudah digunakan untuk pengelolaan gambar.

Gak peduli apapun alasannya, tahu bagaimana cara ngurusi canvas di HTML5 lebih baik daripada gak tahu sama sekali. Karna sebagian besar library pengelolaan gambar dengan javascript menggunakan object dan fungsi dasar dalam HTML5 canvas.

Dalam Tutorial ini kita akan belajar membuat gambar2 sederhana pada canvas menggunakan fungsi2 bawaan pada canvas. Berikut kira2 penampilan hasil dari apa yang kita lakukan :

HTML5 Canvas Line and Curve

Langkah2nya pembuatannya adalah sebagai berikut :
Pertama siapkan halaman HTML yang berisi tag canvas dalam <body></body> seperti tag berikut :

<canvas id="canvasku" width="400" height="50"></canvas>

See the Pen Canvas Basic (Line & Curve) by Agus Made (@agusmade) on CodePen.

Selanjutnya rujuk ke file JS atau tambahkan tag

yang berisi sintaks berikut :

var canvas=document.getElementById('canvasku');
var context=canvas.getContext('2d');

/* GARIS (line) */
context.beginPath();
context.moveTo(0,10);
context.lineTo(200,100);
context.stroke();

context.beginPath();
context.moveTo(50,10);
context.lineTo(250,100);
//ukuran garis
context.lineWidth=10;
context.stroke();

context.beginPath();
context.moveTo(100,10);
context.lineTo(300,100);
context.lineWidth=10;
//warna garis
context.strokeStyle = '#ff0000';
context.stroke();

context.beginPath();
context.moveTo(150,10);
context.lineTo(350,100);
context.lineWidth=15;
context.strokeStyle = 'rgba(0,0,255,.5)';
//ujung garis
context.lineCap = 'round';
context.stroke();

/* BUSUR (arc) */
context.beginPath();
context.arc(10, 100, 50, 0, Math.PI/2, false); //x, y, radius, startAngle, endAngle, counterClockwise
context.lineWidth = 5;
context.lineCap = 'butt';
context.strokeStyle = 'green';
context.stroke();
circles([[10,100]]); //titik pusat

context.beginPath();
context.moveTo(10, 200)
context.arcTo(50, 200, 50, 180, 20); //x1, y1, x2, y2, radius
context.arcTo(50, 140,100, 190, 15);
context.lineWidth = 5;
context.lineCap = 'butt';
context.strokeStyle = 'purple';
context.stroke();
circles([[10,200],[50, 200],[50, 180],[50, 140],[100, 190]]); //titik pusat
lines([[10,200],[50, 200],[50, 180],[50, 140],[100, 190]]); //titik pusat

/* KURVA (curve) */
context.beginPath();
context.moveTo(80,110);
context.quadraticCurveTo(100,220,240,110);
context.lineWidth = 5;
context.lineCap = 'butt';
context.strokeStyle = 'blue';
context.stroke();
circles([[80,110],[100,220],[240,110]]); //titik bantu
lines([[80,110],[100,220],[240,110]]); //garis bantu

context.beginPath();
context.moveTo(140,200);
context.bezierCurveTo(240,260,390,110,240,120);
context.lineWidth = 5;
context.lineCap = 'butt';
context.strokeStyle = 'red';
context.stroke();
circles([[140,200],[240,260],[390,110],[240,120]]); //titik bantu
lines([[140,200],[240,260],[390,110],[240,120]]); //garis bantu

function circles(a,color){
  color=color||'rgba(0,0,0,0.5)';
  for (var i=0; i<a.length; i++ ){
    context.beginPath();
    context.arc(a[i][0], a[i][1], 3, 0, 2 * Math.PI, false);
    context.fillStyle = color;
    context.fill();
  }
}

function lines(a,color){
  color=color||'rgba(0,0,0,0.5)';
  context.beginPath();
  context.moveTo(a[0][0],a[0][1]);
  for (var i=1; i<a.length; i++ ){
    context.lineTo(a[i][0],a[i][1]);
  }
  context.lineWidth = 1;
  context.strokeStyle = color;
  context.stroke();
}
See the Pen Canvas Basic (Line & Curve) by Agus Made (@agusmade) on CodePen.

Maka hasilnya akan menjadi seperti gambar di atas, atau hasil berikut :

See the Pen Canvas Basic (Line & Curve) by Agus Made (@agusmade) on CodePen.

Maaf tidak banyak panduan dalam kata2, karna dalam soure code semua ada keterangannya. Kalo ada yang belum jelas, atau salah, atau usul atau protes, silahkan tulis komen.

Moga pikiran yang baik senantiasa menyertai kita.
Makasih

Sebuah trik mensiasati blogger agar mau memenggal artikel yg terlalu panjang. dan tidak menampilkan semua di halaman utama.
aseli bikinan agusmade

Kayaknya ini sangat penting dan banyak sekali para blogger mengharapkan fitur ini difasilitasi oleh blogger, tapi entah mengapa blogger belum memfasilitasinya. Kalo pada wordpress kita cukup memberi tag html sederhana seperti ini :

 <!--more-->

sedangkan diblogger gak ada.
Tapi jangan kecewa dulu, artikel ini saya post untuk menangani masalah ini. Setelah saya telusuri helpnya blogger, akhirnya saya ketemu cara (baca: akal-akalan) yang disarankan untuk melakukannya.

Kita mulai, Pada dasarnya metode ini hanyalah akal-akalan penampilan saja, artinya tulisan lengkap hanya tidak di tampilkan, bukan tidak ada. Namun setidaknya dapat mengatasi masalah capek-nya pengguna hanya untuk menggulung layar di halaman utama blog anda hanya untuk melihat 5 sampai 10 blog yang tampil, dihalaman utama.
Pengguna hanya akan melihat summary pada setiap post yg ada dihalaman utama dan dapat membaca selengkapnya tulisan tersebut pada halaman terpisah, hanya dengan mengklik tulisan "Baca Selengkapnya!",
Bagaimana cara membuatnya?

Berikut adalah langkah demi langkah melakukan hal ini :

Edit CSS template blog anda
Setelah anda login diblogger Pilih seting TataLetak | trus Edit HTML (ini kalo blogger anda disetting Bahasa Indonesia, kalo nggak cari aja link yang maksudnya sama), setelah itu, untuk jaga-jaga jangan lupa backup dulu template anda dengan mengklik tulisan Download Template Lengkap lalu simpan. seandainya ada kesalahan dalam utak-atik, anda dapat menguploadnya kembali.

beri tanda Cek pada CheckBox "Expand Template Widget" biar semuanya kelihatan.
terus cari tulisan
</head>
lalu ketikkan kode beriku ini diatasnya:

 <style>
  <b:if cond='data:blog.pageType == "item"'>
   span.fullpost {display:inline;}
  <b:else/>
   span.fullpost {display:none;}
  </b:if>
 </style>

tujuannya adalah mengatur kondisi penampilan pada keadaan : jika hanya artikel tersebut yang ditampilkan maka bagian yang ada didalam "span" dengan "class=fullpost" akan ditampilkan, selain itu tidak.

Tambahkan Link pada Tiap Akhir Artikel di halaman Utama
selanjutnya cari tulisan :
<data:post.body/>
ketikan kode berikut dibawahnya :

 <b:if cond='data:blog.pageType != "item"'>
  <a expr:href='data:post.url' target='_blank'>Baca Selengkapnya !</a>
 </b:if>

tujuannya adalah tulisan "Baca Selengkapnya !" -- yang bisa di klik untuk membaca artikel selengkapnya --, pada setiap akhir artikel dihalaman utama.
Selanjutnya simpan template anda dengan mengkli tombol "SIMPAN TEMPLATE".

Edit Semua Post yang ingin dipenggal
Nah, ini adalah bagian yang paling menyebalkan.
kita harus mengedit setiap Artikel yang sudah kita kirim untuk menentukan sampai dimana summary artikel kita.
Lakukan pengeditan berikut dalam mode HTML.

Tentukan bagian pemenggalan artile anda, dan beri tag berikut :

 Ini adalah contoh bagian summary artikel 
 dan akan tampil di halaman utama.
 <span class=fullpost>
  Dan ini adalah kelanjutan-nya, 
  dan bagian ini tidak akan tampil di halaman utama
 </span>

Perhatikan kode di atas, bagian yang ada dibuka dengan "<span class=fullpost>" dan ditutup dengan "</span>" tidak akan tampil pada halaman utama.

Saat pengguna meng-klik tulisan Baca Selengkapnya! maka web akan membuka window baru dan menampilkan seluruh artikel.
Sudah selesai, ohya, Anda dapat memodifikasinya, misalnya hilangkan tulisan target='_blank' biar tidak selalu membuka window baru, atau ganti tulisan "Baca Selengkapnya!" dengan kata2 lain sesuai selera.

Artikel ini sudah saya coba di sini dan berhasil. selamat mencoba.

Terima kasih
Agus Made K http://agusmade.blogspot.com

 

Sejak kemunculannya tahun 2005, webblogku dengan penampilannya yang sangat klasik, bosen juga akhirnya. Biar gak dianggap kurang peduli pada pengunjung yg mulai membludak, tak ganti tampilannya agar lebih enak dilihat dan dibaca. Oya, theme ini saya dapat dari themelib.com

Beberapa gadget dah ditambah, seperti track recent visitor, top tags dan tools yang mungkin berguna bagi teman-teminku smua seperti pencarian artikel internal blog (pake google), google translator, currency converter dan lain2. dan iklan2 yg hanya ngabis2in bandwidth sudah mulai dihapuskan. Liat aja disebelah kanan.
Dengan sedikit pertimbangan beberapa news feed dan shout box masih dipertahankan, siapa tau berguna.

Tapi untuk sementara saya belum sempat menanggapi beberapa email dan shout yang masuk... sorry bgt, masih agak sibuk, nih.

Semoga perubahan ini menambah kenyamanan kita semua untuk tetap mencerdaskan kehidupan bangsa melalui berbagi ilmu lewat blog.


teng kyu paramex... :-)

Agus Made (http://agusmade.blogspot.com)
aseli bikkinan agus made

Untuk berbagai kepentingan, kita sering memerukan aplikasi praktis dan simple untuk menggantikan aktivitas mudah, sangat sering dilakukan namun cukup memakan waktu.
Sebagai contoh membersihkan file2 yg tidak berguna dari project directory, meng-compile source code, konversi data/file, hide/unhide folder dan seluruh strukturnya, mempublish web via ftp dan masih banyak lagi aktivitas rutin dan mudah yang menyita banyak energi.

Untuk kepentingan ini saya sering menggunakan batch file (*.bat -- yang berisi kumpulan perintah dos, atau command line terhadap program) untuk melakukannya. kalo perlu saya membuat sebuah aplikasi yang mendukung command line (sudah tentu dg delphi), untuk kemudian saya panggil melalui batch file.

Sesungguhnya selain batch file, masih ada Windows Scripting Host (WSH) dan Powershell (untuk dot net). dua yg terkhir ini lebih kompleks dan mendukung GUI (Graphical User Interface) sederhana.
Aktivitas Mengetik daftar berintah baris demi baris pada sebuah file yang nantinya file tersebut melakukan aktivitas pengganti pekerjaan tangan yg menjemukan kita sebut saja sebagai Batch Programming (saya lupa dapat istilah ini dari mana).

berikut adalah gambaran bagaimana bekerjanya Batch File dan WSH


moga suatu waktu kita sempat membahas lebih detail tentang Batch Programming. untuk sementara saya berikan beberapa link yang mungkin berguna untuk dijadikan referinsi, antara lain :
An A-Z Index of the Windows XP command line
DOS Command Index
Batch Scripts for Windows
Windows PowerShell Blog
PowerShell.com ==> Script Library

semoga bermanfaat
Agus Made K (http://agusmade.blogspot.com)
aseli bikinan agus made
Seperti biasa, saya berasumsi anda sudah mengenal CorelDraw (sebuah aplikasi pengolah gambar berbasis vektor yg lumayan terkenal). Seandainya anda belum mengenalnya, sangat saya sayangkan tulisan ini bukan untuk anda.

Langsung saja, siapkan alat dan bahan sebagai berikut :
1. Aplikasi CorelDraw yang mendukung VBA (saya menggunakan CorelDraw 12)
2. Aplikasi AdobePhotoshop (opsional)
3. Secangkir Kopi (kalo anda ngopi), sebatang rokok (kalo memang perokok). kalo nggak ada, beli di warung sebrang jalan.

Langkahnya sangat sederhana, mudah, cepat dan hasilnya keren. Bermula dari jalankan CorelDraw. Buka VisualBasic Editor-nya (cek menu Tools|VisualBasic|VisualBasic Editor...) Pastikan Project Explorernya tampil, kalo belum cek menu View|Project Explorer. DoubleClick "ThisDocument" pada Project Explorer (VBAProject|CorelDraw12 Objects). Lalu ketik (atau copy-paste) script berikut pada Code Editor-nya:

Sub latihan()
Dim sa As Shape
For i = 1 To 300
Set sa = ActiveLayer.CreateArtisticText((Rnd() * 100) / 10, (Rnd() * 80) / 10,"Agus Made Krisna Parta", _
cdrEnglishUS, , "Arial", (Rnd() * 200) / 10 + 4, cdrTrue, cdrTrue, , cdrLeftAlignment)
sa.Transparency.ApplyUniformTransparency Rnd() * 100
Next i
End Sub


Kalo udah, Tutup VisualBasic Editor dan kembali ke Corel. lalu jalankan Script Anda (Pilih menu Tools|VisualBasic|Play..., pilih "latihan"|Run)
Tunggu sebentar, dan Lihat hasilnya... wow menakjubkan!!! keren khan?
Biar lebih keren SelectAll terus beri warna (misalnya Biru), export ke *.psd, buka di Photoshop, beri latar hitam dan hasilnya akan tampak seperti gambar di atas.


Hehe... saya rasa sudah cukup bikin 'sakit kepala' para pengguna CorelDraw dan Photoshop yg Konvensional. Untuk informasi lebih lengkap soal VBA pada CorelDraw silahkan pencet F1 dari VisualBasic Editor-nya. oke...

dan berikut adalah contoh2 hasil utak-atik VBA pada CorelDraw yg dan saya beri sentuhan akhir dengan Photoshop:





Terima kasih
Agus Made K (http://agusmade.blogspot.com)

GPS adalah Global Positioning System, merupakan sebuah system penanda lokasi tertentu berdasar Koordinat Bumi. Moga suatu saat kita bisa bahas lebih detail tentang system ini. untuk sementara berikut adalah contoh Aplikasi yg sudah saya bikin, guna mengelola data GPS.

Karena software ini masih langkah awal dan hanya untuk kepentingan teman-teman yg baru sibuk dimojokerto saja, jadi kayaknya perlu banyak pembenahan:

kali ini baru satu kali mengalami pembenahan, pada:
1. Handle Track Log.
2. Auto renaming symbol, (Oya Pak Adi jangan lupa cek Setting dulu sebelum buka file pertama kali, biar sampean gak bingung)
3. Memory Lack, untuk data banyak (sekarang dah lebih kuat dari excel)

Pak Pur, Pak Adi atau Fu'ah silahkan download lagi aja softwarenya :
Klik di sini untuk download yg baru, sedangkan

yang lama klik ini. terima kasih.

Judul ini emang gak ada ubungannya ama Penerangan Jalan Umum (PJU), tapi saya cuma mo nyimpen beberapa gambar yang saya punya di komputer saya saat nggarap kerjaan PJU di Kab. Pasuruan dan Bojonegoro.

bos kita tunggu di sini aja, ntar kalo dah jatuh biar kita duluan yg ambil mangganya, boss... kamu emang cerdas,
emang lagi nonton apaan sih? ada yang baru, gak?


kalo di pilem holiwut, musti alaremnya dah bunyi.

pasar yg terdekat adalah rumah kita, dan pembeli yg terdekat adalah teman kita.


selain kera, ada beberapa mahluk yg pandai memanjat, jadi jangan diremehkan... hehehe...

bukan korban bom bali 3.


software + hardware = tempat sampah




meja kerja sebuah kantor saat bos gak ada.


baru segitu di upload, besok2 lagi. Oke...
aseli bikinan agus made

Pastikan paket komponen JVCL sudah terinstal pada delphi anda, jika belum silahkan download di : http://jvcl.sourceforge.net dan ikuti langkah instalasinya.

Jika semua sudah beres, kini kita mulai.

buat program baru, dan tambah kan dua form lagi, hingga program kita terdiri dari tiga Form. Jangan lupa set ukuran Form2 dan Form3 lebih kecil dari Form1 (sekitar 250x250an), dan set properti "formstyle"-nya menjadi "fsStayOnTop" karena ke dua form ini akan dijadikan Dockable Form.

pada Form1 (form utama) tambahkan dua buah Button, dan komponen TJvDockServer ( dari tab "Jv Docking" dikomponen palette), tambahkan juga salah satu komponen Dock Style (misalnya TJvDockVIDVCStyle).

set property JvDockServer1.DockStyle=JvDockVIDVCStyle1

pada Form2 tambahkan komponen TJvDockClient (juga dari tab "Jv Docking").

hubungkan Form2 dengan Form1, bisa dilakukan dengan menambahkan "Unit1" pada "uses" atau pilih menu "File | Use unit" kemudian pilih unit1.

set property JvDockClient1.DockStyle=Form1.JvDockVIDVCStyle1

lakukan hal yang sama (seperti Form2) untuk Form3.

beri event OnClick pada Button1 dan Button2 yang ada di Form1 untuk menampilkan masing-masing untuk menampilkan Form2 dan Form3.

kurang lebih begini :

//...
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Form3.Show;
end;
//...

selesai.

Jalankan program, klik Button1 dan Button2, arahkan ke dua Form ini ke pinggir Form1 lihat hasilnya.

Terima kasih
Agus Made K (http://agusmade.blogspot.com)

aseli bikinan agus made

Saatnya kita belajar implementasi OLE Automation, kali ini kita belajar cara sederhana mengendalikan Photoshop dari aplikasi yang kita buat dengan Delphi. Saya belum tahu mulai Photoshop versi berapa yang mendukung ini, yang jelas dengan Photoshop CS, tidak ada masalah.

Mula-mula jalankan Photoshop pada komputer anda, buka file gambar.

Buat program dengan delphi, tambahkan sebuah "Button" pada form, tambahkan "ComObj" pada "uses", beri event OnClick pada "Button", perhatikan source code berikut :

uses
//...
ComObj
//...

//...
procedure TForm1.Button1Click(Sender: TObject);
var
PhotoShop: OLEVariant;
begin
try
PhotoShop := CreateOleObject('Photoshop.Application');
except
ShowMessage('Error...');
Exit;
end;
//contoh GaussianBlur
PhotoShop.activeDocument.activeLayer.applyGaussianBlur(5);
end;
//...

Jalankan program anda, Klik Tombol-nya dan lihat di Photosop, gambar akan menjadi 'mblawur' karena efek "applyGaussianBlur" yang diperintahkan oleh program anda. Gampang khan?

Anda juga bisa memberikan efek lain, atau memberikan aktivitas lain pada Photoshop, untuk lebih jelasnya silahkan baca "Scripting Guide" pada Photoshop.

Terima kasih
Agus Made K (http://agusmade.blogspot.com)

aseli bikinan agus made

Kali ini kita belajar cara sangat sederhana membuat aplikasi 3D dengan OpenGL menggunakan Delphi dan GLScene. Latihan ini akan sangat tidak berguna jika anda sudah mahir, tapi jangan protes dulu, saya belum banyak melihat teman-teman membuat aplikasi Tiga Dimensi apalagi pake Delphi.

Seperti biasa, saya berasumsi GLScene sudah terinstal dengan baik pada delphi anda, kalo belum silahkan kunjungi web resmi GLScene di http://glscene.org/, download versi terbaru yang cocok dengan delphi anda dan ikuti petunjuk instalasinya.

Karena kemudahan menggunakan GLScene, anda tidak diwajibkan untuk tahu apa itu OpenGL, bagaimana menggunakannya apalagi bagaimana ia bekerja. namun jika anda tertarik untuk tahu lebih jauh silahkan kunjungi http://www.opengl.org/.

Langsung saja, buat proyek baru dengan delphi, tempatkan beberapa komponen, pada form anda, komponen-komponen tersebut antara lain: TGLScene,TGLSceneViewer dan TAsyncTimer (yang semuanya terdapat pada komponen palette "GLScene").


Double Click komponen "GLScene1", akan tampil dialog "GLScene Editor".

Pada "Object Treeview" pilih "Scene objects", klik kanan, pilih "Add object | DummyCube".

pilih "DummyCube1" (yang baru anda buat), klik kanan, pilih "Add object | Special objects | SpaceText".

pilih "SpaceText1" (yang baru anda buat), set Property-nya pada "Object Inspector" :
Text="Agus Made Krisna" // ini cuma contoh, "AgusMade" saja juga boleh... :-)
Material.FrontProperties.Emission.Blue=0.718 // warnanya agak biru.
Position.X=-3.6 // geser ke kiri dikit.

kembali ke dialog "GLScene Editor" pilih "Scene objects", klik kanan, pilih "Add object | LightSource".

pilih "GLLightSource1" (yang baru anda buat), set Property-nya pada "Object Inspector" :
Position.X=-2 // geser ke kiri dikit.
Position.Y=3 // geser ke atas dikit.
Position.Z=4 // geser ke depan dikit.

kembali lagi ke dialog "GLScene Editor" pilih "Cameras", klik kanan, pilih "Add camera".

pilih "GLCamera1" (yang baru anda buat), set Property-nya pada "Object Inspector" :
TargetObject=DummyCube1 // geser ke kiri dikit.
Position.X=-4 // geser ke kiri dikit.
Position.Y=-1 // geser ke bawah dikit.
Position.Z=3.5 // geser ke depan dikit.


Jika sudah, tampilan dialog "GLScene Editor" kira2 akan begini :

dialog "GLScene Editor" sudah boleh ditutup. Klik "GLSceneViewer1" pada form set property Camera=GLCamera1

Akhirnya tampillah dia :
Pada dasarnya program sudah bisa dijalankan tanpa harus mengetik source code sedikitpun. Namun sebagai programmer, masak bikin program hanya klak-klik saja... :-) Kita beri animasi berputar, (sekedar contoh Animasi 3D). Langkah2nya :
Pilih "AsyncTimer1" pada form, set property:
Enabled=True
Interval=1

beri "AsyncTimer1" Event "OnTimer" :

procedure TForm1.AsyncTimer1Timer(Sender: TObject);
begin
DummyCube1.Turn(1);
end;
Sudah selesai, gampang khan?... Oke, Jalankan program maka tampil Tulisan3D berputar :
silahkan download source code untuk Aplikasi ini disini

Terima kasih
Agus Made K (http://agusmade.blogspot.com)

aseli bikinan agus made


Berikut kita belajar cara sangat sederhana mengelola database MySQL menggunakan Delphi dan Zeos. Latihan ini akan sangat tidak berguna jika anda sudah mahir, tapi jangan protes dulu, artikel ini saya muat di sini karena banyak teman yang minta ke saya, karena merasa terlalu awam dengan zeos.

Mula-mula, saya berasumsi zeos sudah terinstal dengan baik pada delphi anda, kalo belum silahkan download di http://www.sourceforge.net/projects/zeoslib, lalu ikuti petunjuk instalasinya.

Saya juga berasumsi bahwa MySQL sudah berjalan pada komputer anda atau setidaknya bisa diakses sepenuhnya dari komputer anda, kalo belum silahkan download di http://dev.mysql.com/downloads/, lalu ikuti petunjuk instalasinya.

dan

Saya juga berasumsi anda sudah dapat menggunakan MySQL dengan baik, entah menggunakan MySQL Front, SQLYog, PHPMyAdmin atau apa aja, yang penting bisa ..:) selanjutnya buat database "latihan" dan buat satu tabel "Anggota" dengan field "Id" varchar(15), "Nama" varchar(15), "Alamat" varchar(255), atau jalankan script berikut pada SQLEditor aplikasi anda:

create database if not exists `latihan`;
USE `latihan`;
DROP TABLE IF EXISTS `anggota`;
CREATE TABLE `anggota` (
`Id` varchar(15) NOT NULL default '',
`Nama` varchar(30) default NULL,
`Alamat` varchar(255) default NULL,
PRIMARY KEY (`Id`)
) TYPE=MyISAM;
insert into `anggota`(`Id`,`Nama`,`Alamat`)
values ('123','Agus Made','Yogyakarta'),
('456','Krisna Parta','Yogyakarta juga');
atau dump file "db_latihan.sql" dari source code latihan ini.

Buat proyek baru pada delphi yang kurang lebih tampilannya seperti gambar berikut :

Deklarasikan variabel gloabal "editmode" untuk pengelolaan mode tampilan dan akses terhadap setiap komponen:


//...
var
Form1: TForm1;
editmode:0..2=0;//0=browse 1=insert 2=edit
implementation
//...

Buat beberapa "procedure" bantu berikut, dan deklarasikan sebelum sintaks "private". kurang lebih seperti ini :

//...
procedure setmode;
procedure kosong;
procedure isi;
//...
private
//...
implementation
//...
procedure TForm1.setmode;
begin
tbTambah.Enabled:=editmode=0;
tbEdit.Enabled:=editmode=0;
tbSimpan.Enabled:=editmode>0;
tbBatal.Enabled:=editmode>0;
tbHapus.Enabled:=editmode=0;

edId.ReadOnly:=editmode=0;
edNama.ReadOnly:=editmode=0;
mmAlamat.ReadOnly:=editmode=0;
end;

procedure TForm1.kosong;
begin
edId.Text:='';
edNama.Text:='';
mmAlamat.Text:='';
end;

procedure TForm1.isi;
begin
edId.Text:=zqAnggota.fieldbyname('Id').asstring;
edNama.Text:=zqAnggota.fieldbyname('Nama').asstring;
mmAlamat.Text:=zqAnggota.fieldbyname('Alamat').asstring;
end;


lalu berikan event OnAfterScroll pada TZReadOnlyQuery "zqAnggota" dengan sintaks berikut:

procedure TForm1.zqAnggotaAfterScroll(DataSet: TDataSet);
begin
isi;
end;

berikan juga event OnFormShow pada TForm1 "Form1" dengan sintaks berikut:
procedure TForm1.FormShow(Sender: TObject);
begin
setmode;
end;


lalu berikan event OnClick pada TButton "tbTambah" dengan sintaks berikut:

procedure TForm1.tbTambahClick(Sender: TObject);
begin
case TButton(sender).tag of
0: begin editmode:=1; kosong; setmode; end; //tambah
1: begin editmode:=2; isi; setmode; end; //edit
2: begin editmode:=0; isi; setmode; end; //batal
3: begin //simpan
if editmode = 1 then //jika data adalah tambahan
zqProses.Script.Text:='insert into anggota(Id,Nama,Alamat)'+
'values("'+edId.text+'","'+edNama.text+'","'+mmAlamat.Text+'")'
else //jika data adalah editan
zqProses.Script.Text:='update anggota set'+
'Id="'+edId.text+'",Nama="'+edNama.text+'",Alamat= "'+
mmAlamat.Text+'" where Id="'+
zqAnggota.fieldbyname('Id').AsString+'"';
zqProses.Execute;

zqAnggota.Close; //biar refresh
zqAnggota.Open;
editmode:=0; setmode;
end;
4: begin //hapus
zqProses.Script.Text:='delete from anggota where '+
'Id="'+zqAnggota.fieldbyname('Id').AsString+'"';
zqProses.Execute;
zqAnggota.Close; //biar refresh
zqAnggota.Open;
end;
end;
end;

Event OnClick yang kita buat di atas sebenarnya berlaku untuk semua tombol (tbEdit, tbBatal, tbSimpan dan tbHapus) yang kita buat, menggunakan metode pembagian kerja berdasarkan property "Tag" pada "TButton" tersebut. Jadi hubungkan event OnClick semua tombol tersebut dengan "tbTambahClick"

jika semua sudah 'dilakoni' dengan baik, 'kayaknya' program 'gak bakalan' bermasalah. Jalankan program dan lihat hasilnya, kurang lebih akan seperti ini :

Semua tombol sudah berfungsi dengan baik. Sekali lagi contoh ini sangat sedarhana tidak menggunakan penangan error dan konfirmasi apapun. Pada implementasi sesungguhnya banyak hal yang perlu di'urusi'. Namun demikian setidaknya bagi yang belum pernah 'nyoba' handle MySQL dengan Delphi, bisa menyadari betapa mudah Zeos digunakan untuk hal ini.

silahkan download source code untuk Aplikasi ini disini.

Terima kasih
Agus Made K (http://agusmade.blogspot.com)

Belakangan ini saya mencoba membuat sepaket library yang nantinya dapat digunakan untuk pengelolaan DataBase berbasis Object Oriented menggunakan Delphi dengan DataBase MySQL (dapat juga diterapkan pada database yang lain, butuh sedikit modivikasi) dan Zeos untuk direct access ke MySQL. Sebenarnya besok kalo punya duit maunya sih pake MyDAC :-(

Orientasi utamanya adalah untuk memudahkan dalam pengembangan software skala Besar dengan Pola standar. Ide ini muncul bermula dari sulitnya menemukan standar pengembangan software database berbasis delphi (atau mungkin tidak harus distandarisasi), padahal menurut saya ini hal yang esensial.

Pada tahap awal ini belum banyak hal yang sempat saya tangani, namun sudah cukup banyak membantu saya dalam mengembangkan beberapa proyek.

Berikut adalah uraian beberapa class dasar yang yang saya buat dalam library ini :
TamView : Merupakan Class utama dalam pengelolaan Object Oriented Datasase. Class ini meng-handle tabel ataupun kumpulan tabel untuk dikelola, pengelolaan berupa DDL maupun DML SQL handle. Pada versi ini, belum semua DDL dan DML yang didukung. hanya pengelolaan utama yang sudah saya tangani seperti : Select (termasuk join, where, order dan limit), Insert, Delete dan Update. Jangan salah faham dulu... dalam pengembangan software anda tidak perlu menggunakan sintak SQL, karena library ini yang akan membuatnya. itulah proses utama yang dilakukan oleh library ini. Intinya menerjemahkan bahasa object pascal pada software anda menjadi sintak SQL yang selanjutnya dihubungkan ke MySqL menggunakan direct access-nya Zeos.
Bahkan dalam waktu dekat kita akan mengabaikan bahasa pascal dalam penggunaannya. karena XML jauh lebih enak dipahami. Ini yang akan saya kembangkan. tunggu saja tanggal mainnya :-)

TamDetail : Merupakan subClass dari TamView untuk pengelolaan master detail, sub detail, dan sub-nya lagi dalam tingkatan tak terhingga. Hubungan antara master dan detail dapat berupa KeyField dan MasterField (seperti standard Delphi) bahkan beberapa KeyField dan MasterField, maupun SQL Like JoinType.

TamLookup : Merupakan class pengelolaan Join beberapa tabel dengan berbagai JoinType dan beberapa field terkait.

Juga class-class lain seperti TamOrder, TamLimit, TamFilter untuk pengelolaan full custom select. namun tetap tidak kacau dalam peng-update-an data.

Dua unit yang saya buat untuk proyek ini, antara lain :
amDbObj ==> berisi class-class dasar untuk pengelolaan database.
amDbIntf ==> berisi class-class pendukung untuk user interface.

Untuk lebih jelasnya hubungan antar class pada masing-masing file dapat anda lihat pada gambar.
Dan dokumentasi library dalam format HTMLHelp (chm) ini dapat anda download.

Segala kritik dan saran ditunggu, jangan ragu kirim bug report, protes, cacian, umpatan, pujian dan sebagainya ke krisnaparta{at}gmail.com Pengembangan ini sangat membutuhkan partisipasi semua pihak.

Selamat mencoba, semoga anda mendapat proyek besar dan jangan lupa bagi2 :-)
silahkan download file chm nya di sini

Aku baru saja rampung bikin komponen delphi, untuk zeos dengan tujuan khusus, Backup dan Restore tabel. ya TamZBackup ini di buat karna terlalu banyak masalah saat menggunakan TZBackup (namanya kalo gak salah) bawaan zeos. dengan menggunakan pola yang sama yaitu SQLDump. Bug kecil pada TZBackup seperti :
1. Pemberian nilai null untuk filed yang memiliki nilai string kosong (''). Masalah ini akan terasa saat hasil backupnya kita restore, apa bila field ybs adalah pimary key.
2. Menyertakan semua field dalam SQLDump. hal ini hanya menyebabkan data backup-an ukurannya lebih besar. Jangan anggap sepele masalah ini. Pada salah satu proyek, aku ngalami selisih sampai 20MB.

Sudah diatasi dengan baik oleh komponen TamZBackup, moga gak ada bug, apalagi yang lebih parah. :)

Jadi hamat saat backup, aman saat restore. oke...
komponen beserta source codenya bisa di download sini

Setelah lama, samadi di tengah hutan yang namanya Bangil (Pasuruan, JawaTimur), akhirnya aku pulang juga kampung halamanku yang baru (Jogja). Karna yang namanya hutan jauh dari jangkauan kucing jadi harap maklum aja, lama bgt web ini gak di update.
dan kayaknya gak lama lagi aku akan masuk hutan yang lain lagi (mungkin dasarnya aku emang orang utan kali ya? :)). Kali ini juga masih jawa timur yaitu Bojonegoro.
Moga saja dihutan yang baru ini aku dapat fasilitas Internet, biar web blog ku tidak mengenaskan seperti sekarang ini... :(

Selama ini aku merasa sebage programmer delphi. tapi aku senang nerobos nyebarng ketempat tetangga sebage tukang web. nah dalam perjalanan menuju tempat tersebut aku sekarang mo bikin Content Management System (CMS) sendiri dan original (gak pake nyontek). konsepnya dan siap, business role jga dah, DFD udah, DataBase & ERD jaga dah oke. pengennya sih yang OO (object oriented) banget. obyek, class dan sebagenya tersusun rapi.

tapi:
aku belum pede soal sekyiriti. gimana cara yg bener nyegah SQL Injection. selama ini aku mengunakan metode ngecek input variabel (parameter), nah variabel dinyatakan valid jika tanpa tanda baca yang berhubungan dengan sintax SQL, Javascript, VBScript, PHP bahkan HTML.
masalahnya jadi rumit jika aku sendiri yg pengen nginput sintax2 seperti itu. (apa harus allow per user ato bagemana?). nah kalo teman-temin ada yg punya solusi jitu untuk hal ini, hubungi aku lewat apa aja. ym-ku:agusmade imel:agusmade[et]yahoo[dot]com. ato lewat shout box di blogku ini. tengs banget deh sebelumnya.

Don't take this page too seriously.... It is the umpteenth variation on the well-known theme "how do I shoot myself in the foot" using Fortran, VB,...you name it. Most of the items were shamelessly plucked of the internet. Of course, Pascal and Delphi come out rather good in the comparison...

All credits to (unknown) original author. Additions made by several others, and by myself

How to Shoot Yourself in the Foot, using:

370 JCL
You send your foot down to MIS with a 4000-page document explaining how you want
it to be shot. Three years later, your foot comes back deep-fried.

6502
You shoot yourself in the foot.

68000
You can't decide which gun and which bullet to use, so you hang yourself.

8080
You foot yourself in the shoot.

80x86
The gun isn't in the same segment as your feet, so you can't shoot them.

Ada
After correctly packing your foot, you attempt to concurrently load the
gun, pull the trigger, scream, and shoot yourself in the foot. When you
try, however, you discover you can't because your foot is of the wrong
type.

APL
You shoot yourself in the foot, then spend all day figuring out how to
do it in fewer characters.

Access
You try to point the gun at your foot, but it shoots holes in all your
Borland distribution diskettes instead.

ActiveX
Ole_Registration_Error: Cannot find object "ActiveFoot",download
the latest drivers.

Assembler
You try to shoot yourself in the foot, only to discover you must first
invent the gun, the bullet, the trigger, and your foot.

Basic(interpreted)
You shoot yourself in the foot with a water pistol until your foot is
waterlogged and rots off.

Basic(compiled)
You shoot yourself in the foot with a BB using a SCUD missile launcher.

Visual Basic
You'll really only appear to have shot yourself in the foot, but you'll
have had so much fun doing it that you won't care.

C
You shoot yourself in the foot.

C++
You accidentally create a dozen instances of yourself and shoot them all
in the foot. Providing emergency medical care is impossible since you
can't tell which are bitwise copies and which are just pointing at
others and saying, "That's me over there."

Cobol
USE HANDGUN.COLT(45), AIM AT LEG.FOOT, THEN WITH ARM.HAND.FINGER ON
HANDGUN.COLT(TRIGGER) PERFORM.SQUEEZE RETURN HANDGUN.COLT(45) TO
HIP.HOLSTER.

Concurrent Euclid
You shoot yourself in somebody else's foot.

dBase
You buy a gun. Bullets are only available from another company and are
promised to work so you buy them. Then you find out that the next
version of the gun is the one that is scheduled to actually shoot
bullets.

Delphi

MyFoot := TFoot.Create( Self );
Gun    := TGun.Create( .45, SOFT_NOSED_BULLETS, 6 );
Gun.Aim( Self.MyFoot);
while Gun.BulletsAvailable  do
     Gun.Shoot( Self.MyFoot ); 

FORTH
Foot in yourself shoot.

FORTRAN
You shoot yourself in each toe, iteratively, until you run out of toes,
then you read in the next foot and repeat. If you run out of bullets,
you continue anyway because you have no exception handling ability.

HTML
<a target="http://body/lower-half/leg/foot.appendage">Shoot here</a>

HyperTalk
Put the first bullet of the gun into the foot left of leg of you. Answer
the result.

Java
The gun fires just fine, but your foot can't figure out what the bullets
are and ignores them.

LISP
You shoot yourself in the appendage which holds the gun with
which you shoot yourself in the appendage which holds the gun with
which you shoot yourself in the appendage which holds the gun with
which you shoot yourself in the appendage which holds the gun with
which you shoot yourself in the appendage which holds the gun with
which you shoot yourself in the appendage which holds...

Microsoft

>ActiveX Object "Foot" not found.
>"Foot" will possibly be included in the next release.
>You can upgrade for $500.
>Press OK to Retry or Esc to cancel.

Modula2
After realizing that you can't actually accomplish anything in this
language, you shoot yourself in the head.

Motif
You spend days writing a UIL description of your foot, the trajectory,
the bullet, and the intricate scrollwork on the ivory handles of the
gun. When you finally get around to pulling the trigger, the gun jams.

NeXT
We don't sell guns anymore, just ammunition.

Paradox
Not only can you shoot yourself in your foot, your users can, too.

Pascal
The compiler won't let you shoot yourself in the foot.

Perl

1. You go to CPAN and download Geek, Body::Foot, Gadgets:Gun and
Accesories::Bullet modules.
2. Then:
#!/usr/bin/perl -w
use strict;
use Geek;
use Body::Foot;
use Gadgets::Gun;
use Accesories::Bullet;

my $me = Geek->getBorn($ENV{'USER'});
my $foot = $me->{parts}->{feet}->[0];
die "No feet (maybe both were cut off?), stopped"
     unless defined $foot;
my $gun = ($me->{money} >= Gadgets:Gun::price ? Gadgets:Gun->buy() : Gadgets:Gun->steal);
my @bullets = map { Accesories::Bullet->new() } (0..5);

$gun->load(\@bullets);
while ($gun->{bullets})
{
 $gun->shoot($foot);
 last if $foot->shot();
}
print "Looser!\n" unless $foot->shot();

PL/1
After consuming all system resources including bullets, the data
processing department doubles its size, acquires 2 new mainframes and
drops the original on your foot.

Prolog
You tell your program that you want to be shot in the foot. The program
figures out how to do it, but the syntax doesn't permit it to explain it
to you.

Smalltalk, Actor, et al
After playing with the graphics for 3 weeks, the programming manager
shoots you in the head.

SNOBOL
If you succeed, shoot yourself in the left foot. If you fail, shoot
yourself in the right foot.

Sun
Just as soon as Solaris gets here, you can shoot yourself anywhere you
want.

Unix

% ls
foot.c foot.h foot.o toe.c toe.o
% rm * .o
rm: .o: No such file or directory
% ls
%

or :

% ls -a --color
man src MakeFile
% rm * .o
rm .o: No such file or directory
% make ShootFoot; make INSTALL

XBase
Shooting yourself is no problem. If you want to shoot yourself in the
foot, you'll have to use Clipper.

Windows95

  >shoot self in foot
  I don't see any self here.

  >shoot me in foot
  There is no you in the foot.

  >shoot foot
  I don't know which foot you're talking about.

  >shoot left foot
  You don't have the gun.

  >get gun
  You take the gun.
  You're lantern just went out.
  * * * YOU HAVE DIED * * *
  Press OK to confirm.

sumber :
http://noncorporeal.com/people/pathfinder/shoot_yourself_in_the_foot.html
http://users.pandora.be/dirk.claessens2/howto.htm
http://www.cs.bgu.ac.il/~omri/Humor/shoot.html
http://www.netfunny.com/rhf/jokes/90q4/shf4.html
http://www.progress.demon.co.uk/Fun/shoot-foot.html
http://paul.merton.ox.ac.uk/computing/foot-lang.html
http://m5p.com/~pravn/foot.html

More

Label

3D (1) blogger (1) Canvas (2) cerita pribadi (4) cms (1) coreldraw (1) delphi (6) freeware (1) GLScene (1) gps (1) HTML5 (2) humor (1) library (1) mysql (4) OLE/DDE (1) online tools (2) oop (2) OpenGL (1) photoshop (2) php (1) PJU (2) project (4) referensi (1) software (9) tamzbackup (1) tutorial dasar (8) zeos (3)