sekilas python dan cgi

Untuk membuat web applikasi, kita dapat menggunakan bahasa pemrograman apa saja, kita dapat menggunakan bahasa perl, php, java, atau python. Yang akan kita bicarakan kali ini adalah membuat web applikasi dengan menggunakan python.

Untuk membuat web applikasi dengan menggunakan python ada beberapa jalur/pilihan yand diambil:

  • cgi
  • mod-python (bila menggunakan apache)
  • wsgi
  • python application server

pada posting kali ini, yang akan dibahas lebih lanjut adalah cgi, karena cgi adalah metode yang paling tua dan paling sederhana ( meskipun bisa dikatakan pling merepotkan).

CGI ::
cgi merupakan singkatan dari common gateway interface. cgi merupakan protokol untuk menghubungkan antara server dan client. Kita bisa menggunakan bahasa apapun selama bahasa pemrograman itu sudah terdapat di server.

contoh sebuah script cgi dengan menggunakan python


#!/usr/bin/python

print "Content-Type:plain/text\r\n"
print "Hello World"


disave di folder cgi-bin anda (bila menggunakan ubuntu+apache terdapat di folder /usr/lib/cgi-bin/). dan beri mode eksekusi.
mari kita bahas baris perbaris.

baris 1: merupakan perintah shebang pada linux, yang menyatakan program yang digunakan untuk mengeksekusi script.
baris 3: perintah menulis header
baris 4: perintah untuk menulis content.

Form

Untuk menghandle form, yang kita butuhkan hanya class FieldStorage
dari module cgi.

form = cgi.FieldStorage()

misal ada sebuah halaman form:

Name:


maka untuk process script adalah sebagai berikut

import cgi
form = cgi.FieldStorage() # instantiate only once!
nama = form.getfirst('nama', 'empty')

# Avoid script injection escaping the user input
nama = cgi.escape(nama)

print """\
Content-Type: text/html\n

Nama anda adalah "%s"

""" % nama

method getFirst akan mengembalikan nilai pertama dari forms,
bila terdapat lebih dari satu form, maka nilai pengembalian adalah
nilai pertama. Dan sebalikanya bila tidak terdapat form dengan nama
yang dicari, maka nilai dari kembalian adalah None

Bila dalam satu forms, terdapat form dengan nama yang sama (misalnya
check box) maka kita dapat mengetahui nilainya dengan menggunakan
method getList

Cookie

Cookie berperan sangat penting dalam pengembangan aplikasi web, karena
cookie dapat membantu dalam menyimpan State dari web
aplikasi.
Untuk pengolahan cookie, dapat secara manual, dalam arti membaca
header dari HTTP, atau juga kita dapat menggunakan module Cookie, yang
merupakan wrapper dari pembacaan cookie secara manual.
Paling tidak ada 2 hal yang harus dimengerti ketika akan
menggunakan cookie di python-cgi.

Menyimpan/Mengirim Cookie

Mari kita lihat langsung contoh script untuk menyimpan cookie, secara manual..

#!/usr/bin/python

import time

print "Set-Cookie:last-visit="+str(time.time())
print "Content-Type:plain/html \r\n"

#print the content
print ""
print "Hello World"
print ""

dan apabila kita menggunakan module Cookie.

#!/usr/bin/python

import time
import Cookie

cookie = Cookie.SimpleCookie()
cookie['last-visit'] = str(time.time())
print cookie
print "Content-Type:plain/html \r\n"

#print the content
print ""
print "Hello World"
print ""

Gampang dan mudah :).

Membaca Cookie

Berikut ini adalah contoh untuk membaca cookie dengan Module Cookie.

import Cookie
import cgi

cookie_string = cgi.os.environ.get('HTTP_COOKIE')
if not cookie_string:
print "Belum ada Cookie atau Cookie tidak didukung"
else:
cookie = Cookie.SimpleCookie()
cookie.load(cookie_string)
value = cookie['lastvisit'].value

….&*&^^…..

I am tired

I am burned out

I am exhausted

I am wasted

Kayaknya emang butuh liburan deket2 ini, tapi hmmm…. haduh2 gak sempet kayaknya :(,

butuh suasana baru……

XSLT Mania

Beberapa fakta tentang XSLT

  1. Apa it XSLT?
    XSLT singkatan dari eXtensible Stylesheet Languange Translation, Menurut http://w3.org, XSLT adalah bahasa yang dibuat untuk mentransformasikan sebuah dokument XML menjadi dokumen XML lainnya, sebagai contoh merubah SVG menjadi XHTML atau sebaliknya. XSLT sendiri adalah sebuah XML dokumen yang didalamnya terdapat element2 yang dapat diterjemahkan menjadi perintah2 transformasi, Lalu siapa yang menterjemahkan element2 XML menjadi perintah2, hal itu adalah tugas dari XSLT processor, contoh dari XSLT processor adalah Apache XALAN atau SAXON. Untuk belajar XSLT kita juga harus terlebih dulu mengenal XPATH (bahasa untuk mereferensikan/menunjukan elemen-elemen dari dokumen XML)

  2. Kapan harus menggunakan XSLT?
    Menurut hemat saya, XSLT digunakan bila kita ingin mentransformasikan sebuah XML dokumen kedalam bentuk dokumen lainya secara otomatis (bayangkan bila ada 100 dokumen yang ingin kita rubah).

  3. Dimana specification XSLT?
    http://www.w3.org/TR/xslt

  4. Pendapat pribadi tentang XSLT?
    Secara personal saya benci XSLT (dan juga ide lain yang menggunakan XML selain untuk merepresentasikan data), alasan saya untuk tidak menyukai XSLT adalah tidak scalable, susah untuk melakukan debugging /tracing apakah hal/perintah yang kita lakukan benar . Sangat tidak nyaman untuk membuat XSLT dokumen. :(,

  5. Alternatif XSLT
    Sejauh ini belum menemukan alternatif dari XSLT, jadi meskipun I hate it so much, Saya harus tetap memakai XSLT hehehehe….

Regression bug

Regression bug(apa ya istilah Indonesia-nya? ) adalah bug(serangga hauahahauaua :))) yang diakibatkan karena kita membetulkan sebuah bug yang lain. Kalo anda adalah seorang yang suka membuat program komputer (duh panjang banget ya terjemahan buat programmer /coder/software developer) dan anda membuat regression bug, selamat anda memang layak dapat bintang (:P), joke aside, bila saya pribadi membuat sebuah regression bug, wuah itu membuat hari saya tidak nyaman, saya merasa sangat bodoh, ceroboh, tolol, stupid, apalagi bila bug tersebut membuat software menjadi crash, hang dan useless atau bug itu diketemukan sehari setelah software diluncurkan/setelah edisi bug fixed, maka hal2 bodoh tadi pasti akan dirasakan berlipat.

Karena hal2 itu membuat saya merasa awfull, maka apakah ada hal2 yang dapat mencegah terjadinya bug regressoin, hmm… setelah berpikir sejenak dua jenak maka mungkin hal2 ini dapat menjadi saringan (buat anda yang jenius sehingga tidak pernah membuat RBB mungkin lebih baik membaca hal2 yang lain saja :)).

  • Test Unit (TU),anda dapat menggunakan JUNit, NUnit ataupun framework yang dibuat sendiri. TU akan mencegah anda untuk merusak software/program yang sudah ada, sehingga bila anda menambahkan sesuatu pada program anda, lalu jangan lupa menjalan TU untuk mengecek apakah ada bug2 baru yang ditimbulkan oleh baris program yang baru. TU adalah teman anda, you have to sleep with it, and breathe with it. :). Ada pertanyaan, "bagaimana kalo berhubungan dengan graphic/UI", hmm memang sulit membuat TU untuk graphics/UI meskipun ada beberapa framework untuk melakukan pengecekan UI, paling tidak kalo program anda susah untuk dibuat TU, buat sebuah check list apa saja yang harus anda lakukan sebelum melakukan check-in ke code repository.

  • Sewa Testing engineer yang bagus. Kalo misalnya tidak mampu, maka Test Unit adalah satu2nya senjata andalan anda ๐Ÿ™‚

Lalu apakah setelah 2 hal tadi dijalankan menjamin tidak adanya RB, maaf untuk ini mungkin jawabanya adalah tidak, tapi paling tidak anda tidak akan terlalu merasa tertekan dan membuat perasaaan sedikit lebih baik (emang ada hubungannya :P)

openGL dan basic

stumble around the web, membuat saya menemukan http://www.basic4gl.net, dari namanya sudah tertebak bahwa ini adalah salah satu varian dari bahasa basic. Lalu apa istimewanya? basic4gl adalah bahasa pemrograman yang merupakan turunan dari basic, sehingga mempunya sintaks2 yang mirip dengan basic, dan dan keistimewaan yang lain adalah didalamnya sudah built-in openGL v.1.1. how much does it cost? gak usah khawatir basic4gl gratis (meskipun saya belum menemukan licensenya apakah gpl atau lgpl atau yang lain).

Jadi untuk yang ingin belajar bahasa pemrograman yang mudah, atau ingin bereksperimen dengan openGL tanpa harus pusing2 dengan MFC ataupun win32 (btw kalo emang udah jago MFC dan win32 mending pake c/c++ lebih mantep guiitu) mungkin harus memperhitungkan untuk menggunakan basic4gl. O ya cuma kekurangannya adalah program ini hanya jalan di windows aja, jadi buat linuxer ataupun mac’s addict sorry ya.

Langkah2 apa aja yang harus dilakukan kalo ingin bermain main dengan basic4gl?

  1. download dari basic4gl

  2. Jalankan installer-nya

  3. mulai aja maen2

gampang kan? segampang 1..2..3.

contoh code untuk menggambar segitiga di basic4gl

glBegin(GL_TRIANGLES)
glVertex3f(0,10,-30)
glVertex3f(8,-4,-30)
glVertex3f(-8,-4,-30)
glEnd()
SwapBuffers()

dan klik run. akan muncul window dengan segitiga didalamnya.

jadi terpikir kalo ingin membuat sebuah aplikasi shareware, mungkin bisa menggunakan bahasa basic, karena learning curve lebih kecil (lebih gampang gitu) daripada menggunakan C/C++ ataupun delphi. dan bisa lebih cepat waktu yang dibutuhkan untuk menyelesaikan applikasi itu, Tapi mungkin tidak bisa menggunakan basic4gl, mungkin harus dicari varian basic yang lebih powerfull.

helllo, hi….

Hi, Hello…

Disini rumah baru saya, untuk menuangkan segala yang ada dipikiran, tentang apa saja yang akan/sudah terlintas di kepala. blog ini dikasih name inthegarage soalnya sederhana saja, waktu daftar blog ini sedang denger lagu in the garage by the one and only WEEZER. damn lagu ini bener2 ear catching banget, lagu ini terus berputar2 di kepala gak bisa hilang, apalagi melodi harmonikanya bener2 bagus, udah gitu ada referensi ke kiss ama x-men lengkap banget ya hehehe :).

Jadi untuk post yang pertama isinya hi dan llirik in the garage. mudah2an saya cukup tabah untuk terus mengisi blog ini heheh….. :a)

In The Garage

Weezer

I’ve got the Dungeon Master’s Guide.
I’ve got a 12-sided die.
I’ve got Kitty Pryde
And Nightcrawler too
Waiting there for me.
Yes I do, I do.

I’ve got posters on the wall,
My favorite rock group, KISS.
I’ve got Ace Frehley.
I’ve got Peter Criss
Waiting there for me.
Yes I do, I do

[chorus]
In the garage, I feel safe.
No one cares about my ways.
In the garage where I belong.
No one hears me sing this song.
In the garage.

I’ve got an electric guitar.
I play my stupid songs.
I write these stupid words
And I love every one
Waiting there for me.
Yes I do, I do.

[chorus]

In the garage. Neaarrah!

[chorus]

In the garage, I feel safe.
No one laughs about my ways.
In the garage where I belong.
No one hears me (x4)

No one hears me sing this song

ps.

Eh menemukan satu lagi bug di editor yang saya pake waktu nulis ini ๐Ÿ™‚

Hello world!

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!