nDiki : WiKicker

WiKicker

2007年3月7日 (水)

自動リンク機能改善による悪影響

www.naney.org がどうもまた最近重い。

load average が 30 前後まで上がっている。 しばらくするとだんだん落ちついてくるのだが、3 以下になったところでまた 30 前後までまた一気に上がるというのを繰り返している。 load average で振る舞いを変えるのは WiKicker / DiKicker の特徴なので、これはうちが原因かも。

調べてみると SpeedyCGI のフロントエンドのプロセスが順番待ちで大量に起動している。

どうやら先日追加した自動リンクの機能改善にかかわるコード修正による、若干の処理速度の低下がまずいようだ。

速度が上がるようにちょっと修正してみたけれどまだ駄目なようなので、しかたなく単語の連接チェック部分を一時コメントアウトして対応。

今後、自動リンクまわりの更なる高速化がする必要がありそう。

[ 3月7日全て ]

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年5月30日 (水)

WiKicker 0.420 リリース - 変更いろいろ

去年の12月3日以来、約半年ぶりのリリース。 リリースしそびれて、随分変更を累積してしまった。 以下主な変更点。

バージョン番号形式を変更

前回の 0.41 に対して、今回は 0.420 とした。 浮動小数点数的には、増分 0.01 で今まで通り。

今後 version.pm が普及した時のことと、developer release を出す時のことを考えて小数点以下3桁ずつのスタイルに移行することにした (関連記事)。

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

2007年1月に実装。 編集ページや履歴ページが検索エンジンに登録されないようにするための機能。

<a rel="nofollow">

2007年1月に実装。 リンク spam 対応。

AutomaticLink 長を可変にした

2007年3月に実装。 特に DiKicker で1文字キーワードによる自動リンクを有効にするために追加した。

'/' の前を省略した自動リンクを有効にするか無効にするかを設定できるように

前述の機能で1文字での自動リンクを有効にしたら、不便な面が出た。

WiKicker / DiKicker では '/' を階層の区切り文字としても扱うことができるようになっていて、サフィックス部分だけでも自動リンクするようになっている。 自動リンクを1文字にしたら「OS/2」というキーワードに対して '2' でも自動リンクが働き、望まないリンクが張られるようになってしまった。 DiKicker では階層的キーワードは無くてもあまり困らないので、'/' の前を省略した自動リンクを無効にできるようにした。

JSON 形式データ出力

2007年4月に実装

(DiKicker) はてなブックマーク数表示機能を追加

2007年1月に実装

(DiKicker) はてなブックマークエントリーページへのボタン表示機能を追加

2007年1月に実装

(DiKicker) grep 検索機能を追加

2007年2月に実装。自分としては重宝している。

(DiKicker) キーワード記事の下部への文字列挿入機能

Google AdSense 挿入用。

(DiKicker) サーバの負荷が高くなったら 503 を返して沈静化を待つようにした

2007年4月に実装 load average をチェックして負荷が高い時は、503 を返すようにした。

内部コードの結構な書き換え

ソースコードを結構いじった。 deprecated なメソッドの削除も実施したので、0.41 以前から派生しているソフトウェアは多くの場合修正が必要。

[ 5月30日全て ]

2007年8月23日 (木)

無制限 HTML タグ付けブロックを使って nDikiGoogle Maps を貼る

Google Maps が ID を取得しないでも簡単に自分のサイトに貼れるようになった。 Google Maps で表示される HTML コードをページに埋め込めば、好きな場所の地図を貼ることができる。 これは嬉しい。

早速 nDiki でも貼りたい。

しかし WiKicker という WikiEngine をベースとした DiKicker を使っている nDiki では、現在のところ直接 HTML コードを使えるようにしていないのである。

HTML タグ付けを許すのは嫌」というスタンスできたのだが、他のサービスを貼るという魅力にはやはり勝てないな。 HTML 直書きを許すのは大局的にはデータ活用性などで好ましくない部分もあるが、各種サービスを活用できないで利用価値が下がるのは本末転倒なので、わかった上で使うということで。

ということで nDikiHTML タグ付けブロック機能を有効に設定。

ちなみに現行では HTML::Scrubber ベースで、使えるタグ・属性に制限をつけるフィルタしか用意してなかった。これだと Google Maps のコードがそのまま貼れない。 ということで「DiKicker」および「書く人が限定されているような Wiki」での利用を想定した無制限にスルーするフィルタモジュールを新規追加。

これで Google Maps を貼れるようにした。

では早速。

2023年8月21日 追記

埋め込んでいた地図が表示されなくなっていたので HTML コードを削除。

[ 8月23日全て ]

2007年11月23日 (金)

最近の Twitter ステータスを nDiki最近のさえずり」ページに自動表示

11月9日から「Twitter ステータスを nDiki サイドバーに表示」しているのだが、それで使っているスクリプトにちょっと手を加えて「最近のさえずり」という nDiki ページを自動生成/更新するようにした。

サイドバーRSS フィードと同じく最近の20件を表示するのに対し、最近のさえずりページには数日分表示するようにした。

ここ最近は Twitter のステータスをとりまとめて、ライフログ的に nDiki に上げているのだが、今までは Twitter Web ページやサイドバーの部分から手作業でコピーして日時やリンクを整形していたので面倒であった。

今回の(30分毎に)自動更新するページは最初から WiKicker / DiKicker 用の Wiki 文法で出力している。 なので、これからはこの自動生成ページから必要なものだけを抜き出して貼り付ければよい。 これで楽ちんになるはず。

ほぼ自分用。自己満足。

[ 11月23日全て ]

2008年1月7日 (月)

ケータイ用にプライベート Wiki を設置

パケ・ホーダイ契約してから、MovaTwitterRTMモバイル Gmail などで携帯電話を活用するようになった。そんななか、決定打がないのが、ノートアプリケーション。電車の中などの隙間時間に、この nDiki の 下書きなどはケータイでできるようにしたい。

Google ドキュメントが使えればいいが、前年ながらまだiモードでは使えない。 メールベースでやる手もあるが、メモには良いものの再編集を繰り返したいようなものに難がある。

ということで自前でプライベート Wiki を立てそこに書き込んでみることにした。

iモードから WiKicker

使う WikiEngine はいつも通り自作の WiKicker

書き込んだテキスト内のキーワードを nDiki自動リンクさせることができるので、パーソナルナレッジベースとして自分にとっては一番便利。書式も同じなので、Wiki に書いた下書きを、そのまま nDiki で使える。

肝心のケータイからの書き込みだが Ajax 等凝った技術を使っていないおかげで、問題なく FOMA 端末(D703i)からiモードで読み書きできた。WiKickerUTF-8 でページを出力しているが、網側か端末側の処理かは知らないが今のところ問題なし。

なお認証は簡単に Basic 認証で済ますことにした。 安全とは言えないがそれほど重要なデータを置くわけではないしいいかな。 cookie は必要ないし WikiEngine に手を入れなくてもよいので、すぐできるのはコレ。

ユーザ名とパスワード付きのトップページ URL を端末でブックマークしておけば1発でアクセスできる。

Google Mobile Proxy 経由で使う

これでケータイ(と PC)から使えるプライベート Wiki を設置できたわけだが、なにぶんもともとケータイをサポートしている WikiEngine ではないため、長いページの分割機能などはないのがちょっと不安。PageName で生成される URL が長くなった時の振る舞いもちょっと不安。

そこで Google Mobile Proxy (http://www.google.co.jp/gwt/n) 経由で Wiki を使うことにした。 ページを携帯端末向けに変換してくれる proxy で、Basic 認証もできるしフォーム の POST もできる。

Google Mobile Proxy 経由で見たページ内のリンク先も全て自動的に proxy 経由になるので、 PC 向け Web ページの URL を書いておけばそのまま携帯電話で見ることができる。

安全のためか、比較的短い一定時間立つと認証の再確認画面が表示されてしまうが、ユーザ名とパスワードを入力すれば、セッションは継続される。 テキスト編集に時間がかかってしまうと POST する時にひっかかってしまい認証の再入力がちょっと面倒だが、再認証が通れば POST リクエスト自体は有効で書き込みがロストすることはないようだ。

しばらくはこれで読み書きしてみよう。

[ 1月7日全て ]

2009年12月23日 (水)

www.naney.orgさくらのレンタルサーバへ移転

naney.org メールサーバの移転に次いで、Web サーバの移転作業。

静的コンテンツのアップロード

現行 Web サーバUnisonファイル同期している Web コンテンツを、さくらのレンタルサーバUnisonファイル同期

WiKicker のインストール

nDiki 用に DiKicker (WiKicker) を make install。

 %bash
 $perl -MCPAN -e mkmyconfig
 $perl -MCPAN -e shell
   o conf makepl_arg PREFIX=/home/naney/local/WiKicker
   o conf mbuildpl_arg --install_base=/home/naney/local/WiKicker
   o conf commit
   notest install CGI::SpeedyCGI

 $tar zxvf WiKicker-0.420.tar.gz
 $cd WiKicker-0.420
 $export PERL5LIB=$HOME/local/WiKicker/lib/perl5/site_perl/5.8.9
 $perl Makefile.PL PREFIX=$HOME/local/WiKicker
 $make
 $make install

以前きっちり Module::InstallMakefile.PL を作っておいたおかげで、比較的スムーズにインストールできた(自画自賛)。

ちょっとはまったところは CGI::SpeedyCGI の make test を実行する(される)と SSH 接続がサーバ側から切られてしまうという現象にあったところ。 テスト用に大量にスクリプトが起動されるの検出して自動的に kick されたのだろうか。

.htaccess の修正

さくらのレンタルサーバでは .htaccess Options が使えないようなので削除。 ExecCGI や MultiViews が有効になっているようなので問題なし。

いつくかのスクリプトの修正

Perl 5.005_03 用に書いてあったスクリプトについて、Perl 5.8.9 で文字化けしないように utf8 まわりを修正。

cron 設定

1時間毎に実行したい処理を列挙するシェルスクリプトを1つ作って、コントロールパネルから1時間毎に実行するように設定。

現行サーバでは任意の crontab を設定できたので、1時間毎はちょっと物足りない。 おいおい負荷にならない範囲で、外部から定期的に HTTP アクセスして処理を定期的に実行できるようにもするかな。

DNS 設定変更

まだ動いていないスクリプトもあるけれど(大きいところだと NaneyOrgWiki (Wiki))現行サーバの解約日もせまっているので、サーバ移転させてしまうことに。

VALUE-DOMAINDNS サーバ設定を変更し www.naney.orgさくらのレンタルサーバにアクセスできるように A レコードを変更。

今のところ特に重い等もなく順調。 現行サーバでは深夜非常に重くなる時間帯があったのだが、それが無くなるのが嬉しい。 また容量が100MB*1から10GB*2になったので心理的にセーブしなくて良くなった。

年内に移行できて良かった良かった。


[ さくらのレンタルサーバ プレミアム ]

*1メール等別

*2メール他を含む

今日のさえずり - チョコレート臭のするリップクリーム塗られた

2009年12月22日

  • 09:36 東京水のお父さん若すぎ。娘はいくつの時の子だ?
  • 09:46 今年もビックカメラでカレンダーご自由にお持ちくださいになってるな。これって例年通り1枚もの? 車窓から見下ろしているからよくわかんない。 L:有楽町
  • 11:20 カシオ計算機株式会社の高精度計算サイト keisan で二項分布のグラフチェックしている。このサイト便利だな。 http://bit.ly/6H554E
  • 11:36 やはり結果が二項分布になっていなかったのは毎回 new System.Random().NextDouble() されていたからだな。1つの Random オブジェクトを使うように修正しておく。
  • 12:32 清まる東京ミートレア店のチラシに「住所かけ」と @nyafuru に指示された。
  • 12:34 泣く泣く書いた。 QT @Naney: 清まる東京ミートレア店のチラシに「住所かけ」と @nyafuru に指示された。
  • 12:45 2009年12月18日の歩行: 5898歩、4.54km、51分、5.29km/h、消費 224.9kcal、脂肪燃焼 32.1g、3.3エクササイズ。
  • 12:46 2009年12月19日の歩行: 3750歩、2.88km、34分、5.05km/h、消費 146.9kcal、脂肪燃焼 21.0g、2.0エクササイズ。
  • 12:48 2009年12月20日の歩行: 569歩、0.42km、5分、4.48km/h、消費 21.6kcal、脂肪燃焼 3.1g、0.3エクササイズ。
  • 12:49 2009年12月21日の歩行: 8585歩、6.60km、73分、5.37km/h、消費 337.8kcal、脂肪燃焼 48.2g、5.0エクササイズ。
  • 13:02 今日は窓ガラス清掃の日か。
  • 15:15 何でダイワハウチュなんだ? - デスクトップジーヴォβ http://bit.ly/4n80D1
  • 17:03 歯医者なのでそろそろ会社出ます。
  • 17:27 ヨドバシカメラ同時プリント回収。
  • 18:21 歯医者行ってくる。
  • 18:27 歯医者到着。腹減った。
  • 19:01 歯の定期健診終わり。なんかチョコレート臭のするリップクリーム塗られた。
  • 19:03 少し歯石があるぐらいで良く歯磨きできているとのこと。
  • 19:06 デンタルフロスほとんどサボっていたので気になっていたが問題なし。その事について聞いたらできればしてくださいと苦笑いされた。
  • 24:19 さくらのレンタルサーバWiKicker インストール中。
  • 25:48 さくらのレンタルサーバDiKicker を動くようにした。サーバ移転してもこれでとりあえず nDiki は維持できそう。
  • 25:51 さくらのレンタルサーバCGI::SpeedyCGI を make test すると途中でサーバ側から SSH 接続切断される。テストで大量にプロセスが起動されるのでそれで切断されちゃうのかな。
  • 26:55 寝る。

2009年12月23日

  • 12:47 ヒンジカバー装着。ストレージクリップがとまりにくくなったけど、まずまず。
  • 14:15 これからケーキのデコレーションするよ。
  • 15:13 デコった。 http://movapic.com/...
  • 16:27 ケーキ食べたし次、肉調達してくる。
  • 16:38 今年は近所の肉屋開いてた。ローストチキン確保。
  • 18:52 うちで @nyafuru のスヌーピーアイコンが好評。
  • 24:35 MovaTwitter クリボー(メモ帳) の RSS フィードがいつの間にか無くなっている。利用していたので残念。 #movatwi
  • 24:54 A レコードを変更して Web サーバも新サーバに移行。
[ 12月23日全て ]

2010年10月20日 (水)

今日のさえずり: ロック方式のバージョン管理機能やっぱりお肌にあわない

2010年10月19日

  • 10:25 素晴らしい。Data::MessagePack 0.34 のおかげで Xslate も Strawberry Perl 上にインストールできるようになりました。
  • 11:57 Strawberry Perl + Twiggy + Plack + Mojolicious + DBIx::Skinny + PostgreSQL + Xslate でやろうかな。
  • 12:06 和風牛丼 350円。 (@ なか卯 神田佐久間町店) http://4sq.com/9tdwTs
  • 12:56 Git 使ったことないのでチュートリアル読んでる。
  • 13:42 Red Hat Linux 8.0 (古)上で Git 1.7.3.1 のコンパイルに失敗したので先に OpenSSL 1.0.0a をコンパイルしていることろ。
  • 14:20 駄目だ。Git のコンパイル通らん。
  • 18:07 K-9 Mail 3.200 出た。 #Android
  • 21:17 mopera U U ライトプランって日割じゃなかったのか。9月1日に廃止したけど9月は満額請求されてた。
  • 22:12 Git ってまだ Windows 使うのは難があるのかな。だとオフィスの Linux サーバに Git インストールしておいても自分以外使う人いないので無駄だな。

2010年10月20日

[ 10月20日全て ]

2014年2月19日 (水)

いよいよ WiKicker から WikiEngine のコードを抜いて DiKicker のみにする

2002年10月19日から開発を始めてしばらく公開・運用をしていた WikiEngine だけれど最近は WikiEngine そのものは使っていなくて、今はそのコードをベースに作った日記システムDiKicker 部分しか使っていない。DiKicker の方は自分自身で今後も使っていくんだけれど、さすがにいろいろ古いのでそろそろ大改修しようかなと。基盤部分的には

  • Perl 5.005_03Perl 5.6 系との互換処理を捨てる。
  • 文字列処理をバイナリ文字列ベースから(いわゆる UTF8 フラグ界隈的な)テキスト文字列ベースにする。
  • CGI.pm ベースから PSGI ベースへ移行する。
  • 中間管理用のストレージを Berkeley DB から SQLite にする。

などをして今後も使っていけるようにしたい。既に使っていないアプリケーションとしての WikiEngine 部分は移行させていく手間をかける必要はないと思うので、コードを削除していくことにした。WikiForum 立てるなら既にいろいろ他の選択肢があるしね。

CVS での管理もやめて Git 管理に変更。最後の公開 tarball を展開して git init して最初のコミットとし、その後に変更した作業ディレクトリを Git 側の作業ツリーに上乗せしていったんコミット。あらためて最後の公開コードの上に差分を積んでいくつもり。

[ 2月19日全て ]

2016年10月26日 (水)

ようやく日記システム DiKicker のメンテナンス開始

この日記(nDiki)で使っている自作日記システム DiKicker、開発し始めたのが2003年12月末なのでもう13年物だったりします。ここ最近大きなメンテナンスはしていなかったのですが、まだこの先10年以上使えるように手を入れることにしました。一昨日から着手。

やりたいこと

  • もともと WiKicker (WikiEngine) からの派生で作ったのでが WiKiEngine の方は使わなくなったので、不要なコードを削除したい。共通部分をスーパークラス化してあるけれどもここもまとめたい。
  • WikiName の特別扱いをやめたい。
  • Perl 5.005_03 でも動くように Perl 5.8.0 未満かどうかで処理を変えているけれども、もう 5.005_03 用のコードは消したい。
  • データを Berkeley DB にトリッキーな形で入れているので SQLite あたりに変えて簡単にしたい。
  • 最終的には Go で書き換えたりして。
[ 10月26日全て ]

About

Naney Naneymx

Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。

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

Process Time: 0.034776s / load averages: 0.78, 0.55, 0.47