2007年11月7日水曜日

Smarty内で配列変数に任意の値がセットされているかをチェックする関数

<?
function smarty_modifier_is_in_array($string,$arr) {
  for($i = 0; $i < count($arr); $i++) {
    if($arr[$i] == $string){
      return 1;
    }
  }
  return 0;
}
?>

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

/usr/lib/php/Smarty/libs/plugins/modifier.is_in_array.php
が設置場所になる。

配列を第一引数に持ってくると要素一つずつに対して、関数が実行され期待通りに
動いてくれないので、後ろにおく
使い方は

{"ほげほげ"|is_in_array:$arr}

あれば、1なければ0を返す。

checkboxなんかで使える。

2007年9月11日火曜日

当世風JavaScriptの書き方?

◎ECMAscriptで書く主な環境
・.NET やVistaのガジェット
・Mac OS XのDashboard
・Flash
・Firefoxのエクステンション
・DreamWeaverのエクステンション

◎「<!--」「-->」は書かない
<script>タグを使用時は書かない。
cf. 「<」「>」「&」はxhtmlではscript要素内で書いてはいけない。
どうしても書くときには下記のようにする

ex.
<script type="text/javascript">
//<![CDATA[
if(a < b)) document.write("Hello,world");
//]]>
</script>


◎イベント属性を使うときはmeta要素を記述する
<meta equiv="Content-Script-Type" content="text/javascript">


from 『基礎Ajax+ JavaScript』、佐藤和人、インプレスジャパン、2006

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などのやっていることがこれに当たるのではないでしょうか?
私などにはこの手のアプローチはいい意味で非常にアメリカ的に移ります。
一見発想は単純でもそれを現実化する能力におけるアメリカの強みはこれまさに
ここに至れりと感じます。いったいこのシンプルなアイディアを実際にくみ上げるために
資金調達や、技術的なブレークスルー、ノウハウの蓄積などどれだけのものを
積み上げているのでしょうか。

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

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

2007年5月18日金曜日

zsh便利

普段、開発はsshでリモートからログインしてやっているので、使用するシェルの
使い勝手には気を使います。そういう中でいろいろ試すうちにzshに行き着きました。
その便利さはいろいろありますが、複数の端末をあげて作業しているときに
全部のhistoryを持っていてくれるのが非常にありがたいです。
補完の機能もいいし、実に使い勝手がいいです。

ほかのメンバーにも勧めてやりたいのですが、shを覚えることでいっぱいいっぱいなので、
もうちょっと先になってからじゃないとだめでしょう。

日本語でいい書籍でもあるといいのですが、それもないし。

2007年4月26日木曜日

ruby復習中

社内のバッチと、ASPのバックエンドはrubyで書こうと思っているので、
現在あらためて復習中です。確かにrubyのキャッチフレーズの
Enjoy Programming
という感じです。rubyを使ったツールも簡潔で勉強になるコードが多いのもありがたい。

2007年4月25日水曜日

diversityの世界でいかに棲み分けるか?

Googleは帝国を築こうとしているのかもしれないが、私たちは棲み分けることを
考えています。大きな象の世界もあるでしょうか、ミジンコの生きる世界もある、と。
ネット上でASPを展開しているのですが、そういうことを考えながらサービスを
提供しようと思っています。

たまには書こう。

たまにはね。