↑日記で日々積み重ねた情報をトップの「わんこのページ」にまとめています。

おのたく日記 [RDF] YouTubeも始めました→



2004-05-03(Mon) この日を編集

J2EEへのパラダイムシフト

IT Pro Java/J2EE : 【連載◎開発現場から時代を眺める by arton】第1回」を読んだ。

わんこは、J2EE特にEJBコンテナは終わったと思っているけど、このコラムは「J2EEへのパラダイムシフト」をうまく誘導できていると思った。

トラックに荷物を満載して皆でリヤカーのように引っ張って

[ 変化の足音が聞こえるか・・J2EEと開発プロセスをめぐるパラダイム・シフトより引用]

という例には笑った。確かに、新しい道具が手に入っても古い様式でプロジェクトを行っている例えとしては、ぴったりかもしれない。

最後の

設計者も,プロジェクト・マネージャも変化のただ中にいるのだ,ということを意識し率先して変化しなければならない。変化への対応とは,1970年代にウォーターフォールを採用し現在に続くIT資産を構築した先人が歩んだ道でもあるのだ

[ 変化の足音が聞こえるか・・J2EEと開発プロセスをめぐるパラダイム・シフトより引用]

というのは、耳に優しいようだけど、「明治維新で文明開化できたんだから、IT開花も出来るはず」という風にも聞こえる。文明開化で電話を使えるようになったような人々も、メイルを使えるようになるものだろうか?

ちょっと横道の道の話だけど、ITの歴史について、まとまっていて良かった。

1968年のダイクストラが起こしたgoto論争

ロイスが1970年に発表したウォーターフォールという開発プロセス

コッドのリレーショナルモデルは1969年

1994年にLinux バージョン1.0がリリース

GoFの『デザインパターン』の初版が1995年

Javaの登場は1995年

1996年にラショナルがUML(0.9)を発表

PMIが最初のPMBOK(注:プロジェクト・マネジメントの知識体系)を発行

マーティン・ファウラーの『リファクタリング』が1997頃に最初の姿を現し(出版は1999年)

JDBCとServletの概念はそれに先立つ1996年

J2EEとなるJavaエンタープライズAPIの発表も1997年

エリック・S・レイモンドの『伽藍とバザール』も1997年

XMLが1997年

SOAPの最初の仕様が1998年

1998年になるとラショナルがRational Unified Process5.0(RUP)を発表

1999年にケント・ベックのJUnitが登場しテスト・ファーストが具体化

1999年にJ2EE のAPI仕様1.0

[ 変化の足音が聞こえるか・・J2EEと開発プロセスをめぐるパラダイム・シフトより引用]

ここで、1995年のJava以前については知らなかったな。EJBの発表は1997年かもしれないけど、J2EEという言葉が出てきたのは1998年のJavaOneでは無かったかな?

ウォーターフォール開発の実装設計以降の工程にTDDを適用するという保守的なアプローチ

続きのIT Pro Java/J2EE : 【連載◎開発現場から時代を眺める by arton】第2回も読んだ。

TDD(Test Driven Developing)の意義を「テストを中心に据えることによるプログラムの品質向上」→「机上での実装設計という工程の不要化(と単体テスト段階の工数削減)」と捉えて説明している。

TDDで、異常系も含めてじっくりとテストしておいて単体テストが、さらっとできるようにして工数を削減するという戦略。

この中で、昔の事を知らずに不思議に思っていた事がいくつか解けた。

COBOLで、ネームスペースがグローバルなもんだから「プログラムで使用する要素の目録化」のために「モジュール名,プロシージャ名,変数名などの記号化された名称(「XA-001-0023Z」のような分類化された名称)を導出」が、されていたのね。

なんか、昔の残骸でよく出てくる「モジュール」って何かと思っていたんだけど、もしかしてCOBOLだと一つのファイルだったりするのか?

さらに実装仕様書は,システムの置き換え時に重要な意味を持つ。実装仕様書さえあれば,ソース・ファイルが散逸しようと,プログラミング言語を変えようと,いつでもソースコードを再作成可能だからだ

[開発現場から時代を眺めるより引用]

オープンソースだったりすると「ソースが命でソース読め」ってことでCVSなどのソース管理ツールが重要だったりするのだけれど、昔の人々がソース管理ツールより仕様書を大切にする理由が分かった。

次の「IT Pro Java/J2EE : 【連載◎開発現場から時代を眺める by arton】第3回」では、TDDを利用する場所として、怪しいミドルを使いトライ・アンド・エラーが必須なオープン系の開発でリスク低減のために、一度動かしてみるTDDが良いとしている。

「実装(=設計)開始前から全体のコード量や不具合摘出件数を見積もることはもはや不可能」という言葉には、ちょっとショッキングだった。

でも、自分でオープン系の開発でも「えいや」ってコード量を算出できているような気がしている。これは、かなり職人的な勘であるというのも確かだけど… 否定するまでもないな。

最後のミドルウェアの更新によりバグが無くなる等して進化するので、常に保守による更新が必要で一度納品したものが、恒久的でないというフレーズは、忘れてはいけないと思う。

個人情報をどうやって守るか?

人情報を保護する=個人情報の漏えいをしない=情報漏えいは内部犯行が多い=社員教育でモラルを高めれば情報漏えいしない

[IT Pro 記者の眼 : どうやって個人情報を守りますか?より引用]

個人情報保護であれば、“出来心を封じるシステム”で十分だけど、会社は「社員は素晴らしいから教育しておけば完璧」「やばい奴はしかればOK」と思っていることが多いんだよね。

複雑だったりして、まもれないルールは、結局ダメなルールなんですけどね〜

この複雑な時代には、ルールが多すぎるのはダメっていうこと。


2005-05-03(Tue) この日を編集

ソフトウェアエンジニアとして…

吉岡さんのblogで、心にとまる言葉あった。

職業的プログラマとして現役を続けるためには、大げさなことを言えば、死ぬまで勉強を続けなければならない。

[日記を書くこととオープンソースソフトウェアに関わることより引用]

そーなんですよね。

飯の食えるソフトウェアエンジニアとしているためには、勉強を日々続ける必要があるんですよね。で、「企業の中の仕事で、勉強が出来るのか」っていうと、怒濤のプロジェクトの中では無理なので、家に帰ってから寝る前にやるしかない。

#で、計算機に向かっている姿は、仕事しているようには見えないので、嫁さんに「夜遅くまで遊んでいるんじゃない」と怒られる。(;_;)

引退したソフトウェアエンジニア

上の続きでは、吉岡さんが面白い発想をしている。

日本という地域で優れた職業的プログラマであり続けるというのは絶望的に難しい。そして35歳で引退する。彼または彼女の経験、知識、ノウハウは引退とともに死蔵される。

--中略--

その経験、知識、ノウハウを個人としてコミュニティに還元していただければどれだけ素晴らしいかと強く思う。

[http://d.hatena.ne.jp/hyoshiok/20050504より引用]

引退して死蔵された経験・知識・ノウハウをコミュニティに還元するのであれば、問題も少ないし良いのではないかと言うアイデア。

このアイデアは、35歳で引退しているのを前提としているが少し悲しいけど、なかなか良い方策だと思う。

#と一瞬おもったけど、引退と言っても企業に属している限り、首は握られてしまっているので、なかなか無理かもな。

正しいソフトウェアを作る方法

さらに次の日の吉岡さんのblogにも心にとまる言葉があった。

「正しくものを作ること」より「正しいものを作ること」のほうがはるかに難しい

[正しいものを作ることと正しくものを作ることより引用]

これには納得。正しくソフトウェアを作るには、ルールを決めて守らせれば良いので、学校の成績が良いお行儀の良い人を集めて作れば良いので簡単だけど、お客様に喜んで貰える正しいソフトウェアを作るというのは本当に大変だ。

どーすれば「正しいもの」を作れるのか?変化を受け入れるのである。仕様を固定するなどということをはじめから考えない

[正しいものを作ることと正しくものを作ることより引用]

この戦略について、 本が紹介されているので、今度よんで見ようと思った。4478374813

やっぱり日々変わるお客様の要望に応えていくためには、仕様は変わると思っていないとならないかなぁ。でも、日本のお客様は、一度手にすると二度と仕様が変わることを望まない。こんな中で、この戦略で行くにはどうしたらよいのだろう?

この辺についての考察を聞いてみたい。


2006-05-03(Wed) この日を編集

なつかしぃ

オプションで80287数値演算コプロセッサが販売されていて、箱を開けると中に80287がそのまま入っていた。80287みたいなDIP(Dual Inline Package)のLSIって、最初はピンがソケット幅よりも広がっている。それで手で取り付けるには、最初に横に寝かせて押し付けて、足の幅を少し狭めておく必要がある。また、取り付け時には、垂直に力をかけるようにしないといけない。そういうコツがあるのだが、これを知らないで装着に失敗して足を折ってしまい数万円をパーにしたユーザーも多数いたらしい

[NEC VALUESTAR G タイプXより引用]

おーそういえば、サイリックスの387とか「安いぞ、早いぞ!」って買ってきて良く挿していたなぁ。

PC-6001のROM&RAMカートリッジで、LSIを挿すのには慣れていたので壊したことは無いけれど…


2008-05-03(Sat) lennyにしたらtomcat5.5が起動できず この日を編集

[Debian]lennyにしたらtomcat5.5が起動できず

調べてみると

May 2 23:40:44 mirara jsvc.exec[11395]: java.lang.NoClassDefFoundError: org/apa

che/commons/logging/LogFactory ^Iat org.apache.catalina.startup.Bootstrap.

t>(Bootstrap.java:54) ^Iat sun.reflect.NativeConstructorAccessorImpl.newInstance

0(Native Method) ^Iat sun.reflect.NativeConstructorAccessorImpl.newInstance(Nati

veConstructorAccessorImpl.java:39)

ということで、/usr/share/java/commons-logging.jarがCLASSPATHに入っていないのが原因らしい。

/etc/init.d/tomcat5.5で

JSVC_CLASSPATH="/usr/share/java/commons-logging.jar:/usr/share/java/commons-daem

on.jar:$CATALINA_HOME/bin/bootstrap.jar"

てな感じにしたら起動できるようになった。

Debian Bug report logs - #477363 tomcat5.5 5.5.26-1 can not start

で、報告されていた。Moshe Gorohovskyさんは、同じパッチを作っていたけど、本当の原因は

MANIFEST.MF in

/usr/share/tomcat5.5/bin/bootstrap.jar, especially:

Class-Path: jmx.jar commons-daemon.jar commons-logging-api-1.1.1.jar tomcat-juli.jar

らしく、ソースリポジトリ上では対策が入れられたそうなので、次のリリースを待つ。


2009-05-03(Sun) 電源ユニット壊れた この日を編集

電源ユニット壊れた

実家から電話があり「PCが起動できなくなった。電源が入らない」と連絡があり、見に行った。

この電源ユニットは、2005年10月11日の日記で買ってきたやつなので、「まだ3年半だし壊れていない筈だけど」と調べてみると、確かにコンセントにつないで主電源を入れるとマザーボードのLEDは転倒するけど、Powerスイッチをいれても、うんともすんとも言わない…

とりあえず、実家から一番近くてPCパーツの買えるPC DEPTに行って新しい電源を買った。

もしかしたら電源ユニットではなくてマザーかもしれないし、その場合にはおうちでも使えるように400Wではなくて500Wのエバーグリーンのパワグリにした。五千円弱なり…


B0018P3OC2

やっぱり壊れていたのは電源ユニットだったようで、パワグリに変えたら、ちゃんと起動するようになって、めでたしめでたし!


2012-05-03(Thu) この日を編集

[Debian] apacheが起動しなくなるlibxm2パッケージが変わった?

Debian upgaradeが続いたので、おうちサーバをリブートしたら、apacheが立ち上がらない

# /etc/init.d/apache2 start

Starting web server: apache2apache2: Syntax error on line 214 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/proxy_html.load: Cannot load /usr/lib/libxml2.so.2 into server: /usr/lib/libxml2.so.2: cannot open shared object file: No such file or directoryAction 'start' failed.

The Apache error log may have more information.

failed!

どうやら、libxml2パッケージの/usr/lib/libxml2.so.2では、/usr/lib/x86_64-linux-gnu/libxml2.so.2に移動されているのだけど、まだ対応できていないらしい。

いくつかのバッケージで引っかかったので

# cd /usr/lib

# ln -s /usr/lib/x86_64-linux-gnu/libxml2.so.2 .

とシンボリックリンクを貼ってしまった。


Google Web検索 on-o.com内を検索