2007年6月27日水曜日

Smarty内での文字列のエンドーディングの変換

[参考]にしたサイト
http://tdiary.ishinao.net/20040423.html

smartyのpluginの追加方法

/usr/local/lib/php/plugins/modifier.mbconvert.php

--------------------------------------------------------
function smarty_modifier_mbconvert($string, $charset, $source_charset = 'auto') {
return mb_convert_encoding($string, $charset, $source_charset);
}
?>
--------------------------------------------------------

で、テンプレート内で
{$vals.org_name|mbconvert:"euc-jp":"utf-8"}
のようにする。



2007年6月20日水曜日

◎PostgreSQL8.2.4 install log

#cd /usr/local/src
#wget ftp://ftp.jp.postgresql.org/source/v8.2.4/postgresql-8.2.4.tar.gz
#configure --with-no-locale
#make
#make install
#mkdir /usr/local/pgsql/data
#chown postgres:postgres /usr/local/pgsql/data
# su - postgres
$ /usr/local/pgsql/bin/initdb --no-locale /usr/local/pgsql/data
$/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start

2007年6月15日金曜日

mecab Tsearch2 postgresql install log

◎参考にしたもの
・http://mecab.sourceforge.net/
・http://sourceforge.net/project/showfiles.php?group_id=177856
・http://mecab.sourceforge.net/bindings.html
・https://www.oss.ecl.ntt.co.jp/tsearch2j/index.html

◎展開
#tar zxvf mecab-0.96.tar.gz
#tar zxvf mecab-ipadic-2.7.0-20070610.tar.gz
#tar zxvf mecab-ruby-0.96.tar.gz

◎mecab
# cd mecab-0.96
# ./configure --with-charset=utf8;make ;make check; make install

◎mecab-ipadic
# cd mecab-ipadic-2.7.0-20070610
# ./configure --with-charset=utf8;make ; make install

◎mecab-ruby
# cd mecab-ruby-0.96
# ruby extconf.rb
# make;make install

◎Tsearch2
# cdpostgresql-8.2.3/contrib/tsearch2/
# make; make install ;make installcheck

◎サンプルDBの作成
$ createdb -E UTF-8 sampledb

◎pgmecab
# wget http://www.emaki.minidns.net/Programming/postgres/pgmecab-1.1.tar.bz2
# tar jxvf pgmecab-1.1.tar.bz2
# cd pgmecab-1.1
Makefileを修正
top_builddir = /usr/local/src/postgresql-8.2.3
  postgresqlのソースへのpathを設定
MECAB_CONFIG_PATH = /usr/local/bin/mecab-config
  mecab-configへのpath
# make;make install

◎pgmecab.cに
fmgr.hヘッダファイルをincludeさせた後で、
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
のマクロを追加。8.2から必要になったらしい。

◎サンプルテーブルの作成
create table sample(i int4,t text,fti tsvector);

◎トリガーの作成
DROP TRIGGER tsvectorupdate ON tblSample;
CREATE TRIGGER tsvectorupdate BEFORE UPDATE OR INSERT ON sample
FOR EACH ROW EXECUTE PROCEDURE tsearch2(fti, pgmecab, t);

◎indexの作成
CREATE INDEX idxFTI_idx ON sample USING gist(fti);

◎サンプルクエリー
SELECT i, t
FROM sample
WHERE fti @@ to_tsquery('simple', replace(pgmecab(' する'), ' ', ''))
AND t LIKE '%オープン%';

◎ユーザー定義データ型の作成
create type finddoctype as (findindex integer, findtext text);

◎ユーザー定義関数の作成
drop function finddoc(text);
create function finddoc(text) returns setof finddoctype
as ' select findtbl.i as findindex, findtbl.t as findtext from
( select fromtbl.i, fromtbl.t from sample as fromtbl, to_tsquery(''simple'', replace(btrim(pgmecab($1),'' \n''), '' '', ''&'')) as q
where fromtbl.fti @@ q offset 0 ) as findtbl
where findtbl.t like ''%'' || $1 || ''%''; ' language sql;


sampledb=# select * from finddoc('ソース');
findindex | findtext
-----------+-------------------------------------
1 | プログラムはソースが決め手となる。
(1 row)

sampledb=# select * from finddoc('決め手');
findindex | findtext
-----------+-------------------------------------
1 | プログラムはソースが決め手となる。
(1 row)

sampledb=#

sampledb=# insert into Sample values (1, '登録テストwo
してみるのだけど、うまくいくのか心配です。');

update sample set t = '更新テストをしてみよう。日本は広いなぁ。' where i = 0;

sampledb=# delete from Sample where i = 1;

php HTTP関数をpecl経由で使えるようにする

◎pearから
pear upgrade-all
pecl install pecl_http

php.ini
extension=http.so
を追加。
extension_dir=/usr/local/lib/php/extensions/no-debug-non-zts-20060613/ ""
を追加。

httpdの再起動
phpinfo()

2007年6月9日土曜日

難しいことを難しく、簡単なことを簡単に。

日々仕事をしている時には簡単なことはできるだけ簡単に行うように
心がけています。ただITの仕事で、簡単なことを簡単にやるということは、
それだけ競争相手の参入しやすさをまねき今は良くても潜在的につねに
リスクをはらむことになります。

一方難しいことを難しくやるのも、ある意味当たり前のことではありますが、
難しいことを行うためにはそれなりの能力が必要になります。
私の業界的には総合的な意味での技術力とでも言いましょうか。
これは常に進むべき正等な道だと個人的には思っています。
ブレークスルーを起こすには難しいこと(ある種の発想を得ることなども含まれるでしょう)を
難しくおこなうことの一つだと思うし、個人的な文脈としては、ルーチンではない
ことはこれに含まれると思います。

さて、では今度は組み合わせを変えて考えてみましょう。
まずは、簡単なことを難しくやるということを考えます。ちょっと変化球な解釈ではありますが、一見技術的には慣れ親しんだ領域において、その意味付けや、構築するシステムを
変えること(難しくすること)により、競争上の優位性を確保するという戦略を
とるということがこれに当たるでしょう。
GoogleやAmazon,YouTubeなどのやっていることがこれに当たるのではないでしょうか?
私などにはこの手のアプローチはいい意味で非常にアメリカ的に移ります。
一見発想は単純でもそれを現実化する能力におけるアメリカの強みはこれまさに
ここに至れりと感じます。いったいこのシンプルなアイディアを実際にくみ上げるために
資金調達や、技術的なブレークスルー、ノウハウの蓄積などどれだけのものを
積み上げているのでしょうか。

そして難しいことを簡単にというのは、ユーザーインターフェースや、
サービス開発向けの文脈ではよく見かけるキャッチフレーズですが、仕事上の戦略としては、
持たざるもの戦略としてもっとも有効であると思っています。
簡単なことを簡単にやっても、競争優位を築くことは難しいのですが、難しいことを
簡単に行うことができれば、仕事としては優位に立てるでしょう。
何を当たり前なことをといわれそうですが、これを実際に実践するのはなかなか難しいです。
というの、人(また企業)によって、難しいこと(技術であったり、人であったり、資金であったり)はそれぞれことなるし、「簡単に」するには、「難しさ」を事前に理解していないといけません。非常に主体性の求められる戦略なのです。
しかもそれぞれにとっての「難しさ」は内部的に閉じたものではなく、外部性を、つまり
外の人や企業にとっても、もたなくては意味がありません。
内部的に難しくても、外部では簡単であれば、簡単なことを簡単にやっているだけなのですら。
ですので、外部の観察も欠かせません。
その上で実践することができれば、それは有効な戦略になってくるでしょう。

各論やケーススタディまで具体性を持たせていない議論だし、インスピレーションに
過ぎないのかもしれませんが、こういう状況を意識してようやくそれを実践できる
段階に最近なってきたと思っています。