ブックマーク / blog.shibayu36.org (11)

  • Test::Moreのsubtestで困っていること - $shibayu36->blog;

    最近はperlでテスト書く時はTest::Classを使うようにしている。その理由の一つとして、subtestだけのテストだと少しだけ困ることがあるからだ。 具体的には以下の事がある。 subtestは書かれている順に実行されるため、前のテストの状態に依存したコードが書かれがち 特定のsubtestだけを実行するのが面倒 前のテストの状態に依存したコードが書かれがち 僕の中では、テストが前のテストの状態に依存しないようにすべきと思っている。各テストの依存度が増えると、その後テストを追加したいときにコードの見る範囲が増え、テストが書きづらくなってしまうからだ。 しかし、subtestは単に書かれた順にテストが実行されるので、前のテストの状態に依存したコードが書きやすいと思っている。例えば以下の様なコードが書かれがち(少し極端な例だが)。 use Test::More; # insert_en

    Test::Moreのsubtestで困っていること - $shibayu36->blog;
    ROBOT_KUN
    ROBOT_KUN 2013/07/20
  • Kyoto.pm 05 Tech Talksを開催し、イベント開催の面倒を減らすというLTをしました - $shibayu36->blog;

    Kyoto.pm 05 Tech Talksを開催しました! #kyotopm - kyotopm's blog Kyoto.pm 05 Tech Talksを開催しました。今回は色々な方が参加してくれて、30人以上参加者が集まりました。発表者も結構集まって良かったです。 発表 僕自身は「イベント開催が面倒」というタイトルでLTさせてもらいました。愚痴ではなくて、イベント開催は様々な困難が付きまとうので、自動化出来るところはしていこうみたいな話です。 130713 kyotopm-lt from Yuki Shibazaki 今回のイベントを開催して、一番大変だったのは告知文をたくさん書くことでした。だいたい同じ事を書いているのにコピペしまくっていて、なんかダルいなーっていう感じです。 そこで告知文の雛形を用意しておいて、基的には同じ部分は自動生成してしまって、その後にいろいろ周知したい

    Kyoto.pm 05 Tech Talksを開催し、イベント開催の面倒を減らすというLTをしました - $shibayu36->blog;
    ROBOT_KUN
    ROBOT_KUN 2013/07/18
  • nekokakさんを呼んで、7/13(土)にKyoto.pm 05 Tech Talkを開催します!!!!! - $shibayu36->blog;

    前回からしばらく経ったので、そろそろKyoto.pm 05 Tech Talkを開催しようと思います。 Kyoto.pm 05 Tech Talkに参加する 今回はJPAの講師派遣プログラムを利用して、DBix::SkinnyやTengの作者である@nekokakさんに来てもらうことになりました!@nekokakさんに話していただきたいことを、参加フォームのアンケートで募集しています。この機会に是非リクエストしてみてください イベントの詳細は以下の通りです。 日時 : 7/13(土) 15:00- 場所 : 株式会社はてな 8F(http://www.hatena.ne.jp/company/location) 参加費 : 500-1000円 懇親会 : その場でかどこかに行きます(2000円-4000円) 参加は以下のボタンからZusaarで登録をお願いします。また発表者も募集しています

    nekokakさんを呼んで、7/13(土)にKyoto.pm 05 Tech Talkを開催します!!!!! - $shibayu36->blog;
    ROBOT_KUN
    ROBOT_KUN 2013/06/26
  • 処理のtimeoutを簡単に書くためのSub::Timeoutというモジュールを作りました - $shibayu36->blog;

    ある処理をするときに一定以上の時間かかったらtimeoutして処理を終わりたいみたいなことをしたい時がたまにあるので、それを行うSub::Timeoutというモジュールを作りました。 https://github.com/shibayu36/p5-Sub-Timeout 使い方 use Sub::Timeout; use HTTP::Tiny; my $res = timeout 3.5, sub { HTTP::Tiny->new->get('http://example.com/foo'); }; 基的には上のように、タイムアウトしたい秒数と処理のcoderefを渡します。 上の例だと3.5秒間で処理が終わった場合、その返り値を$resとして返し、処理が終わらなかった場合、その時点で処理を打ち切って例外を投げるようにしています。例外を投げるのでその後も処理を続けたい場合は例外処理をし

    処理のtimeoutを簡単に書くためのSub::Timeoutというモジュールを作りました - $shibayu36->blog;
    ROBOT_KUN
    ROBOT_KUN 2013/06/11
  • vagrantでVMを一度に複数台立てる - $shibayu36->blog;

    以前、#kyotopm 04 Hackathonを開催して、Cinnamonの並列化に取り組んでいました - $shibayu36->blog; でも少しだけ触れましたが、vagrantでVMを一度に複数台立てるのをちょっとだけ試したのでメモ。 vagrantはMulti VMに対応していて、設定を少し書けばvagrant upするだけで複数のVMを立てることが出来る。Multi-Machine | Vagrant by HashiCorp あたりが参考になる。 precise32でまっさらなサーバを立てる 例えばpreciese32を使って、まっさらのサーバを2台立ててみる。以下の設定を書いてvagrant upするだけで良い。 Vagrant.configure("2") do |config| config.vm.box = "precise32" config.vm.box_url

    vagrantでVMを一度に複数台立てる - $shibayu36->blog;
    ROBOT_KUN
    ROBOT_KUN 2013/04/14
  • emacsのruby環境を整えています - $shibayu36->blog;

    最近VagrantとかChefとかCapistranoとか、それなりにrubyのプロダクトを触るようになったし、別の言語の良いプロダクトも見ないといけないという気分になったから、とりあえずemacsの環境を整えようと思い出した。まずは基から。 ruby-mode modeはruby-modeを使えばいいっぽい。多分標準で入ってると思う。rubyは.rbつかないような奴も多いので、それは適当にruby-modeに紐づくようにする。中身を見てrubyと判別するやつもあるような気がするけど、まだそれは使ってない。 (autoload 'ruby-mode "ruby-mode" "Mode for editing ruby source files" t) (add-to-list 'auto-mode-alist '("\\.rb$" . ruby-mode)) (add-to-list '

    emacsのruby環境を整えています - $shibayu36->blog;
    ROBOT_KUN
    ROBOT_KUN 2013/03/22
  • DBIのプレースホルダーで起こった謎な挙動 - $shibayu36->blog;

    先日DBIを使っていて、謎な挙動に遭遇したので書いてみる。LIMIT, OFFSET句でプレースホルダーを用いた時に起こった。DBI + DBD::mysqlを使っていた。 DBI: 1.616 DBD::mysql: 4.022 LIMITとOFFSETを両方にプレースホルダーを使う LIMITとOFFSETを両方を?にするのはうまくいく。 $res = $dbh->prepare_cached(q[ SELECT * FROM user WHERE name = ? LIMIT ? OFFSET ? ])->execute('shiba_yu36', 1, 1); LIMITのみプレースホルダー LIMITのみ?でもうまくいく。 $res = $dbh->prepare_cached(q[ SELECT * FROM user WHERE name = ? LIMIT ? OFFSET

    DBIのプレースホルダーで起こった謎な挙動 - $shibayu36->blog;
    ROBOT_KUN
    ROBOT_KUN 2013/03/07
  • expand-region.elでperlのコードの範囲選択 - $shibayu36->blog;

    expand-region.elの紹介 - syohex’s diaryで紹介されていたexpand-region.elを使っていたのですが、expand-region.elはmodeごとにいろいろカスタマイズ出来るようでした。しかし、これまでperl用の設定がなく困ってました。 で、色々探してたらhttps://github.com/magnars/expand-region.el/pull/83 というpull requestがあったので、mergeされないかなーと思っていたら最近mergeされていたので使ってみました。 カーソルを置いて実行 実行、実行、実行。すこしずつ広がってく。 perlのシジルなどにある程度うまく対応してくれるので便利でした。

    expand-region.elでperlのコードの範囲選択 - $shibayu36->blog;
    ROBOT_KUN
    ROBOT_KUN 2013/03/03
  • emacsで利用するperlを切り替える(perlbrew.elの紹介) - $shibayu36->blog;

    emacsで利用するperlを切り替えるperlbrew.elというのをantipopさんが作っていたのですが、少し動かなかった部分を修正したので、紹介したいと思います。 emacsとperlbrew perlbrewを使っているとPATHなどの関係から使いたいperlのversionを指定できない時があります。そんな時はperlbrew.elが使えます。 インストール まず、https://raw.github.com/kentaro/perlbrew.el/master/perlbrew.el からダウンロードしてきて、以下の設定をします。 (require 'perlbrew) (perlbrew-use "perl-5.14.2") これによりデフォルトでperl-5.14.2を利用できます。 perlコマンドへのpathを取得する 現在のperlコマンドへのpathを知りたい時は

    emacsで利用するperlを切り替える(perlbrew.elの紹介) - $shibayu36->blog;
    ROBOT_KUN
    ROBOT_KUN 2012/12/31
  • anything-git-project.elを少し手直ししてみた - $shibayu36->blog;

    id:yaottiさんが作っているanything-git-project.el(プロジェクト内のファイルを絞り込んで操作するanything-git-project.el - yaotti's diary)ですが、gitでproject管理している人にとってはすごく便利です。 ただ、一つだけ不満がありました。 現在のディレクトリからの相対パスが出てしまう ../../とかあんまり見たくない そこでちょっとだけ手直ししてみました。 chomp elisp触ってるとchompが欲しいけど無い、みたいな状況に出会います。そこで以下の関数をユーティリティとして定義しておくと良いと思います。今回の手直しではこれを使ってるので、適当にどこかで定義しておいてください。 (defun chomp (str) (replace-regexp-in-string "[\n\r]+$" "" str)) 変更

    anything-git-project.elを少し手直ししてみた - $shibayu36->blog;
    ROBOT_KUN
    ROBOT_KUN 2012/12/29
  • Kansai.pm #14で発表してきました - $shibayu36->blog;

    Kansai.pmが開催されたので発表してきました。 発表 今回は「テストデータどうしてますか?」というタイトルで発表してきました。テストデータを生成するときどうすればいいかということをまとめて、自分で作ったDBIx::DataFactoryを紹介させてもらいました。 View more presentations from Yuki Shibazaki 感想 今回は発表が全体的に結構楽しく、勉強になりました。特にkazeburoさんのWeb Operations and Perlや、antipopさんのPerlでAPNS(Apple Push Notification Service)まわりを実装した話を非常に興味深く聞いてました。 LTもお菓子とかを出して、立った状態でわいわいやりながら聞けたというところが非常に良かったなと思いました。 前回perlのことを発表したのは、Kansai.

    Kansai.pm #14で発表してきました - $shibayu36->blog;
    ROBOT_KUN
    ROBOT_KUN 2011/12/03
  • 1