トップ(最新) | <前 | 次>

nDiki : HTML

HTML - HyperText Markup Language

関連情報

Perl モジュール

  • HTML::PopupTreeSelect
    • ディレクトリツリーなどのツリー構造のノードを選択させるウィンドウをポップアップさせるためのモジュール。
  • Template Toolkit

HTML への変換

スポンサード リンク

Related term

2006年6月10日 (土)

Plagger のインストールが大変なので XML::RSSRSS から JavaScript コードへ変換するスクリプトを自作 このエントリーを含むはてなブックマーク

一昨日社内メイン Wiki のレイアウトを変更してサイドバーを設けたので、徐々に増えてきた社内 Blog の ヘッドラインをそこに表示することにした。

最初は Plagger を使ってみようと思ったのだが、依存 CPAN モジュールが多くて CPAN.pm を使ってもなかなかインストールが終わらない。

ということで今回は Plagger を見送って、XML::RSS でちょちょっと aggregator を自作して済ますことにした。

基本的には nDiki 用に書いた「はてなブックマーク上の最新ブックマークを表示するためのコード(2005年5月16日)」をちょっと修正して利用。 HTML フラグメントを生成するかわりに、JavaScript IncludeJavaScript ファイルを生成するように変更した。

これで社内 Blog が読まれる回数も増えるかな。

スポンサード リンク


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年7月22日 (土)

Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 このエントリーを含むはてなブックマーク

入社してから社内情報共有の一環として

といろいろ手をつけてきた。 次に狙っているのは SBS である。

Wiki社内 Blog に書くほどではないけれどメモ程度にブックマークしておきたい URL を、気軽に晒せるようにするのが目的。

はてなブックマークのような公開サービスは

  • タグ・コメント・傾向などが外に出るのはよろしくない
  • あるいは、それを気にして活用されない
  • そもそも社内リソースについてはブックマークできない

という点から、今回は利用できない。

ということで社内に SBS を設置したい考えている。

最初は Scuttle にしてみようと思ったのだが、PHP ベースであるのと MySQL を使うというところで気遅れしている。 いや SQLite でもいけそうらしいということで、実は Debian でちょっと試そうとしたのだが、テーブル作成の SQLMySQL 用で、これを修正するのが面倒なので断念。

次に Perl + SQLite で動く Rubric を試してみることにした。

@ Rubric 0.140

Rubric は CPAN にあがっているので CPAN.pm から install Rubric でインストールできる。 モジュールをインストールしたら、セットアップ。

  1. CGI プログラムを動かすディレクトリを決める (以下 $RUBRIC)
  2. Rubric tarball の bin/rubric.cgi を $RUBRIC/ にコピーし、必要なら #! を修正する。
  3. Rubric tarball の templates ディレクトリを $RUBRIC/ にコピーする。
  4. Rubric tarball の style/rubric.css を $RUBRIC/ にコピーする。
  5. Rubric tarball の etc/rubric.yml を $RUBRIC/ にコピーして環境に合わせて編集する。
  6. データベースを初期化する。0.140 には makedb.pl が同梱されていないので、0.13_01 の bin/makedb.pl を参考に perl -MRubric::DBI::Setup -e 'Rubric::DBI::Setup->setup_tables' で初期化する。ちなみに 0.140 付属の rubric コマンドで rubric db -s してみたが、これはうまく動かなかった。
  7. 必要に応じて .htaccess を作成・編集し rubric.cgi を CGI プログラムとして実行できるようにする。またその他アクセスされたくないファイルを deny するようにしておく。

これで OK。

rubric.cgi にアクセスしページが表示されればひとまず成功。 メニューの「register」から、ユーザ登録する。 確認用のメールが届くはずだが、面倒くさいのでこれを待たずに

 rubric user -a ユーザ名

でアクティベートする。

Rubric の HTML フォームからのブックマーキングは成功し、うまく動いているようである。 ただし、日本語の処理はどうもよくない。 title や description が化ける。 惜しい。

基本的には UTF-8 ベースでうまくいきそうなのだが、どこかで化けるようだ。 ちょっと手を入れれば直るかなと思ったが、化けるところと化けないところとがあるので逆に直す場所が多そうなので今日はやめておくことにした。

とりあえず Rubric はおいておいて、他のものも試してみることにするか。


[ 7月22日全て ]

2006年7月25日 (火)

Perl 用の doxygen のようなツールはないのかな このエントリーを含むはてなブックマーク

WiKickerソースコードを人に説明するのにプリントアウトして説明するのに、doxygen のようなツールが欲しいのだけれど Perl 用のものはないのかな。

  1. ソースコードを色付けした HTML に変換してくれる
  2. Pod とコード本体を混在してドキュメント化してくれる
  3. ソースツリー内のファイルをそれぞれ処理してくれて、インデックスファイルも生成してくれる。
  4. できれば識別子がリンクになってくれる

というのが希望。1 だけなら結構いろいろなツールがあり、1 + 2 なら perltidy で実現できる。 しかし 3、4 までしてくれるツールが見つけられない。

とりあえず perltidyPerl::Tidy と File::Find で再帰的にまとめて HTML に変換するスクリプトだけは書いて、一気に変換だけはできるようにしておいた。

インデックスの作成までは面倒なので未着手。


[ 7月25日全て ]

2006年8月3日 (木)

OpenOffice.org 2.0.3 をインストール このエントリーを含むはてなブックマーク

「MS .*」 なファイルについては基本的に会社の Windows BOX 上で見ているのだが、これだと出張先で閲覧したい時にちょっと困る。 まあ wv、xlhtml 等である程度感じは掴めるのだが、細かいところまでは難しい。

ということで HDD 容量もぐんと大きくなったことだし OpenOffice.org 昨日入れてみた。

(他が原因かもしれないが)その後 X を再起動したら、フォントがギザギザ・一部消えるという悲惨な状況に。 KDE のコントロールセンターでフォントをいじっているうちにもとに戻った。

とりあえずこれで社外でも「MS .*」が読めるようになった。

基本的には

あなたは、秘密で独占的なMicrosoft Word形式の添付ファイルをお送りになったので、私にはそれを読むのは困難です。プレーンテキストかHTMLPDFでお送りいただければ、拝読いたします。-- Richard Stallman 氏に習う Word 添付ファイルの断り方, 日刊アスキー (→ 以前の紹介記事)

ですが。


[ 8月3日全て ]

2006年10月5日 (木)

DiKicker の出力する HTML コードを小さく このエントリーを含むはてなブックマーク

容量超過につき www.naney.org の容量削減中。

中でも結構な容量を食っているのが、nDiki (DiKicker) の HTML 変換済み記事データベースである。 毎回レンダリングし直すと遅いので、1度 HTML フラグメントに変換したら Bereley DB ファイルに保存しているのだが、これがどうしても大きくなってしまうのである。

NaneyOrgWiki (WiKicker) もそうなのだが、 UTF-8 を使用しているため日本語中心のテキストが思った以上にデカくなるのも痛い。

ということで生成する HTML フラグメントをちまちま小さくするようにすることにした。 チェックしてみると自動リンクURL が絶対 URL になっているではないか。 まずはこれを短い URL を吐くように書き直し。

焼け石に水な感もあるが、ちょっとずつでも短くしていきたい。


[ 10月5日全て ]

2007年1月8日 (月)

iCalendar 形式経由でスケジュールを社内 Blog に表示 このエントリーを含むはてなブックマーク

仕事用に Skype 名を作成し、ついでに社内 BlogSkype ボタンを貼りつけてログイン状態を表示できるようにしてみた。

そういえば電話もそうなんだけれど、本社に連絡を取るとき「もしかして会議中?」などと勘繰ってかけるかどうか迷ってしまうことがある。 かけたい人の予定がわかればいいのになと。

ならば逆もしかりだろうということで、自分の仕事のスケジュールを晒してみようと思いついた。 グループウェアとかそういうのは大袈裟なので、まずは社内 Blogサイドバーに表示するようにしたい。

ということでこの3連休に実装してみた。

@ 構成

@ 入力

完全なスケジュールはほぼ日手帳に手書きで管理しているので、ミーティング・外出など晒しカテゴリのイベントだけを、電子化する必要がある。 手で HTML 毎回ごりごり書き直すのも嫌なので、スケジュール管理ソフトを使いたい。 この部分は KDE の KOrganizer を使うことにした。

@ サーバへアップロード

で、KOrganizer のスケジュールを iCalendar 形式でエクスポート。 このファイルを社内 Blog を配信しているサーバに rsync で転送。

この処理はちょっと手間なので自動化したいところ。

@ 社内 Blog 内表示用 JavaScript Include ファイル生成 CGI プログラム

この iCalendar 形式ファイルを読み込んで、今日以降の10件(程度)を HTML フラグメントに変換し JavaScript プログラム (document.write() 列) として出力する Perl CGI プログラムを作成。

iCalendar の形式の読み込みについては Data::ICal や iCal::Paraser などの Perl モジュールを利用できる。 今回はシンプルに使えそうな iCal::Parser をチョイス。 基本的には

 use iCal::Parser;
 my $parser = iCal::Parser->new;
 my $calendar = $parser->parse($ics_file_name);

で読み込んだデータがハッシュリファレンスとして $calendar に設定される。 イベントは $calendar->{2007}->{01}->{01}->{$uid} のように「年、月、日、イベントUID」のハッシュ階層として格納されているので、これを読み出せばよい。

@ 社内 Blog サイドバーに表示

で、この CGI プログラムが生成する JavaScript プログラムをサイドバーJavaScript Include

まずは表示までできるようになった。

これで

をまとめて公開できる社内 Blog にアップグレード。

おいおいスケジュールの表示デザインとかは改良していきたい。 hCalendar 形式にして CSSデザインするのがいいのかな。


[ 1月8日全て ]

2007年1月13日 (土)

[ WiKicker ] spam検索エンジン対応に noindex、nofollow を追加 このエントリーを含むはてなブックマーク

@ <a rel="nofollow">

相変わらず www.naney.org 上の WikiForum (NaneyOrgWiki) にも毎日のようにリンク spam 書き込みがある。

気がつき次第削除と、その URL や関連キーワードの書き込み禁止文字列ブラックリストへの登録を行っているが、手間でしょうがない。

これらのリンク先に貢献するのは腹立たしいのでリンク (A 要素)へ

 rel="follow"

属性をデフォルトで設定するように WiKicker を書き換えた。 ようやく。

@ <meta name="robots" content="noindex,nofollow">

あわせて、検索エンジン対応もしていおくことにした。

編集ページや履歴ページは検索エンジンに登録してもしょうがないので、インデックスから除外されるように HTML の HEAD に

 <meta name="robots" content="noindex,nofollow">

を追加するように修正。

クエリ付きの URL のページで noindex した場合、クエリ無しや他のクエリを持つ URL のページまで一緒にインデックスから外されてしまわないかちょっと心配で、今まで保留にしていたのだけれど、Wikipedia などを見ても大丈夫のようだ。


[ SEO ]


[ 1月13日全て ]

2007年1月27日 (土)

DiKickerはてなブックマーク数表示機能を追加 このエントリーを含むはてなブックマーク

各記事毎に、「はてなブックマーク数表示」と「はてなブックマークエントリーページへのボタン」を追加する機能を追加。

DiKicker の構造上 HTML フラグメントへ変換する visitor を拡張する形で実装したけれど、やはりこの辺りはテンプレートベースでユーザがいじれるようにしたい。

WiKicker 開発時に速度の面で外した Template Toolkit 採用をまた検討してみるか。


[ 1月27日全て ]

2007年4月3日 (火)

WiKickerJSON でのページ出力機能を追加 このエントリーを含むはてなブックマーク

最近は DiKicker ばかりに手を入れていたが、久しぶりに WiKicker の改良も行っている。 しばらく前から実装を始めていた JSON 形式での出力機能が今日完成。

今までは WikiPage について

  • HTML 形式による出力
  • Wiki 文法で書かれている生テキスト形式による出力

という2つの出力形式を持っていたので、JSON が加わることで3つめとなる。

@ サーバ側で WikiPage の構文解析まではやる

クライアントサイドの JavaScript でページの内容に合わせて様々な処理をできるように、サーバ側で構文解析まではしてあげるというのが主な目的。

JavaScript でまたパーサを書いてメンテしていくのも大変なので、その部分はサーバでやってしまおうかと。 構文解析した結果の解析木を JSON 形式で返して、JavaScript 側であとはお好きにという形。

@ CPAN にある JSON モジュールを使用

サーバ側の Perl プログラムには、構文解析をして解析木を作れるようになっている。 この解析木から Visitor パターンで JSON 形式を生成していく。

依存モジュールを増やすことを避けるべく、最初は自前で JSON 形式に変換していこうと思ったのだがやっぱり面倒だった。 ということで CPAN にあるモジュールをチョイス。

JSON 関連では JSONJSON::Syck、JSON::PC などがあるが今回はインストールのしやすさを考えて pure Perl モジュールとして実装されている JSON を採用することにした。

Visitor クラスで解析木を無名ハッシュ/無名配列のツリーに変換して、JSON モジュールに流しこめば OK。

 use JSON;
 my $json = JSON->new(pretty => 1);
 my $js = $json->objToJson($tree);

WiKickerフレームワークにはフォーマット別に出力を切り換える機構があるので、これに JSON を追加して application/json で送るようにして完成。

ちなみに残念ながら JSON 1.07 は Perl 5.005_03 では make test が fail するので、NaneyOrgWiki では使えない。


[ 4月3日全て ]

2007年4月13日 (金)

クリッピングに便利な CMSTumblr」を使ってみる このエントリーを含むはてなブックマーク

Twitter と一緒に取り上げられることの多い Tumblr の方も試しに使ってみることにした。 一緒に取り上げられているといっても、両者は結構違うサービス。 Tumblr はどちらかというと Web コンテンツをクリッピングしていくのに便利なネットサービスだ。 Tumblr ではメディアミックスな短かめの投稿によって構成される tumblelog と呼ばれる Blog の一種を作ることができる。

Tumblr はページのテンプレート(HTML)を好きなようにいじれるのが魅力的だ。 Google AdSenseJavaScript コードなども挿入することができるので、結構好きなようにページにパーツを埋め込むことができる。

早速アカウントを作成して、tumblelog なるものを作ってみた。

まずは設定の方から。「Change settings」から設定ページに移動する。

  1. Title: tumblelog のタイトルを書く。
  2. Description (任意): tumblelog の説明を書く。
  3. URL: tumblr.com のサブドメインの URL をもらえるので、名前を入力する。ドメイン名を持っていればそれを割り当てることもできる。
  4. Theme: あらかじめ定義されているものを選べる。Custom を選択して、HTML テンプレートをいじることもできる。定義済みのものをカスタマイズしたいなら一旦そのテーマを選んで保存してから、Custom に変更する。
  5. Import Feeds: RSS フィードや ATOM フィードから自動的に記事をインポートしたい場合、Feed を登録する。例えばFlickrTwitterはてなブックマークなどへ投稿したものを自動的に Tumblr の方でインポートさせることができる。

テンプレートをいじって Twitter のバッジを貼ってみたり、テスト投稿をしてみたりしてまずは様子見。

nDiki に書くほどではないけれども、はてなブックマーク以上の言及をちょっとしたい時などのクリッピングに使ってみようかと思う。

ただ検索機能・タグ機能などは今のところ無さそうなので、書きっぱなしになってしまわないかという懸念あり。


[ 4月13日全て ]

スポンサード リンク

■よく検索されるキーワード

torrent(109) x31(45) thinkpad(31) 動画(29) 提案書(26) mp980(24) 手帳(24) windows(23) linux(23) 画像(21) 使い方(21) リフィル(21) debian(20) usb(20) tc-1(19) perl(19) 筆まめ(18) 壁紙(17) ほぼ日手帳(16) 冷蔵庫(14) ドラマ(13) wiki(13) 書き方(12) ダイソー(12) システム手帳(12) 宮根誠司(12) ノート(11) so905ics(11) 無印(11) バッグインバッグ(11) 映画(11) 設定(10) 修理(10) 宮根(9) ssh(9) a6(9) ほぼ日(9) 黒田征太郎(9) バッグ(9) gmail(8) 感想(8) (8) f-01a(8) メモリ(8) gtd(8) ブログ(8) nikon(8) allinanchor:*.torrent(8) ボールペン(7) 方眼(7) ポイント(7) 4c(7) ヨドバシカメラ(7) ケース(7) twitter(7) apache(7) ht-01a(7) ヨドバシ(7) ubuntu(7) truecrypt(7) n-02a(7) 作り方(7) minolta(7) af(6) インストール(6) ガントチャート(6) mp3(6) zippo(6) hdd(6) emacs(6) レビュー(6) カバー(6) vq1005(6) 日本語(6) ハクキンカイロ(6) 無印良品(6) グレゴリー(6) 交換(6) nikkor(6) pixus(6)

この日記のはてなブックマーク数 Add to Google RSS

Process Time: 0.088392s / load averages: 0.19, 0.32, 0.29
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)