テスト失敗 Hatena-API-Auth-0.04

id:naoya さんの Hatena-API-Auth-0.04 が、JSON パッケージでは t/01-methods.t のテストに失敗します。JSON::Syck では通ります。 t/01-methods......ok 9/16Bad string at 5 in 略 at JSON/Parser.pm line 347. テストに埋め込まれた Javascript を http:…

SSLeay 未インストール環境で Net-OpenID-Consumer-0.12

CPAN モジュール Net-OpenID-Consumer-0.12 を使って、OpenID コンシューマを作ってみたところ、mizzy.org さんと同様に、他のサーバでは正常に認証できるのに、typekey の OpenID サーバだけが認証できませんでした。 ⇒ mizzy.org - perlでOpenID Consumer…

Authen::TypeKey の SHA1 ロード

TypeKey の クライアント側のベリファイ用 Perl モジュールのパッチ提案です。 目的:SHA1 のモジュールを、代表的な CPAN モジュール 3 つの中から選べるようにします。 ⇒ http://search.cpan.org/~btrott/Authen-TypeKey-0.05/ # use Digest::SHA1 qw( sha…

はてなログCSVから自己アクセス除去 V2

今ごろになって、はてなログCSVから自己アクセス除去 のスクリプトを 2005年秋のカウンタリニューアル後のフォーマットに対応させたものにバージョンアップしました(昨年秋に作ったのにアップするの忘れてました)。 コマンドラインにCSVファイル名を引数で与…

Sync_m による Read-Write Lock

「増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編」のデザパタ第 6 章 Read-Write Lock パターンの補講 LIST 6-6 にならって、Ruby の添付ライブラリ sync.rb を使った Buffer クラスを書いてみました。 マニュアルによると Sync_m が 目…

ReadWriteLock

「増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編」のデザパタ第 6 章 Read-Write Lock パターンは、共有ロックと排他ロックを併用する排他制御のパターンです。ReadLock が共有ロックで、WriteLock が排他ロックになっています。排他ロッ…

Exchanger

「増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編」のデザパタ第 5 章 Producer-Consumer パターンの補講 2 の後半は、java.concurrent.Exchanger を試しています。2つのスレッドの間でオブジェクトを交換するクラスです。 記述の仕方です…

Hatena::API::Auth::LiteXML 0.003

はてな認証 API のログイン用 URL のパラメータ指定に対応しました。 ⇒ https://tociyuki.sakura.ne.jp/archive/Hatena-API-Auth-LiteXML-0.003.tar.gz ⇒ https://tociyuki.sakura.ne.jp/archive/Hatena-API-Auth-LiteXML-0.003.pm (ソース) ⇒ https://tociy…

Table クラスを書いてみました

「増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編」のデザパタ第 5 章 Producer-Consumer パターンの補講 2 の前半は、java.concurrent.BlockingQueue の実装クラスの紹介になっています。Ruby と対比させるとこんな感じ。 Java Ruby Link…

Hatena::API::Auth::LiteXML 0.002

naoya さんのコメントにより、Hatena::API::Auth::LiteXML へ Hatena::API::AuthXML から改名し、ua プロパティでユーザ・エージェントをセットできるようにしました。Perl ライセンスです。POD を書いたら、0.01 にして CPAN に上げましょう……。いつになる…

Hatena::API::AuthXML 0.001

Hatena::API::AuthXML は XML を使うはてな認証 API の Perl モジュールです。まだ、CPAN には上げていません。 id:naoya さん作の Hatena::API::Auth との違いは次のとおりです。 JSON ではなく XML でユーザ情報を取得します。Perl の正規表現で扱うには P…

sleep関数とマルチスレッド

「増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編」のデザパタ第 5 章 Producer-Consumer の補講 1 では、スリープ状態や待ち状態のキャンセルの説明です。 Java と Ruby のマルチスレッドを比べると、Java の方が例外処理など充実してい…

Producer-Consumer

「増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編」のデザパタ第 5 章 Producer-Consumer パターンに進みます。データの生産者スレッドと利用者スレッドに機能を特化してスレッドを分けて、それらの間で(Queueを使って)データを受け渡す、…

アップデート JSON::Hatchet 0.002 JSONパーサ

昨日の JSON::Hatchet 0.001 をリファクタリングして 0.002 にアップデートしました。 (2006年7月1日に 0.03 へアップデートしました。0.002 以前はシングルクォートで囲んだ非 JSON 文字列のサニタイズをおこなっていませんでしたので、非推奨にします。) ⇒…

JSON::Hatchet 0.001 JSONパーサ

個人的趣味で JSON のパーサとシリアライザを書いてみました。 例によって、予測型構文解析表による非再帰版です。1 パッケージに、serialize と deserialize をまとめています。もっと短くなることを期待したのですが、243 行 orz (27日) http://d.hatena.n…

Balking

「増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編」のデザパタ第 4 章 Balking パターンに進みます。ロックを取っても、別にやることないじゃんとロックを返して素通りしてしまうやりかたにパターン名が付いているとは。ちょっとした驚き…

ConditionVariable

「増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編」のデザパタ第 3 章 Guarded Suspension パターンに進みます。このパターンは複数のスレッドの同期を取る方法を扱います。登場するのは、ある条件の成立を待つ待機スレッド(達)と、その条…

Immutable Person#dead=(y)

「増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編」のデザパタ第 2 章 Immutable の最後に、問題 2-6 の逆を考えてみます。Immutable クラスの一部を変更可能にしたいというありがちなパターンです。例として、Immutable Person クラスに…

Immutable 補講 2

「isbn:4797331623」のデザパタその 2 Immutable の続きです。この章の補講 2 は Java のスレッドセーフではない java.util.ArrayList を扱っています。例 2 までは、immutable とは関連せず、これは第 1 章 Single Threaded Execution で扱った方がふさわし…

Immutable

「増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編」のデザパタその 2 は Immutable。オブジェクトを不変にすることで、競合の危険性をなくすというものです。 Ruby で immutable なオブジェクトは、nil、false、true、Symbol、Numerical …

○△×さいころ2個の頻度をセミコロン使わないで計算してみる

http://d.hatena.ne.jp/sumim/20060414/p1 さんとこ経由、 ⇒ 遅レス。 - 大学教員の日常・非日常:直感の敗北 誰かセミコロン使わない書き方を教えてください。Array と Enumerable 一通り眺めたけどわがんね。 ハッシュではなく grep を使ってみました。 p( …

Inside ruby スレッドのさわり

「増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編」を Ruby に置き換えつつ読んでいきます。前回はいきなり第 1 章に飛んだのですが、今回は「Introduction 1 スレッドとは何か」に戻って ruby 処理系のマルチ・スレッドの実装を調べてみ…

Synchronizable

結城浩(id:hyuki)さん著の「増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編」を買ってみました。 この手の本をまじめに読んでいくには、なんらかの楽しみがないとやっていられないので、Ruby のマルチスレッドで置き換えてみるという読み…

Javascript 用プリティプリンタ jspp.rb

一年ほど前に作ったままのやっつけ版ですが、公開しておきます。 ⇒ https://tociyuki.sakura.ne.jp/archive/jspp-1.01.rb 2006年4月9日アップ(2006年4月9日修正) Google Maps API 2.44の整形時にエラーが出る個所を修正しました。当時の Google Maps API が…

コメントつき eqnarray*

id:hyuki さんの「LaTeX の eqnarray* グループのようにディスプレイ式を揃えた上で各行にコメントをつけるにはどうしたら良いのか http://www.hyuki.com/d/200603」という質問への答えです。 まず、plain TeX で考えてみます。数式のディスプレイモードの中…

Text::Hatena::PPT の action への項目マージ方法

Text::Hatena::PPT の action プロパティへ、複数の項目を追加したり書き換えるには次のように記述することができます。このプロパティは bless されていない単なるハッシュリファレンスですけど、一種の has-a の継承と上書きになっています。 package Hoge…

ネットワーク・レンジからCIDRをもとめる 改訂版

「CIDRとネットワーク・レンジを変換(2005年8月12日)」のスクリプトを改訂しました。 ⇒ https://tociyuki.sakura.ne.jp/archive/cidr.pl Perl版 ⇒ https://tociyuki.sakura.ne.jp/archive/cidr.rb Ruby版 使い方は両方ともまったく同じです。 $ perl cidr.pl…

HTML4 用の CSS property と keyword の正規表現

昨日の続きで、安全な style アトリビュートにマッチする関数へ渡す、W3C の CSS2.1 Specification で定められた property と keyword にマッチする正規表現を生成してみました。それぞれを Specification からかき集めて、dankogai さんの最適化正規表現作…

安全な style アトリビュートのチェック案

HTML を無害化したいとき、style アトリビュートを問答無用に捨ててしまうのが主流なのだと思うのですけど、次のように HTML 用に記述内容を制限して利用可能にしたらどうだろうかと考えつつあります。 (2月7日 修正あり) 許可するもの: IDENT を構成する文…

exiftt = Image::ExifTool + Template

たくさんある画像ファイルの EXIF メタ情報を読み出して、一まとめにして RDF 等を作るための簡単なスクリプトを、Image::ExifTool と Template を使って作ってみました。exiftool コマンドもフォーマットファイルを指定できますが、繰り返し部分しか記述で…