Minggu, 2009 Juni 21

Jam-jam-an

Iseng-iseng ngoprek-ngoprek coding Open GL dari pak Joko yang didownload dan dimodif dari NeHe, tentang buat jam dan juga ditambah sama hari dan bulan. Penunjuk hari sama bulan juga pakai jarum. He..he..he.. Sebenarnya ini tugas mata kuliah komputer grafik. Klo ada mahasiswanya pa Joko yang nemu yah tinggal dimodif doang kan.
Nih screenshotnya.



Merah ==> Detik
Hijau ==> Menit
Biru ==> Jam
Kuning ==> Hari
Ungu ==> Bulan

Ini kodenya

//
// This code was created by Jeff Molofee '99 (ported to Linux/GLUT by Richard Campbell '99)
//
// If you've found this code useful, please let me know.
//
// Visit me at www.demonews.com/hosted/nehe
// (email Richard Campbell at ulmont@bellsouth.net)
//
#include // Header File For The GLUT Library
#include // Header File For The OpenGL32 Library
#include // Header File For The GLu32 Library
#include // Header File For sleeping.
#include

/* ASCII code for the escape key. */
#define ESCAPE 27
int sh, mh, hh;
float s, m, h, d, mo;
time_t rt;
struct tm * ti;

/* The number of our GLUT window */
int window;

/* rotation angle for the hands. */
float rts = 0.0f;
float rtm = 0.0f;
float rth = 0.0f;
float rtd = 0.0f;
float rtmo = 0.0f;




/* A general OpenGL initialization function. Sets all of the initial parameters. */
void InitGL(int Width, int Height) // We call this right after our OpenGL window is created.
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // This Will Clear The Background Color To Black
glClearDepth(1.0); // Enables Clearing Of The Depth Buffer
glDepthFunc(GL_LESS); // The Type Of Depth Test To Do
glEnable(GL_DEPTH_TEST); // Enables Depth Testing
glShadeModel(GL_SMOOTH); // Enables Smooth Color Shading

glMatrixMode(GL_PROJECTION);
glLoadIdentity(); // Reset The Projection Matrix

gluPerspective(0.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f); // Calculate The Aspect Ratio Of The Window

glMatrixMode(GL_MODELVIEW);
}

/* The function called when our window is resized (which shouldn't happen, because we're fullscreen) */
void ReSizeGLScene(int Width, int Height)
{
if (Height==0) // Prevent A Divide By Zero If The Window Is Too Small
Height=1;

glViewport(0, 0, Width, Height); // Reset The Current Viewport And Perspective Transformation

glMatrixMode(GL_PROJECTION);
glLoadIdentity();

gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f);
glMatrixMode(GL_MODELVIEW);
}

/* The main drawing function. */
void DrawGLScene()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer
glLoadIdentity();
glTranslatef(-40.0f,0.0f,-90.0f);
glRotatef(rts,0.0f,0.0f,1.0f);
glBegin(GL_POLYGON);
glColor3f(1.0f,0.0f,0.0f);
glVertex3f(0.0f, 15.0f, 2.0f);
glColor3f(1.0f,0.0f,0.0f);
glVertex3f(-1.0f,0.5f, 2.0f);
glColor3f(1.0f,0.0f,0.0f);
glVertex3f(1.0f,0.5f, 2.0f);
glEnd();

glLoadIdentity();
glTranslatef(-20.0f,0.0f,-90.0f);
glRotatef(rtm,0.0f,0.0f,1.0f);
glBegin(GL_POLYGON);
glColor3f(0.0f,1.0f,0.0f);
glVertex3f( 0.0f, 10.0f, 1.0f);
glColor3f(0.0f,1.0f,0.0f);
glVertex3f( 2.0f,-2.0f, 1.0f);
glColor3f(0.0f,1.0f,0.0f);
glVertex3f(-2.0f,-2.0f, 1.0f);
glEnd();

glLoadIdentity();
glTranslatef(0.0f,0.0f,-90.0f);
glRotatef(rth,0.0f,0.0f,1.0f);
glBegin(GL_POLYGON);
glColor3f(0.0f,0.0f,1.0f);
glVertex3f( 0.0f, 5.0f, 0.0f);
glColor3f(0.0f,0.0f,1.0f);
glVertex3f( 2.0f,-2.0f, 0.0f);
glColor3f(0.0f,0.0f,1.0f);
glVertex3f(-3.0f,-3.0f, 0.0f);
glEnd();

glLoadIdentity();
glTranslatef(20.0f,0.0f,-90.0f);
glRotatef(rtd,0.0f,0.0f,1.0f);
glBegin(GL_POLYGON);
glColor3f(1.0f,1.0f,0.0f);
glVertex3f(0.0f, 15.0f, 2.0f);
glColor3f(1.0f,1.0f,0.0f);
glVertex3f(-1.0f,0.5f, 2.0f);
glColor3f(1.0f,1.0f,0.0f);
glVertex3f(1.0f,0.5f, 2.0f);
glEnd();

glLoadIdentity();
glTranslatef(40.0f,0.0f,-90.0f);
glRotatef(rtmo,0.0f,0.0f,1.0f);
glBegin(GL_POLYGON);
glColor3f(1.0f,0.0f,1.0f);
glVertex3f(0.0f, 15.0f, 2.0f);
glColor3f(1.0f,0.0f,1.0f);
glVertex3f(-1.0f,0.5f, 2.0f);
glColor3f(1.0f,0.0f,1.0f);
glVertex3f(1.0f,0.5f, 2.0f);
glEnd();

time(&rt);
ti = localtime(&rt);
if (sh != ti->tm_sec)
{
s = ti->tm_sec;
rts = -6.0f*s;
m = ti->tm_min;
rtm = -6.0f*m;
h = ti->tm_hour;
rth = -30.0f*h+-30*m/60;
d = ti->tm_mday;
rtd = -(360.0f/7.0f)*d;
mo = ti->tm_mon;
rtmo = -30.0f*mo;
}
sh = ti->tm_sec;





// swap the buffers to display, since double buffering is used.
glutSwapBuffers();
}

/* The function called whenever a key is pressed. */
void keyPressed(unsigned char key, int x, int y)
{
/* sleep to avoid thrashing this procedure */
usleep(100);

/* If escape is pressed, kill everything. */
if (key == ESCAPE)
{
/* shut down our window */
glutDestroyWindow(window);

/* exit the program...normal termination. */
return 0;
}
}

int main(int argc, char **argv)
{
/* Initialize GLUT state - glut will take any command line arguments that pertain to it or
X Windows - look at its documentation at http://reality.sgi.com/mjk/spec3/spec3.html */
glutInit(&argc, argv);

/* Select type of Display mode:
Double buffer
RGBA color
Alpha components supported
Depth buffer */
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH);

/* get a 640 x 480 window */
glutInitWindowSize(1024, 748);

/* the window starts at the upper left corner of the screen */
glutInitWindowPosition(0, 0);

/* Open a window */
window = glutCreateWindow("Hasil Modifikasi Jam");

/* Register the function to do all our OpenGL drawing. */
glutDisplayFunc(&DrawGLScene);

/* Go fullscreen. This is as soon as possible. */
glutFullScreen();

/* Even if there are no events, redraw our gl scene. */
glutIdleFunc(&DrawGLScene);

/* Register the function called when our window is resized. */
glutReshapeFunc(&ReSizeGLScene);

/* Register the function called when the keyboard is pressed. */
glutKeyboardFunc(&keyPressed);

/* Initialize our window. */
InitGL(1024, 748);

/* Start Event Processing Engine */
glutMainLoop();

return 1;
}

Keluar Dari Lubang Jarum (2)

Waktu saat itu hampi menunjukkan pukul 11.30 malam ketika saya melihat jam tangan yang masih menempel di tangan kiri saya. Kami berempat sengaja pindah ke balkon belakang. Walaupun agak sempit, tapi cukup untuk kami berempat menikmati jagung rebus dari Lupi. Kami berkelakar tentang segala sesuatu yang terlintas di benak dengan suara sedikit berbisik. Karena kami sadar betul perbuatan yang kami lakukan adalah perbuatan ilegel di asrama kami, dan kami juga tidak ingin mengganggu adik kelas kami yang berada di kamar Humed.
Malam itu cukup dingin dan berangin kering, karena posisi sekolah dan asrama kami yang dekat dengan gunung dan laut. Mulut akan terasa cepat kering di malam itu. Untungnya filter air di kamar Humed dapat berfungsi dengan baik, sehingga kami tidak susah-susah mencari air.
Lama-lama jagung itu habis juga, mataku terasa sudah cukup berat untuk melawan ngantuk. Tapi ketiga temanku tampaknya masih semangat untuk membicarakan oot-nya. Tanpa banyak bicara saya langsung permisi sebentar kepada ketiga temanku untuk merebahkan diri di ruang belajar. Humed dengan ikhlas menawarkan ranjangnya untuk saya rebahan disana, tapi saya menolak. Akhirnya saya merebahkan badan saya di ruang belajar, tepatnya di samping bawah meja belajar, sehingga jika ada orang masuk dari pintu saya tidak begitu terlihat.
Tanpa sadar, sepertinya saya telah masuk kedalam alam bawah sadar saya. Tapi seketika itu saya terbangun, dengan suara yang menyerupai benda jatuh. Disntsts sadar dan tidak, saya juga mendengar suara seseorang yang saya kenal berada di dalam kamar Humed. Suara itu sering terdengar sebagai mc (master of ceremony) ketika ada acara-acara besar yang diadakan sekolah kami, seperti datangnya tamu-tamu khusus (menteri, gubernur, pejabat daerah, tokoh masyarakat, dll), acara 1 Muharram, dan acara khusus lainnya.

Suara siapakah itu?????

Sabtu, 2009 Juni 20

Keluar dari Lubang Jarum

Ini adalah kisah nyata pengalaman pribadi gue sewaktu sma.

Malam itu adalah malam Jum'at. Seperti biasa, disekolah kami yang menggunakan sistem berasrama diadakan sebuah acara untuk melatih siswanya berbicara didepan umum, biasanya di kenal dengan pidato. Singkat cerita, saya dan teman sekelas saya keluar dari gedung sekolah menuju asrama masing-masing setelah acara pidato tersebut. Walaupun kami sekelas, tidak menjamin kami akan tinggal sekamar, karena sistem pembagian kamar di sekolah saya diacak. Ada yang tinggal dengan teman seangkatan, dan ada yang tinggal dengan adik kelas, dimana si kakak kelas menjadi wali kamar. Kebetulan saya, dipercaya menjadi wali kamar bagi adik kelas saya.
Setelah menempuh perjalanan kira-kira 500 m, akhirnya saya sampai di asrama. Saya dan teman-teman berpencar menuju kamar masing-masing. Kamar saya berada di lantai 5, dan bernomor 23. Ketika saya sampai kamar, lampu kamar saya telah padam. Ini menandakan bahwa adik kelas yang sekamar dengan saya telah tidur semua. Maklum, adik kelas saya belum biasa tidur hanya 4-5 jam saja, sedangkan diusia mereka yang setingkat SMP seharusnya tidur antara 7-8 jam. Saya masuk kamar, berganti pakaian dan mencoba merebahkan badan di tempat tidur. Tapi mata saya tidak terasa berat sama sekali, padahal tidak ada sesuatu yang saya pikirkan, karena besok adalah hari libur di sekolah saya.
Akhirnya saya memutuskan untuk pergi ke kamar teman saya yang bernama Kunaidi. Dia teman selantai saya, dan juga menjadi wali kamar, tapi tidak sekelas dengan saya. Dia orangnya easy going dan mudah bergaul dengan siapa saja, maka tidak heran kalau di banyak sekali teman-teman yang berkunjung walaupun hari sudah cukup malam. Di sekolah kami terdapat peraturan yang mengharuskan seluruh siswa untuk mematikan lampu pada pukul 11 malam paling lambat. Tapi di kamar Humaidi ini lampu masih menyala walaupun hampir jam 11 malam. Ketika saya masuk di kamarnya sudah terdapat Kamil, Daen dan Lupi. Mereka sedang asik mendiskusikan tentang acara yang akan mereka lakukan besok pada waktu libur di ruang belajar. Saking serunya, mereka tidak menyadari kedatangan saya. Tapi, tiba-tiba Humet (panggilan akrab Humaidi), datang dari arah ruang tidur dan menyapa saya dengan logat sundanya yang khas "eh Nang, tumben kesini, aya naon atuh?".
Padahal ada larangan untuk menggunakan bahasa daerah di sekolah saya, tapi Humed masa bodo dengan peraturan itu, karena ga ada guru-guru yang berseliweran di sekitar kamarnya. Oh iya kamar Humed adalah kamar yang strategis untuk tempat kumpul, karena letaknya di pojok gedung dan sedikit susah dipantau dari kamar guru piket. Kamarnya nomor 1 di lantai yang sama dengan kamar saya.
"Ngga ada apa med, cuma pengen jalan-jalan aja, lagi susah tidur nih!", seru saya."Ya udah disini aja, anak-anak katanya pada mo begadang sambil makan jagung rebus nih", balasnya dengan akrab, "oh, jagung dari mana?", "Tadi si Lupi dapat dari babenya, kan tadi babenya datang kesini. Kayanya dompetnya lagi tebel juga tuh nang.".
"Ah elo med. bisa aja, iya nang disini aja!", tiba-tiba Lupi mengeluarkan suaranya sejenak meninggalkan diskusinya dengan kedua temannya.
Oke juga sih saya pikir tawaran dari mereka. Sekali-kali boleh juga lah melanggar sedikit peraturan yang ada, kan klo hidup ini mulus-mulus aja ga ada polisi tidurnya kan ngga enak juga. Akhirnya saya menyetujui tawaran meraka.

Bersambung dulu ya.....

Kamis, 2009 Juni 18

Koneksi PHP dengan Oracle

Ini tutorial untuk mengkoneksikan antara PHP dengan Oracle. PHP yang digunakan adalah versi 1.6.xx dan Oracle menggunakan Oracle Data Base 10g XE. Untuk konesi PHP dan Oracle menggunakan TOAD akan di publish minggu depan. Silahkan Download di bawah:

KoneksiPHP_Oracle

Selamat Mencoba-coba.

Selasa, 2009 April 14

Kompilasi Silang Untuk Familiar Linux di Qemu

Ini penelitian yang bikin gue lewati sebuah fase dalam hidup. Dan hasilnya memuaskan, Alhamdulillah. Terima kasih pertama-tama untuk Allah SWT, orang tua, dan khususnya kepada Pak Abdusy Syarif, sebagai pembimbing, pemotivasi, penyemangat, panutan, dan kakak yang baik hati.

Ini adalah abstraksi yang saya tulis.

Pada sistem operasi kecil, seperti Linux Familiar yang diinstal di Pocket PC memiliki keterbatasan media penyimpanan. Ini menyebabkan pengurangan paket yang ada di dalamnya. Salah satu paket yang dikurangi adalah gcc, yang merupakan kompilator dasar di linux. Hal ini menyebabkan penambahan paket baru menjadi susah, karena kebanyakan paket yang baru disediakan dalam bentuk tar.gz (tarball), dan harus dikompilasi dengan gcc.
Salah satu cara untuk penambahan paket baru berekstensi tar.gz ke Familiar linux adalah dengan cara kompilasi silang. Kompilasi silang yang dilakukan pada penelitian ini hanya sebatas untuk merubah paket tar.gz tersebut menjadi .so dan .o serta file biner jika ada. Juga mencoba untuk mengkompilai silang source code dalam bahasa C/C++.
Kompilasi silang dilakukan dengan kompilator silang, seperti monmotha, arm-linux-gcc, dan gcc cross compiler. Dari ketiga kompilator silang tersebut, hanya gcc cross compiler yang berhasil melakukan kompilasi silang, baik kompilasi di komputer host ataupun saat eksekusi di komputer target. Sedangkan untuk monmotha dan arm-linux-gcc hanya mampu mengkompilasi di komputer host saja, sedangkan eksekusi di komputer target gagal. Hal ini disebabkan karena arsitektur mesin yang dipakai Linux Familiar yang diinstal di emulator berbeda dengan arsitektur mesin tujuan kompilator tersebut.
Kompilator silang ini diharapkan mampu memutakhirkan Familiar Linux. Dan dari hasil penelitian, akan lebih baik jika dapat dikembangkan kompilator silang dengan banyak arsitektur mesin.


Salam Open Source

Minggu, 2008 Desember 07

Fun Bike Memperingati hari Aids Se-dunia

Minggu 30 November 2008, hari yang melelahkan, menyenangkan dan menambah pengalaman. Saya mengikuti fun bike dalam rangka memperingati hari Aids sedunia. Acara diadakan di parkir timur Senayan. Ada banyak peserta yang bersepeda, mungkin sekitar 5000 sepeda, bahkan bisa lebih. Tidak hanya pesepeda (fun bike) tapi ada juga fun walk. Temanya "Yang Muda yang Membuat Perubahan" klo ga salah.

Untuk rute yang akanditempuh adalah Senayan ke Monas lalu balik lagi ke Senayan. Cukup lumayan juga, tapi enak jalanan tidak ada mobil, karena lagi car free day.

Saya bareng dengan rombongan dari btw ciledug. Sebenarnya saya ikut karena diajak sama mas arif, karena mas arif dah tergabung dengan btw ciledug.

Saya pake sepeda Giant, yang harganya 3.5 jt. Gila mahal amat ya, klo saya mah mendingan dibeliin laptop deh. He..he..he.. berhubung dikasih ya udah terima aja.

Kemudian acara hiburan sambil nungguin door prize. Tapi sayang ga dapat apa-apa. Ya udah pulang aja sekitar jam 2 siang. Tapi yang pasti dapat pengalaman baru.

Salam Goes.

Rabu, 2008 November 19

Koneksi Internet IM2 dengan hp 3g Sebagai modem via Bluetooth di Mandriva 2008.0

Ini ada hasil nyoba-nyoba buat koneksi internet IM2 dengan hp 3g sebagai modem via bluetooth. Via bluetooth saya pakai dibandingkan dengan via kabel data, karena saya tidak ingin terlalu sering cabut-lepas kabel data baik dari hp 3g (saya menggunakan SE K618i) maupun pc. Lalu kata orang klo pakai kabel data, hp sering terjadi induksi listrik. Klo dipegang berasa strum dengan voltase yang kecil, serasa digigit semut.
Pertama-tama install bluetooth di pc. Di mandriva bluetooth sudah langsung terdetek, tinggal tambahkan paket kbluetooth, rfcomm, hcitool. Biasanya dari MCC sudah langsung nawarin paket-paket yang tergantung (independecies) sama paket yang ingin diinstall.
Jangan lupa juga tambahkan paket untuk internet dialer (ex: wvdial, kppp, gnomeppp). Saya menggunakan kppp untuk internet dialernya, karena mencari wvdial di package list tidak ada.
Setelah bluetooth di pc dan bluetooth di hp sudah terpasang dan terinstalasi dengan baik, saatnya konfigurasi. Koneksikan hp dengan bluetooth terlebih dahulu. Lakukanlah perintah
# hcitool scan
Scanning.........
00:19:68:75:KL:11 mybluetooth

Jika muncul seperti diatas maka, add bluetooth pc dari hp. Biasanya dari my device di hp. Bila minta konfirmasi passcode, masukkan passcode yang sama antara hp dan pc.
Selanjutnya mengecek apakah hp dapat terkoneksi ke internet. Ini dilakukan dengan perintah
# sdptool search DUN
Inquiring..........
Searching for DUN on 00:19:68:75:KL:11
Service Name: Dial-up Networking
Service RecHandle: 0x10001
Service Class ID List:
“Dialup Networking” (0x1103)
“Generic Networking” (0x1201)
Protocol Descriptor List:
“L2CAP” (0x0100)
“RFCOMM” (0x0003)
Channel: 2
Profile Descriptor List: “Dialup Networking” (0x1103)
Version: 0x0100

Jika tampilan seperti diatas maka dial-up bisa dilakukan. Setelah itu, edit file rfcomm.conf yang ada di /etc/bluetooth dengan perintah :
# vim /etc/bluetooth/rfcomm.conf

Ubah file rfcomm.conf menjadi seperti berikut :
rfcomm0 {
bind yes;
#sesuaikan dengan alamat bluetotth hp kamu, 00:19:68:75:KL:11 adalah alamat
#bluetooth saya sesuai dengan hasil perintah 'hcitool scan'
device 00:19:68:75:KL:11;
#channel disesuaikan dengan channel yang terdapat di list ketika melakukan perintah “sdptool search DUN”
channel 2;
comment “Bluetooth Modem”;
}
Setelah itu lakukan binding agar bluetooth dianggap sebagai interface jaringan dengan perintah :
# rfcomm bind 0 00:19:68:75:KL:11 2
penjelasannya sebagai berikut. 0 adalah urutan interface, dan angka 2 pada akhir perintah menunjukkan channel.
Jika kita mengetikkan perintah 'rfcomm' maka tampilan akan seperti ini :
# rfcomm
rfcomm0 : 00:19:68:75:KL:11 channel 2 clean

Pastikan terdapat kata 'clean' jika terdapat kata 'closed' maka restart bluetooth dengan perintah :
# /etc/init.d/bluetooth restart

Selanjutnya membuat koneksi dial-up menggunakan KPPP. Langkah-langkahnya di Mandriva 2008.0 adalah sebagai berikut :
1.Buka kppp dari Menu --> Tools --> System Tools --> Kppp
2.Klik tombol Configure

3.Kemudian pilih New.
4.Lengkapi Form seperti gambar di bawah

5.Setelah selesai tekan 'OK' kemudian pindah ketab 'Modems'

6.Tekan tombol 'New' dan setting sebagai berikut :

7.Setelah itu pindah ke tab 'Modem' dan Tekan 'Modem Commands...'
8.Edit sesuai gambar dibawah

9.Setelah itu tekan OK
10.Setelah itu masukkan userId Indosatm2 anda beserta passwordnya

11.Pastikan koneksi antara bluetooth PC Anda dengan bluetooth HP Anda sudah terkoneksi, jika sudah maka tekan “Connect”.
12.Bila terdapat kegagalan coba ulangi langkah demi langkah dengan teliti.

Selamat Berinternet Ria.
Salam Open Source.