Minggu, 21 Juni 2009

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, 20 Juni 2009

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, 18 Juni 2009

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.