Skip to content

Instantly share code, notes, and snippets.

View newbamboo's full-sized avatar

New Bamboo newbamboo

View GitHub Profile
@newbamboo
newbamboo / gist:2159238
Created March 22, 2012 16:08
Script to find all your repositories that have a particular collaborator.
require 'rubygems'
require 'github_api'
username = ARGV[0]
password = ARGV[1]
collaborator_for_deletion = ARGV[2]
client = Github.new(login: username, password: password)
repositories = client.repos.list
@newbamboo
newbamboo / real_world_druby.md
Created November 19, 2011 14:52 — forked from seki/real_world_druby.md
実世界でのdRubyの使用例

実世界でのdRubyの使用例

dRubyはこれまでに多くの大規模システムの基盤として利用されてきました。dRubyはいつものRubyプログラミングに非常に近い感覚で分散オブジェクトを実現します。これにより、複雑な分散システムであってもアイデアをすぐに実現することができます。 dRubyが提供するのは汎用のRMIです。スケッチの段階でdRubyを用い、有用性を確認したのちに用途に特化したミドルウェアに置き換えるといったように成長していったシステムも多いようです。 以下に実世界でのdRubyの使用例を示します。

Hatena Screen Shot (http://www.hatena.ne.jp/)

Hatena は日本を代表するインターネットカンパニーで、ブログ、ソーシャルブックマークサービスなどを提供しています。2006年当時(現在はサービス終了) Hatena Screen Shotという、登録されたURLのスクリーンショットをサムネイルとして表示するサービスがありました。このサービスのアーキテクチャーのユニークな点にWebフロントエンドはLinux上に構築されているが、スクリーンショットの撮影はWindowsのIEコンポーネントを用いて実現されていることにある。これはWindows環境の方がスクリーンショットを撮影できる環境が整っていたためであるが、クロスプラットフォーム間のシステムを協調させるdRubyを使った良い例といえよう。またスクリーンショットマシーンは並列処理が行われていたため、スケーラビリティも確保されていた。

@newbamboo
newbamboo / call_by_sharing.md
Created November 19, 2011 12:27
Call By Sharing

厳密にいうとRubyは値を渡している、しかしながらオブジェクトの参照値を渡す場合、例にあったように破壊的なメソッドで参照先を変更することができる。ほかにも例をあげると、Hashの内部を変更した場合、呼び出し元の変数も変更される。

Strictly speaking, Ruby is passing by reference. However, what Ruby is passing is reference value of an object so that you can modify the object which the reference value is pointing using Ruby's destructive method (= methods ending with !). Another example is when you modify a Hash value as follows.

>>  a = {b:'c'}
=> {:b=>"c"}
>> def foo(d); d[:b] = 'C'; end
=> nil
>> foo(a)

=> "C"

#
# = ostruct.rb: OpenStruct implementation
#
# Author:: Yukihiro Matsumoto
# Documentation:: Gavin Sinclair
#
# OpenStruct allows the creation of data objects with arbitrary attributes.
# See OpenStruct for an example.
#
@newbamboo
newbamboo / gist:1261956
Created October 4, 2011 15:36 — forked from christoomey/gist:1206762
Linode Ubuntu 10.04 (Lucid) with passenger & nginx for rails hosting
#################################################################
# #
# A guide to setting up a linode Ubuntu VPS for #
# Ruby on Rails hosting with nginx & passenger #
# #
# Compiled by Chris Toomey [ctoomey.com] on Sept. 9 2011 #
# #
#################################################################
# Start with base 10.04 image. Setup the DNS for any domains you
document.addEventListener('dragenter', stopPropagation, false);
document.addEventListener('dragexit', stopPropagation, false);
document.addEventListener('dragover', stopPropagation, false);
document.addEventListener('drop', function (event) {
// ALL THIS INSIDE THE "DROP" EVENT
var fileReader = new FileReader();
@newbamboo
newbamboo / Facebox Compatable GoogleMaps v3
Created November 24, 2010 13:06
Make sure that google maps appear correctly in a facebox by binding it to afterReveal
$(document).bind("afterReveal.facebox", function(){
var myOptions = {
center: new google.maps.LatLng(51, 0),
zoom: 11,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_div"), myOptions);
});
Today we have deployed some very interesting improvements on our platform. Let's review them all.
## Custom output filename paths (store your files in subdirectories!)
Many of you have requested a way to store video inside folders instead of having everything in the root of your bucket.
We think we found a nice solution to solve this problem.
When you upload a video there is now a new optional attribute called `path_format`. It enables you to specify destination and name of a video and it's encodings.
The `path_format` variable is a string representing the complete video path without the extension name. It can be constructed using some provided keywords.
struct Panda
{
public static string Api_host = "api.pandastream.com";
public static string Api_version = "/v2";
public static string Cloud_ID = "yourCloudID";
public static string Access_key = "yourAccessKey";
public static string Secret_key = "yourSecretKey";
}
[WebMethod]
jQuery.nginxUploadProgress = function(settings) {
settings = jQuery.extend({
interval: 2000,
progress_bar_id: "progressbar",
nginx_progress_url: "/progress"
}, settings);
$("#upload").submit(function() {
$('#'+settings['progress_bar_id']).width('0%');