Monday, December 31, 2007

12/31/2007

今年一年いろいろご迷惑をおかけしましたが、来年もよろしくお願いします。

Javaプロジェクトの仕事漬けだった一年が終わります。
Javaの技術がついたわけでもなく、ただただ忙しいだけで終わってしまいました。
UML読めないやつのためにエクセルで図を起こしたりして無駄な作業ばかりだった。
無駄に忙しかった。(心が亡びると書いて忙しいと読みます。)

今年の収穫はSpringFrameworkとの出会いでした。
DIとAOPのアイデアには新鮮さを感じました。
人的にはspringframework.jpとの出会いやYAPC::Asiaへの参加がモチベーションを高めてくれました。
・長谷川さんと竹迫さんには感謝

来年はJ2EEとGoFのデザインパターンをマスターし、
ウェブアプリのテスト技法の習得に力を注ぎたいと思います。
で、もう少しPerlでいろいろ遊びたいです。

あと、英語もやんなきゃ。

来年はいい年にしたいな。

Sunday, November 18, 2007

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/" xmlns:os="http://a9.com/-/spec/opensearch/1.1/">
<os:ShortName>Kizasi Serach</os:ShortName>
<os:Description>Kizasi Search</os:Description>
<os:InputEncoding>UTF-8</os:InputEncoding>
<os:Image width="16" height="16">data:image/x-icon;base64,Qk02AwAAAAAAADYAAAAoAAAAEAAAABAAAAABABgAAAAAAAADAADEDgAAxA4AAAAAAAAAAAAA////////////////////////////////////////////////////////////////////////////////////7/L7fZrlNWDVJlfSTXTcpLnr////////////////////////////////////Wn7dAB6+ACO4AB+2ATK9ACi4ABW4ACvGxdPy////////////////////////LlXQfpnge5HbGDrAnLLlZoDXJ1HHYIHWgpndN13Swc/x////////////////p7vtABC4eI/a5Or4IUrGRmzQzNfyDjS+gZ3gABO0KlTGACLD////////////////G07LAC27KVXJepXcEEDCACG5S2zRZYXXPWXOAC+8ADS9ACS6h6Ln////////4ej2a4zj////BzzBAC+8BTG9u8rusMPsWXLRABCzADe/ATe/ADG8Ik/O////////0dryLl3TfJfd3uT3DEDC////M1rLIkPDm6zl////ABu2ADe+ADS9ADXC////////ztfy1d/5gZve////WXvV////IlHHADi/AAmwc4nZj6biACm6ADS9AzbD////////9/n8hqLqydTw6+75n7Pn7/P7xNHw////////RGrPrr/rACS6AC+7OmXW////////////u8zv+Pj85+v5ydPw8vT8sMDrhJ7gCj3BLFjJCDnBADW+AB+8rb7r////////////8vb8kqztnLHk3ub38/b8iqPhy9by////K1fJIVHIAji9F0jP////////////////////3ub7nrTw7fD58PP7j6ficY/bTHLSSnDRKFXIHVHU///+////////////////////////7vP8sMPw6/L/jKbkfJjgY4XbSnPae5nl////////////////////////////////////////6O360dvzxdLvz9n0/v7/////////////////////////////////////////////////////////////////////////////////////</os:Image>
<SearchForm>http://www.kizasi.jp/</SearchForm>
<os:Url type="text/html" method="GET" template="http://kizasi.jp/show.py/detail?kw_expr={searchTerms}&amp;ref=freeword&amp;label=">
</os:Url>
</SearchPlugin>

Saturday, November 10, 2007

IT業界進化論: 絶望する前に”SIer 2.0”を目指せ



IT業界進化論: 絶望する前に”SIer 2.0”を目指せ
かつての姿を”SIer1.0”と呼ぶならば、受託開発という枠から飛び出そうと積極的なアプローチを展開しているSIerは、”SIer2.0”とでも呼ぶべきまったく異なるステージに駆け上っています。 このような流れをみると、IT業界が迎えている変化は確実に良い方向に向かっているのだと私は感じるのです。 きっと、日本のIT業界はもっとエキサイティングになれます。

野村総合研究所はOpenStandia
を提供しているし、どこの企業も受身でいるわけではないだろう。
そういう意味ではSIerとしては結構エキサイティングなのでは?

空気読めないやつにはわからないのかもしれないが。


Powered by ScribeFire.

ニッポンIT業界絶望論

いくつもの関係部署があるから調整しながら開発するため
エンドユーザの要求がそのまま仕様になっていないことが多々あるのは確かです。
でも論旨が乱暴。読んでいて恥ずかしい。



ニッポンIT業界絶望論
だから、あんな生産性の低い、たぶん全産業の中でももっとも生産性が低い部類の、ああいう仕事にとどまることを余儀なくされているのだろう。


お前は生産性をあげるために何かしたのかと。

今までのユーザ企業は実質どうでもいいところまで細かくオーダーメイドで作り込むことを要求しすぎていた。そのくせ、結局ユーザには不評で使われないシステムが量産されていたのだから笑い事ではない。人間の価値観は努力や根性では変わらないから、それが無駄だと気付かせるには外的要因しかない。



Powered by ScribeFire.

Saturday, September 29, 2007

selenium 0.9.2

テストとか - 2007-09-21
captureScreenshot なんてコマンドもいつの間にか追加されてる・・


何?と思い見てみた。

Selenium Remote Control 0.9.2 Released - Selenium Remote Control - Confluence
* New "captureScreenshot" command lets you capture PNG screenshots and save them to disk


後で使い方を確認しておかなければ

標準化

標準化をつくろうとするマネージャあるいは偉い人は管理能力が低かったりします。
標準化を要求するプログラマの多くは技術力が低かったりします。

A Day In The Life 標準化という名の悪魔
標準化、標準化言う前にまともにモノ造りできることの方が遥かに大事なはず。 たとえ標準化できたとしてもそれを導入したからとって失敗プロジェクトが無くなるという保障もないですが・・・。 よく「失敗プロジェクトが多いから標準化したいんだよね」なんて聞きますが、失敗プロジェクトをいくら研究しても標準化なんてできないと思っています。




Powered by ScribeFire.

Saturday, September 08, 2007

第6回 9/7「秋のSpringBatch?祭り」



勉強会 - Japan Springframework User Group

いつもいつも長谷川さんをはじめとしてスタッフの方ありがとうございました。

現時点ではまだまだの感のあるSpring Batchですが、今の時点で技術を習得しておくと
のちのアルファギークになれるかもしれません。大ばけするかもしれないしね。

松原さんの資料はグレートなすばらしい出来です。
本家の資料をしのいでいます。
User Groupへのアップロードを心待ちにしています。

飲み会ではいろいろな方とお話ができて楽しかったです。
家の水道管とガス管つなぐ話は異様に盛り上がりました。
あとRuby( on Rails)を薦める立場に、技術者とマネージャ(営業)の二つのスタンスがある話もね。



Powered by ScribeFire.

Saturday, August 25, 2007

MT4 Conference for Developers



Six Apart - Movable Type 開発者向けカンファレンスのお知らせ【参加無料】

いってきました。
また、MTを触りたくなってきました。
プラグイン作成もおもしろそうだしね。
女性比率が高かったのにはびっくりしたなぁ。
後ろにいたのはチーボウさんだったらしい。

Powered by ScribeFire.

Sunday, August 05, 2007

Google Reader

Google Reader


世間ではRSSリーダーの価値について議論が出ているようですが、
私はRSSリーダーを使っています。
今まではFirefoxのエクステンションSageを使っていましたが、
Google Readerを使ってみようかなと。



Powered by ScribeFire.

Saturday, July 28, 2007

第5回SpringFramework勉強会



勉強会 - Japan Springframework User Group


参加してきました。長谷川さん、スタッフの方々ありがとうございました。
改めてSpring Framworkの奥の深さと、集まった方々の濃いキャラクタに驚かされました。
そして、ぜひともマスターしたい技術であることを再確認しました。
Sesar2もね。

Spring Web Service(松下さん)
・Web Service作成と実行エンジン

Spring Batch
・ジョブネット -&gt; Stage(段階)・
・監視機能、リトライ機能、ステータス管理、階層モデル
・Javaバッチにもオープンソースが来るのか?

Spring Frameworkとスクリプト
・JRuby
・Groovy
・BeanShell
・NetBeansお勧め
・JRubyはAbstractクラスを継承できない。

SpringとJSF
・Spring1にはScopeの概念が無い

Spring.NET
・http://spring-net.jp

Spring SecurityとAJAX
・発音はアシジ
・設定ファイルが難しい
・よくできている
・使うべし!
・判断順序が大事 ログアウト、ログイン、ログインエラー、ログインチェック

Spring 2.1
・JDK 1.6サポート
・Java EE 5サポート

Seasar2
・http://www.seasar.org/
・比嘉さん
・ドキュメント作成中 わかりやすく
・今まではDIを開発者が使うことを意識しなければいけなかった・・・悪くは無いが・・・
・技術はみんなが理解して楽しく使えるもの
・知らない人のために自動化する
・すぐにフィードバックが返ってくる ->モチベーションの維持
・ツールによる生産性向上も必要だけど、人の生産性の向上をあげる必要がある。
・人の生産性をあげるには、必要なのはモチベーションの維持だ。
・そのためにはすばやいフィードバックが必要・・・これがSeasar2ではホットデプロイで提供
・裏にある透明なサービスの提供

飲み会
・生産性を上げるという言い方には2種類ある
・ひとつは技術者からみた生産性向上 これは今まで10かかった仕事を1でやり、残り9で次の技術習得にあてるもの
・もうひとつはマネージメントからみた生産性向上 これは今まで10かかった仕事を1でやるので、残り9の仕事ができるというもの
・JBOSSの中の人、おもしろい!
・Strutsどうなのよ?この先大丈夫?



Powered by ScribeFire.

Saturday, July 14, 2007

#!C:/Perl/bin/perl.exe
# postResults.cgi for Selenium
use strict;
use warnings;
use CGI qw/:standard/;

my $date = localtime;
print header(), start_html(), h1("Selenium results");
print h2("Environment infomation");
foreach my $p (sort keys %ENV) {
print div("$p: $ENV{$p}");
}
print h2("Selenium information");
foreach my $p (param()) {
print h3($p), param($p), "n" unless ($p =~ /^testTable/);
}
print h2("Test Cases");
foreach my $p (param()) {
print h3($p), param($p), "n" if ($p =~ /^testTable/);
}

print end_html();

Sunday, July 01, 2007

Bloggerへのコードの投稿方法

先のエントリでXSLをあげる際に四苦八苦したので、備忘録。

問題は、投稿しても文字がエスケープされてしまったり、許容されないHTMLタグだったりすると削除されてしまうこと。
自分でエスケープしても、さらにそれをエスケープされてしまうこと。

解決方法としては、Google Docs & Spreadsheetsを使いました。

つまり、最初にGoogle Docs & Spreadsheetsにアップロードしておき、Bloggerへ公開させるのです。

これだと、文字がエスケープされません。

google-code-prettify - Google Codeを使って、きれいに表示させたかったのですが、
鰯のテクニカルノート: Blogger でも、コードハイライト してみる。by google-code-prettify
にあるようなコードが改行されない事象が出てしまったので、使ってません。







Powered by ScribeFire.

metrics.xsl for http://metrics.sourceforge.net

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:m="http://metrics.sourceforge.net/2003/Metrics-First-Flat">
<xsl:output method="html"/>
<!--
metrics.xsl
01-JUL-07
metrics XML Style Sheet by Atsushi Sano
<as AT cyberoz DOT NET>
-->
<xsl:template match="/">
<xsl:apply-templates select="m:Metrics" />
</xsl:template>

<xsl:template match="m:Metrics">
<html lang="en">
<head>
<meta http-equiv="Content-Style-Type" content="text/css"></meta>
<title>Metrics Report for <xsl:value-of select="@scope"/> as of <xsl:value-of select="@date"/></title>
<style type="text/css"><![CDATA[
<!--
.bannercell {
border: 0px;
padding: 0px;
}
body {
margin-left: 10;
margin-right: 10;
font:normal 68% verdana,arial,helvetica;
background-color:#FFFFFF;
color:#000000;
}
.a td {
background: #efefef;
}
.b td {
background: #fff;
}
.a_ng td {
background: #efefef;
color:red;
}
.b_ng td {
background: #fff;
color:red;
}
th, td {
text-align: left;
vertical-align: top;
}
th {
font-weight:bold;
background: #ccc;
color: black;
}
table, th, td {
font-size:100%;
border: none
}
table.log tr td, tr th {

}
h2 {
font-weight:bold;
font-size:140%;
margin-bottom: 5;
}
h3 {
font-size:100%;
font-weight:bold;
background: #525D76;
color: white;
text-decoration: none;
padding: 5px;
margin-right: 2px;
margin-left: 2px;
margin-bottom: 0;
}
-->]]></style>
</head>
<body>
<h1><a><xsl:attribute name="name">top</xsl:attribute>Metrics Report for <xsl:value-of select="@scope"/> as of <xsl:value-of select="@date"/></a></h1>
<hr/>
<xsl:apply-templates select="m:Cycle" />
<hr/>
<h1>Metric</h1>
<table>
<thead><tr><th>id</th><th>description</th><th>limit</th><th>Total</th><th>Mean</th><th>Std. Dev.</th><th>Value Max</th><th>count</th><th>count(limit over)</th><th>Source causing Maximum</th><th>method</th></tr></thead>
<tbody>
<xsl:for-each select="m:Metric">
<tr>
<xsl:call-template name="alternated-row"/>
<td><a><xsl:attribute name="href">#<xsl:value-of select="@id" /></xsl:attribute><xsl:value-of select="@id" /></a></td>
<td><xsl:value-of select="@description" /></td>
<td><xsl:value-of select="@max" /></td>
<td>
<xsl:choose>
<xsl:when test="@id='TLOC'">
<xsl:value-of select="m:Value/@value" />
</xsl:when>
<xsl:when test="@id='NOP'">
<xsl:value-of select="m:Value/@value" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="m:Values/@total" />
</xsl:otherwise>
</xsl:choose>
</td>
<td><xsl:value-of select="m:Values/@avg" /></td>
<td><xsl:value-of select="m:Values/@stddev" /></td>
<td><xsl:value-of select="m:Values/@max" /></td>
<td><xsl:value-of select="count(m:Values/m:Value)" /></td>
<td><xsl:if test="boolean(@max)"><xsl:call-template name="alternate-count"><xsl:with-param name="max" select="@max" /></xsl:call-template></xsl:if></td>
<td><xsl:value-of select="m:Values/m:Value[1]/@package" /></td>
<td><xsl:if test="m:Values/m:Value[1]/@package!=m:Values/m:Value[1]/@name"><xsl:value-of select="m:Values/m:Value[1]/@name" /></xsl:if></td>
</tr>
</xsl:for-each>
</tbody>
</table>
<xsl:apply-templates select="m:Metric" />
<hr/>
<div style="font-size:large;font-weight:bold;">Powered by <span style="font-style:italic;">metrics.xsl</span>.</div>
</body></html>
</xsl:template>

<xsl:template match="m:Cycle">
<h1>Cycle</h1>
<table>
<thead><tr><th>name</th><th>nodes</th><th>diameter</th></tr></thead>
<tbody><tr><td><xsl:value-of select="@name"/></td><td><xsl:value-of select="@nodes"/></td><td><xsl:value-of select="@diameter"/></td></tr></tbody></table>
<table><thead><tr><th>Packages</th></tr></thead>
<tbody>
<xsl:for-each select="m:Package">
<tr><td><xsl:value-of select="." /></td></tr>
</xsl:for-each>
</tbody></table>
</xsl:template>

<xsl:template match="m:Metric">
<h1><a><xsl:attribute name="name"><xsl:value-of select="@id" /></xsl:attribute><xsl:value-of select="@id"/></a></h1>
<div><xsl:value-of select="@description"/></div>
<xsl:choose>
<xsl:when test="@id='TLOC'">
<xsl:apply-templates select="m:Value" />
</xsl:when>
<xsl:when test="@id='NOP'">
<xsl:apply-templates select="m:Value" />
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="m:Values" />
</xsl:otherwise>
</xsl:choose>
<a><xsl:attribute name="href">#top</xsl:attribute>back to top</a>
</xsl:template>

<xsl:template match="m:Values">
<h2>Values</h2>
<table>
<xsl:attribute name="summary">values-<xsl:value-of select="../@id"/></xsl:attribute>
<thead><tr><th>per</th><th>total</th><th>avg</th><th>stddev</th><th>max</th></tr></thead>
<tbody><tr>
<td><xsl:value-of select="@per"/></td>
<td><xsl:value-of select="@total"/></td>
<td><xsl:value-of select="@avg"/></td>
<td><xsl:value-of select="@stddev"/></td>
<td><xsl:value-of select="@max"/></td>
</tr></tbody>
</table>
<h2>Value</h2>
<table>
<xsl:attribute name="summary"><xsl:value-of select="../@id"/></xsl:attribute>
<tr><th>name</th><th>source</th><th>package</th><th>value</th></tr>
<xsl:for-each select="m:Value">
<tr>
<xsl:call-template name="alternated-row"/>
<td><xsl:value-of select="@name" /></td><td><xsl:value-of select="@source" /></td><td><xsl:value-of select="@package" /></td><td><xsl:value-of select="@value" /></td></tr>
</xsl:for-each>
</table>
</xsl:template>

<xsl:template match="m:Value">
<h2>Value</h2>
<table>
<tr><th>value</th></tr>
<tr><td><xsl:value-of select="@value" /></td></tr>
</table>
</xsl:template>

<xsl:template name="alternated-row">
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="boolean(@max) and boolean(m:Values/@max) and m:Values/@max&gt;=@max">
<xsl:if test="position() mod 2 = 1">a_ng</xsl:if>
<xsl:if test="position() mod 2 = 0">b_ng</xsl:if>
</xsl:when>
<xsl:when test="boolean(../../@max) and boolean(@value) and @value&gt;=../../@max">
<xsl:if test="position() mod 2 = 1">a_ng</xsl:if>
<xsl:if test="position() mod 2 = 0">b_ng</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:if test="position() mod 2 = 1">a</xsl:if>
<xsl:if test="position() mod 2 = 0">b</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:template>

<xsl:template name="alternate-count">
<xsl:param name="max">dummy</xsl:param>
<xsl:value-of select="count(m:Values/m:Value[@value&gt;=$max])"/>
</xsl:template>

</xsl:stylesheet>

Saturday, June 16, 2007

JSUG勉強会 第4回 6/15「Springframework in JavaOne2007 + Spring MVC & WebFlow」

勉強会 - Japan Springframework User Group



先月に引き続いて参加してきました。

長谷川さん、スタッフの方々、ありがとうございました。



JavaOne2007もSpringMVCも自分にとってタイムリーな話題だったので、

興味深く聞く事ができました。以下自分のためのメモ。



1.河村さんによるJavaOne2007レポート

全般的な話題

  • JavaEE6には触れられず。背景として仕様書に着手した状態だからか?
  • JavaFXに注目が集まる
  • JavaSE6,7に注目が集まる Glassfish
  • JRubyの年でした
  • 各社でのJavaEE5 Application Server対応がのろい
  • ボフ?(座談会)でしたEEについて語られていなかった
  • JavaEE6 Final Release 2008 Q4
  • pruning(仕様削除)により少なくなったAPI
  • GlassfishV3は面白そう
  • EJB3.1 ejb.jarがいらなくなる Web層でsのEJB利用の簡略化


Springの話題



Interface21のマークフィッシャーのブログは要注目




Sunからの各国に対するメッセージ

Thank you-&gt;(和訳)-&gt;元気です(?)





2.チャトールさんによるSpringMVCとSpring Web Flowの説明



Strutsの問題-&gt;依存性が高い

Finite State Machineモデル(有限オートマンモデル)により会話的なやりとりが可能

Spring Web Flowはconversational Scopeをサポート

でも全てをSpring Web Flowでやろうとすると複雑になる(適材適所)

状態や遷移の管理をするのであればSpring Web Flow





3.飲み会

  • 森ビルからは東京タワーが見える
  • 六本木周辺は食事が高い
  • ジャカルタでは危険な場所もあるから注意しよう


おまけ

長谷川さんにSpring 入門にサインをしてもらった。ラッキー。













Powered by ScribeFire.

Sunday, June 10, 2007

ScribeFire

del.icio.usでブックマークはするものの、

なかなかブログは書けません。



ブログを書くのに便利な19 のFirefox拡張機能 - Google Mania | グーグルの便利な使い方



この記事を読んで、ScribFireを導入してみました。

右クリックのコンテキストメニューにメニューが追加されているので、

言及したいページで右クリックしてScribeFireが起動します。

タイトルとページURLを取得して記事Editorに自動的に入れてくれます。



使い勝手は悪くありません。


該当ブログサービスのウェブサイトを尋ねてログインする手間が省けます。


これでブログしない自分とお別れできるといいのですが。







Powered by ScribeFire.

OracleのJDBCドライバのデバッグ

OracleのJDBCドライバのデモプログラムに付属のOracleLog.propertiesによれば、

ojdbc14_g.jarを使うとJDBCドライバによるデバッグが可能になります。

http://www.oracle.com/technology/tech/java/sqlj_jdbc/htdocs/jdbc_faq.htm#32_00





Tomcatでこのデバッグを可能にするには、

Tomcat起動時の引数に、-Toracle.jdbc.Trace=trueを指定します。

WTPをお使いの方は「構成と実行」で指定できます。



つぎのような指定をしました。

&nbsp;-Doracle.jdbc.Trace=true

&nbsp;-Djava.util.logging.config.file=OracleLog.properties

&nbsp;-Doracle.jdbc.LogFile="C:\Documents and Settings\sano\My Documents\jdbc.log"

OracleLog.propertiesはTomcat起動フォルダに入れておきます。



ここまではいいのですが、発行しているSQLが表示できていません。

OracleLog.propertiesの記述方法に問題があるのでしょうか?

デフォルトではだめなのかな?





Powered by ScribeFire.

Sunday, June 03, 2007

Firefox「正常にソフトウェアを更新できませんでした。」の対処方法

Firefoxを2.0.3から2.0.4に更新しました。
すると、制限ユーザでの起動時に、
「正常にソフトウェアを更新できませんでした。」
と、メッセージが表示されるようになってしまいました。

いろいろ検索して次の解決策にたどり着きました。

http://kb.mozillazine.org/Updates_reported_when_running_newest_version

Method 1: Delete active-update.xml, updates.xml and the "updates" folder from both of these locations:

  • The Firefox installation directory, for example, C:\Program Files\Mozilla Firefox [1].
  • (Firefox 2.0.0.2 and later) The corresponding Firefox directory where local application data and settings are stored, depending on your operating system [2]; for example, in Windows XP, C:\Documents and Settings\\Local Settings\Application Data\Mozilla\Firefox\Mozilla Firefox [3].

上記に従い、ファイルを削除したら、起動時のエラーダイアログは表示されなくなりました。

Saturday, June 02, 2007

デフォルトブラウザをFirefoxに

備忘録です。

僕はPCではいつも制限ユーザで作業しています。
これは不用意にPCの設定を更新しないためです。
ブラウザはFirefoxを愛用しているのですが、
HTMLファイルに対応するプログラムが
Internet Explorerから変更できないでいました。

先日、ハードディスク60GBの未使用率が15%を切ったため、
PCをリカバリしました。

で、Firefoxはもちろん、必要なソフト類をインストールした後に、
作業用の制限ユーザを追加しました。

すると、制限ユーザでもHTMLファイルに対応するプログラムがFirefoxに変更できるようになりました。

覚えたことは、
「Windows XPを使うときには、ユーザを追加する前に必要なソフトをインストールしておくこと」
です。
でも、それってなんだかなぁって感じがします。

Saturday, May 12, 2007

springframework勉強会 第3回 5/11「ワークショップで共有しましょう」

http://springframework.jp/index.php?%CA%D9%B6%AF%B2%F1

参加者の皆様ご苦労様でした。
長谷川さん、スタッフの方々、楽しい時間をありがとうございました。

ワークショップにより参加者の共有する問題の最適解を見つけていく作業は楽しい。
以下は自分のためのメモ。

1.問題点の提起
・知らない人にどうやって教える?
・MyEclipse気になるね
・iBATIS最強(?)
・AutoWire最強(?)

2.AutoWireに関する議論
・AutoWire最強!ワイルドカードでBeanをごっそり取ってくる。
・Bean定義の分割方法大事だね。共通は個別に、業務はワイルドカードでごっそり。すっきり!
・ただし、共通のテンプレートクラスにセッターがある場合は効かない。
・layz_initを使うとシングルトンのオブジェクトを起動時に生成しない。
(アプリケーションサーバーの起動が早いよ)
・iBATISは学習コストが低い。Hibernateは覚えるまでが緩やかな双曲線。(しかも下がることもある)

3.ほか
GWT(Google Web Toolkit)はAjaxのウェブアプリケーション作成フレームワーク
AOPで例外処理のハンドリング

4.成果
・インターフェースを使ったパターン抽出
・AutoWireを使用した場合の定義ァイル分割パターン抽出
(詳細はユーザ会Wikiで・・・)

5.飲み会
・Lisp最強!とんがった人はどこかでLispに触れている。
・JavaOneは、かにパーティと化しているらしい。
・JRubyはやりすぎだろ?スクリプト言語はなぁ・・・
・JavaがC++に近づいている。C++にガベージコレクション機能をつけたほうが早いのでは?
・BinaryHack最高!
・Springにより、Javaのプログラミングを知る人が少なくなっている。(なぜ、ニューしなくて動くんですか?)
・人口低下に伴いプログラマも少なくなる。
・将来、プログラミングの仕事はオフショアにほとんどもってかれている。
・でもフレームワーク部分は日本人で押さえたいよね。

Sunday, May 06, 2007

springframeworkとlog4j

簡単ですがlog4jライブラリによるログのとり方の覚書

1.log4jライブラリをWEB-INF/lib/に入れる。

2.アプリケーションのweb.xmlに次のように記述する。


log4jConfigLocation
/WEB-INF/log4j.properties


org.springframework.web.util.Log4jConfigListener



3./WEB-INF/log4j.propertiesに記述する。(下記はjpetstoreにspringframeworkのログを追加したもの)
# For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!
# For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.
log4j.rootLogger=INFO, stdout, logfile

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=${petstore.root}/WEB-INF/petstore.log
log4j.appender.logfile.MaxFileSize=512KB
# Keep three backup files.
log4j.appender.logfile.MaxBackupIndex=3
# Pattern to output: date priority [category] - message
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.logger.org.springframework=INFO

こんな感じです。

以下は失敗談

Eclipseのコンソールには次のようなメッセージが出力されていた。
一行目に気をとられ、二行目に気がつかなかった。

致命的: クラス org.springframework.web.util.Log4jConfigListener のリスナインスタンスにコンテキスト初期化イベントを送信中の例外です
java.lang.NoClassDefFoundError: org/apache/log4j/PropertyConfigurator

二行目はlog4jライブラリが入っていないか、あるいはCLASSPATHに通っていない場合に出力されるメッセージ。

Saturday, May 05, 2007

springmodules

springframeworkを使ったWebアプリケーションの
キャッシュ機能について調査してみた。
というのも、自分で作るほど技術力ないし、作ったとしてもメンテナンスコストが高くつく。

どうやら、springmodulesを使って、
キャッシュプロバイダOSCache、EHCacheなどと組み合わせると
幸せになれそうだ。試してないけど。

http://dev2dev.bea.com/pub/a/2006/05/declarative-caching.html
http://www.gigaspaces.com/JForum/posts/list/139.page

しかしspringmodulesについての記述が少ないのには驚いた。
実績がないのだろうか。
https://springmodules.dev.java.net/

Friday, May 04, 2007

Acme::Louのインストールができない

やりたいのは、ローカルな環境でも「ルー変換」ができるようすること。

つまづいているのは、Acme::Lou-0.03のインストールでのmake testに失敗。

ログを見ると、lou変換かけても「美しい国、日本」が「美しい国、日本」のままのようだ。
メモリ上に展開したルー語辞書のハッシュからルー語が取得できていないようだ。

引き続き作業・・・

つぎのタスクは作業終了済み
・MeCabインストール(0.95)
・MeCab辞書インストール(0.95)
・Text::MeCabインストール(0.16)

日本の祝日

今日は国民の休日みどりの日だそうだ。
wikipediaによれば
http://ja.wikipedia.org/wiki/%E3%81%BF%E3%81%A9%E3%82%8A%E3%81%AE%E6%97%A5

「自然にしたしむとともにその恩恵に感謝し、豊かな心をはぐくむ」ことを趣旨としている。


自分がはじめて覚えた祝祭日は次のとおり。ずいぶん変わったものだ。
今では日にちにはあまり意味がないらしい。
1/1元旦
1/15成人の日
2/11建国記念日
3/22-24春分の日
4/29昭和天皇誕生日
5/3憲法制定日
5/5こどもの日
9/15敬老の日
9/22-24秋分の日
10/10体育の日
11/3文化の日
11/23勤労感謝の日

Monday, April 30, 2007

自分のノートPCで流行のルー語変換を試そうとした。
http://e8y.net/repos/mecab-htmltagcloud/trunk/index.cgi
http://e8y.net/repos/lou_trans/lou.cgi

colinuxのファイルシステムの使用量を確認したところ、
90%をオーバーしていることに気がついた。
ファイルシステムをusr,var,rootに分割し、再度立ち上げたら夕方六時。
なんだかなぁ。

tarの実行時にpadding size zerosとかメッセージが出たので調べてみたけど、
あまり同様の事象はあげられていなかった。
tar でファイルコピーする際、/sysはコピーしなくてもいいようだ。
(確証なし・・・)

debian 4.0では出なかったんだよな。

Sunday, April 15, 2007

Seleniumの実行結果を取得する

Results URLのテキストボックスに次のスクリプト名を指定する。

#!C:/Perl/bin/perl.exe
# postResults.cgi
use strict;
use warnings;
use CGI qw/:standard/;

my $date = localtime;
print header(), start_html(), h1("Selenium results");
print h2("Environment infomation");
foreach my $p (sort keys %ENV) {
print div("$p: $ENV{$p}");
}
print h2("Selenium information");
foreach my $p (param()) {
print h3($p), param($p), "\n" unless ($p =~ /^testTable/);
}
print h2("Test Cases");
foreach my $p (param()) {
print h3($p), param($p), "\n" if ($p =~ /^testTable/);
}

print end_html();

Friday, April 06, 2007

YAPC::Asia 2007 Day2

仕事休んでいったかいあった。
いろいろ刺激を受けました。
DBIx::Classとか、LiveJournalのスケールの話とか、MJDのリファクタリングの話とか。
うー、おなかいっぱい。
消化できるか心配だ。

普通
・普通->最大公約数or最小公倍数?
・perl6は文字列もオブジェクト->Rubyのまね

DBIx::Class
・SQL::Abstract
・Data::pagaer(?),DBIx::Pager(?)
・DBIx::Class::Relataionalship

Asynapse
・REST
・Jiftyのプラグイン
・JavaScriptでファイルの読み書き?
・XUL(ゾールと発音)
・YUI
・my ($a, $b) = (my $c = func(x,y,z));

Pattern in perl
・singleton why use a singleton?
・Class::Singletons
・it is global
・for stateless
・File::Locker
・Is facade design pattern?
・memento
・iterator
・decorator
・Class::Trait
・C/Java クラスを生成することによってPerlの動的な部分を補っている
・CPANの利用によりサポートされる機能

LiveJournalのスケーラビリティ
http://www.danga.com/words/
memcached
perlbal
1->100
RAID->全部書き込みはもったいない、冗長
特効薬はないがやり方はたくさんある
Apacheが生きているか?->OPTIONリクエストを投げて確認
big-ip->mod_proxy->mod_perl->global db->user db
MogileFS->oMgFileS
ジョブ管理?
Gearman::Worker
Gearman::Client
ただし、No Guarantee
TheSchwarz for mail distribute millions of emails per day
djabberd
->デバッグ方法(イベント系のものはデバッグしにくいよね。ケースバイケース)

DBIx::Class
モバイルファクトリーの方
DBIC::from Sledge
_on、_at->日付系のカラム名
http://code.mobfactory.jp/ (?)
Class::C3

Pushmi

Wednesday, April 04, 2007

YAPC::Asia 2007

楽しいカンファレンスでした。
Perl worst placticesが印象的でした。

以下メモ(なんかみんな書いてるっぽいので)

・ソースの再利用->二回目以降の開発に役立つ
・依存性の排除(使いたいモジュールより依存性の解消が手間)
・仮想化Virtualization リソースの最適化
・現行:パッケージの配布->将来:環境の配布
・web service->perl service(plagger as a service)
・EC2 CGレンダリングとか
・フレーバー DBは?ストレージが仮想

VOX
・catalyst + JSON-RPC
・sixapart javascript library
・large scale case of LiveJournal by Brad
・Data::Object(cached,partionary)
・TheSchewartz
・Perlbal
http://code.sixapart.com/
・1st, user->global DB and 2nd, user->user db(DB1/DB2/DB3)

Sunday, March 18, 2007

digg.com

diggにjoinした。
diggというサービスがいまひとつ理解していないが・・・

Saturday, February 10, 2007

Blogging: daily blog posting by feedburner

http://semanticvoid.com/blog/2005/11/27/post-delicious-links-to-blogger-now/

によればfeedburnerによりdel.icio.usの内容をBloggerにポストできるそうだ。早速設定してみた。どうなることやら。

# スクラムマスターを雇う時に聞いてみるとよい47個の質問

  # スクラムマスターを雇う時に聞いてみるとよい47個の質問 スクラムマスターへの質問というPDFがあるので、回答してみた。 定期的に自分の回答がどう変わっていくのか楽しみだ。 Scrum Master Interview Questions: Free Download of...