text2svgをつかってfontawesomeをSVG化する

人気アイコンフォント、fontawesomeをSVG化したい。 そんな方にもtext2svgは便利にご利用いただけます。 fontawesomeでは指定のunicode毎にアイコンがフォントの文字として登録されています。 https://fortawesome.github.io/Font-Awesome/ この文字は公式サ…

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

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

RubyKaigi2015でLTした。

「A New Testing Framework Rgot」というタイトルで rgot についての紹介LTをしました。 スライドも公開しました。 発表では時間切れになって見れなかった最後の2ページも乗っています。 以下ダラダラとした話。 LTをやったのは初めて、トーク自体も二回目な…

font awesomeのunicodeを出力するヤーツ

Font-Awesomeという便利アイコンフォントがある。 これをkeynoteなどで使いたい場合、ローカルにインストールしてから、 各アイコン指定の\uf09bのようなunicodeを打たなければならない。 これを探すのもめんどくさければ、文字をキーボードから作れないので…

mgem3連投

mruby関連、最近は全然さわってなかったので少しだけアップデート。 mgem3連投 https://github.com/ksss/mruby-signal 昔作ったやつ。CRubyのsignal.cのほぼコピペ。 コードはコピペだし公式っぽい名前なので恐れ多くてブログにすら書いてなく完全に無告知だ…

korでテーブル変換サーバーが書けてた

ちょっと思いつきで、korで遊んでみた。 github.com KorはRubyのgemだ。Rubyは2.0.0から対応している。 これからのプログラムを走らせる準備をしておく。 $ gem install kor kor-output-json 短いサーバープログラムを書く。 server.rb #! /usr/bin/env ruby…

ISUCON5の予選を徹底的に復習する

ISUCON5の予選に参加して、圧倒的な差で負けたので、 この悔しさをバネに復習して、自分の力にしたいと思う。 今回のファイトではアプリの修正が特に重要であったように思う。 そこでアプリの修正に焦点を当てて、「こうすればよかった」を追っていき、自分…

7日間で7つのgemをリリースした

https://github.com/ksss/kor https://github.com/ksss/kor-input-json https://github.com/ksss/kor-output-json https://github.com/ksss/kor-input-ltsv https://github.com/ksss/kor-output-ltsv https://github.com/ksss/kor-input-yaml https://github…

korのjson出力プラグイン書いた

github.com 自分でも半信半疑だったので(!?)、ためしにkorプラグインを書いてみた。 これで、例えばmysqlのselect結果をJSONに変換する、といったことができる。*1 $ mysql -u root db -e 'select * from users limit 1' | kor tsv json --single [{"id":"…

プラガブルにcsvとかのテーブルデータを別の形式に変換するやつ作った。

github.com 名前はKorという、これまた厨二ネーミング。*1 rubygemsとして実装したので、 $ gem install kor でインストールできます。 csvやtsv、markdownのテーブル表記を、 これまたcsvやtsv、markdownに変換できる、 しかもプラガブルに拡張可能。 とい…

ISUCON5予選に参加した

チーム「かにかま」として、会社のインフラ同好会3人で出場した。 結果は大敗。 多分1700点ぐらいだったと思う。(上位は2万点ぐらい) 反省はたくさんあるけど、一つだけあげるなら 「まず落ち着け!!!」 「まず落ち着け!!!」 おそらく最初に設定されて…

複数行出力をドット'.'に変換するやつつくった

github.com 「ちょっとしたスクリプトが動いているのか確認したいから、 出力は出したいんだけど、 でもそんなにいっぱいは要らない。 なんか一行ごとに.だけ出してくれればいいんだけど。。。」 みたいなことありませんか? ありませんよね? 作りました。 …

URL一覧に全部アクセスしてHTTPステータスコードを付けるやつ作った

名前はballad。厨二ネームだ。 github.com READMEにあるように、こんな感じのことができる。 $ cat data.txt https://www.google.co.jp/ https://www.google.co.jp/a https://www.google.co.jp/b $ cat data.txt | ballad 200 https://www.google.co.jp/ 301…

rubygems type_structをリリースした

RubyはわりとHashオブジェクト中心なところがあって、 便利なその場限りのデータの塊として使ったり、キーワード引数として使ったりする。 でもやたらHashを使っていると、長いこと引数として使いまわしてしまい、 なんでも入れられるがゆえに「今ここでどう…

YAPC::Asia 2015行ってきた

前夜祭 OSSの話を聞いた感想としては、 基本的にソフトウェアは多くの人が使ってるから大丈夫だろうという感じで使うことが大半なので、 使われるソフトウェアは集中する。 なので9割9分のソフトウェアは、 どれだけ宣伝しようが誰にも使われなくて、 ほんの…

Rgotで並列/並行ベンチマーク

前回、前々回にひきつづき、コツコツつくっているgem Rgotはgo testを模しているので当然Benchmark機能をもっています。 go testコマンドでは-cpuオプションをつけると、並列するgoroutineの数と、runtime.GOMAXPROCSで設定できる使うCPUの数をオプションで…

RubyのRipperをつかって、go testのExampleを実装した

引き続きgolangのtestingパッケージをRubyに翻訳したRgotを作っていて、 Testing、Benchmarkは実装したので、Example機能を実装してみた。 機能はgolangのtesting packageにあるExampleとおなじを目指した。 Example機能が何かというと、プログラムのサンプ…

golangのtestingがよくわからなかったのでRubyにもってきた

Rubyのテストは主にassertionを書くものが多く、 「こうあるべき」に主眼をおいて書かれていることが多い。 しかしながらgolangはこのアンチテーゼというかおもしろい見方をしていると聞いて、 「どういうことだろう?」と思って気になったので調べていたらR…

RubyのTempfile.createが便利

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

mruby-methodぼんやりつくったよ

ksss/mruby-methodgithub.com Rubyコードで書かれたメソッドがどのファイルのどの行で定義されているのか調べることができて便利。 p Enumerable.instance_method(:find_all).source_location #=> ["mruby/mruby/mrblib/enum.rb", 148] ご活用ください。

mruby-stringioぼんやりつくったよ

ksss/mruby-stringiogithub.com ご活用ください。

コンソールのサイズが変わった時にコンソールサイズ(行/列)を取る

$ irb -r io/console irb(main):001:0>Signal.trap(:WINCH){ p STDIN.winsize } (この後めちゃくちゃウィンドウサイズを変える) 一応解説。 コンソールはサイズが変わる度にSIGWINCHシグナルを端末に送る。 そしてIO#winsizeでは内部でioctl(2)のTIOCGWINSZ…

雑な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つの方式があるように思う。(気が向いた時とかナシとすると) 先に作っとく サムネイルを先に…