ふたつの川うるおう日記
2007-01-03 (Wed)
2007-01-06 (Sat)
_ [Project] Mozilla Foundation金持ち
- Mozilla Foundation、2005年の売り上げは5290万ドル
- The Mozilla Foundation: Achieving Sustainability
- Mozilla Foundation Documents
- 財務表有り
売り上げの大半の検索エンジンに由来ってFirefoxとかの右上の検索窓提供に対するお金なのかな。Mozilla Foundation Documentsに財務表があって、この検索エンジン関連で5051万ドル分らしい。寄付が49万ドル、利息が57万ドル、支出が817万ドル。金持ちすぎー。
2007-01-09 (Tue)
_ [Java][Ashikunep][Seasar] 1Action 1ActionFormを1Event 1ActionFormへ
以下途中で脈略なくなり、結論としていらないっぽい。
最近FormでSubmitする時にSubmitする前と後で同じもの、StrutsでいうところのActionFormやS2StrutsのPOJO(Dto)、IkushipeでいうところのModelを使うのが使いにくい気がしてきた。StrutsでいうとこのAction単位、Ikushipeでいうところのページ単位でActionFormやModelを持つんじゃなくて、その中のイベントごとにSubmitする前と後を定義できると嬉しいかもしれない(Strutsの場合はS2Struts限定)。特に1画面でいろんなSubmitを使うAjaxなんかで。
- S2Strutsの例
@StrutsAction(name = "posixAccountDto", parameter = "method", validate = false)
public interface LoginAction {
@StrutsActionForward(path = "/user/index.html")
public static final String USER = "USER";
@StrutsActionForward(path = "/user/login.html")
public static final String ERROR = "ERROR";
public String login();
}
を出来るかどうかは別として、
public interface LoginAction {
@StrutsActionForward(path = "/user/index.html")
public static final String USER = "USER";
@StrutsActionForward(path = "/user/login.html")
public static final String ERROR = "ERROR";
@StrutsAction(submitDto = "posixAccountDto", returnDto = "userDto", parameter = "method", validate = false)
public String login();
}
とか。でもS2Sturtsの場合、Actionにgetter用意しとけばそうなるからいらないか・・・。
- Ikushipeの例
@WebPage(model = LoginModel.class)
public class LoginPage {
public Class<UserPage> login(LoginModel loginModel) {
...
return UserPage.class;
}
}
を出来るかどうかは別として、
public class LoginPage {
public Class<UserPage> login(@EventPageModel LoginModel loginModel, @ResultPageModel UserModel userModel) {
...
return UserPage.class;
}
}
@EventPageModelにリクエストパラメータを入って、ページ偏移後のattrに@ResultPageModelの中身が展開される感じ。@EventPageModelもattrに残す。こうなるとそのページで起こりうる複数のイベントを記述できる。ついでに偏移後に使うページに複数のフォームがあるかもしれないのでモデルも複数であっても構わない。
でもこれもS2Strutsみたいにgetterでattrに出せるようにすればいらないか。とりあえずの手段だとattrにセットするsetAttributeってのを作るとか。
@WebPage(model = LoginModel.class)
public class LoginPage {
public Class<UserPage> login(LoginModel loginModel, UserModel userModel) {
...
setAttribute("userModel", userModel);
return UserPage.class;
}
}
_ [Java][Ashikunep] 1Page 1Modelを1Event 複数Modelへ
なんかこういうのが欲しい気がしてきた@Ikushipeの例。
public class UserPage {
public Class<IndexPage> logout(@EventModel UserModel userModel) {
...
return IndexPage.class;
}
public Class<UserPage> submit(@EventModel SubmitModel submitModel, @EventModel UserModel userModel) {
...
return UserPage.class;
}
}
@EventModelがformのパラメータに対応するもの。submitModelとuserModelで同じsetter/getterがあったら両方にパラメータ設定しちゃう。1Page 1Modelにするならこうかな。
@WebPage(model = { LoginModel.class , UserModel.class })
public class UserPage {
public Class<IndexPage> logout(UserModel userModel) {
...
return IndexPage.class;
}
public Class<UserPage> submit(SubmitModel submitModel, UserModel userModel) {
...
return UserPage.class;
}
}
思いつきだからいろいろダメな気 or 他にもっと良いやり方がある気がしないでもない。もっと良く考えよう。
2007-01-17 (Wed)
_ [大学] 所属情報
卒業予定者の論文を見ていると、内容は人のこと言えないので良いとして(_| ̄|○)、指定されているフォーマットに従っていなかったり所属情報が謎なのがかなりある。せめて所属情報は皆同じになるはずなのにいろんなのがあって悲しい。うちの場合なら次の感じだよー。
- 学部まで
- Faculty of ... (改行) ... University
- 学科まで書く
- Department of ... (改行) Faculty of ... (改行) ... University
- 院生
- Graduate School of ... (改行) ... University
改行しない場合は , で区切る。
2007-01-19 (Fri)
_ [大学] 3ware 9650SE-2LP
3wareの9650SE-2LPを確保。でも入れるマシンがまだない。ついでに時期的にもうちょい待ってOSにCentOS 5入れたい。RHEL 5が2月28日にリリースされるという噂なので、CentOS 5は3月中旬ぐらいかな。
それから仮想化環境にXenを使うかOpenVZ使うか。RHEL 5にはXenが付くみたいだけど、リリース頻度とかホスト環境をすべて同じLinux OSにするならOpenVZの方が仕組み的に良い気がしてきてたりします。でももうXenで作っちゃった環境が何個かあるし迷い所。と思ったけど、良く考えたらGFSも使いたいので、その辺考えるとパッケージングされてないOpenVZだとちょっと手間になるかも。
2007-01-25 (Thu)
_ [大学] 某研究室サーバHDDさよなら
いよいよ1週間後に卒業論文発表会です。今頃学部生は必至こいて本論とパワーポイントを書いていることと思います。そんな中、某研究室のサーバのHDDが本日お亡くなりになりました。
んで、そこにどうやら卒論発表会で使うデモ環境が何人分かあったそうで、どうにかならないかヘルプで呼ばれました。見てみたところHDDの電源ユニットが逝かれているようでディスクが回っていませんでした。配線変えてもダメ。
あー、可哀想な学部生…。
一度はそのまま帰ったのですが、そこの研究室の方が新しく途中まで作ってたサーバの設定が判らないと呼ばれまた見に行きました。設定見てみたところ、この熟練度だと1週間後までに前と同環境にするには申し訳ないが無理っぽかったので言っちゃった。「僕が明日までに作ります」と…。
んなわけで今日はお泊り。
まったく前のちょっと特殊なサーバ環境作ったの誰だよーってな話なんだけど、それは僕が4年ぐらい前に作った罠だったり_| ̄|○。
特殊っていってもユーザのホームごとに好きなServlet置けるようにしてあるだけなんだけどね。。あとDBとかいろいろ。
てなわけで、予想外に面倒な手間が発生したけど、このまま普通にやるのもつまんないのでとりあえず64bit CentOS 4.4入れて、lm_sensorsとか監視系も入れてmuninも入れちゃった。
この64bit OSと監視系の充実は次のSeasar用に調達しているサーバでやろうと思っていた内容だったりもする。
2007-01-30 (Tue)
_ [Server][Admin] mod_rewriteを使ったメンテナンス表示
最近メンテナンス表示するのにmod_rewriteでやるようになりました。mod_rewriteでやるとどんなWEBアプリだろうと気にせず接続元絞ったりなどしてメンテナンス表示出来ます。
IP xxx.xxx.xxx.xxxからの接続は通常表示して、他の接続元はすべてメンテナンスページに飛ばす方法はこんな感じ。メンテナンスするアプリの例はApache 2.2のmod_proxy_ajpでTomcatと連携しているWEBアプリ。実質mod_rewriteの部分だけ見ればOK。
<IfModule proxy_ajp_module>
ProxyRequests Off
ProxyPass /context ajp://app02.example.org:8009/context
ProxyPassReverse /context ajp://app02.example.org:8009/context
## for under maintenance
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^xxx\.xxx\.xxx\.xxx$
RewriteRule ^/context/(.*) http://www.example.org/maintenance/ [L,R,NE]
</IfModule>
メンテが終わったらRewrite*の部分をコメントアウトして再起動すればOK。
2007-01-31 (Wed)
_ [大学] 卒論発表会
学部の卒論発表会でした。PDFでだいたい目を通していたので後輩のだけ見ました(笑。一番の見所は教授の質問に対して、(オブラートに包んで)アブストラクトに書いてあると答えた所かな。まぁ基本的なことを質問した教授が知らなかったっぽいけど。
その後、↓のイベントに参加するために出る支度してたら、まだやらないといわれていた仕事の連絡が来て、急遽DBのデータ数百万件移植してました・・・。そのため、↓のイベントに遅刻してしまいました_| ̄|○。
_ [Seasar][Project] Fortify Source Code Analysis Suite
ドン引き勉強会の一貫で、フォーティファイ・ソフトウェア株式会社さんにお邪魔してソースコード脆弱性を分析してくれるFortify Source Code Analysis Suiteのデモを見せていただきました。前半部分遅刻したため見れませんでしたが、一通りの動きは見れました。
まず動きを見た上で、欲しいか欲しくないか?と聞かれたら間違いなく欲しいっと多くの方が即答するぐらい魅力的なものでした。問題は皆さん言っていますが、価格・・・。とりあえず僕にはまず買えない(;´ー`)。
EclipseのPluginになっていて、対象プロジェクトの分析を開始するとコード規模にもよりますがかなりの数の問題を指摘してくれます。対応言語・リソースはC/C++,Java,JSP,C#,VB.NET,PL/SQL,TSQL,XMLと多岐に渡ります。問題の指摘には脆弱性レベルがあり、フレームワークの機能により実際には問題が無くなる内容など、指摘して欲しくない部分もありますが、それらもルールを作って検出されないようにしてくれます。
フレームワークを使う場合は、そのフレームワーク専用のルールを定義しておくことで効率的に検証できそうです。ルールの定義も専用のGUI Builderがあり、結構複雑なルールを作れそうでした。
簡単な例では、リソースの開放忘れ、開放手順の誤り(finallyでしていないとか)、SQL Injectionの可能性の指摘など、とりあえず何も考えずに解析を実行しても即座に嬉しい効果が期待できます。
この製品を使うことで開発者が自分のプログラムのバグの可能性を見つけるだけでなく、たとえば別の会社に外注したプログラムを検品時に出来のレベルを測ることも出来ます。僕の狭い社会経験で知りうる限り、大企業であってもベンチャー企業であっても、出来の良いものは果てしなく良く、逆に出来の悪いものは果てしなく酷いソースコードです。また、同じ会社であっても作る人によってその差もバラバラです。で、納品される側はというと一部を除き大抵ソースコードレベルまで詳しく検証しません。見た目でわかる機能を満たしていればそれでOKです。そんなわけで、検品時に発注会社がFortify Source Code Analysis Suiteで検証すれば最低限の問題点は発見出きるので、それを外注先に知らせるなどして、外注する会社側は一定の品質を確保するためにも持っていると良いと思います。もちろん問題ないものも検出されるものがあるので、外注する側の会社にもある程度のノウハウが必要になりますが、それはプログラムを一から書くことを考えれば少ないんじゃないかなと思います。
ライセンスが高いので、多くの方が使う場合には、コマンドラインで実行可能だったので、例えば定期的にサーバ上でリポジトリからチェックアウトして、実行・レポートを見れる状態にするようにすると嬉しそうです。Sambaプロジェクトなどではbuild farmという各アーキテクチャと環境でコンパイルが上手く出きるかを定期的に実行する仕組みがありますが、それに脆弱性検査も足すイメージです。
_ [Seasar][Project] PigiWiki
manholeさんに教えていただたいたのですが、SeasarWikiのHelpに書かれているPukiWikiの文字列がなぜかPigiWikiに変更されているとのこと(;´ー`)。んで、見てみたら確かになってる。。manholeさんの言われてたように検索しても数件しか出てこないし、スパムってわけでもなさそう。何より一部PukiWikiのままのとこもあり、これは置換じゃなくて手動で置き換えたのかな??とりあえず元に戻しておきました。
[追記] Apacheのログ見たら、更新されたと思われる時間帯に翻訳サービスを使って閲覧したページからPOSTしてるっぽいログがありました。もしかしたらそれが原因かもしれません。




_ manhole [> 翻訳サービスを使って閲覧したページからPOSTしてるっぽい うえええ そんなんでページが書き換わっちゃうのですか..]
_ jfut [自分で書いといてなんですがありえなさそうなんですが、他にその時間帯にPOSTが無かったので、そうじゃなければいたずら..]