2ヶ月もブログ放置しちゃった

今週はブログ書くぞ
Symfony2ネタとか

できること

2011年3月11日の地震が起きたときは
神戸の実家にいたときの地震を思い出してしばらくは怖いという気持ちだけでした。

ニュースを見ると悲惨な状況が報道されるので、あまり見ないようにしていました。

今の僕は完全な被災者ではないので、何かできることがあればと思い、
とりあえず、わずかながらですが義援金をだすことと節電をやっています。

神戸の時のたくさんの支援物資には感謝しています。そのお返しになればと思います。
こういう時は歌を歌うと元気になれます。頑張ってください。

Mac homebrew でphp5.2 php5.3 両方をインストール

homebrew 使うとMacPortsよりはやいってことで試してみました。
自分でパッケージをインストールするスクリプト作れるので面白いですね。(rubyですが)

https://github.com/mxcl/homebrew/wiki/installation のコマンドを1行実行します

インストールが終わったあととりあえず、git をインストールします

$ brew install git

僕が作ったFormula ファイルを githubにコミットしたので、使ってみてください><
rubyよく知らない、へなちょこなコミットなので、pull request とかあれば歓迎です。

$ cd /usr/local/Library
$ git remote add urabe_formula https://ShinichiU@github.com/ShinichiU/homebrew.git
$ git fetch urabe_formula
$ git checkout -b urabe_master urabe_formula/master

php5.2 と 5.3 をインストールします (–main)とうつと php のバイナリは php とうつと使えるようになります
php5.2.17 は $ php52 -v
php5.3.5 は $ php53 -v
で使えます。

php5.2.17 のApache用のモジュールは /usr/local/Cellar/php52/5.2.16/libexec/apache2/libphp5.so
php5.3.5 の Apache用のモジュールは/usr/local/Cellar/php53/5.3.5/libexec/apache2/libphp5.so
にインストールされます。

$ brew install php52 --with-mysql55 --with-pgsql --with-apache
$ brew install php53 --with-mysql --with-pgsql --with-apache --main

あと、パスの設定は balibali さんのブログをご参考くださいー
おしまい

reStructuredText から日本語を含むPDFをつくって遊ぶ in Mac

MS Office Word の操作性の悪さが大嫌いなので、ドキュメント作成から逃げ出したくなります。
テキストベースで作成したものが、どの環境でも見れるファイルに簡単になればいいのにということで
Mac上で reStructuredText からPDFを作成してみました。

reStructuredText については このへんを見てください。(適当でごめんなさい!><)

MS Wordでよくわからない仕様にとまどって苦労する負荷を考えるとrst覚えるほうが楽勝ですね!

freetype lcms jpeg をMacPortsでインストール

$ sudo port install jpeg
$ sudo port install freetype
$ sudo port install lcms
$ sudo port install lcms2

PIL reportlab rst2pdf を easy_install でインストール

$ sudo easy_install -UZ PIL
$ sudo easy_install -UZ reportlab
$ sudo easy_install -UZ rst2pdf

以下のページからフォントをダウンロードして、インストール(インストールしなくてもよい)

http://mix-mplus-ipa.sourceforge.jp/mplus2006_ipa2003/download.html

設定ファイルとかを書く

$ mkdir -p ~/.rst2pdf/style
$ vim ~/.rst2pdf/style/ja.json //新規ファイル作成

{ "embeddedFonts" :
 [["M+2P+IPAG.ttf","M+2P+IPAG.ttf","M+2P+IPAG.ttf","M+1P+IPAG-circle.ttf"]],
  "fontsAlias" : {     "stdFont": "M+2P+IPAG",
    "stdBold": "M+2P+IPAG",
    "stdItalic": "M+2P+IPAG",    "stdBoldItalic": "M+2P+IPAG",
    "stdMono": "M+1P+IPAG-circle"
  },    "styles" : [
    ["base" , {
      "wordWrap": "CJK"    }],
    ["literal" , {
      "wordWrap": "None"
    }]
  ]
}

$ vim ~/.rst2pdf/config //新規ファイル作成

[general]
stylesheets="~/.rst2pdf/style/ja.json" // 先程作ったスタイルシートのパス
compressed=false
font_path="~/Library/Fonts" // フォントのパス (先ほどダウンロードしたフォントのパスでもOKです)
header="" // None とかHeader に勝手に入るので空文字を渡す
footer="" // None とかHeader に勝手に入るので空文字を渡す
fit_mode="shrink"
break_level=1 // h1レベルの見出しは改ページ
language="ja_JP" //日本語

以上で準備はOK

試しに OpenPNE3 のセットアップドキュメントがrstで書かれているのでPDFにしてみました

こういうの⇛ https://github.com/openpne/OpenPNE3/raw/master/doc/ja/OpenPNE3_Setup_Guide.txt

$ rst2pdf OpenPNE3_Setup_Guide.txt // このコマンドで同じディレクトリにPDFができる

できたのがこれ (PDF: 120K)

みやすいです。ドキュメント作成が楽しくなりそうですね

SeleniumIDE を使ってmixiの未読メッセージをすべて既読にするテストケースを作ってみた

SeleniumIDEにはいろいろなコマンドがあるので、何でもできそうな気がします。

mixiの未読メッセージがたまって、開く作業がだるいと思う人もいると思うので、自動で既読にするテストケースを作ってみました。

と、思ったのですが、数件あるメッセージを指定回数繰り返すテストとかできないんじゃないかな?と思い、どうすりゃいいかなと、探ってみたところいいのがありました。

これ http://51elliot.blogspot.com/2008/02/selenium-ide-goto.html

なるほど、

とういうことで

$ git clone git://github.com/darrenderidder/sideflow.git

でとってきたJSファイルをSeleniumIDEで読み込ませれば goto とか while とか label とか使えるんですね。

これを使って未読メッセージ開封テストケース作ってみました。

unread_mixi.html

ちゃんと動いたようです。

おしまい

Debian にgitosisとgitwebをいれてみた

Debian にgitosisとgitwebをいれてみた

目的

  • 公開しないリポジトリがほしい、自分用のメモとか
  • 自分のPCならどこでも見たい

操作手順

gitosis とか gitwebをいれる

サーバ側での操作

$ sudo apt-get install gitosis
$ sudo apt-get install gitweb

公開鍵、秘密鍵とか作る

クライアント側操作

$ ssh-keygen -t rsa -f ~/.ssh/id_rsa_nuts_git

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):  //空エンター
Enter same passphrase again:  //空エンター
Your identification has been saved in /Users/urabe/.ssh/id_rsa_nuts_git.
Your public key has been saved in /Users/urabe/.ssh/id_rsa_nuts_git.pub.
The key fingerprint is:  //空エンター
ce:5d:7b:37:35:d7:0a:2f:5c:16:30:64:2e:1c:dc:eb urabe@urabe-shinichi-no-MacBook-Pro.local
The key's randomart image is:  //空エンター
+--[ RSA 2048]----+
|         ..o=    |
|         ..+.o   |
|          o ...  |
|           ..  ..|
|        S  .o o.+|
|       o . oE* .+|
|        o . + +..|
|             o ..|
|                 |
+-----------------+

※ 空エンターしてますが、パスワード入れたい人はちゃんといれてくださいー

$ vim ~/.ssh/config

※ SSHで接続する鍵について記述 (これで、SSH、git も nuts-choco.net へは ~/.ssh/id_rsa_nuts_git を使って鍵認証します)
===================================
Host nuts-choco.net
  User urabe
  Port 22
  Hostname nuts-choco.net
  IdentityFile ~/.ssh/id_rsa_nuts_git
  TCPKeepAlive yes
  IdentitiesOnly yes
===================================

ちなみに nuts-choco.net はパスワード認証は許可していません

公開鍵を対象のサーバに送ります

$ scp ~/.ssh/id_rsa_nuts_git.pub nuts-choco.net:~/.ssh/authorized_keys

gitosis と gitweb の設定

サーバ上での作業

$ ssh nuts-choco.net // サーバに接続
$ chmod 600 ~/.ssh/authorized_keys
$ sudo cp ~/.ssh/authorized_keys /home/gitosis/urabe@mac.pub
$ sudo chown gitosis /home/gitosis/urabe@mac.pub
$ sudo su gitosis //gitosis ユーザになる
$ gitosis-init < urabe@mac.pub

gitweb の設定 config の設定

https://nuts-choco.com/git/ でアクセスさせる想定
https://nuts-choco.com/git/gitweb/ 配下にCSSファイル、画像が置かれる

$ sudo vi /etc/gitweb.conf

===================================
$projectroot = "/srv/gitosis/repositories";
$stylesheet = "/git/gitweb/gitweb.css";
$logo = "/git/gitweb/git-logo.png";
$favicon = "/git/gitweb/git-favicon.png";
===================================

$ ln -s /usr/lib/cgi-bin /var/www/sites/nuts-choco.com/public_html/git
$ ln -s /usr/share/gitweb /var/www/sites/nuts-choco.com/public_html/git/

gitweb の設定 apache の設定

$ cd /etc/apache2/sites-available
$ sudo vi gitweb
===================================

  Options ExecCGI FollowSymLinks
  AddHandler cgi-script .cgi
  AllowOverride None
  DirectoryIndex gitweb.cgi
  Order allow,deny
  allow from all
  SSLRequireSSL

  # digest 認証が不要なら削除
  AuthType Digest
  AuthName "my site"
  AuthDigestDomain /
  AuthUserFile /etc/apache2/.htdigest
  Require valid-user
  Satisfy all
  # digest 認証ここまで

   <IfModule mod_rewrite.c># https 強制とかしなくていい場合は、不要
    RewriteEngine On
    RewriteCond %{SERVER_PORT} ^80$
    RewriteRule ^(.*)$ https://%{HTTP_HOST}/git$1 [L,R]
   </IfModule>
===================================

$ cd ../sites-enabled
$ sudo ln -s ../sites-available/gitweb 001-gitweb
$ sudo /etc/init.d/apache2 restart

https://nuts-choco.com/git/ でアクセスするとgitwebが見れる
ただしまだリポジトリがない

リポジトリ作成

ローカルでの作業

$ git clone gitosis@nuts-choco.net:gitosis-admin.git
$ cd gitosis-admin
$ vim gitosis.conf

リポジトリを追加したい場合は、以下のように記述 memos というリポジトリ
===================================
[group memos]
writable = memos
members = urabe@mac
===================================

members = はスペースでコミットできるメンバーを追記
ちなみに urabe@mac.pub というファイル名の公開鍵を keydir に配置するだけで、urabe@mac というメンバーでコミット権限が与えられる

gitosis.conf を修正して

$ git add .
$ git commit -m "add repo memos"
$ git push

https://nuts-choco.com/git/ にアクセスするとリポジトリが増えた!

おしまい

wordpressのドメイン移行作業

自分のサービスを xxx.nuts-choco.com に集約したくなったので

ブログのURLを nuts-choco.net → blog.nuts-choco.com に移行してみた。

移行作業はこれだけ

$ mkdir /var/www/sites/blog.nuts-choco.com
$ ln -s /var/www/sites/nuts-choco.net/public_html  /var/www/sites/blog.nuts-choco.com/

あんまり詳しくないけど、ドメインの移行はSEO対策的にはちゃんと301でリダイレクトしたほうがよいらしいので .htaccess を以下のようにした

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{HTTP_HOST} ^nuts-choco\.net [NC]
  RewriteRule ^(.*)$ http://blog.nuts-choco.com/$1 [R=301,L]
</IfModule>

<IfModule mod_rewrite.c> は mod_rewrite が使える場合・・の条件分岐
使えると明らかに分かっていても、データ移行したときにうっかり使えないサーバに
ソースを置いてしまうと500エラーになってしまう。その対策

RewriteEngine On でrewrite を有効にする RewriteBase はrewrite する階層
RewriteCond は条件を指定、シンボリックリンクをはっただけの、リダイレクト先の blog.nuts-choco.com でもrewriteが適用されるとループが発生するためその対策
^(.*)$ に一致する文字列が リダイレクト先のURLの $1 に置き換えられ 301でリダイレクトする

移行完了したんだけど、、、、
ところで、管理画面にログインできないよ。。。!?

http://ja.forums.wordpress.org/topic/5597 でわかりました

option テーブルのsiteurlを nuts-choco.net → blog.nuts-choco.com にSQLで書き換えてOK

Debian 5.0.7(Lenny)に postfix courier potfixadmin をいれていろいろトラブルにぶちあったってみた

ども お久しぶりです。

冬眠してました。(一年以上更新してなくて・・)

やはりアウトプットはしっかりしたいと思うので、ブログちゃんと書きます。(まず、月一から)
こないだ妹にブログを見られたのですが、絵文字とか文字装飾が少なくてくだらないと批判されました。。まあ、余談です。

さくらVPSのDebian 5.0.7(Lenny)にUNIX システムアカウントを使わず、複数のドメインのメールをテスト用とかに使いたいと思ったことがあったので、そこで苦労したことをメモ程度ですが残しておきます(普通はこんなところでトラブらないだろってことばかりかも)

postfix をインストール

http://debiansrv.com/postfix_setting をそのまま実行しました

それが終われば、以下の操作

$ sudo apt-get install postfix-tls sasl-bin libsasl-modules-plain libsasl-digestmd5-plain

バーチャルドメインを管理する用アプリ:postfixadmin を導入

$ wget http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.2/postfixadmin-2.3.2.tar.gz
$ tar zxvf postfixadmin-2.3.2.tar.gz
$ mv postfixadmin-2.3.2 /var/www/sites/postfix.nuts-choco.com/public_html // 任意のウェブディレクトリに移動してください
$ cd /var/www/sites/postfix.nuts-choco.com/public_html

DB作成

$ mysqladmin -u root create postfix

DB設定をconfig.inc.phpに記述

$ vi config.inc.php

 49 $CONF['database_type'] = 'mysql'; //そのまま
 50 $CONF['database_host'] = 'localhost'; //そのまま  (1)
 51 $CONF['database_user'] = 'root'; //任意 (2)
 52 $CONF['database_password'] = 'postfixadmin'; //任意 (3)
 53 $CONF['database_name'] = 'postfix';//そのまま (4)
 54 $CONF['database_prefix'] = '';

$CONF['configured'] = false; → true に
$CONF['setup_password'] = 'changeme'; → 任意のものに変更

# 全般的にファイル内の change-this-to-your.domain.tld の文字列をメインのドメインに変更

http://postfix.nuts-choco.com にアクセス (僕は /var/www/sites/%0/public_html でVirtualNameHostを設定しているので、こんな感じでアクセスしてます)

すると セットアップ用のパスワードが要求されるので $CONF['setup_password'] に入力したものを入力する。
管理用のアカウントが作成できたら、セットアップ用のphpファイルは削除

$ rm setup.php

http://www.aconus.com/~oyaji/centos/smtp-mysql-centos.htm の「事前準備」と「基本的な設定(main.cf)」「バーチャルドメイン関係の設定ファイルの作成」を実施

そして試しに作ったメールアドレスにメッセージを送ってみましょう

# tail -f /var/log/mail.err //ログを確認します
postfix/trivial-rewrite[32106]: fatal: mysql:/etc/postfix/mysql_virtual_alias_maps.cf(0,lock|fold_fix): table lookup problem

う、なんだろこれ

これの解決方法は main.cf の mysql: 〜 となっている箇所を proxy:mysql: 〜 に書き換えればOK
http://hidelafoglia.livejournal.com/16100.html このブログをみて解決でした。はい

も、もういちど試しに作ったメールアドレスにメッセージを送ってみましょう

# tail -f /var/log/mail.err //ログを確認します
imapd: authentication error: Input/output error

うげ、なんですかこれは

http://www.aconus.com/~oyaji/centos/smtp-mysql-centos.htm の「バーチャルドメイン関係の設定ファイルの作成」の mysql_virtual_domains_maps.cf の select_field が description って空にしてなかったっけ・・とりあえずdomain に変更する

user = root (2)
password = new_password1 (3)
hosts = localhost   (1)
dbname = postfix (4)
table = domain
select_field = domain
where_field = domain

設定が終わったらpostfixを再起動してみましょう

$ /etc/init.d/postfix restart

これでエラーがきえた、やった

# ls /usr/local/virtual とすると希望通りのメールボックスのディレクトリができた

ついでに、簡易にウェブメーラでメールが見れるといいなと思ったので、libsasl2-modules-sql をインストール

# apt-get install libsasl2-modules-sql
# vi  /etc/courier/authmysqlrc

何も考えず、以下のように入力

============================================
MYSQL_USERNAME          root (2)
MYSQL_PASSWORD          new_password1 (3)
MYSQL_DATABASE          postfix (4)
MYSQL_USER_TABLE        mailbox
# MYSQL_CRYPT_PWFIELD    password ##コメントアウト
MYSQL_CLEAR_PWFIELD  password
MYSQL_UID_FIELD         uid
MYSQL_GID_FIELD         gid
MYSQL_LOGIN_FIELD       username
MYSQL_HOME_FIELD        home
MYSQL_MAILDIR_FIELD     maildir
MYSQL_QUOTA_FIELD       quota
============================================

# vi /etc/courier/authdaemonrc
============================================
authmodulelist="authcustom authuserdb authmysql authpam"
authmodulelistorig="authcustom authuserdb authmysql authpam"
daemons=5
version="authdaemond.mysql"
authdaemonvar=/var/run/courier/authdaemon
DEBUG_LOGIN=2 #エラーのログを確認
============================================

# /etc/init.d/courier-authdaemon restart

SquirrelMail は以下の記事を見ればできるよ!(省略)
http://www.bnote.net/kuro_box/kuro_debian_squirrelmail.shtml

SquirrelMailの設定が終わって、SquirrelMailにログインしてみます

ログイン失敗><

# tail -f /var/log/mail.err //ログを確認します
imapd: authentication error: Input/output error

うげ、またですか><

認証の接続がうまくいかないような情報が出てきたので、試しに、mysqlのクエリの全ログをはくように以下のようにしてみました

# vim /etc/mysql/my.cnf

============================================
[mysqld]
log = /var/log/mysql/mysql.log
============================================

# /etc/init.d/mysqld restart
# tail -f /var/log/mysql/mysql.log
 465 >->-    102 Init DB     postfix
 466 >->-    102 Query       SELECT username, password, "", uid, gid, home, maildir, quota, name, "" FROM mailbox WHERE username = 'test@nuts-choco.net'
 467 >->-    102 Quit-------

試しに SELECT username, password, “”, uid, gid, home, maildir, quota, name, “” FROM mailbox WHERE username = ‘test@nuts-choco.net’ をmysqlで実行

mysql> SELECT username, password, "", uid, gid, home, maildir, quota, name, "" FROM mailbox WHERE username = 'test@nuts-choco.net';
ERROR 1054 (42S22): Unknown column 'uid' in 'field list'

uid なんてフィールドないよってことですか
ついでに gid も home もないんだろう

無理やり作った↓

 # mysql -uroot -p
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2751
Server version: 5.0.51a-24+lenny4 (Debian)

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

mysql> use postfix
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show create table mailbox\G
*************************** 1. row ***************************
       Table: mailbox
Create Table: CREATE TABLE `mailbox` (
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `name` varchar(255) character set utf8 NOT NULL,
  `maildir` varchar(255) NOT NULL,
  `quota` bigint(20) NOT NULL default '0',
  `local_part` varchar(255) NOT NULL,
  `domain` varchar(255) NOT NULL,
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  `active` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`username`),
  KEY `domain` (`domain`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Postfix Admin - Virtual Mailboxes'
1 row in set (0.00 sec)
mysql> exit

# vi update.sql
============================================
ALTER TABLE `mailbox` ADD `gid` VARCHAR(255) NOT NULL DEFAULT 10000;
ALTER TABLE `mailbox` ADD `uid` VARCHAR(255) NOT NULL DEFAULT 10000;
ALTER TABLE `mailbox` ADD `home` VARCHAR(255) NOT NULL DEFAULT '/usr/local/virtual';
============================================
# mysql -u root -p postfix < update.sql
# rm update.sql

で、

ログインできた!

おしまい。

ブログ放置しすぎました。よくないですね

かなりほったらかしでした。openpneのプラグインが今、面白いのでそれについて今月中に何か書きます。お楽しみにー

自宅サーバーが不安定なのでブログ移行しました

さくらの月500円プランのお試し期間使ってます。SSH使えて一番安いところにしました。2ギガも使えるようです。

昔は100メガぐらいの容量でFTPが使えるけど、SSHなんて使えないのに、月2000円ぐらいしませんでしたっけ?(あとPHPとPerlぐらいは使えてhtaccessはダメみたいな)

ブログだけならどっかのレンタルブログでいいかもなーって思うのですが、自由度が低くて面白くない。サーバー借りてやりたいように設置するのが面白いんですよね?。

折角SSHもつかえるのに、ブログだけなんてもったいないので、自分専用アプリの開発用に使っていきたいと思うのですが、なんてったってDBが一個しか使えないのが帯に短し襷に長しなんですよね。

ちょうどいい方法があれば考えていきたいですねー。

さくらにvimをインストールしたのですが役に立ったサイトがあるのでトラックバックします。ブログの作者さんありがとうございます。

http://www.hazama.nu/t2o2/archives/002696.shtml

あとはackをインストールしようっと