• MTを 4.2にアップグレードし mixi OpenIDにチャレンジ

    といってもMTのコメントのプラグインを試しただけだけどー

    MT 4.2が公開されたのでアップグレード
    無事に移行できたか???
    再構築時間は確かに短くなった。元々サーバが非力なのであまり恩恵にあずかれていない気もするが。

    で、mixiがOpenID対応です。
    [mixi] mixi OpenID

    コメント記入時のサインインでmixi OpenIDを利用するプラグインが早々に公開されているのでチャレンジ
    mixiComment | Movable Type プラグインディレクトリ

    ・・・してみたんだけど上手くいかないな~

    OpenIDを検証できませんでした: 入力されたアドレスはOpenIDではありません。
    てなメッセージ。
    サインインの選択肢にmixiが出てきているので設定は出来てるんじゃないかと思うんだけど・・

    追記:
    と思ったのだけど、Crypt::SSLeayがインストールされてなかっただけだった・・・
    プラグインのREADMEに↓って書いてあった。なんで入れてなかったかなー。

    Movable Typeが動作しているサーバーに、Crypt::SSLeayモジュールがインストールされている必要があります。インストールされていないと、mixiにOpenIDでログインしようとした際に、「OpenIDを検証できませんでした: 入力されたアドレスはOpenIDではありません。」というエラーになります。

  • JUDE APIを jrubyから使う その1

    楽々ERDレッスン (CodeZine BOOKS)
    モデリングツールにJUDEを利用している。

    このツールを選んだポイントの1つはjavaを使ったAPIがあること。
    5.3になって、モデル編集のAPIも追加された。

    で、テーブル設計。

    過去に「楽々ERDレッスン (CodeZine BOOKS) 」を読み、「Identifier」の有用さに心打たれて以来、いつもID列を設けるようにしている。

    要求・要望・要件の断片からざっとエンティティを見出し、ID属性を付与、リレーションを付けて多重度を設定して・・・という手順でやっているのだけど、エンティティの数が多いと、ID属性を追加するのも結構手間。。。。

    ということで、モデル編集APIを扱うプラクティスも兼ねて、JUDEプロジェクト内のERエンティティにID属性を追加するスクリプトを書いてみた。

    judeユーティリティ

    ちょこちょことスクリプトを書くときは、screen+viな環境でやると調子がいい(僕は)。なので、linux上でしか確認してない。

    ■実行環境
     OS: CentOS 5.2 i386
       JRE: Sun Java 1.6.0_05
         jruby: 1.1.3
         JUDE-Pro: 5.3.0

    ■実行例

    アーカイブを展開し、jude-pro.jarを展開先ディレクトリに置いてある前提。

    ○ERエンティティ、「ID」という論理名でSMALLINT型の属性を追加する

    % env CLASSPATH=./jude-pro.jar jruby add_identifier.rb --attr-name=ID --datatype=SMALLINT judeファイルのパス
    

    ○ERエンティティに、「ID」という名前・INT型のERドメインで、「ID」という論理名の属性を追加する

    % env CLASSPATH=./jude-pro.jar jruby add_identifier.rb --attr-name=ID --domain=ID judeファイルのパス
    

    ○ERエンティティに、「ID」という名前・SMALLINT型のERドメインで、「エンティティ論理名_ID」という論理名の属性を追加する

    % env CLASSPATH=./jude-pro.jar jruby add_identifier.rb --attr-name=%e_ID --domain=ID --domain-datatype=SMALLINT judeファイルのパス
    
    指定したデータ型、ドメインが存在しない場合は作成します。
    作成された属性にはPK指定が付きます

    ■注意
    • READMEにも書いてありますが無保証です
    • judeファイルを書き換えますので、バックアップ必須です。ファイルが壊れても責任持てません。
    • (JUDEの機能による)ロックがかかりますので、更新対象JUDEファイルをGUIで編集していない状態で実行します
    • 既に主キーがついているエンティティには属性追加しません。
    • 唯一の主キーが作成しようとしてる属性論理名が同じ場合はデータ型/ドメインを更新します
    • 既にERモデルが作成されているJUDEファイル前提です。日本語環境以外で作成されたものがどうなるかは不明です。



  • VMware ESXiを USBメモリスティックにインストールする

    常時運用の仮想サーバではなく、実験であれこれ組み替えたり元のデスクトップOSに戻したり、ということをしたい。

    ので、ESXiをUSBメモリにインストールする。
    USBメモリを挿して起動すれば仮想サーバ、普通に起動すればいつものデスクトップOSと。

    手順は↓にそのものズバリがあったので、リンク先の通りに進めればOK。
    ESX3i_bootable - moti.g


    少なくとも1GBのUSBメモリが必要らしいので購入。
    最近はこの手のものを禁じられる場所が多いので、すっかりウォッチしていなかったけど、1GBのが2000円未満で買えちゃうんだ・・・。

    小さいのとケースの形状が気に入ったので、ソニーのPOCKET BIT MINIを買ってきた。

    やってることは上記URLと変わらないけど、なんとなくlinux機でやってみた。

    注意:
    • 以下、全て(あるいは部分)を失っても責任を負いかねます。全て自己責任で。
    • ここの環境(Thinkpad X40)だとESXサーバのshutdown時にクラッシュスクリーンが出てます。

    OS: CentOS 5.2

    • USBメモリを挿す
    • dmesgなりmessagesでマップされたSCSIデバイスを確認しておく
      自動マウントされる環境だとumount必要かも
    • ESXiのインストールISOイメージをmount
      # mount -o loop VMware-VMvisor-InstallerCD-3.5.0_Update_2-103909.i386.iso /mnt
      
    • install.tgzから、VMware-VMvisor-big-3.5.0_Update_2-103909.i386.dd.bz2を取り出す
      # cd /tmp
      # tar xvfz /mnt/install.tgz usr/lib/vmware/installer/VMware-VMvisorbig-3.5.0_Update_2-103909.i386.dd.bz2
    • 伸張する。伸張すると800MBぐらいになるので、書き込み先の残量に気をつける。
      # bunzip2 usr/lib/vmware/installer/VMware-VMvisor-big-3.5.0_Update_2-103909.i386.dd.bz2
      
    • VMware-VMvisor-big-3.5.0_Update_2-103909.i386.ddをUSBメモリに書き込む
      # mv usr/lib/vmware/installer/VMware-VMvisor-big-3.5.0_Update_2-103909.i386.dd.bz2 .
      # dd if=VMware-VMvisor-big-3.5.0_Update_2-103909.i386.dd of=/dev/sdb
    • 5分ぐらい待ったらこんな感じで終了
      # dd if=VMware-VMvisor-big-3.5.0_Update_2-103909.i386.dd of=/dev/sdb
      1536000+0 records in
      1536000+0 records out
      786432000 bytes (786 MB) copied, 307.758 seconds, 2.6 MB/s
    SN3E0002.JPG
    USBメモリをターゲットとなるPCに接続して起動
    今回はとりあえず手近にあったThinkpad X40を使った。
    X40の場合、起動時にF12でブートデバイスの選択が出来るのでこれを使ってUSB HDDから起動する。

    無事起動した。
    このX40の場合、HDDをDatastoreとして使っちゃうわけにはいかないので、とりあえずlinux機の適当なディレクトリをnfsで公開して、Datastoreの保存先として設定した。


    s1.PNG
    ・・・でもPentium M 1.3GHzな環境で実用するつもりもないので、試しの仮想マシンを1つ作りBIOS画面を眺めて終了。


    さてESXサーバをshutdownしてしばらくすると・・・ありゃ、なんだかブルースクリーンというか紫スクリーンが。うー。

    他の環境で動いてくれればいいんだけど、どうなるか。

    http://communities.vmware.com/thread/146167
    に書いてあるACPI周辺か

  • javaの decompilerといえば

    Jad
    というイメージだったのだけど、
    Java Decompilerてのがあるらしい。


    • JDK 1.5.0、1.6.0に対応している。Generic/アノテーション
    • jarを一括して解析してくれる
    • 解析結果を一括して保存できる
    • jar、クラスごとにタブ表示され、クラス/インタフェース名をクリックすると当該jar/クラスにさくっと移動できる(これが結構いい)
    てなところがうれしい。

    時々逆コンパイルできなかった、みたいなメッセージが出てるのが気になるけど、ポストJadを探していたので非常に助かる。


  • linuxで USBメモリを mountする

    USBデバイスはSCSIデバイスにmapされるんだから、dmesgで確認してmountすればいいさー、と思ってたら変なところでハマってしまった。

    usb-storage: waiting for device to settle before scanning
      Vendor: BUFFALO   Model: ClipDrive         Rev: 1.11
      Type:   Direct-Access                      ANSI SCSI revision: 02
    SCSI device sdb: 258048 512-byte hdwr sectors (132 MB)
    sdb: Write Protect is off
    sdb: Mode Sense: 03 00 00 00
    sdb: assuming drive cache: write through
    SCSI device sdb: 258048 512-byte hdwr sectors (132 MB)
    sdb: Write Protect is off
    sdb: Mode Sense: 03 00 00 00
    sdb: assuming drive cache: write through
     sdb: sdb1
    sd 4:0:0:0: Attached scsi removable disk sdb
    sd 4:0:0:0: Attached scsi generic sg1 type 0
    てな感じのログが出たのでsdb1をmountしようとしたら、

    mount: スペシャルデバイス /dev/sdb1 が存在しません
    と言われる。
    あれー?と思って/devを見ると確かに存在しない。

    で結局mknodでデバイスファイルを作ってmountした。

    mknod /dev/sdb b 8 16
    mknod /dev/sdb1 b 8 17

    でも、以前mountしたときは最初からあったような・・・
    と思って調べたら、udevdがkernelからのイベントを受け取ってruleに従って適宜作成してくれるものらしい。
    知らんかった。
    で、ウチのudevdはどうなっとるのだと思ってpsしてみたら、居なかった・・・・。
    いつ終了しちゃったんだろう・・・

    ということで、
    • 一旦umount
    • USBメモリ抜く
    • /dev/sdb* をrm
    • /sbin/start_udevで改めて起動
    • USBメモリ挿す
    • /dev/sdb1出来た!
    • mount
    と相成った。
    しかしなんでudevd居なくなってたんやろう。yumで5.1→5.2してから再起動してないからだろうか。


    OS: CentOS 5.2
    udev-095-14.16.el5
    kernel-2.6.18-92.1.6.el5