no_picture

GitHub戦闘力を提案してみた - 座駆動LT大会

座駆動LT大会で「戦闘力」というLTをしてきました。 座駆動LT大会とは、岡山にはRyouteiという素晴しいお店があり、そこの座スタジアムという部屋は非常にLTに適した場所です。 大都会岡山が誇る最強の懇親会会場「Ryoutei 座・スタジアム」でLT大会を開催します! というわけで、今回参加してきた時のスライドを紹介します。 戦闘力といえば、Vim戦闘力やEmacs戦闘力がありますが、GitHub戦闘力を適当に定義してみました。 スターの数がGitHub戦闘力と言われているのもみかけましたが、折角なのでいろいろ考えてみました。 実はオープンソースカンフェレンス2014広島のために制作しているものの中でGitHub APIを使用してつくっていたものがあり、そのノウハウで、そのついでに作成したのが今回のgithub_scouterです。 eiel/github_scouter · GitHub オープンソースカンファレンスは今週末の土曜日、2014年9月20日に予定されています。 予約数があまり多くないらしいので、今後も継続して欲しいと考えている方は参加や告知を協力していただけると助かります。 ちなみに私はLT駆動開発ベストセッションズでLTをする予定です。 閑話休題。 今回はGitHub戦闘力を攻撃力、知力、すばやさの3種類に分けて戦闘力を定義しました。 攻撃力は所有リポジトリを元に算出しました。 知力はさまざまな言語を利用していると高くなるようにしました。 すばやさはOrganizationの情報を元にチーム力の高さとして算出しました。 と、非常にどうでもいい戦闘力ですが、みなさんも御自分の戦闘力を算出してみてはいかがでしょうか。 また、APIの利用しすぎにご注意ください。 .@eielh 「わたしの戦闘力は168Gです」 #zadrvnlt — (っ’ヮ’c) < 君のほうがかわいいよ (@ryosms) 2014, 9月 13 かけ算バージョンは表計算で出したので、コマンドを用意していません。 0にならないように1を加えてからかけ算しています。 今後、計算式を定義しなおしてVersion2も検討したいと考えているのはまた別の話です。 追記 Gem化して欲しいって要望があったのでしておきました。 $ gem install github_scouter $ github_scouter [GitHub ID] で利用できます。

no_picture

rackup で ruboty

ruboty を heroku で動かすついでに web アプリケーションとして扱いたい。 その場しのぎで書いたコードを紹介する。 config.ru の中で別スレッドを起動して Ruboty#run を走らせた。 # Rackアプリになるように call メソッドを実装 module Ruboty::Web def call(env) [200, {'Content-type' => 'text/html'}, ['hello, world']] end end Ruboty::Robot.include(Ruboty::Web) Thread.new do robot.run # bot起動 end run robot # rack アプリを構築 heroku では 1X dynos でもスレッドが 256 個ぐらい起動できるっぽいしきっと大丈夫だろう。いや、わからんけど。 参考: Limits | Heroku Dev Center シグナル処理も追加したほうが良い気がするけど、とりあえず気にしない。 そのうちウェブアプリを構築しやすくする方法を考えたい。 関連 hubot で起動しているウェブサーバを経由して idobata へ投稿してみる

no_picture

Twilio を使って、着信でモールス信号してみた。

Twilio API 勉強会に遊びにいった。 勉強会では基本的なことを学んだ。 電話をかけたときの動作を登録したり、電話をかけたりしました。 せっかくなので、なにか作ってみることにした。 以下、完全にネタです。実用性皆無です。 あとサービスにどれくらい負荷がかかるのかよくわからないので、試す場合はほどほどにしましょう。 たぶん、もう二度と試さない。 着信する長さが一応調整できるのでモールス信号してみました。 コードは以下の感じ。 require 'twilio-ruby' require 'morse' account_sid = 'account_sid を設定する' auth_token = 'auth_tokenを設定する' @client ||= Twilio::REST::Client.new account_sid, auth_token TWILIO_NUMBER = 'Twilio で作成した電話番号を登録する' MY_NUMBER = '自分の電話番号を設定する' def call(n) call = @client.account.calls.create( from: TWILIO_NUMBER, to: MY_NUMBER, url: 'http://example.com/', timeout: n, ) puts "create call #{call.sid}" loop do call = @client.account.calls.get(call.sid) puts "call status #{call.status}" case call.status when 'no-answer', 'completed' sleep(1) break when 'failed','canceled'

no_picture

そういえば彼氏募集というネタリポジトリがありましたね。真似するならこんな感じかなぁ。

最近、C++界や、ひろし魔界で暴れているらしいまさかず氏が彼氏募集のリポジトリを真似して彼女募集のリポジトリを作成してました。 条件さえ揃えば真似してもよかったのですが、条件が揃ってなかったので真似してませんでした。 気がついたら条件が揃ってたので真似してみることにしてみました。 eiel/need_a_girlfriend - GitHub やったこと fork したけど 空のブランチつくって、fork元とはコード的には関係をなくした Haskell で DSL したかった。結局、Writer モナドの上に構築した。 source ブランチを push すると travis で README.md を生成して master ブランチに自動で push する リポジトリの名前を変更した fork したけど 空のブランチつくって、fork元とはコード的には関係をなくした fork したので、その上から上書きしてもよかったのですが、だいぶ違うし、ゼロからつくりたいけど fork したことは残したいよね。 ということで空のブランチをつくってから作りました。 git checkout --orphan <branch名> で空のブランチが作れます。 Haskell で DSL したかった。 README.md は手書きせずにプログラムから生成するようにしてみました。 まさかず氏を真似ただけである。 Haskell で DSL 作るのにはどうしたらいいんだろうなぁ。たぶんモナド作ればいいんだろうと、コード書きはじめたけど、途中でよくわからなくなった。 それはそれで別に勉強すればいいやということから途中から Writer モナドでつくりました。 background = do h1 '背景' p 'ほげほげごろごろ' みたいに書きたかった。というか、このように書いてから h1 や p 関数を実装しました。 Writer モナド は

no_picture

ruby-build の プルリクエスト バトル

ネタです。 最近もろもろな事情で Ruby がリリースされることが多かったですが、ruby-build の更新を待っていた人はどれくらいいるでしょうか。 みんな待ちきれなくて自分で ruby-build のレシピを書いたんではないでしょうか? そして「俺がと プル リクエストをおくるんだ!!」と燃えたのではないでしょうか? これを Ruby のリリースがあるたびに発生する ruby-bulild プルリクエストバトルだと勝手に想像して楽しんでいます。こんばんは。 僕の場合はだいたいなぜか rbenv のほうをみにいって、「まだ更新がないないなー」っておもってレシピをかくんですが、書いたあとに ruby-build だったと気づく馬鹿なことをしているだけだったりしますが 今日も Ruby 2.0 のリリース がありましたが、このプルリクエスト バトル の行方はどうなったのでしょうか。 https://github.com/sstephenson/ruby-build/pull/299 https://github.com/sstephenson/ruby-build/pull/301 同じ Issue を立てないように気をつけたいですね。 それと Ruby 20周年おめでとうございます。 ついでにレシピの書き方 ネタだけで終わるのもあれなので。 ~/.rbenv にインストールしている場合は ~/.rbenv/plugins/ruby-build/share/ruby-build/ にレシピが配置されています。 今回の 2.0 の場合は install_package "openssl-1.0.1e" "https://www.openssl.org/source/openssl-1.0.1e.tar.gz#66bf6f10f060d561929de96f9dfe5b8c" mac_openssl --if has_broken_mac_openssl install_package "ruby-2.0.0-p0" "ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz#50d307c4dc9297ae59952527be4e755d" とか前のバージョンを参考にして書けばよいです。簡単ですね。 なんでこんなことかいたのか なんで push してないんだー。って怒られたので Ruby 2.0 リリース & 20 周年 おめでとー。とかそういう記事書きたいじゃないですか