読者です 読者をやめる 読者になる 読者になる

雑なServerベンチマーク

気になって比較してみた。 https://github.com/ksss/server_benchmark golangのnet/httpパッケージによるサーバーとunicorn+sinatraサーバーの比較。 並列数4、手元のMBPでabして試してみた。 golangのサーバーのほうが5倍近くのリクエストを捌けているので…

golangの練習にgoでminimagickっぽいやつ書いてみた

ksss/go-minimagickgithub.com minimagick.ConvertNew().Resize("100x100").Add("some.jpg", "out.jpg").Run() なかでexec.Commandを呼んでいるだけ。 普通にコマンド打てばええやんという感じもする。

同じソケットを複数プロセスでacceptしてみるテスト

例えばあるサーバープロセスを無停止で新しいコードでビルドしたものと置き換えたいとする。 その場合、たとえ一瞬でも複数プロセスが同じソケットをacceptできるようになっていなければならない。 それがどういう仕組なのかなと思って調べた。 gist7a898e3e…

IPが変わりゆくAWS EC2インスタンスにServerspec流す場合について本気出して考えてみた

Serverspec作者: 宮下剛輔出版社/メーカー: オライリージャパン発売日: 2015/01/17メディア: 単行本(ソフトカバー)この商品を含むブログ (3件) を見る Serverspec本を読んだので実践してみた。 EC2インスタンスはPublic IPが変わる可能性がある。 新しいイ…

ToriがS3に対応した

何もしないファイルアップローダーTori - スペクトラム 何もしないファイルアップローダgem Toriに(僕だけが)待望の新機能、S3ストレージ対応を導入させた。 README.mdから引用すると、Railsとかで gem 'aws-sdk' gem 'tori', require: ['tori/rails', 'tori…

S3対応のファイルキャッシュもできるimagemagickを使った雑なサムネイル生成サーバ

いくら画像処理が早くても、元々の画像が何MBとなるとS3から引っ張ってくるだけで数秒かかってしまう。 そこで、自分でファイルキャッシュできて画像処理もこなす雑なサムネイル生成サーバーが誕生した! 特徴 外ホスト対応 今回はパス指定が http://imagema…

何もしないファイルアップローダーTori

Toriというgemを書いた。 ToriはPaperclipやCarrierwaveなどと同じくファイルのアップローダ。 ファイルアップローダは機能が豊富だったりする反面、ハマることが多かったり結局コードを読むことになるけど、機能豊富がゆえコード量に気が滅入ったりする。 …

ngx_mrubyでつくる簡単な動的サムネイル生成サーバー

動的サムネイル生成 サムネイルは、ユーザアップロード画像を扱うアプリではほぼ間違いなく使われると思う。 サムネイルの生成には、先に作っとくか、後で作るかの2つの方式があるように思う。(気が向いた時とかナシとすると) 先に作っとく サムネイルを先に…

趣味アプリを作ると学べる

趣味アプリを最近コツコツ作っていて、これが劇的な学びになっていると思っている。 仕事の場合は価値を生み出すことが主目的なので、学びは副産物になる。 しかし、趣味アプリを作ると価値を生み出すことを放棄しているので、学びに集中できる。 ポイントは…

11ヶ月前のruby/rubyへのPRが採用された

RubyのArrayがSharedでOCCUPIED - スペクトラム RubyのArrayがSharedでOCCUPIED - スペクトラム https://github.com/ruby/ruby/pull/537 11ヶ月前のブログに書いたPRが採用されたようです。 まあ大した修正でもないし、「GitHubを見ているコミッタは暇人だけ…

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

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

Pure Ruby Queue

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

Rubyでepollできるgem 'epoll'を作ってみた

epoll | RubyGems.org | your community gem host ksss/epoll · GitHub epollはnginxやnode(libuv)などでも使われている、大量のファイルディスクリプタを効率よく監視するためのAPIのことです。 イベントドリブンI/O epoll APIはLinuxでのみ(たぶん)動作し…

スティーブ・ジョブス / ウォルター・アイザックソン

スティーブ・ジョブズ I作者: ウォルター・アイザックソン,井口耕二出版社/メーカー: 講談社発売日: 2011/10/25メディア: ハードカバー購入: 58人 クリック: 5,321回この商品を含むブログ (346件) を見る アメリカいってきた 会社のイベント?でNYとSFの合計…

RubyKaigi2014行ってきた

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

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

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

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

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

YAPC::Asia2014行ってきた

YAPC::Asia初参加だけど行ってきた。 去年はチケット取ってたのにちょうど新婚旅行とかぶって見に行けなくて悔しい思いをしていた。 YAPC::Asiaは、なんかこう全体的な「楽しみたい!」とか「もっと良くしたい!」みたいな気持ちというかパワーというかが強…

転職して株式会社spice lifeに入社し、結婚式をした

六月三十日に前職を辞め、七月一日に株式会社spice lifeで働き出し、七月二十日に結婚式を挙げた。 TL;DR 昔話します。 五年前 僕はプログラマですらなかった。 情報系の大学を卒業したけど、プログラムは飯の種であり、プライベートではバンドやったり、絵…

まずやってみることの大事さ

最近まずやってみることの大事さがわかってきた。 ものごとを良くするには改善だったり問題解決をするわけだけど、 そのためには改善や問題解決を「やりたい」と思えなければそもそも問題に気付くことすらできない。 プラムを食べたことがなければプラムを食…

光圀伝 / 冲方丁

光圀伝 電子特別版 (上) (角川書店単行本)作者: 冲方丁出版社/メーカー: KADOKAWA / 角川書店発売日: 2012/10/26メディア: Kindle版 クリック: 7回この商品を含むブログ (10件) を見る 光圀伝を読んだ。 江戸時代初期、二代目水戸藩藩主・徳川光圀の生涯が…

mrubyでFile::Statつくった

https://github.com/ksss/mruby-file-stat mrubyでFile.mtime('file')としようと思ったらmruby-ioでも実装されていなかった。 そういえばファイルに関する情報をいろいろと取得したいのならC的にはstat(2)を使えばいいっぽい。 これをラップしたオブジェクト…

mrubyのmrubyバインディングmruby-mruby

追記: リポジトリ名を変えました。 https://github.com/ksss/mruby-research 名前は仮だけどmruby-mrubyというライブラリを書きはじめた。 https://github.com/ksss/mruby-mruby mrubyにとって得意なことの一つにCのAPIをいい感じの言語(すなわちRubyの文法)…

大江戸Ruby会議04で話さなかったこと

大江戸Ruby会議04で「mruby hacking guide」というタイトルで話した。 スライドはこちら。 https://speakerdeck.com/ksss/mruby-hacking-guide mrubyを開発する人、使う人が増えればいいなという狙いだったんだけど、うまくいっただろうか。 2014/02/04からA…

mrubyにコミットするのが日常になってきた

僕が最初にmrubyにコミットしだしてから1ヶ月半くらいが経ったけど、 未だにコミットが続いている。現時点で59commitらしい。今ココ 前回の記事以降では Enumeratorのバグ修正と各メソッドでEnumeratorをサポートできるところを追加しまくった。 細かなバグ…

mruby-ostructリリース

https://github.com/ksss/mruby-ostruct CRubyのOpenStructをmrubyに移植しました。 前からあったにはあったけど、mruby側で動的にsingleton methodを作るKernel#define_singleton_methodがなかったのでただのHashのラッパーになっていました。 自力でKernel…

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/ 今から緊張で泣きそう。 何を話すか考えなきゃ。

アカルイミライ / 黒沢清

映画「アカルイミライ」を観た。 大学生の時にTHE BACK HORNがEDを歌っているからという理由で観たんだけど全然意味がわからなくて終わるときも「え、そこでおわんの!?」と思った。 時は7年位経って、それでも不思議と僕の中でこの映画のことは頭のなかか…

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を使用し…

暗号解読 / サイモン・シン

暗号解読〈上〉 (新潮文庫)作者: サイモンシン,青木薫出版社/メーカー: 新潮社発売日: 2007/06/28メディア: 文庫購入: 30人 クリック: 216回この商品を含むブログ (230件) を見る 暗号解読 下巻 (新潮文庫 シ 37-3)作者: サイモンシン,青木薫出版社/メーカー…

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)だけを実装するならすぐに出来てしまうので時間効率・空間効率をどれだけ高められるかの勝負になってきます。 そこで時間効率・空…

脳はなぜ「心」を作ったのか / 前野隆司

脳はなぜ「心」を作ったのか「私」の謎を解く受動意識仮説 (ちくま文庫)作者: 前野隆司出版社/メーカー: 筑摩書房発売日: 2010/11/12メディア: 文庫購入: 15人 クリック: 39回この商品を含むブログ (6件) を見る ここまで主観的な考えを突っ走って書かれた本…

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…

文字だけのMessagePack風シリアライザ「AsciiPack」を書いた

きっかけは@miyagawaさんのpodcastだった。 それまでMessagePackのことは知らなくて、その時に調べた段階ではJSONをバイナリでどうこうするというフワフワした情報だけしかわかってなかった。 それからアンテナ効果なのかMessagePackの情報が次々と入ってく…

LLまつり

LLまつりに参加してきました。 http://ll.jus.or.jp/2013/ 行けるものならとりあえず行くの精神で参加してみた。 一つ違和感を感じたのはCEDEC2013でもあった「目的」についてだった。 CEDEC2013で最もつまらなかった発表の中に「クリエイターは技術ばっかり…

CEDEC2013 3日目

CEDEC2013の3日目に参加してきた。 http://cedec.cesa.or.jp/2013/ ゲームとはなんだろう? 僕は子供の頃ひたすらゲームをした。それしかすることがないかのように。 誕生日に、クリスマスに、こどもの日にプレゼントの全てはゲームに費やされた。 ネトゲも…

風立ちぬ / 宮崎駿

突風が吹いて、そしてやんだ。そしてその風の意味について考え始める。そんな映画だった。 テーマについて: 最初は大東京トイボックスのような仕事に対して苦悩したりそれを自分の力で乗り越えたりするようなストーリを勝手に期待して観ていた。だから菜穂子…

情熱プログラマー / Chad Fowler

情熱プログラマー ソフトウェア開発者の幸せな生き方作者: Chad Fowler,でびあんぐる出版社/メーカー: オーム社発売日: 2010/02/26メディア: 単行本(ソフトカバー)購入: 24人 クリック: 683回この商品を含むブログ (123件) を見る なりたいものがある。一…