nDiki : URI

URI - Universal Resource Identifier

RFC3986 で定義されている識別子2005年1月に、RFC3986 が出るまでは RFC2396 で定義されていた。

RFC

  • RFC2396 - Uniform Resource Identifiers (URI): Generic Syntax

パスセグメントで使用できる文字 [RFC2396]

 pchar = unreserved | escaped | ":" | "@" | "&" | "=" | "+" | "$" | ","

及び、param との区切り ";"。 "/"、";"、"=" は予約されているためパスセグメント中で使うにはエスケープする必要がある。

ということでエスケープなしで使える文字は、

 0-9a-zA-Z | "-" |  "_" | "." | "!" | "~" | "*" |  "'" | "(" | ")" | ":" | "&" | "+" | "$" | ","

Windows では

 \/:,;*?"<>|

ファイル名に使えないので、これを考慮すると

 0-0a-zA-Z | "-" | "_" | "." | "!" | "~" | "'" | "(" | ")" | "&" | "+" | "$"

"&"、"+", "$" はパスセグメント中ではエスケープする必要はないが、reserved に含まれる文字なので使わない方が場合によっては無難。 これも考慮すると、

 0-0a-zA-Z | "-" | "_" | "." | "!" | "~" | "'" | "(" | ")"

という文字集合を使うというのも手。

関連情報

スポンサード リンク

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 が起動するようにする。

  1. about:config にアクセス
  2. 設定一覧画面で右クリックして[新規作成]->[文字列]
  3. 以下の設定を新しく追加
    • 設定名 network.protocol-handler.app.lastfm
    • 文字列 /your/installed/path/Last.fm/player
スポンサード リンク
[ 2月4日全て ]

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 を誤認するのがマイナスポイント。

[ 5月18日全て ]

2006年6月10日 (土)

WiKicker における PageName 最長文字数

WiKicker では PageName を エンコードした文字列を URI に埋め込んだり、サーバで保存する際のファイル名にしたりしている。 このため、PageName の最長文字数はそれらの最長文字数に依存しているはずである。

今まで確認を後回しにしていたのだが、新しい機能の追加の際に確認しておく必要があるので調査してみた。

WiKicker実装

WiKicker実装がらみとして最長を決める要素としては

がある。

仕様等による制約

  • 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 に制約チェックを入れることにしよう。 そのうち。

[ 6月10日全て ]

2006年6月11日 (日)

WiKicker 0.34 リリース - 添付機能のコードを追加

2006年6月8日以来、3日ぶりのリリース。

zakwa 氏からの要望により、WikiPage のコピー直後に編集画面に移れる edit now オプションを追加。

また大きな改良として「添付機能」を追加した。 まだ最初のコードなのでエラー処理等が甘いが、それなりに動いているのでコミット。 まだ権限設定がないので、公開サーバでは使用しない方が良い。

添付ファイルのダウンロードを WiKicker 本体の CGI プログラムから行わせるか、独立の CGI プログラムにするか迷ったが、結局別物にした。

  • WiKickerURI 体系の中に、末尾にダウンロードファイル名を持ってこれる形式を作成できなかった。

というのが大きな理由。

設定方法

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:ページ名/ファイル名]]
[ 6月11日全て ]

2006年6月20日 (火)

WiKicker 0.35 リリース - 添付機能の修正など

添付機能を有効にすると、添付ファイルが無いページに対応するディレクトリが無条件に作られてしまう問題を修正。

それから日本語ファイル名のファイルを WikiPage に添付した際、Internet Explorer でそのファイルをダウンロードして保存しようとすると URI エスケープされた文字列がデフォルトの保存ファイル名になってしまいよろしくない。 このため、Content-Disposition ヘッダをつけてレスポンスを返すためのダウンロード用のリンクも追加。

Cotent-Disposition ヘッダでファイル名を指定する際、

ファイル名シフト JIS でエンコードしてしまうようにした。

ファイル名シフト JIS で表現できない文字があるかもしれないし、Accept-Language に ja があったからといって Windowsロケール日本語になっているという保証もないので、かなりいい加減なコードである。

なにか良い方法があったら修正したい。

[ 6月20日全て ]

2006年7月8日 (土)

Perl v5.8.8CGI.pmPATH_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 ライブラリアップグレードはなにかと面倒なので、システム要件にはしたくはないんだよねぇ。

[ 7月8日全て ]

2011年6月16日 (木)

今日のさえずり: 鏡といえばヤヌス

2011年06月16日

naney:5838451763

  • 07:36 鏡といえばヤヌス。
  • 10:15 Evernote for Windows 4.4 出てる。今回は機能追加てんこもりっぽい。期待(そしてデグレの不安)。
  • 10:30 Wiki に書いているデイリーノートを最初から日報フォーマットにあわせて書いておくことにしよう。
  • 12:13 Evernote for Windows 4.4 のノートリンク使ってみた。「evernote」 という URI schemeURI が生成されるのか。そして Evernote for iPad では既に evernote: リンク先を開けるようになってた。
  • 13:20 RT @s_harada: 皆そんなにFacebookが好きなら転職すりゃいいのに
  • 13:27 mixi に新しく入った「先週の訪問者」、その他の一覧を見ると共通の友人が列挙される。ここんところ以前の「足あと」よりいいね。 #mixi
  • 13:30 東京アメッシュ的には新宿で雨降ってるのか。傘持っていこう。
  • 13:39 白身フライのり弁当 398円。 http://4sq.com/jGVz29
  • 17:45 「仕事をする上で一番大切にしていることはどんなことですか?」という質問に回答・発表したら、「それ一言でいうと『ぽぽぽぽーん』ですね」って言われた。なお、ぽぽぽぽーんは1度も観たことございません。
  • 18:04 そういえば昨日で入社から2カ月経ってた。
  • 18:06 今日はこれからヨーロピアンビアカフェ。
  • 18:29 ベルギービール! http://4sq.com/iO8pU9
  • 18:40 ミュシャっぽい何か。 http://flic.kr/p/9TVAir
  • 23:10 まさかのバッテリ切れでシャットダウンしてた。予備バッテリに交換したけどこちもほとんど残無し。
  • 24:37 やはり企画・開発も目的と価値観からスタートしてアクションに落として行く、GTD でいうところのナチュラル・プランニングモデルで進めないと。

image:ASIN:B0002IJPFQ

[ 6月16日全て ]

2012年8月24日 (金)

今日のさえずり: 昔、コビン・ケスナーって言ってて怒られたことある

2012年08月23日

  • 09:57 います。 (@ 株式会社ミクシィ (mixi, Inc.)) http://t.co/TKlquZ9r
  • 14:37 青空に飛行船が飛んでる。気が抜ける。
  • 21:04 退勤済み。
  • 22:09 うちは餃子の時は必ずセットで納豆なんだけれど、この組み合わせいいよね。

2012年08月24日

  • 09:42 ほっと。 (@ 株式会社ミクシィ (mixi, Inc.)) http://t.co/2UtVCPVF
  • 11:44 Dropbox 絆創膏貼られてる。
  • 11:52 iThoughtsHD、複数の Dropbox アカウント上のフォルダをクラウド同期先として指定できるのでイケてる。
  • 18:13 ミーティング中に「加藤あい」と「阿藤快」思い出して苦悶。
  • 18:23 昔、コビン・ケスナーって言ってて怒られたことある。
  • 19:11 お、今日崖の上のポニョか。
  • 22:51 Perl 5.14 + URI 1.59 で Encode::encode_utf8 してない文字列を query_param_append していくとガシガシエスケープされる。そういうことです。
  • 22:58 ポニョまだやってますか?
  • 23:20 うちの若いのが謎謎言ってたの解けたので帰る。
  • 23:30 定期券をオフィスに忘れてきたことに駅で気がつくなど。タクシーで取りに戻りたい……。
  • 23:37 出社。
  • 23:39 退勤。
[ 8月24日全て ]

2013年7月3日 (水)

今日のさえずり: フチ子さんいなかったし、ヤバそうな人いた

2013年07月03日

[ 7月3日全て ]

2013年11月20日 (水)

Shibuya Plack/PSGI Conference (shibuya.pl) #1 #plackcon

LINE株式会社で開催された Shibuya Plack/PSGI Conference (shibuya.pl) #1 #plackcon 「秋のPlack/PSGI祭り」に参加してきた。今回は YAPC::Asia Tokyo でもよくトークされている masartz 氏とご一緒させていただいた。ここの会場にくるのは「第3.5回 データ構造と情報検索と言語処理勉強会」「PerlCasual #05」に続き3回目。

開催を知った時には定員60人すでに埋まっていて補欠だったんだけれど、その後定員80人に増やしてくれたようで参加できるようになった。当日時点ではキャンセル等で定員切っていてきたい人はこれるようになってたよ。

普通に使う Plack/PSGI Server @fujiwara 氏

会場アンケートをとりつつ、必須な/便利なモジュールや Plack::Middleware の紹介。

  • だいたい Starlet か Sterman を使っている。
  • リバースプロキシ使っている時には Plack::Middleware::ReverseProxy が便利。
  • Server::Starter の start_server では plackup を実行するシェルスクリプトを作ってそれを指定するようにするとパラメータ変更できるのでいいよ。
  • Devel::NYTProf する時には if $$ % 11 == 0 などで一部のプロセスだけでプロファイリングするようにすると不運な人は遅くなるけど、全体の影響抑えつつできるよ。

『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3 を受けての話題 @kazeburo 氏

YAPC::Asia Tokyo 2013 の発表の続き。

Plack/PSGI のパフォーマンス向上の取り組みが進めば Perl の適用領域を広がるし(リアルタイムな広告系とか)、Perl 使いの仕事も増えるよ。

Plack::BodyParser の話 @tokuhirom 氏

  • 最近のサーバーサイドの開発JSON API開発と管理画面の開発だよね。
  • HTTP ステータスコードの使い方をシンプルに。アクセス自体が成功したら 200 を返して、API の結果の方に API 処理自体のステータスを入れる方がシンプルだし、アクセスログ処理なども楽だよと。
  • JSON API のボディ内で返すステータスも HTTP ステータスコードと同じにしたら覚えることが少なくて楽。
  • URI の /v1/ とか入れたりするけど /v2/ とか出たためしがない。

など。プラクティカルなトーク。

Plack::Request with Encoding @moznion 氏

リクエスト中のパラメータの decode を Plack で一箇所でやってしまう話。

Mojolicious の知りたい 10 のコト @yusukebe 氏

  • morbo と hypnotoad。それほどパフォーマンス悪くない。
  • Mojo::Base は使わなくていい。それほど機能無いし、Web 系以外では Mojo に依存したくないし。

YAPC::Asia 2014 やります!」とのことです。

LT

@bayashi 氏の plackup -e でちょっとしたこといろいろできて便利だよという話や、@azumakuniyuki 氏の Haineko の話や、 @hkoba 氏のコントローラを書く人がいないプロジェクト向けのテンプレートエンジンの話や、@songmu 氏の .psgi からの卒業の話とか、@tasukuchan 氏のきまぐれオレンジ☆ロードについてのラジオみたいなビデオ LT とか。

空気を読まない(読めない)一方通行なビデオ LT は新しく。

[ 11月20日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・PO をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

follow us in feedly

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.078346s / load averages: 0.43, 0.38, 0.40
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker