パスワードを忘れた? アカウント作成
450467 journal

NoGoodの日記: [かみしゅ!]新たなるバグ 2

日記 by NoGood

ruby 版では問題なく動作しているのだが…
php、パターンマッチング(正規表現の解釈含む)に弱いと見た。

一部のトピックがうまく検出できないという不具合が起きている。
以下に検出できない・できるトピックをサンプリングしてみたが、このデータを用いた原因の特定などは後日。

観測された検出不可能なトピック(観測順)

- アニメ・マンガ(済)
- 携帯通信(済)
- 変なもの(済)
- ハードウェア(済)
- 日本(済)
- プライバシ
- ネットワーク(済)
- ソフトウェア(済)
- サンマイクロシステムズ
- ビジネス(済)
- プログラミング(済)
- Linux ビジネス(済)
- メディア(済)
- バグ(済)
- リンク(済)
- 法廷(済)
- データベース(済)
- 検閲(済)
- ストレージ(済)
- アップル(済)
- 映画(済)
- 暗号(済)
- クリスマス(済)
- ターボリナックス(済)
- アメリカ合衆国(済)
- セキュリティ(済)
- ニュース(済)
- 入力デバイス(済)
- バイオテック(済)
- インターネットエクスプローラ
- 教育(済)

検出できるトピック(観測順)

- 日記
- 音楽
- 宇宙
- 書籍
- X
- TRON
- ロボット
- ノートPC
- スポーツ
- おもちゃ
- spam
- ゲーム
- Debian
- Ruby
- Wine
- インターネット
- ハンドヘルド
- アップグレード
- Java
- Google
- Namazu
- Windows
- スラッシュドット
- Digital
- Perl
- レッドハット
- 数学
- OS
- パテント
- マイクロソフト
- SuSE
- AMD
- KDE
- Linux
- お金
- 政治
- 娯楽
- テレビ
- Mozilla
- SGI
- Linux Mandrake
- enlightenment
- GNU is Not Unix
- GNOME

修正後に新たに検出を確認したトピック(観測順)

- ハードウェアハック
- 電力
- NTT
- スラッシュ
- PHP
- ガンダム
- グラフィック
- UNIX
- コーレル
- Linuxcare
- GNUStep
- Caldera
- Quickies
- Beanies
- Amiga
- Quake
- モニター
- Transmeta
- apache
- スラッシュバック
- スターウオーズ
- Intel

──────────
2005/11/29 19:55

以下の対策により正常に検出できるようになった(ように見える)

  • mb_ereg() は妖しいので使わないようにした
  • 代わりに preg_match() を使うようにし、以下の検索式を用いることにした
    '/<img.+src="http:\/\/images.slashdot.jp\/topics\/[^"]+".+alt="([^"]+)".+title.+>/'

(済)は検出を確認したトピック(大多数のエントリが「日記」のままなので、全部(済)になるまでチェックすることはしないと思います…あと三つだけどな~)。
また、Slashcode 2.2 の頃の日記エントリでトピックが入力されていない場合、正しく"N/A"となることも確認できた。
…いずれ全面的に mb_ereg() → preg_match() 化しよう…
検索式や分割・連結などの条件式も「'」でくくっている式と「"」でくくっている式が混在しているので、「'」で統一したい。

──────────
「かみしゅ!」関連まとめ(サイドバー)

↓前次↑

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by NyaNya (12681) on 2005年11月28日 2時05分 (#838791) 日記
    日本語かなーとか思ったんですけど「Linux ビジネス」がありますねぇ。
    んー他に何かあるのかなー。
    まぁソース見てないんでこれ以上は何とも(ぉぃ


    #800エントリおめでとー
    • > 日本語かなーとか思ったんですけど
      私も日本語(というか UTF-8)まわりのパターンマッチングに不具合があると思っています。
      既に php 上のマルチバイト対応パターンマッチング関数(mb_ereg())で一致境界に“年”が混ざっていると正しくマッチングできないという問題が出ているので、このトピック検出にも同じ mb_ereg()を使ってしまっているあたりが敗因かなと。
      > 800エントリおめでとー
      うぉ、もう800ですか。
      ありがとうございます。
      --
      mobile ID portable_NoGood [slashdot.jp] 併用中
      親コメント
typodupeerror

にわかな奴ほど語りたがる -- あるハッカー

読み込み中...