システム・PC

詳細調査

パーツ類を全部はずしてちゃんと見てみた。

DSC04791.jpg

三個あるうち、中央付近のコンデンサがもっこりしていて、下の方から液を漏らしている。

DSC04789.jpg

AOpenのロゴ横のコンデンサがもっこり&傾いていて、その隣の小さいコンデンサの下部に液らしきものが漏れている。もう一個のコンデンサももっこりしている。

ちゅうわけで事態は思った以上に深刻っぽい。マザボ買い換えケッテイ。

もっこりコンデンサが原因か・・

一昨日書いたPCが壊れたという日記の続編。

とりあえず、電源を変えてみようということで、テキトウな電源をTWO TOPで購入して接続してみたところ、やはり電源が入らない。ちゅうことで電源は生きているようです。さっそくこの電源は静音にしたい別のマシンで使うことにします。

となると次に疑うべきはマザボでしょう。

というわけで、アキラメテ机の下からケースを引き出して明るいところで丹念にコンデンサをチェック。
すると・・・

ぎゃわーコンデンサがもっこりしてる。 DSC04782.jpg さらに調査してみるともっこり予備軍が3,4個。アタマからなんか汁みたいなのが出かかっているのが1個。なんかこれがあからさまに原因のような気がしてきました。 コンデンサの型番と容量を調べようかと思ったんですが、マザボをケースから取り出さないとまったく見えません。それはメンドクサイ。さて、どうしたものかと思ったところひらめきました。 デジカメで撮ればいいじゃん。 というわけでデジカメで撮ったのがコレ。 DSC04772.jpg かろうじて RXAと L145というのが見えます。 あとはRXA L145でぐぐって貰えば分かるとおり。 ついでいうと使っているマザボはAOpenの AX4B Pro。 ここまで来るともうなんか確定っぽい。 さてコンデンサを良質なものにとりかえるか、マザボを取り替えるか・・・まぁメンドクサイから後者だよなぁ。やっぱ。それ以前に工具がないか。 しかし、こんなことがあったこと考えるとウチの会社のSUPER MICROのマザボを使用しているサーバは24時間、365日常に通電してるのに超長持ちですね。高かったけど未だ故障の気配なし。CPUもPentiumIIIの800MHzだけど、いまだ多少重いプロセスでも遜色なくさくさく動くし・・・ やっぱCPUとかいくら良くしてもダメなんだと実感しました。

PCシボンヌ

自宅でチョイ調べモノをするのに必要になったので、Windowsを起動しようとひさびさにPC電源をスイッチオン。

プチ・・・

起動しねぇ・・_| ̄|○

こういうとき一体何が悪いのかさっぱりわからんワタシです。 マザボについてるLEDのランプはついてので電源は生きてるっぽいです。 完全に電源をoffにしてから電源スイッチを押すとファンが一瞬回ることも確認。 よく聞くコンデンサのもっこりも見られない。 CPUかメモリですかねぇ? 追記 ウソです。もっこりしまくってました。

Tiger

東京駅に降りたつなり、いきなりApple Storeに行こうというジェントルマンが約1名。

名古屋の日帰り旅行でそこそこ疲れていたのに、なぜに銀座のApple Storeに行くのかというと、本日18時より MacOS 10.4ことTigerが発売になるからです。

熱狂的なMacファンが買いに行くことは自明の理で、お祭りは確定であろうというのに、一緒に行ってしまうワシ。ヨワヨワです。

DSC04403.jpg

でもって行ってみると18時にしてやはり長蛇の列。

入場するまで、1時間もかかりました。

しかも、店内はGW中のイベントやらで、よーしらんDJが超大音量で音楽を流しまくりで、最悪の状態でした。

店員が人の流れを制御しようとしても声が届かないので列は乱れるし、カウンター越しにも何を言っているのかよく聞こえない始末。

ここはお店です。いくらなんでも音量でかすぎでしょう。

しかも、一人の客にかける時間が5分くらいで、回転率が非常に悪い。

以上二つのダブルパンチで疲労感をタップリ貯めて帰ってきました。

スクラッチカードでスピーカーシステムが当たったのが唯一の救いです。

でもこれ重いんですよねぇ・・・

で、とりあえずUPDATEしてみて困ったのが、Safari内でテキストエリアのマウスでの選択が出来なくなったこと。 いろいろ調べて見た結果、仮名漢字変換をオフにするか、ATOK16をはずしてことえりにすると問題なく動作するので、ATOKのHPを見たら、不具合として報告されていました。 パッチがあったのでUPDATEしたらモーマンタイ。 ヨカッタ・・

sshでパスワードなしでログインする

sshでは.rhostsを書いて信用できるホストからのログインを許すということもできますが、公開鍵をつかってより安全にパスワードなしでログインすることができる・・・というのは知ってるんですが、やったことないので、とりあえずmanを参考に試してみました。

以下そのメモ(最近忘れっぽいので)です。

1)秘密鍵と公開鍵の生成
ssh-keygen -t rsa


これで.ssh/id_rsa(秘密鍵)と .ssh/id_rsa.pub(公開鍵)ができます。聞いてくるパスフレーズには何もいれないでおきます。

2)ログインするサーバの.ssh/authorized_keysに1)で作った公開鍵をコピーする。
(行単位でコピーすればよい)

3)sshでサーバにログインする。パスワードを聞いてこなければ成功です。

DSAを使いたければssh-keygenのオプションをrsaのかわりにdsaとすればOK。

ssh1でログインしたいときは、rsa1と指定してファイルを鍵のペアを作ればOK。

認証方法は次のとおり

1)クライアントがサーバに公開鍵を使って接続を試みる
2)サーバは公開鍵が許可されたものであれば(authorized_keysにあるものであれば)ランダムな数字を生成し公開鍵を使って暗号化しクライアントに送る
3)クライアントは秘密鍵を使って暗号を解き、サーバに自身が秘密鍵をもっている正当なユーザであることを通知する

当然のことながら秘密鍵は秘密にしておきましょう。

Javaでエクセルファイルを生成する

誰かそういうパッケージを作ってるだろうと探してたら、やっぱりありました。


http://sourceforge.net/project/showfiles.php?group_id=79926


APIも簡単で悩むところなどないです。これで作ったら超簡単に出来ましたわ。ラクチンですな。配布条件はLGPL。




import java.io.File;
import java.util.Date;
import jxl.*;
import jxl.write.*;

class Test3{
public Test3() throws Exception{
WritableWorkbook workbook = Workbook.createWorkbook(new File("output.xls"));
WritableSheet sheet = workbook.createSheet("First Sheet", 0);
jxl.write.Label label = new Label(0, 2, "A label record");
sheet.addCell(label);

jxl.write.Number number = new jxl.write.Number(3, 4, 3.1459);
sheet.addCell(number);

label = new Label(1, 1, "\u3041");
sheet.addCell(label);

workbook.write();
workbook.close();
}
public static void main(String arg[]) throws Exception{
new Test3();
}
}

Javaファミリーのキモチが見えてきた

なんとなく毛嫌いしていたJavaですが、最近Javaの思想というのが最近見えてきたような気がします。と言っても、あ〜Javaならこう書けばいいのかとか、あ〜Javaならこう設計するといいな。といった感じですか。まぁ、この世界も奥が深そうなので、まだまだでしょうが。

でもって本題。

ン年ぶりにwebアプリを書いています。

要求仕様などもろもろの事情からJBoss3.2をたてて、その上で日本語を扱うwebアプリを書いているんですが、その中で日本語が正しくハンドルされないという問題点にぶち当たりました。JBossはデフォルトでTomcatを使用してるんで、そのあたりに問題があるんじゃないかと、いろいろ調べてみると どうもrequest.getParameter()で正しく encodeした文字列が取得できてないようです。

getParameter()する前にsetCharacterEncoding()で encodingをUTF-8にしているのでここで正しくStringが生成されそうなものですが、う〜む・・・

ワタシはServletプログラムの経験が薄いので、なかなかgoogle検索のカンどころがつかめず、この件かなり悩みました。Apacheならソースも何度も眺めてるし、perl CGIなら腐るほどプログラムしてるので慣れているんですがねぇ・・・

それでも、いろいろ探したらTomcatのBugzillaで次の記述にぶちあたりました。

http://issues.apache.org/bugzilla/show_bug.cgi?id=23929

まぁようするに、

1)URIにASCII文字列意外の文字があったらw3の規格的にはそれはUTF-8でencodingして、%xxに置き換えて送るというのが正しい。
2)しかし現実のクライアント(ブラウザ等)はそう実装されていないものが多々ある
3)そのため様々な問題が起きている
※いままで、このあたりマッタク気にしたことなかったなぁ〜(笑)

4)そこで、Tomcatでは(デフォルトでは)こう実装されている
- Tomcat4では(規格からは外れているが) Body(すなわち本文)と同じ Encodingを使用していると解釈してURIをdecodeする。
- Tomcat5ではBodyと同じEncodingをしない。デフォルトの Encodingは ISO-8859-1であるので、それでdecodeする。

で、最後にTIPSとして
・こういうことをしたいならPOSTを使えばいい。

ということで、POSTにしたら確かに直りました・・・バンザーイ!!

まぁようするに、Tomcat4ではワタシが思っていたように動作するようになっていたわけで(それは規格として間違っているのだが)、世の中にはTC4ベースの良解説ページが沢山あり、得てしてそういうページは上位にくるので、google検索の誤解スパイラルに陥ってしまっていたようです。

分かってしまえばそれをキーワードに検索すれば、解決法や同じことで悩んでる人がワラワラ出てくること出てくること。例えば、サーバ側の設定で解決する方法としては、以下のようなページがありました。

http://www.atmarkit.co.jp/fjava/rensai3/mojibake03/mojibake03.html

で、Bugzillaのページ見ておもったんですが、Tomcat5もURIパラメータの解釈は結局のところ規格外なんですよね。UTF-8で規格的に正しくエンコードされたURLでもISO8859-1で解釈するんですから。

このあたり、別なservletとの互換性も絡んでいるのでしょうか?なかなかJavaの世界も深いようで・・・

MacからPostgreSQLを操作する

PostgreSQLは普通にフリーソフトなので、クライアントだけインストールすれば普通に操作できるんですが、どうせならMS Access風味にODBCでリンクしてテーブルを操作したいというものです。

Mac OS XにもOfficeはあるんですが、Accessが無いので、別なソフトでいうことになるんですが、これはMacの世界のデーターベースソフトの決定版のFileMakerProでよさげな感じです。(ダメだったりしたらどうしよう・・・・)


あとはPostgreSQLのODBCドライバです。何かよいものがないかと探していたら、こんなものが見つかりました。

PostgreSQLでもMySQLでも使えるらしいです。お試し版があったので、さっそくダウンロードしてみました。

インストールは簡単でつつがなく終了。とらいえず iODBC Administratorを実行して確認してみたところ、無事組み込まれているようです。

SCR1.jpg

さっそくUser DSNを設定して MS Excelから

データ>外部データの取り込み>新しいデータベースクエリ

で、インポートしてみたところ、つつがなくPostgreSQLのサーバからテーブルを取り込むことができました。Excelだと取り込むだけで、編集しても元のデータベースが変化しないのでこれ以上試せませんでしたが、まぁここまで出来るなら普通に使えそうですね。

あとはFileMaker Proを買うだけ?

なお、ワタシはMicrosoft Office v. Xのバンドル版を使用しているのですが、Excelから取り込むときはQuery X for Macというものを別途インストールしないとできませんでした。ご参考まで。

追記 FileMakerも基本的にインポートしかできないようです。(´・ω・`)

FreeBSDのバージョンアップ

自宅で使っているWindowsMEからFreeBSDにsambaでどうしてもつながりません。

まぁWindowsのバージョンをあげるという手もあるんですが、そもそも月に一回くらいしかつかわないマシンなんで、買い換える気もしません。

で、いろいろやっているうちに、別のサーバで動いている比較的最近のsambaには接続できるので、どうもsambaのバージョンが古いのが原因ではないかという結論に。

そのついでにOSがバージョンがFreeBSD4.3ちゅう、これまた前世紀のバージョンなので、こちらもあげることにしました。

とはいっても、作業としては、cvsupで /usr/srcを最新にして make worldをするだけなんですけどね。w インストールするときにuserやgroupがないという問題がありましたが、ここは手動追加で乗り切りました。(4.3のmergemasterには-pオプションがない・・・) で、/usr/ports/net/samba3 の下でガツンとmake・・・ 楽勝とおもわれましたが、configureでエラーが・・・

configure: error: libkrb5 is needed for Active Directory support
どうせ、使いもしないKerberosでのエラーというのがシャクです。w まぁADSをオプションから削除してmakeすればいいんでしょうが、そもそもこのエラーがでるのが不思議です。 そこで /usr/lib/libkerb*のタイムスタンプをみたら変わってない・・・なるほど make worldだけでは kerberosは更新されないんですね。 -DMAKE_KERBEROS5をつけてmake worldしたら無事更新されたようです。また勉強になりました。

static const char [100]


main()
{
static const char a[100] = "A";
}


a[0]だけが'A'で a[1]以降は全部0で初期化されそうな感じがしますが、実際はそうならない処理系があるようです。具体的にはMacOSX.2ですが・・・(gcc version 3.3)

なお、constを取れば私が期待した通りに初期化されます。


main()
{
static const char a[100] = "A";
static const char b[100] = {'Z'};
}


とすると、bは当然100個確保されますが、aは最初の4バイトのみA\0\0\0でその次にはbの中身がみえちゃってます。

つまりa[4]でb[0]が見えるという・・

仕様的にはどっちが正しいのだろう?