nDiki : URI
URI - Universal Resource Identifier
RFC3986 で定義されている識別子。 2005年1月に、RFC3986 が出るまでは RFC2396 で定義されていた。
パスセグメントで使用できる文字 [RFC2396]
pchar = unreserved | escaped | ":" | "@" | "&" | "=" | "+" | "$" | ","
及び、param との区切り ";"。 "/"、";"、"=" は予約されているためパスセグメント中で使うにはエスケープする必要がある。
ということでエスケープなしで使える文字は、
0-9a-zA-Z | "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")" | ":" | "&" | "+" | "$" | ","
Windows では
\/:,;*?"<>|
はファイル名に使えないので、これを考慮すると
0-0a-zA-Z | "-" | "_" | "." | "!" | "~" | "'" | "(" | ")" | "&" | "+" | "$"
"&"、"+", "$" はパスセグメント中ではエスケープする必要はないが、reserved に含まれる文字なので使わない方が場合によっては無難。 これも考慮すると、
0-0a-zA-Z | "-" | "_" | "." | "!" | "~" | "'" | "(" | ")"
という文字集合を使うというのも手。
スポンサード リンク
Related term
2005年4月10日 (日)
■ Windows 上での Apache 2.0.53 では PATH_INFO が シフト JIS に

WiKicker の Windows 上での動作確認の続き。 WiKicker のPPM パッケージを作成して ActivePerl 5.8.6.811 上にインストール。 依存するモジュールで、ActivePerl に入っていないものは以下の通り。
- Algorithm::Diff
- Jcode
- Log::Log4perl
- Time::Zone (TimeDate)
既に手元で PPM パッケージ化済みなので、これもインストールしておく。
後は RCS をパスの通っているディレクトリに入れてタイムゾーンを設定。
TZ=JST-9
で CGI プログラムとして実行。 お、表示できた。 書き込みはと。
エラー。
予想していたけれど、sendmail に依存していたところ。 sendmail が見つからない場合はメールの送信をスキップするように修正。
これでうまく動くかなと思ったら、日本語名のページを作るとうまく表示できない問題を発見。
@ PATH_INFO がシフト JIS で渡される
WiKicker では UTF-8 文字列をURIエスケープして WikiPage のURLを生成している。 このURIにアクセスされると WiKicker は、PATH_INFO から WikiName を取り出す。 この文字列がシフト JIS になってしまっている。
Windows がファイル名に使用する charset にあわせて、Apache が変換してしまっているようだ。 調べてみると他の WikiEngine でも同様の問題にあっているという記事が見つかった。
将来の 2.0 系でパッチが取り込まれて修正されるとか、そうでないとか。
現状どうするかなぁ。 WiKicker 側でシフト JIS から UTF-8 に戻すというのもできない事はないけれど、あまりやりたくはないな。 いったんシフト JIS を介しているという時点で、シフト JIS に無い文字の扱いに関する問題をかかえてしまっているし(Apache が)。
対策案:
- Apache 1.x 系を使う (まだ未確認だが、こちらだと勝手に変換されないらしい)
- WiKicker に PATH_INFO を使わないオプションをつける(URI Query Component は勝手に変換されない)
- WiKicker 側でシフト JIS から UTF-8 に変換する
- WiKicker における PageName 最長文字数 (2006-06-10)
- WiKicker 0.35 リリース - 添付機能の修正など (2006-06-20)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
- PATH_INFO のかわりに REQUEST_URI と SCRIPT_... (2005-04-15)
- XAMPP で WiKicker を動かしてみた。PPM インストール OK。 (2007-02-09)
2005年4月15日 (金)
■ PATH_INFO のかわりに REQUEST_URI と SCRIPT_NAME を使う

結局 Apache 1.3.33 でもやはり PATH_INFO が UTF-8 では無くなってしまうようだ。
ということで WiKicker 側で対処。 SERVER_SOFTWARE 環境変数を見て Win32 な Apache だった場合、PATH_INFO を使わず REQUEST_URI と SCRIPT_NAME 環境変数を使って PATH_INFO にあたる文字列を取り出すようにした。
これで期待するページにアクセスできるようになった。
ただし別件で、ページ書き込み時に失敗する問題が発覚。 ページの補助情報を保存している部分の処理がこけるらしく、一度エラーになると以降のアクセスがエラーになってしまう。 要調査。
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- WiKicker における PageName 最長文字数 (2006-06-10)
- Perl CGI プログラムのテストには WWW::Mechanize::... (2006-02-18)
- Perl v5.8.8 の CGI.pm の PATH_INFO 処理の問... (2006-07-08)
- WiKicker の Win32 対応 (2005-04-04)
2005年4月21日 (木)
■ URI のパスセグメントの中の =

RFC2396 ではパスセグメント中の = は予約されているためエスケープする必要があったが、2005年1月にでたRFC3986 では必ずしもその必要がなくなったように読める。
RFC3986 はRFC2396からいろいろ変更点があるようなので、きちんと読んでおく必要がありそうだ。
- 準備委員会キックオフミーティング (2005-11-19)
- WiKicker 0.27 リリース (2005-10-05)
- 久しぶりにプリンスビラ (2009-03-21)
- 雑誌のおまけ万年筆「ミニ檸檬」 (2005-10-06)
- SO905iCS ファーストインプレッション (2008-02-16)
2005年10月5日 (水)
■ WiKicker 0.27 リリース

機能的にちょっと区切りをつける必要がでたので、WiKikcker の新しいバージョンをリリース。 2005年5月10日より、約5カ月ぶり。
バグ修正の他、
- 若干のHTML構造変更(メイン部分を <div class="main">でくくるようにしたり、SearchPageの検索フォームを一部修正したり)。
- 新しいスキーマ anchor、1-area-map-image、1-area-map-limage、1-area-map-rimage を追加。
- HTMLタグ付けブロック文法を追加(オプション)。
など。
HTMLタグ付けブロック文法におけるHTMLのサニタイズについては、HTML 4.01 仕様書を見て主に
- HEAD の中で使うものなどは除外
- フォーム関係、フレーム、スクリプト、オブジェクト関係は除外
- %Script; な属性は除外
- %URI; な属性はスクリプトかどうかチェック
といった風にフィルタリングするようにした。 結構許したので、そのまま有効にする場合には組織内利用とか個人利用向けにした方が良い。
必要に応じてルールを変更できるように、サニタイズするモジュールは設定で変更できるようにしておいた。適宜お好みで。HTMLタグ付けブロック自体はデメリットも多いのであまり使わない方が良いと思うけれど。
- [ DiKicker ] インデックス作成は別プロセスで (2004-02-17)
- [ WiKicker ] form/list の paragraph から... (2003-05-03)
- [ WiKicker ] 無記名時のバグ修正 (2003-09-20)
- WiKicker における PageName 最長文字数 (2006-06-10)
- [ WiKicker ] キャッシュまわりにバグ (2004-06-05)
2006年2月4日 (土)
■ Last.fm Radio Player でラジオを聞いてみる

Linux 版の Last.fm Radio Player で Last.fm のラジオを聞いてみる。 まずは、サザンオールスターズの similar artist radio とか。
音質や音量にばらつきがあって、鳴らしっぱなしにするにはちょっと難がある気がするが、知らない曲に出会えたりするので面白い。
今のところ聞けるアルバム数が少なくすぐローテーションしてしまう感じだが、料金を払って Personal Radio を使うともっといろいろ聞けるのだろうか?
@ Mozilla Firefox から Last.fm Radio Player を起動する
Web ページに含まれる lastfm スキーム (lastfm://) URI から、Last.fm Radio Player が起動するようにする。
- about:config にアクセス
- 設定一覧画面で右クリックして[新規作成]->[文字列]
- 以下の設定を新しく追加
- 設定名 network.protocol-handler.app.lastfm
- 文字列 /your/installed/path/Last.fm/player
- Skype チャットを Evernote に保存する方法 (2009-03-23)
- 私的10大ニュース2004 [ comp ] (2004-12-31)
- 朝日新聞講読申込み (2005-01-31)
- ネットワークカメラが欲しい (2005-01-15)
- Linux でも Mozilla Firefox (2004-12-10)
2006年5月18日 (木)
■ Google Desktop の web clips で RSS を読む

社内での情報共有を目的に社内 Blog を立ち上げた。次のステップは以下だ。
- スタッフが定期的に社内 Blog をチェックする/したくなるようにもっていく。
読んでもらえなければ Blog を書くメリットがあまりなくなってしまうので、これは重要だ。 逆に良さがわかってくれば、自分も書こうという人が自然ど増えてくるはず。
まわりを見た感じだと、普段から RSS リーダを使っているというという人はほとんどいないようなので、まずは RSS リーダを普及させる必要がありそうだ。
うちのオフィスでの推奨 RSS リーダの条件としては
- Windows で動くこと。
- わざわざソフトを立ち上げてチェックというスタイルだと定着しなさそうなので、常駐型がいいのではないか。
- 特定の Web ブラウザへの組み込み型ではないこと (人によって使っている Web ブラウザが違ったりするので、推奨しにくい)。
あたりかなと。むろん個人で気にいったのがあればそれにこしたことはないのだが、ここでは初めての人に薦められるものをということで。
@ Google デスクトップ 3
まずは Google Desktop を試してみる (Windows をメインに使っていなかったため、今までインストールしたことがなかった)。
ウェブ クリップで RSS/Atom フィードを読むことができる。
感蝕は「まあまあ」。 他の機能も含めて使っている場合はいいかもしれないが、巡回用の RSS リーダとして使うにはそれほど良いというほどでもないな。
フィードの表示順がちょっとわかりにくいのと、フィードの URI を誤認するのがマイナスポイント。
- 今日のさえずり - 勢いあまって NCSA Mosaic 3.0 for ... (2007-11-08)
- Debian に RSS リーダ「フレッシュリーダー」をインストール (2006-03-06)
- Linux で使えるデスクトップ検索ツール Beagle でローカルファイ... (2006-08-08)
- 今日のさえずり - Mobile Google Notebook、iモード... (2007-11-15)
- 自宅の無線 LAN を復旧 & IEEE 802.11g 化 (2004-11-26)
2006年6月10日 (土)
■ WiKicker における PageName 最長文字数

WiKicker では PageName を エンコードした文字列を URI に埋め込んだり、サーバで保存する際のファイル名にしたりしている。 このため、PageName の最長文字数はそれらの最長文字数に依存しているはずである。
今まで確認を後回しにしていたのだが、新しい機能の追加の際に確認しておく必要があるので調査してみた。
@ WiKicker の実装
WiKicker の実装がらみとして最長を決める要素としては
- PageName の UTF-8 表現を URI エスケープしてページ URI に含めている。→ URI、HTTP、HTML、Web サーバ、Web ブラウザの実装による最長の制約
- PageName を base64 にエンコードしてファイル名にしている。→ ファイルシステムのファイル名、パス名の最長の制約
がある。
@ 各仕様等による制約
- HTTP では URI の長さには制限なし (RFC2616 3.2.1)
- Web サーバは Request-URI が長いと 414 Request-URI Too Long を返す (RFC2616 10.4.15)。Apache は LimitRequestLine ディレクティブにより、URI を含むリクエスト行のサイズを制限することができる(配布時には 8190)。
- Internet Explorer が扱える URL の長さは 2083文字。
- ext2 はファイル名は 255文字まで(増やすこともできる)。
- 手元の Linux 2.6.15 で試したところ、パス名は 4095文字まで。
@ WiKicker で問題が出ない PageName 最長文字数
上記の中ではファイル名による制約が一番大きい。
WiKicker 内部でファイル名として base64 (の亜種) でエンコードしたものを使っているので、元の文字列はは最長 189バイトまでなければならない。base64 だと3バイトで4文字になるため、189バイトで 252文字となる。
WiKicker ではここでさらにファイル名に ',v'、'-lock' をつける事があるので、実際には元の文字列は最長 186 バイトまでとなる。
PageName が 186 バイトまでだとすると、URL エスケープしたとして558バイト。 WikiEngine のスクリプトの URL や他のパラメータとあわせても、これぐらいなら大丈夫のはずである。
ということで WiKicker では Linux 上だと通常 PageName は 186 バイトが最長と言ってよさそうだ。 日本語の文字はだいたい UTF-8 で3バイトになるので、62 文字までということになる。
そのうち、WiKicker に制約チェックを入れることにしよう。 そのうち。
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- WiKicker 実装 (2002-10-20)
- WiKicker 0.35 リリース - 添付機能の修正など (2006-06-20)
- 最後がピリオド(.)で終わるファイル名をつけられない (2005-04-19)
- ケータイ用にプライベート Wiki を設置 (2008-01-07)
2006年6月11日 (日)
■ WiKicker 0.34 リリース - 添付機能のコードを追加

2006年6月8日以来、3日ぶりのリリース。
zakwa 氏からの要望により、WikiPage のコピー直後に編集画面に移れる edit now オプションを追加。
また大きな改良として「添付機能」を追加した。 まだ最初のコードなのでエラー処理等が甘いが、それなりに動いているのでコミット。 まだ権限設定がないので、公開サーバでは使用しない方が良い。
添付ファイルのダウンロードを WiKicker 本体の CGI プログラムから行わせるか、独立の CGI プログラムにするか迷ったが、結局別物にした。
というのが大きな理由。
@ 設定方法
WiKicker のページにまだ設定方法を書いていないので、こちらへ。
@ attachment CGI プログラムを設置
例えば attachment というファイル名で以下のような Perl CGI プログラムを作り、Web サーバから実行できるように設定を行う。
#!/usr/bin/perl use strict; use warniings; use WiKicker::WikiCGI::AttachmentController; WiKicker::WikiCGI::AttachmentController ->new(properties_file => '対応する wiki の設定ファイル名')->run;
@ Wiki のプロパティに設定を追加
次に Wiki の設定ファイルに以下を追加。
param.NormalPage.attachment: enable param.NormalPage.attachment.uri: attachment
param.NormalPage.attachment.uri には上で作った CGI プログラムの URI (相対/絶対)を指定する。
これで各ページに attachment (添付)というリンクが表示され、添付機能が使えるようになる。
@ WikiPage での参照の仕方
# リンクを作成 [[attachment:ファイル名]] [[attachment:ページ名/ファイル名]] <- 別のページの添付ファイル # 画像をインライン表示 [[image:attachment:ファイル名]] [[image:attachment:ページ名/ファイル名]]
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- XAMPP で WiKicker を動かしてみた。PPM インストール OK。 (2007-02-09)
- WiKicker 0.35 リリース - 添付機能の修正など (2006-06-20)
- WiKicker における PageName 最長文字数 (2006-06-10)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
2006年6月20日 (火)
■ WiKicker 0.35 リリース - 添付機能の修正など

添付機能を有効にすると、添付ファイルが無いページに対応するディレクトリが無条件に作られてしまう問題を修正。
それから日本語ファイル名のファイルを WikiPage に添付した際、Internet Explorer でそのファイルをダウンロードして保存しようとすると URI エスケープされた文字列がデフォルトの保存ファイル名になってしまいよろしくない。 このため、Content-Disposition ヘッダをつけてレスポンスを返すためのダウンロード用のリンクも追加。
Cotent-Disposition ヘッダでファイル名を指定する際、
- HTTP_USER_AGENT を見て Internet Explorer っぽくて
- Accept-Language の最初に ja があった場合
ファイル名をシフト JIS でエンコードしてしまうようにした。
ファイル名にシフト JIS で表現できない文字があるかもしれないし、Accept-Language に ja があったからといって Windows のロケールが日本語になっているという保証もないので、かなりいい加減なコードである。
なにか良い方法があったら修正したい。
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- WiKicker における PageName 最長文字数 (2006-06-10)
- [ WiKicker ] 続L10N改善と、ページ名リスト処理の高速化 (2004-05-29)
- [ WiKicker ] Locale::Maketext による loc... (2003-12-28)
- WiKicker 0.34 リリース - 添付機能のコードを追加 (2006-06-11)
2006年7月8日 (土)
■ Perl v5.8.8 の CGI.pm の PATH_INFO 処理の問題にぶつかる

手元の WiKicker (や DiKicker) で、「C++」という文字列を含む URI にアクセスしたらエラー。
Nested quantifiers in regex; marked by <-- HERE in m//C++ <-- HERE .html$/ at (eval 27) line 7.
正規表現の一部として使う時には \Q...\E していたと思ったが抜けがあったか。 とコードをチェックしてみたが、それっぽいところなし。 そもそも、Perl 5.005_03 だと問題おきていないし。
確認したら CGI.pm の url() の中でのエラーだった。 quotemeta されていない。
Perl v5.8.8 に含まれている CGI.pm 3.15 で問題を確認。3.17 までは駄目で、3.19 以降だと \Q...\E するように修正されている (3.18 は CPAN にないので不明)。
標準 Perl ライブラリのバグを踏んだか……。 標準 Perl ライブラリのアップグレードはなにかと面倒なので、システム要件にはしたくはないんだよねぇ。
- PATH_INFO のかわりに REQUEST_URI と SCRIPT_... (2005-04-15)
- WiKicker に JSON でのページ出力機能を追加 (2007-04-03)
- Time::Local::gmtime の範囲チェック (2003-12-23)
- 最新の Module::Install は Perl 5.005_03 ステ? (2006-04-29)
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザイン ビックカメラProcess Time: 0.031167s / load averages: 0.72, 0.36, 0.27
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)




◇ Twitter やってます。この記事が気にいったらぜひ twitter.com/Naney の follower になってください。
◇ 2GB 無料のオンラインストレージサービス Dropbox に次のリンク先から登録すると今なら 250MB プラス! → Dropbox