I ♥ WordPress

Poderosa で ウインドウ自動分割オプションを止める。
2007/02/09 13:04 posted by kunkichi

僕が日ごろ使っているターミナルソフトは

なんですが、両方とも複数セッションをタブで管理できるのがお気に入り。

特にPoderosaは一つのウインドウを分割して複数の接続画面を見れるので、ログを tail -f で流しつつ、コマンド実行なんてのを一つの画面で見れるのですごい便利。TeraTerm に戻る気がまったく起きません。

ただし、一点だけ個人的には難があって、ウインドウ枠の上下左右のちょうど真ん中にカーソルを合わせると、ウインドウを分割するためのラインが表示されてそこをクリックすると分割されてしまう。出力結果をコピーしたい場合なんかにそこにカーソルを合わせると分割ラインが表示されちゃうので、すこしスクロールさせて選択しなきゃいけない。これが不便で不便で。

バージョン落とそかなぐらい思っていたのだけど、設定で回避できることがわかったのでメモ。

「ツール」→「オプション」→「操作」から「ペイン分割時の修飾キー」をデフォルトの「なし」から「Shift」「Alt」「Ctrl」のどれかに変更。

これで指定したキーを押しながらでないと分割できなくなります。あー、やっぱり手放せない(笑

which, whereis, find, locate の違い
2007/02/08 22:06 posted by kunkichi

自宅サーバ用にCentOSのインストール手順について調べていたら、結構な数で locate コマンドのデータベースを作ってる人が多いんだよね。locate コマンドって「ファイル検索」系のコマンドってことだけは知ってたんだけど、ほとんど使ったことがなくて、検索する時はいつも大体こんな感じ。

  • ファイル検索・・・find
  • コマンド検索・・・which

で気になったのでこれらの検索系コマンドがどう違うのか調べてみた。

  • (コマンドも含めた全ての)ファイル・ディレクトリの検索
    • find
      ファイル名・ディレクトリ名を検索。
      ただし、ベタにディレクトリ配下をなめるような検索を行うので時間がかかる場合あり。
    • locate
      ファイル名・ディレクトリ名を検索。(ここまでは find と一緒)
      予め検索結果のデータベースを作成しておくので検索が高速。
      ただし、データベース更新の後にファイルの移動とかを行うと、再度更新しないと反映されない。
      よって定期的な更新が必要。

なるほどね。ついでにwhich、whereisとの違いは。

  • コマンド(つまり実行権があるファイル)の検索
    • which
      コマンドへのパスを表示する
    • whereis
      コマンドのバイナリ・ソース・マニュアルのパスを表示する。

ということらしい。あんまり考えずにベタな方を使ってるってことか、爆

MacPortsでNagios
2007/01/08 10:22 posted by kunkichi

お休みも終わってしまい、がんばって仕事モードに戻るかー、と気合いを入れようと思いきや、いきなりの連休でまたもやダメ人間へと突き落とされています(笑)が、気を取り直して、前々から勉強しようと思っていたサーバ監視ツール Nagiosのインストールを Mac でやってみました。

ちなみに、仕事でやってるサーバの監視はこんな感じ。

  • 死活・稼働監視
    SNMPと自前スクリプトでサーバの死活監視、サービスの稼働監視。
  • 経過監視
    SNMPで取ったデータをMRTGでグラフ化。

よそはどうやってるのかあんまり知らないけどまあ一般的なやり方なのかなぁ。

でも、SNMPでトラップ拾えないものもあるし、新しいサービス追加するたびに自前スクリプト書くのも面倒だし、ってな感じで不便さも感じてきたので、最近流行のNagiosをうちに余っていたiBook(G3/800MHz OSX 10.4)でまずは実験。

まず、Nagiosは、

  • Nagios本体
    監視のスケジューリングや監視結果の処理
  • プラグイン
    実際の実際の監視を行うコマンド

という構成になっていて、いろんなサービスを監視するためにはそれ用のプラグイン(コマンド)が必要、言い換えるとそれぞれのサービスのライブラリやコマンドをインストールしなければいけない。OSXのデフォルトではいろいろと足りなさそうなのだけど、いちいちビルドするのは面倒なのでここはMacPortsで端折ることにする。

↑を参考にしてまずMacPortsをインストール。調べてみると、なんだ、MacPorts自体にNagiosが既にあるやん。ということでMacPortsでそのまま入れることにする。

$ sudo port install nagios

※もしこれを参考にする人がいたら、ここですぐ実行せずに下まで読んだほうが時間短縮されるかも。

これで依存関係のあるライブラリも全て自動的にインストールされる。

と、おもったら、

--->  Building XFree86 with target World
--->  Staging XFree86 into destroot
--->  Installing XFree86 4.5.0_2
--->  Activating XFree86 4.5.0_2
Error: Target com.apple.activate returned: Image error: /usr/X11R6/include/DPS/ColorSB.h already exists and does not belong to a registered port.  Unable to activate port XFree86.
Error: The following dependencies failed to build: gd2 XFree86 freetype zlib jpeg libpng nagios-plugins fping p5-crypt-des perl5.8 p5-digest-hmac p5-digest-sha1 p5-net-snmp openssl
Error: Status 1 encountered during processing.

依存関係にあると思われるXFree86のインストールでなんかコケてる。ググってみたら↓を見つけた。

http://trac.macports.org/projects/macports/ticket/6188

どうやら -f つけて強引に突き進めばいいらしい(爆
まあ、いいや、XFree86 だけ先にいれちゃおう。依存してるパッケージもわかったし。

$ sudo port -f uninstall XFree86
$ sudo port -f install XFree86
$ sudo port install Nagios

ちなみにXFree86のビルドにかなり時間がかかりました。でインストールの最後にいろいろメッセージが出るのでその通りやってみる。

  1. まず、/etc/httpd/httpd.conf の 「ScriptAlias /cgi-bin/ “/Library/WebServer/CGI-Executables/」の記述の上に以下のエントリを追加。
    #
    # Nagios stuff
    ScriptAlias /nagios/cgi-bin/ "/opt/local/sbin/nagios/"
    <directory>
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
    AuthName "Nagios Access"
    AuthType Basic
    AuthUserFile /opt/local/etc/nagios/htpasswd.users
    require valid-user
    </directory>
    Alias /nagios "/opt/local/share/nagios"
    <directory>
    Options None
    AllowOverride AuthConfig
    Order allow,deny
    Allow from all
    </directory>
    # End Nagios stuff
    #

    設定変更を反映するためにapacheを再起動。
    $ sudo apachectl restart
  2. 次に /opt/local/etc/nagios にNagiosの設定ファイルを準備。
    $ cd /opt/local/etc/nagios
    $ sudo mkdir sample
    $ sudo cp *.cfg-sample sample/
    $ for i in *cfg-sample; do sudo mv $i `echo $i | sed -e s/cfg-sample/cfg/`; done;

    commands.cfgとか編集しろ、って書いてあるけど最低限のコマンドは書いてあるようなのでここではパス。とりあえず設定ファイルのテストだけしてみる。
    $ sudo nagios -v /opt/local/etc/nagios/nagios.cfg
    以下のようにエラーが出なければOK。
    Total Warnings: 0
    Total Errors:   0
    Things look okay - No serious problems were detected during the pre-flight check
  3. /opt/local/etc/nagios/cgi.cfgの管理者ユーザ設定を”nagiosadmin”に変更する。
    authorized_for_system_information= nagiosadmin
    authorized_for_configuration_information= nagiosadmin
    authorized_for_system_commands= nagiosadmin
    authorized_for_all_services= nagiosadmin
    authorized_for_all_hosts= nagiosadmin
    authorized_for_all_service_commands= nagiosadmin
    authorized_for_all_host_commands= nagiosadmin
  4. 先ほどの管理者ユーザでapacheのBASIC認証ができるようにする。
    $ sudo htpasswd -c /opt/local/etc/nagios/htpasswd.users nagiosadmin
  5. 最後にNagiosが自動起動するように設定して
    $ sudo launchctl load -w /Library/LaunchDaemons/org.macports.nagios.plist
    Nagiosを起動。
    $ sudo /opt/local/var/nagios/nagios.init start

これでインストールは完了。ブラウザから”http://IPアドレス/nagios”を参照してNagiosのTOP画面が見えればとりあえずインストールはできてるはず。

nagios_top.jpg

まあ監視対象サーバの設定は一つも設定してないのでデフォルトだとNagiosがインストールされているlocalhost(つまりiBook)しか設定がないのだけど、それはまた後日。

cron(crontab)で月末で指定する方法 - ぎじゅっやさん
2006/12/29 23:59 posted by kunkichi

ぎじゅっやさんよりcron(crontab)で月末で指定する方法 - ぎじゅっやさん
55 23 28-31 * * /usr/bin/test $( date -d '+1 day' +%d ) -eq 1 && /path/to/
で↑はbashの場合。shの場合は、
55 23 28-31 * * /usr/bin/test `date -d '+1 day' +%d` -eq 1 && /path/to/script
だね。プログラム側で判断しなくてよいのでちょい便利。

ちなみにSolarisの標準のdateじゃできないね、shellutilsインストールしないと。あ、でもSolaris10だとできるのかも。

PHPでリモートデバッグ
2006/12/09 18:19 posted by kunkichi

昨日は仕事を午前休もらって、アシアル株式会社主催のPHPセミナーに行ってきました。もちろん無料セミナー(笑。

で今回のテーマは「PHPで快適デバッグ」

PHPのデバッグ、というかWebアプリのデバッグは、例えばVisual Studioなんかを使ったデバッグとはちょっと違って難しいところがある。例えば、スクリプトのある時点での変数の値を確認したいとする。

Visual Studio だと、

  • 変数に値が入るところでブレークポイントを入れて処理をそこで止める。
  • 確認したい変数にマウスを合わせると値が表示される。

って感じで簡単にできるのだけど、Webアプリケーションとなるとこれが一気に難しくなる。

  • 変数に値が入るところで exit 入れたりして処理を止める。(ループがネストしていると大変、、、)
  • 変数を画面に出力するように print_r やら var_dump で処理を入れる。(後で消すのを忘れて本番にそのままいっちゃったり、、、)

こんな感じでとても原始的な上に後でめんどくさくなるやり方をするパターンが多い。というのもWebアプリでは処理はサーバ側で実行されるので、サーバ側で制御してあげないといけない。ローカルPCで Visual Studio を使うようにはいかないのだな。

ということで、DBG + DBGListener + DBGクライアント(PHPSimpleDebugger) を使った手法の説明がメインでした。簡単な図で表すと、
dbg.jpg

      1. ブラウザからリクエストにデバッグ用変数をくっつけて送信。
      2. デバッグ用変数に含まれているクライアントにデバッグ情報を送信。
      3. DBGListnerがデバッグ情報を受けてDBGクライアントを起動。
      4. DBGクライアントからデバッグ実行。
      5. DBGListener経由でサーバにデバッグ命令を送信。
      6. デバッグ命令を元にブラウザにレスポンスを返す。

試してないのでちょっと間違ってるかもしれないけど、要はサーバとクライアントでデバッグ用のポートを別途用意して、デバッグ情報や制御をそこで行うと。これでIDEライクなデバッグができるという訳。昔DBGを試してみたことはあったのだけど、リモートではうまく動かなかったのでそこで諦めてたんだよね。SSHでトンネル貼れば本番環境でもデバッグできそうだし。早速会社で試してみようっと。

あとDBG以外にもいろいろ面白いのがありました。

  • Pear::Var_dump
    var_dumpの出力結果を奇麗に表示してくれるPEARライブラリ。
  • dbug
    こちらも同じ。JavaScriptで折りたたみとかできるみたい。
  • Xdebug
    DBGと同じぐらい高機能なデバッグモジュール。
  • Gubed
    PHPで書かれたデバッグライブラリ。Firefoxのエクステンションと連動するらしい。
  • WinCacheGrind
    Xdebugで出力されたプロファイリング結果を表示するアプリ。

activeCollabがさくらにインストールできない件について
2006/11/30 23:56 posted by kunkichi

前のエントリでphp5をインストールしたので、やっとactiveCollabを試せると思っていたのに、インストールしてみると、、、

InnoDB storage engine is not supported.

さくらのmysqlってInnoDB非対応なのね、、orz

うーん、どうするかなあ、、、

【追記】
InnoDBじゃなくてMyISAMでは動かないのかなぁと思って、本家サイトのフォーラムをのぞいてみるとFAQ化していた様子、、、自分にorz

It should work, but I strongly recommend using InnoDB because activeCollab uses transaction to keep data in sync and recover from errors. Its that important that I’d say that InnoDB is requirement, but you can use MyISAM at your own risk.

To use MyISAM do what gog said in the previous post (open install/installation/templates/sql/mysql_schema.php and replace every occurance of ENGINE=InnoDB with ENGINE=MyISAM).

うーん、一人で使うつもりだから、とりあえずソースいじって使ってみるかな。

さくらでphp5(pearエラー対応)
2006/11/30 20:01 posted by kunkichi

さくらインターネットでphp5をインストールする手順はたくさんの人が書いているけど、それらを参考にphp-5.2.0をインストールしてみたところ、make installでpearのエラーが発生する。

ということでググってみたところ、琥瑠璃どっとこむ:さくらのレンタルサーバーへPHP5.2.0をインストールでやっぱり指摘されていたので、それに従いインストール。

うちのconfigureオプションはこんな感じ。
# export PHP_PEAR_CACHE_DIR="$HOME/local/php-5.2.0/pear/cache"
 
# ./configure ¥
--prefix=$HOME/local/php-5.2.0 ¥
--program-suffix=5 ¥
--with-pear=$HOME/local/php-5.2.0/share ¥
--with-config-file-path=$HOME/local/etc/php5.ini
--enable-force-cgi-redirect ¥
--enable-mbstring=all ¥
--enable-mbregex ¥
--enable-mbstr-enc-trans ¥
--enable-versioning ¥
--enable-trans-sid ¥
--with-mysql ¥
--with-openssl=/usr ¥
--with-soap=yes ¥
--with-zlib=/usr ¥
--with-gd=/usr/local ¥
--with-jpeg-dir=/usr ¥
--with-freetype-dir=/usr ¥
--with-ttf ¥
--with-png-dir=/usr ¥
--with-curl ¥
--with-iconv=/usr/local

ちょっと冗長なところもありますが、細かいことは気にしないタイプなので、爆。

これでactiveCollabを試してみたいと思います。

さくらでvim
2006/11/26 18:25 posted by kunkichi

うちのサイトはさくらインターネットのスタンダードプランを使っているのだけど、スタンダードプランで使えるssh/telnetをもちょっと便利にするために以下のサイトを参考にvimを入れてみた。

p0t: vim on sakura internet

.vimrcははてな技術発表会を参考に。

このページの先頭へ