@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Ruby

Ruby: WEBrick で HTTPS サーバを立てる (2)

Ruby: WEBrick で HTTPS サーバを立てる - @kyanny's blog では不十分だったので改良版。 既存の証明書と鍵を使う場合 鍵が RSA ではなく ECDSA の場合 WEBrick に自己署名証明書を自動生成させる場合 TODO: OpenSSL::PKey.read は鍵の種類を自動判別してく…

Ruby: 詳解 Process.detach

blog.a-know.me とてもわかりやすかった。 親プロセスに待たれることなく死んでしまった子プロセスは例外なくゾンビプロセスになってしまう(カーネルのキューに残り続ける、defunct, Z) Process.detach が内部的にやってくれていることは、「新しいスレッ…

Ruby でシンプルなキュー(データ構造)クラスを書いてみた

Thread で使われる Queue クラスと SizedQueue クラスを参考にした(おもにメソッド名など)。名前はかぶるので変えた。SimpleQueue · GitHub 探せばあるんだろうしこれでキュー(データ構造)として十分なのかもわからないけど、習作ということで。

nil をのぞく時、 nil もまたこちらをのぞいているのだ - Joe Ferris

http://robots.thoughtbot.com/post/8181879506/if-you-gaze-into-nil-nil-gazes-also-into-youこれを読んだ。 gaze ってなんだろとおもって辞書をひいたら「じっと見る、凝視する」とあって、なんか聞いたことあるフレーズだなと思って思い浮かんだのが「深…

POSIX 文字クラスで文字列から文字になり損ねたバイトを取り除く

英語で書こうと思ったけど難しくて挫折した。とあるサイトにワンタイムトークンつきの URL をメールで送る機能があり、とあるスマートフォン端末っていうか IS06 からその URL を踏むと末尾に空白文字がくっついてワンタイムトークンの文字列が一致しなくな…

Mocha::Expectation#with(&matching_block)

の使い方を覚えた。 with にブロックをあたえると expects に指定したメソッドと同じ引数を受け取り、ブロックが評価される。ブロックが真を返すかどうかが影響するので、ブロックの中に assert を書いたりしないように注意。以下のてきとうな例では、 LWP::…

Google Chrome の「検索エンジンの管理」にるりまサーチを追加する

いままで無意識に「ruby inject」とかでぐぐって赤いページを見ていたんだけどリダイレクトされるようになって permalink にたどりつくまでのステップ数が増えたので、この機会にスマートキーワード的に引けるようにした。 Google Chrome では設定 - 基本設…

rhtml-mode をいれた

emacs-rails 使ってたけど ERB なテンプレートで <% とかがインデントされないのがうざいなーと思ってて一年以上放置してたんだけど気合を入れていじらないと厳しいテンプレートを触ったので重い腰をあげて rhtml-mode を導入した。これは Rinari の一部って…

RAILS_ROOT/lib/tasks 以下にあるタスク*だけ*を実行する Rakefile2 の作り方

Rails デフォルトの db:* 系タスクを誤って production 環境で実行すると悲惨なので Rakefile は使いたくない しかしバッチ処理などは Rake タスクとしてまとめておきたい(console で都度実行するのはオペミスが怖い) という事情があって、個別にスクリプ…

Rails のセッションと MemCache (かきかけ)

Rails でセッションの保存先に :mem_cache_store を指定してる場合に、具体的にどういうキー名で保存されているのか知りたくてソースを読んだ。ついでに memcache-client のソースも読んだ。そのときのメモ。結論からいうと、 "{namespace}:session:#{sessio…

xmlrpc/create の conv2value のなかで NilClass 例外で死ぬときは XMLRPC::Config::ENABLE_NIL_CREATE = true にすると回避できる

タイトルママ。該当部分のコード抜粋 (xmlrpc/create.rb より) when NilClass if Config::ENABLE_NIL_CREATE @writer.ele("nil") else raise "Wrong type NilClass. Not allowed!" end こうなっているので XMLRPC::Config::ENABLE_NIL_CREATE に true をセッ…

Net::HTTP#set_debug_output

Net::HTTP で通信してる内容をのぞくには set_debug_output に io を渡す。ヘッダもボディも全部出るので外部 API の呼び出しをするコードのデバッグとかに便利。 http = Net::HTTP.new('example.com', 80) http.set_debug_output($stderr) http.get('/') あ…

nonopaste-cli を書いた

kazeburo さんの NoNoPaste 向けにコマンドラインツールを書いた。https://github.com/kyanny/nonopaste-cliイントラネットに NoPaste 的なものを導入しているところは多いと思いますが、コードや設定ファイルの類を気軽に貼りつけて共有する際にいちいちマ…

RubyKaigi 2011 attendee

I got a ticket for RubyKaigi 2011 as individual sponsor. I also got official party attendee.Last year I could not go to RubyKaigi because of bad health condition. This year I hope to attend full this kaigi.

渋谷周辺の Rubyist でランチに行ってきた(四回目)

ゴールデンウィークあけ一発目でした。今回は自分の連絡ミスで iori さんに迷惑をかけてしまった。問題点が浮き彫りになり、対策案をいろいろだしてもらった。話題は、「普段使い(仕事に限らず)の Ruby は 1.9 ですか?」「仕事でウェブサイトを作るとき、…

渋谷周辺の Rubyist でランチに行ってきた(三回目)

渋谷周辺の Rubyist でランチに行ってきた(二回目) - 刺身☆ブーメランのはてなダイアリー 前回に引き続き、渋谷周辺の Rubyist つながりでランチに行ってきました。今回も四名の参加。毎度ながら、ありがとうございました。今回は Ruby の話題は少なめで、…

渋谷周辺の Rubyist でランチに行ってきた(二回目)

渋谷周辺の Rubyist でランチに行ってきた - 刺身☆ブーメランのはてなダイアリー前回に引き続き、渋谷周辺の Rubyist というゆるいつながりでランチに行ってきました。今回は四名の参加。このくらいの人数だと席の心配をしなくていいので気が楽ですね。参加…

渋谷周辺の Rubyist でランチに行ってきた

大江戸Ruby会議01に行ってきた - 刺身☆ブーメランのはてなダイアリーで「渋谷周辺の Rubyist で何かやりたい!」という話が盛り上がったので、さっそくランチに行ってきました。参加者は @bash0C7 @1syo @mori_dev @KitaitiMakoto @kyanny の五名。みなさん…

大江戸Ruby会議01に行ってきた

大江戸Ruby会議01 - Regional RubyKaigiに行ってきた。 Asakusa.rb の皆様、発表者の皆様、ありがとうございました。とても楽しかった。以下、例によって感想をつらつらと。 100.times { Asakusa.rb.meetup! }, @a_matsuda コミュニティとは、みたいな話が聞…

gem ソムリエになる方法

http://d.hatena.ne.jp/tokuhirom/20080520/1211292598の Ruby 版があるといいなと思ったので、自分で書いてみます。「もっといいやり方があるよ」という方からのフィードバックをお待ちしています。 ruby-toolbox.com をみる 僕の知る限り、 rubygems には …

Shoulda

WEB+DB PRESS Vol.61 の特集「Rails 3 テスト最前線」を読んだ。 shoulda についていままで勘違いしてた。 RSpec の方言みたいなものかと思っていた (ので RSpec 使えばいいんじゃないのと思っていた) んだけど違った。 Test::Unit ベースのテストコードを R…

TMail でメールに添付された画像ファイルを取り出す

いまなら mail 使ったほうがいいんだろうけども。https://gist.github.com/848966 raw_message = STDIN.read email = TMail::Mail.parse(raw_message) if email.has_attachments? email.attachments.each do |attachment| image = attachment.read filename …

factory_girl またはその他の fixture replacement で親子関係のあるモデルクラスを定義するのがなぜ難しいかという話

長いな。うまくかみ砕けてない証拠ですね。GitHub みたいなものを作ってるんだと思ってください: こういうモデルがあるとする。有料課金していないユーザーは非公開レポジトリを1個までしか作れない。 class User < ActiveRecord::Base has_many :repositori…

Rails勉強会@東京第60回に参加した

Rails' Wiki - RailsMeetingTokyo-0060に参加した。だらだらっと感想を。前回の参加は2010/06/19だったようなので(ブログに書きそびれた回がなければ)半年以上も前。ずいぶん久しぶりだった。今回はポジションペーパーを用意して行った(書いたのは当日家を出…

AWS Elastic Beanstalk で Sinatra を動かしてみた

*.war とかよくわからないけど適当にぐぐってたらどうにか Hello, world! できた。 EC2 のインスタンスあげっぱなしだとお金かかるのでデモは無し。ソースとかココ https://github.com/kyanny/sinatrahelloworldonawselasticbeanstalksinatrahelloworldonaws…

Numeric#new と Integer#new

Numeric.new はできるけど Integer.new はできない。へー。だからどうしたという。でも「へー」と思ったので書いとく。 $ rvm 1.9.2 $ irb ruby-1.9.2-p136 :001 > Numeric.new => #<Numeric:0x0000000a329a88> ruby-1.9.2-p136 :002 > Integer.new NoMethodError: undefined method `n</numeric:0x0000000a329a88>…

第三章 水曜日 ブロック

yield, block_given? ブロック、クロージャ、スコープ スコープゲート、「スコープの門」 (スケープゴートと見間違えやすい) class, module, def 余談: Perl の my $var = 1 と Ruby の var = 1 は全然違う (理解できてなかった) http://floralcompany.jp/ar…

第二章 火曜日 メソッド

動的ディスパッチ send class Dog def bark "bow wow!" end end Dog.new.send(:bark) #=> "bow wow!" パターンディスパッチ instance_methods.grep /pattern/ class Dog def bark "bow wow!" end end method = Dog.instance_methods.grep(/bark/).first Dog.…

mock の使いどころが少しわかってきた

以前 [ruby] RUBY_PATCHLEVEL の値, [ruby][rr][rspec] mock と stub - HsbtDiary(2010-10-25) を読んで、おれも mock と stub をどう使い分けたらいいのかちゃんと理解できてないなーとずっともやもやしていた。で、今日仕事でテストを書いていたら(えぇ、…

第一章 月曜日 オブジェクトモデル

インスタンス変数はオブジェクト自身に属する メソッドはクラスに属する オブジェクトはクラスへの参照を持っている だからメソッドを呼べる クラスもオブジェクト (Class クラスのインスタンス) ここまだ理解しきれてない気がする・・・ 定数 == ディレクト…