Fedora15

これまでと同じ方法で、yumコマンドを使ってFedoraを14から15にアップグレードしました。

まず、fedora-release-15-1.noarch.rpmを入れるのですが、fedora-release-rawhide-15-1.noarchと依存関係があると言われるので、そちらも同時に入れました。
あとは今まで通りです。

# rpm -Uvh http://download.fedora.redhat.com/pub/fedora/linux/releases/15/Fedora/i386/os/Packages/fedora-release-15-1.noarch.rpm http://download.fedora.redhat.com/pub/fedora/linux/releases/15/Fedora/i386/os/Packages/fedora-release-rawhide-15-1.noarch.rpm
# rpm -Uvh http://download.fedora.redhat.com/pub/fedora/linux/releases/15/Fedora/i386/os/Packages/fedora-release-notes-15.0.0-1.fc15.noarch.rpm
# yum clean all
# yum -y upgrade

ここでエラーが出まくったので、エラーが出たプログラムを片っ端から削除。
特に普段使ってるようなものはなかったので……。そろそろ初めからインストールし直した方がいいのかなとも思いますが、面倒くさい。

再度yum -y upgradeを実行して、再起動……起動しない?!
ログインの手前で起動処理が止まってしまいました。

とりあえずデーモン達は動いているようで、HTTP、Samba、SSHなどは繋がり、ほっと一安心。
MySQLはエラーで起動していなかったのですが、/etc/my.conf に書いてある default-character-set=utf8 の書式が変わったのが原因みたいで、character-set-server=utf8 に書き直したらあっさり直りました。

前回アップグレードしたときもそうだったのですが、Perlのバージョンが上がったことで、CGIが動かなくなってしまっていました。
これはCPANでモジュールのアップデートを行えばだいたい直ります。

# cpan
cpan> upgrade

しかし今回はそれでもMySQLへのアクセスが上手くいかない。PHPは素直に動いてくれるのに……。

エラーログを見るとこんな感じ。

[Wed Jun 08 05:57:51 2011] [error] [client 192.168.0.2] install_driver(mysql) failed: Can't load '/usr/local/lib/perl5/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.16: cannot open shared object file: No such file or directory at /usr/lib/perl5/DynaLoader.pm line 200.

ググってみるとこれは、libmysqlclient.so.16 が見付からないために mysql.so が読み込めないということのようなのですが、/usr/lib/mysql を見ると、あるのは libmysqlclient.so.18 で数字が16から18になってる。

これを読み込むように指定している場所は、/etc/ld.so.conf なようで、中を見てみると ld.so.conf.d/*.conf をインクルードしている。
そこで /etc/ld.so.conf.d/ 以下を見ると mysql-i386.conf というのがあったので開いてみると、/usr/lib/mysql と書かれていた。
特に間違いはないように思える。
16という数字はどこから出てきたのだろう?

mysql-server や perl-DBD-MySQL をyumで削除して入れ直してみても状況は変わらず。

ホントにOSからインストールし直そうかなあ……。

■ 追記

どこに libmysqlclient.so.16 と書かれているのか探していたら、以下の場所にあったので、DBD::mysqlをインストールし直したらCGIは表示されるようになりました。

# find /usr/local/ -type f -print | xargs grep libmysqlclient.so.16
バイナリファイル /usr/local/lib/perl5/auto/DBD/mysql/mysql.so に一致しました
# cpan
cpan[1]> get DBD::mysql
cpan[2]> q
# cd ~/.cpan/build/DBD-mysql-4.019-r12r_n/
# ./Makefile.PL
# make
# make install

(cpanコマンドでmakeとinstallできるみたいだけど)

起動されない問題の方は、SSHでログインして startx すれば起動することがわかりました。
/var/log/boot.log を見ても何が原因で止まってるのかよくわからない。

■ 追記

起動時に途中で止まってGUIが起動しない理由がわかりました。
依存関係で適当に削除したときに、ログイン画面を表示するための gdm を削除してしまっていたようです。
これをインストールし直したらログイン画面が出るようになり、デスクトップが使えるようになりました。

Firefoxのマウスジェスチャではてブコメントを開く

はてなブックマーク拡張
Firefoxにはてなブックマークのアドオンをインストールすると、ステータスバーに現在開いているページのはてなブックマーク数を表示できたり、1クリックでブクマコメントを表示できたりととても便利です。

僕はコメント表示の機能をよく使うのですが、クリックする場所が狭すぎて不便だなと常々思っていました。
我が家のPCはデュアルディスプレイなので、左画面の右端にカーソルを合わせなくてはならず、特に大変なのです。

そこで、マウスジェスチャを使うためのアドオン、FireGesturesのユーザースクリプトを利用して、ジェスチャーでコメントを表示できるように設定しました。

ユーザースクリプトは次のように書きます。

window.hBookmark.CommentViewer.show(window.content.location.href);

間違ってたらごめんね。:P

AndroidでGoogleカレンダーの予定が消えた?

僕は予定は全てGoogleカレンダーで管理していて、Xperiaではジョルテっていうカレンダーを通してGoogleカレンダーを利用しているのだけど、昨日からジョルテで水曜日の予定ひとつ残して他の予定が全て表示されなくなってしまっていた。
どうやら先日発表されたAndroidの脆弱性Googleが対応したのが原因らしい。

対処方法がジョルテの公式サイトに載っていて、その通りにしたらちゃんと予定が表示されるようになったのでここに記しておく。

1) ジョルテ画面より[メニュー]ボタンを押し、[設定]をタップする。
2) [カレンダーの設定]→[表示するカレンダー]をタップする。
この時、[メニュー]ボタンにより、同期や追加など確認する。
確認後、カレンダー表示が問題ない場合、以下省略。

3) ホーム画面より[メニュー]ボタンを押し、[設定]をタップする。
4) アプリケーションの管理画面に遷移する。
([アプリケーション] → [アプリケーションの管理])
※ アプリを全て表示する。(Android 2.x 以降)
([メニュー]ボタンより [フィルタ] → [すべて])
5) カレンダーデータの消去を行う。
([カレンダーの保存] → [データを消去])
※ PC(Web)のGoogleカレンダーの情報はクリアされません。
6) 3G / Wi-Fi回線より同期をおこなう。
(自動で同期されるので設定の必要はありません)

この通り最後までやったらちゃんと直った。
2)の確認では、日本の休日カレンダーが、チェックを外してた筈なのにチェックが付いていたので外した。
5)のカレンダーの保存というのは、アプリケーション一覧の下の方にある。ABC順なので探せばすぐ分かると思う。
6)の同期というのは放っておけば行われるが、すぐに行いたかったら、[設定]→[アカウントと同期]からGoogleのアカウントを選択し、[カレンダーを同期]のチェックを外して付けるか、[メニュー]ボタンを押して[今すぐ同期]を選択する。

同期されてもジョルテにはすぐ反映されないみたいなので、どっちにしろちょっと待たないといけないのかな?
反映されると、2)で設定したチェックがまた元に戻ってるので設定し直さないといけないみたい。

CDラックを買いました

YAMAZEN CDタワー
本棚に並べて置いてあったCDが、3月と4月の地震で2度も落下してしまったので、扉付きのCDラックを買いました。

YAMAZEN CDタワー(高さ120cm)  FCDT-2612DSG(WH) YAMAZEN CDタワー(高さ120cm) FCDT-2612DSG(WH)

山善  
売り上げランキング : 9073
おすすめ平均 5つ星のうち 4.0

Amazonで詳しく見る

買ったのはこちら。高さ120cmの白を選びました。
値段は約6千円と、扉付きの棚にしては安い方でしょうか。デザインもなかなかよいです。

以下、写真付きで感想を書いておきます。

VisualStudioのツールチップが英語で表示されてしまう

Intellisense
VisualStudioで関数を途中まで入力したり、Ctrl+Shitf+Spaceを押したりするとツールチップで表示されるヒントのことを Intellisense と呼ぶそうですが、VisualStudio 2008 SP1を入れていると、これが英語になってしまうという問題がありました。
同ソフトを入れていると、2005や2010でも同様に英語になってしまうようです。

以下から修正プログラムをインストールすることで直りました。

UA-4FXCWのランプがつかない

UA-4FXCWを買ってきて繋げて、最初はちゃんと動作していたのに、しばらく経って久しぶりにPCを再起動したらランプがつかなくなってました。
まさか壊れた?それともバグ?とか思ったのですが、調べてみたら単純な設定ミスでした。

サポートページによると

Q. 質問
UA-4FX のエフェクトのボタンを押してもランプが点灯せず、エフェクトをかけることができません。

A. 回答
サンプルレートが 96 kHz になっていませんか?
UA-4FX のエフェクト機能は、「44.1」「48」kHzの場合のみ使用可能です。
本体左側面にある「SAMPLE RATE」スイッチが「96PLAY」や「96REC」になっているとエフェクト機能は動作せず、ランプも点灯しなくなります。
※本体の SAMPLE RATE スイッチが「44.1」「48」に設定されている場合でも、サンプルレートの設定が切り替わっていない場合があります。一度 USB ケーブルを接続しなおしてみてください。

<サンプルレートの変更方法>
1. USB ケーブルを抜きます。
2. SAMPLE RATE スイッチを「44.1」もしくは「48」に設定します。
3. 再度 USB ケーブルを接続します。

ということで、サンプリングレートのスイッチが「96PLAY」になってるのが原因でした。
書かれている通りスイッチを「48」に切り替えてUSBを接続し直したら、ちゃんとランプもついてエフェクトもかけられるようになりました。

Apacheのアクセスログからスパムアクセスを分離する

設置していた掲示板に、もの凄い数のスパムコメントがされるようになってしまったため、何ヶ月か前にページを撤去しました。
しかし、掲示板があったURLには未だにたくさんのアクセスがあります。
アクセスログを見てみると、リクエスト元のIPはバラバラで、アクセスの約8割がPOST。1分に4回くらいのアクセスがあります。
もともと流行っていた掲示板でもなかったので、アクセスはほぼ間違いなくスパムコメントを記入するためのBOTでしょう。

これらのアクセスに対し、初めは.htaccessでアクセスを禁止し、403を返すようにしていたのですが、それでもアクセスが止まないため、404を返すようにしてみました。
ところが、なおアクセスは続きます。

このように、明らかにスパムだとわかっているアクセスが続くと、ネットワークやサーバーに負荷がかかるというのは勿論ありますが、特に不便しているのはアクセスログが汚れてしまうことです。
アクセスログはこの掲示板へのアクセスのログで埋め尽くされ、容量が肥大していくだけでなく、現在運営しているページへのアクセスログが確認しづらくなってしまいます。
また、エラーログは、これらのアクセスに対する403や404のログで埋まってしまい、開発中のCGIの動作確認をしようと思っても、すぐにログが流れてしまいます。1

ということで、この旧掲示板に対するアクセスログとエラーログを、他のログとは分けて保存できないかを考えました。

調べてみたところ、アクセスログは SetEnvIf というディレクティブを使うことで、条件ごとのログが保存できるようでしたので、httpd.confに以下のように設定してみました。

LogFormat "%h %l %u %t \"%r\" %>s %b" common
SetEnvIf Request_URI "mybbs" spam
CustomLog logs/spam_log common env=spam
CustomLog logs/access_log common env=!spam

これは、リクエストされたURLに "mybbs" を含む場合に spam というタグを付けて、このタグが付いたアクセスを spam_log に保存し、それ以外を access_log に保存するという意味です。
"mybbs" の部分は正規表現で自由に設定できますので、スパムアクセスがあるアドレスに合わせて設定します。

エラーログの方は分ける方法がわかりませんでした。
なので、旧掲示板に対するアクセスがあった場合、リダイレクトさせてしまうことにしました。
そうすればエラーにならないので、エラーログは残りません。

リダイレクトには、410 Goneを使ってみました。410の場合リダイレクト先を指定しません。

Redirect gone /cgi-bin/mybbs/

アクセスを無くさせるためには他のステータスを返した方がいいのかもしれませんが……。

  1. 開発環境と運用環境が同じサーバーですから。

CPANモジュールをinstall/upgradeするときに常にyesと答える方法

OSをアップグレードしてPerlのバージョンが変わったら、CGIが動かなくなってしまったので、CPANモジュールをアップデートしてみることにしました。

ところが、CPANでinstallやupgradeコマンドを使うと、変更がある度にいちいち確認され、その度にyesと答えるためにエンターキーを押さなければなりません。
普段は内容を確認しながら処理を行えるのでいいのですが、今回みたいに一度にアップデートさせたい場合など、とても面倒です。
そこで、常にyesと答える設定を探しました。

yumのように-yオプションでできるかと思いきやダメで、少し覚えにくいコマンドを実行する必要があるようです。

$ sudo cpan
cpan> o conf prerequisites_policy follow
cpan> o conf commit

これで自動的に更新してくれるようになります。

元のように確認してくれるようにするには、followをaskに変えて実行します。

cpan> o conf prerequisites_policy ask
cpan> o conf commit

Fedora14

Fedoraのバージョンを13から14にアップグレードしてみました。
最近全然サーバーをいじってなかったんですけど、そういえば新しいの出てたなって思い出して。もう15が出るとか出ないとか言ってるから、今更なんですけど……。

さて、アップグレードの方法ですけど、preupgradeというコマンドがあって、これを実行すれば簡単にできるよと言われていたので実行してみました。
表示されたウィザードを進めていくと、再起動するように言われたんですけど、再起動したところで「not driver found」と表示されて、先に進めない……。
幸いカーネルの選択画面でFedora13のカーネルを選べば、今まで通り普通に起動できたので、今度はCUI版のpreupgrade-cliを実行してみたけれど、結果は同じ。

ドライバが見付からないというのは、何のドライバが見付からないのだろう?
HDDを繋いでるSATAのドライバだろうか?
適当に選んでみても先に進めず。

よくわからないので、今度はFedora13にアップグレードしたときと同じ方法でやってみました。

# rpm -Uvh http://download.fedora.redhat.com/pub/fedora/linux/releases/14/Fedora/i386/os/Packages/fedora-release-14-1.noarch.rpm
# rpm -Uvh http://download.fedora.redhat.com/pub/fedora/linux/releases/14/Fedora/i386/os/Packages/fedora-release-notes-14.0.3-1.fc14.noarch.rpm
# yum clean all
# yum -y upgrade

すると、いくつかの依存関係で怒られたので、怒られたの全部削除1してもう一回アップグレードを実行2

今度は上手くいった!

最後に再起動。

# reboot

確認。

$ cat /etc/fedora-release
Fedora release 14 (Laughlin)

ばっちり!

ちなみにpreupgrade-cliはLANG=Cじゃないと動かないらしいので、以下のように実行しました。

# LANG=C preupgrade-cli 'Fedora 14 (Laughlin)'
  1. # yum remove hoge fuga
  2. これでいいのか?

震災後の首都圏の街の様子

僕は東京都内まで電車一本で行けるある首都圏の街に住んでいますが、震災後の地元での様子を記録しておきたいと思います。

まず我が家の被害ですが、僕の家では、食器棚の扉が開いてコップが3つ割れたのと、本棚に積んであった本が崩れ、CDが床に落ちて何枚か砕け散った程度でした。
家そのものは新築で耐震性を重視した建物だったので、建物自体は無事でしたが、壁紙に何ヵ所か細かいひびが入っていました。これは後で火災保険で直せるのかな。
その他、特に高価な電化製品などに被害が無かったのは良かったと思います。前に紹介したコンポとか割と不安定な場所に置いてあったので、無事で本当に良かった。

次に家の周りですが、住宅街にはあまり変化は見られないのですが、駅の近くに行くと、節電のためにほとんどの店が灯りを消して店内が暗くなっています。
ネオンや看板の灯りは消されていて、店内の照明は半分だけつけて営業している店がほとんどでした。暗いのでぱっと見開店しているのかどうか分からない店もあります。
スーパーの食品売り場では、冷蔵の商品棚に付いている電灯が全部消されていたので、かなり暗く感じました。また、冷暖房も止められているため、売り場はとても寒いです。特にイオンの巨大な食品売り場は寒かった。

運転停止中のエスカレーター
駅に行くと、エレベーターは動いているのですが、エスカレーターはほとんど止められていました。
駅ビルの前など、メインの通路がエスカレーターになっているような所では、裏の方にある階段まで迂回して上り下りをしなければならない所もあり、ちょっぴり不便ですね。
普段階段があまり使われてない所では、店員に階段の場所を聞いている人も何人か見ました。

鉄道の節電状況は会社によって違っていて、JRでは一部の電車で車内灯を消していました。
これが、ホームが2階にあるような屋根のあるホームに着くと、車内は真っ暗になります。目の慣れのせいもあるのですが、向かいに座ってる人の顔もはっきりと視認しづらいような暗さだったので、防犯の面で不安が残ります。
ホームの電灯は半分だけつけていました。薄暗くても利便性の面ではほとんど問題ないのですが、今までどれだけ灯りに照らされて生きてきたのかを実感します。
地下鉄では、地下を走ってる間は車内灯をつけて、地上に出ると消すというようなこまめな節電をしていました。
それから、地下鉄の地下深いホームでは上りのエスカレーターだけ稼働していましたね。階段よりエスカレーターの方が幅を取っているような、そんな駅です。

関東では電力不足の影響で計画停電が行われていましたが、初めは電車のダイヤも臨時のもので、私鉄では電力利用のピーク時に3時間くらい電車を止めている会社もありました。
しかし、何日か経って状況が把握できてきたのか、現在では節電用の臨時のダイヤで運行しています。この臨時のダイヤでは電車の本数が少なくなっていて、特に昼間はこれまでの2分の1から3分の1とかなり少なくなっていますが、ランダムに間引くのではなく、時刻が決められているので、時刻表さえ手に入れれば対応できそうです。
ただ、インターネットの乗り換え案内などのサービスが、まだこの臨時のダイヤに対応していないようなので、その点はとても不便ですね。

震災後の自粛が問題視されていますが、自粛と言われてる中にも、震災による影響と電力不足による影響があるようです。
父の会社では、今年は歓送迎会を自粛したと言っていましたが、理由は電車のダイヤが不安定で、遅くなると都内から帰れない社員が出てくるからということでした。
知り合いのいる町では、停電の影響でしばらく電車が運休しているという発表がありましたが、実際は地震の影響で設備が壊れていたのが原因だったそうです。
政府が自粛を呼びかけることには問題があるかもしれませんが、民間や個人が自粛と言った場合、裏に様々な事情があることを考慮した方がいいでしょう。

ちなみに僕の友達の中では、不謹慎だからとか、自粛しようという話はほとんどなく、むしろ思いっきり楽しんで経済の復興に貢献しようという話が多いです。

街に出ると本当に暗くて、あのパルコでさえ店内の灯りが一部消されていて、とても暗い気持ちにさせられます。
これから電力の供給量は復旧するのか、それとも電気に依存しない社会が作られるのか、見守っていくしかないですね。
コンピューターを扱う者としては、電力がある程度までは復旧してもらわないと困るのですが。