Ruby

テキストの外形をsvgにする、text2svgをRubyで作った

テキストとフォントファイルを与えると、テキストの形をsvgで表現した出力が出てくる夢を見たことがありますよね? 作りました。 github.com $ text2svg "Hello, World\!" --font="/Library/Fonts/Times New Roman.ttf" > test.svg $ open test.svg -a /Appl…

RubyのTempfile.createが便利

Tempfileの実装を調べようとCRubyのコードを読んでいたら見知らぬコードを発見した。 それは僕がほしくてとっさに作ったものそのものだった(それ以上だった) http://docs.ruby-lang.org/ja/2.2.0/method/Tempfile/s/create.html Tempfile.createはTempfile.o…

jpegファイルフォーマットについてちょっと調べた

jpegファイルの構造がどうなってるのかなと思ってちょっと調べたのでまとめ。 jpegファイルは大まかに[ヘッダ+画像データ+フッタ]でできている。 jpegファイルは必ずFFD8ではじまる。 FFD8以降はヘッダの部分でJFIF形式になっている。 JFIF形式はこんな感じ…

Pure Ruby Queue

Pure Ruby Queue sample Threadを使ってQueueを書いてみた。 Queueってもっとmutexとか条件変数とかで難しい作りになってそうとおもってコード読んでみたら、ただのStructを継承したオブジェクトでコードも短かった。 これならRubyだけで書けるのでは〜と思…

RubyKaigi2014行ってきた

RubyKaigi2014行ってきた。 1年と4ヶ月ぶりぐらいのRubyKaigi。 去年(2013)は「せっかく東京に住んでるんだしプログラマ系のカンファレンスでも行ってみるかー」と確か一日だけ有給を使って2日目と3日目に参加してた。 ここで感化されてRubyを追っかけてたら…

さっそくプロセスプログラミングを役立ててみた

結婚式の写真が届いたので親戚に届けたい。 けどこれが3MB*700枚=2GBくらいのデータ量となってしまって、これをいきなりダウンロードしてねというのはあまり相手の環境を考慮していないだろう。 塊は塊でダウンロードしてもらうこともできるとして、webブラ…

なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 / Jesse Storimer

なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 #naruhounix を読んだ。 正直「プロセス?あれでしょ、なんか動くやつ。」というレベルだったので非常に勉強になった。 Rubyで書かれているのも、余計なこと(Cの文法とか例外処理とか)がついてこなくて理解しや…

mrubyを小さくしたり大きくしたりした話

最近mrubyにコミットしているので自分の活動をまとめます。 mrubyを小さくした話 mrubyでは、文字列の扱いはシンプルにchar*を構造体でラップしていました。 struct RString { MRB_OBJECT_HEADER; mrb_int len; union { mrb_int capa; struct mrb_shared_str…

大江戸Ruby会議04で話すことになった

自分でも何が起こっているのかわかりませんが、 大江戸Ruby会議04で話すことになりました。 http://regional.rubykaigi.org/oedo04/ 今から緊張で泣きそう。 何を話すか考えなきゃ。

RubyのArrayがSharedでOCCUPIED

ruby/ruby(trunk)にパッチを投げた。 https://github.com/ruby/ruby/pull/537 以下を処理するのにものすごく時間がかかる。 n = 1000000 a = (0..n).to_a;nil while a.shift(2).length != 0 end nが10000とかなら気にならないレベルなんだけど、1000000とな…

Arrayより1000倍遅く192倍速いGem、List v0.0.1リリース

Listというgemを書きました。 といってもインターフェースがArrayとの完全互換を目標にしているのでまだ未完成です。 なんせメソッドが多い。。。 でも待ちきれないので公開しちゃいます。 拡張ライブラリで書いているのですが、MRIの1.9.3、2.0.0、2.1.0に…

Digest::MurmurHash v0.3.0リリース

https://github.com/ksss/digest-murmurhash https://rubygems.org/gems/digest-murmurhash 最近はじめてピタゴラスイッチを見て、見ているうちに脳がオーバーヒートしそうになりました。 v0.3.0 Digest::MurmurHashというgemをアップデートしました。 アル…

mruby用のgem、mgemを3つ追加しました

追加したmgem https://github.com/ksss/mruby-limits https://github.com/ksss/mruby-murmurhash1 https://github.com/ksss/mruby-murmurhash2 mgem https://github.com/bovi/mgem https://github.com/ksss/mgem-list mrubyとmgem rubyでのrubygemsにあたる…

Digest::SipHash v0.0.1リリース

ksss/digest-siphash · GitHub digest-siphash | RubyGems.org | your community gem host 作る SipHash(https://131002.net/siphash/)のRuby実装がpureRuby版はあったのですが(https://github.com/emboss/siphash-ruby)、C拡張版かつDigest系のAPIを使用し…

Overflow v0.1.0リリース

https://github.com/ksss/overflow 勢いで作ったライブラリをちょちょっと整理してNumericクラスを継承させました。 だからどうということはあまりないのですが、Numericのメソッドが全て使えます。 http://docs.ruby-lang.org/ja/2.0.0/class/Numeric.html …

limits v1.0.0リリース

https://github.com/ksss/limits gem作成練習お題並に簡単なものなのですが、C言語の #include <limits.h> で宣言される定数をRubyで呼べるようにしただけのものです。 require 'limits' p Limits::CHAR_MAX みたいな感じで呼べます。</limits.h>

Overflow v0.0.1リリース

https://github.com/ksss/overflow とは言え作り途中なのに見切り発車的に出しちゃいました……! Rubyでは桁あふれは通常有り得ません。Fixnumを超える数値(0x4000_0000_0000_0000以上?)になるとBignumに自動的に切り替わります。 しかしbit操作をしてわざと…

Digest::MurmurHash v0.2.1リリース

というわけでDigest::MurmurHashの内部にあった、ただ文字列を溜めておくだけのクラスを切り出して別GemのDigest::StringBufferとして、これを継承するようにした版を作りました。 またMurmurHash2Aアルゴリズムを追加。ハッシュ値を数字として取り出すrawdi…

Digest::StringBuffer v0.0.2リリース

Digest::StringBufferというgemをリリースしました。 経緯 Digest::MurmurHashを書いていて、これがCRuybでbuilt-inのDigest::Baseを継承するように書いていたのですが、殆どのメソッドを上書きしているため「継承する意味ねぇ……」と思ったのでこれをやめま…

Digest::MurmurHash v0.1.0リリース

https://github.com/ksss/digest-murmurhash 昨日出したv0.0.1に引き続き改良を加え、v0.1.0をリリースしました。 変更点は以下 bench用スクリプト添付 メモリ管理を自前で実装 to_iメソッドの追加 bench用スクリプト添付 前回で5%しか速度が上昇しないとい…

Digest::MurmurHashリリース

現在「とりあえずDBMを作ってみようプロジェクト」をやっていて、効率はとりあえず無視してDBMの根本的な機能(get,set,delete)だけを実装するならすぐに出来てしまうので時間効率・空間効率をどれだけ高められるかの勝負になってきます。 そこで時間効率・空…

RubyのC拡張書くときのメモ

AsciiPack を書いている時にやりながら理解していった概念メモ 前提として読めるだけのドキュメント(README.EXT.ja,『Rubyソースコード完全解説』サポートページ,リファレンスなど)は読む。 C言語を書くときに考えなければいけないのがメモリ空間。 特にRuby…

ジョークで書いたrubyのMessagePackもどきgemをcで書いたら匹敵するぐらい早くなった

前回のあらすじ http://ksss9.hatenablog.com/entry/2013/10/19/131215 以前書いたAsciiPackというgemをrubyのコードからc拡張へと書き換えてみました。 AsciiPack https://github.com/ksss/AsciiPack 差分 https://github.com/ksss/AsciiPack/commit/d8a53d…

まつもとゆきひろ コードの世界 / まつもとゆきひろ

まつもとゆきひろ コードの世界?スーパー・プログラマになる14の思考法作者: まつもとゆきひろ,日経Linux出版社/メーカー: 日経BP出版センター発売日: 2009/05/21メディア: 単行本(ソフトカバー)購入: 50人 クリック: 1,711回この商品を含むブログ (108件)…

RubyKaigi 2013 / 東京国際交流会館

3日目も行ってきた。 2日目の悩みであった「実力不足」という問題について、zzak氏が見事に判例を挙げてくれた。「ドキュメントをそのまま実行してみてダメなら修正すればいい。こんなに簡単なんだよ。」みたいなことを(英語30点)言っていた。僕は実力がない…

RubyKaigi 2013 / 東京国際交流会館

http://rubykaigi.org/2013 Rubyに興味があるからCRubyのcommitterになりたい。 それが今の目標だ。 何故なりたいんだろう?仕事ではRubyは使ってない。プライベートでは最近はコードすら書いていない。なのに何故?ソーシャルゲームプログラマーが自分のア…

初めてのRuby / Yugui

初めてのRuby作者: Yugui出版社/メーカー: オライリージャパン発売日: 2008/06/26メディア: 大型本購入: 27人 クリック: 644回この商品を含むブログ (246件) を見る Rubyに関する基礎的な部分が書かれていた。 主な目的はリファレンスが引けるようになること…