Senin, 27 Oktober 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]

Selasa, 05 Agustus 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"

Minggu, 02 Februari 2014

Konfigurasi Nginx Untuk Optimasi Static Assets Files

Selain sebagai load balancer, Nginx juga memiliki performansi yang sangat baik response time atau request per second saat melayani request assets files seperti css, javascript, html, pdf, image atau static files lain.

Sabtu, 01 Februari 2014

CSS Modal Overlay

Salah satu contoh CSS Modal Overlay ditambah dengan jQuery untuk menghitung posisi center secara dinamis saat on load. Untuk hasilnya dapat dilihat melalui http://jsfiddle.net/kuntoaji/y8UQw/

Gist: https://gist.github.com/kuntoaji/8763949

Jumat, 31 Januari 2014

Cara Konfigurasi Nginx Sebagai Load Balancer

                            +--------------------+
                            | Nginx Load Balancer|
                            +----------+---------+
                                       |
                                       |
                +----------------------+---------------------+
                |                      |                     |
                |                      |                     |
                v                      v                     v
         +---------------+     +---------------+     +---------------+
         | Backend App 1 |     | Backend App 2 |     | Backend App 3 |
         +------+--------+     +-------+-------+     +-------+-------+
                |                      |                     |
                |                      |                     |
                |                      |                     |
                |                      v                     |
                |              +---------------+             |
                +------------> |Database Server|<------------+
                               +---------------+
Nginx selain sudah terkenal sebagai web server, saat ini juga terkenal sebagai load balancer dengan performance yang sangat baik. Berikut ini adalah cara konfigurasi Nginx versi 1.4.4 pada Linux Debian 6 dengan asumsi Nginx telah terinstall pada direktori standar Linux Debian.