タグ

ブックマーク / hakobe932.hatenablog.com (10)

  • テストをどこまで書くか - はこべにっき ♨

    CROSS2014で以下の2つのセッションにお招きいただきお話をさせていただいた。ありがとうございました。 http://www.cross-party.com/programs/testcidevops/ はてなクックパッドの開発現場で、CIやテストはどう行われているのか?(前編)。CROSS 2014 - Publickey 2014/1/17 #cross2014 現場に聞く!テスト/CI/DevOps、実際のところどうなの - Togetterまとめ http://www.cross-party.com/programs/butsukari/ 2014/1/17 #cross2014 コードレビューCROSS 〜ぶつかり稽古 2014初場所〜 - Togetterまとめ セッション中はもちろん、その後の懇親会でもいろいろな方におはなしを伺えてかなり勉強になった。テストやコードレビ

    テストをどこまで書くか - はこべにっき ♨
  • perldoc perlxstutを読んだときのメモ - はこべにっき ♨

    正月番組をみながら[http://perldoc.perl.org/perlxstut.html#EXAMPLE-3:title=perldoc perlxstut]を読んだ.メモをとったのでせっかくだからはっつけておくよ. ちょっとメモがはしょり気味なのと,うちの理解があやしいところがあってこころもとないですが,perlxstut読むときの参考にでもなればばば. Example1 $ h2xs -A -n Mytest で雛形がつくれる.生成されたMytest.xsにXSのコードを書く 値を返さないHello, WorldだとCODE:以下にprintfを書くだけでOK void hello() CODE: printf("Hello, world!\n"); CODE: みたいな部分はXS特有の書き方.あとで展開されてCのコードになる. $ perl Makefile.PL $ mak

    perldoc perlxstutを読んだときのメモ - はこべにっき ♨
  • XS(とC++)入門したい - はこべにっき ♨

    XSを使ってみたい.ついでにC++も勉強したい.とりあえず今日はShibuya.pm #9 のXSトークを何個か見てみた. PerlからXSの世界をながめてみる まずは,PerlからXSの世界をながめてみる.整数値は一度文字列化すると文字列表現がキャッシュされる.Devel::PeekでXSレベルの構造体をダンプするとわかるよ. コード #!/usr/bin/env perl use strict; use warnings; use Perl6::Say; use Devel::Peek; my $x = 100; say Dump $x; "$x\n"; # 文字列化 say Dump $x; 実行結果 SV = IV(0x80cebc) at 0x800b88 REFCNT = 1 FLAGS = (PADBUSY,PADMY,IOK,pIOK) IV = 100 SV = PVIV

    XS(とC++)入門したい - はこべにっき ♨
  • PlaggerとHyperEstraierでWeb履歴を検索 - はこべにっき ♨

    一日の大半をWebブラウジングに費やしているような人は、その知識がWeb上の文章が対応しているといっても過言ではない。いや、これは言い過ぎですね。 上のは言い過ぎにしろ、中途半端な知識があって「あー、それどっかのWebページでみたんだけどなー、どこだっけなー」とイライラするってのはありがち。そこで、自分の観たWebページの内容をインデクシングして、すべて検索できるようにすれば快適に違いない。より抽象的に言うと、自分の頭ん中に入りきらなかったものを溜め込んでおく、シンクのようなものがあれば便利だよなー、って感じ。 というわけで、Plagger + Subscription::BrowserHistory + HyperEstraierを使った、観たWebページ検索ツールを作ってみた。 実は、このツールを使うと、わりと危険なことが起こる可能性がある。このエントリー最後に書いた注意を読んでから試

    PlaggerとHyperEstraierでWeb履歴を検索 - はこべにっき ♨
  • sort時にキャッシュを仕込んで効率化する - はこべにっき ♨

    最近はPerl Best Practiceを読んでいることが多いので、おもしろかった部分をまとめて書いておこうかと思う。ということで、日はPerl Best Practice 8.1章 ソートからのネタ。 sortはブロックを渡すことでソート方法を柔軟にコントロールできる。ただ、そのブロック内での計算量が大きくなるとソートの効率が落ちる。ソート中に何度も比較を行うちに同じ計算を何度もすることになってしまうからだ。 そこで、いろいろな工夫が考えられているらしい。PBPで紹介されていたもを以下にまとめてみた。 工夫なしでそのまま まず、一番ベタなソートが、以下のコード。 use Digest::SHA1 qw(sha1); my @sorted_titles = sort { sha1($a) cmp sha1($b) } @titles;このままだと、何度も同じ値のダイジェストを計算するこ

    sort時にキャッシュを仕込んで効率化する - はこべにっき ♨
  • XML::Feedベンチの続き - はこべにっき ♨

    昨日、XML::Feedのベンチマークを取ったのだけど、miyagawaさんに突っ込みもらったので再調査。 XML::FeedはデフォルトではRSSのParseにXML::RSSを使っているらしい。昨日の記事の結果でXMl::FeedとXML::RSSの結果がほとんど同じだった*1のは当然のこと。そしてさらに、XML::FeedはパーサーにXML::RSS以外にもXML::LibXMLが使えるのもわかった。 $XML::Feed::RSS::PREFERRED_PARSER = "XML::RSS::LibXML";とするとlibxmlが使われるようになる。これは高速化しそうな予感。これも含めて再度ベンチマークをとってみた。 Benchmark: timing 1000 iterations of XML::Feed with XML::RSS, XML::Feed with XML::R

    XML::Feedベンチの続き - はこべにっき ♨
  • XML::Feedの読み込みベンチ - はこべにっき ♨

    夏休みの課題でCatalyst::Model::XML::Feedを使ったという記事を書いた。しかし、このモジュールを使って、一回のクエリで5個も6個もFeedを読み込むようにするとページが表示されるまでにかなり時間がかかってしまって、Webアプリケーションとしてはあまり良くない。なんで、XMLを読み込むためのモジュールのベンチマークをとってどれを使えば一番早いか調べてみることにした。 と思って調べたら、相当前ににPerl で XML の処理はどれが速いかベンチ : NDO::Weblogというid:naoyaさんの記事で調べられていた。せっかくなんで、この記事で行われているベンチをXML::Feedにもやらせてみて比較してみることに。 元の記事のコードに sub with_xml_feed { my @links = (); my $feed = XML::Feed->parse(\$c

    XML::Feedの読み込みベンチ - はこべにっき ♨
  • ドメインとったのでApacheのVirtualHost設定してみたメモ - はこべにっき ♨

    douzemille.netをとった。*1鯖は変えてないので、これまで、tadakichi.ddo.jpでアクセスできたとこには、douzemille.netかwww.douzemille.netでアクセスできます。tadakichi.ddo.jpもしばらくは使えるようにするんで、RSSとかでアドレス変えると未読きえちゃってアレな場合は変えなくても無問題。 晴れてドメインとったのでホスト名なんかも自由自在。svn.douzemille.netとかwiki.douzemille.netも使いたい!というわけで、Apacheの設定を勉強した。主に名前ベースのバーチャルホスト - Apache HTTP サーバとにらめっこして。 以下UbuntuというかDebian系の話。いままでは、/var/wwwの下に用途ごとにディレクトリを作って使ってたんだけど、非常にごちゃごちゃしていたので、ホストごと

    ドメインとったのでApacheのVirtualHost設定してみたメモ - はこべにっき ♨
  • Catalyst進化してる - はこべにっき ♨

    結局学校の画題を作るのにCatalystを使うことにした。で、かなりひさしぶりにCatalyst触ったんだけどなにかと強力になってるね。以下は現在CPAN最新の5.7001の話。 Viewのレンダリング 昔のCatalystだと自分でRoot.pmのendアクションにViewにフォワードするように書かないとダメだった。 sub end : Private { my ( $self, $c ) = @_; $c->forward('MyApp::View::TT') unless $c->response->body; }という風。しかし、今のバージョンだと、 sub end : ActionClass('RenderView') {}とするだけで、よかれと思われるViewにforwardしてくれて、かなり簡単になった。Using RenderView for the Default Vie

    Catalyst進化してる - はこべにっき ♨
  • Plaggerをインストールしてみてわかったこと - はこべにっき ♨

    やっとこPlaggerを使えるところまでたどり着けた。livedoor Readerの更新FeedがGmailにどさっと届いたよ。おもしろい。 さて、Plaggerにたどり着くまでには、いくつものモジュールインストールとそのテストの失敗、たくさんの妥協、汗、涙、睡眠不足などの困難が伴ったわけだ*1。そのおかげでCPANやPerlについてわかったことをあげてみることにした。 CPANは便利でおもしろい WWW::YouTubeとかHatena::FormatterとかMac::Glueとか。もっとセンセーショナルなモジュールもたくさんあるよね。CPAN漁ったりPlaggerの依存で入るモジュールを眺めていると、こんなのもモジュール化されてるのか!っておどろくことが多い。もうほんと自分でコード書く必要あるのかというほどの充実ぶり。 CPAN漁りにはモジュールに関するいろんな情報があつまったCP

    Plaggerをインストールしてみてわかったこと - はこべにっき ♨
  • 1