Showing posts with label ruby. Show all posts
Showing posts with label ruby. Show all posts

Monday, October 27, 2014

Method Select dan Reject pada Array Ruby

Method select pada Array di bahasa pemrograman Ruby digunakan untuk memilih elemen array berdasarkan kondisi tertentu dan menghasilkan array baru.

Contoh dengan Ruby versi 2.1.3:
my_array = [1,2,3,4,5]

# even? adalah method dari Ruby untuk mengecek bilangan genap
even_array = my_array.select{|element| element.even? }

even_array # => [2, 4]

# versi shorthand
even_array = my_array.select(&:even?)

even_array # => [2, 4]

Kebalikan dari method select, array pada Ruby juga terdapat method reject dimana akan membuang elemen - elemen array tertentu dan menghasilkan array baru.
my_array = [1,2,3,4,5]

# odd? adalah method dari Ruby untuk mengecek bilangan ganjil
even_array = my_array.reject{|element| element.odd? }

even_array # => [2, 4]

# versi shorthand
even_array = my_array.reject(&:odd?)

even_array # => [2, 4]

Tuesday, August 5, 2014

Script Ruby Untuk Download Form C1 KPU Pilpres 2014

Script ini digunakan untuk download form C1 Pemilu Presiden 2014 versi komplit dengan format zip. Untuk beberapa hasilnya dapat dilihat di Google Drive.

Script versi Gist: https://gist.github.com/kuntoaji/c2886b227f6cdf888cea
#!/usr/bin/env ruby
require 'open-uri'

user_agent = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.16 Safari/537.36"
saved_url_list = "saved_list.txt"
accessed_urls = []

accessed_urls = File.readlines(saved_url_list) if File.exists?(saved_url_list)

# tps terbanyak 149
# source: http://kpukotacimahi.com/joomla-overview/40-berita-depan/135-kelurahan-melong-memiliki-tps-terbanyak-dikota-cimahi
# jumlah tps, bisa dimodifikasi
(1..149).each do |tps|

  # id kelurahan, bisa dimodifikasi
  (1..100_000).each do |kel_id|
    url = "http://pilpres2014.kpu.go.id/c1.php?cmd=download&tps=#{tps}&kel_id=#{kel_id}"

    # saved_url_list.txt add \n as new line
    unless accessed_urls.include?("#{url}\n")
      begin
        puts "Accessing #{url}"
        content = open(url, "User-Agent" => user_agent).read
      rescue
        puts "Retrying..."
        retry
      end

      file_name = "#{kel_id}_#{tps}.zip"
      unless File.exists?(file_name)
        if content.size > 7000
          File.open(file_name, 'w') {|f| f.write(content) }
          saved_file = File.open(saved_url_list, "a")
          saved_file.puts url
          saved_file.close
          puts "#{file_name} is successfully saved"

          sleep_in_seconds = Random.rand(10..15)
          puts "sleeping for #{sleep_in_seconds} seconds.."
          sleep sleep_in_seconds
        else
          puts "Empty"
        end
      else
        puts "#{file_name} is exist"
      end
    end
  end
end

puts "done"

Wednesday, September 11, 2013

Apa itu Ruby on Rails dan Filosofinya

Apa Itu Ruby on Rails

Rails adalah framework untuk pembuatan aplikasi web / website yang ditulis dengan bahasa pemrograman Ruby. Berdasarkan dokumentasi Rails, tujuan desain Rails adalah untuk mempermudah pemrograman aplikasi web dengan membuat asumsi - asumsi kira - kira apa saja yang diperlukan seorang web developer dalam membuat aplikasi web.

Friday, September 6, 2013

Kumpulan Link Belajar Ruby dan Ruby on Rails

Kumpulan link untuk belajar bahasa pemrograman Ruby dan framework Ruby on Rails:

Monday, February 27, 2012

HTTP Method PATCH

Kemarin mendapat artikel pada blog Ruby on Rails bahwa HTTP Method PATCH merupakan HTTP Method untuk Update pada Ruby on Rails menggantikan HTTP Method PUT. Hal ini akan berlaku pada Ruby on Rails versi 4.

Wednesday, October 27, 2010

Returning Method di Ruby on Rails

Returning merupakan method dari kelas Object yang berfungsi untuk mengembalikan suatu value setelah melakukan yield suatu value pada block. Dengan Object#returning memudahkan untuk membangun, memanipulasi, serta mengembalikan suatu value apabila dipanggil dalam method. Method ini jika menggunakan framework Ruby on Rails. Contoh:
 # Tanpa returning
 def foo
   my_array = []
   my_array << "bar"
   my_array << "baz"
   return my_array
 end

 foo # => ['bar', 'baz']

 # returning dengan sebuah variabel lokal
 def foo
   returning my_array = [] do
     my_array << 'bar2'
     my_array << 'baz2'
   end
 end

 foo # => ['bar2', 'baz2']

 # returning dengan sebuah argument dalam block
 def foo
   returning [] do |my_array|
     my_array << 'bar3'
     my_array << 'baz3'
   end
 end

 foo # => ['bar3', 'baz3']

[via Ruby Quicktips]

Update: Method ini deprecated pada Rails versi 3.0.9 dan tidak tersedia lagi pada Rails diatas versi 3.0.9

Thursday, September 30, 2010

Slackvim

Vim merupakan text editor saya favorit saat melakukan coding dan di internet saat ini cukup banyak yang membagi konfigurasi text editor vim miliknya. Konfigurasi orang lain telah saya coba, namun sayangnya konfigurasi konfigurasi vim tersebut tidak terupdate dengan baik dan tidak berjalan dengan lancar alias patah-patah untuk komputer Slackware saya yang berjalan diatas RAM 768MB dan Intel Celeron 1,7Gh. Oleh sebab itulah saya buat Slackvim dimana merupakan project yang berisi konfigurasi vim serta plugin untuk mempermudah dalam melakukan coding.

Saturday, November 21, 2009

Akses Gmail via Ruby Dengan Gem ruby-gmail

Gem ruby-gmail dari Daniel Parker didesain khusus untuk mengirim dan menerima email dari akun Gmail anda. Gem tersebut berkomunikasi dengan Gmail menggunakan IMAP dan memungkinkan kita untuk membaca email dengan status unread atau read, menghapus, menandai sebagai spam, menambah label, dan mendapatkan attachment pada email.

Cara Instalasi
gem install ruby-gmail

Berikut adalah contoh kode untuk mengambil seluruh unread message gmail.
#!/usr/bin/ruby

require 'rubygems'
require 'gmail'

username = "YOUR_USERNAME"
password = "YOUR_PASSWORD"
gmail = Gmail.new(username, email)
unread_message = gmail.inbox.emails(:unread)

puts "All unread messages"
for mail in unread_message
puts "----------------------------------"
puts "From: #{mail.message.from}"
puts "Subject: #{mail.message.subject}"
end

Tuesday, November 17, 2009

Ruby on Rails - Hello World Project

Catatan:
Artikel ini ditulis dengan menggunakan Ruby on Rails versi 2 dan ditujukan bagi pemula Ruby on Rails serta diasumsikan Ruby on Rails telah ter-install. Seperti biasa, untuk belajar, dimulai dari hal sederhana, yaitu menampilkan kata "Hello, World!". Berikut ini adalah langkah-langkah-nya

Monday, November 16, 2009

Dasar-Dasar MVC pada Ruby on Rails

Ada beberapa hal yang mendasar di Ruby on Rails tentang MVC-nya. Sebelumnya, jika artikel ini ada yang kurang, mohon ditambahkan.

Model
  • Untuk melakukan akses terhadap model, menggunakan huruf pertama menggunakan huruf besar. Misal, User.name dimana name adalah method dari model user.
  • Method new digunakan untuk membuat objek baru tapi tidak tersimpan dalam database, sedangkan method create akan menyimpan dalam database. Misal, User.new(:name => 'aji') tidak akan tersimpan, tapi User.create(:name => 'aji') akan tersimpan dalam database.
  • Asosiasi belongs_to memiliki arti link-ke tabel lain, sedangkan has_one di-link-dari tabel lain.

Sunday, November 15, 2009

Dokumentasi Ruby Gems dan Ruby on Rails

Ada dua buah dokumentasi yang harus sering anda baca selain dokumentasi API RoR resmi, yaitu:

Dokumentasi Gem
Dokumentasi Gem merupakan dokumentasi yang di-generate berdasarkan gem-gem apa saja yang anda install. Untuk membuat dokumentasi gem, ketikkan perintah sebagai berikut.

Saturday, November 7, 2009

How to Install Ruby & Ruby on Rails

Cara instalasi Ruby dan Ruby on Rails bervariasi untuk setiap sistem operasi atau distro linux. Pada artikel ini akan dibahas mengenai instalasi pada distro linux Slackware dan Ubuntu dengan asumsi komputer anda terkoneksi dengan internet.

Install Ruby, RubyGems, dan Rails

Slackware
- Install Ruby
Jika pada saat installasi Slackware anda memilih full instalasi, maka ruby telah terinstall. Jika tidak, maka dapat dilakukan instalasi dengan langkah berikut.
1. Login sebagai root, download & ekstrak Ruby dengan menjalankan perintah:

wget ftp://ftp.ruby-lang.org/pub/ruby/stable-snapshot.tar.gz
tar xvzf stable-snapshot.tar.gz

2. Compile dan Install:

cd ruby/
./configure
make
checkinstall

3. Testing:

ruby -v

maka akan dihasilkan output mirip seperti ini:

ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]

- Install RubyGems
Login sebagai root dan jalankan perintah-perintah berikut:

wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
tar xzvf rubygems-1.3.5.tgz
cd rubygems-1.3.5
ruby setup.rb

- Install Rails
Login sebagai root dan jalankan perintah berikut:

gem install rails


Ubuntu
- Install Ruby
Jalankan sebuah perintah berikut untuk install ruby:

sudo apt-get install build-essential libssl-dev libreadline5-dev zlib1g-dev checkinstall

- Install RubyGems
Jalankan beberapa perintah ini untuk install rubygems:

cd ~
wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
tar xzvf rubygems-1.3.5.tgz
cd rubygems-1.3.5
sudo ruby setup.rb
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem

- Install Rails

sudo gem install rails


Optional: Install MySQL DB Server
Secara default rails menggunakan database sqlite database, jika anda ingin menggunakan mysql, berikut ini adalah langkah-langkah instalasi.

Slackware
Slackware secara default telah menyertakan mysql database. Namun jika anda ingin instalasi mysql database dari paket tarball, dapat anda lihat artikel yang dibuat beberapa waktu lalu.

Ubuntu
Jalankan perintah-perintah berikut untuk melakukan instalasi mysql:

sudo apt-get install mysql-server mysql-client
sudo apt-get install libmysql-ruby libmysqlclient-dev
sudo gem install mysql

Perlu diingat, secara default socket mysql berada pada /tmp/mysqld.sock , namun pada ubuntu socket berada pada /var/run/mysqld/mysqld.sock

Testing Rails
Baik di Slackware atau Ubuntu, untuk testing rails, generate-lah sebuah project:

rails yourrailsproject

Jika menggunakan mysql database, jalankan server mysql dan perintah berikut:

rails yourrailsproject -d mysql


Referensi: http://wiki.rubyonrails.org/getting-started/installation/linux-ubuntu

Catatan: Untuk ulasan mengenai ruby dan ruby on rails, akan saya tulis pada blog: http://railsmine.blogspot.com

Sunday, May 31, 2009

Web Server sederhana dengan Ruby

Untuk menjalankan kode dibawah ini, gunakan dibutuhkan library WEBrick. Pada versi ruby 1.8, library WEBRick telah disertakan. Jadi kita tidak perlu download terlebih dahulu. Fyi, Slackware 12.2 telah menyertakan ruby 12.2 secara default. Script ini telah dicoba pada lingkungan linux.


#!/usr/bin/ruby
# baris di atas menunjukkan script ini dijalankan oleh ruby

# Menggunakan library webrick
require 'webrick'

# Melakukan import namespace, sehingga untuk mengakses
# kelas-kelas yg dibutuhkan tidak perlu
# menuliskan Webrick::
include WEBrick

# membuat objek dari kelas HTTPServer dengan menggunakan port 2000 dan default direktori yang diakses /home/aji/ruby/htdocs
server = HTTPServer.new(
:Port => 2000,
:DocumentRoot => "/home/aji/ruby/htdocs"
)

# Menangkap sinyal interupt.
# Sinyal tersebut dihasilkan dengan menekan tombol ctrl-c pada console.
# Jika menerima sinyal interupt, maka server akan dimatikan (shutdown)
trap("INT"){ server.shutdown }

# Menjalankan server
server.start


Penjelasan:


Cara menjalankan:
1. Copy script di atas ke suatu file berekstensi .rb. Misal, http-server.rb

2. Jalankan script:

ruby http-server.rb


3. Untuk mengujinya, Buka web browser, ketikkan http://localhost:2000

semoga bermanfaat!