1年が早いです。去年の4月に起業してから過去お付き合いのある会社、知人から仕事をいただいて何とかやってこれました。ありがとうございます。
今年は大きな仕事を受注し、社員を増やしたいと思います。
2009年1月20日火曜日
Java のフレームワークどうしましょ
あけましておめでとうございます。
次の受託開発案件で Java を使うことになりそうなのでフレームワークの比較検討しています。
私が今まで使ったことのあるフレームワークは
・Struts 1、2系 → EC など
・Tapestry 3系 → 業務システム
・Click Framework → 自社サービス(openidea.jp)
の 3つです。
一言にフレームワークといっても色々な役割がありますが、私は次の 4つが主要な機能だと考えます。
・URI マッピング
・フォームのバリデーション
・テンプレート
・データベースアクセス
表にするとこんな感じでしょうか。かなり昔の記憶で書いているものあって、正確でなかったり、当時スキル不足や調べ切れなかったものもありますが。。
この 3つはどれもぴったりハマることなく、気に入らないところは色々いじって使ってました。それぞれの使った感想を簡単にあげます。
Struts:
・設定ファイルが面倒。設定ファイルにして便利だったことはほとんどない。
・*Form, *Action とたくさんのクラスができて管理が面倒。
・学習は比較的容易?情報がたくさんある。
Tapestry:
・業務システムで採用したのが間違いだったかもしれないが、複雑な画面になるとイベントの制御がかなり難解になる。
・カスタムコンポーネントを作り始めると面白い。
・ページ制御側の学習コストは非常に高くつく。HTML テンプレートはスッキリ。
Click Framework:
・拡張子 *.htm が固定で変更できないのが痛い。
・学習は容易。
ほとんどのフレームワークはテンプレート部分や、データベースアクセスは他のプロダクトに変更することが可能です。実はここの選定が肝だったりします。別途テンプレートやデータベースアクセス部分のことは書きたいなと思います。
これらの今まで使ってきたフレームワークの追加調査に加え、Wicket も調査したいです。Spring Framework、S2 など DIコンテナを含むものは今回はパスしようと思います。
ここ 2、3年は Perl、PHP 案件がほとんどだったので忘れていましたが、Java 案件は
→ 新しいフレームワークの選定
→ 開発スタートしてから新しいフレームワークの細かい部分の調査ハマる
で遅延しがちなので要注意ですねー。
次の受託開発案件で Java を使うことになりそうなのでフレームワークの比較検討しています。
私が今まで使ったことのあるフレームワークは
・Struts 1、2系 → EC など
・Tapestry 3系 → 業務システム
・Click Framework → 自社サービス(openidea.jp)
の 3つです。
一言にフレームワークといっても色々な役割がありますが、私は次の 4つが主要な機能だと考えます。
・URI マッピング
・フォームのバリデーション
・テンプレート
・データベースアクセス
表にするとこんな感じでしょうか。かなり昔の記憶で書いているものあって、正確でなかったり、当時スキル不足や調べ切れなかったものもありますが。。
| URI マッピング | バリデーション | テンプレート | データベースアクセス | |
|---|---|---|---|---|
| Struts | サーブレットフィルタ *.do 標準 | 独自 | JSP 2.0 標準 | なし |
| Tapestry | サーブレットを /app などにマッピング | 独自 | 独自 + ognl 形式 | なし |
| Click Framework | サーブレットフィルタ *.htm 変更不可 | 独自 | Velocity 標準 | Cayenne、Spring サポート |
この 3つはどれもぴったりハマることなく、気に入らないところは色々いじって使ってました。それぞれの使った感想を簡単にあげます。
Struts:
・設定ファイルが面倒。設定ファイルにして便利だったことはほとんどない。
・*Form, *Action とたくさんのクラスができて管理が面倒。
・学習は比較的容易?情報がたくさんある。
Tapestry:
・業務システムで採用したのが間違いだったかもしれないが、複雑な画面になるとイベントの制御がかなり難解になる。
・カスタムコンポーネントを作り始めると面白い。
・ページ制御側の学習コストは非常に高くつく。HTML テンプレートはスッキリ。
Click Framework:
・拡張子 *.htm が固定で変更できないのが痛い。
・学習は容易。
ほとんどのフレームワークはテンプレート部分や、データベースアクセスは他のプロダクトに変更することが可能です。実はここの選定が肝だったりします。別途テンプレートやデータベースアクセス部分のことは書きたいなと思います。
これらの今まで使ってきたフレームワークの追加調査に加え、Wicket も調査したいです。Spring Framework、S2 など DIコンテナを含むものは今回はパスしようと思います。
ここ 2、3年は Perl、PHP 案件がほとんどだったので忘れていましたが、Java 案件は
→ 新しいフレームワークの選定
→ 開発スタートしてから新しいフレームワークの細かい部分の調査ハマる
で遅延しがちなので要注意ですねー。
2008年12月22日月曜日
仕事でつながるサービス
どもどもー。起業して半年以上たちますが、未だに一人で受託案件こなしてます。
今期は何とか黒字でしたが、そろそろこの一人受託開発スタイルから脱却しないとだめですね。
つまり、社員を雇ったり仕事の一部を外注していきたいのですが。。
そんなときに見つけたサービス「ランサーズ」さん。最近できた様子です。
http://www.lancers.jp/
楽天ビジネスっぽい仕組みは、世の中に無ければ作りたいなーと思ってましたが、これ大変分かりやすくて良いです。どんどん発展していきそうな予感です。
試しに仕事の依頼をしてみようかなー。
今期は何とか黒字でしたが、そろそろこの一人受託開発スタイルから脱却しないとだめですね。
つまり、社員を雇ったり仕事の一部を外注していきたいのですが。。
そんなときに見つけたサービス「ランサーズ」さん。最近できた様子です。
http://www.lancers.jp/
楽天ビジネスっぽい仕組みは、世の中に無ければ作りたいなーと思ってましたが、これ大変分かりやすくて良いです。どんどん発展していきそうな予感です。
試しに仕事の依頼をしてみようかなー。
2008年11月12日水曜日
2008年10月24日金曜日
Shift_JIS で encodeURIComponent
Ajax が流行り始めてからほとんど UTF-8 でウェブアプリケーションを作っていたので気にならなかったのですが、Shift_JIS で作るとなるとちょっと面倒くさいです。
例えば script.aculo.us の Ajax.InPlaceEditor のコールバックとかで普通に書くと encodeURIComponent が UTF-8 エンコードを施すので、サーバ側で Shift_JIS として受け取れません。
そこで思いついたのが encodeURIComponent を 2回行う方法。これでサーバ側で個別にデコードしてやれば良いです。JavaScript を使って日本語パラメータを送信する必要があるところだけです。
他に方法あるのかなぁ。。
例えば script.aculo.us の Ajax.InPlaceEditor のコールバックとかで普通に書くと encodeURIComponent が UTF-8 エンコードを施すので、サーバ側で Shift_JIS として受け取れません。
new Ajax.InPlaceEditor(e, "/example/modify_text", {
callback: function(f, v) {
return "text=" + encodeURIComponent(v);
},
ajaxOption: {method: "post"}
}
そこで思いついたのが encodeURIComponent を 2回行う方法。これでサーバ側で個別にデコードしてやれば良いです。JavaScript を使って日本語パラメータを送信する必要があるところだけです。
new Ajax.InPlaceEditor(e, "/example/modify_text", {
callback: function(f, v) {
return "double_encoded_text=" + encodeURIComponent(encodeURIComponent(v));
},
ajaxOption: {method: "post"}
}
他に方法あるのかなぁ。。
2008年10月17日金曜日
mod_ktai を試しました
避けてきた携帯3キャリアの絵文字対応をすることになりました。
色々さがして mod_ktai を試しましたが、3つの不満点が・・・
1) 入力のフィルタはしてくれない
2) UTF-8 での閉じるダブルコーテーションが外れるバグ
3) ダブルコーテーションバグを回避しようとして、UTF-8 で提供している他のサービスと分けて、VirtualHost 内に AddOutputFilterByType を記述してみたら、docomo 用のレスポンスヘッダ application/xhtml+xml に反応しないんです。
そこで次のようにタイプを追加したら、docomo 端末でアクセスしても何故か PC 用の絵文字画像に変換されてしまう><
おしい。
色々さがして mod_ktai を試しましたが、3つの不満点が・・・
1) 入力のフィルタはしてくれない
2) UTF-8 での閉じるダブルコーテーションが外れるバグ
3) ダブルコーテーションバグを回避しようとして、UTF-8 で提供している他のサービスと分けて、VirtualHost 内に AddOutputFilterByType を記述してみたら、docomo 用のレスポンスヘッダ application/xhtml+xml に反応しないんです。
そこで次のようにタイプを追加したら、docomo 端末でアクセスしても何故か PC 用の絵文字画像に変換されてしまう><
LoadModule ktai_emoji_module modules/mod_ktai_emoji.so
KtaiEmojiConvertMode auto
KtaiEmojiConvertNativeEmojiDocomo 0
KtaiEmojiEnableAddGuidOn 0
KtaiEmojiHasIconFile 1
KtaiEmojiIconDir /img/emoji
<VirtualHost *:80>
ServerName example.com
AddOutputFilterByType KTAI_EMOJI_OUTPUT_FILTER text/html application/xhtml+xml
</VirtualHost>
おしい。
2008年9月15日月曜日
簡単クラスパス設定 シェルスクリプト
Java のクラスパス、設定するの正直面倒くさいです。そこで少しだけ便利なスクリプトを使っています。使い方はこんな感じ。
指定したディレクトリを走査して jar ファイルだけを環境変数 CLASSPATH に追加します。以下ソースです。
Usage: . classpath.sh (option) [dir]
(option)
-a add CLASSPATH
-r recursive
指定したディレクトリを走査して jar ファイルだけを環境変数 CLASSPATH に追加します。以下ソースです。
#!/bin/sh
if [ -z "$1" ]; then
echo "Usage: . classpath.sh (option) [dir]"
echo "(option)"
echo " -a add CLASSPATH"
echo " -r recursive"
exit 0
fi
_recursive=0
_add=0
dir=
parse_arguments() {
for arg do
case "$arg" in
-r) _recursive=1 ;;
-a) _add=1 ;;
*) dir=$arg ;;
esac
done
}
classpath() {
for i in "$1"/*; do
if [ -d "$i" -a $_recursive -eq 1 ]; then
classpath "$i"
elif [ "${i##*.}" = "jar" ]; then
_classpath=$_classpath:$i
fi
done
}
if [ $_add -eq 1 ]; then
_classpath=$CLASSPATH
if [ -z "$_classpath" ] ; then
_classpath=.
fi
fi
parse_arguments $*
classpath "$dir"
export CLASSPATH=$_classpath
unset _classpath
登録:
投稿 (Atom)