Ketidakpastian dan Oportunity

March 31, 2006 at 1:34 pm | Posted in General, News & Events | 18 Comments

by: Jaimy Azle 

Developer Delphi saat ini mungkin merasa bingung masa depan pengembangan bahasa ini, tidak hanya di Indonesia barangkali, namun di seluruh dunia. Hal ini wajar saja sejak diumumkannya rencana Borland untuk melepaskan jajaran produk IDE, dimana delphi termasuk diantaranya pada awal februari lalu. Meskipun hal ini sudah berulangkali dijelaskan bahwa Delphi masih memiliki masa depan yang sangat baik dengan fleksibilitasnya, namun kenyataannya kecemasan itu tetap muncul secara acak.

Hal ini tentunya pula merupakan oportunity bagi kompetitor lain untuk mengisi kekosongan tersebut dengan menawarkan produk mereka untuk digunakan dalam pengembangan aplikasi. Yang saya lihat sendiri sudah ada beberapa yang pernah mencoba untuk memanfaatkan oportunitas ini untuk kepentingan bisnis mereka, RealSoftware dengan RealBASIC-nya, dan baru-baru ini, tidak ketinggalan pula, microsoft dengan VisualStudio-nya. Lihat saja salah satu penjelasannya:

Visual Basic is the right language, and Visual Studio the right tool, for building Windows and web based applications rapidly.
Visual Studio Information for Borland Delphi Developers

Padahal, sesungguhnya VB sama sekali tidak match dalam hal fitur dan kapabilitas jika dibandingkan dengan Delphi. <<–sigh–>>

Mempercepat Operasi Input / Output Teks di FreePascal

March 29, 2006 at 8:31 pm | Posted in ACM Contest, Code Samples | 12 Comments

By: Mpu Gondrong

Penjurian program dalam kontes ACM sepenuhnya menggunakan mesin. Secara sederhana setiap program yang dikirim akan diuji dengan serangkaian input untuk kemudian dicek apakah output yang dihasilkan sudah sesuai. Penyusunan peringkat program terbaik didasarkan pada waktu eksekusi yang tercepat. Secara teknis program penjurian menggunakan NetJudge, berjalan di atas Linux, menggunakan prosesor Pentium III dan memory 1024 MByte.

Mengingat pentingnya waktu dalam penjurian, kita akan melihat bagaimana sebenarnya unjuk kerja dari Free Pascal dalam menangani teks. Dalam uji coba digunakan prosesor Intel Pentium 4 2,80GHz dan memory 2048 MByte. Sedangkan untuk file teks yang digunakan berupa angka ganjil antara 1 s/d 999999 (500.000 baris). Untuk mengukur waktu program berjalan digunakan time yang tersedia di kebanyakan Linux.

Dalam Free Pascal untuk membaca Input dan Output cukup menggunakan Readln dan Writeln. Ketika program dijalankan sistem operasi akan mengaktifkan 3 file descriptor, yaitu Input, Output dan Error yang masing-masing bernilai 0, 1 dan 2. Dengan fasilitas pengalihan tujuan (redirector) maka input, output, dan error ini bisa diarahkan dari / ke file, misalnya <input atau >output.

Continue Reading Mempercepat Operasi Input / Output Teks di FreePascal…

Factorial Factors

March 28, 2006 at 5:29 pm | Posted in ACM Contest, Code Samples | 15 Comments

by: Mpu Gondrong

Pada kesempatan kali ini kita akan membahas soal ACM vol 8 no. 884 yaitu Factorial Factors. Tujuan dari soal ini adalah kita mencari berapakah jumlah maksimal faktor pembentuk dari angka yang ditentukan.

Dari ilustrasi pada soal:

8! = 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 
   = 2 . 3 . 2 . 2 . 5 . 3 . 2 . 7 . 2 . 2 . 2 
   = jumlah 11.

Soal ini cukup menarik karena rentang waktu hasil program cukup bervariasi dan cakupan angka yang terlibat cukup besar (1 juta). Bila penghitungan waktu terlalu rapat, atau bahkan 0:00:00, kontes menjadi tidak menarik karena siapa yang mengerjakan duluan maka dialah yang menempati peringkat atas.

Awalnya

Lewat oret-oretan sederhana di kertas, kita mendapatkan suatu pola, yaitu dari suatu bilangan kita bagi saja bilangan tersebut dengan bil prima hingga tidak bisa dibagi lagi alias berakhir dgn bil prima. Jumlah banyaknya pembagian itu adalah jumlah maksimal faktor pembentuk angka tersebut.

Continue Reading Factorial Factors…

Direct Text Printing

March 28, 2006 at 4:24 pm | Posted in Code Samples, Components | 154 Comments

by: Bee

Mencoba menjawab masalah pencetakan mode teks secara langsung (raw/direct text printing) yang sempat dibahas di milis Delphindo beberapa hari yg lalu, saya mencoba memberikan solusinya berupa komponen Delphi. Komponen ini bernama TRAWPrinter. Awalnya komponen dibuat oleh Przemyslaw Jankowski (v.1.0) yg hanya berisi fungsi2 dasar pencetakan teks di win32. Kemudian saya kembangkan sedemikian rupa sehingga bisa digunakan lebih mudah dan mendukung pencetakan ke IBM Passbook dan Epson LX series printer secara built-in. Sebenarnya komponen ini udah saya buat dan pake sejak tahun 2002 untuk pencetakan kwitansi ke IBM Passbook printer (v.1.2). Kemudian beberapa hari yg lalu saya tambahkan dukungan pencetakan ke Epson LX series di v.1.5 ini.

Berbeda dengan solusi umum pencetakan teks yg menggunakan cara mengirim teks langsung ke port printer (LPT1:), TRAWPrinter mengirim teks ke spooler printer di Windows. Akses ke spooler printer dari Delphi telah disediakan melalui unit WinSpool (unit standar). Keuntungan dari metode ini adalah printer yg kita tuju tidak harus terpasang di port LPT1:, printer yg terpasang di port lain pun (serial, USB, dlsb) tetap bisa diakses. Bahkan printer yg terpasang di jaringan (shared printer) juga bisa diakses dgn cara yg sama. Pengiriman data ke printer yg dituju adalah menjadi tugas dari spooler printer. Sehingga aplikasi di 2 komputer (atau lebih) bisa menggunakan 1 printer secara bersama-sama, dgn memanfaatkan printer sharing. Menarik bukan? 🙂

Continue Reading Direct Text Printing…

Animasi 2D dengan Direct3D (3)

March 28, 2006 at 4:03 pm | Posted in Code Samples | 1 Comment

by: Zamrony P Juhara

OK… kita lanjutkan dengan topic berikutnya, masih mengenai animasi 2D tentunya. Pada contoh aplikasi yang kita buat sebelumnya, karakter selalu digambar pada background polos. Pada game, background seperti ini tentunya sangat membosankan. Game 2D biasanya memiliki background yang discroll otomatis mengikuti pergerakan karakter dalam game. Pertanyaannya sekarang, bagaimana menampilkan background yang dapat discroll tersebut?

Sebelum menjawab partanyaan tersebut, kita perlu sedikit mengulas beberapa isu yang sedikit banyak akan mempengaruhi bagaimana desain background scroller yang akan kita buat.

Memory, barang mewah yang tidak selalu kita punya.

Background pada sebuah game terutama game-game bertipe petualangan, biasanya selalu lebih besar dari area layar, guna memberikan pemain kebebasan untuk mengekplorasi suatu level game. Jika seluruh background yang besar tersebut kita, simpan dalam sebuah blok memori yang besar (baik itu system RAM atau video RAM), ada kemungkinan memori bebas yang tersedia tidak cukup besar untuk menampung data seluruh background tersebut.

Continue Reading Animasi 2D dengan Direct3D (3)…

Deteksi status tombol INSERT

March 24, 2006 at 6:19 pm | Posted in Code Samples | 1 Comment

Diambil dari blog IwanCS

Kita dapat mengetahui status tombol CAPS Lock, NUMS Lock atau SCROLL Locks dari lampu indikator pada semua keyboard. Namun bagaimana kita bisa mendeteksi status tombol INSERT apakah mode insert sedang aktif atau tidak.

Trik berikut ini dapat mendeteksi status tombol tersebut:

function IsInsertKeyOn: boolean;
begin
  Result := Odd (GetKeyState(VK_INSERT));
end;

Continue Reading Deteksi status tombol INSERT…

Memonitor Event Web Browser

March 21, 2006 at 3:04 pm | Posted in Code Samples | Leave a comment

by: Zamrony P Juhara

Di artikel kali ini saya akan membahas mengenai cara mengetahui event-event yang terjadi pada web browser. Artikel ini saya tulis untuk menjawab pertanyaan Johan Max di milis Delphindo mengenai bagaimana mendeteksi link pada suatu dokumen HTML diklik dan bagaimana mendeteksi URL yang dituju. Tentunya dengan menggunakan tool favorite kita semua..Delphi.

Tutorial ini hanya mengasumsikan browser web adalah IE, untuk browser lain, cara ini mungkin tidak bekerja.

Source code bisa didownload di sini

Continue Reading Memonitor Event Web Browser…

Animasi 2D dengan Direct3D (2)

March 20, 2006 at 2:37 pm | Posted in Code Samples, Tutorials | Leave a comment

by: Zamrony P Juhara

Pada tutorial sebelumnya, mungkin anda bertanya, bagaimana menampilkan karakter yang menghadap kekanan sehingga tampil sebaliknya (menghadap kekiri) atau yang sering disebut mirror.Apakah harus membuat dua gambar (kiri dan kanan) untuk tiap frame animasi?

Tentu saja tidak perlu memboroskan memori, untuk menghasilkan efek mirror ini. Tidak terlalu susah, anda hanya perlu sedikit memahami proses transformasi penskalaan dan translasi. Misal kita punya variabel berikut

var scale:TD3DXVector2;

jika kita isi scale:

scale.x:=1;
scale.y:=1;

maka poligon sprite akan ditampilkan apa adanya karena perkalian dengan satu menghasilkan bilangan itu sendiri. Jika kita set scale dengan bilangan lebih dari satu, poligon akan diskala sesuai isi masing-masing sumbu.

scale.x:=2;
scale.y:=1.5;

jika poligon sprite sebesar 100×100, maka setelah transformasi poligon akan menjadi 200×150. Sprite kan tampak stretched. Hal menarik terjadi bila kita isi x atau y atau keduanya dengan bilangan negatif. Sprite akan ditampilkan terbalik.

Jika scale kita isi dengan

scale.x:=-1;
scale.y:=1;

maka akan tampak bahwa sprite di cerminkan horizontal dengan garis pencerminan ada pada (0,0) hingga (0,Height) dan bila kita set dengan

scale.x:=1;
scale.y:=-1;

sprite dicerminkan vertikal dengan garis pencerminan ada pada (0,0) hingga (0,Width).

OK, silakan saja download source codenya disini.

Happy coding!

Next Page »

Blog at WordPress.com.
Entries and comments feeds.