2005年09月01日

お片づけ。

8 月最後の土日は夏の締めくくり。
ってことで 7 人でキャンプに行ってきました。
キャンプとはいいますが、オトナのキャンプはキャンプじゃない!(笑)
野外で BBQ をして、バンガローでとまって、
次の日に温泉に行くって言う感じ。
でもでも、みんなでわいわいいいながら野外の BBQ は楽しいし、
自然の声を聞きながら過ごすのも楽しいです。

そこまではいいんです。
その大自然 (山梨県の山の中) までの移動手段はというと、
ウチのレガシーも対象になるわけです。
# 車もっているのが 2 人しかいない上、
# 雪山で練習したおかげで、運転も結構うまいほう (らしい) なので逃げられません。
でも! その結果車の中はドロドロ、外は BBQ の煙であぶらぎって、
さらに車内は焼き肉臭くなってしまいました。
うぇーーん。
ってことで、本日は真っ昼間からそのお片づけをしてました。
# ちなみに昨日が深夜の切り替え作業があったおかげで、今日は徹夜明け休

時間は有限なので、取りあえずはお金で解決モードから入ります。
ガソリンスタンドで洗車&車内清掃。
でも、それだけじゃ足りないので、そのあとで車内ファブリーズ!!
んでもって、車内のあらゆる場所をふきあげ。
で、ようやくピカピカ普通の車に戻りました。
ついでなので、最近うまく動かなくなってたキーレスエントリーを修理。
とはいっても、私は車はちっとも詳しくありません。
ディーラーで治してもらうつもりが、電話をしたら
「忙しいからこれから言う修理方法を試してくれ」
とのことで、試したらまんまと治ったというパターンです。

あー、でも、なんか、気持ちいいかもっ!!
今日は有意義ー☆

Posted by k-square : 21:53 | Private | コメント (2)

2005年09月05日

膝。再発。

ひざ。です。うるし。じゃないですよ?(笑)

えーっと。
前も言ったような気がしますが、スポーツをする人で体をいためていない人はいません。
基本的には関節か腱か筋肉をいためた経験をもつものです。
どれもいためてない人は、精神的にオトナで無理をしなかったか(笑)、
運がいいかののどちらかだと思います。

で、私の場合は子供だし運もそれほど良くなかったので、
いろんなところをいためてたりします。
右肩をひどく捻挫して、それからは脈絡のないタイミングで激痛がはしりますし、
# ほとんど発作に近いです。
# その症状が出てるときは右手を左手で支えてあげないといけなかったり・・・
腰は「腰椎すべり分離症」という診断されていて、
現状は痛くないですが、
「筋肉が衰えたら絶対痛くなるから、鍛え続けなさい」
と断言される始末(涙)
左足首は昔骨折したせいで、稼動域が狭い上に筋肉の動きがいまいちのため、
長い時間歩いたり運動したりすると、ずきずきするような状況です。

そして、今回の話題は膝。
2003 年の 12 月頃いためて一旦は治癒していたのですが、
最近の個人的なテニスブームで再度いためてしまったようです。
結構痛い・・・。

これから秋でジョギングにもいい気候だし、
冬に備えて確実に治しておかないといけないので、
これ以上いためるわけにはいきません。
そういうわけで、かなり好きになってたところですが、
テニスを断念しようと思います。
せっかくいろいろ勉強して、やる気マンマンだったのにぃ。。。。
ううーーー。
来年の夏のスポーツはやっぱり、サーフィンとかかなぁ。。。。

Posted by k-square : 01:59 | Sports | コメント (0)

2005年09月06日

Network

私はサーバエンジニアです (しかも Windows より)
ある程度上級のサーバエンジニアはみなネットワークのこともある程度わかるもので、
私もそれなりにはわかります。
でも、やっぱり専門職ではないので、冗長化の時の仕様とか、
ネットワーク機器の仕様とか、メーカ独自の拡張とか、自律制御系ネットワークとかは
ほとんどわかりません。

さて、今日からはじまった新しいプロジェクトは、
そのわからない部分満載のプロジェクトで、しかも私がリーダー扱い。
L3SW (C3550) の冗長化にロードバランサー (BIG-IP) の冗長化に
L2SW の冗長化 (+スパニングツリー) といった内容。
サーバ関連だったら、リーダーどころかリーダーから実働者まで
全て実施するのですが、今回は実働できるところの方が少ないぐらい。
実際に私が作業できるのは、DNS の設定ぐらい。。。

というわけで、マネジメントの方に徹していこうと思います。
かなり大変そうですが、結構やりがいがあります。
なんと言っても新たな技術を学びながらすすめられるのは、
本当に嬉しいことです。
最近新たな技術を手に入れていないだけに、
その気分は爽快に近いものがあります。

さて、その技術、ご存知の人も多いかもしれませんが、少しだけ書いてみますね。
まだ詳しくないので、とりあえず概要だけです。
この程度の情報ではネットワークの挙動がわからないので、
実際はもっともっと調べることになります。
(というか、今後調べていきます)

HSRP
http://ew.hitachi-system.co.jp/w/HSRP.html
http://www.nw-support.jp/hsrp.html
VRRP
http://ew.hitachi-system.co.jp/w/VRRP.html
冗長化などの設定時の注意事項 (自律ネットワーク系)
http://www.mpls.jp/2004/presentations/high_availability3.pdf

今日は疲れたけど、いい気分。
でもでも!!仕事人間にはなるつもりないからね〜。
転職に有利な材料を集めると思って (一時的に) 頑張ります☆

Posted by k-square : 22:41 | Network | コメント (0)

2005年09月08日

メールサーバ

メールサーバを気楽に立てる人がいますが、
たいていの人に問題なくメールを送れるようにするには、
結構ちゃんと意識して作らないといけません。
昔はオープンリレーな MTA であっても普通に送れたようですが、
現在はそうはいきません。
最近の spam 対策手法で以下のようなものがあるからです。

1. MTA のブラックリスト
2. 逆引きできないホストからの受信拒否
3. 逆引き結果がクライアントっぽいアドレスからの受信拒否
4. ホワイトリストにのっていないホストからの受信拒否
5. ブラックリストにもホワイトリストにものっていないホストからの受信の再試行確認

というわけで、きちんとメールの送れる MTA にするには、

1. MTA 利用者が spam が送れないように制御する
2. 逆引き/正引き/MXを正しく登録する
3. FQDN は mail や smtp などの文字列を含ませる。
それができない場合は、smarthost などを利用することを考慮する。
4. 自立 MTA で拒否されたメールを上流の MTA を利用して送信されるような設定を入れておく。
5. 再試行回数を短くしすぎないようにする (デフォルト値推奨)

ということをする必要があります。
特にケータイ宛てのメールについては、全て上流の MTA を
利用して送信されるように構成することをおすすめします。
ケータイのキャリアで拒否されるからという理由が主ですが、
プロバイダによっては、
hi-hoが「ポート25ブロッキング」を実施,携帯電話ユーザーへの迷惑メールを遮断
のような対策がある場合があるからです。


また、追加での注意点として、

1. From 詐称によるメールを Virus がばら撒いたりする
2. エラーメールによる攻撃をするために、From を詐称したメールを送信する
3. 同時に負荷をあげる攻撃のために容量のそこそこのファイルを添付する

ことがあるため、MTA のエラーメールに対して以下のような対策をすることをおすすめします。

1. 送信できなかったメールのエラーメール自体がエラーになったときは、
そのメールは削除するようにする。(/dev/null に捨てるか、削除スクリプトを cron でまわす)
2. エラーメールには元のメールを添付しない (ヘッダ情報をつけるぐらいにする)
3. 同一 IP からの接続回数が多い場合は、その接続を受け付けないようにする
(可能な場合のみ。難しいと思いますので。)


既に長いこと MTA を立てている人は問題ない場合が多いですが、
新たに MTA をたてたりするときは、気をつけるようにしてください。
いくつかのサーバは ident などでアクセスすることもあるので、
タイムアウトまでの時間 (おおむね 30sec) を浪費しなくていいように、
ident についてのパケットを捨てるのではなく、拒否するようにしましょう。
( drop せず、 reject しましょう)

一部のドメインには送れるから、相手サーバが悪いんだー。
なんていう考え方はとおりませんよ?
アドレスを間違えない限り全てのドメインに送れるように構築しましょうね。
受け取ってくれるドメインが寛大なだけなんですから。
# 何かいまいちな下請けを使ってしまったらしいです。。。

Posted by k-square : 23:15 | Linux/UNIX | コメント (0)

2005年09月10日

Windows のトラブルシューティング。

Windows のサーバ管理者の人に言いたいことがあります。
OS に標準搭載されているツールだけで、
トラブルシューティングができますか?
できないでしょ?
原因がわからないんでしょ?
だったらトラブルシューティングのためのツールを入れなさいよ。
ってか、そもそもそれを最初に入れてない時点で運用者として失格!!(断定)

というわけで。
いきなりですが、Windows 系 OS をインストールしたら、
すぐに入れておかなければならないツール類として、以下のようなものがあげられます。
■リソースキット
■ネットワークモニタ (プログラムの追加と削除にあります)
■netcat , ngrep などネットワーク調査系ツール (ネットワークモニタと併用)
■プロセス解析ツール (タスクマネージャより詳細なもの)
■kill ツール (タスクマネージャで落とせないものを強制的に落とすもの)
■sysinternals のモニタ系ツール
■ドライバの情報を調査するツール (デバイスマネージャでは足りません)
■GNU 系テキストツールなど (Cygwin がいいと思います)
■サポートツール

コレは基本的にはサーバ系 OS を意識しています。
クライアント系 OS では ethereal とかがネットワークモニタの代わりになります。
ちなみに上ほど重要で、特にリソースキットが入ってないサーバは、
実運用で使い物にならないことヒシヒシです。
(やりたいいろいろなことができないので・・・)
というわけで、とりあえず上記のツール類は入れておくことをおすすめします。
たいていのツールはインストールウィザードをはしらせる必要なく、
コピーして起動すればつかえますので、最初から準備しておきましょう。

さらに、イベントログをリモートにとばしておくと、
サーバがダウン (起動しなくなった or ネットワーク越しに見えなくなった) したときの
原因調査に大変役に立ちます。
そして、他の多くの OS もそうですが、
負荷が高くなったときに挙動がおかしくなるので、
負荷監視のためにリソースモニタなり、SNMP 経由の MRTG などをかけて、
負荷を監視しておくと役立ちます。
# 私は MRTG + RRDTool 派です

というわけで、トラブルシュートのときに、
「Windows の挙動はブラックボックスだからわかんない!」
とか言う前に、上記のようなツールを使ってみてくださいね。

Posted by k-square : 06:04 | Windows | コメント (0)

2005年09月13日

今月のパッチは無いみたい☆

Windows の OS のセキュリティパッチは、
米国時間で毎月第二火曜日に提供されます。
日本時間ではおおむね水曜日。
で、その数日前にどういうパッチが提供されるかの情報が公開されます。
# 詳細については当日までわかりません。
で、今週はそのパッチ公開の週なのですが、
今月のパッチ提供は無いということが公示されました。
http://www.microsoft.com/japan/technet/security/bulletin/advance.mspx

わーいわーい。
今週が忙しくなるという予定だったので、予想外の結果に喜んでます。
今週は予定よりちょっと楽かも〜♪

あ、そいえば、給料が上がりました。
約 3 % ですけど。。。
あがらないよりはましだと喜んでおきます。。。。

Posted by k-square : 01:41 | Windows | コメント (0)

秋は。

秋は秋刀魚がおいしいです☆

ごはん、みそしる、焼き秋刀魚 (大根おろし)、肉じゃが

お腹いっぱい。

Posted by k-square : 20:30 | Cooking | コメント (2)

2005年09月14日

こぼした〜〜。

あ゛〜〜〜〜〜
ごほっごほっ。
うえー。

アトマイザーにうつすときに香水を大量に自分の手にかけてしまいました。
体験した人はわかると思いますが、かけすぎた香水はくさいです。
しかもなぜか咳が出てしまいます (私だけ?)

もったいない上くさいなんて最悪!!
なので、とりあえずにおいだけでも再利用しようと、扇風機で部屋中に拡散して、
いい香りに戻しました。
が、、、、鼻がおかしくなりそう。。。
あー、どうしようぅぅぅ・・・・・
とりあえず、換気します。
# 結局再利用できてません(笑)

Posted by k-square : 23:50 | Private | コメント (13)

2005年09月15日

.tcshrc

以前 .tcshrc を書いて bash ぽくしてから、便利になったというようなことを書いたと思います。
そろそろ .tcshrc が落ち着いてきたので、ここで公開しようと思います。
かなりマニアックに設定しているので、
クォーティングを区別して利用できる人じゃないと、
理解できないかもしれません(笑)
# B-shell 系と C-shell 系のクォートの挙動が違うことをしってないと厳しいです。。。

が、理解できたときは便利な .tcshrc の参考として利用できるのではないでしょうか?
実際の業務で激しく利用しながら、アップデートを重ねているものなので、
参考にしてみてください☆
「proxy1 か proxy2 を経由しないとどのサーバ/ネットワーク機器にも接続できない」
という環境と考えながら読んでみて下さいね。

ちなみに各 alias の ssh トンネルがどういう用途のためなのかを理解できた人は、
トンネルマスターと呼んであげます。
# さながらクイズのようですけど。。。

それからそれから、このコンフィグは .tcshrc として使っていますが、
.cshrc として読み込んでもつかえますよー♪
# print revision
set hostname=`hostname`
if ("$hostname" == "proxy1"  ||  "$hostname" == "proxy2") then
        sh -c 'echo ".tcshrc rev.38" 1>&2'
endif


# initial setting
setenv USERNAME k-square
setenv HOMEDIR /home/${USERNAME}


# http://www.linux.or.jp/JM/html/tcsh/man1/tcsh.1.html
# default path setting
setenv PATH  /usr/local/bin:/usr/ccs/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/ucb:/bin:/sbin:/usr/X11R6/bin:/usr/X/bin:/usr/openwin/bin:/usr/dt/bin:~/bin:${PATH}
if ( -d /home/k-square/GNU/bin ) then
        setenv PATH /home/k-square/GNU/bin:${PATH}
endif


# basical environmental setting
setenv MANPATH /usr/share/man
setenv PAGER less
setenv EDITOR vi
setenv EXINIT 'set exrc number noautoindent showmode showmatch tabstop=8 backspace=2'
setenv BLOCKSIZE k
umask 022


# additional setting
setenv NPX_PLUGIN_PATH /usr/j2se/j2re1_3_0/plugin/sparc


# cvs setting
if ( -d /opt/repository ) then
        setenv CVSROOT /opt/repository
else
        setenv CVSROOT /var/repository
endif
setenv CVS_ROOT CVS_ROOT


# japanese setting
# http://optik2.mtk.nao.ac.jp/~kawanomo/linux/slackware-9.1/tcsh.html
unsetenv LC_ALL
#setenv LANG ja_JP.eucJP
setenv LANG C
setenv OUTPUT_CHARSET EUC_JP
setenv JLESSCHARSET japanese-euc
set dspmbyte=euc
set dspkanji=euc
unset nokanji


# console setting (color)
# http://www2u.biglobe.ne.jp/~hsaka/tool.html#tcsh_prompt
# printf "\033]2;ssh-tonnel\007"
setenv TERM vt100
if ( "`tty`" == "/dev/console" ) then
        resize
endif
unset autologout
unset noclobber
set nobeep
set symlinks=ignore
set autolist
set filec
set notify
set color
set colorcat
if ( ${?tcsh} ) then
        if ( ${?color} ) then
                if ( "${USER}" == "root" ) then
                        #red background
                        #set prompt='%{\e[1;37;41m\e]2;[%n@%m] %~\a\n\e[0;34;41m[%n@%m] %~\e[1;37;41m\n%}$ '
                        #black background
                        set prompt='%{\e[1;37;40m\e]2;[%n@%m] %~\a\n\e[1;31;40m[%n@%m] %~\e[1;37;40m\n%}$ '
                else
                        set prompt='%{\e[0;37;40m\e]2;[%n@%m] %~\a\n\e[0;33;40m[%n@%m] %~\e[0;37;40m\n%}$ '
                endif
        else
                set prompt='%{\e]2;[%n@%m] %~\a\n[%n@%m] %~\n%}$ '
        endif
else
        # for csh
        set prompt="\
[${USER}@${HOST}] `pwd`\
$ "
endif
set prompt2='> '


# history setting
if ( ${?tcsh} ) then
        set histfile=${HOMEDIR}/.tcsh_history_$user
        set history=(9999 '%Y/%W/%D %T %h %R\n')
        set savehist=(9999 merge)
else
        set histfile=${HOMEDIR}/.csh_history_$user
        set history=9999
        set savehist=9999
endif
touch $histfile
chmod 600 $histfile


# complete setting (only tcsh)
# http://www2u.biglobe.ne.jp/~hsaka/tool.html#tcsh_complete
if ( ${?tcsh} ) then
        set complete=enhance
        set noglob
        complete {cc,gcc,g++}           'c/-[IL]/d/'    \
                                        'n/-c/f:*.c/'   \
                                        'n/*/f:*.[fco]/'

        complete {f77,g77}              'c/-[IL]/d/'    \
                                        'n/-c/f:*.f/'   \
                                        'p/*/f:*.[fco]/'

        complete gzip                   'n/-d/f:*.{gz,Z,tgz,TGZ}/'      \
                                        'n/*/f:^*.{gz,Z,tgz,TGZ}/'
        complete {gunzip,gzcat,zcat}    'n/*/f:*.{gz,Z,tgz,TGZ}/'
        complete com{,press}            'n/*/f:^*.Z/'
        complete unc{,ompress}          'n/*/f:*.Z/'
        complete tar                    'n/{,-}[crtux]*z*f/f:*.{tar.gz,tar.Z,tgz,TGZ}/' \
                                        'n/{,-}[crtux]*f/f:*.tar/'      \
                                        'n/*/f/'

        complete {vi,xvi,m,more}        'n/*/f:^*.{o,a,so,so.*}/'
        complete {jlatex,'tex2*'}       'n/*/f:*.tex/'
        complete {ghostview,'gv*'}      'c/-l/(andscape)/'      \
                                        'n/*/f:*.{ps,eps,pdf}/'
        complete lpr                    'n/*/f:*.{ps,eps}/'
        complete 'ps?*'                 'n/*/f:*.{ps,eps}/'
        complete 'tgif*'                'n/*/f:*.obj/'
        complete {netscape,Mo,Mosaic,lynx,Lynx} \
                                        'n/*/f:*.{htm,html}/'

        complete ps                     'n/-*u/u/'

        complete {,j}{man,whatis}       'n/-M/d/'       \
                                        'n/*/c/'

        complete {which,where}          'p/1/c/'

        complete alias                  'p/1/a/'
        complete unalias                'n/*/a/'
        complete set                    'p/1/s/'
        complete unset                  'n/*/s/'
        complete {set,print}env         'p/1/e/'
        complete unsetenv               'n/*/e/'

        complete {cd,gt,gb,chdir,pushd} 'p/1/d/'        \
                                        'n/-*/d/'
        unset noglob
endif


# alias setting
alias ls 'ls -F'
alias ll 'ls -laF'
if ( "`uname`" == "SunOS" ) then
        if ( -x /home/k-square/GNU/bin/ls ) then
                if ( ${?tcsh} ) then
                        alias ls 'ls-F'
                        alias ll 'ls -laF'
                else
                        if (${?color}) then
                                alias ls 'ls -F --color=auto'
                                alias ll 'ls -laF --color=auto'
                        endif
                endif
        endif
else if ( "`uname`" == "Linux" ) then
        alias ls 'ls -F --color=auto'
        alias ll 'ls -laF --color=auto'
endif
alias h 'history 20'
alias rm '/bin/rm -i'
alias rmf '/bin/rm -rf'


if ("$hostname" == "proxy1"  ||  "$hostname" == "proxy2") then
        # when you connect to proxy use command as below.
        # ssh  -L 65432:127.0.0.1:65432 ${USERNAME}@192.168.1.1;
        # ssh  -L 65432:127.0.0.1:65432 ${USERNAME}@192.168.1.2;

        # personalized alias
        alias cleanup   '/bin/rm -f  `find  '"${HOMEDIR}/trackinglog"' -daystart -name '"${USERNAME}.*"' -type f -mtime +1`'
        alias gnu-dist  "cd ${HOMEDIR}; tar cvf - GNU | ssh \!^ 'chmod 750 ${HOMEDIR}; tar xvf -;'"
        # ssh develop1 'tar cvf - GNU' | tar xvf -
        alias c-mynote  'ssh -L 65432:127.0.0.1:3389 admin@192.168.1.11'
        # sed -e 's/^setenv USERNAME k-square$/setenv USERNAME user01/'  /home/k-square/.tcshrc > /home/user01/.tcshrc

        # network devices
        alias c-l3sw    'ssh -1 ${USERNAME}@192.168.64.1'
        alias c-fw      'ssh -1  netadmin@192.168.64.2'
        alias c-l2sw    'telnet 192.168.64.3'

        # old solaris servers
        alias c-www   'ssh user@192.168.128.1'

        # standard solaris servers
        alias c-host1 'scp -q ~/.tcshrc ${USERNAME}@192.168.128.2:~/ >&/dev/null;    ssh ${USERNAME}@192.168.128.2;'
        
        # windows servers
        alias c-host2 'ssh -L 65432:127.0.0.1:3389 -R 8080:192.168.1.11:8080  admin@192.168.128.3;'

        # linux servers
        alias c-host3 'scp -q ~/.tcshrc ${USERNAME}@192.168.128.4:~/ >&/dev/null; ssh  -R 8080:192.168.1.11:8080  ${USERNAME}@192.168.128.4;'
endif


if ("$hostname" == "develop1"  ||  "$hostname" == "develop2") then
        # development server
        setenv PATH /var/tmp/k-square/development/sparc-sun-solaris2.8/bin:/var/tmp/k-square/development/bin:/usr/local/bin:/usr/ccs/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/ucb:/bin:/sbin:/usr/X11R6/bin:/usr/X/bin:/usr/openwin/bin:/usr/dt/bin:~/bin:${PATH}
        setenv LD_LIBRARY_PATH /var/tmp/k-square/development/sparc-sun-solaris2.8/lib:/var/tmp/k-square/development/lib
        setenv CC 'gcc'
        setenv CFLAGS  '-O2'
        alias ls 'ls -F'
        alias ll 'ls -laF'
endif



if ("$hostname" == "spool1"  ||  "$hostname" == "spool2") then
        # spool server
        setenv PATH ${PATH}:/opt/iplanet/ims/bin/msg/admin/bin:/opt/VRTS/bin
        alias hashdir 'cd  /opt/iplanet/ims/bin/msg/admin/bin; ./hashdir'
        set imtalog="/opt/iplanet/ims/msg-spool/log/imta"
        set poplog="/opt/iplanet/ims/msg-spool/log/pop"
        set maillog="/opt/iplanet/spool/log/spool"
        set maildir="/opt/iplanet/spool/msg-spool/store/partition/primary"
endif


if ("$hostname" == "smtp1"  ||  "$hostname" == "smtp2") then
        # smtp relay server
        set queue="/opt/iplanet/ims/msg-`hostname`/imta/queue/tcp_local"
        set maillog="/var/log/ims/`hostname`"
        set ldaplog="/opt/iplanet/ids/slapd-`hostname`/logs"
endif


##### Memo: Convenient Key-Sequence on csh/tcsh
# Ctrl + c : Kill Current Process on this Terminal Window
# Ctrl + z : Pause Current Process on this Terminal Window
# Ctrl + d : Terminate Current Process on this Terminal Window
# 
# Ctrl + a : Move to Head of Current Commandline
# Ctrl + e : Move to End of Current Commandline
# Ctrl + u : Clear Current Commandline
# Ctrl + l : Clear Terminal Window
Posted by k-square : 23:41 | Linux/UNIX | コメント (0)

2005年09月16日

☆削除☆

まだまだ寿退社できないので、削除してみました☆

Posted by k-square : 22:57 | | コメント (4)

2005年09月17日

grep での正規表現

Linux/UNIX を使う人は正規表現をゼヒ知っておいてほしいところです。
逆に知らないと、謎の挙動に悩むことになります。
たとえば grep を使うときに IP アドレスを探そうとしましょう。

grep '192.168.1.0' ほにゃほにゃー

などとやってしまうと、
192.168.110.20 とかも平気で検索に引っかかってきます。
コレは正規表現で '.' (ピリオド=ドット) が任意の一文字に match するから。

とはいっても正規表現はプログラムによって、どこまでサポートされるのかが違いますし、
perl レベルなのか sed レベルなのかでは () (カッコ) の記述方法とかも違います。
というわけで、今回は正規表現を使わない方法について。

grep シリーズの中には fgrep という grep があります。
grep との違いは正規表現が有効か否か。
メールアドレスとか IP アドレスとか正規表現を利用したくないときに便利です。
実際に簡単な例で試してみると、こんな感じ。
# プロンプトは bash ポイですが、tcsh 上の処理です
ちょっと覚えてると大変便利ですよー。

[k-square@server] ~
$ cat > a
b
c
d
e
f
g
^D
[k-square@server] ~
$ fgrep '.' a

[k-square@server] ~
$ echo $status
1

[k-square@server] ~
$ grep '.' a
b
c
d
e
f
g

[k-square@server] ~
$ echo $status
0

Posted by k-square : 21:22 | Linux/UNIX | コメント (0)

2005年09月18日

オプションを使いたくないとき。

grep と fgrep の関係もそうですが、
意外と知らない人が多そうなことをちょっと思い出したので書いてみます。

Linux/UNIX ではオプションとして '-' (ハイフン=ダッシュ) の後に文字列を
入力することで挙動を制御します。
では、たとえばです。
'-g' という文字列を検索したいとき。

grep '-g' ファイル名〜

とかってやると怒られてしまいます。
実際に試して見ましょう。

[k-square@server] ~
$ cat > a
-f
-g
-a
-b
a
b
c
d
^D
[k-square@server] ~
$ grep '-g' a
grep: invalid option -- g
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.

これはクォートで閉じても関係なく、 '-' から始まる文字は検索文字列ではなく
オプションとして扱われてしまうからです。
コレを防ぐには、 '--' を前に入れることで対処できます。
'--' はそれ以降にあるものはオプション以外のものとして扱うようになってます。

[k-square@server] ~
$ grep -- '-g' a
-g

この状態でもオプションを入れたいときは '--' の前に入れれば OK です。
こんな感じです。

[k-square@server] ~
$ grep -l -- '-g' a
a

この辺りのコトは、shell script を作る上で、
getopt の挙動を理解するとわかるようになると思います☆
# 普段使うのは getopts ですけどね♪

Posted by k-square : 02:50 | Linux/UNIX | コメント (2)

2005年09月19日

あまいもの。

甘いものがスキです。
今日の収穫は とろけるシブースト
おぉぉぉーいしーぃぃぃー。
いや、でも一人で食べるには大きすぎ・・・・。
# 一人で食べようと思って買って来てる時点で負け組?

さぁ、カロリーを消費しなきゃ!
でも膝が痛いし、プールかなぁ?
そろそろ子供たちも少ないだろうし、バシャバシャ泳いでこようかなーと思ってみたりします。

そうそう。
まえ書き忘れてましたけど、よく考えたら膝だけじゃなく左足首も痛かったり・・・。
うーん。。。。

Posted by k-square : 17:00 | Private | コメント (8)

2005年09月22日

コメント欄を題材に

えーっと、私が昔から運動してて、
しかも運動ができるみたいなコメントをもらったのですが、
実のところそんなことはありません。
子供の頃のかけっことかは普通にビリっけつでしたし、
反射神経は基本的にダメな感じです。
ボール使う系とかは、ちょー苦手です。

スポーツの話題もよくでますが、陸上でのスポーツは結構ダメな人です。
得意なのは雪と氷の上と水の中。
スキー、スノボ、スケート、水泳ですね。
鼻呼吸とかできるようになったのは社会人になってからだし、
ジョギングが好きになったのも社会人になってからです。

じゃぁ、どうやってジョギングが好きになったのかというと、、、
なんででしょ・・・?
昔は部活してたので、ジョギングとかに抵抗は無かったですけど、
決して好きではなかったのですが。。。
うーんうーん。
最初はダイエットのためにジョギングをしてて、
「ダイエットのためには長時間の運動」ってことで、
長時間はしってたら、ランナーズハイになって (多分)
その後はその「ぼーっとした感じ」「取り留めの無い感じ」が
ジョギングがすきになっちゃった理由なんじゃないかなーと思います。

で、鼻呼吸をはじめたのは、ある理由からです。
それは、その「理由」がおこった次の日のメッセンジャのログに答えがありました。
多少編集しましたが、そのときのログを貼り付けてみましょう。

=====================================
Thu Oct 09 09:57:32 2003
-------------------------------------

昨日ぐらいから流星群の時期なので、
http://www.maruse.ne.jp/ryusei/observe/shower/gia/index.html
流れ星みれないかな〜っとジョギングするときに、
そこはかとなく上をむいて走ってたのね?
んで、上を向くと、
微妙にくちが「ぽか〜ん」とあくじゃない?

まぁ、私もそんなかんじで、
ジョギングしながら口をぽか〜んとしてたわけ。
そしたら口に小指の先程の大き目の虫が・・・(>_<)
しかも、息を吸ったときに・・・・(涙)
気管の手前の喉の奥まで一瞬で入っちゃって。
# というか吸い込んだわけだけど

最初だそうにも出せなくて、
スゴイ咳き込んで涙流しながら
やっと喉から吐き出せて・・・

しかも、微妙に虫の味が口の中に広がるし。
トラウマになりそうなひどい体験をして、
口を閉じて走り気味。
虫が飛んでるのを見るとぞくぞくするよー。

そういうわけで。
お気をつけを・・・(謎)

そして、流れ星は見れませんでしたとさ・・・
=====================================

そう。
こんな理由があれば、
あなたも鼻呼吸で走れるようになるのかもしれません。
何かと引き換えに何かを得てしまうような感じで(笑)
それにしても、今までにこれだけではないはずなので、
我ながら一体ナニを失ってきたのか、
ナニを得てきたのか気になるところデス☆

Posted by k-square : 21:02 | Sports | コメント (0)

2005年09月26日

松島や、あぁ松島や、松島や

連休の旅行は宮城蔵王と松島 (日本三景) に行ってきましたー。
とってもいい景色だったのですが、天候のせいか、
松島よりも蔵王 (お釜とか) の方がいい景色だったりしました。
晴れたときは松島はきれいなのかなぁ?

以前は西日本に住んでいたので、天橋立も厳島神社も見終ってて、
今回が日本三景の最後の景色です。
その三つをみた感想から言うと、
実はどれもたいしたこと無かった気がします。
これは気のせいでしょうか?
期待しすぎて行った私のココロの問題でしょうか?
うーーん。

ちなみにいちばんきれいだったのは駒草平でした。
紅葉はしてませんでしたがこのサイトと同じところを回ったので、
この景色が私の見た景色だと思ってください☆
http://www.y-douro-k.or.jp/nishizaou/nisizao-aki.html
# こちらの方の方が上手に写真を撮ってるので、私のは非公開(笑)

Posted by k-square : 23:57 | Private | コメント (4)

2005年09月28日

BIG-IP

最近は f5 の BIG-IP をいじってます。
といっても BIG-IP を知らない方も多いと思いますので簡単に説明すると、
「BIG-IP は高額なネットワークロードバランシング (負荷分散) 機器」
です。
購入に 150 万ほど。年間の保守費用はそれ以上かかります。
# 非 IT 業界の人は「保守=修理&アップデート費用」だと思ってください。
が、それだけにいろいろ機能があって便利です。

この BIG-IP をまるでおもちゃのようにいじり倒してるわけですが、
# ドキュメントにかかれていない実際の挙動や仕様を理解するためです。
# 別に遊んでるわけじゃないです・・・。
これって普通許されるのか、ということに思いをはせました。
転職前も hp の HP-UX ( 1 台で 1 億 ) とか
ファウンドリ の L4SW ( BIG-IP の廉価版) とかいじってたし、
そういうものに触れる運に恵まれているような気がします。

さて、いきなり話は変わって私のことですが
基本的にこだわり性だし、設定マニア (笑) なので、
このままいじり倒せば BIG-IP についてもいろんなことがわかるようになる予感がします。
で、そうなってしまうと、キャリア的には良いかもしれませんが (悪いかもしれません)
仕事が飛躍的に増えてしまうというワナが待ち受けていますので、
どうしようか悩みどころです。
これは運がいいのか悪いのか・・・。


結局のところ、運がいいのか悪いのか分かりませんが、
ほかの人が触れることができない機会を得られることに対しては、
好意的に解釈しましょう☆
未来のことは未来の私に任せましょう。
大きな流れには身を任せ、小さな流れをより良い方へと渡り歩きましょう♪

ってことで、明日も BIG-IP をいじってみます。
明日は明日の風が吹くぅ〜♪

Posted by k-square : 02:12 | Network | コメント (1)

2005年09月29日

車のメンテナンス

私は車はもともと MT のりです。
というか、実家が MT だったので、MT を運転する機会が多かったってだけですけど。
そもそも明らかに AT のほうが楽だし、
町のりや渋滞での MT ははっきり言って面倒すぎるので、
今は順当な選択として AT にのっています。

さて、もともと MT を運転していた人が AT にのった時にもっともイヤだと感じるのは、
エンジンブレーキが効かないことと、トルクが必要なときに望みどおりに
ギアを選べないことです。
有名すぎて聞くまでも無いですね。

でもこれはずっと D (ドライブ) にギアを入れていたときのことで、
3 (サード) とか 2 (セカンド) とかにいれると、
エンジンブレーキもスタートダッシュもある程度望みどおりになります。
# シフトチェンジから実際のギアチェンジまでのタイムラグはありますが

というわけで、私は AT のレガシィですが、結構シフトチェンジをします。
下り坂は当然だし、
場合によっては赤信号の停車の時にもシフトダウンを行います。

そのせいか、最近アクセルをふんでの AT によるギアチェンジの際に
シフトショックが大きくなってきました。
人に相談したら「ATF を交換しなさい」という回答を得られたため、
インターネットで検索して調べていたら・・・。

・今まで ATF を交換したことがない
・デフオイルも交換したことがない

ということを知りました(笑)
で、早速これらの交換をしようと思いついたわけですが、
実は 50000km という節目の走行距離なだけはあって、

・エンジンオイルは交換時期
・エレメントも交換時期
・ブレーキパッドも交換時期

ということだったりします。
さらに、いつも行くカー用品店 (オートウェーブ晴海店) が閉店セールをやっているので、
# いつもといっても毎週行ったりするわけじゃないですよ?(笑)
今回まとめて交換することにしました。

とりあえず、お店で相談しながら、
エンジンオイル & エレメント & ATF & デフオイル\nを交換してきました。
時間的に余裕が無かったので、ブレーキパッドの交換は見送りです。

さすがにコレだけやると、体感も違います。
今までと同じアクセル開度で、普段よりも速度が上がります。
あー、いいですねー。
なんか、車いじりが好きな人の気持ちがわかりそうかも。
# とはいっても、私にとってはただの移動手段なので、
# これ以上突き詰めたりはしないですケド☆

車もちの皆様はどのようなメンテナンスをしてますか?
心がけてることとかあったら教えてくださいねー。
とりあえず私は、エンジンオイルとエレメントはちゃんと交換してます♪

Posted by k-square : 22:12 | Private | コメント (3)