2008/2/8 金曜日

MODx:Dittoについて

Filed under: MODx — tiny-p @ 20:07:53

参考:http://d.hatena.ne.jp/m-mitsuki/searchdiary?word=*%5BMODx%5D

詳しくは公式サイト内マニュアル

日本語使用前提とする場合、コールする前に下処理が必要。

リソース管理→スニペット→Dittoを選択、

$language = (isset($language))? $language : "english";

の部分を

$language = (isset($language))? $language : "japanese-utf8";

に変更。

システム運用をUTF8以外で行っていた場合、それらに変更すればいいけれども、根本的にMODxをUTF8以外で運用するのはかなり不安。

なので、CGIと直接絡むなどの場合以外はUTF8で運用するのが良いようだ。

 

基本コールは

[[Ditto? &tpl=`XXX` &parents=`10,20,30`]]

もしくは

[!Ditto? &tpl=`XXX` &parents=`10,20,30`!]

以下パラメータ補足。

tpl …Dittoで取得したデータを吐き出す形式を、チャンクから指定。

parents …データを取得するフォルダをIDで指定。カンマ区切りで複数指定可。

format …出力フォーマットを指定。他に「rss」「atom」「xml」などがあるので、RSS出力などにも利用できる。

depth …データを取得する深さを指定。省略した場合は1。その場合、parentsで指定したID直下1階層分しかデータを取得しない。

display …取得するサマリを指定。省略した場合は3。「all」指定も可能。…「取得する」ではなく「表示する」か?

total …取得する件数を指定。省略した場合はall。その場合、parentsで指定したフォルダ内、depthで指定した深さ内すべての記事を取得する。

sortDir …ソートの順。ASCは昇順、DESCは降順。省略した場合はDESC。

sortby …ソートキーの指定。createdon(作成日)、editedon(更新日)、pub_date(公開日)、pagetitle(ページタイトル)が指定できる。省略した場合は作成日。

removeChunk …ドキュメント内のチャンクを削除するかどうか。チャンクコードを指定する。省略した場合は「false」(しない)。コメント表示のチャンクが「comment」だった場合、commentと指定するとページ内のコメント表示部分のチャンクを削除して取得するので、ブログ風ページなどの新着に便利。

noResults …表示するドキュメントがない場合の表示内容。チャンクを指定することもできる。省略した場合、$_lang[’no_entries`] が使用される。

start …省略した場合は0。5と設定した場合、取得したデータの5番目以降から表示される。

dateSource …[+date+]で表示する日付を指定。createdon、editedon、pub_dateの3つ。省略した場合は作成日。

dateFormat …[+date+]で表示する日付のフォーマットを指定。PHPのデータ関数に対するフォーマットが使える。

 

パラメータ:dateFormatで日本語を使うと、文字化けする。(2007年=%Y年など)

これを回避するには、/assets/snippets/ditto/classes/ditto.class.inc.php,line925-927

		if ($modx->config["modx_charset"] == "UTF-8") { 			$dt = utf8_encode($dt); 		}

をコメントアウトする必要がある。

2008/2/6 水曜日

Perl:mutex、二重起動の防止

Filed under: Perl — tiny-p @ 20:15:45

あるプログラムが走っているときに、同時に同じプログラムを起動させたくないときがある。Windows環境であればmutexオブジェクトを使うことができ、Perl にもWin32::Mutexモジュールが存在する。

use Win32::Mutex;
die "二重起動" if(Win32::Mutex->open('hogehoge'));
$mutex=Win32::Mutex->new(1, 'hogehoge');

2行目で他に hogehoge という名前の Mutex オブジェクトが作られていないかどうかチェックし、もし他で hogehoge という名の Mutex オブジェクトが作られていれば、先へ進まずに終了する。3行目では hogehoge という Mutex オブジェクトを作成している。
したがって、このスクリプトを2つ起動しようとしても、2つ目は2行目のチェックで引っかかって終了してくれるはずである。

ただし、タイミングによっては完璧ではないようだ。

参考:http://www.augustus.to/blog/3128/archives/2004/08/index.html

« 前のページ

Copyright (C) 2007 tiny-p. All Rights Reserved.