.screenrc をリロードする
.screenrc を弄っていて、設定を確認するたびに、quit していましたが、再読み込みすることが出来たらしい。
エスケープ (デフォルトだと C-a) した後に、下記コマンドで OK です。
:source $HOME/.screenrc
ちなみに、:source ~/.screenrc だと NG でした ($HOME じゃないと駄目)。
.screenrc を弄っていて、設定を確認するたびに、quit していましたが、再読み込みすることが出来たらしい。
エスケープ (デフォルトだと C-a) した後に、下記コマンドで OK です。
:source $HOME/.screenrc
ちなみに、:source ~/.screenrc だと NG でした ($HOME じゃないと駄目)。
2007-09-01 に PHP カンファレンスが大田区産業プラザ (PiO) で行なわれました。
自分が見たプログラムの内容をメモしておいたので簡単にまとめます。また、まとめながら調べたことも一緒に記述しています。
なお、間違いがあるかもしれませんが、その際は教えていただけるとありがたいです。
- PHPカンファレンス2007プログラム概要
http://www.php.gr.jp/seminar/20070901/prog.php
+-----+----------+
| UID | 名前 |
+-----+----------+
| 7 | すなおか |
+-----+----------+
↑
↓
+----+-----+-------------+
| ID | UID | 内容 (TEXT) |
+----+-----+-------------+
| 1 | 7 | ほげほげ... |
+----+-----+-------------+
+----+-----+---------+
+-----+----------------+ | ID | UID | 内容 |
| UID | パーティション | +----+-----+---------+
+-----+----------------+ | 1 | 7 | ... |
| 7 | 1 | → +----+-----+---------+
+-----+----------------+
| 9 | 2 | → +----+-----+---------+
+-----+----------------+ | ID | UID | 内容 |
+----+-----+---------+
| 2 | 9 | ... |
+----+-----+---------+
$ ./configure --disable-all
以上、大雑把ですがまとめてみました。講師のみなさんありがとうございました。
懇親会にも出席していろいろな方と名刺交換・お話ができて充実した一日でした。
最後に戦利品です。
2007-08-20-1: [Solaris]
~/.zlogin に以下を記述する。
if [ ! "$WINDOW" ]; then
exec screen -S main -xRR
fi
ログイン直後にいつも screen を打っていたのですが、これで楽になりました。
- 追記 (2007-08-21)
コメント欄で情報をいただいたように、他のホストにログインすると screen が二重起動する件ですが、以下のようにして対処できそうです。
if [ $TERM != "screen" ]; then
exec screen -S main -xRR
fi
ただし、Solaris の場合は terminfo に screen の記述がないので上記設定ではうまくいきません。
結局メインで使うマシンのみに、一番上の設定をしてそれ以外のマシンは手動で screen を打つという運用でカバーすることにしました。
以前ターミナルを 256 色にしたのですが,せっかくなので Vim も 256 色で使いたいと思って以下のようなスクリプトを書きました.
#!/usr/bin/env perl
use strict;
use warnings;
my $fg = "\x1b[38;5;";
my $bg = "\x1b[48;5;";
my $rs = "\x1b[0m";
my $color = 0;
for (my $row = 0; $row < 32; ++$row) {
for (my $col = 0; $col < 8; ++$col) {
print get_color($color);
$color++;
}
print "\n";
}
sub get_color {
my ($color) = @_;
my $number = sprintf '%3d', $color;
return qq/${bg}${color}m ${number} ${rs} ${fg}${color}m${number}${rs} /;
}
さて,こいつは何をするかというと,使っているターミナル上で何番の番号が何の色かを表示するものです.
自分の環境では以下のようになります (クリックして大きくなります).
この番号はそのまま Vim の色指定の番号になります.
つまり ctermfg とか ctermbg とかに,表示された色を見ながら番号を指定することができます.
例えば,上記スクリプトで表示された色番号 21 を使いたい場合は,以下のように設定する感じですね.
hi diffAdded ctermfg=21
dig の出力に色をつける dig-color というのを作ってみました.
リソースレコードタイプは A/NS/CNAME/SOA/MX のみにしか対応していませんので,そのほかのタイプが必要であれば追加してください.
#!/usr/bin/env ruby
colors = {
"section" => "02;01",
"comment" => "37",
"normal" => "00",
"A" => "32",
"NS" => "34",
"CNAME" => "36",
"SOA" => "33",
"MX" => "31",
}
IO.popen("dig " + ARGV.join(" ")) { |io|
io.each_line { |line|
color = colors["normal"]
if line =~ /^;;.+SECTION:$/
color = colors["section"]
elsif line =~ /^;/
color = colors["comment"]
elsif line =~ /^(.+\s)(SOA|NS|A|MX|CNAME)(\s.+)$/
color = colors[$2]
# レコードタイプのみに色を付ける場合
#line = sprintf "%s\e[%sm%s\e[00m%s\n", $1, colors[$2] ,$2, $3
end
printf "\e[%sm%s\e[00m", color, line
}
}
- 出力例 (この色が見やすいかどうかは……)
- 追記
Perl で書き換えてくれた方がいました.
- dig の出力に色をつける dig-color(perl版) | cafe chantant blog
http://www.cafechantant.com/blog/2007/07/04/dig-%e3%81%ae%e5%87%ba%e5%8a%9 ...
Solaris 10 に MeCab と Senna と MySQL をインストールする …… 失敗 の続きです.
MySQL 4.1.22 用の Tritonn パッチがリリースされたので,テストです.
- mir the tritonn - MySQL 4.1対応版リリース
http://d.hatena.ne.jp/mir/20070412/p1
前回も少し書いたのですが,Senna の MySQL パディングは Tritonn という別プロジェクトになっています.
当初は,MySQL 5.0.x 用のパッチのみの提供でしたが,今回 MySQL 4.1.22 用のパッチがリリースされました.
まず,MeCab,Senna 本体のインストールをします.インストールは [2007-03-24-1] と同じです.
Senna は 1.0.4 にバージョンアップして,Solaris 10 では UINT_MAX の未定義のエラーは出なくなっています.
次に,Tritonn パッチをダウンロードして,MySQL にパッチを当てます.
- SourceForge.jp: Project File List
http://sourceforge.jp/projects/tritonn/files/
$ tar -zxvf tritonn-1.0.2.mysql-4.1.22.senna-1.0.4.tar.gz
$ tar -zxvf mysql-4.1.22.tar.gz
$ cd mysql-4.1.22
$ patch -p1 < ../tritonn-1.0.2.mysql-4.1.22.senna-1.0.4/mysql-4.1.22.senna.diff
configure を再生成します.
$ 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
うーむ.[2007-03-24-1] と同じエラーでした.
sql_yacc.cc: In function `int yyparse(void*)':
sql_yacc.cc:22059: error: expected primary-expression before "__attribute__"
sql_yacc.cc:22059: error: expected `;' before "__attribute__"
make[4]: *** [sql_yacc.o] Error 1
- ちなみに MySQL 5.0.37 では
まったく問題なく行きました!
$ mysql -uroot -p test
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.37-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> CREATE TABLE t1 (c1 TEXT, FULLTEXT INDEX ft USING NGRAM (c1)) ENGINE = MyISAM DEFAULT CHARSET ujis;
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO t1 VALUES ("すもももももももものうち");
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO t1 VALUES ("生麦生米生卵");
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO t1 VALUES ("東京特許許可局");
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM t1 WHERE MATCH(c1) AGAINST("特許");
+----------------+
| c1 |
+----------------+
| 東京特許許可局 |
+----------------+
1 row in set (0.00 sec)
ということで,MySQL 5.0.37 で使っています.検索は想像以上に高速です.
また,折をみて,MySQL 4.1.22 用は試してみたいと思います.
2007-03-28-1: [Solaris]
Solaris 10 で PuTTY + screen の表示を 256 色にする方法です.
ncurses をインストールしていない場合はインストールします.
ncurses をインストールすると,xterm-256color という terminfo がインストールされます.
- ref.: ncurses のインストール方法
http://install.pocari.org/ncurses.html
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
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);
~/.screenrc に以下の設定を追加すします.
## http://frexx.de/xterm-256-notes/
# erase background with current bg color
defbce "on"
# do not use 'screen-bce'
term xterm-256color
[PuTTY 設定] - [ウィンドウ] - [色] から「xterm 256 色モードで使うことを許可する」にチェックを入れます.
注) [PuTTY 設定] - [接続] - [データ] の「端末タイプを表す文字列」を「xterm-256color」にしてもいいのですが,この設定をした PuTTY で xterm-256color がない環境にログインした場合に表示が崩れるので,.zshrc などで設定したほうがいいような気がします.
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/
関連記事:
[2007-06-30-2] Vim を 256 色で使いたい
まず,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__"
うーむ.これについてもまた後日調べるとします.
関連記事:
[2007-04-25-1] MySQL 4.1.22 用の Tritonn パッチをテストしてみる
- SunOS 5.10/5.11 in.telnetd Remote Exploit by Kingcope
http://www.st.ryukoku.ac.jp/~kjm/security/memo/2007/02.html#20070212_SunOS
SunOS 5.10/5.11 の in.telnetd にリモートから認証なしでログインできる欠陥が見つかったということです.
カンタンに手作業で入れてしまいます.
手元の Solaris 10 1/06,06/06 でも再現しました.
とりあえずの対策は in.telnetd を disable にすることでしょうか.
# svcadm disable telnet
以下の記事も参考に
- ref.: SunOS 5.10/5.11 in.telnetd に認証迂回の脆弱性
http://diary.sytes.net/solaris/?20070212#12-1
- 追記 (2007-02-21)
パッチが出ました
o 120068-03 SunOS 5.10: in.telnetd patch
o 120069-03 SunOS 5.10_x86: in.telnetd patch
2007-02-07-1: [Solaris]
- 注意:
以下の情報は,正確なものではありません.この設定をしても,スイッチを確認すると harf duplex でしか通信していませんでした.
解決策は末尾に追記しています.
Solaris 10 で elxl0 なインタフェースを搭載した機械との scp がやたら遅いので調べてみました.
$ ifconfig elxl0
elxl0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
inet 192.168.1.xxx netmask ffffff00 broadcast 192.168.1.255
$ modinfo | grep elxl
133 f9a36000 58e8 39 1 elxl (3Com 90XX LAN driver 1.34)
elxl は 3Com の NIC ということがわかります.
$ kstat -p :::duplex :::ifspeed
elxl:0:elxl0:duplex harf
elxl:0:elxl0:ifspeed 0
通信方式は半二重方式で,接続速度は 0 (???) ということがわかりました.
これを全二重方式 (full duplex) で接続速度を 100000000 (100M) にしてあげればよさそう.
$ man elxl
Devices elxl(7D)
NAME
elxl - 3Com Ethernet device driver
SYNOPSIS
/kernel/drv/elxl
:
FILES
/dev/elxl Special character device
/kernel/drv/elxl.conf Configuration file for elxl
driver
/kernel/drv/elxl.conf が elxl の設定ファイルということがわかりました.
# vi /kernel/drv/elxl.conf
#ident "@(#)elxl.conf 1.4 00/07/17 SMI"
#
# Copyright (c) 1998, by Sun Microsystems, Inc.
# All rights reserved.
#
# Driver.conf file for the 3Com 3C90x
#
# To force full duplex operation, uncomment the following line:
full-duplex=1;
#
# To force half duplex operation, uncomment the following line:
#full-duplex=0;
#
# To force 10Mbps operation, uncomment the following line:
#speed=10;
#
# To force 100Mbps operation, uncomment the following line:
speed=100;
これで OK...と思ったら大間違いです.この設定をするとインタフェースが起動しなくなります.
ですので,先に下の 5 を行うのがいいでしょう.
注: ndd でテストしてみるのが王道でしょうが,なぜか elxl は ndd で値をセットできませんでした...?
3c90xcfg.exe というのは 3Com の NIC の DOS 用 診断プログラムです.
これをダウンロードしてきて,Boot 可能な FD にコピーして DOS で起動します.
- 3c90x2.exe (含 3c90xcfg.exe)
ftp://ftp.3com.com/pub/nic/3c90x/3c90x2.exe
診断プログラムで通信方式を full duplex に,通信速度を 100M に設定します.
うまくいけば,ちゃんとブートしますので,ここで通信方式と通信速度を確認してみます.
$ kstat -p :::duplex :::ifspeed
elxl:0:elxl0:duplex full
elxl:0:elxl0:ifspeed 100000000
無事,全二重方式で 100M に設定されました.もちろん scp も劇的に改善しています.
環境は Solaris 10 x86 でした.
- ref.: Re: Full duplex with elxl0: 3Com 90XX LAN driver on Solaris x86
http://www.dbforums.com/showpost.php?s=f058de31a8eb53479a1effb026633668&p= ...
- 追記
上記の情報は,正確なものではありません.この設定をしても,スイッチを確認すると harf duplex でしか通信していませんでした.
解決策は単純に /kernel/drv/elxl.conf の speed のみを 100 に設定すれば OK です.
# vi /kernel/drv/elxl.conf
#ident "@(#)elxl.conf 1.4 00/07/17 SMI"
#
# Copyright (c) 1998, by Sun Microsystems, Inc.
# All rights reserved.
#
# Driver.conf file for the 3Com 3C90x
#
# To force full duplex operation, uncomment the following line:
#full-duplex=1;
#
# To force half duplex operation, uncomment the following line:
#full-duplex=0;
#
# To force 10Mbps operation, uncomment the following line:
#speed=10;
#
# To force 100Mbps operation, uncomment the following line:
speed=100;
上記手順 5 の 3c90xcfg.exe を使った通信方式と通信速度を変更は必要ありません.
この設定をしても,kstat の表示は harf duplex のままですが,スイッチで確認すると問題なく full duplex になっています.
$ kstat -p :::duplex :::ifspeed
elxl:0:elxl0:duplex harf
elxl:0:elxl0:ifspeed 0
おそらく,ドライバの表示が間違っているのではないかと思われます.