タグ

ブックマーク / tociyuki.hatenablog.jp (14)

  • ピュア Perl な MurmurHash - Tociyuki::Diary

    32 ビット・ハッシュ関数 MurmurHash をピュアPerlで書いてみました。CPAN に、既に Toru Maesaka さんによる XS 版 Digest::MurmurHash があるので、結果を比較してみたところ、同じハッシュ値が求まっているので、正しく動いているっぽいです。ただし、32ビット整数ビルド Perl でしかチェックしておらず、64ビット整数ビルド Perl では試してません。ビットマスクしているので、たぶん 64 ビット整数ビルドしてあっても大丈夫だと……期待したいです。なお、Perl はビットシフト演算を符号付きでおこなうため、32ビット整数ビルドした Perl では、ビットマスクをつけておかないと、右ビットシフトで符号ビットを埋めてしまい、符号なし右ビットシフト演算とは異なる結果になってしまいます。そのため、ピュア Perl で、この手の演算をするときは、ビ

    ピュア Perl な MurmurHash - Tociyuki::Diary
    otsune
    otsune 2011/10/31
  • CGI スクリプトから Perl Web Server Gateway Interface (PSGI) でコードを動かす - Tociyuki::Diary

    Perl Web Server Gateway Interface 仕様に馴染んでみようと、CGI スクリプトから PSGI でコード・リファレンスを呼び出す CGI::Joint を試しに作ってみました。 run クラスメソッドにコード・リファレンスを渡します。run メソッドは標準入力、標準エラー出力、環境変数から PSGI 互換のハッシュ・リファレンスを作って、コード・リファレンスを呼び出します。コード・リファレンスが返す配列リファレンスをチェックして、ヘッダとボディを標準出力に書き出します。エラーを検出したとき、デフォルトではスタータス 500 でブランク同然の html をブラウザに返します。$CGI::Joint::FatalsToBrowser が真のときは、$EVAL_ERROR をブラウザに返します。 下のスクリプトを Apache の ExecCGI 属性がオンになって

    CGI スクリプトから Perl Web Server Gateway Interface (PSGI) でコードを動かす - Tociyuki::Diary
    otsune
    otsune 2009/10/14
  • 日本の社会貢献がワールド・ワイド・ウェブで見えにくいだけではないのか - Tociyuki::Diary

    ひがやすを氏が梅田望夫氏に申し立てている異議は、ワールド・ワイド・ウェブを使おうが使うまいが、プログラム開発以外の他の幅広い社会・政治問題でも、日で「有志がオープンに協力してある素晴らしい達成をなし遂げるといった公的な貢献をしている」、ということであろうと私は読み取りました。 ⇒ 梅田望夫にオープンソースを語るなとガツンと申し上げたい - ひがやすを blog 「こうした動きがいまだに日では根付いていません」の「こうした」は、「オープンソース」という考え方をさしていると思います。 また、「有志がオープンに協力してある素晴らしい達成をなし遂げるといった公的な貢献──を育む土壌がありません。」の土壌がないというのは日をさしていると思います。 つまり、「日には、オープンソースが根付いていなし、オープンソースを育む土壌がありません。」という風にいわれているのだと思います。 それに対し、「日

    日本の社会貢献がワールド・ワイド・ウェブで見えにくいだけではないのか - Tociyuki::Diary
    otsune
    otsune 2009/06/19
  • List::Rubyish をちょこっと修正 - Tociyuki::Diary

    otsune
    otsune 2009/02/23
  • pause.perl.org の証明書が変 - Tociyuki::Diary

    Perl で、「なんちゃって Behavior Driven Development」のコメントで、Encode の御大から要望がありました。 dankogai 2009/01/31 01:31 Test::Behavior とかに Rename して CPAN にうpるべし そこで、モジュールの体裁を整えて…… ⇒ https://tociyuki.sakura.ne.jp/archive/Test-Behaviour-Spec-0.01.tar.gz アップロードしてみようとしたわけですが……、 いざ、https://pause.perl.org/ にログインしようとすると、SSL 証明書がおかしい。なので、まだログインしておらず、もちろんアップロードもしていません。 ちなみに、類似モジュールの Test::More::Behaviours を見つけました。私が意図的にテストをコード・

    pause.perl.org の証明書が変 - Tociyuki::Diary
    otsune
    otsune 2009/02/12
  • Perl で、「なんちゃって Behavior Driven Development」 - Tociyuki::Diary

    Ruby界では注目を集めてきた割に、Dave Astels が 2005 年に提唱した「A NEW LOOK AT TEST-DRIVEN DEVELOPMENT (日語訳)」(原文pdf)による Behavior Driven Development (略して BDD)は、Perl 界ではスルーされているような気がしてなりません。 ことの質はテストを何のために書くのかという姿勢にあり、ツールは従来のテストでも良いという割り切った感覚が Perl 使いにはあるからなのかもしれません。現実に、Ruby の BDD フレームワークの RSpec 熱い紹介記事にも、身も蓋もなく、そのように書いてあります。 ⇒ Rubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編) かくたに、もろはし著 FAQ:「RSpec っ

    Perl で、「なんちゃって Behavior Driven Development」 - Tociyuki::Diary
    otsune
    otsune 2009/01/31
  • Googleマイマップは「限定公開」でもURLさえ入手できれば不特定多数がブラウズ可能 - Tociyuki::Diary

    表題の通りなのに、雑談をしていたら未だに誤解している人がいたので。 「限定公開」してもURLさえ入手できれば、Googleアカウントをもっていなくても、もしくはログアウト状態でも、誰でも不特定多数がそのマイマップを閲覧することが可能です。一般公開したくない情報を持つマイマップのURLを掲示板等で晒されてしまうと、そのリンクをたどるだけで、不特定多数が閲覧できてしまうのです。付け加えるなら、マイマップのURLを晒されてしまったら限定公開に設定しても閲覧を拒絶することはできません。削除するか内容を差し障りのないものにすげ替えるしかありません。さらに、現状ではマイマップを削除しても即座にブラウズ不能にできない問題があるようです。 これが現実なのに、限定公開にすることでプライバシーを守れると誤解する人がいる理由は、Googleの記述を鵜呑みにして記事にするニュースサイトがほとんどだからではないかと

    Googleマイマップは「限定公開」でもURLさえ入手できれば不特定多数がブラウズ可能 - Tociyuki::Diary
    otsune
    otsune 2008/11/11
  • はてなダイアリーのエントリーの Atom id - Tociyuki::Diary

    はてなダイアリー AtomPub API 公開おめでとうございます。 Atom API と言えば、ID をどうするかが工夫のしどころです。例えば、How to make a good ID in Atom [dive into mark] では、パーマリンクの http URI を元に、エントリーの日付を追加した tag URI (RFC4151) を使うことを提唱しています。では、はてなは、どのような URI にしたのでしょうか? API 説明ページから該当する部分を探すと、「日記エントリーの投稿」のセクションに例が記載されていました。 ⇒ はてなダイアリーAtomPubとは - はてなダイアリー <id>tag:d.hatena.ne.jp,2008:diary-はてなID-20080101-XXXXXXXXXX</id> 先行して Atom API が公開されていたフォトライフの A

    はてなダイアリーのエントリーの Atom id - Tociyuki::Diary
    otsune
    otsune 2008/08/31
  • Test::Unit に Test::Tap を被せてみました - Tociyuki::Diary

    Ruby の添付ライブラリ test/unit は、Java のテスト・フレームワークを範にしているようで、煩雑で軽やかさがないのが難点です。なぜ、Perl のテスト・フレームワークに倣わなかったのか、Ruby の不思議の一つだと思っています。id:dankogai さんが不満を述べるのも、わかる気がします。 ⇒ 404 Blog Not Found:Ruby beyond Rails - 書評 - まるごとRuby! RubyPerlに比べて、余計なところでTMTOWTDIを発揮しているように思えてならない。それを一番強く感じるのがテストのフレームワークで、なんであんなに種類があるのかわからない。TAPでほぼ統一されているPerlの連帯感からすると、テスト一個のためにクラスを書かせるなんて、間違った傲慢(false form of hubris)にしか感じられないのだが。 もっとも、賢

    Test::Unit に Test::Tap を被せてみました - Tociyuki::Diary
    otsune
    otsune 2008/06/24
  • 「Ruby本」が出た頃のこと - Tociyuki::Diary

    「オブジェクト指向スクリプト言語Ruby」(以下「Ruby」)の最初に出てくるサンプルが Perl 風の記述になっているのは、執筆当時の 1999 年に Ruby は今ほどメジャーな言語ではなく、同類のスクリプト言語として当時は既にメジャーであった Perl の利用者を想定読者としたからだと私はとらえていました。 ⇒ Life is beautiful: 教えながら学ぶRuby:イテレータに片思い このの最初の方に出てくるサンプルがなぜかイテレータを使わずにwhileとforで書かれているのだ。 「Ruby」42ページから引用した次のサンプルは、Perl ユーザなら、すんなりと動作がわかるように記述されています。 def hello(to, *mesg) print "Hello, ", to, ".\n" print "-- message --\n" for m in mesg

    「Ruby本」が出た頃のこと - Tociyuki::Diary
    otsune
    otsune 2007/10/19
  • Web::Scraper を使う(続) - Tociyuki::Diary

    昨日は、デイリーポータルZアーカイブリストのページからエントリを抽出するときに XPath を使いました。ですが、../../p の部分がダサイので、CSS セレクタを使う方法を考えてみました。 変更箇所は $entries の定義部分だけです。 my $entries = scraper { use utf8; #process q{//td/p/font[text() =~ /べつやく/]/../../p}, # 'entries[]' => $entry; process 'td>p', 'entries[]' => sub { my $h = $entry->scrape($_); ($h->{author} ||= '') =~ /べつやく/ ? $h : (); }; result 'entries'; }; コメントアウトした XPath 版 process では、テキスト

    Web::Scraper を使う(続) - Tociyuki::Diary
    otsune
    otsune 2007/07/28
  • Web::Scraper で XPath と CSS セレクタを混ぜて使う例 - Tociyuki::Diary

    Web::Scraper はいたれりつくせりの仕掛けが仕込んであって、便利ですね。私が、割と良く使っている機能は以下 2 つです。 process の第一引数に、CSS セレクタだけでなく、XPath も指定できます。ただし、XPath を指定するときは先頭を必ずスラッシュ(/)で始めなければいけません。 process の第二引数以降の、値をどこから取得するかを指定する部分に、コード・リファレンスを置くこともできます。これを使うと、DOM ツリー中の値を加工して抽出することができます。 具体例として、デイリーポータルZアーカイブ一覧の中からべつやくれいさんのエントリを抽出してみることにします。まず、アーカイブ・ページのエントリ部分を取り出してやると、こうなっています。 <TD width="580" valign="top" class="tx12px"> <P> <B><FONT c

    Web::Scraper で XPath と CSS セレクタを混ぜて使う例 - Tociyuki::Diary
    otsune
    otsune 2007/07/27
  • 何のための SSL なのか…… - Tociyuki::Diary

    (4月9日追記)このエントリは、書いた私がわかっていないことが露呈する内容になっています。 正しくは、 ActiveX と Javascript がオフになることを前提として、SSL 接続されるべきページで錠アイコンが閉じており、検証済みホスト名がそのページの所有者であることを確認する(下の図ではURL入力フィールドとステータスバーの錠アイコンを含む赤で囲んだ部分)。 その際にブラウザが異常を警告していないことに注意を払う。 ユーザができることはこれだけです。 これ以外の情報はユーザにとってページとブラウザを信頼できるかどうかの手がかりになりません。 ログイン URL はサービス提供者が変更することがあります。 錠前表示に加えてサーバ検証状況ダイアログが表示されるからといって、ブラウザが SSL 接続の表示を正しくおこなっているかをユーザが確かめることはできません。 オーソリティの表示も含

    何のための SSL なのか…… - Tociyuki::Diary
  • Cometの書き込み要求は別Port、あとは…… - Tociyuki::Diary

    naoya さんの次の疑問点には yamaz さんが答えてくれるのが一番だと思いますが、私が元エントリ「最速配信研究会 - Web2.0とC10Kに関する数々の誤解」を読んだときに、昨年、lighttpd からコピペしつつ、libevent を使って試し書きしたサーバを思い出していました。 ⇒ naoyaグループ - naoyaの日記 - C10K おおむね同意なんだけど、ここだけちょっと。"Comet のようにクライアントからの書き込み要求は別Port、あとは大多数の..." というところをもうちょっと詳しく教えてほしい。 書き込み要求を 8081 ポートに、維持コネクションを 8082 ポートにしておいて、サーバでは、それぞれ別のソケットに listen しておき、8081 のソケットからの accept をイベントにしてレスポンスを作って、8082 のソケットで accept してお

    Cometの書き込み要求は別Port、あとは…… - Tociyuki::Diary
    otsune
    otsune 2007/01/12
  • 1