Selasa, 11 November 2014

Singleton Design Pattern Dengan Javascript

Dalam software engineering, pattern Singleton adalah desain pattern yang membatasi pembuatan instance dari class hanya kepada satu object. Hal ini berguna dalam kondisi ketika hanya satu object saja untuk mengkoordinasi seluruh sistem. Berikut ini adalah contoh Singleton pattern dengan menggunakan Javascript.

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