RubyのコードでHash型の変数名の末尾に_hを付けていたら社内のモヒカン達にボッコボコにされた。 sora_h「分かりにくい」 hotchpotch「Rubyでハンガリアン記法はありえない」 mrkn「データ構造を赤黒木に変更したくなった時に困る」 miyagawa「Perlならそんな問題は起こらない」 negipo「sora_hとsora_aをsorasにして衝突させよう」
こんにちは。Railsのプラグインが作りたいです。 ということでRailsプラグインの作り方を調べていたのですが、id:sora_hから $ rails plugin new plugin_name でひな形出来るよと聞いて喜びいさんでやってみたらテストがTest::Unitで出来ていた時の僕の絶望は筆舌に尽くし難かったです。 ということでRSpecでテストしたかった。ついでにいうとRailsでRSpec使うときみたいにしたかった。 んでソース見てみたんですがなんかやりにくそうだし嫌だなぁと思ってたんですが、案外さっぱりできました。 ようするにダミーのRailsアプリケーションを作ってそいつは開発中のgemを読み込んでダミーRailsアプリに向かってテストすればいいだけです。 ちょっともう眠いのであんまり長くまとめられませんが、だいたいどうすればいいかはGitのログを見るとわかると思います
2012年04月19日 最近、新人のテストコードを見る機会があり、ユニットテストの書き方について考える機会があった。ユニットテストはテンプレートみたいなものがあるので、それさえ押さえれば、誰でも簡単に書くことができる。 ここでは、その方法について紹介したい。サンプルはRSpecで書くが、その他のユニットテストフレームワークでも、応用ができるとおもう。 はじめにごく単純化すると、テスト対象は状態を持ち、入力を与えると何らかの出力を行なうものである。入力が変われば出力は変化するし、状態が変化すると入力が同じでも出力が変わる(かもしれない)。 ユニットテストは、テスト対象の状態を操作し、与えた入力によって意図通りの出力を得られるかを確認する作業のことをいう。なので、ユニットテストを書くときには、オブジェクトの状態ごとにメソッド単位で入力と出力を確認するようにする。 RSpecの疑似コードで書くと
2012年03月22日09:45 カテゴリLightweight Languages 勝手に続編 - 言語女子会2.1:varは必要?/privateがない? あれ?まとめちょっと早くありませんこと? 言語女子会2: varは必要?/privateがない? - 西尾泰和のはてなダイアリー Perl: 春ねえ。 JavaScript: 春ですねえ。 Perl: 花粉症のあなたには辛い季節ねえ。 JavaScript: え?花粉症? Perl: スコープ作るたんび、function、functionって、あなたと付き合ってるプログラマーもつらいわよね。 JavaScript: …たしかにそこはあたしのletう感。 Ruby: あたしは花粉は完全にBLOCKしてるけどね。まだまだsubいわね、お姉様。 Perl: でもあなたのBLOCKってスコープになってなかったわよね? Ruby: いやだなあ
ビジーループとスレッドスイッチ (nurse) [ruby-core:42972] ついに懸賞金が (mame6) 50$ かあ (nurse) tk入れないと再現しない気がするのがハードル高い (unak) 50$だとせいぜい1時間くらいで解決しないと元が取れないな。 (unak) 再現しないんだよなあ。 (nurse) 環境整えても? (unak) どれくらい真面目に整えるかによるが、とりあえず手元環境でこのコードでは。 (nurse) tkすらいれずに./miniruby -e'Thread.new { loop { a = 1 } };Thread.pass; loop{p 2}'だと無理だったレベルしか試してない (unak) 劇重なので嫌なテストコードではある。(無限ループなので) (nurse) loopあるからタイマスレッドの割り込みきくはずだよなぁ (nurse) loo
以前から何度か記事にしているように、わたしはへなちょこRubiest。 気が向いたとき、たまーに、Rubyプログラムを書いています。 最近の作品 >Wikipediaのセクションへのリンク(節リンク)を取得するツール (09/22) >Dimoraが使いにくいので、CSVファイル(Excel/Calc)に出力するツールを作った (09/06) で、最近、会社のとあるシステムがASP化されたので、Rubyで自動巡回プログラムを作ろうと思い立ちました。 そのとき やっぱRubyって初心者向けじゃないよね。 と思いました。 と、同時に、誰か初心者向けRubyを作ってくれないかなー。と思いました。 以下わたしが、初心者向けRubyに望むこと。 rubygemsは、要らない Rubyが初心者向けじゃない。と強く思うのが、これ。 今回、IEのコントロールプログラムを書こうと思って、「watir」をイン
RubyのArgumentErrorってなんなんだろうか。正しい使い方が思いつかない。名前からすると「引数エラー」なのだが、IOやらスレッドやらの副作用がない世界だと引数が正しければ正しく動くはずなのであらゆるケースが ArgumentErrorに丸めることが出来てしまう(そして本当にあらゆる種類のArgumentErrorがあるように標準ライブラリからは見える) これは困った事で ArgumentErrorを rescue しても何が起こったのかまわったく分からないのではリカバー処理の書きようがない。エラー処理が書けないぐらいならない方がましで、いっそ ArgumentError廃止したら?という気さえしてくる。 一方別の解法もある、エラーの種類毎にArgumentErrorのサブクラスをつくって判別できるようにすることである。Javaの IllegalArgumentException
と思いません? def foo(x) end foo(1, 2) #=> wrong number of arguments (2 for 1) (ArgumentError) 1.step(10, 0) { } #=> step can't be 0 (ArgumentError) a = []; a << a a.flatten #=> tried to flatten recursive array (ArgumentError) 確かにどれも Argument に関する Error ではあるんだけど *1 、全部同じ例外クラスというのは粗すぎですよね。メッセージ読めば意味はわかるからデバッグには困りませんが、ArgumentError の中の特定の例外だけ拾いたいときに困ります。 具体的には、テストです *2 。例えば foo(1, 2) で wrong number of arg
100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊 が出版され、『私と Ruby と添削と』という内容で寄稿しました。私がどうプログラミング・オープンソースの楽しさを知ったかについての昔話です。公開して良い、とのことなので公開いたします。 なお、文章中に出てくる tdiarytimes.rb のコードは以下です。9年前に書いたコードなので今読み返すと恥ずかしいを通り越してもはや微笑ましいですね!!1これでも当時は、自分なりにできるだけ綺麗なコードにして公開した記憶があります。 https://github.com/tdiary/tdiary-contrib/blob/master/plugin/tdiarytimes.rb 私と Ruby と添削と プログラミング技術の向上させるには、どういう方法があるでしょうか。プログラミングに関する書籍を読む、オープンソースで公開されて
オライリー・ジャパンから先日発表されたプレスリリース「ePUBフォーマットによる電子書籍のラインナップを開始します」にあるとおり、弊社トップスタジオはオライリー・ジャパンとの共同事業として、ePUBフォーマットでの電子書籍の制作を開始しました。 トップスタジオではこのePUBフォーマット電子書籍の出版候補の選定、翻訳、編集、そしてePUB制作までに関わっています。本稿では、このePUBの制作プロセスを支えるシステムにフォーカスを当て、その仕組みについて紹介します。 フリーソフトウェア/オープンソースソフトウェアの集合体としてのシステム ePUBの作成にはいろいろな手法がありますが、制作を支えるシステムを構築する上で最も重視したのは、できる限り自動化し、手作業による調整を最小限にするということでした。そのため、このシステムでは原稿を常に最新マスターデータとしてそこから一方向にePUBを作成す
■他の言語になれた人がRubyに躓く n のポイント Ruby はちょっと特殊なプログラミング言語なので,他の言語になれた人は,ちょっと戸惑うかもしれません.そんな躓きそうなポイントを紹介していきます. □オブジェクト指向 Ruby はプロトタイプ型オブジェクト指向です.オブジェクトにメソッドを定義し,それを dup によって複製しながらオブジェクトを作っていきます. a = Object.new def a.foo p "foo" end b = a.dup □複数のメソッド定義 複数のメソッドを定義する場合,ruby では,def ではなく,method_missing という機能を使うのが一般的です. def a.method_missing mid, *args case mid when :bar p "bar" when :baz p "baz" end end 簡単に,bar
http://d.hatena.ne.jp/nagachika/20111231/ruby_trunk_changes_34162_34165 2011年最後の ruby trunk changes です。今日は LLVM 向けの最適化避け、rb_barrier_t の不具合修正などがありました。 今年は 3155 コミットありました。コミット数 1位はもちろんわれらがパッチモンスター nobu (583 commits), 2位は svn さん(348 commits)、3位は kosaki さん(332 commits)でした。コミッターのみなさん今年もお疲れさまでした! ハハッ・・・そんなばかな。ばかな・・・・ そんなにコミットしているわけがない。集計方法の問題ということにしておこう
http://rubyamqp.info/articles/error_handling/ の和訳。脚注は訳者による。 エラーの取扱いと復旧このガイドについて送信側であれ受信側であれ、多岐に渡る異常系をどうエレガントに扱うかが、AMQPと関わりのあるアプリケーションを頑健にしていくうえでは不可避と言えましょう。プロトコルの誤り、ネットワークの不調、ブローカー1の異常などが思い浮かぶことでしょう。これらを正しく処理して上手に正常状態に回復することは、容易ではないでしょう。以下では、amqp gemを使うことでアプリケーションが ブローカーとの接続ができなかったときネットワークが切断されたときAMQPコネクションに例外2が発生したときAMQPチャンネル3に例外が発生したときブローカーの異常に遭遇したときTLS(SSL)関連の障害があったときのような状況をどのように切り抜けることができるか、のみ
「スキルアップが図れるのはもちろんですが、私にとっては初対面の方とのコミュニケーションがとりやすくなるという点が大きいですね。OSSコミュニティでアウトプットしておくことで、それが話題の1つになります。込み入った説明が必要なときには、『Google先生に聞いてください』なんてかたちで済ませられたりもします(笑)」――LinuxカーネルおよびRubyのコミッターとして著名な小崎資広氏は、OSSコミュニティでの活動メリットをこのように語る。 小崎氏は、富士通 Linuxソフトウェア開発統括部に所属するエンジニア。LinuxカーネルとRubyの2つのコミュニティで活発に活動しており、その名は世界的に知られている。2009年には日本OSS貢献者賞を受賞。@ITでは連載「Linux Kernel Watch」を執筆し、Linuxカーネルのメーリングリストで熱く議論されているトピックスを紹介している。
Subject: [ruby-core:40199] Re: [Ruby 1.9 - Feature #5444][Open] Object.free From: Eric Scrivner <eric.scrivner@ v 2 s n c > Date: Tue, 18 Oct 2011 15:41:18 +0900 References: 40138 In-reply-to: 40138 help Best, Eric Scrivner, Level2 Designs On Oct 13, 2011, at 8:28 AM, Thomas Sawyer wrote: Issue #5444 has been reported by Thomas Sawyer. ---------------------------------------- Feature #5444: Object
世間は地震により慌ただしい。震源地近くの被災者の方にはお見舞いを申し上げる。 この最中に、個人的な報告を投下するのはちょっと憚られるものもあるのだけれども、あまり時期を外しても書く機会を逸するので思い切って書くことにしよう。 1月一杯で約3年務めた 株式会社スケールアウト を辞め、3月1日から Google Japan で働き始めた。twitterでは大勢の方に祝っていただき有り難い限りである。 Googleについては特に語ることはない。みんなが知っているし、私もまだみんなが知っているようなことの他は僅かしか知らない。だからスケールアウトについて語ることにしよう。 株式会社スケールアウト スケールアウトは広告配信エンジン/広告在庫管理システム/広告入稿システム/広告案件管理システムをフルスタックの製品「ScaleAds」を提供するスタートアップである。 創業 創業者の山崎大輔さんは、元はY
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く