2008年12月31日水曜日

今日のブックマーク 12/31/2008


Posted from Diigo. The rest of my favorite links are here.

2008年12月30日火曜日

StrutsのアクションからServletContextを利用

スズキです。

実は、あまり経験のないStrutsネタです。

Java(Servlet)のファイルのアップロード/ダウンロードで
ServletContextのgetRealPathを使う場面は多いと思います。

そのためにはStrutsのActionクラスで、
ServletContextを取得する必要があるのですが、
下記コードにて実現できます。

--------【Java】--------
ServletContext context = this.getServlet().getServletContext();
String context = getRealPath("/WEB-INF/");
--------

IOUtilsが強力すぎる。

--
http://suz-lab.blogspot.com/

2008年12月29日月曜日

Java(Servlet)でファイルダウンロード

スズキです。

表記、すぐに忘れてしまうので...(自分メモです)

--------【Java】--------
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=download.zip");
OutputStream stream = response.getOutputStream();
// streamに対して書き出し処理
stream.close();
--------
※responseはHttpServletResponseです。

「まとめてZIPにしてダウンロード」も、整理しなければ...

--
http://suz-lab.blogspot.com/

今日のブックマーク 12/29/2008


Posted from Diigo. The rest of my favorite links are here.

2008年12月27日土曜日

OpenLDAPのインストールスクリプト

スズキです。

表記、下記のように作ってみました。

--------【Shell】--------
#!/bin/sh
VERSION=2.4.13
URL=ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release
export CPPFLAGS="-I$HOME/sbin/bdb/default/include"
export LDFLAGS="-L$HOME/sbin/bdb/default/lib"
export LD_LIBRARY_PATH="$HOME/sbin/bdb/default/lib"
if [ ! -d $HOME/tmp ]; then
mkdir -p $HOME/tmp
fi
pushd $HOME/tmp
wget $URL/openldap-$VERSION.tgz
tar xvzf openldap-$VERSION.tgz
pushd openldap-$VERSION
./configure \
--prefix=$HOME/sbin/openldap/$VERSION
make
if [ ! -d $HOME/sbin/openldap ]; then
mkdir -p $HOME/sbin/openldap
fi
if [ -d $HOME/sbin/openldap/$VERSION ]; then
rm -rf $HOME/sbin/openldap/$VERSION
fi
make install
popd
rm -rf openldap-$VERSION
rm openldap-$VERSION.tgz
popd
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-env-server/build/openldap.sh

ポイントは、下記の"Berkeley DB"のライブラリのリンク関係です。
(かなり、はまりました…)

export CPPFLAGS="-I$HOME/sbin/bdb/default/include"
export LDFLAGS="-L$HOME/sbin/bdb/default/lib"
export LD_LIBRARY_PATH="$HOME/sbin/bdb/default/lib"

ようやく、OpenLDAPの設定に入れるぞ…

--
http://suz-lab.blogspot.com/

2008年12月26日金曜日

PHPのfile_get_contentsでWARNINGメッセージの抑制

スズキです。

よく、PHPで"Web API"など使うとき、
下記のように、file_get_contentsを使います。

--------【PHP】--------
$url = "http://suz-lab.blogspot.com";
$contents = file_get_contents($url);
--------

で、"WEB API"によっては、エラーのときに、
エラーコードなどを返して、PHP側でもWARNINGだしたりと、
結構、うざったいです。

こういうときは下記のように、
関数の前に@をつけると解決します。

$contents = @file_get_contents($url);

まだ、PHPは母国語にならないなー...

--
http://suz-lab.blogspot.com/

2008年12月25日木曜日

Pidgin Portable 2.5.3 リリース

スズキです。

表記の通りです。
http://portableapps.com/news/2008-12-22_-_pidgin_portable_2.5.3

早速アップデートしましたが、
今までの設定も、一緒にどっかいっちゃいました...
(ま、大した設定してないから、いいか...)

そろそろQQはちゃんと動くようになったのかなー?

--
http://suz-lab.blogspot.com/

MySQLにCSVデータをインポート

スズキです。

表記のやり方を、
今後、都道府県マスタが5分で作れることも目指しつつ、
まとめてみました。

ポイントは、下記となります。

--------【MySQL】--------
LOAD DATA INFILE "S:/tmp/pref.csv"
INTO TABLE pref
FIELDS TERMINATED BY ','
ENCLOSED BY '"';
--------

当然、データを入れる下記のような器(テーブル)が
予め必要となります。

--------【SQL】--------
CREATE TABLE pref (
  pref_id INTEGER NOT NULL AUTO_INCREMENT,
  pref_cd INTEGER NOT NULL,
  pref_name TEXT NOT NULL,
  PRIMARY KEY (pref_id),
  UNIQUE (pref_cd)
)
--------

実際のCSVデータは下記です。
(次は、MySQLの都道府県マスタ、5分で作ります)

--------【CSV】--------
1,1,"北海道"
2,2,"青森県"
3,3,"岩手県"
4,4,"宮城県"
5,5,"秋田県"
6,6,"山形県"
7,7,"福島県"
8,8,"茨城県"
9,9,"栃木県"
10,10,"群馬県"
11,11,"埼玉県"
12,12,"千葉県"
13,13,"東京都"
14,14,"神奈川県"
15,15,"新潟県"
16,16,"富山県"
17,17,"石川県"
18,18,"福井県"
19,19,"山梨県"
20,20,"長野県"
21,21,"岐阜県"
22,22,"静岡県"
23,23,"愛知県"
24,24,"三重県"
25,25,"滋賀県"
26,26,"京都府"
27,27,"大阪府"
28,28,"兵庫県"
29,29,"奈良県"
30,30,"和歌山県"
31,31,"鳥取県"
32,32,"島根県"
33,33,"岡山県"
34,34,"広島県"
35,35,"山口県"
36,36,"徳島県"
37,37,"香川県"
38,38,"愛媛県"
39,39,"高知県"
40,40,"福岡県"
41,41,"佐賀県"
42,42,"長崎県"
43,43,"熊本県"
44,44,"大分県"
45,45,"宮崎県"
46,46,"鹿児島県"
47,47,"沖縄県"
--
http://suz-lab.blogspot.com/

今日のブックマーク 12/25/2008

  • SNAPSHOTバージョンを依存ライブラリに指定した場合、Mavenは通常のバージョン指定とは異なる動きをします。
    通常のバージョン指定の場合、一旦ローカルリポジトリに指定されたバージョンのライブラリがダウンロードされると、ずっとそれが参照されます。
    一方、SNAPSHOTは開発が現在進行形で進められているので、その内容は日々アップデートされていきます。Mavenは一旦ローカルリポジトリに取り込んだ後でも、もしもリモートリポジトリにあるライブラリのファイル更新日付がローカルよりも新しい場合、ローカルのライブラリファイルをリモートのもので上書きします。

    tags: maven

  • ●ひとつ以上の機能の開発中(どんどん新しくなる状態)には
    バージョンナンバーの後ろにSNAPSHOTが付く
    (例)0.0.3-SNAPSHOT

    ●機能の開発に区切りが付いた時点でSNAPSHOTが取れる
    (例)0.0.3-SNAPSHOT ⇒ 0.0.3

    tags: maven


Posted from Diigo. The rest of my favorite links are here.

"Berkeley DB"のインストールスクリプト

スズキです。

"suz-env-server"の一環で作っときました。こんな感じです。

--------【Shell】--------
#!/bin/sh
VERSION=4.7.25
URL=http://download.oracle.com/berkeley-db
if [ ! -d $HOME/tmp ]; then
  mkdir -p $HOME/tmp
fi
pushd $HOME/tmp
wget $URL/db-$VERSION.tar.gz
tar xvzf db-$VERSION.tar.gz
pushd db-$VERSION/build_unix/
../dist/configure \
--prefix=$HOME/sbin/bdb/$VERSION
make
if [ ! -d $HOME/sbin/bdb ]; then
  mkdir -p $HOME/sbin/bdb
fi
if [ -d $HOME/sbin/bdb/$VERSION ]; then
  rm -rf $HOME/sbin/bdb/$VERSION
fi
make install
popd
rm -rf db-$VERSION
rm db-$VERSION.tar.gz
popd
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-env-server/build/bdb.sh

次こそは、OpenLDAP...

--
http://suz-lab.blogspot.com/

2008年12月24日水曜日

"Berkeley DB"がOracleの製品になってた…

スズキです。

"Berkeley DB"をtarballからインストールする必要があり、
探していたら、Oracleの製品になってた…

> 2006年2月にオラクルがSleepycat Softwareを買収したのちは、
> Oracle Berkeley DBとブランド名を変えオラクルの製品群の
> 一部を成している。

とのことらしい…
http://ja.wikipedia.org/wiki/Berkeley_DB

ま、MySQLもSUNだし、びっくりすることでもないか…

ちなみに直接tarballを取得する場合は、下記URLとなります。
http://download.oracle.com/berkeley-db/db-4.7.25.tar.gz

早く、OpenLDAPインストールしなくきゃ…

--
http://suz-lab.blogspot.com/

2008年12月23日火曜日

Hudsonのインストールスクリプトと起動スクリプト

スズキです。

"suz-env-server"にHudsonのインストールスクリプトと
起動スクリプトを用意しました。

まずインストールスクリプトは下記となります。
ダウンロードURLとバージョンの関連性がないので、
とにかく、最新を取得するようになっています。

--------【Shell】--------
#!/bin/sh

VERSION=1.266
URL=http://hudson.gotdns.com/latest/hudson.war

if [ ! -d $HOME/tmp ]; then
  mkdir -p $HOME/tmp
fi

pushd $HOME/tmp

wget $URL

if [ ! -d $HOME/sbin/hudson ]; then
  mkdir -p $HOME/sbin/hudson
fi

mv hudson.war $HOME/sbin/hudson/$VERSION.war

popd

if [ ! -d $HOME/var/hudson ]; then
  mkdir -p $HOME/var/hudson
fi

if [ ! -d $HOME/var/log/hudson ]; then
  mkdir -p $HOME/var/log/hudson
fi
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-env-server/build/hudson.sh

次は起動スクリプトです。
Winstoneで起動するようにしています。
Winstoneの起動パラメータは、まだまだ調整したいところです。
http://winstone.sourceforge.net/#commandLine

--------【Shell】--------
#!/bin/sh

JAVA_HOME=$HOME/sbin/java/default
HUDSON_WAR=$HOME/sbin/hudson/default.war
HUDSON_LOG=$HOME/var/log/hudson/hudson.log
HUDSON_PID=$HOME/var/run/hudson.pid

export HUDSON_HOME=$HOME/var/hudson

case "$1" in
  start)
    $JAVA_HOME/bin/java -jar $HUDSON_WAR >$HUDSON_LOG 2>&1 &
    echo $! > $HUDSON_PID
    exit $?
    ;;
stop)
    kill `cat $HUDSON_PID`
    rm $HUDSON_PID
    exit $?
    ;;
  *)
    echo "Usage tomcat.sh start/stop"
    exit 1;;
esac
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-env-server/rc/hudson.sh

まあ、それっぽくなったので、次はHudsonのLDAP認証のための、
OpenLDAPの調整です。(苦手なんだよなー)

--
http://suz-lab.blogspot.com/

2008年12月20日土曜日

今日のブックマーク 12/20/2008


Posted from Diigo. The rest of my favorite links are here.

OpenOffice.org Portable 3.0 リリース

スズキです。

ついに、"OpenOffice.org 3.0"のポータブル版が現れました。
http://portableapps.com/news/2008-12-18_-_openoffice.org_portable_3.0

早速アップデートして、適当なExcelファイル起動したら、
起動スピードがずっと速くなってました。

"OpenOffice.org 3.0"は日ごろの作業の効率アップのため、
本気で調査・研究しようと思っています。

--
http://suz-lab.blogspot.com/

Puttyでデフォルトの設定を変更

スズキです。

表記、特に文字コードは、
今やUTF-8をデフォルトにしておきたいところです。

やり方は下記記事にて詳しく書かれています。
http://it.kndb.jp/entry/show/id/727

ポイントは、
「変更した設定を"Default Settings"というセッション名で保存」
です。

もっと早く調べておくべきだった…

--
http://suz-lab.blogspot.com/

VLC Media Player Portable 0.9.8a リリース

スズキです。

表記の通りです。
http://portableapps.com/news/2008-12-18_-_vlc_media_player_portable_0.9.8a

早速アップデートしました。
(いつもの通り、何がよくなったかは、わかってません…)

近頃VLCは自宅のBGM再生アプリケーションとなってます…

--
http://suz-lab.blogspot.com/

2008年12月19日金曜日

WinstoneでHudson

スズキです。

ずっと前にWinstoneという軽量"Servlet Container"を紹介しました。
http://suz-lab.blogspot.com/2008/05/embedding-winstone.html

ダウンロードできるhudson.warの中には、

winstone.jarが含まれており、
https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=2761&expandFolder=2761&folderID=0

# java - jar hudson.war

で、WinstoneにてHudsonを立ち上げることができます。

Winstoneはもっと研究しておこう。

--
http://suz-lab.blogspot.com/

2008年12月18日木曜日

MySQLでランダムに10件SELECT

スズキです。

以前、"It's a Smile World"がPostgreSQLでの
表記の実現方法を紹介していました。
http://2-laps.com/mt/2008/10/sql-2.html

で、MySQL版は下記となります。

--------【SQL】--------
SELECT *
FROM hoge_table
ORDER BY RAND()
LIMIT 10
--------

微妙に違うなー...

--
http://suz-lab.blogspot.com/

MySQLでテーブルにカラムの追加

スズキです。

すぐに、Googleに頼ってしまうので...

alter table HOGE_TABLE add HOGE_COLUMN varchar(256);

--
http://suz-lab.blogspot.com/

JDBCのサンプル

スズキです。

本当に久しぶりに生JDBCプログラミングしました。

懐かしいコードです。

--------【Java】--------
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test";
Connection connection = DriverManager.getConnection(
url, "username", "password"
);
Statement statement = connection.createStatement();
String sql = "UPDATE ...";
statement.executeUpdate(sql);
statement.close();
connection.commit();
connection.close();
--------

あとは、PHPのコマンドライン実行だ...

--
http://suz-lab.blogspot.com/

2008年12月17日水曜日

VistaでTelnet

スズキです。

デフォルトで、VistaはコマンドプロンプトでTelnetコマンドが使えません。

で、使えるようにするには下記参照です。
http://blog.heiichi.com/?eid=486815

これも、すぐに忘れてしまう...
自分メモとして。

--
http://suz-lab.blogspot.com/

IPアドレスの確認

スズキです。

NATとか使ってると、自分が外(インターネット)に出たときに、
自分がどのIPアドレスとして認識されているのか把握できないことが
多々あります。

そういう時は、下記サイトにアクセスです。
http://www.ip-checker.net/

探すのに時間がかかってしまった...

--
http://suz-lab.blogspot.com/

"Amazon EC2"に登録&まとめサイト

スズキです。

ついに、表記、登録してしまいました。
http://aws.amazon.com/ec2/
(久しぶりに、Webでクレジットカード使いました...)

登録方法は下記に詳しく紹介されています。
http://gigazine.net/index.php?/news/comments/20080609_aws1/

で、いろいろと試していくわけで、
ある程度情報がまとまったサイトをリストしておきます。

▼EC2の操作環境セットアップ
http://gigazine.net/index.php?/news/commen0080609_aws2/

▼カスタムAMI作成・登録・削除編
http://gigazine.net/index.php?/news/comments/20080609_aws3/

▼Amazon EC2/S3を使ってみた - まとめ
http://d.hatena.ne.jp/rx7/20080528/p1

▼Amazon EC2 - 近況
http://d.hatena.ne.jp/pekeq/20060926/p2

▼Amazon WebサービスのEC2を使ってみた
http://kokogiko.net/m/archives/001772.html

とりあえず、こんな感じか。

--
http://suz-lab.blogspot.com/

jQuery連載-第5回の公開

スズキです。

時間が空いてしまいましたが、"iret R&D team"による
jQuery連載の第5回が公開されました。

▼第5回 メニューを彩るプラグイン(2)
http://gihyo.jp/design/serial/01/jquery-plugin/0005

(第1回、第2回の紹介)
http://suz-lab.blogspot.com/2008/09/jquery.html
(第3回の紹介)
http://suz-lab.blogspot.com/2008/09/jquery-3.html
(第4回の紹介)
http://suz-lab.blogspot.com/2008/10/jquery-4.html

今回は、前回紹介した3点のメニューに関するプラグインで、
Kwicks以外の下記、残りの2点を紹介しています。

▼jQuery Multi Level CSS Menu
http://www.dynamicdrive.com/style/csslibrary/item/jquery_multi_level_css_menu_horizontal_blue/

▼jQuery plugin: Accordion
http://bassistance.de/jquery-plugins/jquery-plugin-accordion/

"iret R&D team"の皆様お疲れさまでした。
第6回もがんばってください。

--
http://suz-lab.blogspot.com/

"suz-env-server"再び

スズキです。

"Amazon EC2"使って、何かサービスを公開したいなー、と思い、
http://aws.amazon.com/ec2/
その準備として、"suz-env-server"プロジェクトを
http://code.google.com/p/suz-lab/source/browse/#svn/trunk/suz-env-server
整理しなおすことにしました。

ちなみに"suz-env-server"は、Linux(Unix)環境で、
サーバアプリケーションなどをroot権限なく、
簡単に導入できるようにする、シェルスクリプトセットです。

今までは、一つのマシンでも、Tomcatを二つ立ち上げ、
クラスタリングすることを考慮していましたが、"Amazon EC2"なので、
インスタンスを増やすのは簡単なので、マシン一台での、
サーバアプリケーションの冗長構成は考えないようにすることにします。

ということで、導入の仕方のまとめなおしです。

まずは下記のように、自分のホームディレクトリに、
binディレクトリをSVNからチェックアウトします。

# cd
# svn checkout http://suz-lab.googlecode.com/svn/trunk/suz-env-server bin

(サーバ運用環境セット)
http://suz-lab.blogspot.com/2007/04/blog-post_10.html

そして、"bin/init"の下にcron.shという、
cronの初期設定スクリプトがあるので、それを実行します。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-env-server/init/cron.sh

(cronとrun-parts)
http://suz-lab.blogspot.com/2007/04/cronrun-parts.html

その後、同じ場所にlogrotate.shという、
logrotateの初期設定スクリプトがあるので、それも実行します。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-env-server/init/logrotate.sh

最後に、また同じ場所にbackup.shという
backupの初期設定スクリプトがあるので、それも実行します。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-env-server/init/backup.sh

これで、home以下のetcとvarを定期的に
バックアップする仕組みの出来上がりです。

でも、朝、起きたらバックアップできてない...
"Amazon S3"も調べなきゃ...

--
http://suz-lab.blogspot.com/

今日のブックマーク 12/17/2008


Posted from Diigo. The rest of my favorite links are here.

2008年12月11日木曜日

今日のブックマーク 12/11/2008


Posted from Diigo. The rest of my favorite links are here.

2008年12月4日木曜日

Joda Time - Java date and time API (Java)

スズキです。

なんか、あるAPI(Java)を使うときに、日時を扱うライブラリで、
表記のものを使うのを前提としています的なことが書かれていたので、
ちょっと調べてみました。

http://joda-time.sourceforge.net/

> Joda-Time has been created to radically change date and
> time handling in Java. The JDK classes Date and Calendar
> are very badly designed, have had numerous bugs and have
> odd performance effects. Here are some of our reasons for
> developing and using Joda-Time:

以下、上記のsuz-lab訳です。

"Joda-Time"はJavaでの日時の処理をよりよくするために開発されました。
JDKの日時に関するクラスは、設計が非常に悪く、多くのバグを持っており、
パフォーマンスにも影響を与えています。これらが、我々が"Joda-Time"を
開発し使う理由です。

で、使ったのは、これだけ...
long time = DateTimeUtils.currentTimeMillis();

suz-lab訳は英語の練習になるから、続けていこう。

--
http://suz-lab.blogspot.com/

SCHOOL CHAMPION SHIP

スズキです。

今、通ってる、フットサルスクールの施設対抗戦です。
http://ameblo.jp/menomaestaff/entry-10173578492.html

惨敗でした...

知らない人とでも、会って5秒くらいで、
チームプレーできるようになりたいなー...

--
http://suz-lab.blogspot.com/

今日のブックマーク 12/04/2008


Posted from Diigo. The rest of my favorite links are here.

2008年12月3日水曜日

今日のブックマーク 12/03/2008


Posted from Diigo. The rest of my favorite links are here.

2008年12月2日火曜日

CentOS5.2にyumをrpmでインストール

スズキです。

あるCentOS5.2で下記に従い"Hyper Estraier"をインストールしようとしたら、
http://suz-lab.blogspot.com/2008/11/hyper-estraierupdate.html
gccが入っていません。yum使ってインストールしようとしたら、
yumも入っていません...

ということで、下記よりyumのrpm探して、依存しているものも探して
インストールしました。
http://www.ftp.ne.jp/Linux/packages/CentOS/5.2/os/i386/CentOS/

ちなみにこの環境で、yumを入れるために必要だったrpmは下記となります。

yum-3.2.8-9.el5.centos.1.noarch.rpm
  python-elementtree-1.2.6-5.i386.rpm
  python-iniparse-0.2.3-4.el5.noarch.rpm
  python-sqlite-1.1.7-1.2.1.i386.rpm
  rpm-python-4.4.2-48.el5.i386.rpm
  yum-metadata-parser-1.1.2-2.el5.i386.rpm
  python-urlgrabber-3.1.0-2.noarch.rpm
    m2crypto-0.16-6.el5.2.i386.rpm

rpmの依存関係は、"rpm -qR yum"で確認できます。

まだまだリズムが戻らない...

--
http://suz-lab.blogspot.com/

2008年11月29日土曜日

今日のブックマーク 11/29/2008

  • try{
    echo "****** Begin try ******\n\n";
    #引数が不正な関数コール(「Warning」警告)
    substr();
    echo "****** End try ******\n\n";
    }catch(Exception $e){
    echo "****** catch ******\n\n";
    }

    tags: php

  • CentOSのバージョンは、メジャーバージョンとマイナーバージョンの二つより構成される。メジャーバージョンはベースとしたRHELに対応しており、マイナーバージョンはそのRHELのバージョンアップに対応する。例えば、CentOS 4.3はRHEL 4 update 3のソースコードよりビルドされており、これと互換である。

    tags: linux


Posted from Diigo. The rest of my favorite links are here.

2008年11月28日金曜日

(suz-php-jquery) DaoにlastInsertId()を追加

スズキです。

プログラム中でインサートして、自動で振られたidを取得する必要があり、
表記の通り、lastInsertIdメソッドを追加しました。

振る舞いは、PDOのlastInsertIdメソッドとまったく同じです。
http://search.net-newbie.com/php/function.pdo-lastinsertid.html

なので使い方も、

$dao->lastInsertId()

といった具合になります。

機能は必要になったら実装する方向で、
暇なときは、テストコードを書く方向で。

--
http://suz-lab.blogspot.com/

MySQLの"CREATE TABLE"文の雛形

スズキです。

手で直接書くときは、いつもGoogleでサンプル探し回っているので、
雛形として、自分メモしておきます。

--------【SQL】--------
CREATE TABLE hoge_sample (
  sample_id INTEGER NOT NULL AUTO_INCREMENT,
  sample_name TEXT NOT NULL,
  sample_height DOUBLE NOT NULL,
  PRIMARY KEY (sample_id)
)
--------
※全角空白に注意

こういうの、増やしていこう。

--
http://suz-lab.blogspot.com/

"CentOS"と"Red Hat Enterprise Linux"の対応ルール

スズキです。

CentOS(http://www.centos.org/)は、

> "Red Hat Enterprise Linux"との完全互換を目指した
> フリーのLinuxディストリビューション
("http://ja.wikipedia.org/wiki/CentOS"より)

です。

なので、"Red Hat Enterprise Linux"のテスト環境を構築するときは、
よく、"CentOS"で代替することにしているのですが、
そうなると、"CentOS"のどのバージョンと、
"Red Hat Enterprise Linux"のどのバージョンが対応しているのか?
がポイントになってきます。

で、そのルールですが、

> CentOSのバージョンは、メジャーバージョンとマイナーバージョンの
> 二つより構成される。メジャーバージョンはベースとしたRHELに対応しており、
> マイナーバージョンはそのRHELのバージョンアップに対応する。
> 例えば、CentOS 4.3はRHEL 4 update 3のソースコードよりビルドされており、
> これと互換である。
("http://ja.wikipedia.org/wiki/CentOS"より)

とのことです。

わかりやすいルールです。

--
http://suz-lab.blogspot.com/

GeryEngineで"Merged smurk nodes"が出力される(PHP)

スズキです。

PHPのテンプレートは基本的に、GeryEngineを使っています。
http://geryengine.instant-publishing.nl/
これを採用した理由は下記となります。
http://suz-lab.blogspot.com/2007/10/velocityphpgeryengine.html

なんですが、ある条件で"Merged smurk nodes"の文字列が
勝手に出力されてしまう問題が発生しました。
(ある条件はまだ、調べきってはいません...)

で、GeryEngineのソースを追っかけてみたところ、
TreeVisitor.phpの38行目に

echo "Merged smurk nodes";

なんてコードが入ってました。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/ext/GeryEngine/lib/compiler/TreeVisitor.php

とりあえず、上記をコメントにしてでの対応です。

早く、安定させたいなー...

--
http://suz-lab.blogspot.com/

(suz-php-jquery) テンプレートを使った差込メール送信

スズキです。

前に紹介したよに、Maoを使えば実現できるはずなんですが、
http://suz-lab.blogspot.com/2008/11/suz-php-jquery-maomail-access-object.html
バグってました...

修正したので、下記コードで、表記を実現することができます。

--------【PHP】--------
public function sendMail() {
  require_once("Mao.php");
  $mao = new Mao();
  $context = array(
    "name" => "suz-lab"
  );
  return $mao->hoge(
    array("to@localhost", "宛先日本語名"),
    "テスト",
    array("from@localhost", "送り元日本語名"),
    $context
  );
}
--------【テンプレート(hoge.vm)】--------
以下は変数の値です。
$name
--------

これでメール本文が、以下のように、テンプレートの$nameに
$contextのnameの値が差し込まれた形になります。

--------【送信されるメール本文】--------
以下は変数の値です。
suz-lab
--------

ちゃんとテストしないと...

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/28/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月27日木曜日

(suz-php-jquery) Taoを使ったファイル生成

スズキです。

表記は、下記で実現できます。

--------【PHP】--------
require_once "Tao.php";
$tao = new Tao("../../html/app/example");
$handle = fopen("../TMP/generate/example/hoge.php", "w");
fwrite($handle, $tao->hoge(array()));
fclose($handle);
--------
※本当はもっとエラー処理が必要...

まずルールとして、生成したファイルは
"webapp/TMP/generate/"以下に置くようにしています。

そして、Taoの使い方ですが、
コンストラクタで、テンプレート(hoge.vm)のあるフォルダを指定し、
$tao->テンプレート名(テンプレートに渡すコンテキスト)
で、テンプレートとコンテキストがマージされた結果を取得することができます。

あとは、PHPでのファイル出力のお話です。

次は、ログ出力系かな。

--
http://suz-lab.blogspot.com/

(suz-php-jquery) Mao(Mail Access Object)

スズキです。

ようやく、"suz-php-jquery"のメール送信まわりができました。
Mao(Mail Access Object)で実現しています。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/lib/Mao.php

中身は、GeryEngineでテンプレートにデータあてがって本文を作り
それを、Qdmail&Qdsmtpで送信、といった感じです。

使い方は、下記のとおりになります。

(1) Maoのパラメータを定義(MaoDefine)
ここでMaoが利用する、SMTPサーバのHOST、PORT、
FROMのメールアドレス、送信プロトコルを設定します。
--------【PHP】--------
define("MAO_HOST" , "localhost");
define("MAO_PORT" , 25);
define("MAO_FROM" , "from@localhost");
define("MAO_PROTOCOL", "SMTP");
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/app/Define/MaoDefine.php

(2) メール本文のテンプレートを作成。
"mail/app/パッケージ名"の下にテンプレートファイルを作成します。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/mail/app/example/hoge.vm
テンプレートファイルを置くデフォルトフォルダのルールはDaoと同じです。
http://suz-lab.blogspot.com/2008/10/suz-php-jquery-dao.html
ちなみにDao同様、Maoのコンストラクタ引数で、
テンプレートフォルダの位置も変更できます。

(3) ActionからMaoを利用
下記のように利用します。
--------【PHP】--------
class ExampleAction {
  public function sendMail() {
    require_once("Mao.php");
    $mao = new Mao();
    return $mao->hoge(
      array('to@localhost' , '宛先日本語名' ),
      'テスト',
      array('from@localhost' , '送り元日本語名' ),
      array()
    );
  }
}
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/app/Action/ExampleAction.php

ポイントは

$mao->テンプレートファイル名(
  array('宛先' , '宛先日本語名' ),
  'タイトル',
  array(''送り元' , '送り元日本語名' ),
  array() // GeryEngineに送るコンテキスト
);

です。

とにかく、テンプレートに対する仕組み/ルールはDaoと同じです。

Taoを使ったHTML書き出しのサンプル作ったら、
PHPの部分は、いったん、落ち着くなー。

--
http://suz-lab.blogspot.com/

SAStrutsで日本語のGETパラメータを"Web API"で利用する時の注意点

スズキです。

SAStrutsって問題ではないと思いますが…

日本語のGETパラメータを"Web API"を利用するときの
(GET)パラメーターとして使う場合は、
とりあえず下記のように、URLエンコードしておきましょうって話です。

--------【Java】--------
String encodedText = URLEncoder.encode(
  new String(
    this.text.getBytes("ISO-8859-1"),
    "UTF-8"
  ),
  "UTF-8"
);
--------
※text(フィールド)にGETパラメータ(日本語)が入る前提で

この辺の設定をしておけば、
http://s2container.seasar.org/2.4/ja/garble.html
上記のgetBytesは必要なくなると思います。(未確認…)

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/27/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月26日水曜日

QdmailとQdsmtpを使ったサンプル(PHP)

スズキです。

下記、動いたサンプルです。

--------【PHP】--------
require_once('qdsmtp.php');
require_once('qdmail.php');
$param = array(
   "host" => "localhost",
   "port" => 25,
   "from" => "from@localhost",
   "protocol" => "SMTP"
);
$to = array('to@localhost' , '宛先日本語名' );
$from = array('from@localhost' , '送り元日本語名' );
$subject = 'メールのテスト(テキスト)';
$body = "ここに本文を書きます。";
$option = array('type'=>'text','smtp'=>$param);
$flag = qd_send_mail( $option , $to , $subject , $body , $from);
--------
こちらのサンプルを参考にしています。
http://hal456.net/qdmail/smtp

次は、上記を参考に"suz-php-jquery"の
Mao(Mail Access Object)を作成です。

--
http://suz-lab.blogspot.com/

PHPでメール送信(日本語もふまえて)

スズキです。

まあ、普通はmb_send_mailって話なんでしょうが、
細かい設定とかの融通が難しいので、なんかいいのないかなー、
と探していたら、下記ライブラリを見つけました。

▼Qdmail
http://hal456.net/qdmail/
▼Qdsmtp
http://hal456.net/qdsmtp/

なんか、期待できます。
ということで、早速、実験して
問題なければ"suz-php-jquery"に導入してみます。
(メールテンプレートの仕組みも含めて)

--
http://suz-lab.blogspot.com/

(suz-php-jquery) Tao(Template Access Object)

スズキです。

以前、"suz-php-jquery"でテンプレート(GeryEngine)から
SQLを生成ってのを紹介しました。
http://suz-lab.blogspot.com/2008/11/suz-php-jquery-geryenginesql_13.html

そのテンプレートが、メールテンプレートや、
HTML生成のテンプレートなどでも使いたいってことで、
テンプレートにアクセスする部分を、Tao(Template Access Object)
として切り分けました。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/lib/Tao.php

なので、DaoもTaoを使うように変更しています。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/lib/Dao.php

これで、メールテンプレートの仕組みが作れるぞ。

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/26/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月24日月曜日

利き足でプレーさせない!

スズキです。

いっこうに上達しない、フットサルねたです。

表記、ディフェンスのやり方として、
フットサルスクールで教えてもらったのですが、
そして、その後、3回ほどゲームをやる機会があったのですが、
プレー中、全然意識できていません...
(いつも、終わった後、やばい、忘れてた...って感じです...)

基本的に、左足を前に出して守るって事ですが、
「利き足でプレーさせない!」が本質なので、
今日から、どうすれば、利き足でプレーしづらくなるか、
常に考えてフットサルやるようにします。

もっと、頭、使わないと...

--
http://suz-lab.blogspot.com/

続・jQueryとXML.ObjTree

スズキです。

「jQueryとXML.ObjTree」の記事で、
http://suz-lab.blogspot.com/2008/11/queryxmlobjtree.html
> parseDOMとか使った、もっといい方法もあるかも...
とつぶやいていたのですが、その方法を見つけました!

下記、コードです。

--------【JavaScript】--------
var params = {
  city: "10",
  day : "tomorrow"
}
$.get("../PHP/lwws.php", params, function(xml) {
  var xotree = new XML.ObjTree();
  var tree = xotree.parseDOM(xml.documentElement);
  alert(tree.lwws.title);
});
--------

$.getでは、デフォルトのXMLDocumentでデータを取得(xml)して、
このdocumentElementを、parseDOMの引数にするとうまくいきました。

こちらの方がスマートです。
(ようやく、jQueryとXML.ObjTreeの連携もすっきりしたぞ)

--
http://suz-lab.blogspot.com/

PHPで"Livedoor Weather Web Service"(お天気Webサービス)

スズキです。

"Livedoor Weather Web Service"(お天気Webサービス)を
http://weather.livedoor.com/weather_hacks/webservice.html
PHPで利用する例です。

--------【PHP】--------
<?php
$url = "http://weather.livedoor.com/forecast/webservice/rest/v1";
$params = array(
  "city" => $_GET["city"],
  "day" => $_GET["day"]
);
$encoded_params = array();
foreach($params as $key => $value) {
  $encoded_param = urlencode($key);
  $encoded_param .= "=";
  $encoded_param .= urlencode($value);
  array_push($encoded_params, $encoded_param);
}
$url .= "?" . implode('&', $encoded_params);
$xml = file_get_contents($url);
header("Content-type: text/xml; charset=utf-8");
print($xml);
?>
--------

GETパラメータは連想配列で指定できるようになってます。
下記URLのようにPHPにアクセスすれば、
http://localhost/lwws.php?city=10&day=tomorrow
"Livedoor Weather Web Service"(お天気Webサービス)の
XML情報が表示されます。

あとは、"jQueryとXML.ObjTree"で...
http://suz-lab.blogspot.com/2008/11/queryxmlobjtree.html

--
http://suz-lab.blogspot.com/

2008年11月23日日曜日

jQueryとXML.ObjTree

スズキです。

JavascriptでのXMLのハンドリングは、
今でもやはり、XML.ObjTreeを利用するがBESTだと思っています。
http://suz-lab.blogspot.com/2008/03/xmlobjtreexmljson.html

以前書いた上記エントリでは、HTTP.Requestを使い
parseHTTPで、データの取得&パースをしていましたが、
今回は、jQueryのFormプラグインでも利用したいこともあり、
jQueryのAjax系関数で、XML.ObjTreeをどう使うか?
についていろいろ試してみました。

とりあえず、書きコードでやりたいことは実現できます。

--------【Javascript】--------
var params = {
  city: $("#city").val(),
  day : $("#day").val()
}
$.get("findWeather", params, function(data){
  var xotree = new XML.ObjTree();
  var tree = xotree.parseXML(data);
  alert(tree.lwws.telop);
}, "text");
--------
※livedoorのお天気Webサービスがネタです。
http://weather.livedoor.com/weather_hacks/webservice.html

ポイントは、$.getでの取得するデータタイプを"text"にすることです。
こうすることでテキスト状態のXMLをparseXMLでパースする、
いつものパターンに持っていくことができます。

parseDOMとか使った、もっといい方法もあるかも...

--
http://suz-lab.blogspot.com/

2008年11月22日土曜日

VLC Media Player Portable 0.9.6 Release 2 リリース

スズキです。

こちらも表記の通りです。
http://portableapps.com/news/2008-11-17_-_vlc_media_player_portable_0.9.6_release_2

何にも考えずに、アップデートです。

VLCはもっと、うまく、使っていきたいなー。

--
http://suz-lab.blogspot.com/

WinMerge Portable 2.10.2 リリース

スズキです。

表記の通りです。
http://portableapps.com/news/2008-11-17_-_winmerge_portable_2.10.2

とりあえず、アップデート。

近頃、WinMerge、使ってないなー。

--
http://suz-lab.blogspot.com/

2008年11月21日金曜日

IE(7)だとGoogleのキャッシュのレイアウトがくずれる問題

スズキです。

いろいろあって、表記の問題について、調査してしまいました。

原因は、Googleがキャッシュ表示時に付与する
画面上部に独自メッセージを出力するためのタグです。

下記のようなタグが、htmlタグの上部に付与されます。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<base href="http://suz-lab.blogspot.com/">
...

そう、「htmlタグの上部」です。
こんなところにタグがついても、レイアウトくずれないように、
なんて、全然想定していません!

くずれなかったら、ラッキーくらいの話じゃないでしょうか?

「でも、やっぱり、キャッシュもくずれず見れるようにしたい!」
という場合は、上記のタグがついても、くずれないような、
HTML、CSSを事前に調整しておかなければならない、
ってことになります。

UIからむとうっとおしいなー...

--
http://suz-lab.blogspot.com/

(suz-php-jquery) Qao(Queue Access Object)

スズキです。

PHPのStompとActiveMQとS2JMSを使った開発をしています。
http://suz-lab.blogspot.com/2008/10/php-stomp-activemq.html

で、PHPのStompを使っている部分をQao(Queue Access Object)
としてみました。

使い方はこんな感じです。

--------【PHP】--------
require_once "Qao.php";
class ExampleAction {
  public function send() {
    $msg = array(
      "filename" => $_POST["filename"],
      "username" => $_POST["username"],
      "password" => $_POST["password"]
    );
    $qao = new Qao();
    $qao->youtube($msg);
    return 0;
  }
}
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/app/Action/ExampleAction.php

ポイントは
$qao->[キューの名前]([キューに入れるメッセージの連想配列]);
です。

あとは、MQのお話です。

MQを使ったシステム間通信は、もっと深めておきたいなー。

--
http://suz-lab.blogspot.com/

S2JCA 1.0.1 リリース

スズキです。

ちょうど、S2JMS使った開発しているので、早速、アップデートです。
http://www.seasar.org/wiki/index.php?SeasarWhatsNew%2F2008-11-21#r1c69c38

> Seasar2.4.18 以降との組み合わせで
> インバウンドコネクションが解放されない問題を修正しました.

ということです。
(このまま使っていたら、危険だったのかなー?)

とりあえず、アップデート後も、無事、同様に動作しています。

自分がやってることに対して、タイムリーなリリースじゃないと、
ブログに書かなくなってしまった...

--
http://suz-lab.blogspot.com/

(suz-php-jquery) 続・json_encodeが使えない場合対応

スズキです。

"json_encodeが使えない場合対応"をしたのですが、
http://suz-lab.blogspot.com/2008/11/suz-php-jquery-jsonencode.html
Stomp.php関係でもjson_encodeを使っているようで、
上記の対応では、まだ、json_encodeが使えない環境では、
Stomp.phpが使えません。

他にも、json_encodeを使っている可能性があるので、
もっと汎用的な対応をするように変更しました。

対応方法は、json_encode関数がなかったら、
Services_JSONを使ったjson_encode関数を定義する
といった感じです。

コードは下記のようになります。

--------【PHP】--------
public static function compatible() {
  if(!function_exists("json_encode")) {
    function json_encode($object) {
      require_once("Services/JSON.php");
      $json = new Services_JSON();
      return $json->encode($object);
    }
  }
}
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/lib/Util.php

このcompatibleを実行スクリプトの先頭のほうで実行すれば、
とにかく、json_encodeが使えるようになります。

これで、"suz-php-jquery"にPHP5.2のしばりがなくなったぞ。

--
http://suz-lab.blogspot.com/

"Cent 5.2"でpdo-mysqlが使えるようになるまで

スズキです。

下記のようにyum使って必要なものを入れていきます。
(Apacheはインストール済みを前提)

# yum update
とりあえず既存パッケージをアップデート

# yum install mysql
MySQL本体のインストール

# yum install php
PHP本体のインストール

# yum install php-pdo
PDOモジュールのインストール

# yum install php-mysql
MySQLモジュールのインストール

※php-mysqlをいれると、pdoでもMySQLが使えるようになります。

でも、PHPは5.1なんだよねー...

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/21/2008


Posted from Diigo. The rest of my favorite links are here.

(suz-php-jquery) json_encodeが使えない場合対応

スズキです。

"suz-php-jquery"はPHP5.2以上の
json_encode関数が使えることを前提としているのですが、
そうじゃない環境でも使わなければならなくなりました。

なので、json.phpを下記のように修正です。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/webapp/PHP/json.php

--------【PHP】--------
if(function_exists("json_encode")) {
  print(json_encode(Util::invoke()));
} else {
  require_once("Services/JSON.php");
  $json = new Services_JSON();
  print($json->encode(Util::invoke()));
}
--------

function_existsを用いて、json_encodeが存在すれば、それを使い、
存在しなければ、Services_JSONのencodeメソッドを
使うようにしています。
http://pear.php.net/pepr/pepr-proposal-show.php?id=198

ということで、表記を実現するには、下記ファイルの更新が必要となります。

▼json.php
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/webapp/PHP/json.php

▼Services/JSON.php
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/ext/Services/JSON.php

Tao(Template Access Objecy)もしっかり作ろう。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/lib/Tao.php

--
http://suz-lab.blogspot.com/

2008年11月20日木曜日

"Amazon Associates Web Service"の簡単な使い方

スズキです。

いざ使おうと思うと、なぜかすぐに使うための情報がそろえれないので、
"Amazon Associates Web Service"(REST)の
簡単な使い方サンプルをメモしておきます。

http://ecs.amazonaws.jp/onca/xml
?AWSAccessKeyId=XXXXXXXXXXXXXXXXXXXX
&Service=AWSECommerceService
&Operation=ItemSearch
&SearchIndex=Books
&Keywords=jQuery

[Access Key ID]はこちらから取得
https://aws-portal.amazon.com/gp/aws/developer/account/index.html?ie=UTF8&action=access-key

なんでも、30分で解決したい…

--
http://suz-lab.blogspot.com/

2008年11月19日水曜日

自ゴール付近は100%、真ん中付近は50%、敵ゴール付近は20%の精度

スズキです。

フットサルネタです。
フットサルスクールで教わったことです。

表記の通り、自ゴール付近では、
ボールがとられたら、即失点につながるので、
1%でもリスクを感じるプレイはやめましょう、

逆に、敵ゴール付近は、ハイリスク、ハイリターンなプレイを
やってもいいです、

といった内容です。

ま、敵ゴール付近は相手が100%の精度でプレイするから、
自分も100%の精度でプレイしたら、何も進展しないわけで...

で、これは仕事でも当てはまることだと思っています。
どの場面でも、同じ精度(100%とは限らない)でやる必要はなく、
場面、場面で変えてもいいんじゃないか、と思っています。

ただ、重要なのは、どの場面で、どの精度を出すかを、
ちゃんと把握しておかないといけないってことでしょうか。

このことは、たぶん、今まで、無意識で
なんとなくやっていたことだとは思いますが、
無意識で精度を変えるのは、結構危険だと思うので、
今後、意識だけでもしていこうと思います。

とりあえず、今週、自分自身をたてなおそう...

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/19/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月18日火曜日

今日のブックマーク 11/18/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月17日月曜日

"jqUploaderとShadowboxの相性"問題解決!

スズキです。

隣で、"EMP WORDS"が表記の件で困っていました。
http://blog.emp.fem.jp/?eid=1100249

なので、HELPしました。

原因は"Shadowbox.init"を実行すると、
そのときに生成されたタグが、画面全体を覆う形(透明)になり、
その下のFlash(jqUploader)がFireFox2.0では消えてしまう
って話でした。

解決方法は、embedタグのwmodeの属性値の調整となります。
http://dev.ekndesign.com/2008/02/08/html%E3%81%B8swf%E3%82%92embed%E3%81%99%E3%82%8B%E6%99%82%E3%81%AE%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF-wmode%E3%81%A3%E3%81%A6%EF%BC%9F/

このwmodeの属性値を"opaque"を指定することで
無事、Shadowbox利用時でも、jqUploaderが表示するようになります。


で、wmodeの属性値を"opaque"に、どのタイミングで行うか?
という話になりますが、結局、jquploader.jsを修正することにしました。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/webapp/JS/ext/jquploader.js

"jQuery(this).flash"のパラメータ設定のところで、
wmode:'opaque'を追加しています。

Flashとの絡みは、要注意だなー。

--
http://suz-lab.blogspot.com/

並び順には意味を持たせる

スズキです。

昔、マッキンゼーの人とお仕事させてもらったときに、
よく、並び順には常に意味を持たせなさい、
と教えられ(怒られ)てました...

箇条書きするにしても、上から順に、
何かしらのルールに沿った形で並べなさい、
ということです。

この考え方は、プログラミングでも、使えるなーと思い、
近頃、意識するようにしています。

たとえば、FlickrにPHPで接続するときに、
http://www.flickr.com/services/api/response.php.html
下記のようにパラーメータを作るのですが、

---------【PHP】--------
$params = array(
'format' => 'php_serial',
'api_key' => '00000000000000000000000000000000',
'method' => 'flickr.photos.search',
'per_page' => 25,
'text' => $_GET["keyword"],
'page' => $_GET["page"]
);
--------

この上記、連想配列のkey-valueの並び順も、
実は意味を持たせた形にしています。

どんな意味かというと、「値が変更されない順」です。

これ以外のメソッド定義の並び順なども、
逐次意識していければ、と思っています。

マッキンゼー式プログラミング?
(俺、マッキンゼーまったく関係ないけど...)

--
http://suz-lab.blogspot.com/

try {...} catch(Exception e) {} 厳禁!

スズキです。

下記コードは、恐ろしいコードです。

--------【Java】--------
try {
  ...
} catch(Exception e) {
}
--------

こうしておくと、幸せにになる人が増えるでしょう。

--------【Java】--------
try {
  ...
} catch(Exception e) {
  e.printStackTrace();
}
--------

人の振り見て我が振り直せ...

--
http://suz-lab.blogspot.com/

2008年11月16日日曜日

今日のブックマーク 11/16/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月15日土曜日

HTMLのタイトルをJavaScriptで変更

スズキです。

ブラウザの左上などに表示しているHTMLのタイトルを
JavaScriptで変更する方法です。

といっても、たいしたことなくて、

document.title = "テスト";

で簡単に変更されます。

ただ、titleタグの中身は変更されないようなので、
そちらも変更したい場合は、

$("title").text("テスト")

も必要になります。(あまり必要ないと思いますが...)

明日は、"suz-env-server"復活祭だ!
http://code.google.com/p/suz-lab/source/browse/#svn/trunk/suz-env-server

--
http://suz-lab.blogspot.com/

(suz-php-jquery) rss.phpでRSSの簡単出力

スズキです。

RSSを簡単に出力させる仕組みを用意しました。
rss.phpです。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/webapp/PHP/rss.php

中ではXML_Serializer使ってます。なので、
http://code.google.com/p/suz-lab/source/browse/#svn/trunk/suz-php-jquery/php/ext/XML
以下の一式も必要になります。

具体的には、
PHP/rss.php/Example/getNews
とアクセスすると、

--------【Java】--------
class ExampleAction {
  public function getNews() {
    $data = array(
      'channel' => array(
        'title' => 'サンプルRSS',
        'link' => 'http://localhost/',
        'description' => 'XML_Serializerのサンプル',
        'language' => 'ja-jp',
        'pubDate' => date("r"),
        array(
          'title' => 'タイトル1',
          'link' => 'http://localhost/1/',
          'pubDate' => date("r"),
          'description' => 'サンプル1'
        ),
        array(
          'title' => 'タイトル2',
          'link' => 'http://localhost/2/',
          'pubDate' => date("r"),
          'description' => 'サンプル2'
        )
      )
    );
    return $data;
  }
}
--------
下記のサンプルを流用。
http://webtech-walker.com/archive/2007/04/06023523.html

が実行されて、上記に応じたフィードXMLが出力されます。

次は、メールをやろう。

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/15/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月14日金曜日

AS3でJSONデータの取得とオブジェクト化

スズキです。

今日は(も!?)いろいろやってます。AS3です。

表記を実現するためには下記が非常に参考になります。
http://1ka2ka.com/archives/200808/19_135907.html
JSONの扱いはas3corelibを使っています。
http://code.google.com/p/as3corelib/

で以前のサンプルをもとに、この実装も加えてみました。
http://suz-lab.blogspot.com/2008/11/as3swf.html

--------【ActionScript3】--------
package {
  import flash.display.MovieClip;
  import flash.events.Event;
  import flash.net.URLRequest;
  import flash.net.URLLoader;
  import flash.text.TextField;
  import com.adobe.serialization.json.JSON;
  public class Document extends MovieClip{
    public var text:TextField;
    public function Document(){
      var request = new URLRequest("http://localhost/json.txt");
      var loader:URLLoader = new URLLoader(request);
      loader.load(request);
      loader.addEventListener(Event.COMPLETE, onComplete);
      function onComplete(event:Event) {
        var json:Object = JSON.decode(loader.data);
        var url:String = loaderInfo.url;
        var token:Array = url.split("\\");
        var file:String = token[token.length - 1];
        text.text = file.split(".")[0] + json.key1;
      }
    }
  }
}
--------

JSONデータをとりあえずこんな感じです。{"key1": " test"}

で、画面に、「ファイル名 test」と表示されるようになりました。
("test"は"json.key1"で取得しています)

これで、Flash系は一安心...

--
http://suz-lab.blogspot.com/

Windowsのバッチファイルでコマンドを途中で改行するには?

スズキです。

なんか、今日はWindowsの些細なことで苦しんでいます。

今度はバッチファイル中のコマンドを途中で改行する方法です。
答えは、下記に書かれています。
http://www.k-tanaka.net/windows/cmd/post_14.html

つまり

> コマンドが長くなり、途中で改行したい時は
> 「^(キャレット)」を打ちます。

ということです。

Java実行するときに、クラスパスの指定が例のごとく
横に長くなてしまうので、ってことで調べたのですが、
このおかげで下記のようにバッチファイルがすっきりしました。
--------【バッチ】--------
java -classpath ^
C:\suz-lab\sbin\s2jms\lib\gdata-client-1.0.jar;^
C:\suz-lab\sbin\s2jms\lib\gdata-client-meta-1.0.jar;^
C:\suz-lab\sbin\s2jms\lib\gdata-core-1.0.jar;^
C:\suz-lab\sbin\s2jms\lib\gdata-media-1.0.jar;^
C:\suz-lab\sbin\s2jms\lib\gdata-youtube-2.0.jar;^
C:\suz-lab\sbin\s2jms\lib\gdata-youtube-meta-2.0.jar;^
C:\suz-lab\sbin\s2jms\lib\mail.jar;^
suz-lab.UploadYouTubeMain %1 %2 %3
--------

「^」ってキャレットって言うんだ...

--
http://suz-lab.blogspot.com/

Windowsのバッチファイル(bat)をJavaから実行

スズキです。

非常に有名な話ですが、たまにしか扱わないので、
そして、いつも忘れているので、自分メモです。

--------【Java】--------
public static void main(String[] args) {
  try {
    Runtime.getRuntime().exec("C:\\hoge\\Hoge.bat " + args[0]);
  } catch(IOException e){
    e.printStackTrace();
  }
}
--------

同期関係もいろいろ試しましたが、想定どおりの挙動をしてくれません...
バッチファイルの中で実行しているコマンドの問題かな...

Windowsの話になると、あいかわらずダメダメだなー...

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/14/2008


Posted from Diigo. The rest of my favorite links are here.

(suz-php-jquery) キーワードをリンクにする

スズキです。

任意の文章の中にあるキーワードをリンクにする方法です。

とりあえず、"suz-php-jquery"では
Stringオブジェクトのメソッド"linkKeywords"として用意しました。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/webapp/JS/lib/prototype.js

使い方はこんな感じです。

--------【JavaScript】--------
var keywords = [
  {"keyword": "鈴木", "url": "http://www.yahoo.com"},
  {"keyword": "佐藤", "url": "http://www.google.com"}
];
var text = "鈴木ああああああ鈴木いいいいい佐藤ううううう鈴木";
alert(text.linkKeywords(keywords));
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/webapp/JS/app/example/link_keywords.js

上記は、

【Before】
鈴木ああああああ鈴木いいいいい佐藤ううううう鈴木

【After】
<a href='http://www.yahoo.com'>鈴木</a>ああああああ<a
href='http://www.yahoo.com'>鈴木</a>いいいいい<a
href='http://www.google.com'>佐藤</a>ううううう<a
href='http://www.yahoo.com'>鈴木</a>

といった感じに変換します。

20代だったころの集中力を取り戻さなきゃ...

--
http://suz-lab.blogspot.com/

2008年11月13日木曜日

(suz-php-jquery) GeryEngineで動的に生成すべきSQLに対応

スズキです。

ついにSQLの条件などを動的に組む必要性に迫られました。

今のDaoの仕組みを拡張する形で実現したいので、
どうしたら、いい感じになるかなー、といろいろ考えていたのですが、
結局、GeryEngineというVelocityクローンの
テンプレートエンジンを用いて、
http://geryengine.instant-publishing.nl/
動的にSQLを組み立てれるようにしました。

ということで、この機能を使うには、
下記ファイル群を追加・更新する必要があります。

▼Dao.php : データベース・アクセス・オブジェクト
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/lib/Dao.php
▼GeryEngine : テンプレート・エンジン
http://code.google.com/p/suz-lab/source/browse/#svn/trunk/suz-php-jquery/php/ext/GeryEngine

使い方はこんな感じです。

--------【PHP】--------
require_once "Dao.php";
class ExampleAction {
public function select() {
$context = array(
"flag" => false
);
$dao = new Dao();
return $dao->selectHogeList(null, 3, 0, $context);
}
}
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/app/Action/ExampleAction.php

Daoのメソッドの第4引数にコンテキストを指定すると、
下記のようなselectHogeList.vmからSQLが生成されます。

--------【VM】--------
SELECT *
FROM AREA_MST
#if($flag)
WHERE AREA_ID = 3
#end
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/sql/app/example/selectHogeList.vm

ということで、このあとはVelocityの話ということになります。
http://velocity.apache.org/engine/devel/user-guide.html

#(半角)endでブログの文章が切れるぞ!?

--
http://suz-lab.blogspot.com/

(suz-php-jquery) 検索エンジン・アクセス・オブジェクト(SAO)

スズキです。

ようやく、検索エンジン(Hyper Estraier)を
PHPから扱う仕組みができました。

必要なものは
▼SaoDefine.php: 定数定義
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/app/Define/SaoDefine.php
▼Sao.php: 検索エンジン・アクセス・オブジェクト
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/lib/Sao.php
▼HyperEstraier*: 外部ライブラリ
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/ext/Services/HyperEstraier.php
http://code.google.com/p/suz-lab/source/browse/#svn/trunk/suz-php-jquery/php/ext/Services/HyperEstraier
▼ErrorStack.php: 外部ライブラリ
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/ext/PEAR/ErrorStack.php
となります。

サンプルコード(Action)はこんな感じです。
--------【PHP】--------
<?php
require_once "Dao.php";
class ExampleAction {
  public function search() {
    $sao = new Sao();
    return $sao->child("jQuery", 20, 0);
  }
}
?>
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/app/Action/ExampleAction.php

$sao->ノード名(キーワード, リミット、オフセット)
といった具合に使います。

上記の戻り値は下記(JSON形式の場合)となります。
[
  {
    "uri": "ページのURIです。",
    "title": "ページのタイトルです。",
    "snippet": "本文の一部です。"
  },
  ...
]

あとは、jQueryでいい感じに処理して下さい。

次は、動的SQLだ。

--
http://suz-lab.blogspot.com/

"commons-httpclient-3.1.jar"には"commons-codec-1.3.jar"が必要

スズキです。

"commons-httpclient-3.1.jar"を使うとき
http://hc.apache.org/httpclient-3.x/
"commons-codec-1.3.jar"がないと、
http://commons.apache.org/codec/
下記のようなエラーになります。

java.lang.NoClassDefFoundError:
org/apache/commons/codec/DecoderException

ちなみに、"commons-httpclient-3.1.jar"を使った
サンプルコードです。

-------【Java】-------
String url = "http://suz-lab.blogspot.com/";
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
client.executeMethod(method);
String body = method.getResponseBodyAsString();
-------

今、HttpClient、ダウンロードできないっぽい…
http://hc.apache.org/downloads.cgi

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/13/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月12日水曜日

Services_HyperEstraier(PHP)を使うにはPEAR_ErrorStackが必要

スズキです。

全文検索エンジンの"Hyper Estraier"を
http://hyperestraier.sourceforge.net/index.ja.html
PHPから利用しようとして、Services_HyperEstraierを
http://page2.xrea.jp/#Services_HyperEstraier
導入したのですが、サンプルを実行すると、
PEAR_ErrorStackがない!って怒られてしまいました。

PEARに依存しているようです。
"suz-php-jquery"はPEARに依存するつもりはなかったのですが、
仕方ないので、下記よりダウンロードして、
http://pear.php.net/package/PEAR/download
PEAR/ErrorStack.phpのみプロジェクトに導入しました。

これで、問題なくサンプルが動きます!

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/12/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月11日火曜日

(suz-php-jquery) 標準JavaScriptライブラリ

スズキです。

現状、"suz-php-jquery"で標準的に組み込んでいる
JavaScriptライブラリ群です(一言コメントつき)
http://code.google.com/p/suz-lab/source/browse/#svn/trunk/suz-php-jquery/webapp/JS/ext

▼jQuery
http://jquery.com/
言わずと知れた、基本ライブラリです。

▼jQuery Form Plugin
http://www.malsup.com/jquery/form/
フォームからのデータ送信を非同期通信?にしてくれます。

▼jQuery plugin: Validation
http://bassistance.de/jquery-plugins/jquery-plugin-validation/
フォームの入力に対してバリデーションしてくれます。

▼jqUploader
http://www.pixeline.be/experiments/jqUploader/
Flashを用いたファイルアップローダーです。

▼jTemplates
http://jtemplates.tpython.com/
JavaScriptのテンプレートエンジンです。

▼DateFormatter.js
http://clonedoppelganger.net/javascript/DateFormatter.html
日付フォーマッター(PHPのdate関数のフォーマットパターン)です。

▼Shadowbox.js
http://www.mjijackson.com/shadowbox/
コンテンツをダイアログボックス風に表示できます。

まだ、jTemplatesが微妙かも...

--
http://suz-lab.blogspot.com/

VLC Media Player Portable 0.9.6 リリース

スズキです。

表記の通りです。
http://portableapps.com/news/2008-11-09_-_vlc_media_player_portable_0.9.6

これで、「アップデートするか?」ってうるさいのが解消です。

--
http://suz-lab.blogspot.com/

"PHP & MySQL"の文字化け問題

スズキです。

"物欲の罅"がインストールしたLinux&PHP&MySQLの環境で
http://butsuyoku360.blog18.fc2.com/
また、文字化け問題がおこり、HELPしました。

今回は、MySQL、PHP、共にUTF-8にそろえていたのですが、
文字化けです...

まずは設定ファイル(my.cnf)の調整をしようとしたら、ありません。
tarballからのデフォルトインストールのままのようです。

そういう場合はDATAフォルダ(/usr/local/var/)に
my.cnfを置けばいいはずなのですが、MySQLを実行すると、
下記のような警告が発生してしまいました。

# WARNING: Found /usr/local/var/my.cnf
Datadir is deprecated place for my.cnf, please move it to /usr/local

今の時代、my.cnfは"/usr/local/"に置くようです。

で、上記を実施し、記述を適当に調整したのですが、
結果として、下記のような設定で文字化けが解消されました。

--------【my.cnf】--------
[mysqld]
default-character-set = utf8
skip-character-set-client-handshake

[mysql]
default-character-set = utf8
--------

定期的に文字化け問題が勃発する...

--
http://suz-lab.blogspot.com/

Webアプリケーションでプロジェクトを分ける基準

スズキです。

ブランクプロジェクトの用意は結構、僕がすることが多いのですが、
そのときの、
一つのプロジェクトで開発するのか?複数のプロジェクトに分けるのか?
は、いつも考えてしまう問題となっています。

たとえば、ユーザー側の機能と管理側の機能を用意するときに、
一つのプロジェクト(Javaの場合はデプロイする単位)で
両方作成するのか?ユーザー側と管理側でプロジェクトを分けるのか?
いつも、考えてしまいます。

上記の場合、今までは慣例的にユーザー側と管理側で
プロジェクトを分けていたのですが、ここは慣例的にしたくないので、
下記のように、ルールを決めました。

「利用する人の層が異なる場合はプロジェクトを分ける」

ユーザー機能と管理機能は、利用する人が違うので、
トラフィックの性質も当然異なり、場合によっては、
サーバを分ける必要性も考えてのルールです。

当然、プロジェクトが複数になれば、
commonプロジェクト的なものも必要になってくるでしょう。

ちょっとすっきりした。

--
http://suz-lab.blogspot.com/

2008年11月10日月曜日

(suz-php-jquery) Ver 0.0.3 に向けて

スズキです。

"Ver 0.0.2"に関しては、
http://suz-lab.blogspot.com/2008/11/suz-php-jquery-ver-002.html
結局、下記のみ実装してリリース(!?)しました。

▼selectXxxListの引数でLimit/Offsetを指定可能に
$dao->selectHogeList($param, 10, 10)
▼selectXxxListの件数をcountXxxListで取得できるように
$dao->countHogeList()

で、そろそろ、次のプロジェクトで使うので、
"Ver 0.0.3"にして使ってもらおうと思っています。

下記は、0.0.3で実装予定の機能です。

【必須/0.0.2での未実装部分】
▼"Hyper Estraier"を用いた前文検索I/F
下記を利用する予定。
http://page2.xrea.jp/#Services_HyperEstraier
▼SQLで動的な条件文などを作成する仕組み
以前紹介した、Velocityライクなテンプレートエンジンで、
SQLを動的生成する仕組みで対応予定。
http://suz-lab.blogspot.com/2007/10/velocityphpgeryengine.html

【必須/リファクタリング】
よく考えたら、SELECT結果の件数はPDOで取れそうなので、
selectXxxList/Itemでの判別はなくしたい。
(selectXxxのみということで)

【0.0.2から0.0.4へ先送り…】
▼もっとログをわかりやすく。
FireBugにログ出力する形かなー?
▼jTemplatesの利用
これは、標準プラグインにしちゃいますか!

【0.0.4で実装したいもの】
▼セキュリティ関係
-PHPセッションを利用したアクセス制限
-ログイン機能

0.0.3に関しては、今週前半に実装する予定です。

--
http://suz-lab.blogspot.com/

CSSでタイル状に並べた行ごとの隙間を埋める

スズキです。

今までずっと、ほったらかしにしておいたのですが、
"MEMO 4 ME"に教えてもらいました。
http://memo4me.seesaa.net/

YUIのreset.cssをかけて、下記のようなHTMLで画像を並べると、

--------【HTML】--------
<div id="photo">
  <img src="..."/>
  <img src="..."/>
  ...
</div>
--------

列の隙間なく、ぴっちり隣同士がくっついているのですが、
行の隙間が、Firefoxで少し出てしまい、気持ち悪いなー
といった状態になります。(IEではOKです)

で、どうすれば回避できるかというと、下記のようにCSSにて、
imgタグに対し"vertical-align: top;"を指定します。

--------【HTML】--------
#photo img {
vertical-align: top;
}
--------

"suz-php-jquery"にも反映させておくか。

--
http://suz-lab.blogspot.com/

AS3で自分(swf)のパスを取得するには?

スズキです。

こちら同様、
http://suz-lab.blogspot.com/2008/11/as3get.html
この手の情報もloaderInfoから取得できます。
URLの場合は、loaderInfo.url、となります。

具体的には、下記コードです。
(拡張子を除いたファイル名を取得しています)

--------【AS3】--------
package {
  import flash.display.MovieClip;
  import flash.text.TextField;
  public class Document extends MovieClip{
    public var text:TextField;
    public function Document(){
      var url:String = loaderInfo.url;
      var token:Array = url.split("\\");
      var file:String = token[token.length - 1];
      text.text = file.split(".")[0];
    }
  }
}
--------
※"text"はfla上のインスタンス名"text"の
ダイナミックテキストと対応しています。
※フォルダの区切り文字は"\"を想定しています。

ローカル実行でのサーバとの通信部分も、
もう一度確認しておくか…

--
http://suz-lab.blogspot.com/

AS3でGETパラメータを扱うには?

スズキです。

この手の情報は、loaderInfoから取得できます。
GETパラメータの場合は、
loaderInfo.parameters
となります。
(参考) http://hato-style.chu.jp/note/note_20080915.html

具体的には、下記コードとなります。

--------【AS3】--------
package {
  import flash.display.MovieClip;
  import flash.text.TextField;
  public class Document extends MovieClip{
    public var text:TextField;
    public function Document(){
      var params:Object = loaderInfo.parameters;
      var param:String = params["param"];
      if(param != null) {
        text.text = param;
      }
    }
  }
}
--------
※"text"はfla上のインスタンス名"text"の
ダイナミックテキストと対応しています。

でも、結局、使わなかった…

--
http://suz-lab.blogspot.com/

久しぶりのドキュメントクラス(AS3)

スズキです。

久しぶりに、FlashCS3引っ張りだして、
ドキュメントクラス作りました。

昔いろいろやったなー、と思い、
"suz ドキュメントクラス"でググると、
その手の記事、多少、書いてました。

▼ドキュメントクラスでAS3の外部ファイル化
http://suz-lab.blogspot.com/2008/02/as3.html
▼ドキュメントクラスのフィールドがコンフリクトしてしまう
http://suz-lab.blogspot.com/2008/04/blog-post_30.html

んー、あまり思い出せないなー...

とりあえず、サンプルコードです。
今回は、MovieClipを継承したものにしています。
(以前のサンプルはSpriteを継承)

--------【AS3】--------
package {
  import flash.display.MovieClip;
  public class Document extends MovieClip{
    public function Document(){
      trace("Hello,World!!");
    }
  }
}
--------

思い出すのに、少し時間がかかってしまった...

--
http://suz-lab.blogspot.com/

Amazonインスタントストアに「読書」カテゴリを追加

スズキです。

Amazonインスタントストアの「自己啓発」カテゴリ
http://astore.amazon.co.jp/iretsuzusblog-22?node=39
があふれた(9冊になった)ので、「読書」カテゴリ
http://astore.amazon.co.jp/iretsuzusblog-22?node=40
を新規作成し、該当する書籍を移動させました。

なんか、自己啓発本に偏りすぎてる...
もっと、IT技術書も増やさないと...

--
http://suz-lab.blogspot.com/

(書評) 勝間和代のビジネス頭を創る7つのフレームワーク力 ビジネス思考法の基本と実践

スズキです。

今回はタイトルが長いですが、
「勝間和代のビジネス頭を創る7つのフレームワーク力 ビジネス思考法の基本と実践」
http://astore.amazon.co.jp/iretsuzusblog-22/detail/4887596391
です。

まずは目次です。
--------
【1. 「ビジネス思考力」を定義する!】
【2. ビジネス思考の基礎となる7+1の力】
【3. 一つめの力 論理思考力】
【4. 二つめの力 水平思考力】
【5. 三つめの力 視覚化力】
【6. 四つめの力 数字力】
【7. 五つめの力 言語力】
【8. 六つめの力 知的体力】
【9. 七つめの力 偶然力】
--------
目次の詳細はこちら(ほとんど一緒)
http://www.amazon.co.jp/gp/product/toc/4887596391?tag=iretsuzusblog-22

僕はマッキンゼーの方と一緒に仕事をした経験があり、
マッキンゼー出身者の言動には、いつも興味をもっています。
勝間さんもマッキンゼー出身の方ということで、本書の内容も、
昔のマッキンゼーの方と仕事をした体験と照らし合わせて
読み進めることができました。

まずは、昔の体験を彷彿させたフレーズです。

・ 限られた情報と限られた時間の中で
・ 拙速は避けるべきですが、鈍足はもっと避けるべきです

んー、よく怒られました...

次は自分メモも兼ねて、紹介されているフレームワークです。

01. 空・雨・傘
02. 戦略の3C
03. マーケティングの4P
04. 5W+1H
05. PDCAサイクル
06. 採用者分布曲線
07. 製品進化のトライアングル
08. CTQ
09. 戦略キャンバス
10. 事業の優先順位づけマトリクス
11. バリューチェーン
12. 所得金額階級別世帯数の相対度数分布
13. 人口分布曲線
14. Will-Skillマトリクス
15. SWOTlマトリクス
16. 影響要因
17. 組織の7S
18. 緊急度と重要度のマトリックス
19. PPM分析
20. VRIO分析
21. 水平思考の6つの帽子

まだまだ、引き出しが少ないことを、実感させられました...

また、今後の自分に対して
「水平思考力(ラテラル・シンキング)」
の必要性はひしひしと感じています。
(ロジカル・シンキングの次として)

【水平思考力(ラテラル・シンキング)】
> 直感や想像、新しいものの組み合わせなどから
> 解の仮説をイメージする方法です。

ロジカル、ラテラルの両方をバランスよくってのが
次の目指すべきところでしょうか?

また、本書を読むことで、自己啓発の具体的な次のステップも
ある程度固まりました。

1. マインドマップの研究と実践
2. フォト・リーディングの受講
3. ジーニアス・コードの受講

上記、年内に片付けることが当面の目標です。(時間がとれるか?)

最後に、身体についても書かれているので、
そこから、実践することにしたことの紹介です。

それは、「禁アルコール、禁カフェイン、禁ニコチン」です。

現状、ほとんど上記の状態ですが、これを機に、徹底しようと思います。

といった具合に、本書はタイトルに対して、
紹介しきれないほどの非常に多くの内容が書かれいます。

いろいろと実践して、もう一度、読み返してと、
自分のチェックに利用できる一冊ではないかと思います。

あー、日付が変わってしまった...

--
http://suz-lab.blogspot.com/

2008年11月9日日曜日

今日のブックマーク 11/09/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月8日土曜日

近頃のAmazonインスタントストアの使い方

スズキです。

近頃は、書評した本の管理ツールとして使っています。
http://astore.amazon.co.jp/iretsuzusblog-22

トップカテゴリの「書評」には、これから書評するつもりの書籍を
置いています。

その下のカテゴリはジャンルごとに書評したものをまとめるようにしています。

で、「うれしい点」と「うれしくない点」です。

【うれしい点】
・紹介料の対象となる(でも、いまのところ意味ナシ...)
・カテゴリごとの類似商品が、今後、読みたい本の材料になる
・書籍の追加が簡単
・コメントが入れられる
・ブログパーツが用意されている

【うれしくない点】
・コメントにリンクが使えない(ブログの書評へリンクしたい)
・ブログパーツで紹介される対象書籍が微妙(トップカテゴリのみ)
・登録したら、勝手に時系列(降)順になって欲しい

といったところです。

「読書メーター」も考えましたが、
http://book.akahoshitakuya.com/
紹介料の対象にならないので、とりあえず見送っています。

んー、"Google App Engine"で自分で作るってのもありかなー!?
http://code.google.com/intl/ja/appengine/

--
http://suz-lab.blogspot.com/

2008年11月7日金曜日

(suz-php-jquery) "webapp/TMP"フォルダの追加

スズキです。

"suz-php-jquery"の標準フォルダ構成に一時的でかつ、
ブラウザから閲覧できるファイルを格納するためのフォルダとして
"webapp/TMP"を追加しました。
http://code.google.com/p/suz-lab/source/browse/#svn/trunk/suz-php-jquery/webapp/TMP

用途の一例として、jqUploaderでアップロードしたファイルは、
とりあえず、"webapp/TMP/upload"にアップロードされるようにしています。
(その後、任意のタイミングで、ふさわしいフォルダに移動させます)

まだ、"webapp/TMP/upload"しかありませんが、そのうち、
"webapp/TMP/cache"みたいなフォルダも必要になるかも知れません。

文字化け問題なおさないと...

--
http://suz-lab.blogspot.com/

2008年11月6日木曜日

"jQuery Validate プラグイン"と"jQuery Form プラグイン"のあわせ技

スズキです。

表記のプラグイン、別々には紹介していたのですが、
基本的にあわせ技で使うことが多いはずなので、
サンプルコードをメモしておきます。

▼jQuery Validate プラグイン
http://bassistance.de/jquery-plugins/jquery-plugin-validation/
▼jQuery Form プラグイン
http://www.malsup.com/jquery/form/

まずはHTMLですが、必要なJavaScriptを読み込んで、
formを作る形になります。(nameの設定を忘れないように)
--------【HTML】--------
<head>
  <script type="text/javascript"
      src="JS/ext/jquery.js"></script>
  <script type="text/javascript"
      src="JS/ext/validate.js"></script>
  <script type="text/javascript"
      src="JS/ext/messages_ja.js"></script>
  <script type="text/javascript"
      src="JS/ext/form.js"></script>
  <script type="text/javascript"
      src="JS/app/validate-form.js"></script>
</head>
<body>
  <div id="form">
    <form>
      <dl>
        <dt>タイトル</dt>
        <dd>
          <input type="text" name="title"/>
        </dd>
        <dt>URL</dt>
        <dd>
          <input type="text" name="url"/>
        </dd>
          <dt>コメント</dt>
        <dd>
          <textarea name="comment"></textarea>
        </dd>
      </dl>
      <div class="control">
        <input type="submit" value="追加"/>
        <input type="reset" value="リセット"/>
      </div>
    </form>
  </div>
</body>
--------

上記のHTML(form)に対して、下記JavaScriptを適用させます。
--------【Javascript】--------
// validateの設定
var param = {
  rules: {
    title: {
      required: true
    },
    url: {
      required: true,
      url: true
    },
    comment: {
      required: true
    }
  },
  submitHandler: function(form){
    // formの設定
    var option = {
      url: "PHP/app/validate-form.php",
      type: "GET",
      dataType: "json",
      success: function(json, status) {
        alert(json);
      }
    };
    $(form).ajaxSubmit(option);
  }
};
$("#form form").validate(param);
--------

基本的に、Validateプラグインのやり方がベースになり、
Formプラグインに関しては、Validateプラグインのパラメータの
submitHandlerで設定する形になります。

submitHandlerはSubmitボタンが押されたときに実行される
処理を書くのですが、引数にformの内容が入ったものが
与えられるので、それに対してFormプラグインの
ajaxSubmitメソッドを実行させることになります。

ajaxSubmitメソッドの引数には、ajaxFormと同じパラメータを
設定することができます。

この組み合わせ、強力すぎです。

--
http://suz-lab.blogspot.com/