RUBY

順列をすべて舐める

以下のように複数の集合があった場合に sets = [ [1,2,3,4], [5,6,7], [8,9], ] すべての順列を舐める関数を定義してみる。 def permutation(stack, ary = [], &block) list = stack.shift list.each do |i| if stack.empty? block.call(ary + [i]) else per…

bracecomp 0.1.0

https://rubygems.org/gems/bracecomp https://bitbucket.org/winebarrel/bracecomp まいどまいどのこまいライブラリのリリースです。 これは何? bashとかのブレース展開をするライブラリです。 サンプルをみればやりたいことは分かると思います。 require …

ASRでaws-sdk-for-rubyを使う

インストール jsonのmswin32ビルドをインスコ https://bitbucket.org/winebarrel/ruby-json-win32/downloads gem install aws-sdk パッチ 以下のパッチをあてる。 https://github.com/amazonwebservices/aws-sdk-for-ruby/pull/4 サンプルコード #!/usr/bin/…

optopus 0.1.4

https://rubygems.org/gems/optopus https://bitbucket.org/winebarrel/optopus これは何? optparseのラッパーです。µ-optparseみたいなものです。µ-optparseとの違いは… オプションの説明をオプションの前の行に書ける(横にも書ける) ハッシュのキーと引…

主にEC2内部用のDNSサーバ - ddns

※後継のMurakumoを開発中です。 https://bitbucket.org/winebarrel/murakumo/ http://d.hatena.ne.jp/winebarrel/20111202/p1某勉強会でddnsのことを話したのですが、ほっとくと忘れ去られそうなので記事にまとめたいと思います。 https://bitbucket.org/win…

rgossip 0.1.0

rgossip 0.1.0をリリースしました。 https://rubygems.org/gems/rgossip https://bitbucket.org/winebarrel/rgossip これは何? Gossipプロトコルのライブラリです。Cassandraみたいに「サーバを起動したら勝手にクラスタに追加される」みたいなことが可能に…

単純なDNSのプロキシを書いてみた

クエリの最大長っていくつだろう? require 'socket' HOST = '8.8.8.8' # Google DNS Server sock = UDPSocket.open sock.bind('', 53) def proxy(msg) s = UDPSocket.open s.send(msg, 0, HOST, 53) msg = s.recvfrom(1024)[0] s.close return msg end loop…

kedama 0.1.0

https://bitbucket.org/winebarrel/kedama https://rubygems.org/gems/kedama毎度毎度のこまいライブラリのリリースです。 何これ? libketamaのRubyポートです。 実はバインディングがあったりするんですが、元のAPIにあんまり汎用性がなくてにんともかんと…

Consistent Hashingのごく単純な実装

ここを参考に。 require 'digest/md5' class Node attr_reader :name def initialize(name) @name = name @values = [] end def <<(value) @values << value end def values @values.sort end def hash Digest::MD5.hexdigest(@name.to_s) end end class Nod…

ruby-mawk 0.1.0

https://rubygems.org/gems/mawk https://bitbucket.org/winebarrel/ruby-mawkリリースしました。 何これ? libmawkのRubyバインディングです。 RubyからAWKが使えて何が楽しいのかってーとですね。。。 open('file.txt') do |f| f.awk('/key/{print $2}') e…

socket-keepalive 0.1.0

socket-keepalive 0.1.0をリリースしました。 https://rubygems.org/gems/socket-keepalive https://bitbucket.org/winebarrel/socket-keepalive 何これ? setsocketopt(2)で、以下のオプションを設定するライブラリです。 SO_KEEPALIVE TCP_KEEPIDLE TCP_KE…

R53Client

ここを参考にして、簡単なRoute 53のRubyクライアントを作ってみた。 #!/usr/bin/env ruby require 'cgi' require 'base64' require 'net/https' require 'openssl' require 'time' $stdout.sync = true class R53Client HOST = 'route53.amazonaws.com' API…

例のアレ

https://bitbucket.org/winebarrel/r53-fox/src/2ef8a09fd186/Resources/chrome/content/r53-client.js 現在、鋭意作成中。E4Xが便利すぎる。

IAMClient

IAMのAPI検証用に書いてみた。 #!/usr/bin/env ruby require 'cgi' require 'base64' require 'net/https' require 'openssl' require 'time' class IAMClient API_VERSION = '2010-05-08' HOST = 'iam.amazonaws.com' ALGORITHM = :SHA1 #ALGORITHM = :SHA2…

Zip/Rubyをbitbucketに移行しました。

https://bitbucket.org/winebarrel/zip-ruby Mercurial plugin for MS Visual StudioとConvert extensionがあれば生きていける。

MySQLコネクションプーリングサーバを書いてみた

先日のfdpassを使って、単純なMySQLコネクションプーリングサーバを書いてみた。 要Ruby/MySQL 2.9.x(MySQL/Rubyではない) https://bitbucket.org/winebarrel/mysql-pool/src まず、サーバを立ち上げるとコネクションが5本はられる。 ~/work$ ./mysql-pool…

fdpass 0.1.0

https://github.com/winebarrel/fdpass 元旦リリースできた。 これは何? プロセス間でファイルディスクリプタを転送するためのライブラリです。 ユースケースは少ないと思いますが、いろいろとがんばればMySQLのコネクションをプロセス間で共有する、とかで…

Ruaをgithubに移しました

https://github.com/winebarrel/Rua 1.9系のバグがつぶせたらリリースの予定。 RubyForgeにホストしてもらってる他のプロジェクトも、おいおい移行の予定。 Please fork it!

Libarchive/Ruby 0.1.2

http://libarchive.rubyforge.org/ githubに移してリリースしました いくつかのバグ修正 間抜けな感じのライブラリ名の変更 libarchive 2.8.4でのビルド 絶賛fork希望中です。

libarchive: バグ報告がが2件ほど

http://rubyforge.org/tracker/?atid=29382&group_id=7583&func=browse うう、ごめんなさい。早めに対応します。 あ、Ruaのあれにも手をつけてない。。。…全部githubに上げるかな

HandlerSocket pluginのRubyバインディングを作りました

10/23 追記 twitterから流れてくる方がいるようなので、もっとちゃんとしたのを作ってキチンとメンテされてる方がいるので、そちらの方をオススメしておきます。(なんか変な日本語だ。。) http://github.com/miyucy/handlersocket http://github.com/wineba…

S3をApacheのファイルシステムとして利用する

mod_rubyでさくっと実装してみた。 /usr/lib/ruby/1.8/apache/s3.rb require 'base64' require 'net/http' require 'openssl' require 'singleton' require 'time' Net::HTTP.version_1_2 module Apache class S3 include Singleton BucketName = "my_bucket…

REST APIでS3のオブジェクトリストを取得する

require 'rubygems' require 'base64' require 'cgi' require 'net/http' require 'nokogiri' require 'openssl' require 'time' Net::HTTP.version_1_2 def aws_sign(secret_access_key_id, date, bucket, path) string_to_sign = "GET\n\n\n#{date}\n/#{bu…

並列処理で高速にS3のオブジェクトをダウンロードする

スレッドを使って並列ダウンロード。 #!/usr/bin/env ruby require 'rubygems' require 'base64' require 'cgi' require 'net/http' require 'nokogiri' require 'openssl' require 'time' Net::HTTP.version_1_2 def aws_sign(secret_access_key_id, date, …

REST APIでS3からオブジェクトを取得する

やりたいことがシンプルなわりにサンプルがほとんど見つからなかったので、メモしておきます。 require 'base64' require 'net/http' require 'openssl' require 'time' Net::HTTP.version_1_2 def aws_sign(secret_access_key_id, date, bucket, path) stri…

bayon/Ruby 0.1.4

http://bayon.rubyforge.org/ リリースしました。 クラスタリングツールbayonのRubyバインディングです。g++じゃないとビルド出来ない。。。と思います。たぶん。

それでbayon/Rubyは…

以下のエラーを吐いているわけですが。 ~# ruby test.rb ruby: /usr/local/include/google/sparsehash/densehashtable.h:464: bool oogle::dense_hashtable::test_empty(const google::dense_hashtable_const_iterator&) const [with Value = std::pair, Key…

<%= で自動エスケープ

これを読んで何となく思いついた。 ERBのメソッドを書き換えればどうとでもできるなあ。やりたくないけど。 require 'erb' class ERB class Compiler # :nodoc: def compile(s) out = Buffer.new(self) content = '' scanner = make_scanner(s) scanner.scan…

Kirisame: とりあえず結果の取得まで

http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/kirisame/ext/?root=svn require 'kirisame' client = Kirisame::Client.tcp('127.0.0.1', 3306, 'root', nil, 'mysql') qs = client.query('show tables', 'show databases') qs.run_all qs.each_with_in…

mkmf、CFLAGS

存在しない関数があるのにWarningが出ないな…と思っていたら、extconf.rbで作ったMakefileのCFLAGSに-Wallがないだけだった。 デフォルトのCFLAGSがどっからきているのかたどってみたら、最終的にはRubyをビルドしたときのconfig.statusまで行きついた。 「-…