2008年12月26日金曜日

JDeveloper 11g : 埋め込みWebLogicのアプリケーションデプロイ先

どうも、ここらしい…

<Middleware Home>\jdeveloper\system\system11.1.1.0.31.51.88\o.j2ee\drs\00Lab

おそらくJDeveloperのバージョンが変わると、system11.x.x...の部分が変わると思われる。

2008年12月19日金曜日

JDeveloper 11g Update 1

Oracle JDeveloper(11g) (Build 5188)

12/10にリリースされてました...ここんとこ別件で慌しくてJDeveloper触ってないからなぁ。
まだ出たばかりだから、11gでのADF研究はやっておいて損は無いかな。
ちゃんとtrinidadベースになってることだし。

ちなみにダウンロードページのタイトルはBuild 5156ってなってるけど、実際は5188です。
念のため。

ADF、特にJSFをベースにしたADF Facesは従来ViewControllerとModelプロジェクトを作成する、というスタンスだけど、それは11gでも変わらず。
新規プロジェクトで「ADF ViewController プロジェクト」を選ぶとWebフロント部分であるADF Facesのプロジェクトが立ち上がる。

10gより定義ファイルが増えてるなぁ。

ちなみにModelプロジェクトはどうなったかというと、ADF BC(Business Component)を使うかEJBを使うかがプロジェクト作成段階から選べるようになってます。まぁその方がわかりやすいかな。

個人的にはADF BCより EJB3 + JPAのほうがアーキテクチャ的に柔軟だと思うのでそっちを使います。

2008年12月10日水曜日

Native Client by Google

Google Code Blog: Native Client: A Technology for Running Native Code on the Web

Webブラウザでx86バイナリを動作させるらしい。

ActiveXじゃん、と思ったらセキュリティとリソース利用の方法に違いがあるようで。
既にFirefox,Safari, Opera, Chrome用のプラグインが準備されている…
ということは待てよ、IE + ActiveXな環境がついに他のブラウザにも、ってことか。
それはそれで気持ち悪いかも...。

変に制御可能な層が増えてしまうのはあんまり好きじゃないので使いたくない気がします。
# でもActiveXって結局生き残っている罠。便利らしいし。

…誰かJava Appletに光を(w

2008年11月10日月曜日

大工の棟梁

情熱大陸を見た。大工の棟梁宮内寿和さんの回。

宮内寿和(大工棟梁)- 情熱大陸

金具をひとつも使わず、木材だけで家を組み立てるという。
いくつか印象に残る場面があったのだが、その中から特に印象的だったキャプション。
  • 目標は200年もつ家作り
  • 面倒な、手のかかることしか考えない
ソフトウェアや企業システムの設計は良く建築に例えられる(最近はそうでもないのかな)が、
普段システム設計に関わる仕事をしていても、こういう風に考えることが無い。

スケール感が違うというか、なんというか。

建築は有史以前からの人間の叡智の結晶。それだけの歴史と遺産が残されている。
その遺産を基礎にして作成されるものは、とてつもなく高いビルだったり
100年単位でその姿を保つ建築物だったりする。

コンピュータはせいぜい半世紀。その間にものすごいスピードで進化してはいるものの、
まだまだなんだな、と改めて思い知らされたかも。
せめて自分が関わったプロジェクトだけは、
20年後も見られるようにどこかにまとめておこうかな。

2008年10月19日日曜日

OpenOffice 3.0 w/uim でハング

OpenOffice 3.0をインストールしたのだが、文字入力をしようとするとハングしちゃう。
どうも入力系の問題みたいなので検索したらこんな解決策が。
soffice(OpenOffice起動用のスクリプト)に以下の行があるので、これのコメントを外す。

# SAL_NO_XINITTHREADS=true; export SAL_NO_XINITTHREADS

入力できた。わーい。

linux::sound::alsa

オイラのデスクトップはWindowsXPとDebianがデュアルブートになっているわけだけれども、Debian起動時に音が鳴らないことがあって、変だなぁと思っていたわけです。
マザーボードについているVIAのサウンドチップだとイマイチなのでYamahaのチップ搭載のサウンドカードをいれているのですが、どうやらこれが原因みたい。(鳴らない時はスピーカーコードをどちらかに指すと音が鳴るという変な状態になっていた...)

ALSAの設定ツール(alsaconf)を起動したらうまく鳴るようになったけど、
どっちか殺しておくことはできないものかね。

2008年10月18日土曜日

Thread thread = new Thread(Runnable command);

Thread.start(thread);

っていつの間にか使わなくなってた罠。
Java5から付いていけてないという、確たる証拠を晒してしまった系。
ExecutorServiceって..."サービス"って名前は良くないよなぁ。
サービス恐怖症になりつつある俺。

java.util.concurrent.*の訳が従来どおりというか、よりイケてないせいで余計わからなくなった。
いつものとおり?J2SE5.0 虎の穴にて確認しながら気になった部分とか感想を列挙しますー。
まぁ覚書ていどに。
  • Executorインタフェース...Threadの生成を隠蔽するのがキモ。Executor#execute(Runnable command)を実装する人は、その処理を非同期にしたい場合はやっぱりnew Threadする必要がある。
  • Executorの実装内部でRunnableの実行に関してQueueを使って順序を守ったりとか、そういうことが想定されているもよう(javadocに例あり)。
  • Executorsクラス...ユーティリティなので要チェック。
    • #newCachedThreadPool()...いろいろとうまいこと勝手にやってくれるらしい。つまりあやしい。60秒利用されなかったスレッドは削除されますよ。
    • #newFixedThreadPool(int nThreads)...スレッドの数が決まってる。
    • #newSingleThreadExecutor()...単発ワーカスレッドだけどnewFixedThreadPool(1)とは違うらしい。
  • ExecutorServiceインタフェース...スレッドプール用のインタフェース。Executorsで生成できるスレッドプールの実装クラスを受け取るのに利用できるのと、後述のCallableを実行状態にできる&戻り値の受け取りができるのはこの人。
  • ThreadPoolExecutorクラス...設定がいろいろできるExecutor。でもExecutorsからもらえる汎用的なもののほうがあれこれ調整しなくてもフツーに使える。スレッドプールの実装を以前からゴリゴリやってる人にはなじみやすいのかも。
  • ScheduledThreadPoolExecutorクラス...遅延タスク、周期実行用。FIFOらしい。遅延はいつものごとく「実行するよフラグ」が立つだけでいつ実行されるかは保証できない(仕様としてはしなくてよい、が正解かな)らしい。
  • Callableインタフェース...戻り値を返すcallメソッドが定義されている。Runnable#runが戻り値を持ったわけだが、実行はExecutorServiceを通す必要がある。
基本的なところはこんな感じ。あとはキューとかラッチとかスレッド間同期用クラスとか。
カッコいい名前のCyclicBarrierなんてものも。バリアて。小学生以来ですよ、ええ。

そうそう、なんでパラレル処理を見てるかというと。
馬鹿デカいログファイルを細切れにパラで処理したら速いだろうかと思ったわけです。
でももうちょっと面白い使いかたができそうなので、思い付いたらまた書こうと思います。

2008年10月15日水曜日

UMPCとか

、NetBookとか沢山出てるけどいまいちどれがいいか決めきれない。
用途を考えると
  • 会社のPC(w/バッテリーとAC電源)は重いのでその代わりに持ち歩く。1kg削減を目指したい。
  • いつでもどこでもWebアクセス
  • いつでもどこでもプログラミング
Webアクセスは重要。会社のPCの代わりなのだから、アクセスできないと困る。

公衆無線LANサービスが充実していない我が国ではPHSかWillcomかイーモバなんだよなぁ。
携帯プラス二つ目のキャリアを追加するほど余裕は無いわけで...。
DELLではイーモバとの抱き合わせで1万円台(!)で買えるんだが、結果割高な気もするし。

速攻起動など色々考えるとSSDな感じが良いわけだが、いかんせん容量がもっと増えないとどうにも。
あと無線LANがついていてもうちのAirMacが言う事聞かないだだっ子なので相性が問題かな。

誰か、良いヒントをください。

2008年10月3日金曜日

Oracle TopLink 11g

Oracle TopLink 11gがダウンロード可能になってるなぁと。

Oracle TopLink 11.1.1 Downloads

新機能はJPA/SDO/JAXBサポートを含むEclipseLinkのバンドル、Coherenceとの統合、パフォーマンス向上などなど。さて、使い倒せるかなぁー。

oracle.toplink.*パッケージがorg.eclipse.persistence.*に変更されてるって...おいおい。

2008年9月22日月曜日

Participate with Oracle

Oracle 11g, Siebel, PeopleSoft | Oracle, The World's Largest Enterprise Software Company

サンフランシスコでOracle OpenWorldが開催中。
それと並行して、米国のトップページでは"Participate with Oracle"と題してOracleへの意見を募集中。
投稿はOracle Mix(Oracle製品のSNS,社員もいます)に送られます。

2008年9月12日金曜日

俺とメタ

メタデータ。
つまり主たるデータではなく、付随するデータ。これがオイラを悩ませる。
オイラの主たるメタデータ追加作業。
  • iPhotoで写真にコメントを入れる
  • ブログエントリをカテゴライズする、またはカテゴリを作成する
もうこれだけで面倒な作業...。
かといって全てが時系列になっていれば良いかというと、そうでもない。
例えば「自分が写っている写真」という検索をするかもしれない。

色々とうざがっている最中に、以前から考えているある事を思い出した。
実世界のモノにメタデータがあって検索できたら、どんなに楽だろう。
  • 家の中にあるのは解っているのに探しても見つからない
  • 紙の資料整理をしたい
  • いつ買ったか忘れた
こういう時にすごく便利だと思うんだけどなぁ。
そういうモノに対するメタはどうすれば良いかというと、
Excelで表を作っt(ry

2008年8月22日金曜日

のぉー

このブログのGoogle Analyticsのスクリプトがいつの間にか失われていた...テンプレート更新したときにどうにかしちゃったらしい。script埋め込みだとすぐこうなるな...ページ内で編集ポイントを分けられないものだろうか。

down, down, down

スペランカー。久しぶりのクリア。










2週目。緑。鍵が見えない。










調子に乗って3週目(白緑, ジャンプしないと鍵が取れない。当然見えない)まで行ってみた。


2008年8月21日木曜日

i want to build these programs...

これ作りたいリスト。書いておかないと忘れるので。番号はついてるけど思いつきベース。

1. Bookmark同期と整理ツール

どうしても整理できないので。共有用のシステムでないのは、どうしても自分のブックマークをどこか別の場所に置く事がはばかられるため。多分Firefoxの拡張とかを探せばあるんだと思うんだけど...

2. なんかゲーム

もうね、単純でいいんで。Pongでも何でも。平面画像処理と無限ループの監獄に憧れている。数年前から、暇なときはRouge-likeで遊んでたりするのだが。

3. Calendarデータ同期ツール

会社のカレンダーとGoogle Calendarを同期して一元管理する人。会社のカレンダーは仕事のみだがプライベート予定はprivateフラグ立てもしくはblock、Google Calendarはプライベート情報のみだが会社の予定は"仕事中"で、というのが理想。で、入力は基本的に専用GUIクライアントで全てを管理。Invitation対応が出来るので今のところThunderbird + Lightningがベストに見えるが、社内環境的に問題あり。最終的には我が愛機NM705iとSyncしてウマー。

4. ナレッジ共有ツール

社内専用のナレッジ共有ツールとして考案しているもの。実装のイメージはあるけど、実装してない。えへ。既存のナレッジ共有ツールと統合するためにBPEL/ESBが必要になるかもしれない。

5. 番外:ただ単にやりたいこと

大量の紙資料をスキャンして一掃、メタデータと共にHDDの奥深くへ葬る計画。マジでマジで。

2008年8月20日水曜日

現実的なSOA II 2 of 2

(つづき)

エンタープライズ・アプリケーションとしての現実解は現状に対する満足をまず確認しようね?ちゅうところはまぁ、当然のこととして理解できると思う。皆が魔法の杖を探していることも。

じゃあその魔法の杖こそがSOAなんだ!と言えるかどうか。
私の答えは...言ってみれば「びみょう」である。

本来的な意味でのSOAを実践および実感(実感はすごく重要である)できた実例があるとすれば、それはすごく有益なリファレンスになるだろう。SOAという考え方自体はそんなに新しいものではなく、コンセプトや実装は何年も前から存在するはずだが、これが最高のSOAリファレンス・実装モデルだ!と言えるものは出ていないんじゃなかろうか。

話が逸れた。そもそもSOAは手法とか考え方であるとするならば、リファレンス・実装モデルなんか無いとする。各社には各社なり(つまりその会社のもつシステムなりの)SOAがある、それを見つけなさい、ということが命題となるわけで。エンタープライズ・アプリケーションの現実解としてもそうなるだろう。

ではSOAスイート製品ベンダが提供するSOA製品と言われるものはなんなんだろう?

SOAスイートはそれを持っていないエンタープライズ・システムに対する道具箱のようなものである。未導入のシステムに対しては(もちろん相性もあるが)、大抵の場合は役に立つだろうと思う。各種データ連携アダプタやルーティング、データ書式変換などの機能が、スクラッチで作るのではなくあらかじめ作成方法の決められた形で提供されているという利点はあるはずだ。

ただ導入に当たって重要なのは、この製品に合わせてシステムの基礎を変えたりというような、大幅な改変を伴う作業を想像してはいけないということだ。SOAはシステムの乗せ換えではなく、現状のシステムをより効率的に切り盛りするための方法であり、SOAスイートはそれを実践していくための*現実的な*選択肢のひとつなんだと思う。

結論はまぁ月並みだとしても、自分の頭の整理としてつらつらと書いてみたということで。
考えが変わったらまた書き足したり修正する予定。

2008年7月15日火曜日

現実的なSOA? II 1 of 2

じゃあ現実的なSOAって何よ?という話。

SOAが手法や方法論であるとするならば、現実的なSOAとはエンタープライズ・アプリケーションにおける現実的な手法や方法論ということになる。

ここで問題は、じゃあエンタープライズ・アプリケーションの現実解ってなんなのさ?という方向にすべっていくわけだ。

Tobeなところから考えてみる。システムに対する視点はいくつか考えられるので一言では言えないが、やっぱりメンテナンス性が高いだのロジック(ひいては業務プロセス)の組み替えが楽だのミッションクリティカルだのプラットフォーム依存しないだのという、どっかで聞いたような耳タコな表現になっちゃうんだと思う。

Asisなところでは...スパゲッティー的に絡んで状態が依存しあっている、ぐちゃぐちゃなシステムを思い浮かべてみよう。その中でFTPでチェックサムもつけずにファイル連携していたり、レガシーすぎて後継者が居なくなることが目に見えているシステムだったり、特定の人に依存しすぎていて目も当てられない状態だったりするんだろうな、という現場は何度か見て来たからなんとなく解る。

そんな中で現実解ってなんだろう?Asisなシステムに満足がいっているのであればそれが現実解なんじゃなかろうか?満足していないから、将来を見据えてTobeに近づけようとしてSOAの導入を検討している?そんな馬鹿な。だって、今のあなたのシステムはそんなに止まってないでしょう??だとすると今の時点でのシステムもある意味、現実解としてのエンタープライズ・アプリケーションですよね?Tobeに近づけるために沢山人を雇ってなんとかしているし、それでもいいんじゃないかと。

つまり、○○が××だったらいいのに!という叫び声が聞こえてこない限り、私には満足がいっているようにしか見えないんだな。〜だったらいいのに!は道具の発展における原点みたいなものだし、ここにこそエンタープライズ・アプリケーションの解が隠されていると思うわけ。

ただ、それを一気に片付けるような、ガンダルフの魔法の杖は存在しないのも明らかで、そこにこそ皆がIT業界の流行を追いかける理由になっている気がする。いつか自分たちの手元に素敵な魔法の杖が手に入る日がやってくるのだ、と。

(つづく)

2008年7月14日月曜日

現実的なSOA?

現実的なSOAというものを考えてみる。

SOAとはシステム、特に企業で構築・利用されるエンタープライズなシステムに対する手法や方法論であって、システムの実装そのものを指すわけではない。だがベンダーはSOA製品を売り出し、市場に展開している。これは各社が各社なりのSOAを検討した結果、実装として存在するものである。つまり「うちが考えているSOAはこういうものですよ」という意味でのSOA実装なわけである。

だからそれを利用する側に回ってみると、ベンダーの考えたSOAの方式にある程度は従って考え方をまとめていくしか無いわけである。これをSOAではない、と叫ぶ輩もあるだろう。しかし現実として、複雑に絡み合ったシステムをうまく取り回すため、SOA製品ベンダーの提供するSOAスイート製品の機能を利用するのが手っ取り早い方法であることに異論は無いと思う。

不幸なのは、既に「利用する側としてのSOA」が形作られていて、それがベンダーのSOA製品との間に大きなギャップを生み出している場合だ。SOAとは方法であるとするのであれば、その方向性から既に異なっているとなると、ベクトルがねじれの位置にあると言わざるを得ない。この問題が生じていることが解った時点で、「じゃあSOAってなんなのさ」が振り出しに戻るわけである。考えるだけで気が遠くなる。頓挫コールが聞こえてくる。

私もSOA製品ベンダーにつとめている以上は、この問題に対して真剣に取り組む必要があるだろう。正しい回答は...まぁ無いと思うので、私なりに検討した結果をこの場に書き連ねていければと思う。

2008年6月26日木曜日

贈り物

Firefox 3のリリースを祝うために、Internet Explorerの開発チームからケーキが贈られた、という記事。

Microsoft Internet Explorer Team Sends New Cake for Mozilla Firefox 3 Launch

こちらは写真入りのブログ。

IE Sends Mozilla a New Cake for Firefox 3

ウィットに富んでいる、のだろうか。

2008年6月22日日曜日

Firefox3 & ScribeFire

MacのFirefoxを3に上げた。特に問題無し。速い気がする。

で、BlogがBloggerなのでアドオンのScribeFireを使ってみることにした。
このツール、FirefoxでWebブラウジングしていれば好きなタイミングでいきなりブログをエントリできる。新規エントリならF8を押すかアイコンクリック、今見ているページについてブログを書きたければ画面右クリックのコンテキストメニューから起動可能。

エントリを記述している最中はFirefoxの画面が半分に区切られて、対象の内容を確認しながら記述できるのも良いところ。

対応しているブログサイトが限られているので、日本向きでは無いとは思うが...ブログサイトへのログインすら面倒だ、という場合には楽かも。
ちなみに現時点で対応しているブログサイト/エンジンは以下のとおり。
  • WordPress
  • Movable Type
  • Drupal
  • TextPattern
  • Roller
  • MetaWeblog API
  • Blogger
  • Tumblr
これらを使っておられる方はぜひ。

2008年6月21日土曜日

SOA and MDM

コンサルタントとしていくつかのSOA案件に携わって(きて)いるのだが、どうにも腑に落ちない部分がある。どの案件も当初予定の中にMDM、つまりマスタデータ管理に関する観点が落ちている気がする。

インターシステムズジャパンの佐藤さんがこの必要性に関して検討されているエントリを発見したので、この考え方の開始点に関する話はおまかせ。僕もだいたいこんな感じで考えてる。

隠れた財産「SOAとMDM(マスタデータ管理)の関係

確かに全社向けマスタデータを導入するためにシステム全体のオーバーホールは必要だと思うのだが、例えばスモールスタート的なマスタデータ管理もあるんじゃなかろうかと思うわけである。

SOAの導入では、まるごと導入して一気に構築&連携するよりも、スモールスタートで連携できる部分を抽出しながらサービスとして揃えていくという方法もある。そうしないと「サービスの粒度」の地獄が待っていると分かるからだ。
それと同じで、マスタデータ、それもSOA基盤と繋がって全社データを管理するマスタなんてそうそう簡単にできることではない。だからこちらも同じように、スモールスタートなマスタ管理を検討する価値はあるんじゃないかと思うわけ。

もちろん、必ず無ければいけないということでも無い。SOA導入以前の各部門システムに目を向ければ、必要なデータはそれぞれのシステム上に存在している訳だから、あとはそのデータが必要な時に、必要な分だけ取得したり更新したりできれば良いのである。

問題は、そのデータを取得したり更新するのに、どれだけの手間が掛けられるのか?という一点に尽きるはず。ただこればっかりは分析してみないと解らない。
それでもマスタデータを部門システムから共通データとして抽出して、ちょとずつ育てていくプランは一考の価値有りなんじゃないかなと。ましてSOAを軸に耐用年数の高いシステムを作ろう!と思っている場合はなおさら。

あとは関係ない話。

あー、iPod & iTunesのCM、Coldplayがかっこいいなぁー。エフェクトはやりすぎな気がするけど(^^;)

2008年6月16日月曜日

#2 renewal

環境#2(自作PC)の環境をちょっと拡張。
メモリ増設(768MB -> 1.7GB)、HDD載せ換え(40GB+8GB -> 160GB)。
HDDが速くなるとこんなに速くなるんだね、と実感。そしてSCSIドライブとおさらばしたのでより静音に。

しかしこのPC、Windows XPを入れたらまともに起動しない。
何故だろうと原因を探り探りしてたら、マザーボードのBIOSの設定をデフォルトに戻したらちゃんと動いた。そもそもAlbertronのクロックアップ前提マザーボード(つまり危険系)なので、そのへんの設定が影響したのかも。なんか変えたっけ…?色々試してここにたどり着くのに1hも無駄にした…。

Windows XPに80GB割り当てたので、週末のうちに残り半分にDebianか何かを入れてデュアルブート化までを検討していたのだが、XPのカスタマイズとゲームで時間をつぶしてしまったので延期。何してんだか。

2008年6月1日日曜日

Axis2 1.4 Released.

しばらく見ないうちにAxis2の1.4がリリースされてた。

Axis2 1.4 Download

修正された問題の一覧はJIRAに。

ASF JIRA Axis2 Fix for version (1.4)

リリースノート読まにゃ。

2008年5月13日火曜日

くっ…

なぜ米国にいるときに売られていないのだ…

Buy.com
ASUS EeePC 900

2008年5月8日木曜日

課題管理考察

転職先である今の会社に入って、関わり方が異なっても相変わらず開発現場を渡り歩いているわけだが、特に目にしなくなったもののひとつにバグ管理システムが挙げられる。

BugzillaやMantis、TracやJIRAに代表されるオープンソース系プロダクトでは沢山目にしているBug/Issue Trackerも、いざ企業の開発現場に入ると、途端にExcelによる課題とその進捗管理表(票)になってしまって、毎回のように課題管理表はどういう書式で書くのか、という議論(もしくはこれで良いかという確認)になる。なんでそんなに皆Excelが好きなのか良く解らないが、そのような話になる。

勿論このようなことは前職でも頻繁に起きていたため、機会があるごとに管理システムを使いましょう!と推薦してきたわけだが、どうにも受け入れてもらえないことが多く、特別なケースを除いて浸透しなかった、というよりも使われていなかったように記憶している。

それでもまぁ、毎週の進捗会議で課題が見直されることでプロジェクトは回っていた。結局のところ、どういう形であっても課題管理がプロジェクトマネジメントの上で重要な項目として抜けていなければ問題なし、ということなのかもしれない。で、皆がそれを経験するために課題管理とはそういうものだと思ってしまう、と。

では課題やバグ管理用のツールを積極的に活用したらいったいどうなるのか?どうなっていたのか?
どうなるのか、というのは楽になるのか(ならないのか)、と言い換えても良いだろう。

チームが分割され、システムの足回りから業務アプリケーションまで次々に噴出する課題を管理するのは至難の業だ。この場合「管理する」というところがミソで、管理することは解決することとは少し違うように思うのである。

重要なのは、課題を解決するのはチーム構成員であり、それを管理するのはマネージャの役目であるということである。

マネージャは多数のチームが挙げてくる多数の課題管理表の全てに目を通し、技術的もしくは人的および時間的リソース、政治的課題を判別し、技術的な可能不可能とプライオリティと、商売としてのやりくりを考えた上で、すべての課題に対して効果的に対処するための指示を的確に出せているかどうか。または、的確な指示が出せていなくともそういった視点で管理が出来ているかどうか。(無論、課題管理のみがプロジェクトマネジメントでは無いわけで、彼もしくは彼女の仕事の一部に過ぎないことを忘れてはいけない)

プロジェクト自体は、課題の解決が随時行われることで進んでいくだろう。だが、管理が*うまく*出来ているかそうでないかは、プロジェクトの進捗とは別次元で捉えられてしまってはいないだろうか。

Excelでの管理は確かに手軽で便利なものである。だがこれが2枚、3枚と増えていったらどうなるのか。マネージャは本当に、自分の持つ時間のわずか一部を使って全ての課題を管理しきれるだろうか。毎回の印刷で無駄な時間と紙を浪費し、プリンタのジャムに付き合わされるのは一体どこの誰だろうか。毎週送られてくるメール添付ファイルに辟易するのはメールサーバだけだろうか。

大規模プロジェクトでチームが分割され、チームリーダという更なる中間管理職が設定されたとしても、マネージャの課題管理の責任は変わらない。「重大なものだけ自分に報告してくれ」というのはナンセンスである。課題は課題であり、すべての課題が進捗を左右するからだ。全ての課題に目を通す必要は無くなるかもしれないが、それは見えなくなっただけの話に過ぎない。

勿論、これらの問題がIssue/Bug Trackerで全て解決できるとは到底思わない。インストールや設定、カテゴリ作成、ユーザ追加削除などの使い方を覚えたり、ワーカーに報告のやり方をトレーニングしたりガイドを作成したり、果てはDBのバックアップを取らねばならなくなったりと、わずらわしいことこの上ない。だがこのツールの特徴とExcelの特徴を知った上で比較し、体系づけた上で、適材適所な課題管理の手法を確立するのもひとつの手ではないだろうか。

2008年4月27日日曜日

JGroups

最近JBoss Wikiでこんなものを見つけた。以下、JBoss Wiki FAQより
  • Q. How does a JGroups transport protocol decide which address to bind to ?
  • There's two ways in which the bind address can be specified:

    • Using the
      bind.address
      system property
    • Specifying the
      bind_addr
      XML attribute in any of the transport protocols
えーと、つまりバインドするアドレスを特定して利用できるってこと?Oracle BPEL Process ManagerではJGroupsを使って内部通信しているのだが、それに応用できるかなぁ。UDPマルチキャストするためだけのネットワーク組んだりとか?メリットがあんまり見当たらないけど、手当たり次第バインドされるのも何かやだしな…。

2008年4月24日木曜日

Firefox3をFirefox2と並行で使う方法

すげー速いらしい。

本家(日本語)にあった情報
http://www.mozilla-japan.org/products/firefox/beta/

2008年4月19日土曜日

VMware解決

結局明確な理由はわからないまま、仮想NICを2枚にしたら解決。

仮想NICを削除→追加しても、一番最初のやつの自動生成MACアドレスは変わらなかったため
必ず2枚にすることが重要っぽい。
もはやポリシーの問題かもしれないけど、この仕様なんだかな。

あーはまったはまった。
ちなみに仮想NICのMACアドレスは、追加したのちに起動している最中に生成されるようだ。
*.vmxファイルに記録される。

VMware

仕事でVMware上に作った2台のRedHatでOracle Application Serverのクラスタを作ることになったのだが
どうも2台起動していると2台目のネットワークの調子が悪く、クラスタ環境作成どころではない。

2台目を1台目のコピーで作ったのがまずいっぽいんだけど…どうしたものか。

2008年4月3日木曜日

Apache Axis2 Introduction - volume 2

Axis2 Binary DistributionにはJavaコードからWSDLを生成するjava2wsdlと、WSDLからJavaコードを生成するwsdl2javaというコードがある。これがまた曲者。なぜならAxis2はある意味で独自路線を歩んでいるから。

例えば以前(誰かが)作成したWSDLなWebサービスがあるとする。これはひょっとしたらrpc/encodedなやつかもしれない。REST化する前のYahooのWebサービスなど、encodedなメッセージをやり取りするようにWSDLが書かれていると、wsdl2javaは動作しない(Encoded use is not supported、と出力される)。
何故ならAxis2はdocument/literalなWebサービス・メッセージ交換を念頭に置いているからで、rpc/encodedなWebサービスはAxis1.xでやり終えた感があるから、っぽい。つまり現時点での選択肢は
  • rpc/encodedなWebサービスとやりとりしたい:Axis1.xを利用
  • document/literalなWebサービスとやりとりしたい:Axis2を利用
ということになるものと考える。でもAxis1.xのwsdl2javaってdocument/literal対応していた気がするんだよなぁ。

うーん。。。

製品のマイグレーション・パスを考えるうえで、移行の手段は必要だと思うよ?RPCだったWebサービスをAxis2を使うからDocumentなWebサービスに変えてくれってそれは無理があるし。ひょっとしたらAxis2の開発者はAxis1.xからの移行なんて考えてない、のかもしれない。両方使えるし。Axis2はもうRPCは捨てましたと。

WSDLからのWebサービス生成、特によく言われるトップダウンによるWebサービス構築の手法を取る場合、実はこれは問題にならないわけで...。何故ならWSDLを記述する人、つまりWebサービスを設計する人はrpc/encodedかdocument/literalにするのかは自分が決めるうえ、最近はJSR-181とかもそうだけど、WSDLは作られたJavaコードから自動生成するのが素敵。
つまり問題は「既にあるWebサービスへの接続を考える人」の側にあるわけですね。プロキシを作成するのにwsdl2javaを使うとなると、やはり可能性の高い方向全てに対応しているツールである必要があるんじゃなかろうかと。

うーん。。。まぁいいや。
今回、wsdl2javaを試すのに利用したのは楽天の商品検索サービスのSOAP版。

楽天商品検索API(SOAP開発用) (version:2007-10-25)

事前の設定として、JAVA_HOMEとAXIS2_HOMEを設定する。AXIS2_HOMEはBinary Distributionを展開したディレクトリ。
wsdl2java実行!
D:\tmp\rakutenItemSearch>d:\20_software\axis2-1.3\bin\wsdl2java -uri http://api.
rakuten.co.jp/rws/soap/ItemSearch/2007-10-25?wsdl
Using AXIS2_HOME: d:\20_software\axis2-1.3
Using JAVA_HOME: D:\20_software\jdk
Retrieving schema at 'http://api.rakuten.co.jp:80/rws/soap/ItemSearch/2007-10-25
?xsd=1', relative to 'http://api.rakuten.co.jp/rws/soap/ItemSearch/'.
D:\tmp\rakutenItemSearch>

出来たファイルはAntのbuild.xmlと以下のクラスファイル。少ない…
  • ItemSearch20071025ServiceCallbackHandler.java
  • ExceptionException0.java
  • ItemSearch20071025ServiceStub.java
最後のやつなんか400KB超えちゃって不安なので、データバインディング系ソースを展開する形(-uオプション)を有効にして実行してみる。
Ant入れたりするのが面倒なのでEclipseでソース取り込んで使ってみることにしる。以下、動かすまでにやったこと。
  1. Javaプロジェクト作る
  2. 生成されたソースコードのインポート
  3. AXIS2_HOME/lib内のjarファイルをすべて参照
  4. main文のあるクラス作成
  5. 実行
作ったコードはこんな感じ。
サービス実行例ItemSearch20071025ServiceStub stub
= new ItemSearch20071025ServiceStub();

ItemSearchParam param = new ItemSearchParam();
param.setDeveloperId(DEVELOPER_ID); //ユーザ登録後発行されるもの
param.setApiVersion(API_VERSION); //1.11を指定
param.setKeyword("時計");

OperationItemSearch operation = new OperationItemSearch();
operation.setParam(param);
OperationItemSearch1 operation1 = new OperationItemSearch1();
operation1.setOperationItemSearch(operation);

OperationItemSearchResponse0 response0 = stub.operationItemSearch(operation1);

OperationItemSearchResponse response = response0.getOperationItemSearchResponse();
ItemSearchResult result = response.get_return();

System.out.println("Status:" + result.getStatusMsg());
System.out.println("Count:" + result.getCount());
ItemSearchResultItem[] list = result.getItemArray();
//以下出力用コード


で、こっちが実行結果の抜粋。

実行結果Status:
Count:183759
Name:今年のイチオシ!話題のクロックスサンダル登場!■送料無料■crocs【ケイマン】,Price:3990

おおー。出た。

2008年3月27日木曜日

#1 Chandler Server

Thinkpad 380EDを役立てようのコーナー。

Squidはそこそこ使えそうなことは分かった。次にかなりヘビーなヤツを起動してみることにする。その名はChandler。カレンダーやタスク管理が出来る、いわゆるPIMソフト。デスクトップだけでもそこそこ使えるが(メニューは英語だが日本語もオッケー)、サーバもあるんだなぁ。

Chandler Project

で。このChandler、デスクトップ版はPythonとかで作られてるっぽいのですがサーバ版はJava。サーババンドル版なるものをダウンロードすると、Tomcatが一緒にくっついてくる。
早速JDK1.5をダウンロードしてサーバ起動...

すげー待った。

[Catalina] Server startup in 2277606 ms

...やはり最大メモリ64MBでは限界がありんす。ちなみにDBも必要だけどderbyも一緒にくっついているので、JDK以外は必要なし。
とりあえず起動はしたので、これから使ってみます。

2008年3月20日木曜日

Apache Axis2 Introduction - volume 1

はじめに

Apache Axis2 はApache Software Foundationで作成されているWebサービスエンジン。
実装は開発言語により2種類に分かれていて、それぞれAxis2/Java, Axis2/Cと呼ばれている。

先代にあたるAxis1.xはJavaによるSOAPの参照実装扱いがされていて、各種WebアプリケーションサーバのWebサービスエンジンとして活躍した実績がある。だがなぜわざわざ2を作るのか?Axis2のページにこうある。

The new architecture on which Axis2 is based on is more flexible, efficient and configurable in comparison to Axis 1.x architecture.

つまり、より柔軟で使いやすいWebサービスエンジンを提供するのが目的、というわけ。
実際のところそれが達成できているかは怪しいが、とにかく2なのである。
以下、本家が公称している特徴。
  • SOAP1.1 および SOAP1.2をサポート。RESTもオッケー。
  • スピード
  • 少ないメモリで動く
  • 独自のオブジェクトモデルでメッセージ生成を実装
  • ホットデプロイ可
  • 非同期Webサービスを提供可能
  • MEPサポート
  • POJOアノテーション(JSR-181), SpringFrameworkのサポート、EJBサポート
  • その他WS-*のサポートなど多数
XML=オブジェクトバインディングとかは結構独自路線を行っていて、楽しい感じだ。
個人的にはJAX-WSのサポートとEJBサポートに期待していて、その辺りを検証してみたい。

検証環境

色々書いたりやるまえに環境の紹介。
  • 開発環境:Oracle JDeveloper 10.1.3.3 (Linux版, 付属OC4Jを使用)
  • OS : Debian GNU/Linux (etch, Java 1.5.0_05), もしくは Mac OSX(Java 1.5.0_13)
なんかぐちゃぐちゃ。

Axis2のインストールとサーバの立ち上げ

Axis2は配布形式が複数あって、内容が異なる。
  1. Standard Binary Distribution
  2. WAR Distribution
  3. Documents Distribution
  4. Source Distribution
まぁ基本的には1.-3.があれば大丈夫。4.はソースを見たり、デバッグで使う人用と考える。
実は1.には小型のアプリケーションサーバが同梱されていて、特別TomcatやJBossなどを準備しなくてもAxis2が使えるようになっている。

インストールしたディレクトリをAXIS2_HOMEとすると、$AXIS2_HOME/bin/axis2sever.shを実行するとポート8080を開いてサーバ`SimpleAxisServer'が立ち上がる。

ブラウザでlocalhost:8080にアクセスすると、Axis2のデモ用に準備されているVesionサービスが表示される。リンクをクリックするとWSDLを取得することができる。

このサーバはAxis2プロジェクトが独自に実装しているものであるようなので、実際の開発用にはちょっと向かない。なので開発時はWARディストリビューションを使うほうが良いが、ちょっと触ってみたり試す分には良いかもしれない。




最初のWebサービス作成とデプロイ


Axis2を使ってサービスを公開する手順を追ってみる。
以下、Apache Axis2 Quick Start Guideより一部抜粋。
  1. Axis2 Webアプリケーション(WAR Distributionに含まれるaxis2.war)をデプロイして起動を確認する
    Tomcatのデフォルト設定であれば、http://localhost:8080/axis2/でアクセス可能。
  2. サービス用のクラスを作成する。POJOで良い
  3. Axis2のサービス専用アーカイブ(拡張子.aar, 実際はJAR形式)を作成する
  4. Axis2管理ツールを使ってAARファイルをデプロイする
    管理ページの"Tools" -> "Upload service"でファイルを選択してデプロイ。しばらくすると"System Components" -> "Available Service"の一覧に作成したサービスが表示される。サービス名を選択するとWSDLが自動生成で出力される。
キモは手順3。JAR内のMETA-INFディレクトリにservices.xmlという設定ファイルが必要になる。
例えば2で作成したクラスがcom.battella.axis2.services.CalcServiceというクラスだった場合、AAR内のファイルは以下のようになる。

META-INF/manifest.mf
META-INF/services.xml
com/battella/axis2/services/CalcService.class

かんたーん。これ以外にもBinary Distributionに含まれているツールを使うのもありだが、環境整えるのが面倒なのでこれが一番簡単。クライアントはEclipseやJDeveloperなどの開発環境に付属している、WSDLからクライアント生成を行うツールを利用すると良い(本当はもっと色々できるけど)。

services.xmlは特別複雑な設定ファイルではないので、最初はQuickStartGuideにあるものをコピーして使ってもさほど問題は無いはず。今回はこんな感じにしてみた。

services.xml
<?xml version="1.0" encoding="Shift_JIS" ?>
<service name="CalcService" scope="application">
<description>Calculator Service</description>
<messagereceivers>
<messageReceiver
mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
<messageReceiver
mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messagereceivers>
<parameter name="ServiceClass">
com.battella.axis2.services.CalcService
</parameter>
</service>

というわけで、初回のイントロダクションはここまで。
次回はもうちょっと深くやってみようと思う。

sudoers

Debianをインストールした時にsudoを入れていなかったのでインストール。

# apt-get install sudo

設定ファイルsudoersを編集しようとvisudoコマンドを打ったときに
rootのEDITORがnanoになっていることに気がついた。
woodyのデフォルトだということは解っているのだが...変えてなかったらしい。
Debianのコマンドupdate-alternativesを使って変更。

# update-alternatives --config editor

`editor' を提供する 5 個の alternatives があります。

選択肢 alternative
-----------------------------------------------
1 /bin/ed
*+ 2 /bin/nano
3 /usr/bin/nvi
4 /usr/bin/vim.basic
5 /usr/bin/vim.tiny

デフォルト[*] のままにするには Enter、さもなければ選択肢の番号のキーを押してください: 4
`editor' を提供するために `/usr/bin/vim.basic' を使います。
#

ちなみにupdate-alternatives以外にもDebianには便利な管理コマンドが準備されている。
詳しくは下記参照。

Debianリファレンス

知っているのと知らないのでは効率が全然違うと思われ。

2008年3月19日水曜日

Google...

何故かよく解らないが、このブログの設定で「検索エンジンのクロール許可」にしてもGoogle検索でひっかからない。どうしたものか。

2008年3月15日土曜日

Another kernel is built.

新しいカーネルのビルド終了。コンパイルにかかった時間は8時間。
やはり、かなりの時間短縮になった。とはいえ、最近のカーネルはビルドに時間がかかるのぅ...。

axnet_cs.cを再度書き換え、起動中のエラーが無くなったことを確認。
まだ無駄なモジュールがありそうだが、ここからは管理シートを作成してゆっくり作業をすることにしよう。

Linux kernel 2.6.x options for Thinkpad 380ED (Japanese only)

必須カーネルオプションはまだ整理中だが、こうしたほうが良いんじゃないかと思われるものを思いつきでメモることにする。

ファイルシステムに関しては、自分が利用するものを決めてかからないとコンパイルが延々時間を食うため、こういうリソースの限られた環境に対しては決めてかかったほうが良い。
ハード面での制約がきついので、NFSくらいなら入れておいてもいいかもしれない。
ちなみに私はext系しか使わないのでそうすることにした(逆に初回はかなりの時間が無駄になった)。

USBに関しては、380EDを拡張する上ではきっと欠かせないオプションなんだと思われる。
あいにく380ED自体はUSBポートが無いため、PCカードを使ってUSBデバイスを利用する以外に方法が無い。ジュークボックス的使い方をする場合や、外付けディスクを利用する場合には必ず選択肢になる。
ただ、用途が見つからない時は思い切って削ってしまうほうが良いと思う。便利なので猫も杓子もUSBになっていて、ソースもやたら多い。使うことが決まってからカーネルリコンパイルでも遅くはない。

netfilterに関しては入れておいて損は無いと思う。(スペックの問題から)ヘビーユースで使う事は無いにせよ、勉強用のファイアウォールとしては十分機能するはずだ。本筋から外れた話になるが、380EDの用途に関してはそのうち纏めて書こうと思う。今は烏賊が遊んでいる程度。

Bluetoothや無線LAN関係も用途によりけりなので、380EDに対する最小カーネルを目指している今は必要は無い。

ひとまず今晩〜明日までにかけて、menuconfigで整理した設定(1300行くらい稼いだ)でコンパイルをかけようと思う。ファイルシステム、サウンド、USBを外したのでかなり軽くなると思う。

2008年3月14日金曜日

libncurses5-dev

ネットワークが使えると一気にできることが広がる気がするなあ。
ひとまずカーネルコンフィグの見直しをするために、せめてmenuconfigくらいは使えるようになりたい。

# apt-get install libncurses5-dev

で、今まで無いとか言われてたcurses.hをゲット。ああ、これで楽になる。
というより何故こんなことになる前にインストールされていなかったのかが疑問。

Squid 2.6.5-6etch1

そもそもなんでこんなことになったかというと。
Squidを入れて遊ぼうと。そしたらこの烏賊くんがコア吐いて落ちるおちる。
なんだかなぁ、と思って調べたらepoll_create()が無いとかなんとか。
これなに?ってまた調べたら、2.6系カーネルにしか無いっていうんですな。

debianのsquidメンテナがおかしいのか俺がおかしいのか...

で、kernelを2.6に上げたらNICが動かなくなったというわけ。
対処するには再構築しかないと。

下のエントリにあるように成功して今は烏賊くんも元気。
このスペックの割に結構さくさく動作してるんだよなぁ...
まともに設定していないので、設定次第ではもうちょっと高速化できるかも。

beyond the build...

カーネルビルド成功。んでどうなったというと...やりましたー!
とうとうBuffalo LPC-PCM-CLXがkernel 2.6系で動きました。
なので、これまでに実行したことをメモ。
  1. kernel 2.6.24.3をゲット
  2. drivers/net/pcmcia/axnet_cs.cのaxnet_ids[]に以下の行を追加

    PCMCIA_DEVICE_PROD_ID12("MELCO", "LPC-PCM-CLX", 0x00000000, 0x00000000),

  3. make config -> make -> modules_install install
  4. mkinitrdrdでinitrd.imgを作成
  5. grub設定変更
  6. 起動
  7. /etc/pcmcia/configに以下の行を追加

    card "MELCO LPC-PCM-CLX FastEthernet Card"
    version "MELCO","LPC-PCM-CLX"
    bind "axnet_cs"

  8. /etc/init.d/pcmcia restart
  9. ifup eth0
ちょいと問題が。手順2でハッシュ値が解らないのでゼロにしちゃったけど、
これは起動時にエラーが出る。dmesgではこんな感じ。

pcmcia: axnet_cs: invalid hash for product string "MELCO": is 0x0, should be 0x481e0094
pcmcia: see Documentation/pcmcia/devicetable.txt for details
pcmcia: axnet_cs: invalid hash for product string "LPC-PCM-CLX": is 0x0, should be 0xf3a8d51d
pcmcia: see Documentation/pcmcia/devicetable.txt for details

で、指定されているドキュメントを見たら算出方法が書いてあるという...。まぁいいや。
上記のログの直後にeth0が認識されたよーというログが出る。

eth0: Asix AX88790: io 0x300, irq 3, hw_addr 00:16:01:44:0a:bd

いやー、ここまで来るのに丸2日かかりましたよ、ええ。
残った課題は、カーネルオプションの見直しとハッシュの書き換えだな。

make中

やはりmakeのエラーはファイル名の問題だったようで、以下のファイルを大文字込みの名前に変更したらまた走り始めた。
  • net/ipv4/netfilter/ipt_ecn.c -> ipt_ECN.c
  • net/ipv4/netfilter/ipt_tos.c -> ipt_TOS.c
  • net/ipv4/netfilter/ipt_ttl.c -> ipt_TTL.c
  • net/ipv6/netfilter/ip6t_hl.c -> ip6t_HL.c
  • net/netfilter/xt_mark.c -> xt_MARK.c
って、対処しないとか言いつつ対処してるじゃん、という。
なんでこのファイル名が整合が取れていないのかについては不明なまま。そのまま展開してるだけなんだけどな。
他にも出てきそうだなぁ。

2008年3月13日木曜日

No rule to make target...

会社から帰って来たのでコンソールを見てみたら、なんか止まってた。

make[4] : *** No rule to make target `net/ipv4/netfilter/ipt_ECN.c', needed by `net/ipv4/netfilter/ipt_ECN.o'. Stop.

ヽ(`Д´)ノウワァァン

なんかまた大文字小文字問題のような気がしますが...
#ipt_ecn.cならあるけどipt_ECN.cは無いんだよね...

ちなみに直前のオブジェクトファイルが11時くらいに出来ているようなので、まぁここまでくるのにざっと12時間超ってとこですか。どう考えてもかかりすぎなので、この問題には対処せずにfilesystem系オプションとか全部どうにかしてからのほうが早いかな。ちなみに問題のaxnet_csはコンパイル出来ているようす。

make中

かれこれ1時間半くらい経つけどmake終わらず。やっぱり一晩かかるんじゃないかと思い始めて来た。放置でも良いんだが、ほぼフルオプション(使わないものもモジュールにしちゃってるし)結局何時間かかるのか知りたいという面もある。

カーネルオプションについては必要そうなものは大体判明してきた。dmesgとlsmodを見ながら、前のエントリのリンク先にあるハードウェアスペックと比較する作業。地味。そういえば以前断念した赤外線ポート、使えるようにならないかなぁ。

2008年3月12日水曜日

make中

make中なり。
menuconfigを実行しようとしたらcurses.hが無いとか言われた。oldconfigしかできない...ろくに使いもしないオプションをNで飛ばしまくり。

patchですが、ハッシュ値をどうしたら良いか解らなかったのでひとまずゼロで。あとで確認して、再度ビルド...道のりは長い。
それまでの間に、カーネルオプションを見直すことにする。
スペックが確認できるサイトはあるので、先達の遺産を見ながらチェックの予定。

参考にしているサイト
しかし、結構こんな環境で遊んでる人もいるもんだな...。

mount -o norock

ぬー、やってしまった。
MacBookで解凍して作成したkernelのソースディスクを#1にコピーする時に-o norockオプションを付け忘れた。Makefileがmakefileになっちゃったりしてコピーしなおし...。

あと気がついたこと。Thinkpad 380EDのCD-ROMドライブの調子が悪い。EJECTボタン押してもカチカチしてるだけでトレイが出てこない。爪でサポート。

Buffalo LPC-PCM-CLX pcmcia ethernet card

Thinkpad 380EDにタイトル通りのカードをさして使っていたが、Debianをsargeからetchに上げたのち、kernelを2.6系にしたら認識されなくなってしまった。どうもaxnet_csドライバを指定しても、カードがそれだと認識されていないっぽい。axnet_cs.cをみるとCoregaのカードとかはあるのだがmelcoはLPC3-TXのみ。これではいかん気がするのでpatchあてなきゃなぁ、、、ネットワークがからきし使えないので、手元のMacBookでダウンロードしてCD焼き。これからpatchあててビルド。乞うご期待。