Jun 22 2011

cron di appengine

Assalamualaikum Wr,wb.

Saat pilkada bupati kulon progo kemarin, coba cari info update hasil pemilihan suara di internet. akhirnya menemukan sebuah website tentang info pilkada tersebut. Dan update statistik hasilnya cukup up to date.

Kemudian kepikiran untuk membuat sebuah akun microblog (twitter), yang berisi update hasil pemilu. Kan kalo sewaktu-waktu ada update hasil pemilu sudah muncul sendiri di timeline saya, dan tidak perlu mengunjungi situs2 tersebut.

Jadi teringat, google appengine menyediakan layanan schedule task (sejenis cronjob), yang mana dalam interval waktu tertentu server akan mengeksekusi perintah yang kita inginkan. Tetapi muncul sedikit kendala, ketika program dideploy ke server google dan dijalankan, muncul DeadlineExceededError:   ApplicationError: 5. Ternyata hal tersebut diakibatkan ketika fetching content dari web yang kita baca, melebihi batas waktu yang ditentukan oleh google (10 detik).

Akhirnya saya asumsikan, proses tersebut lama disebabkan karena pada page yang kita baca tersebut ada social plugin facebook, yang mana proses loading halaman menjadi lebih lama. Karena konten tersebut menggunakan teknologi ajax, trus diview source dan ditemukan dimana tempat mengambil sumber datanya tersebut.masalah itupun teratasi :D

Kemudian set interval cronjobnya 5 menit sekali. Mungkin kalo kita terapkan di hostingan berbayar, masang kron diset seperti ini bisa cukup menguras resource server & bisajadi disuspend :O . Dan sampai saat ini, pas cek log.. time out sudah jarang.

Oiya, kalau mau lihat hasilnya bisa dicek di http://twitter.com/pbkp2011. Jangan lupa follow lho :D . Contohnya bisa dilihat di https://github.com/Pujianto/pilbupkp2011.

Demikian postingan hari ini, semoga bermanfaat. :)


Apr 2 2011

The Daftar Tugas

Lama nggak posting dimari nih. Memasuki semester yang ke-empat ini emang jadwal kuliah rada dipadatkan. #halah. Terus ditambah aktifitas lainnya ….*plaak*.. *kepanjangan*.

Oke, mari kita berserius.hihhi. Tak terasa sekarang sudah ke semester 4 dalam berkuliah. Jadi 3 semester sudah terlewati & seiring dengan bertambahnya waktu perjalanan ini, tentunya harus semakin serius dalam belajar :) .  Wis pokoknya aku butuh sebuah perbedaan dan peningkatan, yang waktu dulu ngerjain tugas sering telat kini harus lebih disiplin. *yah.., ketrampilanku dalam membagi waktu itu emang rada rendah*.

Oke salah satu usahanya, kemarin coba-coba iseng buat aplikasi web sederhana tentang ‘the jadwal tugas’ itu. Pokoknya semua tugas-tugas di list disitu. Dan kalau progress sudah 100%, maka otomatis tugas tersebut ter-close sendiri.

the daftar tugas
Technically, seperti biasa.. pake google appengine yang python version & tornadoweb sebagai web frameworknya. Untuk mempercantik tampilan coba pake library jqueryui. Terdiri atas 3 entitas di datastorenya, yaitu semester, makul dan tasklist. *saat ini yg semester belum digabungin*.

Untuk yang akan datang,

Pengennya sih dikembangin lagi biar semua orang bisa memanfaatkan. Ya mari kita liat setelah pake aplikasi ini apakah ‘disiplinku’ semakin meningkat, kalo iya berarti ini cara efektif biar kita tambah rajin.hehehe. Ya insya Allah nanti kalo ini sukses, bisa dikembangkan untuk versi umum. Dan tentunya ditambah fitur lain biar lebih menarik.

Ada pemikiran …agak lebay sih.. yaitu fitur yang bila tugas sudah mendekati deadline dan progressnya belum 100%, otomatis posting pengingat untuk ngerampungin tugas ke twitter atau wall facebook atau situs jejaring sosial lainnya. Begitu bunyinya.

Demikian postingan hari ini. jangan lupa, buka http://kuliah.pujianto.net & set as homepage. :) )

Feb 17 2011

Seputar Google Appengine

Google maning-google maning. Ya.. memang sebagian besar aktifitas ngonline saya ini selalu bersinggungan dengan produk dari google ini. Dari email, nyimpan dokumen, web browser, hosting dsb.dsb.. Ya karena layanan google ini memang paling top untuk saat ini.

Oke kita ke tujuan inti dari postingan ini, #halah. Yaitu membahas seputar Google Appengine.  Menurut wikipedia, App Engine merupakan platform yang memungkinkan pengembang untuk membuat dan menjalankan aplikasi-aplikasi web dengan fasilitas hosting di server Google. Pokoknya ya semacam itulah. Dan bahasa yang didukung untuk saat ini adalah python dan java. *yang akan kita bahas adalah yang versi python lo*.

Untuk memulai membuat aplikasi dengan platform ini, terlebih dahulu download dulu sdk-nya. Dan jangan lupa, pythonnya juga harus terinstal di komputer. Untuk pengguna windows, yang belum punya python bisa didownload di sini. kalo nggak salah sih, versi python yang didukung GAE ini yang 2.5 ke atas. Biar lebih jelas, bisa dibaca sendiri / didownload dokumentasinya  platform ini :D . Baiklah, tak asumsikan kita sudah paham mengenai dasar-dasar mengenai appengine ini.

Coba kita belajar membuat hello world. Dan web framework yang digunakan yaitu pake yang bawaan dari GAE ini, yups… webapp. *dan contoh aplikasi berikut dibuat sama plek dengan yang ada di contoh di dokumentasi*

Kita buat file konfigurasinya, namanya adalah app.yaml dan diletakkan di direktori utama dari aplikasinya, contoh buat direktori aplikasi dengan nama appku. Berikut adalah contoh konfigurasi aplikasinya:

application: helloworld
version: 1
runtime: python
api_version: 1
handlers:
- url: /.*
  script: helloworld.py

lalu simpan konfigurasi di atas dengan nama app.yaml

Terus, buat file helloworld.py dan isinya seperti berikut.

yang from-from itu untuk import web frameworknya (webapp) beserta kebutuhan lainnya.

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class Hello(webapp.RequestHandler):
	def get(self):
		self.response.headers['Content-Type'] = 'text/plain'
		self.response.out.write('Hello, webapp World!')

application = webapp.WSGIApplication([('/',Hello)],debug=True)

def main():
	run_wsgi_app(application)
if __name__ == "__main__":
	main()

Lalu jalankan aplikasi tersebut, dengan perintah :

 appengine_sdk/dev_appserver.py appku/

Dan hasilnya adalah kurang lebih seperti ini.

Woke, itu dulu tuips.. mengenai appengine kali ini . Mungkin nanti coba post lagi tentang mbuat aplikasi sederhana lain menggunakan platform ini. :D