2010年3月アーカイブ
ここ1ヶ月くらい作成中のJoomla!コンポーネントがようやく形になってきた。そのコンポーネント内部ではCommunity Builderで追加したフィールドの値を参照してる。
そうしたことをするには、以下のようなコードを埋め込む必要がある。
global $_CB_framework, $ueConfig, $mainframe;
if ( defined( 'JPATH_ADMINISTRATOR' ) ) {
if ( ! file_exists( JPATH_ADMINISTRATOR . '/components/com_comprofiler/plugin.foundation.php' ) ) {
echo 'CB not installed!';
return;
}
include_once( JPATH_ADMINISTRATOR . '/components/com_comprofiler/plugin.foundation.php' );
} else {
if ( ! file_exists( $mainframe->getCfg( 'absolute_path' ) . '/administrator/components/com_comprofiler/plugin.foundation.php' ) ) {
echo 'CB not installed!';
return;
}
include_once( $mainframe->getCfg( 'absolute_path' ) . '/administrator/components/com_comprofiler/plugin.foundation.php' );
}
cbimport( 'cb.plugins' );
cbimport( 'language.front' );
でないと、以下のようなエラーが出る。
Fatal error: Class 'comprofilerDBTable' not found in /path/to/joomla/administrator/components/com_comprofiler/library/cb/cb.tables.php on line 16
詳しくはここを参照。
環境:
Joomla 1.5.15
Community Builder 1.2.2
タイトル通り、バージョン管理システムであるBazaarをEclipseから使う方法。
基本的にはBazaar Eclipseプラグインのインストールページ(英語)に書いてある通り。
必要なもの
- Bazaar本体(ダウンロードページ)
- bzr-xmloutput(ダウンロードページ。ただし、Windowsの場合、Bazaar本体を入れる時にデフォルトでインストールされる。)
- Java(あたりまえ)
- Eclipse(これもあたりまえ・・・)
インストール後、Window -> Preferencesを開いて、Team -> BazaarからBazaar本体の場所とかを指定するだけ。
まだまだJoomlaのコンポーネントを作成中。
JoomlaでMVCスタイルに沿ってコンポーネントを作る場合、各クラス・ファイル名をJoomla流儀の命名規則にしておかないと結構面倒。
■ViewでView名とは違う名前のModelを使いたい
admin側の機能を先に作ったんだけど、ユーザー側のコードでもadmin側で作ったmodelを使いたい。色々調べたり試行錯誤したりして、1時間くらいかかってしまった...
フォーラムのこの書き込みが結構役に立った。
またまたJoomla!コンポーネント作成の話。
Webアプリを作ってりゃトランザクションが必要な場面の1つや2つはあるもの。そのやり方だけど、JDatabaseのsetQueryメソッドでSTART TRANSACTIONとかを実行するという原始的なやり方。英語のフォーラムより。
JDatabaseにBeginTransとかのメソッドがあるけど、中身は全部空。今後実装されるのかな・・・
当たり前だけど、トランザクションを使うには、テーブルはInnoDBじゃないとダメ。Joomla!のテーブルはMyISAMなので要注意。
引き続きJoomla!のコンポーネント作成中。
MooToolsのリファレンスを見つつ、以下のようなJavaScriptを書いた。
var foovalue = $('footextbox').get('value')そしたら $('foo').get is not a function ってエラーが出た。(FirefoxのプラグインFirebugを使ってるのでIEだと違うエラーかもしれないけど。)
$('foo')で取得できるのはgetElementByIdで取得するのと同じくDOMオブジェクトなので、以下のように普通にDOMのエレメントを使えばいいらしい。
var foovalue = $('footextbox').valuegetやその他のMooToolsのメソッドを使うにはそのDOMオブジェクトへの参照を取得すればいいっぽい。
引き続きぼちぼちJoomla!でコンポーネントを作ってるんだけど、単純なCRUDを作るのが結構めんどくさい。せっかく省力化のためにCMS使うのに、ちょっと機能追加しようと思ってコンポーネントを作ろうと思ったら、単純なCRUDに時間がかかっては本末転倒のような...symfonyみたいなフレームワークを一度使っちゃうともう元には戻れないなぁ。
さて、何かいい方法がないかと思って調べてたら、1.6ではそのあたりが結構改善されているっぽい。1.6でのMVCのチュートリアルなんだけど、XMLでビューの定義とかをしている。
1.6に乗り換えようかなぁと思ったけど、まだα版なので断念した。
今年に入ってからボチボチ作り始めてたサイトを公開したってのはこないだのエントリで書いた。
今回はJoomla!を使ってるってのも以前書いた。今までいくつかのCMSを使ってきたけど、当たり前だけど年々進化しているなぁと思う。それはJoomla!に限った話ではないと思うけど。
それなりの見栄えのサイトが簡単に作れるってのは、自分みたいな仕事の人に取っては非常に助かる。
当たり前だけど仕事って一人じゃ出来ない。
(お金になってないものも含め)相変わらず複数個のプロジェクトをやっていて、そのうちのいくつかは他の人と協力して仕事をしている。でも、オンライン英会話(日本側)やその他いくつかのプロジェクトはほぼ1人でやっているので、向かっている方向が正しいのかどうなのかなど不安になる時が結構ある。
もうちょい一緒に仕事をする仲間がいればなぁなんて思う。どっかで人を募るか。
昨日、友達に誘われてコスプレ居酒屋ってのに行ってきた。
その友達からお店のぐるなびのページのリンクが送られてきた。店の名前はLittleBSD。昔Linux Cafeとかそんな名前のがあったし(今もあるのかな?)、その時点では特に気にもとめてなかった。
ぐるなびの地図を見ながら何とか到着。店の前に来て、なんでBSDなのかが分かった。店のコンセプトは一応小悪魔で、BSDデーモン君から来てるのかぁ。Little(小)BSD(悪魔)!これ、一般人はおろか、普通のオタクの人でも分からないだろ・・・
店のオーナーの人は自分のPCにFreeBSDとか入れてる、元PCショップの店長さんとかそんなのかなぁとか適当な想像をしつつ入店。
店内は、店員さんがコスプレしてるのと、それ系のメニューがある以外は割と普通の居酒屋。値段も割とリーズナブルで、味もそれ程酷くない。店員さんもこっちから絡まない限りうざいリアクションとかもしてこないし、なかなかバランスが良いなと思った。
この日はちょっとしたハプニングがあって、なぜかイタリア人の家族連れ(親子と4~5才の女の子)が来てた。店の受付は4Fだし、秋葉原駅からも結構遠いのに、なぜわざわざ家族連れでこんなところに...
で、その女の子が店員さんのアイドルになっちゃってて、お客さん放置状態。店員さんが代わる代わるお菓子とかぬいぐるみとか持ってきて、その子もかなり楽しんでる様子だった。あまりにはしゃぎすぎたせいか、後でご両親にちょっと怒られてたけど。
昨年末から進めていたITエンジニア向けのオンライン英会話だが、予定より遅れたもののようやくベータサービスとして開始できるようになった。ベータ期間中は無料なので、たくさんの人に登録してもらえればいいかなぁと。ベータ期間はとりあえず7月末までの予定。
ベータ期間が終了しても、初級者向けのレッスンは引き続き無料にする事も検討中だけど、まぁ成り行き次第かなと。
ベータサービスの登録はこちらから。
仕事で、海外のオープンソースソフト(以下OSS)を使ったシステム導入、海外OSSのローカライズなどを行うことがある。
先日、あるOSSの日本語対応を行っている人のページで、その人の日本語対応の修正を施したバージョンを、Bazaarという分散バージョン管理ソフトのレポジトリとして公開しているのを使わせてもらう機会があった。
恥ずかしながらその時初めてBazaarについて知った。分散バージョン管理についても言葉だけは聞いたことがあったものの、それまでは一度も使った事がなかった。
「Bazaar」で検索してトップに来た@ITの記事をとりあえず読んでみた。メリット(とデメリット)がいくつか挙げられていたが、メリットのうち以下の2つが自分にとっても当てはまりそうだった。
【6】オープンソースの改編物の公開に最適
【7】SVN を集中リポジトリとして利用可能
(i18nされていない)OSSのローカライズ版の公開とかは、まさにこの用途だと思うし、いずれ本家に取り込んでもらうつもりだとしても、取り込まれるまでは自分の所のレポジトリで公開できるというのは便利だと思う。
Subversionを中央レポジトリにし、分散レポジトリと併用すると大規模開発には使えそう。分散レポジトリの特性を生かした運用ルールを作るのが少し大変そうだけど。次の開発プロジェクトでは使ってみようかと思う。
Joomla!のコンポーネントを作り始めて10日間ぐらいか。だんだん慣れてきた。
役に立ったページをメモ代わりに。(全部英語だけど)
MVCでコンポーネントを作るときに基本的な事を解説した
チュートリアル。
もう一つチュートリアル。こっちは多言語対応?。まだ詳しく見てない。
"500 view not found" なんてエラーが出たときに検索してて見つけたスレッド。Model, View, Controllerのファイル名、クラス名、ディレクトリ構造は規則に従っておくと楽だけど、そうじゃないと色々トラブルが起きる。
で、そんなトラブルが起きたときに、結局はソースを見るのが一番手っ取り早かったりする。Joomla!のソースは結構分かりやすい。
JModel, JView, JController 各クラスのドキュメント。ソースもそっからたどれる。
インストールファイルのサンプル&説明のページ。
放置中のも含めていくつかWebサイトを持っている。こないだひょんな事からGoogle Analyticsを申し込んだんだけど、せっかくなのでそれらのサイトでGoogle Analyticsを使うようにしてみた。
トラフィックがグラフになるのを見るのって結構楽しい。あ、アクセス数が増えてる、とか分かると、ブログを書くのも今まで以上に楽しくなる。
ちなみにこのブログへのアクセスは結構波がある。なんでだろうって思ったら、どうやら平日はアクセス数が多くて、土日は少ないらしい。検索エンジンから自分のIT系のメモ書きに飛んでくる人が結構いるらしい。平日にアクセスが多い事からすると仕事の人と想像。
今、Joomla!のコンポーネントを作ってる。このページとかを参考にしてるんだけど、JTable::getInstance で以下のようなエラーが出る。
Table XXXX not supported. File not found.
検索したら、フォーラムでこんな書き込みを見つけた。結構みんな同じ問題にぶつかってるんだね。
自分の場合はそこに書いてある記事は直接解決には役立たなかったけど、問題の切り分けには役に立った。
とりあえず注意点としては
- adminディレクトリの下にtablesディレクトリを作って、そこにJTableを継承したクラスの定義を入れる
- com_xxxx.xmlの<administration>セクションにtablesの下のファイルを記述するのを忘れない
- アンダースコア付きのファイル名は使わない!
ってことかな。
DreamHostでは通常FastCGIでPHPが動く。で、php.iniをカスタマイズする方法。
ググったらこのページがヒット。ただし、少し情報が古いっぽい。なので、そこからリンクされてる英語のページを見てその通りにやればOK。(2つあるけど、片方はもう片方にリダイレクトされるので同じもの)
(もうちょい検索したら、日本語の別のページを発見。でも、これも少し情報が古い。)
30分くらいググってもわからず、自分でようやく見つけたのでメモ。
ATOKを使ってる。「半角/全角」キーで日本語入力をオフにする時に、入力中の文字が確定されてしまうのがかなりうざい。
例えば、ブラウザのアドレスバーに gmail.com と入力する場合。こんなに短いURLなんて、わざわざブックマークから選ぶより自分で入力した方が早いので。日本語入力がオンの時に gmail.com と打つと以下のような情けないことになる。
gまいl。こm
あ、日本語入力オフにしよう、と思って「半角/全角」キーを押すと、入力が確定されてしまう。「Esc」を押して入力内容をキャンセルした後に「半角/全角」キーを押せばいいんだけど、それが面倒くさい。
2chをたまに見ると、下らない内容とか誰も興味を持たないような話を書き込んだ時とかに
「そんなのはチラシの裏にでも書いとけ」
みたいな反応がたまにある。(最近は知らないけど)
自分が子供だった2~30年前は、確かに新聞広告は片面印刷のが多くて、裏をメモ用紙に使った記憶があるんだけど、最近って少ないような気がする(新聞は取ってないので分からないけど)。
いまでもそういう表現が使われるってのは何となく面白い。
最近だと「自分のブログにでも書いとけ」なのかも。
今週で上映が終わるっぽいので仕事帰りに見てきた。
自分は眼鏡をかけてるので、3D眼鏡がしっかりかけられなくて、映画を見ている最中に何度も直すハメに...日本人で眼鏡かけてる人なんて沢山いるんだから、眼鏡の人用のも用意しとけばいいのにと思った。
で、肝心の映画だけど、映像はスゴい!3D眼鏡が顔にフィットしてたらもっと楽しめたと思う。
でもストーリーは陳腐だね。アカデミー賞取れないのも納得。
個人的にはあの世界の中を自由に動き回れるRPGを遊んでみたいと思った。10年後くらいには実現してそう。
Joomla! のコンポーネントを作っている。その自作コンポーネントのインストール時にMySQLのテーブルを作るんだけど、エラーでかなり苦労した。
1.コメントにシングルクォートが入ってるとダメ(Joomla!固有の問題?)
-- It's ok to use apostrophes.
はNGで
-- It is ok to use apostrophes.
はOK。
問題の切り分けのために簡単なCREATE TABLE文を作って試したけど再現しなかったので、他にも何か条件があるっぽい。
2.外部キーを付けようとするとエラー(MySQLの問題)。
結論から言うと、MyISAM形式のテーブルのフィールドあるいはInnoDBでもインデックスの付いてないフィールドに対して外部キーを付けようとするとエラーになる。自作コンポーネント用のテーブルからjos_users.idに外部キーを付けようとしてたんだけど、jos_usersはMyISAMだった...しかし、このときのエラーが非常に分かりにくい。
ERROR 1005 (HY000): Can't create table '.dbname/tablename.frm' (errno: 150).
これだけだと分からないので、詳しいメッセージを表示させてみる。
mysql> show innodb status; ERROR 1227 (42000): Access denied; you need the SUPER privilege for this operation
普通に解釈すると「SUPER」権限が必要、って感じだけど、実際はそんなのは全く関係ない。
もう少し詳しく調べてみてこんなのを見つけた。show innodb statusコマンドで詳しいエラーメッセージを表示させるのにSUPER権限が必要らしいけど、そんなの不便すぎるし何とかしてくれってコメントが多数付いてる。
ちなみに以下のコマンドでも詳細は分かるらしい。
$ perror 150
以前にもMySQLのエラーは分かりにくいって書いたけど、中々改善しないね。
お酒は好きで、最近は週に3~4回は飲んでた。
10年くらい前は1~2週間に1回、友達や同僚の人と飲みに行くくらいだった。カナダに行って向こうで友達が増えてきた頃から飲みに行く回数が増えて、週に2~3回は飲むようになった。フィリピンではあまり友達がいなかったので飲むくらいしか楽しみが無くて、週に5~6回は飲んでた(週に最低1度は休肝日を設けるようにしてたけど)。
ここ最近立て続けに記憶をなくすほど飲んだ事があったし、ちょっと生活のリズムを変えたいと思ってた事もあり、禁酒する事にした。
1週間経ったけど、結構お酒無しでも生活できるんだなぁと新鮮な気分。こないだ友達と飲みに行ったときにはお茶とコーラだけで済ましたけど、別に大丈夫だった。時間も有効に使える気がする。
しばらくは続けようと思う。
EclipseでAntが使えるのって当たり前だと思ってたら、Eclipse for PHP DevelopersだとAntが使えない。PHPでも、パッケージを作ったりするのにAntが便利だと思うので、Antを使いたい。
方法としては、Eclipseのソフトウェアアップデート画面から「Java Development Tools」というのをインストールするだけ。
参考ページ。