nggumun
Sebenarnya lagi males posting, tapi setelah membaca salah satu berita di detik beberapa waktu lalu, pengen berpendapat juga.
Apa yang kita lakukan jika hal itu terjadi pada kita? Jujur saya merasa kalah dengan bule itu.
Sebenarnya lagi males posting, tapi setelah membaca salah satu berita di detik beberapa waktu lalu, pengen berpendapat juga.
Apa yang kita lakukan jika hal itu terjadi pada kita? Jujur saya merasa kalah dengan bule itu.
Beberapa waktu yang lalu, ketika saya mencoba menambahkan facebook like / ‘fb like’, pada halaman web. Terjadi error ketika di validasi di http://validator.w3.org. Setelah browsing-browsing kesana kemari, akhirnya hal tersebut dapat diatasi dengan cara tag tersebut ditulis pada sebuah script javascript.
Berikut ini adalah contohnya.
function coba() {
//fb:like ditaruh disini, biar validasi sukses
var tombol = '<fb:like href="http://pujianto.net" '
+ 'send="true" width="480"'
+'show_faces="true" font="lucida grande"></fb:like>';
//menulis var tombol tadi pada element yg ber id fesbuk
return document.getElementById('fesbuk').innerHTML = tombol;
}
Untuk lebih, lengkapnya bisa dilihat di http://tinypaste.com/f1815. Klik disini untuk cek validasi w3c, klik disini untuk melihat tampilannya.
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
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
. Contohnya bisa dilihat di https://github.com/Pujianto/pilbupkp2011.
Demikian postingan hari ini, semoga bermanfaat.
Assalamualaikum Wr.Wb,
Ternyata setelah the daftar tugas di set sebagai home page ada sedikit kemajuan, dimana setiap pertama kali membuka browser langsung muncul tumpukan tugas kampus yang mesti segera diselesaiken.
Oke, kali ini akan membahas seputar sesuatu yang baru ditambahkan pada projek ini. #halah. Yaitu feed seputar info-info dari kampus. Dan setelah coba-coba cari cara bagemana untuk memparsing file xml di python akhirnya menemukan sebuah library yang simple dan mudah digunakan. Yups ini dia, menggunakan Universal Feed Parser, selain itu dokumentasinya juga lengkap.
Berikut contoh simpel penggunaan feed parser ini.
#import feedparser.py
import feedparser
#buat variabel untuk menyimpan hasilnya
data = []
xml = feedparser.parse("http://www.amikom.ac.id/index.php/feed/info_kampus")
for a in xml:
data.append('<a href=\"'+a.link+'\" target=\"_blank\">'+a.title+'</a>'")
#variabel data sudah ada isi judul berita & linknya.

Oke. Sekarang kita coba belajar tornadoweb. Sebelume, tornado itu adalah web framework pada python dan bisa juga dijadikan sebagai web server. Eh info juga, ternyata tornado web sekarang sudah versi 1.2, entah kapan tanggal rilisnya. Karena yang tak download dulu yang versi 0.2. Lebih lanjut tentang tornado, bisa kita lihat di official website nya
Oiya, dalam percobaan kali ini kita akan menggunakan database MySQL pada lampp (xampp versi linux) sebagai backend nya #halah.
Pertama kita buat database & tabelnya
create database percobaan; use percobaan; create table anggota ( id int not null primary key auto_increment, nama varchar (30)not null, alamat varchar (50)not null, pekerjaan varchar (40)not null );
contoh kita mbuat tabel anggota kelompok ronda.
.
Setelah buat database sekarang kita buat aplikasinya, buat sebuah direktori tempat kita membuat direktori tempat meletakkan aplikasinya. *dan didalam direktori tersebut kita masukan juga direktori tornadonya.*. Eh tapi sebelumnya buat install dulu MySQL-Python di komputer. untuk detail instalasinya cari sendiri yee.
. Untuk ngetes apakah mysql-python sudah berjalan jalankan python, terus import _mysql. Kalo lancar berarti sudah sip.
contoh hirarki direktorinya:
- appsku:
- tornado
- app.py
Karena dalam tulisan di atas python scriptnya kita namai app.py, maka buat file app.py di direktori appsku. Terus buka file app.py & mari kita mulai :
#!/usr/bin/env python
# nama filenya app.py
#import modul2 yang dibutuhkan
import tornado.database
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
#definisikan pada port berapa aplikasi kita berjalan
from tornado.options import define, options
define("port", default=8888, help="run on the given port", type=int)
#sekarang kita buat class untuk halaman utamanya
class MainHandler(tornado.web.RequestHandler):
def get(self):
konek = tornado.database.Connection("/opt/lampp/var/mysql/mysql.sock","percobaan",user="root")
self.write("""
<html><head><title>Daftar Anggota Kelompok Ronda RT 43 </title></head>
<body><div align="center"><h3>Daftar anggota kelompok ronda RT 43</h3>
<table name="listanggota" border="1" ><tr>
<td>No</td><td>Nama</td>
<td>Alamat</td><td>Pekerjaan</td>
</tr>
""")
if len(konek.query("SELECT * from anggota")) < 1:
self.write("data masih kosong!")
for a in konek.query("SELECT * FROM anggota"):
self.write("<tr><td>" )
self.write(str(a.id))
self.write("</td><td>" )
self.write(a.nama)
self.write(" </td><td>")
self.write(a.alamat)
self.write("</td><td>")
self.write(a.pekerjaan)
self.write("</td></tr>")
self.write("</table>")
self.write("<br/> <a href=/insert>tambah</a> anggota")
self.write(" </div> </body></html>")
#sekarang class untuk tambah data dan post tambahan data
class Isi(tornado.web.RequestHandler):
def get(self):
self.write("<html><head><title>Tambah Anggota Baru </title></head><body>")
self.write("""<div align="center">
<h3>Tambahkan Anggota Baru: </h3>
<form method="post" action="/insert">
<table name="form-input" border="0">
<tr><td><label for="nama">Nama: </label></td>
<td><input type="text" name="nama"><br /></td></tr>
<tr><td><label for="alamat">Alamat:</label></td>
<td><input type="text" name="alamat"><br /></td></tr>
<tr><td><label for="pekerjaan">Pekerjaan:</label></td>
<td><input type="text" name="pekerjaan"><br /></td></tr></table>
<input type="submit" value="send">
<input type="reset" value="clear">
<a href="/"><input type="button" value="batal"></a>
</form>
</body></div>
</html>""")
def post(self):
nama = self.get_argument("nama",None)
alamat = self.get_argument("alamat",None)
pekerjaan = self.get_argument("pekerjaan",None)
if not nama or not alamat or not pekerjaan:
self.write("data tidak lengkap, silakan diulang kembali. Klik back pada browser")
else:
konek = tornado.database.Connection("/opt/lampp/var/mysql/mysql.sock","percobaan",user="root")
konek.execute(u'''insert into anggota(nama,alamat,pekerjaan) values (%s,%s,%s)''',nama,alamat,pekerjaan)
self.redirect("/")
#kita buat fungsi utamanya
def main():
tornado.options.parse_command_line()
application = tornado.web.Application([
(r"/", MainHandler),
(r"/insert", Isi)
])
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
if __name__ == "__main__":
main()
Eh iya, itu karena kita MySQLnya berada di lampp / xampp. maka yang kita isikan bukan localhost, tapi ‘/pathlokasilampp/var/mysql/mysql.sock’.
Dan, err sori itu kode htmlnya rada membuat berantakan ya?
. Kan ini baru versi 1, jadi kita belum pake template dll.:))
Jalankan file app.py tadi ($python app.py), karena dalam pengaturan port untuk httpnya 8888, maka setelah dijalankan url di browser adalah http://localhost:8888 . Mari kita lihat hasilnya
http://localhost:8888

http://localhost:8888/insert

list anggota yang sudah lumayan banyak..

Oke, mungkin itu dulu sodara2 sekalian. mohon maaf kalo masih banyak salah2.hihi.
Hmm.. postingan yang sangat aneh. Nonton judule wae agak piye gitu. Sebenarnya pengen posting seputar tips & trik aja sih. #halah. Seputar pengalaman kuliah di tempat yang berdasi.hihihi.
Ceritanya gini, berkuliah di tempat saya kuliah itu kalo pria harus berdasi, terutama pada waktu-waktu tertentu. Misal pas ujian. Memang sih, dasi itu melambangkan profesionalitas kerja. Mungkin agar kita terbiasa untuk bersikap profesional sejak masih kuliah. Tapi apabila kita dalam kondisi ‘darurat’ dan tidak ada dasi. ya, .. gimana ya.
Misale akan ujian, terus dasi ketlingsut atau hilang atau … intinya dasinya nggak ada. Dan kalo kita ingin masuk ujian dan persayaratannya harus pake dasi. Repotkan!
Ada sebuah tips nih biar tetap bisa masuk kelas. Pertama, Tentu saja. cari pinjaman dasi pada teman-teman di sekitar. Kalo itu step itu masih belum dapat dasi juga. pake cara kedua, yaitu pake baju batik.
.

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
. 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.

Google Books. Sebuah layanan dari Google yang memungkinkan kita untuk membaca-baca buku secara online tanpa perlu membeli buku. Beragam kategori buku yang ada di google books ini. Ada seputar kesehatan, humor, masak, desain, dll.

Assalamualaikum Wr Wb,
Entah ini Hello World yang keberapa
. Yang jelas mulai hari ini kembali menggunakan wordpress engine blognya, setelah sempat beberapa saat lalu mencoba blogging menggunakan google appengine. Sebenernya pas beli domain ini dulu ngeblognya juga pake wordpress sih, tapi berhubung nggak diperpanjang hostingannya..ya suspended deh..
Oh iya, tentu saja blog yang versi appengine masih kok, tak pindah ke http://changelog.pujianto.net. Alesan menggunakan nama itu, ya..cuma asal aja. bingung milih nama-namanya.
Oke, di blog yang baru ini semoga tulisan menjadi lebih rapi & memberikan manfaat tentunya
.