KLab若手エンジニアの これなぁに?

KLab株式会社の若手エンジニアによる技術ブログです。phpやRubyなどの汎用LLやJavaScript/actionScript等のクライアントサイドの内容、MySQL等のデータベース、その他フレームワークまで幅広く面白い情報を発信します。

Ruby

ソースコードをkindleで読もう

こんにちはtakada-atです。 わたしはkindleユーザーで、毎日通勤電車の中でkindleを使ってます。 持ち歩くのが難しい重い技術書などもkindleなら簡単に持ち運べて、どこでも読めて、しかもどこでも購入できるので大変重宝してます。英語コンテンツ以外が少ないのが難点ですが、勉強と割り切って英語中心に読んでます。 慣れてくると欲がでてきて、「ソースコードもkindleで読みたい!」と考えるようになりました。 ソースコードをkindle用の形式に変換してくれるツールを探したんですが、無かったのでつくってみました。




https://github.com/takada-at/sc2epub

■しくみ

  • epub形式のファイルはxhtmlに、表紙・目次などのメタデータを追加して、zip圧縮したものです。
  • そこで sc2epub では、ソースコードを PREタグでかこんで、xhtml に変換し、目次など、必要なファイルを追加します。
  • またMakefile を生成し、zip 圧縮や kindle用のmobiフォーマットへの変換を簡単にします。
  • epub から mobiファイルへの変換には、amazon公式のkindlegen を利用できます。
  • http://www.amazon.com/gp/feature.html?ie=UTF8&docId=1000234621

■インストール


$ gem install sc2epub

■使い方

sc2epub <変換したいソースコードのディレクトリ> <生成されるディレクトリ> <プロジェクト名> という風に使用します。 例として readline-5.2 のソースを変換します。 "~/src/readline-epub" というディレクトリを作成します。

$ sc2epub ~/src/readline-5.2 ~/src/readline-epub readline
$ cd ~/src/readline-epub
$ make

ここまでで readline.epub というファイルが生成されます。 mobi ファイルを作成するためには先に kindlegen コマンドをパスの通った場所にインストールしておく必要があります。 kindlegen コマンドは以下から入手してください。 http://www.amazon.com/gp/feature.html?ie=UTF8&docId=1000234621 kindlegen コマンドがあれば、以下のように mobi ファイルを作成できます。

$ make kindle

readline.mobi というファイルが作成されるので、あとはこちらを kindle にコピーして読むことができます。

■使用感など

ページの端で折り返されるので、若干読みづらいですが、読めないことはないです。 kindle側でtypeface をcondensed に変更し、フォントサイズを小さくすると読みやすくなるようです。

■ 参考資料

epubフォーマットについては、以下のページなどを参考にしました。

クックパッド様と合同勉強会を開催しました!

12/16(水)に、先日の交流会でお世話になりましたクックパッド様を弊社にお招きして勉強会を開催いたしました!
勉強会の様子


今回は、クックパッド様から2テーマ、KLabから2テーマの発表がありました。 まずは、KLabから nagai-k が『OpenSocialアプリ入門』というテーマで発表しました。
発表中のnagai-k


ソーシャルアプリではどんな風なやりとりが行われているのか、APIの使い方など、ソーシャルアプリの基本となる部分について、分かりやすく解説していただきました!ソーシャルアプリといえば、今もっとも熱い分野のうちのひとつです!弊社でも開発に力を入れており、クックパッド様からも弊社側からも多くの質問が上がり、まさにホットな話題を提供してくださいました! 発表資料はこちら! 次に、同じくKLabから sasaki-k が『全文検索エンジンSolr試食』というテーマで発表しました。
発表中のsasaki-k


全文検索エンジンSolr(ソーラ)のしくみ、実際に使ってみての気づきなどを発表してくださいました!(魚)料理の試食になぞらえての発表で、笑いを誘いつつ大いに盛り上がりました!Solrはまだ知名度の低い技術ですが、今回の勉強会で注目してもらえたのではないか、とsasaki-kも手ごたえのあった様子(後日談)。これからの動向に期待大です!! 発表資料はこちら! 続きまして、クックパッド様の発表に移りました。 まずは、最高技術責任者(!)の橋本様から、『クックパッドのRailsリニューアル』というテーマで発表いただきました。
発表中の橋本様


なんと、Railsがまだベータ版だった2005年から、そのすばらしさに自信を持っていらっしゃったそうです!また、クックパッドサイトのリニューアルは2008年に行われたそうなのですが、その前に「たべみる」というサイトを、なんと開発開始からわずか1ヶ月でオープンさせることができたそうです!そのスピード感…尊敬します!! 次に、開発の森田様から、『Railsでのテスト駆動開発』というテーマで発表いただきました。
発表中の森田様


クックパッドサイトの開発中に、どのようなやり方でテストを行っているのか、実例も交えながらお話していただきました!かなり内部的なことも係ってきてしまうので、詳しくお伝えできないのが残念ですが、実際のテスト時の動作画面も見せていただくことができました!こういった勉強会の場でなければ見られない、貴重な体験をさせていただき、本当にありがとうございました!! ここで、勉強会は一旦終了し、懇親会に移りました。 懇親会では、お酒も入りw、クックパッド様と弊社の技術者が語らう、熱い夜となりました!! お越しいただいたクックパッドの皆様、本当にありがとうございました!

デプロイ時に実況中継するIRCボット

ども、amo-kです。 先日デプロイ時に実況中継するIRCボットを作ったのでこれについて。 KLabでは通常、 テスト/本番環境に最新のプログラムソースコードを反映する際に 以下のような手順を踏む。 1.踏み台サーバにログイン 2.SVN Export 3.アーカイヴ作成 4.テスト/本番環境にアーカイヴをアップロード 5.テスト/本番環境のコマンドを実行し、アーカイヴ解凍、各Webサーバに同期 6.お掃除 通常はこれを1コマンドで実現するためにデプロイスクリプトを書いて そのスクリプトを実行する事でデプロイすることとなる。 その際に、デプロイした人はターミナルをチェックしていれば スクリプトの標準出力で進捗を把握できるが、たの案件メンバは解らない。 そこで、デプロイ実況中継をするIRCボットを作ってみた。 今回は特定のキーワードに反応したり、待機する必要がないので 各ステータス毎にIRCサーバに接続、チャンネルJOIN、レポート、切断ということをする 非常に単純なボットを作った。 以下、IRCクライアント画面サンプルとサンプルソースコード 工夫した点は特に無いが、ライブラリを使わずに TCPコネクションを張ってIRCサーバと通信している点が若干特徴的かもしれない。 IRCクライアント画面キャプチャサンプル
デプロイ時に実況中継するIRCボット


サンプルコード
#!/usr/bin/ruby

require 'socket'

chan = ARGV[0]
msg  = ARGV[1]

sock = TCPSocket.open("localhost", 6667)
sock.send("NICK DeployBot\r\n", 0);
sock.send("USER DeployBot localhost localhost :DeployBot\r\n", 0);
sock.send(sprintf("JOIN #%s\r\n", chan), 0);
sock.send(sprintf("NOTICE #%s :<-------------- %s -------------->\r\n", chan, msg), 0);
sock.send("QUIT\r\n", 0);
sock.readlines
sock.close

最初はphpで


を使って実装しようと思ったんだけど 実は踏み台サーバでsocket関数が有効になっていなかったので、設定するのが面倒でもうRubyで杜撰に書いちゃおうと思ってRubyで書きましたww
 KLab若手エンジニアブログのフッター