Myページ
ホーム
コミュニティの人々
ソフトウェア
技術紹介
適用分野
Tyzohとは
ご意見お問い合わせ

ワタナベのブログ

2006年2月アーカイブ

YAMLでXOOPSユーザ情報を拡張したい

XOOPSはユーザ管理の仕組みがありますが、 書き込める情報が定型的で、追加の情報を入れたいと思うとデータベースを拡張してモジュールを開発したりと大変です。


やりたいことは、ユーザ情報のページで、blogのURLとその人の紹介文を入れたいというものです。ユーザ情報の管理画面をじっと睨みつけると、ありました。使えそうなフィールドが。
「その他」という自由記述の欄に付加情報を格納しておくことにしましょう。

さて、これをどうやって構造化するかが課題です。

今回注目したのが、YAML
(「やむる」と呼べばいいのか... サイトには camel と韻を踏んでいると書いてあるけど。)

これは YAML Ain't Markup Language の略で、いわゆるマークアップ言語ではないと宣言しています。
XMLなどの立派なマークアップでは処理も記述も大変だという問題意識から、構造化データをいかにコンパクトに柔軟に、かつ人間にも読みやすい、書やすい記述ができるかを目指して仕様化が進んでいるフォーマットです。

YAMLは、

・値の名前と値を : (コロン)で区切って関連付ける
・一行が一対の値定義
・階層関係は空白文字によるインデントで行う

というのが基本コンセプトです。
改行が含まれる値の扱いなども、特別な書き方が用意されています。

イメージとしては次のとおりです。

contact:
  zipcode: 186-1234
  addr: 東京都江東区
  tel: 03-1234-5678
  - mail: primary@example.com
  - mail: secondary@example.com
blog: http://www.tyzoh.jp/

ハイフンで始まっているのはシーケンスをあらわします。
これを YAML パーサーにかけると、多くの処理系では連想配列として取得できます。

たとえば、PHPのYAMLパーサーである Spyc を使うと以下のように
連想配列が返されます。

require('spyc.php');

$yaml = << contact:
zipcode: 186-1234
addr: 東京都江東区
tel: 03-1234-5678
- mail: primary@example.com
- mail: secondary@example.com
blog: http://www.tyzoh.jp/
EOD;
$array = Spyc::YAMLLoad($yaml);

XOOPSのレンダリングエンジンはSmartyなので、
連想配列になってしまえば画面表示はお手の物。

$xoopsTpl->assign('user_attr', $array);

とすれば、テンプレート内では {$user_attr.contact.zipcode} などと参照することができます。


これであとは、データの投入だけだと思っていた矢先、
データベースのカラムが tinytext ということが発覚。255バイト。
仕組みはできても絶対容量が足りまへん...

討ち取られました。今日はおしまいです。

ワタナベ (2006-02-28 23:17) | コメント(0)| トラックバック(0)

Cooperative Linux 0.6.3 に Ubuntu-ja で独立ブラウザ環境。

そういえば coLinux の新しい stable版がでてますね。

http://www.colinux.org/

カーネルバージョンは 2.6.11 がベースになっています。

ところで、手元のウェブブラウジング環境では、レガシーで動作が不安定なJavaアプレットを動かしたいという要求があり、独立性の高く安定した(環境うをごちゃごちゃ弄らない)デスクトップ環境を求めています。

そんななか、UbuntuというDebianベースのディストリ(の日本語対応化プロジェクト)が coLinuxですぐに動作可能なイメージを提供しています。

http://www.ubuntulinux.jp/download/
http://www.ubuntulinux.jp/download/HowToUseCoLinuxImage

なかなか新しい安定版が出ないDebianプロジェクトですが、Ubuntuは半年毎にリリースすることを目標に活動が進められていて、複数のUbuntuの派生ディストリまででてます。

ワタナベ (2006-02-27 14:27) | コメント(0)| トラックバック(0)

簡易プロビジョニング、いけるかも。

以前、仮想環境をいじってますというブログを書きましたが、同じ環境を複数用意して、個別にカスタマイズしたい場合、マスタとなる仮想環境のイメージファイルを用意しておいて、適宜コピーして使うのが便利です。

しかし、、、

往々にして仮想環境のイメージファイルはギガ単位で大きいので、コピーひとつとっても大変です。UML (User Mode Linux) では COW (Copy on Write) という技術が使われていて、起動した環境内でディスクに変更を加えようとしたときに、その差分だけを別のファイルに書き出して全体でのディスク使用量を減らすことが可能になっています。

ただ、今回は「大容量のファイルをコピー」という目的に絞ります。

ということで、定番の rsyncアルゴリズム。

rsync アルゴリズム(リンク先はPDF)

これは簡単に言うと、巨大なファイルをブロックに分割し、ブロックごとにチェックサムを計算、異なる場合だけ転送するというものです。rsyncコマンド自体はディレクトリやファイルのミラーリングをするためのコマンドです。派生として unison という同期ツールもあります。バックアップのススメ」にもあるようにバックアップのお供にどうぞ。


それにしても、ちょこちょことスクリプトを書けば自動的に簡易プロビジョニングが出来そう。課題はプロビジョニングしたい環境をどう表現するか...

とうとうRDF+オントロジの出番かも。

ワタナベ (2006-02-22 23:07) | コメント(0)| トラックバック(0)

「ウェブ進化論 本当の大変化はこれから始まる」

以前、CNET Japanでブログの連載をされていた梅田氏の書籍が出ています。

ウェブ進化論 本当の大変化はこれから始まる


Web2.0という言葉が騒がれて久しいですが、この言葉はマーケティング、ソーシャル・○○、メディア、知的生産プロセスなど純粋な技術以外の側面で語られることが多くなってきています。

最初からWeb2.0を追っているわけではないので、整理のため読んでみようかと。

積読スタックにプッシュします。
まずは買ってからですが。。。

ちなみに氏のブログはこちら → http://d.hatena.ne.jp/umedamochio/

ワタナベ (2006-02-21 01:58) | コメント(0)| トラックバック(0)

PHPのセッションでハマリ

ここで出てきた PHPフレームワークのEthnaで作成したアプリなんですが、一部の携帯で動かないということが発覚。 というよりは私が持っている携帯では動いたのですが、他の人にはダメだったようです。

原因はセッションか維持されていなかったことです。PHPは言語自体がセッション機能を持っているので、session_start() を呼べば特に自分で苦労しなくてもセッション管理ができますが、今回のハマリは、「特に自分で苦労しなくても」に頼りすぎたのが原因でした。

Webアプリにおける一般的なセッション管理は、

  • クライアントからの一連のリクエストに対してユニークなセッションIDを割り当て、それをCookieやURLパラメータなどに埋め込んで持ちまわる
  • クライアントからのリクエストにセッションIDが見つかれば、セッションが開始されているということなので、セッションIDに関連付けられたデータを取り出してトランザクションを再開する

という仕組みになっています。

つまり、今回のようにセッションが維持されていない原因として、セッションIDがうまく持ち回れていないこと考えられます。PHPはセッションIDを持ちまわる方法として

  1. Cookieに入れてクライアントに持たせる
  2. URLのクエリー文字列として付加する

が利用でき、状況に応じて自動的に選択されます。ただし、セキュリティの観点から、php.iniの指定でどちらかしか利用できないようにもできます。

で、ようやく本題なのですが、今回のアプリが載っているホスティングサービスのPHPが 2 の方法をサポートしていなかったのです。これに気づくのに相当な時間を要しました。( phpinfo() にてPHPのコンパイルオプションを確認し、--enable-trans-sid が指定されていなかった )

携帯電話ではCookie が使えないと思っていたので、手元のau端末で動いた時点でOKだと思ってしまいました。いつのころからか EZWebでは Cookieがサポートされていたらしいです。

結果、Vodafone, iモード機では Cookie が使えず、URLへの埋め込みも行われないということで、セッションが維持できないという問題になってしまいました。携帯用のページ内のフォームにセッションIDをhiddenで持たせることで対策としました。

Ethnaではページの作成をテンプレートエンジン Smarty で行っているのでコードとしては, View クラスでセッションIDの名前と値をフォームに登録する

$this->af->setApp('session_name', session_name());
$this->af->setApp('session_id', strip_tag(session_id()));
テンプレート側でフォームから値を取り出す
...

というのを埋め込んでいます。

ワタナベ (2006-02-17 11:34) | コメント(0)| トラックバック(0)

リビジョン番号とバージョン番号

# 昨日今日と Tyzoh運用管理モード...
ここにあるように Rinza RDF Repository はSubversionで管理されています。Subversionはリポジトリに対する、1度に行われるあらゆる種類の更新をひとつのリビジョン番号で表して管理しています。これはリポジトリの管理者だけでなく、開発者(というよりはリリース責任者)にとっても扱いやすいものです。

ですが、刻々と更新されていくリビジョン番号に対して、stableバージョンのように対外的に表明するバージョン番号もつけてあげれば、マイルストーンとしての区切りになりますから、リリース計画上好都合です。

Tyzohでは現在、Rinza RDF Repository 1.1.2 というバージョンをリリースしていますね。

リリースのタイミングって?

ところで、オープンソースソフトウェアのリリースを行うタイミングっていつなんでしょうか。 Mozillaなどではロードマップを公表し、それに向かってモチベーションの高い開発者はコミュニティに参加していきます。

何をこれからやろうとしているのか、誰の意思で動いているのか?それが表に出ないと誰も更新やリリースをしようとも思わないでしょうね。勝手にいじるとまずいかも知れませんし。

コミュニティの意思(総意とまではいかないまでも)を吸い上げる、またはコミュニティに思想を浸透させるプロセスが必要なのでは。

と思っている今日の小一時間です。

とりあえず、Nightly や Weekly など定期的なリリースをしてしまうのも手かと思っています。まだまだ毎日更新が入るほどではないので、1週間の間に更新があれば、曜日を決めてリリースといった感じでしょうか。

更新が無ければリリース無しということで。

ワタナベ (2006-02-15 22:40) | コメント(0)| トラックバック(0)

XOOPSモジュール うぇブログの後継

XOOPSモジュール うぇブログの後継の開発が進んでいるようです。

以下のサイトでデモが体験できます(要ユーザ登録)
http://www.hodaka.org/modules/news/article.php?storyid=17

体験してみた限りでは、Javascriptを使って投稿時のユーザインタフェースの改善が図られているという印象です。使い勝手の面で改善されているところは、


・記事の前半/後半の書き方を、現状の区切り文字列ではなく、別のテキストエリアにした
・画像のアップロードをイメージマネージャを経由しなくてもできるようになった

といったあたりでしょうか。

私としては、
引用:


技術的な面からでは、うぇブログ2は過去のコードを一掃し、PHPフレームワークEthnaを使ったフルスクラッチ版となっています。

Ethnaに注目しています。

さっきまでいじっていましたが、以前perlで書いたCGIアプリを移植するのも短時間でできました。それほど規模は大きくなかったものの、ActionFormによるパラメータのバリデーション、フィルタなどは宣言的に記述できますから、ほとんどがパラメータのチェックと画面推移の制御だったperlでのコードは激減してしまいました。

Ruby on Rails(RoR)が注目されていますが、PHPではRoRクローンも含め、さまざまな思想のフレームワークが国内外で乱立しています。フレームワークは手になじむかどうかで生産性に影響してきます。私としては本命にしてもよさそうです。

ワタナベ (2006-02-15 05:26) | コメント(0)| トラックバック(0)

リソース確保をオントロジで。

多くの人が関与するもの、例えばイベントや災害時の救援・復旧作業などでは、準備?本番?終了?など各フェーズでさまざまな能力を持った人間が必要とされますし、いろいろな機材なども要求されます。

たとえば、芝居を打ちたいとします。
すると、

  • 必要な人は、

    キャスト、エキストラ、監督、会計、渉外、宣伝美術、ウェブ作成、舞台美術、照明、音響、メイク、衣装、小道具、タイムキーパー、会場整理、受付係、警備係...

  • 必要な機材、場所は、

    会場、練習場、印刷物、舞台装置、衣装、メイク道具、照明、作業工具、

など簡単にあげただけでも、非常に多岐にわたります。

その中でも、たとえばウェブを作成できる宣伝美術の人がいたり、本番中は受付係がタイムキーパーをやったりなど、「役割=人」という1対1の関係だけでは表しきれないこともあります。また、作業のフェーズによって必要とされるものが変化していきますので、スケジューリングなどと調整しながら、重複無くタイムリーなアサインをすることが求められます。

まさにプロジェクトマネジメントでのリソース確保そのものです。

個々の参加者が個人レベルで把握できているときは、グループウェアなどのスケジュール管理機能で調整することが可能でしたが、必要となるスキルを基準にして人を招集したいと思うと、一筋縄ではいかなさそうです。

このあたりの課題を、オントロジをつかって包括的にできないかと思案しています。

ワタナベ (2006-02-14 12:49) | コメント(0)| トラックバック(0)

テキストからの利害関係者の抽出と分類

概要

企業に限らず複雑多様化する社会の中で問題解決を行うには、多くの視点での評価や分析が必要となり、個人単独ではなく、複数のメンバーによるプロジェクトとして総合的な取り組みが重要となる。また大規模な事例になると複数のプロジェクトが絡み合っていることもあり、全体像を把握することは難しく、プロジェクト策定の初期段階においてステークホルダー(利害関係者)を割り出し、それぞれの目的や任務を明確にするのがポイントとなる。

本研究では、このような課題に対し、新聞記事などのテキストから対立関係と協調関係をカテゴリ化して関係のネットワークを自動的に抽出し、図示することでプロジェクトの全容の把握を支援しようとしている。


コメント


ステークホルダーの関係抽出の方法として、訴訟と共同作業のプレスリリースにまつわる記事を対象とした文章のパターンマッチをしている。新聞記事を対象としていることで、一般人が記述するよりは表現の揺れは比較的小さいと感じるが、提案されている抽出パターンは固定的で、表記ゆれへの対応しきれていないのではと感じた。

ソース

吉田守泰、吉岡真治『プログラム・マネジメント支援のためのテキストからの利害関係者の抽出と分類』人工知能学会 全国大会 1F4-01

ワタナベ (2006-02-08 12:01) | コメント(0)| トラックバック(0)

ハードディスクから異音が...

ノートPCのハードディスクから、「ぶーん ぶーん ががー」という異音が不定期に出るようになってしまいました。

最近の(といってもかなり前からですが)HDDにはS.M.A.R.T(Self-Monitoring, Analysis and Reporting Technology)というドライブの動作状況を監視し、障害の発生を予測してくれるしくみが入っています。

その情報を見ることができるツールで、怪しさをチェックしました。

その結果60%という表示。
いちおう「正常」という診断結果が出ていますが、60%で正常って...

「クライアントにできるだけデータを残さない」

これはセキュリティ面でも、事業継続の面でも重要ですね。
といって仮想環境ネタに強引に結びつける

# 異音ならぬ(マイナス)イオンならたくさん出てくれればいいのに

ワタナベ (2006-02-06 23:50) | コメント(0)| トラックバック(0)

VMWare GSX Server が!


ヴイエムウェア、「VMware GSX Server」を無料提供へ

なんということでしょう!

タダです。すでに VMWare Player という VMWareで作成した仮想環境を実行するソフトウェアが無料で提供されていますが、サーバまでもがフリーで公開されるとは。


ヴイエムウェア、「VMware Player」の無料提供を開始--作成済みの仮想マシンを実行

今後は、仮想環境のディスクイメージのフォーマットの覇権争いになってしまうかも。やはりメディアを押さえたほうが勝ち。仮想環境普及にはマーケティング戦略が必要ですね。

ワタナベ (2006-02-03 18:04) | コメント(0)| トラックバック(0)

スモールワールド・ネットワーク

世間は狭いね
It's a small world!

ふとであった人が実は自分の知り合いの知り合いだったりすることは私自身もいくつか経験がありますが、みなさんもご経験があるかと思います。


「ネットワーク科学で世の中の仕組みや構造を説明できるのでは?」ということで数学や物理学の出身の研究者が研究の対象としています。
上のような現象をスモールワールド・ネットワークという名前で知られています。
「6人たどれば,世界中のだれとでもつながる」という話も、この理論の中から出てきています。
mixiなどのSNS(ソーシャル・ネットワーク・サービス)がもともと出てきた背景もこの辺りにあるようです。

そのほかにも世の中の構造、たとえばインターネットとか、友人関係とか、実にさまざまな「関係」はとても複雑そうな印象を受けますが、ネットワーク理論の視点で見たときに、シンプルな法則で説明できたりするようです。

スケール・フリー・ネットワークやランダム・ネットワークなど、スモールワールドネットワーク以外のワードもあります。

アルバート・ラズロ・バラバシ氏、ダンカン・ワッツ氏らが著名なようです。

スモールワールド・ネットワーク―世界を知るための新科学的思考法
新ネットワーク思考―世界のしくみを読み解く
はてな - スモールワールド・ネットワーク
はてな - スケール・フリー・ネットワーク

ワタナベ (2006-02-01 11:16) | コメント(0)| トラックバック(0)

« 2006年1月 | メインページ | 2006年3月 »

プロフィール

ワタナベ

サーバ管理が趣味の渡邉充隆です。

仮想化やネットワーク構成に興味があります。
あとは、ウェブ系の技術(プログラミングからインフラまで)も好きで、特にデータの見せ方などを工夫することで情報の流通や再活用を促進する技術を研究しています。

dev.tyzoh.jp では ssdb の(コアではなく)周辺のコードをいじっています。

tumblr / del.icio.us

RSSフィード

コミュニティの人々 | ソフトウェア | 技術紹介 | 適用分野 | Tyzohとは | ご意見お問い合わせ

Copyright (C) 2004-2008 Nihon Unisys, Ltd. All Rights Reserved.
Powered by Movable Type Open Source