Ruby

RubyのOpenSSLライブラリでOpenSSH形式のRSA秘密鍵を扱えるように鍵をパースしてビルドする

どうも、公開鍵暗号方式大好き芸人です。 かれこれ3年くらい前だけど、ssh-keygenが出力する秘密鍵のデフォルト形式が変わってOpenSSLライブラリで読み込めなくなった。 それを解消するべく、秘密鍵をパースしてOpenSSLライブラリで読み込める形でビルドする…

Rubyで実装したDAWとシンセサイザーの技術仕様

よくもまぁこんな面倒臭い大変なものを作ったなと自分で思う。 RubyのEnumerator::Yielderとlambdaを多用したリアルタイム処理とも親和性が高い作りをしてる。 だいぶ前に書いた文章が発掘されたので手直しして公開。 供養、ナムナム。 デモ パッケージ vdsp…

二分木検索とルーティングプロトコルを応用した相対的ソートアルゴリズムを考案した

概要 ルーティングプロトコルのリンクステートのような感じで、絶対的な数値を持たずに2つのノードを比較して相対的に距離を算出。 各ノードは、前方ノードへアクセスするための左に生える木と、後方ノードへアクセスするための右に生える木を持つ。 ノード…

NumericのVALUE埋め込み/ポインタ参照の比較とRationalを用いた高精度な小数演算

今回ちょっと内容が多いからとりあえず目次というか概要というか。 主にこんな話をまとめてる。 ・VALUEとはいったい何なのか。 ・VALUE埋め込み表現出来るものとポインタ参照になるもの。 ・Ruby上でVALUE埋め込みなのかポインタなのかの調べ方。 ・VALUE埋…

Numericクラスのinteger?とreal?の使われ方と返すべき値

Numeric.integer? Numeric.integer?とは 自身が Integer かそのサブクラスのインスタンスの場合にtrue を返します。そうでない場合に false を返します。 Numeric のサブクラスは、このメソッドを適切に再定義しなければなりません。 https://docs.ruby-lang…

設定ファイルを暗号化するSecureConfってライブラリを作った

手軽に設定ファイルをRSAで暗号化するライブラリ。 平文をそのまま保存しないという大義名分をミニマムに果たせる。 IDとかパスワードとかをうっかり平文のままコミットしてしまうのを防ぐ為に。 作るきっかけ、困ってた事 誰かが発行してくれるTokenを使っ…

光の天使スクリーンセーバーから動画部分のみを取り出したい 備忘録その1

その2があるか解らないけど、とりあえず備忘録その1。 Objective-C、SWFファイルフォーマット、ActionScript、Zlib辺りの知識が必要になりそうな。 概要 fla:verを使ってる fla:verを使って、Flashファイルからスクリーンセーバーを生成していた。 仕組みは…

光の天使のスクリーンセーバーを今でも見られるようにする方法

由結ちゃんかわいい! 前提 Mac。 Ruby 2.0以上が入っている。(多分1.8.7とかでも動くけど一応) 80ポートをApacheやnginxが握っていない。 root権限が使える。 実行 問題なければ以下実行。 su - dscacheutil -flushcache echo '127.0.0.1 www.hikarinoten…

さくら学院のデータを管理するライブラリRubyGems::sakura_gakuinを公開した

さくら学院のメンバーやクラブ活動のデータを取得出来るライブラリ、sakura_gakuinをRubyGemsで先日公開した。 いつか作りたいと思っていたAcmeモジュール。(Rubyだけど) sakura_gakuin | RubyGems.org | your community gem host https://rubygems.org/ge…

Rails3でPUTメソッドのリクエストを受けるとレスポンスが204に強制されてしまう件

204ステータスは、内容なし。 リクエストを受理したが、返すべきレスポンスエンティティが存在しない場合に返される。 Rails3ではなぜかPUTメソッド(GET / POST以外)だと204ステータスに強制されてしまい、コンテンツを返せない。 本当は200ステータスでコ…

CentOSにMeCabとmecab-rubyを入れる

CentOSにMeCabとmecab-rubyを入れるメモ。 インストール MeCab本体インストール cd /tmp/ wget http://mecab.googlecode.com/files/mecab-0.98.tar.gz tar -xvf mecab-0.98.tar.gz cd mecab-0.98 ./configure --with-charset=utf8 --enable-utf8-only make m…

CentOS上にYumとRVMだけでRuby2.0+Rails3の環境を構築出来た

ちょっと前はsqlite3をソースから入れなきゃいけなかったような気がするけど、今やったらYumとRVMだけで事足りた。 野良ビルドしないで済むのは嬉しい。 そのインストールメモ。 インストール yum install ruby git gcc-c++ readline-devel zlib-devel libya…

Rubyの「class << self; end」について調べた

Rubyでクラスメソッドを定義する時、いつも 「class 「class 「self 「self と解らなくなってしまう。 それで「class この奇妙な仕様について何かご存知の方、すっきり出来るような情報を教えてください! 「class まずは普通にクラスメソッドを定義する。 #…

RubyからPHPをネイティブ連携させるRuby extension「php_vm」を作った

RubyからPHPのクラスとかをネイティブに呼び出すRuby extension「php_vm」を作った。 百聞は一見に如かず。 なんということでしょう、PHPで定義したクラスがRubyのクラスのようにインスタンス化したりメソッドを呼んだり出来るではありませんか。 Source #!/…

RVMでRails2環境とRails3環境を共存させる

RVMとかRubiesとかBundlerとか、いろいろあって訳わかんないけど、 とりあえずApache + RVM + Nginxが一番楽かなという印象。 (Rails3アプリを管理するのにBundlerも使うけど) 80番ポートを受け付けるのはApache。 そのApacheがプロキシになって、後ろのNg…

RubyのIPAddrをPHPに移植した

何か必要に駆られて作ったと思ったんだけど、何に使おうとしたんだっけ。 今回、PHPUnit + Phing + JenkinsでCI環境を整えた。 カバレッジ解析もしたかったけど、Xdebugが必須らしく、面倒だったからやらなかった。 64bitを超える数値を扱う為にPear/Math_Bi…

Rubyで2Legged OAuthリクエストを行う

TwitterのAPIを叩くサンプルは見つかったけど、純粋な2Legged OAuthのやり方が見つからなかった。 だからメモ。 リクエストボディを指定して、リクエストを送る前にoauth!メソッドを呼ぶだけ。 #!/usr/bin/ruby require 'rubygems' require 'net/http' requi…

RubyのIPAddrクラスが使いにくい

使いにくいというか、ネットワーク向きではない? だからいくつかメソッドを追加してみた。 追加したメソッド bit_count selfのIPのビット数を返す。 IPv4なら32、IPv6なら128を返す。 cidr selfのCIDRを返す。 なんでこれが取得出来ないのか不思議な位。 ho…

CentOS用にRubyのRPMを作った

CentOSのYumリポジトリにあるRubyは古過ぎて、gemの依存で引っかかる事が多い。 だから自分でCentOS5用のRPM作った。 現在安定版とされている2つのバージョンのRubyと、最新のRubyGems。 ruby-1.8.7.p334-1.i386.rpm ruby-1.9.2.p180-1.i386.rpm rubygems-1.…

RubyでApacheのVirtualHostの設定ファイルを生成する

前に似たようなものをPHPで作ったけど、それより綺麗に書けた。 def main内を適宜書き換えて、rootで実行。 def config内で、CustomLog/ErrorLogの指定もした方がよさそう。 #!/usr/bin/ruby class VirtualHost def initialize(conffile, domains=[], hosts=…

RubyでJavaのアクセサを生成する

大したものじゃないけど、Java開発がとってもはかどる。 IDE使えって話かもしれないけど。 staticは非対応。 使い方 echo "private String username; private String password; private Integer age;" | genaccesor.rb 結果 // username public void setUser…

Ruby on RailsでMySQL Clusterの使えるようにするプラグインを作ってみた

似たようなプラグインもいくつかあったけど、どれもしっくり来なかったから自分で作った。 その名も「Mysql Cluster Adapter」。 eth0jp's activerecord-mysql_cluster_adapter at master - GitHub http://github.com/eth0jp/activerecord-mysql_cluster_ada…

rake db:migrateでcreate_tableする時のストレージエンジンを指定するプラグイン作った

データベースをrakeで管理する場合、ストレージエンジンを指定してテーブルを作る時は、いちいちこんなのを書かなきゃいけない。 ちょっとした事なんだけど、非常に面倒くさい。 create_table :table_name, :options => "engine=MyISAM" 何かいい方法はない…