Browse Month: April 2008

dotfiles を make で管理する

dotfiles とか – 4n0+h3r p13c35 をみて、この発想はなかった!ということで試してみました。makefile の書き方がよく分かっていないので、結局同じ形に落ち着きました。FreeBSD の make だと動かないので、gmake(GNU Make) を使う必要がある。OSX、Fedora、CentOS で動作確認できました。あとは、.el を自動的にコンパイルするようにすればかなり便利になる。Emacs の起動が遅いので elc にすれば改善するはず。

 

all:setup

.PHONY: all setup clean

DESTDIR=${HOME}

DOTS=\

        dot.emacs \

        dot.emacs.d \

        dot.my.cnf \

        dot.screenrc \

        dot.zfunctions \

        dot.zlogin \

        dot.zshrc

DOTS_LOCAL=\

        dot.emacs.local \

        dot.zshrc.local

        

setup .PHONY: dots-setup

dots-setup .PHONY: ${DOTS} ${OTHERS}

clean: dots-clean

${DOTS}:

        echo $@

        ln -s ${PWD}/$@ ${DESTDIR}/${subst dot,,$@}

${DOTS_LOCAL}:

        touch ${DESTDIR}/${subst dot,,$@}

clean:

        ${MAKE} dots-clean

        ${MAKE} dots_local-clean

dots-clean:

        rm -rf ${subst dot,${DESTDIR}/,${DOTS}}

dots_local-clean:

       rm -rf ${foreach p,${DOTS_LOCALE},${DESTDIR}/${p}}

Terminal.app 上での Ctrl-D

Leopard の Terminal.app 上で Ctrl-D(Delete) を押すと、なぜか「〜」が表示されてしまってかなり困っていた。よくよく現象を確認すると、ブラウザなどではちゃんと Ctrl-D が Delete として機能するので、Terminal.app 上の問題であることが分かった。iTerm でもおなじ現象だった。zsh の設定に原因があるのかもと思って、bash に切替えたらちゃんと動いた。csh や tsch も試してみたが機能しなかった。zsh のキーバインドを設定すればいいと思って、まちゅダイアリー を参考にしながら次の設定を .zshrc に追加したら機能した!!!

+bindkey ‘^[[3~’ delete-char 

ずっとはまっていて生産性にかなりの影響をもたらしていたが無事解決してよかった。

Leopard でのバックアップ

Leopard では、TimeMachine というすばらしいバックアッププログラムが付属されている。御存知のとおり、USB 経由のハーディスクへ定期的に差分バックアップしてくれるプログラムです。TimeMachine をさっそく使ってみたが、次の点でかなり不満でした。

  • バックアップする間隔を設定できない(かなり頻繁にバックアップするので、USB ハードディスクがうるさい)
  • バックアップを除外するディレクトリは指定できるが、ファイルの種類など細かく指定できない

あわせて、僕の場合は写真や音楽などのデータは、すべてサーバ上において参照しているので、差分バックアップは不要で、最新のデータを再インストールしたときのためにドライブごと一括でバックアップしたい方が自分の使い方にあっています。というわけで、別のバックアッププログラムがないかと探してみたところ、Carbon Copy Cloner を見つけました。Carbon Copy Cloner の特徴は、次の通りです。

  •  起動ドライブごとバックアップできる
  • バックアップしたデータを起動ディスクとして使える(もちろん、USB 経由でバックアップしたときのみ)
  • イメージでもバックアップできるので、sshfs などでマウントしたサーバなどへのバックアップが可能
  • バックアップスケジュールを設定することができる

さっそく使ってみましたが、1時間30分ほどで約30GBのバックアップをすることができました。さっそく1週間に1度バックアップをとるようにスケジューリングして設定してみました。screen-capture.png OSXに付属している Disk Utility でも起動ドライブまるごとバックアップできるみたいです。 

プログラマーとして生きていくために

以下のことを肝に銘じなければならない。

  • 毎年少なくても一つの言語を学習する
  • 四半期毎に技術書籍を読む
  • 講習を受講する
  • ローカル・ユーザ・グループに参加する
  • 異なった環境に慣れ親しんでみる
  • 最先端にとどまり続ける
  • インターネットを使う

次を習慣づけること。

  • 知識は、テキストプレインに保存すること
  • コマンド・シェルの力を存分に使うこと
  • 一つのエディタを熟知すること
  • 常にソースコード管理を使うこと
  • テキスト操作言語を学ぶこと
  • コードを生成するコードを作成すること

そして、ソフトウェア職人気質、コードコンプリート、プログラミング作法、達人プログラマーを読むこと。自分へのメモエントリです。 

最近読んだ本

まず、パラダイス鎖国を読んだ。著明なブロガーでもある海部さんの本です。この本の最初の方に海外で働きたい人が年々減っているというレポートがありました。これを読んだとき、チャーンスと心の中で思い切り叫んでしまいました。僕は海外で働きたくて仕方がないので、もしそのチャンスがあるとすれば真っ先に立候補するのに 、みんなは日本でずっと働きたいのだろうか?パラダイス鎖国という言葉は当時ブログで読んだときは、あまり心に残らなかったけれど、この本を読んでかなり考えさせられた。ずっとこのままで日本は大丈夫なのだろうか?僕自身はずっと日本で生きていきたいのだろうか?そんなことを意識させてくれる本でした。答えはもう出ているので、あとはさらに「プチ 変人」になれるようにがんばっていきたい。   
次にアップルの法則。最近のアップルの躍進について詳しく書かれている本です。アップルに興味あると人はぜひ読んでみるといいと思います。あまりにも面白すぎていっきに読んでしまいました。アップルの成功にまなぶべきことも書かれていて、自分自身で考えて行動する重要さがものすごく大事だということですね。 
  そして、プログラマー現役続行。プログラマーが日頃からするべき学習方法や姿勢などについて書かれています。この本は、特に新入社員の人におすすめできる本です。本物のプログラマーになりたいという志の高い人がぜひ読んでみてください。当面の目標は、朝型になることです。    

ThinkPad をリカバリした 2

そして、必要なアプリケーションのインストールした。

  • ATOK
  • ClearType
  • DaemonTools 3.47(無料の最後のバージョン)
  • eo
  • FileZilla
  • Flyalite
  • Madonote
  • matrix のスクリーンセイバー
  • Visual Studio Express Edition 2008(C++ と C#)
  • Media Player Classic
  • Putty ごった煮
  • Safari 3.1 for Windows
  • Cygwin
  • VirtualDimension
  • VMware Server
  • MSN Messenger
  • xkeymacs(これがないと生きていけない)
  • MSN Messenger
  • xyzzy

とこんなところです。Windows のセットアップはだいたい終わったので、メインで使う FreeBSD を引き続きセットアップしますか。 

ThinkPad をリカバリした 1

ThinkPad x40 の D2D リカバリ領域を誤って壊してしまいました…。リカバリ CD から、工場出荷時の状態にリカバリすると、D2D リカバリ領域も復活します。ちなみに、D2D リカバリ領域を復活させるために CD-ROM が 6 枚も必要です。この CD はレノボに注文する必要があります。D2D リカバリ領域は誤って削除しまったときのため、バックアップしておくといいかもしれません。時間がとれたら、D2D リカバリ領域のバックアップ方法を調べてみたいと思います。そして、D2D リカバリ領域を復活させると、Windows XP ももちろん初期の状態になります。Windows XP のまず初期設定を行います。

  1. 次の不要なアプリケーションを削除する
    • Symantec 製品 (Client Security, AntiVirus など)
    • ThinkVantage Message Center
  2. ThinkVantage System Update を実行してシステムを最新の状態にする
    • System Update 自体のプログラムのアップデートが二回くらいあります、うまくいかないときは System Update を何度か再起動してみる

    • System Update を使って、ドライバ類のプログラムをすべてバージョンアップする
    • すべてのアップデートが終わると、ThinkPad Access Connections というネットワーク設定の切り替えをしてくれるソフトウェアが強制終了してしまうので、最新版をダウンロードして再インストールする
    • ThinkPad Access Connections を再インストールするときは、プロファイルデータも一緒に削除した方がいいです、削除しないと新しいThinkVantage Access Connections でプロファイルデータの編集や削除ができなくなるので注意する
  3. Windows Update を実行します
    •  84 個!くらいのアップデートがあったりしますが、コーヒーでも飲みながら気長にアップデートしましょう
    • IE7 などもインストールされるので、数回 Windows が再起動する必要がある

さて、ここまで約 3 時間ほどです。。。もう二度と再インストールしたくなくなります。そして、あとは最低限必要なソフトウェアをインストールするけれど、これは次のエントリで書きたいと思う。

POP before SMTP のセットアップ

最近、25 番ポートをブロックするプロバイダが多くなったので、社内のメールサーバに submission port をセットアップするための準備をした。前にセットアップしたときにはオープンリレーになってしまったので、今回はテスト環境でちゃんと確認してから作業してみた。まず、環境は Postfix + Dovecot を使う。POP before SMTP  のプログラムは、たしか drac だと思って試してみたがソースコードが古くてrpm もないのでどうしたものかなと思ったら、pop-before-smtp という名前がそのままのプログラムがあった。Fedora 8 でのセットアップ手順

  1. 必要なパッケージをインストールする
    • sudo yum install pop-before-smtp perl-BerkeleyDB
  2. pop-before-smtp の設定ファイル /etc/pop-before-smtp-conf.pl を変更する
    • ログを出力するために、$logto 変数を有効にする
    • 監視するメールのログファイル名を設定するために、$file_tails 変数をアンコメントする
    • 30 分おきに IP アドレスが破棄されるように、$grace 変数をアンコメントする
    • Dovecot の maillog を認識させるために、$pat 変数で Dovecot を正規表現部分をアンコメントする
    • Postfix の BerkelyDB を使うために、 Postfix BerkeleyDB の部分の =cut という文字列を削除する
  3. あとは、/etc/init.d/pop-before-smtp start するで問題なし

この状態で、pop-before-smtp を起動すると自動的にローカルの IP アドレスが無視されてしまうのでローカルの仮想環境とかにテスト環境を作っているとテストできないので注意する。もし、pop-before-smtp からローカルの IP アドレスも有効にしたいときんは、/usr/bin/pop-before-smtp を無理矢理書き換えるしかないっぽい。あとは、telnet などで pop3 を叩いて、sudo pop-before-smtp –list して正しく IP アドレスが登録されていれば問題なし。Postfix で submission port を有効にするには、master.cf の次の行をアンコメントするだけで pop-before-smtp による認証が有効になる。その下の -o オプションはコメントアウトのままで問題なかった。

 submission inet n       –       n       –       –       smtpd

POP before SMTP は、シンプルでいいですね。

Fedora & CentOS での yum 用ミラーリストの選択

Fedora や CentOS の yum は、デフォルトで世界中のミラーリストから選択するようになっている。この状態だと、yum update したときにまれにすごく遅くなることがある。なので、国内のミラーリストから選択するように変更する。まず、Fedora から、次の例は Fedora Core 5 の例。(古くてすいません。。。)

  1.  /etc/yum.repos.d/mirrorlist というファイルを作って、次の内容を記述する
    • ftp://ftp.kddilabs.jp/Linux/packages/fedora/core/$releasever/$basearch/os/
       ftp://ftp.iij.ad.jp/pub/linux/fedora/core/$releasever/$basearch/os/
       http://ftp.iij.ad.jp/pub/linux/fedora/core/$releasever/$basearch/os/
       ftp://ftp.riken.jp/Linux/fedora/core/$releasever/$basearch/os/
       http://ftp.riken.jp/Linux/fedora/core/$releasever/$basearch/os/
       ftp://ftp.sfc.wide.ad.jp/pub/Linux/Fedora/$releasever/$basearch/os/
       ftp://ftp.jaist.ac.jp/pub/Linux/Fedora/core/$releasever/$basearch/os/
       http://ftp.jaist.ac.jp/pub/Linux/Fedora/core/$releasever/$basearch/os/
  2. /etc/yum.repos.d/*.repo ファイルを編集して、mirrorlist を次のように書き換える
    • mirrorlist=file:///etc/yum.repos.d/mirrorlist
  3. yum update して確認する

他の Fedora の場合は、Fedora Core 用ミラーサイトを参考にして国内のミラーリスト一覧に変更すればいい。ただし、6 までしか用意されていない。 Fedora Core 5 の update が体感できるほど早くなりました。fastestmirror を入れたときよりも効果があります! 次に、CentOS。次の例は、CentOS 5.1 の例。

  1.  /etc/yum.repos.d/CentOS-Base.repo の mirrorlist に cc というパラメータを渡すことで、国別のミラーリスト一覧を取得することが出来る。例えば、日本国内のミラーリスト一覧を取得する場合は、次のように設定する。
    • mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&cc=jp
  2. epel に関しては、そのままの状態で国内のミラーリスト一覧が取得できるのでそのまま
    • http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=i386 にアクセスすると分かります
  3. rpmforge に関しては、国内のミラーリストがないみたいなのでそのまま
  4. yum update して確認する

CentOS の場合は、デフォルトのままでも yum update は早いのであまり変わらないよっと。

Apache 2.2.8 にアップデートした

サーバ群を Apache 2.2.2 から 2.2.8 にアップデートしたら、なんと mod_proxy_balancer の次のような設定が書けなくなった。

ProxyPass /hoge balancer://hoge

<Proxy balancer://hoge>

BalancerMember http://s1.example.com loadfactor=10

BalancerMember http://s2.example.com loadfactor=5

</Proxy>

ProxyPass /hogehoge balancer://hogehoge

<Proxy balancer://hoge>

BalancerMember http://s1.example.com loadfactor=10

BalancerMember http://s2.example.com loadfactor=5

</Proxy>

この状態で、configtest すると、次のような警告が表示されてしまうようになった。

これは、このあたりにある話です。仕方がないので、Proxy balancer を一つに統一して対応しました。

個人的には、すこし不便利になりました。

  • 1
  • 2