« 2007年06月 | メイン | 2007年08月 »

2007年07月 アーカイブ

2007年07月02日

ファイル名を指定して実行でコントロールパネルを呼び出す

calcだと電卓

commandだとコマンドプロンプト

ここまではよく使う(?)ものではないだろうか?

コントロールパネルの呼び出しもファイル名を指定して実行ダイアログでできる。

http://www.atmarkit.co.jp/fwin2k/win2ktips/585cplcmd/cplcmd.html

タブの順番を制御する

クライアントサーバーシステムでは当たり前のタブの順番制御。

とあるお客さんからシステムを使ってみた感想としてタブの順番をなんとかできないかとのこと

もちろんIE限定になってしまうがtabindexという属性を与えておけば制御できることはその場で思いついた。 しかしIE仕様におんぶに抱っこは非常に危険なので持ち帰って検討しますとその場は逃れた。

で、家かえって試したらもはやFirefoxでも対応していた。実際に使っているシステムなんてあまりないだろうが、 CSシステムになれた人がWebアプリに移ると必ず感じる不満点がタブの順番のいい加減さなので、 時間に余裕があれば対応してあげたいところ。

 

2007年07月11日

WindowsとLinuxインストールが早いのはどっち

Windowsはハードウェアの認識はLinuxに比べると容易だがインストール後のセキュリティパッチあてがひどいものでSP2適用済みにもかかわらずその後81個ものセキュリティパッチを当てさせられて本体インストールに1時間としてもパッチあてにも同じぐらい時間がかかる。

一方Linuxはハードウェアの認識が自動でされないと結構面倒だが、比較的古いシステムにインストールを行うとすべて自動認識されインストール後のパッチ当てもWindows程ひどくはない。とくにサーバー用途でXを入れない場合は10分でインストールが終わる。

というわけでLinuxの圧勝。

2007年07月13日

StrutsのActionがスレッドセーフでない証拠

検索キーワードを見ていると相変わらずStrutsのActionがスレッドセーフであるか否かを探していると見られるものが多い。

最近出たStruts2は知らんが、Struts1.x系においては一度作ったActionインスタンスはアプリケーションサーバー(Tomcat等)を再起動するまではずーとプールされる。

ためしにこんなコードをActionクラスのexecuteに入れてみれば一発だ。

System.out.println(this.hashCode());

なんどリロードしてもハッシュコードは一緒。つまり同一インスタンスなので読取専用以外のフィールドは持たせないほうがよいということになる。ユーザー固有の情報(たとえばHttpSessionなど)をフィールドにもたせてActionクラスを作ってしまうと自分一人のテストでは問題が発覚しなくても、結合テスト時などの複数人同時に利用したときに問題が発覚して大慌てになるので注意。

Actionがスレッドセーフでない理由はパフォーマンス的にリクエスト毎にActionをnewするのはよろしくないという設計者の思想があるからしょうがない。

ActionをスレッドセーフにするためにSpringなどのDIコンテナを利用してActionインスタンスをリクエスト固有で生成するようにしていたやり方もある。

Ubuntu Linux をインストールした

デスクトップLinuxで最近赤丸急上昇なUbuntu

日本語ローカライズバージョンを4時間掛けてダウンロードしてインストール。

ちなみにそのまま1CDLinuxとしても使えるし、そのあとインストールすることもできる。 でも1CDLinuxの立ち上がりが遅いので直接インストールできる方法をあとで調べておこう。

ちなみにMBRにブートローダーを勝手に入れてしまうのが唯一の欠点か?

(注)インストールの最終ステップでgrubのインストール先を指定できることを発見した。

いままでのデスクトップLinuxと違い漢字入力モードの切り替えがwindowsと同じキーでできるようだ。 まだ使いこなしてないのでこれからこまめにレポートしていこうと思う。

ちなみにDebianベースではあるがまったくその面影を感じないほどである。

2007年07月18日

Linuxで無線LANの敷居が下がった!

一昔前はWindowsのドライバを利用するndiswrapperを使わなければLinuxで無線LANを使うのは困難だった。

かつてndiswapperのインストールに挑戦したが、コンパイルエラーなどがでてそれでもうあきらめてしまっていた。

しかし最近になって状況が一変した。カーネル2.6.17あたりから主要な無線チップのドライバーが組み込まれてるようになったのだ。

ただしファームウェアなどがライセンス上100% フリーではないのが原因なのかファームウェアの組み込みは自分で行う必要がある場合もある。

自分の無線はCF-R3組込みはipw2200というインテルCentrinoの無線なので割とメジャーかな。 でこいつの場合はUbuntu7.0.4の日本語版を利用する限りにおいてはなんとそのまま設定さえすれば利用できる。

3連休のうち2日は台風で家に篭っていたのでLinuxで無線LANを成功させるまでは家からでない(!?) 意気込みでいろいろなディストリビューションでためしてみた。

わざわざインストール場合失敗したときが癪なので、1CDLinuxでやってみたところ見事連続成功。 後日個別Linuxごとの設定をまとめるとしよう。

いきなりブルーバックがきたらバックアップを

悲劇は突然やってくるやもしれない。

運がよければ再起動で立ち上がってくるが、運が悪ければ別のマシンにつないでデータの救出を図ったことも

でもって今日Let's Note CF-R3でいきなりブルースクリーンで落ちた。 前回同じ状態に陥った直後に起動不能に陥ったが今回は上がってきたので急いでバックアップ。 どうもタッチパッドのドライバーが悪さをしているようだが・・・

2007年07月19日

Virtual PC 2007 でた!

仮想技術としてはVMwareと双璧をなす存在のVirtualPC

すでに無料化されて久しいが、新バージョンが出ているようだ。まだ日本語ページが準備中なので2007はでたてのほやほや

実は自分が仮想マシン技術にはじめて触れたのがVirtualPC2004の体験版だったわけで、 それ以来VMWarePlayerに浮気してしまったが、久々にインストールしてみることにしよう。

NoClassDefFoundErrorの原因を探る

本番環境にUPする時など環境が変わったときに遭遇しやすいこのエラー

開発時は問題なかったのにいざ本番で出るとびびる上にだいたいそういう時はテンパリモード1000% なので冷静な判断ができないだろう。

しかし結局のところクラスパスの設定が間違っているというのがほとんどなのでクラスパスを列挙させてみるといい。 たとえばjspなら以下のコードを入れてみる。

<%
//クラスパス表示
String classpath = System.getProperty("java.class.path");
java.util.StringTokenizer st = new java.util.StringTokenizer(classpath,";");
while (st.hasMoreTokens()){
out.println(st.nextToken() + "<br>");
}

%>

そしてきちんと動く環境のクラスパスと比較してみる。 クラスパスがまったく一緒なのに動かない場合はJARファイルなどのライブラリがきちんと存在しているか? コンパイル環境ではコンパイルエラーとなるので気づくが、実行環境ではクラスをロードするときまでエラーが出ないので厄介だ。

たいていの場合において開発環境にはたくさんJARファイルが入っていてどれがどれに依存しているかわからなくなって、 必要なJARを本番環境にコピーし忘れてこのエラーに遭遇するというケースも多い。

 

2007年07月20日

UbuntuにOracle Express Editionを入れる

UbuntuはDebianベースなのでDebianのパッケージ管理aptでOracle無償版のExpressEditionを利用できる。

結構インストールはいろいろなLinuxで試したのだが、Debianが一番楽なのは確実にいえる

しかしDebianといえばインストールや運用が大変というイメージがある人も多いのでは(実際は昔に比べれば楽勝なのだが)

その場合はUbuntuLinuxで入れてみるといいだろう。

http://www.rutake.com/wiki/DB/Oracle/ExpressEdition/#g080d2dc

インストールばっかりでその後の運用についての記載が一切ないのでこれからがんばります。

unbreakable linux に注目

Oracleが出すRedHatEnterpriseLinuxクローン

それがunbreakable linux

unbreakable linuxのサポートコストはRedHatEnterpriseの半分になるとの挑戦的なコピーでOracleとRedHatの関係は冷え込んだようだが、実験用途としてはOracleが出しているぐらいだからOracleインストールの基盤としてunbreakable Linuxを選択するのもありかもしれない。バイナリはフリーで配布されている。

サポートでお金を取るってことだ

DNSなしでNameVirtualHostの設定を確認する

ドメイン名によってドキュメントルートを切替えるApacheのNameVirtualHost

レンタルサーバーなどではよく使われている手法である。これで問題となるのがテストしたいときにDNS登録されていないとhttpd.conf一番上にある設定が使われてしまうことである。

普通はDNSに登録されているものだが、既存で動いているサイトの設定変更のテストなどをやりたい場合にわざわざDNSを書き換えることなどできないだろう。そんな時に役立つテクニックを紹介する。

答えは簡単で、windowsでもlinuxでもデフォルトではhostsファイルの設定がDNSより優先されるのでhostsファイルに書き換えればいいのだ。

#LAN内からNameVirtualHostの設定を確認する
192.168.x.x www.myserver.com
192.168.x.x www2.myserver.com
192.168.x.x www.hoge.com

こんな感じでNameVirtualHostのServerNameに設定したドメインをIPと対応させればいいだろう。なおDNSはキャッシュされるので(特にWindowsはすぐに反映されない)すぐに変わらないからといって失敗と決め込んではいけない。

自分がレンタルサーバーを利用していてIPアドレスで打ち込んだときとドメイン名で打ち込んだときに違うドキュメントが表示されたらそれはNameVirtualHostの設定で共有されていると考えていい。

Linux同士のSSH公開鍵認証ログイン

puttyとLinuxの連携は普段よく使っているが、LinuxからLinuxに公開鍵認証でログインしたことはほとんどなかったが、先週からLinuxで無線LANが利用できるようになったのでWindowsを捨てるべくLinuxデスクトップ環境で生きている(ほぼ80%)

で現状自宅メインサーバーはセキュリティ対策の為SSHログインは公開鍵認証しか許可していないのだが、Gnomeターミナルで公開鍵認証にチャレンジしてみた。

SSHクライアントが動くサーバーA
公開鍵認証を利用してログインされるサーバーB

まずはサーバーAのログインしたいユーザーのホームディレクトリで以下のコマンドを実行

ssh-keygen -t rsa

ユーザーディレクトリの.ssh/id_rsa(秘密鍵)と.ssh/id_rsa.pub(公開鍵)が作成される。公開鍵をログインしたいサーバーBに送る(SCPなりFTPなり)

ここからサーバーB側作業に移る。
公開鍵はログインさせたいユーザーの.ssh/authorized_keysに公開鍵を追記すればいい。

cat id_rsa.pub >> .ssh/authorized_keys
上記のコマンドでauthorized_keysがなければ新規作成、あれば追記される。なおこのauthorized_keysのパーミッションは600にしておかなければ公開鍵認証は失敗する。

でこれでうまくいくと思ったらデスクトップLinuxの本命として絶賛利用中のUbuntuLinuxからうまくいかない!!なんで?だいたいパスフレーズを聞いてこないのがおかしい。

しょうがない本命候補はもうひとつVineLinuxがあるさ。というわけでこちらで実行したところ即うまくいった。Ubuntuで公開鍵認証がうまくいかない理由がさっぱり見当つかないが継続調査。

普通のLinuxなら上記の手順で公開鍵認証でログインができる。公開鍵認証でログインできるようになったら、セキュリティ対策の為パスワード認証はNGにしておこう。

Blogpingサーバーを設定する

この技術メモかつては結構アクセスがあったのだが、サーバー移行のどたどたとドメイン消失で検索サーバーからクロールされなくなってしまった。

さらにいうとMT3.2の頃はデフォルトでblogpingサーバーが設定されていたはずなのだが、3.3からは設定メニューからも消えた(非常にわかりづらい操作をしないと設定できないので消えたも同然)

せっかく技術情報を書いていてもアクセスがないと面白くないし、どんな検索キーワードできていてそれに対して答えを出せているかというのも気になるのでやはり更新は通知すべきだろう。

というわけでBlog pingサーバーの設定方法

デフォルトでは環境設定の中にある設定メニューをクリックすると右上のほうに大変小さく「詳細設定へ切り替え」というのがある。その詳細設定に切り替えて新規投稿タブをクリックするとblogpingサーバーを入れるテキストエリアが下のほうに現れる筈だ。

Blog pingサーバーを設定することにより新規エントリーを投稿する時にパフォーマンスが落ちるが、たいしたことはないはず。あまりにひどいようなら有名どころだけに絞るべし。

http://api.my.yahoo.co.jp/RPC2
http://blogsearch.google.co.jp/ping/RPC2
http://blog.goo.ne.jp/XMLRPC
http://rpc.technorati.jp/rpc/ping
http://ping.ask.jp/xmlrpc.m
http://www.blogpeople.net/servlet/weblogUpdates
http://ping.rss.drecom.jp/
http://ping.bloggers.jp/rpc/
http://rpc.reader.livedoor.com/ping

2007年07月21日

Windowsで複数のバージョンのJDKをインストールする

JDKはすでに6.0が出ているというのに、いまだアプリケーションサーバー各種での採用があまりなく(特に商用)利用例が少ないのが実情ではないだろうか?

各いう自分も今やっているプロジェクトはJDK1.4系である。しかしTomcatなどのオープンソースプロダクトの最新版はもうJDK5.x以上しかサポートしていない。というわけで複数の別バージョンのJDKを入れるというニーズもあるだろうからそのやり方を書いておく。

Linuxと違いJDKのWindows版はインストーラーしかない。しかしデフォルトではバージョン名がフルに入ったディレクトリにインストールされるので別バージョンを入れたとしても上書きされるような事態にはならない。なので後は使うアプリケーションごとにJAVA_HOMEの値を切り替えて置けばよい。

Linuxではアーカイブ版があるので違ったディレクトリに解凍し、こちらも環境変数の値を使うバージョンにあわせて設定すれば共存ができる。

ちなみになんでJDK6を入れたかというとTomcat6を試してみたかったからなのである。

2007年07月23日

Ubuntu Linuxで無線LAN環境構築 ipw2200 編

前回さまざまなLinuxで無線LANを試したと述べた。

今回はその中で一番導入のハードルが低かったUbuntu Linuxについて取り上げることにしよう。

まずバージョンはUbuntu7.0.4デスクトップ版かつ日本語ローカライズ版を利用した。日本語ローカライズ版に関してはミラーサイトが見つからなくって、ダウンロードに4時間ほどかかってしまった。

そして対象無線機器だが、これはチップ毎に取り上げてみることにする。今回実際に使ったマシンはLet's Note CF-R3である。

まず起動すると無線機器の認識がされているはずである

dmesg | grep ipw2200

エラーが出ていなければOK

その後はESSIDとWEPキー(とインデックス)を設定するだけ

sudo iwconfig eth1 essid ESSID
sudo iwconfig eth1 key restricted s:キー [キーのインデックス] key [キーのインデックス]
sudo iwconfig eth1 rate 54M

おそらくDHCPが有効になっていれば1分もすればIPアドレスが割り当てられるはずである。

毎回コレを実行するのが面倒なので

GUIツールではWEPキーのインデックスの設定ができないということなので/etc/network/interfacesを以下のように設定する。

auto eth1
iface eth1 inet static
wireless-essid ESSID
wireless-key s:WEPキー [WEPキーインデックス] key [WEPキーインデックス]
address 192.168.1.x
netmask 255.255.255.0
gateway 192.168.1.1

IPアドレスとgatewayはそれぞれ適宜変更。
WEPキーインデックスはコレを指定しないと普通つながらないと思うのだが、なぜか世の中の例を見ると設定していないところが多い。なんで?

Apacheのアクセスログからロボットのログを分離

一昔前にはワームが飛び交っていたのでそれを分離する設定が重宝した。

今は新規のロボットエンジンがスパムのごとくアクセスログを埋めてくれるのでロボットはロボットで別のログにまとめる必要に迫られる。

でhttpd.confに以下のようにCustomLogの設定を入れる

#主要なロボットと(迷惑な)新規ロボットをひとまとめに別ログにする
SetEnvIf User-Agent "(Googlebot)|(Slurp)|(Baiduspider)|(msnbot)|(Yeti)|(psbot)|(Ask Jeeves)|(Twiceler-0.9)" robots nolog
CustomLog logs/robot_log combined env=robots
CustomLog logs/access_log combined env=!nolog


終わったらapache再起動するべし。

新しいロボットがきたら
|(ロボットのUserAgent名)
組み合わせを増やしていけばいい。

正直いって現状ロボットアクセスが通常の2倍ぐらいありますです。うーむもっとがんばらねば!

wgetでファイル名が長すぎると出た時

ファイル名が長すぎます

英語だと

File name too long

とでる。実はあまり遭遇する機会はそう多くはないのだが、とある場面で100%遭遇する。

JDKのダウンロードURLである。とても長すぎるので毎回出てしまう

その対策は-Oオプションでファイル名を指定してやることである。

wget -O ファイル名 http://とても長いJDKのダウンロードURL

あまり役に立ちそうにないが豆知識としてどうぞ

Fedoraのネットワークインストールは失敗続き

FedoraCoreも7になり、相変わらずサイズが馬鹿でかいのでレスキューCDからネットワークインストールを行う

ところが過去Fedoraのネットワークインストールで成功した例は1回しかない。あまりに巨大なライブラリのため途中でネットワークに異変が起こるとそれで今までの努力がパーになる。

結局今回もインストーラーが動き出した直後にエラーが出て終了・・・・

VineLinuxなどは最小インストール(400M未満)であれ100%成功するのとは対称的だ。素直にDVDに焼くべきか・・・だれかFedoraのネットワークインストール成功した人がいたら教えてください。

2007年07月24日

ThinkPad R40eにLinuxを入れる時はacpi=offにしよう

かれこれ2年半ほど前に知人から格安で買ったThinkPadR40e

とりあえずパーティションを分割してLinuxを入れるのがその時の癖だったので(まだVMwarePlayerにはめぐりあってなかった)Linuxを入れてみるがほとんど入らなかった記憶がある。

最近でもUbuntuLinuxをインストールすることはできたのだが、マウスカーソルがコマ落ちするかのようにぎこちない動きでどうもおかしい。いろいろ検索していくとこのPCのacpi機能との相性がよろしくないらしい。

ブートパラメーターにacpi=offを記述すると、上記の現象は解決した。

そういえばVineLinuxを入れたときもacpi=offにしていた記憶がある。

ThinkPad R40e Linuxインストール奮闘状況

特定の拡張子を持つファイルを列挙

特定の拡張子を持つファイルを再帰的に検索したい場合に役立つ

cd 検索したいディレクトリ
find . -name '*.bak'

とするとディレクトリ以下の該当ファイルが出てくる。

用途としてはバックアップファイルなどのごみを一気に消したい時に次のコマンドを打ち込んでみるとよい

find . -name '*.bak' | xargs rm

ただし一気に確認なしで消してしまうので一回画面に表示させてから実行すべし。

bakやemacsが作るbackup(ファイル名~)は公開領域に残しておくと思わぬセキュリティホールになるので上記コマンドで自分のマシンをチェックしてみよう。

1CDLinuxの評価 KNOPPIX5.1.1,Ubuntu7.0.4,Fedora7,CentOS5

最近Linuxで無線LANを調査するために片っ端から最新のLinuxを落としてきては試している。

無線LANといえばたいていノートPCなのでHDDが空いてないから、調査目的のためにわざわざインストールすることなどできない。この1CDLinuxで無線LANの設定に成功したものをHDDインストール候補として選別する狙いがある。

このタイトルに上げた順番がそのままその1CDLinuxの使いやすさかなと思った。特に後ろに行くほど1CDLinuxを出してから間もないので完成度が低い。KNOPPIXはディスクアクセスも最小限であり起動が早い。

で無線LANの話はまだ調査の途中で最終報告にはいたっていないのだが、中間インプレッションとしてあげておく

intelの無線チップipw2200はかなり導入が楽でUbuntu7.0.4ではドライバーもファームウェアもすでに導入済みで拍子抜けするほど簡単だ。一昔前はLinuxで54Mの無線LANを使うためには、Windowsの無線LANドライブをラッパーするndiswrapper画必須だったのにね。KNOPPIX,Fedoraではファームウェアの導入が必要。CentOSのLiveCD版はで手間もないので今回は評価対象外だ。これからに期待

Linuxで無線LAN設定のまとめ

カーネル2.6.17以降になると対応する無線LANチップが増えているようだ。最近のLinuxであればカーネルバージョンは2.6.17以降だろう。

2007年07月25日

javaのpropertiesファイルをそのまま編集できるeclipseプラグイン

javaのpropertiesファイルといえば日本語をnative2asciiして保存しなければならなく、 編集がかなりめんどくさい印象があった。

しかし現在はeclipseのpluginで日本語を含むpropertiesファイルも楽々編集できるのでいい時代になったもんだ。

その名もプロパティエディタ

それにしてもちょっとJavaの開発から離れているうちにいろんな動きがあるもんだ。浦島太郎状態から早く抜けたい。

2007年07月26日

DebianGNULinuxの最新バージョンetchをVMWareにインストールしてみた

Linuxの動向には注目していたつもりだが、 いつの間にか比較的バージョンアップの遅いDebianに4.0(etch)が出ていたことを昨日気づいた!!

Debianはpotatoの頃(もう4年前!)自宅サーバーとして採用した実績があるが、 その後他のディストリビューション(Vine中心)に移ったためご無沙汰である。

Debianから移った理由は当時Javaを動かすのが他のディストリビューションに比べると大変だったのであるが、 aptに代表されるパッケージ管理には感動してaptがあるVineに移っていったのだからすくなからずDebianを使ったことによる影響はあった。

で、Debian4.0インストールだが、ネットワークインストールイメージを利用して10分で終了。 2日前の寝る前に寝転がってrootパスワード設定したので、タイプミスしたらしくrootで入れない・・・ こんなときはシングルユーザーモードでパスワード再設定するのがrootパスワード忘れの常套手段なのだが、 Debianにはこれが通用しなかった。 結局後日それは調べることにしてどうせ10分でインストール完了するのでもう一回インストールすることにした。ミニマム構成ならば実に早い。

しかし、インストールが終わってさてこれからがんがん環境を整えようと思ったが、なんかaptがおかしい。 依存性を解決するのがaptなのにその依存性のエラーでとまってしまう。さらには3.1の頃に見つかるほとんどのパッケージが見つからない。 httpサーバーまで見つからないのはさすがにおかしいだろうと思った。sources.listの記述は正しいと思うのだが

これでは使い物にならないのでもう一回やり直しか?

夏休みに突入してからアクセスが増えた

天気が悪いからみんな家でネットをしているのだろうか?

だいたいうちのブログのような技術ネタは休日になるとぐっとアクセスが減るのだが(仕事で必要に迫られて検索)、 先週の土曜日はほぼ平日と同じアクセスを維持して、月曜日は前週同日の2倍のアクセスを記録した。翌日以後もほぼ同じ傾向で推移している。

休みや天気の良し悪しでネットの利用も左右されるのであれば、データを取ってうまく活用したいところ (ネットショップなどでは雨の日にキャンペーンをやるとか)

これから天気とアクセス数とその日のイベント(サッカーがあればサッカーに関するサイトが多少なりとも影響を受けるだろう) を注意深く見ることにしよう。

画面キャプチャーをとるのに便利なCapWrite(キャプラ)

システムの操作説明書などを作成するときに画面のキャプチャーをすることがあると思う。

単純な一画面に収まるようなキャプチャーであればPrintScreenで間に合うのだが、 縦長のページでスクロールバーがあるようなページの場合はどうしているだろうか? 二つキャプチャーしたものを切れ目が目立たないようにつなげているのだとしたらこのキャプラを使うことにより大幅に労力が削減されるはずである。

このキャプラキャプチャ前にスクロールバーを上にあるとご丁寧に下までスクロールさせてすべてキャプチャをしてくれる。 さらにはウィンドウのコントロール単位でキャプチャができるのでマニュアルには不要なツールバーなどをのぞいてキャプチャできる。 さらにホットキーや連続保存などにも対応している。

ま、キャプチャをとるのが楽でも文章を書いたりレイアウトを考えたりすんのが面倒なのはしょうがない。 Linuxインストール手順を連続キャプチャしてディストリビューションごとに公開しようと模索しているのだが、なかなか時間が取れないな。

Apache2.2のmod_proxy_ajpでTomcatと連携する

ApachetとTomcatといえばmod_jkで連携するのがこれまでの定番であった。 Apache2.2からはApacheの組み込みモジュールで連携することができる。

実験はVineLinux4.1で行った。 Apache2.2はaptでいれるとmod_proxyやmod_proxy_jspは入っているはずである。

Tomcatのバージョンは6.0.13だが、Tomcat側はajpプロトコルが使えればいいので5だろうと4だろうと多分大丈夫。

下の例は同じマシンで動くTomcatのexampleコンテキストに/exampleでアクセスできるように設定したものである。

#Tomcat Connect Setting
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
<Location /examples/>
  ProxyPass ajp://127.0.0.1:8009/examples/
</Location>

Apache2.2が出て間もないのと、mod_jk並に細かい設定ができるかわからないので、 JKによる連携が急激に廃れることはないと思うが、 コンパイルする必要がなく設定だけで連携できるのは個人のテスト環境としては楽でいいのではないだろうか?

2007年07月28日

Linuxで無線LANカードWLI-CB-G54(bcm43xx)を動かす奮闘記録

カーネルにドライバが組み込まれるようになってから無線LANの動作のハードルが大分低くなった気がした。

が、それはIntelのipw2200チップには当てはまるのだがBroadComのbcm43xx系はとても苦労する。

ドライバーがあるとはいえデフォルトではファームウェアが入っていないのでファームウェア切り出しソフトウェアのbcm43xx-cutterというソフトウェアでWindowsのドライバからファームウェアの切り出し。 しかしバージョンが古いだのC言語レベルのエラーが出たりでもうお手上げ。 いちおうUbuntuLinux7.0.4だけはうまくいったのだが、 ネットワークがやたら重くなる原因不明のトラブルがあるのでどうも実用にならずほかのディストリビューション(Fedora7,KNOPPIX)を試したが、 全滅だった。

もうあきらめかけていたころにVine4.1でWLI-CB-G54とndiswapperでうごかすエントリーを見つけそのとおりにやったら無事成功! すばらしい!bcm43xxにはまだndiswrapperが必須かもしれない。

2007年07月30日

Javaで日付妥当性チェック

PHPに比べるとめんどくさいのね。

入力はString型とする。

入力日付フォーマットをチェックしつつ日付の妥当性も検証する。 なお内部的にはCalendarクラスのsetLenientメソッドを呼んでいるので引数がintの場合はCalendarクラスを利用したサンプル (そっちは世の中にありふれてる)を使うといいだろう。

 String dateString = "2007-07-30";
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
     // 日付解析を厳密に行う(2/31などはNG)
     sdf.setLenient(false);
  try {
   Date date = sdf.parse(dateString);
   return sdf.format(date);
  } catch (ParseException e) {
   // 不正な日付のときはこのブロックに到達
  }

JavaScriptとかASPでも同種の処理を作った覚えがある。 たしかフォーマットをかける前とかけた後を比較して同じだったら正常日付、違ったら不正日付とみなしていた。

指定時刻以降の更新されたファイルを列挙する

ちゃんとバージョン管理されていればいいのだが、個人のサーバーなどでそこまでやっていなくて、 どのファイルを変更したかよくわからなくなったという経験が誰でもあるのではないだろうか?そんなときに効く小技

まずは基準点となる日付ファイル(空のファイル)を作成する。

touch -t 200707302100 lastupdate

2007/7/30 21:00を基準点として、カレントディレクトリ以下にあるそれより新しいファイルを列挙する

find . -newer lastupdate

これで「たしかどっかの設定ファイルいじってから動きがおかしくなったんだけどどのファイルだったかな?」 という問題解決の一助となるはずである。

 

 

2007年07月31日

Linuxデスクトップ候補ディストリビューション中間報告

ここ二週間ほどWindowsをすててLinuxで生きていくためにさまざまなLinuxを試している。

条件としては

・無線LANの導入がスムーズに行くこと
・日本語環境がそろっていること
・動画はいいのでMP3などのオーディオ再生
・安定していること

今のところVineLinux4.1が本命でUbuntuLinuxが対抗。まぁデュアルブートすると思うけど。この二つは無線LANの導入が容易だった。Fedora7も試したいんだけどディスクが空いてないなぁ。

デスクトップLinuxを本格的に使い始めてまだ半月だけども、デスクトップ用途に関していえばまだWindowsのほうが安定しているかなという感じ。サーバー用途はLinuxでぜんぜんOK。


About 2007年07月

2007年07月にブログ「技術メモ」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2007年06月です。

次のアーカイブは2007年08月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。