PuTTY + screen の表示を 256 色にする方法

  Solaris 10 で PuTTY + screen の表示を 256 色にする方法です.

1. ncurses のインストール

  ncurses をインストールしていない場合はインストールします.
  ncurses をインストールすると,xterm-256color という terminfo がインストールされます.
  
- ref.: ncurses のインストール方法
  http://install.pocari.org/ncurses.html

2. xterm-256color のシンボリックリンクを張る

  xterm-256color は /usr/local/share/terminfo にインストールされるので,これを Solaris 標準の terminfo ディレクトリの /usr/share/lib/terminfo にシンボリックリンクを張ります.

# ln -s /usr/local/share/terminfo/x/xterm-256color /usr/share/lib/terminfo/x/xterm-256color

3. screen を --enable-colors256 オプションをつけてコンパイルする

  Soalris 10 の場合は,screen 4.0.3 は make に失敗するので以下のパッチをどうぞ.

--- misc.c-orig 2003-12-05 22:45:41.000000000 +0900
+++ misc.c      2007-02-11 18:40:32.987599000 +0900
@@ -613,7 +613,7 @@
    */
 # endif /* NEEDSETENV */
 #else /* USESETENV */
-# if defined(linux) || defined(__convex__) || (BSD >= 199103)
+# if defined(linux) || defined(__convex__) || (BSD >= 199103) || defined(__sun__) || defined(__sun)
   setenv(var, value, 1);
 # else
   setenv(var, value);

4. screen の設定をする

  ~/.screenrc に以下の設定を追加すします.

## http://frexx.de/xterm-256-notes/
# erase background with current bg color
defbce "on"
# do not use 'screen-bce'
term xterm-256color

5. PuTTY の設定をする

  [PuTTY 設定] - [ウィンドウ] - [色] から「xterm 256 色モードで使うことを許可する」にチェックを入れます.

  注) [PuTTY 設定] - [接続] - [データ] の「端末タイプを表す文字列」を「xterm-256color」にしてもいいのですが,この設定をした PuTTY で xterm-256color がない環境にログインした場合に表示が崩れるので,.zshrc などで設定したほうがいいような気がします.

6. 確認

  The 256 color mode of xterm のページから 256colors2.pl をダウンロードします.
  screen を立ち上げてから,ダウンロードした 256color2.pl を実行します.
  以下のようにきれいに 256 色表示ができたら,OK です.

  

- via: qootas.org/blog - 256 colors: putty + vim + screen
  http://qootas.org/blog/archives/2006/03/256_colors_putt.html

- ref.: The 256 color mode of xterm
  http://frexx.de/xterm-256-notes/

Software Design 2007 年 4 月号

  B000O58WH4
  amazon.co.jp 詳細ページへ
  技術評論社
  ISBN: B000O58WH4
  2007/3/17
  970 円

  第 2 特集に総ページ 54 ページにも及ぶ「Firefox 拡張機能開発チュートリアル」が掲載されている.

o 1章:Firefox拡張機能ことはじめ……江村秀之(level)
o 2章:~開発を始める前に~拡張機能開発で使う技術……下田洋志
o 3章:XUL入門~直感的なUI作成を体験!~……下田洋志
o 4章:XPCOM活用術~高度な処理を実現する~……下田洋志
o 5章:Firefox拡張機能を作ってみよう!……五味渕大賀
o AppendixFirefox拡張機能/XULアプリ開発支援ツールセレクション……松澤太郎 aka btm

Solaris 10 に MeCab と Senna と MySQL をインストールする …… 失敗

  まず,MeCab のインストール.
  MeCab 0.8.1 と共存したいので,/usr/local/mecab/0.9 にインストールすることにします.

- MeCab 0.95

$ tar -zxvf mecab-0.95.tar.gz
$ cd mecab-0.95
$ ./configure --prefix=/usr/local/mecab/0.9
$ make
# make install

- ipadic 2.7.0

$ tar -zxvf mecab-ipadic-2.7.0-20060707.tar.gz
$ cd mecab-ipadic-2.7.0-20060707
$ ./configure --prefix=/usr/local/mecab/0.9
$ make
# make install

  ここで MeCab にパスを通しておく

$ export PATH=${PATH}:/usr/local/mecab/0.9/bin
$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/mecab/0.9/lib
$ export LD_RUN_PATH=${LD_LIBRARY_PATH}

  次に Senna のインストール.こちらは /usr/local/senna にインストールします.

- Senna 1.0.2

$ tar -zxvf senna-1.0.2.tar.gz
$ cd senna-1.0.2
$ ./configure --prefix=/usr/local/senna
$ make INCLUDES=-I/usr/local/mecab/0.9/include

  とここで,以下のエラーが出ました.

store.c: In function `sen_fse_open':
store.c:75: error: `UINT_MAX' undeclared (first use in this function)
store.c:75: error: (Each undeclared identifier is reported only once
store.c:75: error: for each function it appears in.)
make[2]: *** [store.lo] Error 1
make[2]: Leaving directory `/home/suna/workspace/src/senna-1.0.2/lib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/suna/workspace/src/senna-1.0.2'
make: *** [all] Error 2

  どうも UINT_MAX が定義されていないようです.とりあえず,lib/store.c に以下のパッチを当てました.
  #include <limits.h> を付け加えただけです.

--- store.c-orig        2007-03-14 15:48:35.000000000 +0900
+++ store.c     2007-03-15 21:57:30.308187817 +0900
@@ -19,6 +19,7 @@
 #include "inv.h"
 #include "store.h"
 #include <string.h>
+#include <limits.h>

 /* fixed sized elements */


  もう一度 make します.

$ make INCLUDES=-I/usr/local/mecab/0.9/include
# make install

  以下のような warning がたくさん出ましたが,とりあえず make が終了しました.

../config.h:86:1: warning: "_FILE_OFFSET_BITS" redefined

- MySQL 4.1.22

$ tar -zxvf mysql-4.1.22.tar.gz
$ cd mysql-4.1.22

  ここで Senna から提供されている 4.1.20 用のパッチを当てようとしたのですが,2ind パッチでうまく当たらないファイルがあった (sql/item.h) ので 4.1.22 用のパッチを作りました.ついでに 2ind でない方のパッチも 4.1.22 用に新しくしました.

o mysql-4.1.22.senna.diff
o mysql-4.1.22.senna.2ind.diff

$ patch -p1 < ../mysql-4.1.22.senna.diff
$ patch -p1 < ../mysql-4.1.22.senna.2ind.diff (2ind パッチを当てる場合)

  configure を再生成します.
  senna に含まれるドキュメント (doc/INSTALL.JA) には

bison 1.75, autoconf 2.59, automake 1.8(aclocal 1.8)以上が必要です

  のような記載がありますが,実際はこれらに加えて,libtool も必要です.

$ libtoolize -c -f
$ aclocal
$ autoheader
$ automake -c -a -i
$ autoconf
$ touch sql/sql_yacc.yy

  次に configure をします.
  configure の際には,--with-senna と --with-mecab をオプションに追加します.

$ ./configure --prefix=/usr/local/mysql \
              --with-extra-charsets=all \
              --without-readline \
              --enable-assembler \
              --with-low-memory \
              --with-senna=/usr/local/senna \
              --with-mecab=/usr/local/mecab/0.9
$ make
# make install

  ちなみに,MySQL バインディングは Tritonn という別プロジェクトになったみたいです.
  MySQL 5.0.36/5.0.37 の場合は Tritonn からパッチがリリースされています.

- Tritonnプロジェクト ~ MySQL+Sennaによる全文検索 ~ - Tritonnプロジェクト
  http://qwik.jp/tritonn/

  とりあえず,インストールはこれで完了です.
  動作確認はまた後日.

- 追記
  うまくいったと思ったら,MySQL の make でエラーが出てました.

sql_yacc.cc: In function `int yyparse(void*)':
sql_yacc.cc:22272: error: expected primary-expression before "__attribute__"
sql_yacc.cc:22272: error: expected `;' before "__attribute__"

  うーむ.これについてもまた後日調べるとします.

PuTTY + screen + Vim + マウスが便利すぎる件

  PuTTY では Vim の操作にマウスが使えるということを以下のページで知ったので,早速試してみました.

- おさかなラボ - vimのマウス機能が便利すぎる件
  http://kaede.to/~canada/doc/vimiythyyuceoioei

- おさかなラボ - 便利過ぎるvim + マウスをscreenで使う
  http://kaede.to/~canada/doc/vimmouse-with-screen

  設定は以下のようにすれば OK です.

set mouse=a
set ttymouse=xterm2


  動きが面白かったので,Wink でキャプチャしてみました.

- PuTTY + screen + Vim + マウスが便利すぎるキャプチャ
  http://pocari.org/demo/vim-mouse/vim-mouse.html

実践 Web Standards Design ― Web 標準の基本と CSS レイアウト & Tips

  4861671647
  amazon.co.jp 詳細ページへ
  市瀬 裕哉 (著), 福島 英児 (著), 望月 真琴 (著)
  九天社
  ISBN: 4861671647
  2007/02
  3,360 円

Google Maps APIv2 活用リファレンス

  4774130257
  amazon.co.jp 詳細ページへ
  アイティティ (著)
  技術評論社
  ISBN: 4774130257
  2007/2/9
  2,289 円

Groove Technology の郵便番号検索 API を扱う Services_Groove_ZipSearch を作りました

- グルーブテクノロジー株式会社 - Web サービス
  http://groovetechnology.co.jp/webservice/

  グルーブテクノロジーによる郵便番号検索 API を利用して,結果を取得するライブラリ Services_Groove_ZipSearch を作りました.

  この API の特長は,JSON 形式,JSONP 形式,XML 形式,PHP の serialize() 形式という風に,任意の形式で出力を受け取れることです.
  今回は,PEAR パッケージにしてみました.

- Services_Groove_ZipSearch-0.1.0
  http://pocari.org/tools/php/Services_Groove_ZipSearch-0.1.1.tgz

  インストールは,以下のようできます.

# pear install http://pocari.org/tools/php/Services_Groove_ZipSearch-0.1.1.tgz

- 使い方

<?php

require_once 'Services/Groove_ZipSearch.php';

$zip = new Services_Groove_ZipSearch;

$result = $zip->search(1000001);
if (PEAR::isError($result)) {
    exit($result->getMessage());
}

print_r(unserialize($result));
?>


- 出力

Array
(
    [address] => Array
        (
            [0] => Array
                (
                    [zipcode] => 1000001
                    [prefecture] => 東京都
                    [city] => 千代田区
                    [town] => 千代田
                    [prefecture_yomi] => トウキョウト
                    [city_yomi] => チヨダク
                    [town_yomi] => チヨダ
                )

        )

    [office] => Array
        (
        )

)


  Groove_ZipSearch::search() に郵便番号検索 API のパラメータを渡すことができます.
  パラメータの種類と順序は,郵便番号検索 API のリクエストパラメータと同じです.詳しくはソースを見てください.

  また,郵便番号検索 API の出力形式 (format) のデフォルト値は json になっていますが,このライブラリでは PHP になっています.
  すなわち,serialize() された形がデフォルトで戻ってきます.

- via: using API; RESTで使える郵便番号検索API
  http://api.zuzara.com/archives/115

- 追記 (2007-12-18)
  サンプルが間違っていたのを修正して、0.1.1 (alpha) をリリースしました。
  サンプルの出力結果を追記しました。