2011/11/03

MySQL を 5.5 にアップデートしたら起動しなくなっちまった


CentOS 5にインストールした MySQL を 5.0.67 から 5.5.17 にアップデートしたら起動しなくなったので解決方法をメモ。
(いきなりバージョン飛ばし過ぎというツッコミはおいておいて・・・)

まずは基本、mysql.log を確認。
111102 23:44:11 [Note] Plugin 'FEDERATED' is disabled.
/usr/libexec/mysqld: Table 'mysql.plugin' doesn't exist
111102 23:44:11 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
だそうで。
とりあえず言われた通りに mysql_upgrade してみるけどサーバに接続できないと怒られる。だからそのサーバが起動しないんだって!

試行錯誤の結果、 my.cnf の設定が原因であることが判明。
サーバの文字コード設定が default-character-set から character-set-server に変更されています。
実はこの変更は MySQL 5.0 からされていたようですが(知らなかった・・・汗)、MySQL 5.5.3 で非推奨のパラメータが全て廃止された(エラーになるようになった)ために起動しなくなったのでした。

下記のブログが参考になりました。MySQL 5.5.3 での主な変更点がまとめられています。

「え? そこ?」 という感じだが、サーバの文字コード指定の記述を修正したら mysqld_safe が起動するようになった。ついでに FADERATED エンジンも使わないので無効にしておく。
[mysqld]
character-set-server=utf8
skip-federated
その後、mysql_upgrade を実行し、セーフブートから通常の起動に変更して無事にアップデート完了。

ちなみに、アップデート後に my.cnf のサーバ文字コードの設定の記述を default-character-set に戻して mysqld を起動してみたら、ログには以下のようなエラーが出力された。

111103  0:19:50 [ERROR] /usr/libexec/mysqld: unknown variable 'default-character-set=utf8'
111103  0:19:50 [ERROR] Aborting
今度はちゃんと設定がおかしい旨のメッセージが出力されている。

テーブルのアップグレードチェックでエラーとなった場合は、default-character-set に関するエラーメッセージが出力されずに mysqld がシャットダウンしてしまうようなので要注意です。

(2011/11/11:追記)
MySQL 5.5.3-m3 で廃止された変数やオプションは default-character-set だけではありません。
その他の廃止された変数やオプションを指定している場合は、これらも対応しなければなりません。

下記のブログで廃止になった変数とオプションがまとめられています。

[mysql]MySQL 5.5.3-m3 で廃止になった変数やオプションなどを整理しました

2011/11/02

Mac のキーボード操作に慣れない・・・

Mac を使い始めて3ヶ月くらい絶つけれど、いまだにキーボード操作に馴染めない・・・
Mac のキーボード操作での主な不満点。
  • コマンドキーが遠い。Ctrl キー系の操作になれているので、やはりこちらの方がよい。
  • 上記に関連するが、Ctrl + カーソル移動キーで単語移動してくれない。というか、デスクトップが切り替わるので鬱陶しい。
    Option + カーソル移動キーで単語移動するけど、Option キーもこれまた遠いし小さい。
  • ターミナルでコマンドキーがメタキーになってくれない。
    emacs 使いとしては致命的。編集中にコピーリージョンを指定しようとして command + w をタイプすると、ウィンドウが閉じてしまい、全ての編集が水泡に帰す。 orz。
  • 外部キーボード(ELECOMのTK-FBP014。Apple用のASCII配列 Bluetooth キーボード)のキー配列がこれまた違う。
    ASCII配列であるのはOKだけど、補助キーの配置が全く異なってる上に小さい。というか、スペースバー長すぎない?
などなど。

キーボードをカスタマイズしてしまうと他の標準的なマシンを触れなくなってしまうので控えていたのだけれど、注意力が散漫になってしまって生産性が悪いので、あきらめてカスタマイズすることにしよう。

少し調べたら KeyRemap4 MacBook というソフトが便利そうなのでこれを試そう。
補助キーがボトルネックなので、少なくとも普段の操作でこれらのキーを使わなくても良いようにしないと効率が悪いが、そうなるともはや Mac ではなくなるな・・・笑



2011/10/29

Mac OS X (Lion) のファインダーで隠しファイルを表示する

Mac OS X (Lion) のファインダーは、デフォルトではライブラリなどのフォルダが表示されない。
開発をしているとたまにこれらのフォルダーにアクセスする必要があるので、その方法を調べた。
やり方は大きく2つ。以下はいずれもターミナルからコマンド入力をして使う。

1. chflags で不過視属性を変更する

ファイルやフォルダの不過視属性は chflags によって変更できる。
(chflags は BSD 4.4以降の標準コマンドらしい)

ls でファイル属性を確認するためには、-lO(大文字) オプションをつける。

$ ls -lO
total 24
drwx------+  6 user  staff  -       204 10 29 17:27 Desktop
drwx------+ 14 user  staff  -       476 10 19 20:30 Documents
drwx------+ 27 user  staff  -       918 10 28 14:15 Downloads
drwx------@ 56 user  staff  hidden 1904 10 13 16:09 Library
drwx------+  8 tuser staff  -       272  9 13 18:38 Movies
drwx------+  8 user  staff  -       272  9  2 02:59 Music
drwx------+ 15 user  staff  -       510 10 21 15:42 Pictures
drwxr-xr-x+  5 user  staff  -       170  8 27 00:43 Public
drwxr-xr-x   7 user  staff  -       238 10 13 14:31 www
Library フォルダが hidden となっているのがわかる。
不過視属性を解除するには、以下のようにする。
$ chflags nohidden Library

ファインダーで確認してみると、無事「ライブラリ」フォルダが表示される。

必要なフォルダのみ表示する事ができるので、chflags を使う方がオススメ。
また、自分で作成したファイルやフォルダを不過視にすることもできる。

ちょっと気になったので、ついでに tar や zip のアーカイブで nohidden 属性が維持されるのか試してみた。
tar : nohidden 属性は展開後も維持されていた。
zip : nohidden 属性は維持されず、すべて可視ファイルとなった。
tar では chflags の属性も維持されているがこれはBSD固有の機能なので、他のプラットフォームで展開した場合に属性が維持される保証はない。

2. defaults で Finder で全てのファイルを表示するように設定する

Mac では、Windows のレジストリに相当するものとして defaults がある。
ターミナルから defaults コマンドを使用して、ファインダーの設定で全てのファイルを表示するように設定する。
Macで隠しファイルを表示する方法についてググると、ほとんどこの方法が説明されている。

domaincom.apple.finder
keyAppleShowAllFiles
valueTRUE : 全てのファイルを表示
FALSE : 隠しファイルは表示しない

全てのファイルを表示するように設定する例
$ defaults write com.apple.finder AppleShowAllFiles TRUE
$ killall Finder
設定の変更後に、設定を適用するために killall でファインダーを再起動する。

ただしこの方法では、
  •  隠しておいても良いフォルダも全て表示されてしまい、ファインダーのリストが長くなってしまう。
  • デスクトップ上のシステムファイルもアイコンで表示されてしまい、デスクトップが散らかってしまう。

といった欠点があるので、chflags を使う方がオススメ。

補足:ファイル選択ダイアログでの不過視ファイルの表示切り換え

ファイル選択ダイアログでは、ショートカットキーの「Command + Shift + . (ピリオド)」 で不過視ファイルの表示のON/OFFを切り替える事ができる。

2011/09/08

オンラインでHTML5を試せるサイトとHTML5実力テスト

オンラインでHTML5, CSS, JavaScript をコーディング、テストできる。


これはなかなか面白い。
作成したコードは公開・共有されるのでたくさんの例を参照できるほか、他人の作成したコードをフォークしてアレンジすることもできる。
HTML5関連の学習にはうってつけのサイト。

ちなみに、同サイトでは「HTML5実力テスト」も実施している。


さっそく受けてみたところ、HTML/CSSコースで51点(C)、JavaScriptコースで39点(D)という結果に終わった。
う〜む、実践経験がないとはいえ、正直もう少し欲しかった。実践を積まねば・・・

2011/05/27

Eric S.Raymond 「伽藍とバザール」 19の指摘(訓示)

オープンソースプロジェクトの管理と運営」という本を読んでいたときに、 OSF(Open Source Initiative)の生みの親である Eric S.Raymond が書いたオープンソースのソフトウェア開発に関する論文 「伽藍とバザール (The Cathedral and the Bazaar)」[1999年 O'Reilly & Associates 出版]  (原文)での指摘19点がまとめられていた。
どれもとても共感できる内容なのでメモ。
  1. すべての優れたソフトウェアは、開発者の必要性から始まる
  2. 優秀なプログラマは何を書けばよいのかを知り、偉大なプログラマは何を書き直せば(再利用すれば)よいのかを知っている
  3. 「捨てるつもりで書きなさい。どうせ捨てることになるのだから」 (Fred Brooks 「The Mythical Man-Month (人月の神話)」 第11章
  4. 態度がよければ、面白い問題が寄ってくる
  5. あるプログラムに興味を失ったら、それを有能な後継者に託すことが最後の義務である
  6. ユーザを共同開発者として遇することが、コードのすみやかな改良と効果的なデバッグのための早道である
  7. 早期に、かつ頻繁にリリースし、顧客の意見に耳を傾けよ
  8. 十分な数のベータテスタと共同開発者がいれば、ほとんどの問題は、すぐに原因が明らかになり、修正方法が自明のことになる
  9. 優れたデータ構造と凡庸(ぼんよう)なコードは、その逆の組み合わせよりずっとうまくいく
  10. ベータテスタを最も貴重な資源として遇すれば、最も貴重な資源になって応えてもらえる
  11. 優れたアイデアが浮かばないときは、ユーザの優れたアイデアをもらうことが次善の策である。ときには、後者のほうが優れていることもある
  12. 最も斬新で衝撃的なソリューションは、問題のとらえ方が間違っていることに気づいたときに生まれることが少なくない
  13. (設計における)完璧さとは、もう追加するものがない状態ではなく、もう取り去るものがない状態である
  14. どんなツールも期待された場面で力を発揮するが、真に偉大なツールは予想もされなかった場面で力を発揮する
  15. いかなる種類のゲートウェイソフトウェアを書くときも、できるだけデータストリームを乱さないように注意せよ。受信者に強制されない限り、絶対に情報を捨ててはならない
  16. 言語がチューリング的完璧にほど遠いときは、構文的砂糖(糖衣構文、シンタックスシュガー)をまぶすと救われることがある
  17. セキュリティシステムの堅固さは、守るべき秘密の堅固さを上回らない。擬似秘密に用心せよ。
  18. 面白い問題を解決するには、面白いと思える問題を探すことから始めよ
  19. 少なくともインターネット程度には優れた媒体があり、強制によらずに指導することを知っている開発調整者がいるなら、頭数は少ないより多いほうがよい
No.13, 14 あたりはとくに納得。でも実践はできていない・・・
本はまだ読みかけなので、感想などはまた後日。

2011/05/23

ブログはじめました

エンジニアという職業柄、ほぼ毎日のようにいろいろな問題にハマってる。そんな時、先人のブログにはいつも大変お世話になっている。
少なからず自分も問題解決はしているので、まずは自分のための健忘録として、そしていつも自分がお世話になっているように、自分の情報が誰かの役に立つことでもあれば、とブログをはじめてみることにした。
技術系の内容を中心に、思いのままにその他の趣味やいろいろなつぶやきなども投稿してみよう。

とはいえ、もともと読むのも書くのもとっても遅く、かなりの筆不精な性格。投稿頻度がものすごく低くなることは目に見えているのだが、どうなることやら・・・