アーカイブ:  « 2009年6月 | メイン | 2009年9月 »

2009年7月31日

LPIC Level1試験受験(102)

先週に引き続きLinuxの認定試験LPICを受験した。
今回受験する試験は、前回と異なり102試験であり、先週合格した101試験と合わせて合格することでLPIC Level1認定となる。

やはり今回も入力する試験が多かったように感じる。
前回の反省から出題範囲をhttp://www.lpi.or.jp/exam/200808-102.shtml を確認して受験したが、重要度はあまり参考にならないようだ。

重要度4の「105.2 簡単なスクリプトをカスタマイズまたは作成する」は2問しか出ないにもかかわらず、重要度2の「105.3 SQLデータ管理」や「106.1 X11のインストールと設定」、「106.2 ディスプレイマネージャーの設定」もそれぞれ2問ずつ出ていた。

今回も見直しを1度行って、恐る恐る試験終了ボタンを押したところ、

あなたの得点:580
必修合格点:500
結果:合格

という内容が画面に表示され、ほっとした。 (今回も580点だった)
しかし、セクションごとの正解率は
Shells, Scripting and Data Management・・・・・・・・・・・・・・・・・・・60%
User Interfaces and Desktops ・・・・・・・・・・・・・・・・・・・・・・・・・・100%
Administrative Tasks・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・75%
Essential System Services・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・60%
Networking Fundamentals・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・71%
Security・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・55%

Shells, Scripting and Data Management、Essential System Services、Securityは合格ラインに達していないので、LPIC2受験勉強に当たっては、さらに細かく習得しなければならないだろう。

大学の時以来一切触っていなかった、GUIに関する正答率が100%だったのは意外だった。

2009年7月30日

X Window System

代表的なディスプレイマネージャーには、GDM、KDM、XDMがあり、それぞれKDE、GNOME、X Window Systemのディスプレイマネージャーであり、/etc/X11/kdm、/etc/X11/gdm、/etc/X11/xdm ディレクトリに設定ファイルが格納される。

起動するディスプレイマネージャーを変更するには、/etc/X11/dmcfgファイルの設定を変更する。

X Window Systemの実装として広く利用されている、X.Orgの設定ファイルは /etc/x11/xorg.conf。

/etc/X11/xdmディレクトリの設定ファイルには次のものがある。
xdm-config 各設定ファイルの位置などの設定
Xsetup ユーザーのログイン前に実行されるスクリプト
Xsession Xstartup実行後にユーザー権限で実行されるスクリプト(Xstartupはユーザーログイン後にroot権限で実行される)
Xresources ログイン用画面に必要な設定(デザイン変更など)

XDMによるリモートログインを可能とするネットワークプロトコルはXDMCP(X Display Manager Control Protocol)。

X Window Systemでウィンドウに関する情報を表示するためには、xwininfoコマンドを利用する。

特殊変数

$? コマンドの実行結果(正常終了は0 異常終了は0以外)
$# 実行時に指定した引数の総数
$* 実行時に指定した引数のリスト

2009年7月26日

情報処理技術者試験結果

データベーススペシャリスト試験を受けてきました
の結果が6月に発表されていたものの、育児休暇で石川にずっと戻っていたため照会するための情報がわからず確認できなかった。

受けた結果では、午後I次第だったという感想だったが、

受験番号 DB320-XXXX の方は, 不合格 です
午前I得点 68.00点
午前II得点 76.00点
午後I得点 76点
午後II得点 41点

で午後IIが原因で不合格でした。(いずれも60点がボーダーライン)
春の試験は相性が悪く、連敗中です。

にしても、自信があったと思っていたものに対して、正答率が40%程度だったということに衝撃を覚えてしまう。。。

午前Iが合格だということで、向こう2年間は午前Iが免除になりました。これだけが不幸中の幸い?です。

2009年7月24日

LPIC Level1試験受験(101)

Linuxの認定試験LPICを受験した。

LPICは受験料がベンダー試験並みの15,000円と高く、2つの試験を合格して初めてレベル認定がされるという営利主義の強い試験。また、Level2試験を受けるためには、Level1試験を合格していなければならない。
ただ、割と人気があって知名度も高い。

今年の4月からお祝い金が会社から出る資格リストに加わったので、試験勉強を始めた。

問題を見てびっくりした。わかってはいたものの4月から試験が少し変わっていて、出題範囲が一部変わっていた。出題範囲をちゃんと確認しておくべきだった。
http://www.lpi.or.jp/exam/200808-101.shtml

情報処理技術者試験とは違って、試験終了ボタンを押すとすぐに結果が分かってしまう怖い試験。それだけに解答は30分で終わったものの、それからしばらく見直し作業をした。

60問中65%が合格ラインだが、回答に自信がない問題がなんと20問もあった。恐る恐る試験終了ボタンを押したところ、

あなたの得点:580
必修合格点:500
結果:合格

という内容が画面に表示され、ほっとした。
しかし、セクションごとの正解率は
System Architecture・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・25%
Linux Installation and Package Management ・・・・・・・・・・・・・・63%
GNU and Unix Commands・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・73%
Devices, Linux Filesystems, Filesystem Hierachy Standard・・86%

システムアーキテクチャの正解率が低すぎた。
出題数(重要度)が少なかったのが不幸中の幸い。

102試験を合格してようやくLevel1となる。
来週からじっくり勉強をして、102試験は楽にパスできるようにしたい。

2009年7月23日

ドライバモジュール

モジュールのロード
insmodは依存関係のチェックをせずにモジュールをインストールする
modprobeは依存関係のチェックをしてモジュールをインストールする

モジュールのアンロード
rmmod -a で問題を残さずアンロードができる

モジュールの一覧表示
lsmod cat /proc/modules とほぼ同じ内容を得られる

依存関係ファイルの作成
depmod modules.depファイルを作成する

モジュールに関連する情報を表示
modinfo モジュール名

ドライバモジュールのロードするための設定ファイルは、
/etc/modules.conf (Kernel 2.6以降は /etc/modprobe.conf )に保存される

rpmコマンド

RPM Package Managerの略でソフトウェアのパッケージを管理するためのシステム。

rpm -i --force パッケージ名
現在のインストール状況にかかわらずインストールを行う(依存関係は考慮される)

rpm -e --test パッケージ名
依存関係がなければアンインストールを行う

rpm -e --nodeps パッケージ名
依存関係を無視してアンインストールを行う

rpm -qR パッケージ名
依存関係にあるパッケージを表示

rpm -qf ファイル名
ファイルが含まれるパッケージを表示

rpm -Vp パッケージ名.rpm
インストール済みパッケージをRPMパッケージと比較して不足しているファイルを検証する

rpm -Va
インストール済みのすべてのパッケージにおいて不足しているファイルを検証する

dpkgコマンド

Debianパッケージをインストールする際に利用する

dpkg -i パッケージ名.deb
インストールコマンド apt-get install パッケージ名 (拡張子なし)と同じ

dpkg -purge パッケージ名
完全なアンインストールコマンド apt-get -purge remove パッケージ名 と同じ

dpkg -r パッケージ名
/etc以下の設定ファイルを残してアンインストール apt-get remove パッケージ名 と同じ

dpkg -S ファイル名 or ライブラリ名
パッケージを検索するコマンド auto-apt search ファイル名 or ライブラリ名と同じ

dpkg -audit
インストールが中断して完了していないパッケージを表示

SEのフシギな生態 失敗談から学ぶ成功のための30ヶ条

平成15年に出版された本だが、久しぶりに読んでみると今でもなにも現状が変わっていないんだとあらためて思い知らされる。こうすれば失敗するというところが書かれているだけに、仕事を進める上で押さえておきたいポイントが見えてくるので、非常に参考になる。

2009年7月21日

Makefile

includeディレクティブもしくは-includeディレクティブでインクルードしたいファイルを記述する
CPPFLAGSにはCプリプロセッサ用のオプションを指定する

tarコマンド

-tによりアーカイブファイルの内容を一覧表示する
-uによりアーカイブファイルを更新する
-dによりアーカイブファイルとカレントファイルの差分を抽出する
-rによりアーカイブファイルの最後にファイルを追加する

FHS(Filesystem Huerarchy Standard)

Linuxシステムのファイルシステムにおいて特定のディレクトリやファイルの配置及び構造を標準化したもの。

/binは必須で基本コマンドが保存される
/libはカーネル共有ライブラリが保存される
/usr/libはプログラム共有ライブラリが保存される
/usr/local/libはGNU規約で推奨される共有ライブラリが保存される
/usr/X11R6/libはX Window System専用の共有ライブラリが保存される
/varは必須で動的に変更されるデータが保存される
/rootはrootユーザーのホームディレクトリとして利用されるが、必須ではない

ブートローダーとbootパーティション

ブートローダーはハードディスクの先頭512byteに格納されているMBR(Master Boot Recorder)より起動される。LILO(LInux LOader)は設定やカーネルに変更があった場合に再インストールをして設定ファイルを書き換える必要がある。また、設定ファイル(/etc/lilo.conf)を編集した場合には、/sbin/liloを実行する必要がある。

LILOのオプションは次の通り
・ブートファイルを読み取り専用に設定する場合には、read-onlyオプションを指定する
・ブート対象となるデフォルトのカーネルイメージは、defaultオプションで指定する
・ルートとしてマウントする場所は、rootオプションを指定する
・パスワード入力を必須にする場合には、passwordオプションを指定する(restrictedオプションをし指定すると、ブートの際にパラメータを指定した場合に限りパスワード入力が必要となる)

bootパーティションにはディスクの先頭から1024シリンダ(約8GB)以内に配置され、カーネルが保存される領域であり、リビルドの際に利用される。

2009年7月20日

Fedora Core6をPAE対応にする

DELL PowerEdge840のメモリをメーカー出荷時の512MB×2を取り外し、トラセンド・ジャパン TS256MLQ72V6U 2GB×2に変更し、Fedora Core6を起動したところ、BIOS上では4GB認識していたが、3.6GBしか認識しなかった。

そこで以下の手順を使ってkernelを入れ替えて、無事4GB認識できた。
1.kernel-PAE-2.6.18-1.2798.fc6.i686.rpmをダウンロード
2.rpm -ivh kernel-PAE-2.6.18-1.2798.fc6.i686.rpm でインストール
3.再起動し、GNOMEで起動するkernelが2つ選べるようになっているので、PAEを選択
4.yum remove kernel.i586 で既に入っているカーネルをアンインストール
5.再起動を行う

@ITではi686のカーネルに入れ替える方法の中でPAE版を一時的に利用しているので、作業手順としては参考になる。

2009年7月17日

mysql-bin.000001が肥大化する

/varディレクトリへのディスク割り当てが100%になってしまい、MySQLサーバーの接続上限に達して、接続できないという現象が発生した。

調べてみたところmysql-bin.000001が1.8GBにもなっていたことがわかった。詳しく調べてみると、mysql-bin.NNNNNNはバイナリログになっており、レプリケーションを利用する際に使用される。

レプリケーションを使用しない場合(MySQLをサーバー1台で運用する場合)には、my.cnfの
log-bin=mysql-bin
をコメントアウトして再起動すればよい。

ログを削除する場合には、上記の設定変更を行う前に、rootユーザーでMySQLサーバーに接続後、
PURGE MASTER LOGS before now();
として安全にバイナリログを削除するとよい。

2009年7月16日

ジョブの操作

たとえば、vmstat 3 100
とすると、vmstatコマンドは、フォアグランドで動作する。

また、vmstat 3 100 &
とするとvmstatコマンドは、バックグラウンドで動作する。

いずれの場合も、SSHで接続している場合に、exitをしても接続が切断されず、SSHを強制的に切断するとプロセスが強制終了してしまう。(シェルの種類とsshのバージョンによっては挙動が異なるようだ)

リモート接続している場合において、処理が接続中に終わらないことが分かっている場合には、
nohup vmstat 3 100 &
などとすることで、exitをすれば接続が切断される。

ただ、当初はすぐに終わる処理だと思っていて、フォアグラウンドで処理していたが、なかなか終わらない場合には、(bashシェルの場合)次の操作をするとよい。

Shift+Z でフォアグラウンド処理を停止したうえで、
jobsコマンドを発行し、対象のジョブ番号を確認する。
そして、bg ジョブ番号
とすることでバックグラウンドプロセスに変更できる。(フォアグラウンドプロセスにする場合には、fcコマンドをする)

そのうえで、disown %ジョブ番号
とすれば、nohupしたのと同じ状態になるはずなのだが、自分の環境ではうまくいかない。

2009年7月10日

ビューをキャッシュする

cakePHP 1.2のキャッシュ機能を使ってみた。
データベースに問い合わせするシステムにおいて、頻繁にデータが変わらないような場合にはキャッシュを利用すると応答時間が改善するだけでなく、データベースへの問い合わせをしなくて済むようになるので、DBサーバーの負荷が軽減される。

キャッシュ機能を有効にするには、いくつか設定が必要なようで、Viewをキャッシュする場合に設定をした部分は次の通り。

core.phpの
Configure::write('Cache.check', true);
を有効にした。

Viewのキャッシュを有効にしたいControllerにおいて
var $helpers = array('Cache');
var $cacheAction = 28800; //8H
とした。通常、$helpers には他にもHTMLなどを指定する必要があるだろう。
[cakephp]1.2でviewをchacheするにはで詳しく説明されている。

キャッシュには、Fileキャッシュのほか、APC、XCace、Memcacheが利用できるが、FileキャッシュとAPCキャッシュの違いがよくわからなかった。

ちなみにベンチマークの結果は次の通り。
ab http://price.zaiteku.jp/products/detail/B002ANRN1E

キャッシュ前 Requests per second: 2.28 [#/sec] (mean)
キャッシュ後 Requests per second: 12.03 [#/sec] (mean)

約5.3倍速くなったことが分かる。

HELOホスト名を変更する方法

Helo command rejected: Host not found;とmessageログに記録されている場合には、送信先SMTPサーバーにおいてHELOホストがDNSに登録されていないためにおこる。

通常は、HELOホスト名はhostnameに記述されたホスト名が使われるがこのホスト名をHELOコマンドで使用したくない場合には、Postfix のセキュリティ対策に記載があるようにmain.cf に「smtp_helo_name」のパラメータを付加してpostfixサービスを再起動することで変更ができる。

2009年7月 9日

CakePHPのAjaxな問い合わせフォーム用プラグイン

YARE TOKOにて公開されており、非常に有用なプラグインです。
財テク.jp(掲載内容に関するお問い合わせのリンク)でも使用させていただきました。

ところで、contact_forms_controller.phpの51、52行目においてfromメソッドとtoメソッドにセットされるべき値が異なっているように思えました。

誤っていると思われるコード

$this->Qdmail->to($this->data['Form']['mail'], $this->data['Form']['name'] . '様');
$this->Qdmail->from($this->admin_mail, $this->admin_mail);

正しいと思われるコード
$this->Qdmail->from($this->data['Form']['mail'], $this->data['Form']['name'] . '様');
$this->Qdmail->to($this->admin_mail, $this->admin_mail);

2009年7月 8日

MySQLが高負荷になる

クエリを発行するとmysqldのCPU使用率が100%になったまま張り付いてしまう現象が発生した。
MySQL/PostgreSQLで実行中のSQLを確認する方法を参考にして、show pricesslistクエリを発行して処理が完了していないSQLを確認してみたところ、やはり長時間処理が完了しないクエリが原因であった。

対象のクエリはexplain select ~で確認してみても、正しくインデックスが使われていることがわかったが、複数のテーブルを結合するSQLだったので、対象テーブルにおいてshow index from tablenameコマンドを発行すると、CardinalityがNULLになっていることがわかった。

おそらくこれが原因で発行したSQLにおいてインデックスが利用されないパターンであったと判断し、analyze table tablenameを発行して再度クエリを発行したところ、すぐに処理が完了した。

レコードが頻繁に追加されるテーブルは、手動でanalyze tableコマンドを定期的に発行したほうがよさそうだ。

なぜか一部のフィールドがsave()で保存できない!

debugレベルを0にしてリリースしているサイトで機能拡張のためにカラムを追加したが、なぜかsaveメソッドを呼び出しているところで追加したカラムが追加並びに更新対象にならない。

追加したカラムの名前がよくないのかと思って、いろいろ調べていたところ、CakePHP のおいしい食べ方で同じ現象が説明されていた。

debugレベルを0にしているとモデルがキャッシュされていることが原因で、データベースの構造が変わっていても反映されないようだ。通常はリリース後に機能拡張するときには、debugレベルを変更することが多いので、このような現象に悩まされることは少ないかもしれないが、cakePHPでアプリを開発している場合には、頭の片隅に入れておいてもよさそうだ。

2009年7月 7日

今月の読んだ書籍

 

一冊目は、きたみりゅうじ作のSE業界のよくある話を漫画にした作品。デフォルメしてある部分もあると思いきや、意外にあたっていて、楽しく読める本。
二冊目は、今話題のクラウド・コンピューティングとは一体何か、そしてクラウド・コンピューティングが向かう先は何なのかというのがわかる本。自分もブログで分散と集中の歴史を過去書いたが、この本の中でもクラウド・コンピューティングという現象はキャッチセールスのように生まれた言葉ではあるものの、時代の流れの中でおのずと生まれた現象を示した言葉であることを書いている。