• redmine 0.6.0が出てた

    ふと気がついたら0.6.0が出てた。
    http://www.redmine.org/

    doc/UPGRADINGを見ながらアップグレード。
    • アーカイブredmine-0.6.0.tar.gzを展開
    • config/database.ymlを以前のRAILS_ROOTからコピー
    • config/environment.rbのSMTP周辺を編集
    • rake db:migrate RAILS_ENV="production" でDB移行
      • ちなみにバックアップは自動でとってるので特になし。
      • RailsアプリはDB周辺の移行が自動化されてて偉いなー。
    • files/は何も置いてなかったのでノータッチ。
    • config/mongrel_cluster.ymlを以前のRAILS_ROOTからコピー
    • mongrelを再起動
    うーんシンプル。
    「LDAP認証でADユーザを使ったredMineへのログイン」で書いたiconvの問題も、iconvを使わなくなったようで特に問題なし、と。

  • MT4.01に泣く

    タイトルにはMT4.01と書いたけど、4.0にアップグレードした時点でおきてた話。
    4.01にしたら解決するだろうかと思っていたのだけど、考えがあまかった。

    ここのブログは、これまでのファイル名に合わせ、ブログ記事のアーカイブマッピングで「yyyy/mm/entry_basename.html」を指定していてる。
    1. ファイルはアーカイブマッピングに指定したルールで出力されているのに、リンク先(hrefの値)が「yyyy/mm/entry-basename.html」なルールで出力されていてリンク切れまくり。
    2. 月別/カテゴリ別アーカイブに含まれる各記事の「個別ページ」のリンク先(hrefの値)が、なぜかアーカイブページのURLになってしまう。
    3. カテゴリページ自体は出力されているが、リンク先(hrefの値)が、カテゴリページを指しておらずリンク切れまくり。
    テンプレートをいじっては再構築を繰り返し。うぅしんどい。

    結局、
    1については、パーマリンクが変わってしまうが、アーカイブマッピングを「yyyy/mm/entry-basename.html」にして出力ファイル名の方を合わせた。
    2と3については、いったん「アーカイブテンプレート」を全部削除し、システムメニュー>ブログ>ブログを選択して「テンプレートの初期化」アクションでデフォルトの状態に戻し、改めてアーカイブマッピングを指定。

    で、出力ファイルも全部削除して再構築したらやっとリンクが正しくなった。
    あぁぁぁ。

  • LDAP認証でADユーザを使ったredMineへのログイン

    プロジェクトをまたいで自分に関連するチケットをリストアップできる、という点に興味があり、巷でウワサのredMineをたててみる。
    LDAPに既に存在するアカウントでログインできる、という点も魅力だ。

    環境


    redMine環境は、FC5、ruby-1.8.5.35-2.fc5、rails (1.2.3)、mongrel (1.0.1)、mongrel_cluster (1.0.2)、redMine-0.5.1。
    Active DirectoryはW2k3で動作。ユーザの姓名には日本語を指定しており、表示名が「赤峰 るび夫」のようになる運用をしている。ログオン名は姓名とは別の英数字IDを任意で指定している。

    ADドメインはad.example.comとする。

    redMineの設定

    • adminでredMineにログイン
    • 管理>認証>新しい認証モード
      名前:適宜。ADドメイン(のNTドメイン表現)と同じにした。
      ホスト:ADサーバホスト名。
      ポート:389
      アカウント:cn=表示名, cn=Users, dc=ad, dc=example, dc=com
    • このユーザはredmineの認証用に作成した。試行錯誤の過程で英字で姓のみのユーザを作成した。後述のinitialize_ldap_conの関係で日本語姓名だとbindできない様子。
    • ディレクトリに対する匿名アクセス可能なアカウントを作った方がよかったかも。
      パスワード:上記ユーザのパスワード
      BaseDN:cn=Users, dc=ad, dc=example, dc=com

    あわせてユーザを作成:true
    ログイン:sAMAccountName
    →ADユーザのプロパティでは、「アカウント ユーザログオン名」
    名前:givenName
    →ADユーザのプロパティでは、「名」
    苗字:sn
    →ADユーザのプロパティでは、「姓」
    メールアドレス:mail
    →ADユーザのプロパティでは、「電子メール」

    • アスタリスクが必須項目マークだと思うんだけど、マークに従えば、ログインだけ指定すればいいことになる。のだけど、テーブルを見るとNotNull制約みたいなので、4項目とも設定した。
    • AD側のユーザも合わせて上記項目を埋めた。

    mysql> desc users;
    +-------------------+-------------+------+-----+---------+----------------+
    | Field             | Type        | Null | Key | Default | Extra          |
    +-------------------+-------------+------+-----+---------+----------------+
    | id                | int(11)     | NO   | PRI | NULL    | auto_increment |
    | login             | varchar(30) | NO   |     |         |                |
    | hashed_password   | varchar(40) | NO   |     |         |                |
    | firstname         | varchar(30) | NO   |     |         |                |
    | lastname          | varchar(30) | NO   |     |         |                |
    | mail              | varchar(60) | NO   |     |         |                |
    | mail_notification | tinyint(1)  | NO   |     | 1       |                |
    | admin             | tinyint(1)  | NO   |     | 0       |                |
    | status            | int(11)     | NO   |     | 1       |                |
    | last_login_on     | datetime    | YES  |     | NULL    |                |
    | language          | varchar(5)  | YES  |     |         |                |
    | auth_source_id    | int(11)     | YES  |     | NULL    |                |
    | created_on        | datetime    | YES  |     | NULL    |                |
    | updated_on        | datetime    | YES  |     | NULL    |                |
    +-------------------+-------------+------+-----+---------+----------------+

    • 認証モードを保存して一覧に戻る。
    • 「テスト」をクリックして「接続しました。」が表示されることを確認する。

    ログイン失敗

    これで上手くいくかなーと思ったら、ログインできない。
    production.logを見たらiconvがこけてるらしい。

    Processing AccountController#login (for *.*.*.* at 2007-09-19 18:43:52) [POST]
      Session ID: feb2a36cbb1a47dd7b0396964d0185e3
      Parameters: {"action"=>"login", "controller"=>"account", "password"=>"[FILTERED]", "login"=>"ログインID"}


    Iconv::IllegalSequence ("姓 名,CN"...):
        /app/models/auth_source_ldap.rb:72:in `iconv'
        /app/models/auth_source_ldap.rb:72:in `initialize_ldap_con'
        /app/models/auth_source_ldap.rb:47:in `authenticate'
        (略)



    認証モードの設定で、ログイン=sAMAccountNameとしていて日本語周辺は回避した、と思っていたのだが、内部的に以下のような流れらしい。
    1. 認証モードで「アカウント」に指定したDNとパスワードでLDAPに接続
    2. この接続を使って、redmineのログインID==sAMAccountNameとなるエントリを問い合わせる。
    3. 問い合わせた結果得られたDN+ログインフォームに入れたパスワードで再度LDAPに接続
    4. 接続できたら認証OK
    なので、(ここの運用だと)3のDNに日本語が含まれ、これをiso-8859-15→utf-8変換しようとしてiconvで死ぬ。ということみたい。

    とりあえず回避

    場当たり的に、ADからの応答もutf-8だと決めてかかることに。
    app/models/auth_source_ldap.rbをちょこっと書き換え。

    private
      def initialize_ldap_con(ldap_user, ldap_password)
        Net::LDAP.new( {:host => self.host,
                        :port => self.port,
                        #:auth => { :method => :simple, :username => Iconv.new('iso-8859-15', 'utf-8').iconv(ldap_user), :password => Iconv.new('iso-8859-15', 'utf-8').iconv(ldap_password) }}
                        :auth => { :method => :simple, :username => ldap_user, :password => ldap_password }}

        )
      end

    おわり

    mongrel_clusterをrestartし、再度ログインフォーム。
    ADユーザのログオン名+パスワードでredMineにログインできた。
    ふー。

    でも「あるAD上のグループに属しているユーザだけredMineを使える」みたいなコントロールはよくわからず。
    うーん。


  • MTを4.0にアップグレード

    といっても特に手間はなし。
    • バックアップをとって
    • アーカイブを展開
    • mt.cgiにアクセスしたらアップグレード開始
    WYSIWYGな記事編集画面が手軽でいいな。
    ULを多用するので選択して1クリックで箇条書き/インデントできるのは便利だー。

    よく見れば自動保存機能まであるのか。これはいい。いつもテキストエディタで編集して貼り付けてたよ。
  • Thinkpad X40のHDDをCFに換装してVista

    2009/02/13:このX40はSSDに換装しました。
    ~以下の内容は単に僕がやってみたことの記録であり、どのような保証もしません。これを参考にした結果どのような被害/損害が発生しても当方は責任を負いかねます。全て自己責任で。~

    数年前にThinkPad X40を購入した。 しかし、1.8インチHDDのあまりのパフォーマンスの悪さに次第に使わなくなってしまっていた。 最近は、二ヶ月に一回程度利用の機会があり、そのたびにWindows Updateを行うのだが、実際に使えるようになるまでに3時間程度を要していた。 せめてメモリを増設すれば、と1GB増設に一縷の望みを託すも、大きな改善は見られない。

    これはもう使いどころがないなぁ、と思い始めていたところで、HDDをCFカードに置き換えた、という話を聞いた。 さっそく以下のCFカードとアダプタを購入。
    が、
    なにせ、CFカードの容量は8GB。
    ということで、ファットクライアントPCとしての道は捨て、「webブラウズ・terminal・テキスト編集」専用機と割り切ることに。起動が早くてこれらがサクサク使えれば普段使いには十分便利、という環境を目指す。
    ※メーラーもRSSリーダーもネット上のものを使う前提。

    換装

    ハードディスクを外して、アダプタを差し込んで終了。 CF-IDE変換アダプタと本体底面の間に隙間が出来てグラグラするので手元にあった緩衝材を1切れ、底面側にはさんだ。。 BIOS画面で確認したら素直に認識されており一安心。

    Vistaをインストール

    で、OSを新規インストール。Vistaを選んだのは気まぐれ。 以前HDDにインストールしたことがあり、Aeroを使えないこともわかっていたが、スリープが使えるのは意味があるだろう。
    外付けのDVDドライブを接続し、Vista UltimateのDVDから起動。 10GB程度の空き容量を要求する警告が出ているが、ないものはないので無視する。 インストールプロセスは何事もなく終了し、Vistaが起動した。
    デバイスマネージャで確認すると「現在のモード」が「Ultra DMA モード 4」となっており、さらにひと安心。

    ダイエット

    インストール終了時点で、残容量はわずか400MBほど。Home Editionだったらもっと空くのだろうか。が、持ってないので詳細不明。 そして、なけなしの残容量もWindows Updateの途中で枯渇してしまった。うーん当然か。 ということで、ダイエットを敢行することに。
    • ドライブの圧縮をするかどうかは悩んだ末、見送りとした。
      • 今となってはパフォーマンスの高いプロセッサではないことと、書き込み寿命を削りたくないなぁという思いから。
      • やった人がいたら効果を知りたいなー。
    • 復元ポイントの作成をやめた。
      • Windowsの使い方としては危険な部類に入ると思うが、この時点で残量30MBだったのでやめてしまう。
      • コントロールパネル→バックアップと復元センター→復元ポイントの作成または設定の変更→システムの保護タブで、自動復元ポイントのチェックボックスをオフに。
    • 一時ディレクトリを移動。
      • OS全体の一時ディレクトリとユーザごとの一時ディレクトリを移動。
      • コントロールパネル→システム→システムの詳細設定→環境変数
        ユーザ環境変数とシステム環境変数のTMPとTEMPを別ドライブに。
      • とりあえず手元にあったSDカード2Gを一時ドライブにした。 これは書き込みが遅いんで失敗だった。いずれCardBusあたりにもう少しマシなのを挿そうと思う。
    • 「Windowsの機能の有効化または無効化」で、使わない機能をオフに。
      • コントロールパネル→プログラムと機能→Windowsの機能の有効化または無効化
      • 最終的にXPSビューアを除いて全部オフにした。
    • C:\Windows\SoftwareDistribution\Download\の中身を削除
      約16MBだった
      • updateするとここにファイルが増えるので、updateして再起動後ちまちまと削除する。
    • C:\Users\Public\の下にサンプル動画/画像/音楽などが入っているので、これらを削除。
      約157MB
    • 壁紙(C:\Windows\Web\Wallpaper\の中身)を消してしまう。
      約43MB
      • どうしても壁紙設定したければお気に入りの一枚だけ置くことに。
        現在はさびしい真っ黒背景
    • MovieMaker(C:\Program Files\Movie Maker)をばっさり削除
      約94MB
      • どうせ使わない、と書くとアンチMSみたいだがそういう意図はない。
      • 所有者がTrustedInstallerになっており、所有者変更+フルコントロールに変更して削除。以下削除できないものは同様に。
        エクスプローラからちまちまとオペレーションしたが、後からtakeownとcaclsというコマンドを知る。うーん無駄な努力だった。
    • MCE機能(C:\Windows\ehome\の中身)をばっさり削除
      約147MB
      • WMPの範囲で我慢。なかったものとあきらめる。ehSSO.dllは握られていて削除できない。
      • 重ねて書くがアンチMSではない。が、147MBは無視できない。
    • Help関連(C:\Windows\Help\Windows\ja-JP\の中身)を消してしまう。
      約112MB
      • 親切に動画で説明してくれるものがあるが、いらーん。と書くとアンチMSみたいだが、CFの1MBは血の一滴と思ってずばっと消す。
    • ページファイルを削除
      約1.6GB
      • ここまでちまちまとやってきたが、よくよく考えたら大物が残ってた。これだけでよかったかも。
      • コントロールパネル→システム→システムの詳細設定→詳細設定タブ→パフォーマンス設定→詳細設定タブ→仮想メモリ→変更で、「ページング ファイルなし」を設定。 パフォーマンスオプションでは「すべてのドライブの総ページング ファイルサイズ: 0MB」になってるけど、タスクマネージャーで見ると、ページファイル571Mと出てる・・不思議。
      • 再起動後、エクスプローラから削除した。

    インストールしたもの

    どうしてもインストールしたいアプリは以下で、なんとか入れた。でもドライバ・アンチウイルスを除けば、書き込み用ドライブに分けて入れてもよかったかも。
    • ブラウザ:Firefox
      • IE7だけにして容量をかせぐという手もあるが、
      • 一時ディレクトリを書き込み用ドライブに振り向ける。
    • Firefox用google toolbar。なけなしの1MBを支払う価値があるだろう。
    • terminal:Tera Term
    • テキストエディタ:サクラエディタ
      • EUCとLFに対応しているエディタが使いたいから、メモ帳では要求を満たせない。
    • PDFreader:Foxit Reader
      • PDFを読めないと困ること多い。起動/動作が早いのがいいが、時々再現性に問題が。
    • トラックポイント関係。lenovoのサイトから。Vista対応版がある。
      • ホイール相当が使えないと不便だから。
    • アンチウイルス:NOD32アンチウイルス V2.7
      • なんといっても動作が軽い。Vistaでも愛用。

    結果

    なんとかWindows Updateも終えた。 現在、起動ドライブの残量は1.85GB。 SP1が来たらあっさり行き詰まったりして。

    動作が非常にきびきびとして快適だー。これはかなりうれしいかも。
    スリープに入るのに3秒ほど、復帰は1秒程度。スタンバイ状態から休止状態に移行するとどうなるかわからんけど。

    実はX40に耐えかねてX60も購入したのだがこっちはVisualStudioなどファットなクライアントアプリユースにして、ライトユースはX40で行こう、という気になっている。

    でも、もうlexarの300xなCFに目移りしてたりして。。

    おまけ

    --------------------------------------------------
    CrystalDiskMark 1.0 (C) 2007 hiyohiyo
          Crystal Dew World : http://crystalmark.info/
    url: archives/2007/09/thinkpad-x40hddcfvista.html
    --------------------------------------------------
    
       Sequential Read :   39.079 MB/s
      Sequential Write :   30.818 MB/s
     Random Read 512KB :   39.903 MB/s
    Random Write 512KB :   11.081 MB/s
       Random Read 4KB :   14.401 MB/s
      Random Write 4KB :    0.120 MB/s
    
                  Date : 2007/09/05 0:11:54
    
    なんつーか。Random Writeが大変な事態に。。

    追記

    一時ディレクトリをSDカードに振り向けていたが、webブラウズでイラっとくるのでRAMディスクにした。
    IOデータのRamPhantom2。 フリーのものもいくつかあるようだったが、Vistaでの動作を明に謳っていることを重視して購入した。IOデータのメモリを購入するとDL権がついてくるみたいなので活用するといいかも。
    RAMディスクが作成されるタイミングが少し遅いみたいで、すべての一時ディレクトリをRAMディスク上に作ることはできなかったが、ユーザログオン後の一時ディレクトリはRAMディスク上に移動した。RAMディスクの割当ては現状128MB。

    これは快適だー。