Fork me on GitHub
buset mendungnya tebel banget nih pagi2

Snippet Mendapatkan Tweet Terakhir di Wordpress

Posted: December 7th, 2009 | Author: gozali | Filed under: Life, Programming, Technology | Tags: | 3 Comments »

Beberapa hari yang lalu plugin Twitter Widget Pro mendapat serangan dari spammer, isinya kurang lebih mengajak hampir semua tweeps yang mem-follow saya untuk mengikuti test IQ, memang isinya test IQ tapi ternyata halaman tersebut mencuri cookies, sehingga beberapa teman ada yang mengirim tweets test IQ tersebut ke account twitter yang lain.

Dan parahnya lagi, status terakhir yang muncul di blog ini selalu tweet tersebut, padahal saya sudah mengubah password dan memasang beberapa status.

Akhirnya saya menonaktifkan plugin tersebut dan menggunakan snippet sederhana seperti di sini :

1
2
3
4
5
function wp_echoTwitter($username){
     include_once(ABSPATH.WPINC.'/rss.php');
     $tweet = fetch_rss("http://search.twitter.com/search.atom?q=from:" . $username . "&rpp=1");
     echo $tweet->items[0]['atom_content'];
}

Copy paste snippet di atas di file functions.php themes anda, jangan lupa filenya disimpan. Lalu tambahkan code seperti ini di themes anda.

1
<?php wp_echoTwitter('gozali'); ?>

simpan dan selesai, insyaAllah aman dari scam :p


Jakarta.rb Oktober 2009

Posted: September 16th, 2009 | Author: gozali | Filed under: Life | 4 Comments »

Our next meeting is Saturday, October 17th, 10 AM at Detik meeting room and we’ve got three great talks lined up. First up Daniel Armanto (Koprol) will be giving a talk on Rails Deployment Using Capistrano, we will discuss the Rails deployment, along with a short demo.

Next up Gerry Leo Nugroho (Product Planner – Detik) will be giving a presentation titled “Internet Product Planning, A Procedure”.

And Michael Smith (Klasifikasia) will close our presentation section with his presentation about Rails Deployment with Vlad and Mercurial.

Looking forward to hangin with you guys at the meeting, hopefully see you there..

You can RSVP via Facebook Event


Scheduling With Rufus Scheduler

Posted: August 20th, 2009 | Author: gozali | Filed under: Life, Rails, Ruby | Tags: , , | 2 Comments »

Saya mendapat sebuah proyek kecil, tujuannya sangat sederhana yaitu mengambil semua data dari sebuah website dan menyimpannya ke dalam database untuk kemudian ditampilkan kembali lewat wordpress, data tersebut kemudian harus selalu up-to-date sesuai dengan website yang akan di-crawl. Ini berarti saya membutuhkan sebuah proses penjadwalan tugas untuk memeriksa apakah ada update di website tersebut, karena kita mengambilnya secara “ilegal”. Proses crawlingnya sendiri menggunakan hpricot, kurang lebih isinya seperti ini, masih kotor saya pasang di model property.rb.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
require 'rubygems'
require 'hpricot'
require 'open-uri'
 
class Property < ActiveRecord::Base
class << self
def scrap(page)
  resultset = []
  doc = Hpricot open("http://www.xxxxx.com/property_list?page=#{page}")
  items = doc.search("html_tag")
  items.each do |item|
    title = item.at("h4").innerText.gsub(/(&nbsp;|\n|\s)+/im, ' ').squeeze(' ').strip unless item.at("h4").nil?
    link = item.at("a").attributes["href"].gsub(/(&nbsp;|\n|\s)+/im, ' ').squeeze(' ').strip unless item.at("a").nil?
    resultset << { :title => title, :link => link }
  end
  resultset
end
 
def get_latest_update
  Property.create!(scrap(1))
end

Balik lagi ke masalah task scheduling alias penjadwalan tugas, saya biasanya mengandalkan crontab, atau kalau lagi disiplin ya ngelirik ke backgroundDrb, tapi untuk tugas yang satu ini kayaknya terlalu ribet kalo pake BackgroundDrb dan saya lagi nggak pengen pake crontab.

Akhirnya saya menemukan solusi yang menurut saya sangat affordable di Rails Inside. Dan saya pun memutuskan untuk mempelajari Rufus Scheduler dengan proyek kecil tadi sebagai kelinci percobaannya. Bagaimana caranya?

Pertama pastinya install gem rufus-scheduler. Kalo perlu froze gem-nya ke vendor/gems.

1
sudo gem install rufus-scheduler

Lalu buat file bernama task_scheduler.rb di dalam direktori config/initializers. Isinya kurang lebih seperti ini :

1
2
3
4
5
scheduler = Rufus::Scheduler.start_new
 
scheduler.every("1h") do
   Property.get_latest_update!
end

Kita dapat memanggil metode yang ada di model langsung ke file task_scheduler tersebut, layaknya rake task. Mudah dan sederhana bukan? tanpa crontab dan lebih mudah dibaca serta di-maintain dibanding crontab.