タグ

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

  • HTML::Entities の encode_entities() ハックの続き - Tociyuki::Diary

    HTML::Entities の encode_entities() ハック」の続編です。前のエントリでは HTML::Entities の encode_entities() 関数の第2引数へ大きな文字セットを渡していました。が、これはおよそクールなやりかたではありません。そこで、Perl5.8 以降で使えるユーザ定義文字セットで簡便に記述できるようにパッチを当てるモジュールを作ってみることにしました。 こんな風に使います。文字セット名 IsHtmlCtrlEnt 等を HTML::Entities 名前空間で使えるようにします。他に、IsXmlCtrl、IsXmlSpecial、IsHtmlCtrl、IsHtmlSpecial、IsHtmlLat1、IsHtmlSymbol の文字セット名も使えます。IsHtmlCtrlEnt はこれら全部を合わせたものです。さらに、XML 用に H

    HTML::Entities の encode_entities() ハックの続き - Tociyuki::Diary
  • JSON::Hatchet の構文解析子 - Tociyuki::Diary

    CPAN モジュールを見て回っている限りでは Perl では構文解析子ジェネレータを使うまでもなく、LL(1) 文法で楽に構文を記述できる入れ子括弧テキストや、XML、JSON 程度なら、Perl で直書きする方がポピュラーな気がします。Ruby なら、LALR(1) 文法対応のコンパイラ・ジェネレータ Racc を使うのが楽でしょう。ANTLR は Python 優遇で、Perl5 と Ruby ポートは進んでいない印象を受けてますが、今はどうなのでしょう。 ⇒ Leo's Chronicle: 正規表現に見切りをつけるとき 正規表現の能力を超えるデータはどう扱えばいいのか?一番のお勧めは、ANTLRを使って字句解析(lexer)、構文解析(parser)するプログラムを生成する方法です。一昔前なら、lex/yacc、flex/bison, JavaCCなどしか選択肢がなかったのですが、

    JSON::Hatchet の構文解析子 - Tociyuki::Diary
    mickn
    mickn 2009/03/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
    mickn
    mickn 2009/01/30
  • はてなダイアリーのエントリーの 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
    mickn
    mickn 2008/08/31
  • firefox の履歴から URI を標準出力に書き出す - Tociyuki::Diary

    「subtech - Bulknews::Subtech - IE の履歴を InternetShortcut に書き出す」と同じようなことを firefox でも。LinuxMacOS X で動作確認してますが、Windows でも動くかどうかはわかりません。 profile.ini を読んでデフォルト・プロファイルのパスを求めるには Mozilla::ProfilesIni を、その中に入っている履歴データベースを読み出すには File::Mork を使えば良いらしいです。 #!/usr/bin/perl use strict; use warnings; use File::Spec; use File::Mork; use Mozilla::ProfilesIni; my $profile = Mozilla::ProfilesIni->new( path => Mozill

    firefox の履歴から URI を標準出力に書き出す - 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
    mickn
    mickn 2007/01/12
  • Seasar 2.4 はクールだ - Tociyuki::Diary

    WEB+DB PRESS vol. 36 を編集部様から戴きました。毎号ながら濃い誌面ですので、試しながら読むと大変なのですが、ようやく読了。今回は、Seasar 2.4 を取り上げてみます。 WEB+DB PRESS Vol.36 作者: WEB+DB PRESS編集部出版社/メーカー: 技術評論社発売日: 2006/12/22メディア: 大型購入: 2人 クリック: 65回この商品を含むブログ (39件) を見るこの号は Seasar 2.4 リスペクト号でもありまして、小飼弾さんの「Alpha Geek に逢いたい」で、ひがやすをさんを弾さんがいじったすぐ後に、ひがやすをさんの「特集1 Seasar2 によるスーパーアジャイルな Web 開発」が続くという、楽しい始まり方をします。編集の皆さん GJ! Java の DI コンテナの Web 環境、Seasar 2.4 は、HTML

    Seasar 2.4 はクールだ - Tociyuki::Diary
    mickn
    mickn 2006/12/22
  • 不正エンティティによる XSS 実行 - Tociyuki::Diary

    MT-3.2-ja の XSS パッチが公開されたのでざっと目を通して、パラメータをまんまでエラーにエコーバックしているところが修正されているのは当然として、意外だったのは次の場合。試してみると、IE 6、Firefox 1.5.0.7 もスクリプトを実行します。(今回のパッチで対策がおこなわれたものを追加しました。) <a href="javascript&#000058alert('hoge')">既に対策済みのもの</a> <a href="javascript&#x00003az=0;alert('hoge')">パッチで対策されたもの</a>う〜む。 ⇒ http://www.sixapart.jp/movabletype/news/2006/09/26-1115.html ⇒ http://jvn.jp/jp/JVN%2368295640/index.html (追記) (以下

    不正エンティティによる XSS 実行 - Tociyuki::Diary
  • Tociyuki::Diary - perlでのクロージャの3パターン

    id:naoya さんが Perl のクロージャの使い道を考えておられるようです。便上して、私が良く使う、3つのパターンを紹介してみます。なお、単なるコード・リファレンスとしての使い方は除外して付随するコンテキストが意味をもつクロージャの場合に限ります。 (2006年2月14日修正 use Fcntl のパラメータに :DEFAULT が抜けていたので追加しました。) コールバック・パターン イテレータにクロージャを渡して、イテレータの中から繰り返し呼び出してもらってコンテキストに副作用を及ぼす使い方です。クロージャの使い方の中でも最も自然に使えるものだと思います。以下、Ruby のブロック呼び出しっぽくコード・リファレンスを $yield パラメータに渡すことにします。へそ曲がりに BBS の CGI コード用に flock による排他ロックを例にしてみます。 package Mutex

    Tociyuki::Diary - perlでのクロージャの3パターン
    mickn
    mickn 2006/01/13
  • はてな記法のBNF表現 - Tociyuki::Diary

    せっかくですから、私家版のはてな記法からHTMLを生成するコードのパーザで使っているブロック要素用のBNFをさらしておきます。これから生成したパーザでドキュメント・ツリーを作っています。 (10月25日 追記) 個別記事表示にするとリストの途中で切れるので、0.04への改訂を機に別ファイルへ分けます。下のリンクを辿ってください。 ⇒ https://tociyuki.sakura.ne.jp/archive/Text-Hatena-Syntax.txt

    はてな記法のBNF表現 - Tociyuki::Diary
    mickn
    mickn 2005/10/17
  • 1