らどくら通信 |
Web開発ツールその他について、あるいは無関係でも、たうら+うらのの興味がある話題、
あるいは興味がない話題(ないのか!!)、
開発現場の生の声、カスタマーの不倫事件等(ありません)などなどを載せていきます。
あと、文書の更新履歴もこちらです。
|
● 2009/04/12 (sun)
インターネットでPerlの書き方を調べていて、
関数の引数の受け取り方の新しい方法を知りました。
今まで入門本(通称ラマ本)に出ていた「my($var1, $var2) = @_;」
という方法だけと思っていましたが、「my($var1) = shift;」
と@_をshiftする方法もあるのですね。
引数が2つ以上あるときには前者つまり私にとっての従来の方法が分かりやすいとは思いますが、
こんな書き方もあるんだなあと新発見のことでした。
● 2009/02/15 (sun)
2004年頃にStruts1を習得して以来、今までずっとStruts1.2〜1.3を使ってきましたが、
最近やっと決心がついてStruts2 (2.1.6)の習得を始めました。
「Struts2はWebWorkフレームワークを元にしているのでStruts1とは全然違う」との評判でしたが、
基本的な考え方はすんなり理解できました。
(一時期JSF(Java Server Faces)を少しだけかじったので、それとの比較もできたせいかもしれませんが)
今日でまだ2日目ですが、簡単なHelloWorldアプリケーションは既に作れました。
あとは、「Struts1でできたあんなことやこんなことはどうやったらできるんじゃ?」
というのを1つずつ書き出して、解決してはメモしているところです。
● 2009/02/14 (sat)
Struts Scripting(1.3)用のスクリプト言語として、
今までGroovyを使っていろいろ試しましたが、
「必要最小限でいいから、もっとJARが小さい言語処理系はないのか?」
と探していたところ、「BeanShell」というのがあるということで使ってみると、これは便利です。
JARのサイズは140KB台と非常に小さいですし、
Javaとほとんど同じ文法ですぐに動かすことが出来ます。
● 2008/06/13 (fri)
この度初めてWindows 2003 ServerのサーバにApache(HTTP Server)やApache Tomcatをインストールして、
今までUNIXで動かしていたWebアプリケーションを移植して動作を検証しています。
その作業中に今まで知らなかった制限に気づきました。
CGIだのJavaScriptだのは1996年の最初のブームからつついていたはずなんですが、
こんな基本的なことを知らなかったとは?
というのはJavaScriptのwindow.location.href="..."でページを移動すると、
IE6ではReferer(Referrer)がWebサーバに送信されないんですね。
簡単なアクセス制限のためにRefererをチェックする関数を使っていましたが、
移植に合わせて全てのページの動作を検証していると「あれ?効かない?」
というページがいくつかあって気づきました。
● 2008/02/24 (sun)
この冬Java技術の情報集めをさぼっていたところ、
このサイトにも載せているいくつかの話題がいつの間にか大幅なバージョンアップを行っていることに、
ようやく気づきました。
Groovyが1.0から1.5.4に(2007/12/09)、
iText PDFライブラリが1.4.5から2.0.8に(2008/01/25)、
Spring Frameworkが2.0台から2.5.1に(2008/01/09)。
一応これらの最新版はまだJRE 1.4でも動くようです。
一方でJakarta Slideがリタイア(開発中止)との話題もありました。
要注目のソフトウェア、技術が1つの季節を過ぎただけでも増えていくことです。
● 2008/02/11 (mon)
Javaの仕様に詳しい方には今更の話題ですが、
java.util.Stack#iterator()って、
pushした順と逆順(popされる順)ではなくて、pushした順に出てきますね。
どーう考えてもpopされる順に出て来てくれる方が便利だと思うのですが、
仕様ならば仕方ない。
今、職場の業務システムで、画面に過去の検索語の履歴を表示することを考えています。
履歴ならば当然、新しい物が上に出てくるようにしたいので、
Stackを使ってみましたが、
代わりにLinkedListを使ってaddFirst()すれば簡単に解決しました。
● 2008/02/04 (mon)
職場の業務システムは、ここのところずっとServlet/JSP(+Struts)で開発していましたが、
1枚物(キー項目を打って検索⇒2、3の情報項目を入力⇒データベースに保存)
の超短納期&利用者数多くとも数名、という開発依頼が今期相次ぎ、PHPのよさを見直しています。
テキストエディタさえあればどこでも開発できるのと、
設定ファイルのようなものがないので、少し直してもシステム全体に影響を与えにくい
(でぐれしにくい)ため、いろいろな意味で短期開発に向いています。
PHPにもEclipseのプラグインや、Strutsを模したMVCなどのフレームワークが多数出ていますが、
それらを採用してしまうと上記の利点がなくなり、
それらを採用するくらいならServlet/JSPに一本化した方がいいということで、当面考えていません。
● 2007/11/10 (sat)
職場で新しい業務システムを開発するたびに、画面サンプルをHTMLで作るわけですが、
一時期ホームページビルダーを使っていましたが、
今は「テキストエディタ+コマンドラインXSLT」で作っています。
というか、ほとんどHTML手書きで、
各ページのヘッダ、フッタ部をXSLで書いておき、XSLTツール(libxml2のxsltproc)で変換しているだけです。
しかし流行らないですねーXSLT。書き方が冗長すぎるため、
テンプレート記述言語としてかなり人気がないためだと思いますが。
これならWiki等で使われるオリジナル変換ツールをPerlで作ったほうがいいかもしれません。
● 2007/11/03 (sat)
このたび、職場で開発しているシステムで初めてGroovyを使ってみようと思い立ちました。
データベースからのデータの抽出、整形などをバッチ処理でさせるのに、
Javaだと保守性を考えてXMLなどの設定ファイルをいろいろ用意する必要がありますが、
スクリプト言語なら処理本体にそういうものも書き込めるので生産性も保守性もきっとあがるだろうと思ったのです。
Groovyのホームページを見るとあら偶然、
丁度バージョン1.1rc2が昨日(11月2日)公開されたところでした。
今回はとりあえずテストということで、以前から軽くつついていた1.0を配置し、
既に開発済のJavaの処理は簡単に動くことには動いたのですが、
コマンドライン引数argsの解釈がうまくできません。
渡したはずの引数をprintlnで打ち出してみると、1文字目がなんか化けたようになっています。
バグか?バグなんか?
と早速Googleで探してみましたがそんな報告は一切ありません。
数時間悩みましたが原因は何のことはない、
Groovyスクリプトを実行するシェルスクリプトの改行コードがCR+LF(Windows)だったためです。
うむむ、バッチファイルを改造して作るとこういう羽目になるのですな…
● 2007/07/29 (sun)
久しぶりにPHPに触っています。
職場で業務システムの監視・管理システムを作っている方がPHPを使っていろいろ強化を図っている、
ということで、
こうした用途にはJavaのサーブレットなどよりも、
ページ文書を作って置けば再起動など面倒なオペレーションなく運用できるPHPが便利だなあと、
刺激を受けたしだいです。
家PCに入れたまま放置していたPHP 5.1.1の代わりに最新の5.2.3を入れなおしてみます。
PHPの本家サイトでもアナウンスされている通り、
ついにPHP4台のメンテナンスは終わり、今後ユーザははPHP5系への移行が必要になってきています。
またPEARライブラリで非常によく普及していたDBパッケージがdeprecated(旧式扱い非推奨)となり、
これもMDB2パッケージへの移行が必要です。
時代の移り変わりの激しさよ…ついていかないとすぐに情報に遅れてしまいます。
● 2007/07/27 (fri)
Eclipse 3.3はあきらめました。(号泣)
我が家のPC、CPU 1.6GHz、メモリ256MBでは重すぎて動きません。
特にメモリが足りてないようです。
今思うと、「あの時歴史が変わった」と思ったのはEclipse 3.1から3.2になったとき。
メモリの食い方が異常に上がり家PCでは全く使えなくなってしまいました。
これから当分は3.1を使い続けますが、
3.1のコンパイラオプションはJava5までしか対応していません。
Java6の時代にいつまで持つのか若干不安ではあります。
● 2007/07/07 (sat)
Tomcat 6.0とEclipse 3.3をダウンロードして使ってみました。
いよいよJava6/Servlet 2.5/JSP 2.1時代のTomcat、
あまり目立つ新機能はありませんが、久しぶりに開発環境一新ということで、
新たな気持ちでいろいろつついてみたいと思います。
● 2007/05/02 (wed)
現在データベース表をテキストファイルに固定長でアンロードするツールを作っています。
今まで業務システムでCOBOLと連係させるために使っていたアンロードツールが、
製品のバージョンアップによって互換性が怪しくなったようなので、
保険として自分でアンローダを作ってみようと思いました。
言語は何でもいいのですが、
固定長というからにはデータベース表の各列の幅や精度が読み取れないといけません。
そのようなAPIを持つ一番簡単な言語ということでJavaで書いてみました
(java.sql.ResultSetMetaDataで受け取れる)。
固定長のファイル形式は、主に数値列の表現方法でASCIIそのまま、
PACKED DECIMAL、ZONED DECIMAL(UNPACKED)の3種類がありますが、
とりあえず一番簡単なASCIIそのままから。
ASCIIそのままの中でもさらにもっとも簡単な形式は、スケール(小数点以下の桁数)
という概念がありません。例えば0012345670のような数字の並びがあって、
どこが小数点なのかはデータファイル内には表現されておらず、
読み込むCOBOLプログラムが適切に解釈するだけの話です。
この形式で出力したい場合、
JDBCだと、データ型がNUMERIC、DECIMAL、FLOAT、DOUBLEなどの列は、
ResultSet.getBigDecimal()でjava.math.BigDecimalとして受け取れるのでとても楽です。
BigDecimalにはunscaledValue()というメソッドがあって、
例えば12345.67のような小数から、小数点を無視した1234567という整数を返すので、
それを文字列に変換し、精度(precision)の桁になるまで左に0を詰めれば固定長のでき上がり。
不動小数点数のfloatやdoubleしかない場合は、もっと複雑な処理が必要でした。
● 2007/02/11 (sun)
「Ajax」なんて流行り言葉、お堅い企業システムを作っている自分には関係ない。
そう思っていた時期がボクにもありました。(AA略)
それがいつの間にやら、というか今年に入ってからですが、
ちょいちょいとつつくやら、挑戦するはめになってしまいました。
最初に接敵、いやいや、何ですか?
接触せざるを得ないと思ったのは、Googleサジェストというんですか?
入力欄にキーを1文字ずつ打っていくと、選べる候補がだんだん絞り込まれていく、
というアレが、私が職場で作っているシステムでもあったら便利だろう、
というか絶対必要に思われてきたためです。
それで書籍やWebサイトで勉強したり、独学でいろいろ関数化したりして遊んでいるうちに、
(あんまりこういう実装手法についてWebで公開されている事例はないようですが)
仕組が何種類かのパターンに分けられるのではないかと考えるようになりました。
そこは若干込み入るのと、ぜんぜん的外れなことを書いて恥をさらしてはいけないのでもう少し勉強しようと思います…
● 2007/01/23 (tue)
JDK 1.6(aka 6.0) + Tomcat 5.5の環境に移行できたのに気をよくし、
開発環境(IDE)も今ややっぱJava6でしょ、ということで
Eclipse 3.1からEclipse 3.2に移行しようとしました。
後方互換性が必要なライブラリ関係はJ2SE SDK 1.4で、
それ以外のテストはJDK 1.6でという風にコンパイラの使い分けも設定し、
ご機嫌で使い始めてみました。
が、5日ほど使ってすぐに3.1に戻してしまいました。
理由はEclipse 3.2だと頻繁に異常終了するためです。
3.1では全然こんなことはなかったのに…というか、
Javaアプリのくせに飛ぶとは予想だにしませなんだ。
どうもCode Assistを出そうとするタイミングで落ちるようで、
要するに文書を保存しないまま飛んでしまうWordのような状況が、
単なる書類ではなくプログラミングで起きるということです。
幾らJava6対応だろうが、保存しないといつ飛ぶか分からないIDEなんか使えへーん。
今春リリース予定のバージョン3.3を待つしかありません、残念無念。
って、今度は低スペックPCでは起動すらしなくなっても嫌ですが…(おーい)
ただし、最近新しく借り替えた職場PCでは今のところ3.2で飛ぶことはないようで、
PCのスペック、とくにメモリがお大尽な環境だと大丈夫みたいです。
しかし職場のシステムはまだまだ1.4環境なので、ちぐはぐですたい…
● 2007/01/13 (sat)
最近のマイブーム(死語)として、
Jakarta Commons Collections
にはまっています。
なんてマニアックな趣味なんだ、いやいや、
なんて金がかからない趣味なんだ、じゃなーくーて。
きっかけは、正月連休でJavaを話題にした個人サイトや技術系サイトボーッと見ていて、
Webシステムで一度データベースを検索して該当データを一覧表形式で表示した後、
さらに(今度はデータベースを検索しないで)
メモリ上のデータをソートや再絞込み(フィルタ)ができたらベンリなのではなかろーか?
というアイデアが浮かんだからです。
実際のところどーうなんでしょう。ソートやフィルタをブラウザ側で、
つまりクライアント側で、つまりユーザPCのリソースを使ってやるのならサーバに負荷がかからないのでいいのですが、
それをやらせるにはサーバからブラウザに一覧表データを(HTMLではなくて)XMLで送って
JavaScriptでゴリゴリ解析しないといけません。当然サーバ側のJSPなども利用できないですし。
今はまだそれは現実的ではないので、
いわゆるWeb 2.0的に、裏で通信してサーバ側でソートやフィルタを行うことになります。
該当データの一覧をHTMLのTABLE状に表示する際に、
バックエンドに、つまりセッションに、つまりサーバのメモリに、
どういう形で格納するかは幾つかの考え方がありますが、
私の場合は、もっぱら検索専用の一覧の場合には、
ごく簡単にString[]のArrayListで持たせています。
つまり、各行が1つのString[]で、それのListで二次元の表を表現します。
したがって、表をソート/再フィルタするにはセッション上のListをソート/フィルタして、
同じ画面を再表示するだけで実現できます。
Listのソート/フィルタを簡単に実現するのに必要になるのが
Jakarta Commons Collectionsというわけで。
ソートにはComparator、フィルタにはPredicateというインターフェースとその実装クラス一族を活用すれば
OKということで、少しずつ試しているところです。
「将来使うようになるかもしれない」といって、
あまり使いそうにないComparatorを作ったり収集したりしているところです。
● 2007/01/06 (sat)
仕事で開発している業務システムはTomcat 5.0で動かしているので、
開発環境としても今まで5.0を使っていましたが、
Java5そして今やJava6が出るに及んで、このままでは時代に取り残されるとの危機感がつのったため、
冬休みを利用してようやくTomcat 5.5を初めて使ってみました。
ひところバージョン5.5.9というのがかなり長い間リリースされていたと記憶していますが、
いつの間にか既に5.5.20になっていますね。(←何にも知らない人)
ディレクトリ構成などは5.0とあまり変わっておらず、
インストール、設定、動作確認とすんなりできたのでその顛末をメモにして掲載しました。
とにかく驚いたのは起動と停止の早さ。
自宅のPCでログファイルに出力された起動時間で比べると、
5.0が37秒に対して5.5がなんと8秒ということで、
Tomcatに対して軽快さが売りのJettyにも負けない(たぶん)軽快さになったと思います。(たぶん)
ずっと5.5を使っている方からすれば「何を今さら…」状態ですが、
もうホント今さらですが、早めに5.5に移行するしかないしか。
● 2007/01/03 (wed)
昨年から引き継いだ話題の1つに、
Webでデータベース表のメンテナンス画面(いわゆるCRUD処理)
を簡単に作れる汎用的な仕組を作れないかとあれこれやっていました。
それで、SELECT文からUPDATE文を自動生成するなどの処理をいろいろ作っていましたが、
(多分最近ちまたで話題のRuby on Railsなんかはこの辺をやっているんではと思いますが)
汎用的にするということで、
対象のテーブル名や動作設定のオプションをどうやってStruts Actionに渡すかといった部分をまだつついています。
もう1つの考え方で、無理に汎用的にしなくても、基本処理だけJavaで書き、
後は各テーブルごとにStruts Scriptingでスクリプト言語で個別の処理を書いた方が簡単ではなかろうか、
という気もします。
そうそう、Struts Scriptingもメモっておかないと忘れてしまうので簡単ですが載せてみました。
● 2007/01/02 (tue)
Spring - JSF のDelegatingVariableResolverが一部効かない現象は解決しました!
というか、Sun JSF RI 1.1からApache MyFaces 1.1.4に取り替えただけですが…
(なんじゃそりゃ)
とりあえず、これで今年の準備はOKですよ。
ついでに思いついて、昨年一旦挫折したSpring - Struts連係もやってみました。
以前はなぜ挫折したのかすらもう思い出せませんが、Webで資料を探して、
その通りに設定するとすんなり動作が確認できました。
インターネットに感謝しつつ受け売りで恐縮ですがそのメモを私も載せてみました。
最新 2006年 2005年8月〜12月 2005年1月〜7月
Designed and Written by (C) 2002-2007 URANO398.
|