トップ(最新) | <前

nDiki : WikiPage

WikiPage

WikiEngine によって提供される誰でも編集できるWebページのこと。 WikiForumの各ページ。

一般にページには、

  • 「ページタイトル」...検索ページへのリンク
  • ページの内容
  • 「編集」リンク
  • 前回の編集との差分表示ページへのリンク

等が含まれている。

スポンサード リンク

Related term

2006年4月21日 (金)

第1回 社内 Perl 勉強会 このエントリーを含むはてなブックマーク

スポンサード リンク

この間教材として選定した「初めてのPerl 第3版」を使って第1回目の社内 Perl 勉強会を実施した。

プログラミングのクラスなんて大学(および TA)以来なので、進め方は手探りである。 まずは以下の様にしてみた。

@ 目的

Perl プログラミング、および一般的なプログラミング・開発のスキルアップを目指す。

@ 進め方

  • 私が進行役。
  • 自由参加 (私の指定プロジェクトメンバは必須)。プログラマでも、コンテンツデザイナーでも。
  • 書籍「初めての Perl 第3版」を教材とする。
    • 本は社内に1冊ある。ケンカしないでうまく回して読むように。
  • 1週間に1章ずつ進める (最初の回は1・2章)。
  • 各自事前に独習すること。業務の支障にならない範囲でうまく進めること。
  • 章末の練習問題を課題とし、勉強会の前に解答を作成してみること (書籍末に回答があるが見ないようにすること)。
  • 独習の上でわからない点は適宜、誰かに質問してできるだけ解決をはかること。

@ 勉強会

  • 毎週金曜日に勉強会を 16:00 - 17:00 で開催。
  • 練習問題の解答ピアレビューを中心に行う。その場で本読みはしない。
  • 課題がプログラムの場合は、プリントアウトして持参すること (あまりに長い場合はのぞく)。
  • 参加希望者は事前に 社内 WikiPage に、参加意思を表明すること。
  • 練習問題別に、チェック項目や補足情報を追加した資料を開始時に配付。

@ 実施

第1回は私を含めて6人による勉強会となった。

プログラミングを学ぶのはやはり実践が一番であるので、事前に練習問題に取り組むというスタイルにしてみた。勉強会では他人のコードを見たり意見交換したりすることで理解を深め新しい発見ができればと考えている。

皆それぞれの業務を抱えているので、忙がしい人については事前の課題取り組みについては厳しのではとの不安もあったが、初級者・中級者にかかわらず全員準備してきていた。 びっくりするとともに嬉しかった。 参加者は皆それぞれチャレンジ心を持ち、何かを得ようとという熱意があるようで素晴しい限りである。

今回は練習問題も簡単だということもあり、全員解答できたようである。 今回気がついた点:

  • プログラムのプリントアウトについては以下のようにするのが望ましい。
    • プログラム毎にプリントアウトを分ける (1枚に複数のプログラムを掲載しているとレビューしにくい)。
    • フォントは適度な大きさで (小さいと見づらい)。
    • 今後プログラムが長くなってきた時のために、行番号を入れるのが望ましい。
    • 可能ならばプリティプリンティグを (皆にツールを紹介する必要あり)。
    • 今回は皆1セットづつしかプリントアウトしてこなかったが、これだと皆でレビューしにくい。人数分プリントアウトしてしまった方が効果的ではないだろうか。他人のプログラムで興味深いものは持ち帰りたいし。その場合はプログラムの先頭にコメントで問題番号と作成者を書いてもらうのが良いだろう。
  • そういえば書籍末の正解の確認をしなかった。今後問題が難しくなってきたら確認した方がいいかもしれない。
  • 教材の本は予算で買った1冊とスタッフ私物の1冊で現在2冊。ちょっと足りないかな。もう1冊ぐらいあった方が良いかもしれない。

1時間の予定であったが10分オーバーで70分。 時間的にはこれぐらいか。90分ぐらいあった方がいいのかもしれないけれど、業務とのかねあいもあるし。

@ 本社

そういえば今回は東京オフィスで希望者向けのものだったので特に本社には連絡しなかったんだけれど、1名ここ(nDiki)の記事を見て羨しがっていたらしい。

リモートでの参加までは考えていなかったので今回は準備できなかったけれど、希望があるならなんか方法を考えていきたい。

@ また来週

さて、本格的にプログラミングっぽくなってくる次回からが楽しみである。 目指せ総 Perl プログラマ化。

■ Twitter やってます。この記事が気にいったらぜひ twitter.com/Naney の follower になってください。

Google Buzz はよろしければ Naney の Google プロフィールからどうぞ。


[ 4月21日全て ]

2006年4月29日 (土)

WikiPage 編集画面で Ctrl+S を押すとプレビューするようにしてみる このエントリーを含むはてなブックマーク

「ついつい保存しようとして Ctrl+S を押して Web ブラウザの保存ダイアログを開いてしまうんだよね。Ctrl+S で (WikiPage を)保存してくれると嬉しいんだけれど。」

WiKicker を使用している同僚からのアイデア。 自分にとって C-s は Incremental search forward (`isearch-forward') であって保存ではないので、あまり関係ないといえばないんだけれど、その気持ちは良くわかる (C-p で 印刷ダイアログが開くのうざい)ので、試しに実装してみることにした。

ただしいきなり Ctrl+S で保存はちょっとデンジェラスなので、プレビュー画面に移動するようにしてみる。

例によって Web ページ上の JavaScript におけるイベント処理は、Web ブラウザ依存バリバリなのね。 テストが面倒(自分でできない/自動化困難)なので、できるだけ近付きたくはないのだけれども。

とりあえず、Firefox 1.5.0.2 on Debian GNU/Linux と、Internet Explorer 6 on Windows 2000 では動くことを確認するところまできた。

喜べ松下君。


[ 4月29日全て ]

2006年5月22日 (月)

WiKicker 0.30 リリース - トップページのページ名を変更できるようにするなどの機能追加 このエントリーを含むはてなブックマーク

2006年2月13日以来、3カ月ぶりのリリース。

  • コメント書き込みでも書き込み禁止パターンが適用されるように改良。
  • WikiPage 編集画面で Ctrl+S を押すとプレビューするように改良。
  • WiKicker の トップページのページ名を変更できるように改良 (toppage.pagename プロパティ)。
  • トピックパス表示で常にトップページを先頭に表示するオプション (topicpath.showtop プロパティ) を追加。
  • エラー時の HTTP レスポンスコードを 503 にした。
  • テストスクリプトの改善。

セッション管理/認証/承認機能のコードを書きはじめてパッケージには含まれているけれど、まだ完成していないので有効になるようにはなっていない (あ、ちょっと中途半端になっているかも)。


[ 5月22日全て ]

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月18日 (火)

WiKicker 0.36 リリース - 通常表示に戻るナビゲーションを追加 このエントリーを含むはてなブックマーク

添付機能のバグ修正や、attachment: で添付ファイルにリンクする際に、添付ファイルが存在しない場合はリンクにならないようにする改良を行った。

それから今まで、各 WikiPage に対する履歴ページなどの補助ページから、通常表示ページへ戻るページナビゲーションリンク、'view' (あるいは 'latest') を追加した。

PukiWiki だと「リロード」にあたるリンク。 他の Wiki も含めてちょっとチェックしてみたけれど、このリンクのテキストがバラバラで何にするか迷うところだ。

今回のリリースでは view にしておいたけれど、将来は変えるかもしれない。


[ 7月18日全て ]

2007年2月2日 (金)

DiKickergrep 検索機能を追加 このエントリーを含むはてなブックマーク

DiKicker には自動リンクベースの記事串刺し表示機能があって、同じキーワードを含む記事をまとめて読むことができる。 結構便利なのだが、この機能ではキーワードの設定は Blog の書き手に委ねられている。

社内で DiKicker を一部使ってもらっているのだけれども、それら他人の Blog を読んでいると「あのキーワードで串刺し表示したいな」と思うことがしばしばあることに気がついた。 やはり任意の文字列で串刺し表示する機能が欲しい。

書き手にとっても「自動リンクキーワードにするような文字列ではないけれども、串刺しで読みたい/探したい/見せたい」と思うことが少なからずある。

ということで、検索ベースの串刺し表示機能を実装してみた。

@ grep ベース

実現には全文検索を行う必要があるが「設置・運用の手間」「ディスク容量」という点から、事前にインデックスを生成するような方法は今回は避けようと思う (www.naney.org 上で自分が使う上での制約からくる理由が一番大きかったりする)。

ということで今回は grep 型で実装することにした。 もともと WiKicker の方の検索機能も現在のところ grep 型である。 WiKicker では自前で WikiPage をスキャンしているが、DiKicker では grep コマンドに任せることにした。 こういうのは専用の grep を使った方が速いはず。呼び出しは

 grep -Flre $escaped_string dir...

というオプション指定。Web ページとしてのページングなどは、自動リンクによる串刺し表示機能のものを流用。

で試したところ www.naney.org サーバでは、load averages が 1 以下の時でだいたい50秒前後。対象ファイル数は 2800弱。予想より時間がかかる。

ただし1回実行した後、ファイルがファイルシステム/OSメモリ上にのっている状態では 0.1秒程度で完了する。

検索結果ページの permalink が検索エンジンにそれなりに捕捉されて、定期的にアクセスがあるようになれば、ファイルがメモリにのっている割合が増えるであろうから平均して実用に耐えられる速度が出るかもしれない。

今後は様子をみながら検索結果のキャッシュ等を処理を整備していく予定。


[ 2月2日全て ]

2007年3月1日 (木)

WiKickerソフトウェアかんばん このエントリーを含むはてなブックマーク

情報カードベースでソフトウェアかんばん(ストーリーカード + タスクカード)を作っている開発プロジェクトがあるのだが作ったっきりあまり活用されていないので、今回は試験的に WiKicker による Wiki 上でかんばんを作ることにした。

まだ荒削りだけれども、まずはとにかく以下のルールで始めてみる。

@ ルール

@ カードの作り方

基本的には 1カード毎に WikiPage を作るようにする。 ページ名はストーリーカードを表す SC と 状態 (TODO / DOING / DONE) を含む名前にする。

  • SC/TODO/<ストーリー名>
  • SC/DOING/<ストーリー名>
  • SC/DONE/<ストーリー名>

タスク名も同様に作る。

  • TC/TODO/<ストーリー名>
  • TC/DOING/<ストーリー名>
  • TC/DONE/<ストーリー名>

カードの内容は XP で扱っている内容で。 新規作成が楽なようにテンプレートページを作っておき、これをコピーして作れるようにしておく。

@ 状態変更

TODO -> DOING -> DONE という状態変化にあわせて、WikiPage 名を変更してページを移動させる。

 例:
 TC/TODO/名前をつけて保存メニューを追加
   |
   V
 TC/DOING/名前をつけて保存メニューを追加
   |
   V
 TC/DONE/名前をつけて保存メニューを追加
@ 一覧ページの作成

SC/TODO、SC/DOING、SC/DONE、TC/TODO、TC/DOING、TC/DONE ページを作りそれぞれに、子階層の一覧を表示させる (WiKicker の [[index:child]] を使用)。

@ 参照

タスクカードからは「SC/<ストーリー名>」という名前で、ストーリーカードへリンクさせる。

WiKicker では「SC/<ストーリー名>」というページない場合、「SC/*/<ストーリー名>」というページを探してリンクしてくれる。この機能のおかげで、状態にあわせてページ名を変更してもリンクはそのままで追従してくれる。

@ 担当者

担当者が割り当てられて実行中のタスクカードには [[DOING:担当者名]] という文字列を記述しておく。

「DOING:担当者名」で検索することで、各担当者が何を実行中なのかリストアップすることができる。また DOING: を「DOING:担当者名」を検索する Wiki 自身への InterWiki として定義しておくことで、この記述自体を検索結果へのリンクとすることができる。


WiKicker / DiKickerAutomaticLink 長を可変にした このエントリーを含むはてなブックマーク

「が」や「は」など頻出する文字の WikiPage を作ってしまった場合、それらに対して自動リンクが働いてしまうと大変なことになるので、WiKicker では2文字以上のみ対象とするようにしていた。

しかし nDiki を書いていて、1文字のキーワードも自動リンクしたいという風に思えてきていた。 誰でも書ける Wiki の場合には危険で制約が必要だけれど、全てのキーワードが著者のコントロール化にある DiKicker では1文字のキーワードに対して自動リンクが働いても問題ないだろう。

ということで自動リンクが働く最低文字列長をプロパティで設定できるようにした。 2004年ぐらいからほとんど手をつけていなかった、AutomaticLink 処理モジュールを久しぶりにメンテナンス。 もともと2文字以上を前提でコーディングしてあったので、trie 部分などが1文字できちんと動くか確認した上で、文字列長チェックを可変に修正。 WiKickerDiKicker 両方で設定で変えられるようにした。

またあわせて、英単語の部分文字列に対して自動リンクしないようにする処理も改善。 今までは `downloaded' に対して `loaded' はマッチしないようにしていたものの、'download' はマッチしてしまっていた。 このあたりを改善。


[ 3月1日全て ]

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日全て ]

2008年1月18日 (金)

今日のさえずり - 0x800A03EC で苦しんでいる このエントリーを含むはてなブックマーク


[ 1月18日全て ]

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

Process Time: 0.094405s / load averages: 0.36, 0.29, 0.26
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)