« 2009年01月 | メイン | 2009年03月 »

2009年02月 アーカイブ

2009年02月01日

晴天


Canon EOS Kiss X2 EF-S18-55mm f3.5-5.6 IS ( F9 15秒 ISO100 )

久々に夜景を撮影。一眼レフの性能に頼るとコンパクトデジカメのそれよりは遙かに美しい画像を得ることができるけれども、撮影技術がないと夜景を撮ることはできないのだなぁと痛感。無限遠ってどうやるのでしょ。今年はもう少し綺麗な写真を撮れるようになりたいものです。

2009年02月08日

しちゅー


Canon EOS Kiss X2 EF-S18-55mm f3.5-5.6 IS ( F3.5 1/20秒 ISO800 )

ここのレシピ通りにビーフシチューを作ってみました。煮込むこと合計三時間。うまい。

2009年02月12日

logrotateの使い方

ログをローテートしたくなった。

# portinstall logrotate
# cd /usr/local/etc
# cp logrotate.conf.sample logrotate.conf
# mkdir logrotate.d

インストール

# vim /usr/local/etc/logrotate.d/blog.perl.tv
/var/log/httpd-blog.perl.tv*.log {
    monthly      # daily, weekly, monthly から選択
    missingok
    rotate 12    # ログをローテートする回数(monthlyで12回なので、1年分)
    compress     # ログを圧縮する。しない場合は、nocompress
    delaycompress # 次のローテーションタイミングで圧縮する
    ifempty      # ファイルが空でもローテートする。しない場合はnotifempty
    create 660 root wheel
    sharedscripts
    postrotate
        killall -HUP httpd
    endscript
}

設定ファイルの内容は上記。これが全て。

# /usr/local/sbin/logrotate -d /usr/local/etc/logrotate.d/blog.perl.tv
reading config file /usr/local/etc/logrotate.d/blog.perl.tv
reading config info for /var/log/httpd-blog.perl.tv*.log 

Handling 1 logs

rotating pattern: /var/log/httpd-blog.perl.tv*.log  monthly (12 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/httpd-blog.perl.tv-access.log
  log does not need rotating
considering log /var/log/httpd-blog.perl.tv-error.log
  log does not need rotating
not running shared postrotate script, since no logs were rotated

-dでテスト。実行はされない。

# vim /var/log/logrotate.status (もしくは/var/run/logrotate.status)
logrotate state -- version 2
"/var/log/httpd-blog.perl.tv-access.log" 2009-2-11←ここの日付を変える
"/var/log/httpd-blog.perl.tv-error.log" 2009-2-11

「log does not need rotating」と言われたら、上記ファイルの日付を変更すると実行できます。初回は実行されないみたい。

/usr/local/sbin/logrotate -v /usr/local/etc/logrotate.d/blog.perl.tv

実行。「-v」は詳細表示。-vを抜いてこれをcronに入れればOK。


logrotateは、単純に古いファイルをmoveし、新しいファイルを作成し、過去ファイルを圧縮するだけの機能を持つ。ファイルの中身の日付は見てくれない。

参考
http://ameblo.jp/itboy/entry-10027962914.html
http://itbtech.itboost.co.jp/inst/inst_25.php

mod_log_sqlをインストールしてみた

apacheログを正規表現で切り分けてDBに格納して解析結果を表示・・・とか考えるだけでうんざりしてきたので、割り切ってmod_log_sqlをいれてみた。環境はFreeBSD6.0 + Apache2.2.0。

# cd /usr/ports/www/mod_log_sql2
# make install
# vim /usr/local/etc/apache22/httpd.conf
LoadModule log_sql_module       libexec/apache22/mod_log_sql.so
LoadModule log_sql_mysql_module libexec/apache22/mod_log_sql_mysql.so

# apachectl configtest
# apachectl restart

インストールして

# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 80635 to server version: 5.0.51a-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> CREATE DATABASE apachelogs;
Query OK, 1 row affected (0.04 sec)

mysql> GRANT INSERT,CREATE ON apachelogs.* TO loguser@localhost IDENTIFIED BY 'xxxxxx';
Query OK, 0 rows affected (0.07 sec)

mysql> quit

データベースとユーザを作って

# vim /usr/local/etc/apache22/Includes/httpd.conf
LogSQLLoginInfo mysql://loguser:xxxxxx@localhost/apachelogs
LogSQLCreateTables on
LogSQLDBParam socketfile /tmp/mysql.sock
LogSQLTransferLogTable access_log

confに書く。VirtualHostディレクティブ単位で記述可能。

これだけでログ1行が1レコードとしてテーブルに格納されるようになります。滝のように流れるmysql.log。便利そうだけれども、これ、実用的なんだろうか・・・・。

参照
http://www.outoforder.cc/projects/apache/mod_log_sql/docs-2.0/
http://www.freewheelburning.com/linux/mod_log_sql.html
http://naoya.dyndns.org/~naoya/mt/archives/001042.html

2009年02月14日

外部ホストからMySQLへの接続を許可する。

つまらないことだけどちょっとはまったので覚え書き。

MySQLで外部ホストからの接続を許可する場合、「localhost」用の権限と「外部用」の権限の二種類をGRANTで制限する必要がある。

# mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO testuser@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO testuser@localhost IDENTIFIED BY 'password'; 
Query OK, 0 rows affected (0.00 sec)

mysql> use mysql;
Database changed
mysql> select host,user from user;
+--------------+----------+
| host         | user     |
+--------------+----------+
| %            | testuser | 
| localhost    | testuser | 
+--------------+----------+
8 rows in set (0.00 sec)

あとはmy.cnfにbind-addressの記述があった場合には コメントアウトしておくこと。

mysql> set password for testuser@localhost=password('xxxxxxxx');
Query OK, 0 rows affected (0.00 sec)

mysql> set password for testuser@'%'=password('xxxxxxxx');
Query OK, 0 rows affected (0.00 sec)

パスワードの変更はこんな感じ。

参考
http://dev.mysql.com/doc/refman/5.1/ja/adding-users.html
http://www.bitscope.co.jp/tep/MySQL/quickMySQL.html

間違ったGRANT文を正しいと思いこんで、手で打ち込んでいたのが原因でした。あうち。

2009年02月15日

MySQLのデータディレクトリを変更する

そもそも何で/varなの?

MySQL5.0.41 / FreeBSD 6.2

# /usr/local/etc/rc.d/mysql-server stop

# cd /var/db
# cp -Rp mysql mysql.20090215
# mv mysql /usr/local/
# vim /etc/rc.conf
mysql_dbdir="/usr/local/mysql"
# vim /usr/local/mysql/my.cnf
[mysqld]
datadir = /usr/local/mysql
# /usr/local/etc/rc.d/mysql-server start


もっと大変なことなのかと思いこんでいました。

参考
http://katsubemakito.net/cgiperl/database/mysql/post-49.html

2009年02月18日

Template-ToolkitのVMethods

TT内でsubstrを使う方法。

[% hoge.substr(2, 4) %]

こんなかんじ。

[% FOREACH item IN list %]
[% item.url.substr(0, 80) | html %][% IF item.url.length > 80 %]...[% END %]
[% END %]

実際にはこんな感じに使いました。ここではlengthを使って一定以上の長さのURLの末尾を「...」に変換しています。ついでにhtmlフィルタでタグをエスケープ。

参考
http://template-toolkit.org/docs/manual/VMethods.html
http://d.hatena.ne.jp/studio-m/20080118/1200649418
http://www.aimix.jp/cgi/accmozisrk.html

2009年02月25日

SuExec環境下のVirtualHostディレクティブでSetEnvを使う

SuExecを使っているとSetEnvディレクティブが使えないため、環境変数を自由に設定することができません。ぐーぐる先生に聞いたところ「HTTP_」で始まる環境変数であれば自由に使えるようでした。VirtualHostの中に書けばドメイン毎に異なる環境変数を設定することができる、と。
環境はApache 1.3.37。

<VirtualHost example.com>
SetEnv HTTP_X_TESTENV 123456789
</VirtualHost>

こんな感じ。

SuExec下ではSetEnvで使える環境変数が制限されるようです。使用可能な環境変数のリストは以下。

# less /usr/ports/www/apache13/work/apache_1.3.37/src/support/suexec.c
char *safe_env_lst[] =
{
    /* variable name starts with */
    "HTTP_",

    /* variable name is */
    "AUTH_TYPE=",
    "CONTENT_LENGTH=",
    "CONTENT_TYPE=",
    "DATE_GMT=",
    "DATE_LOCAL=",
    "DOCUMENT_NAME=",
    "DOCUMENT_PATH_INFO=",
    "DOCUMENT_ROOT=",
    "DOCUMENT_URI=",
    "FILEPATH_INFO=",
    "GATEWAY_INTERFACE=",
    "LAST_MODIFIED=",
    "PATH_INFO=",
    "PATH_TRANSLATED=",
    "QUERY_STRING=",
    "QUERY_STRING_UNESCAPED=",
    "REMOTE_ADDR=",
    "REMOTE_HOST=",
    "REMOTE_IDENT=",
    "REMOTE_PORT=",
    "REMOTE_USER=",
    "REDIRECT_QUERY_STRING=",
    "REDIRECT_STATUS=",
    "REDIRECT_URL=",
    "REQUEST_METHOD=",
    "REQUEST_URI=",
    "SCRIPT_FILENAME=",
    "SCRIPT_NAME=",
    "SCRIPT_URI=",
    "SCRIPT_URL=",
    "SERVER_ADMIN=",
    "SERVER_NAME=",
    "SERVER_ADDR=",
    "SERVER_PORT=",
    "SERVER_PROTOCOL=",
    "SERVER_SOFTWARE=",
    "UNIQUE_ID=",
    "USER_NAME=",
    "TZ=",
    NULL
};

参考
http://www.hozen.org/ml/1/thread/3126

2009年02月26日

Exposeをcaps lockキーに割り当てる

  1. KeyRemap4MacBookをインストール
  2. システム環境設定 > KeyRemap4MacBook > General > Enable CapsLock LED Hackにチェック
  3. PCKeyboardHackをインストール
  4. システム環境設定 > PCKeyboardHack > Caps Lock, Control > Change Caps Lock にチェック
  5. 右側の数字の上をダブルクリック
  6. Exposeのkeycode「160」を入力。(この画面の下部にcodeが書いてあります。)

今ひとつどのキーに割り当ててもしっくりこなかったExposeを、使うことのないcaps lockに割り当てることができました。

参考
http://d.hatena.ne.jp/oikea/20080828/1219897277

About 2009年02月

2009年02月にブログ「Re::Monologue」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2009年01月です。

次のアーカイブは2009年03月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。