2011/05/24

シェル変数への情報セット

例えば wget (1) コマンドへ proxy サーバの情報を伝えるためには http_proxy シェル変数に URL を http://[ID[:pass@]]FQDN[:port] 形式でセットする必要があるが、 proxy 情報が以下の形式でファイル格納されていれば 1 行で簡単にシェル変数に設定できる。

proxy.example.com                           # プロキシサーバの FQDN
8080                                        # プロキシサーバのポート番号
user                                        # プロキシサーバの認証 ID 
passwd                                      # プロキシサーバの認証パスワード
	
  1#!/bin/sh
  2
  3setproxy()
  4{
  5
  6    local   _var
  7
  8    _var=${1}
  9
 10    if [ -f ${2} ]
 11    then
 12        set -- `sed 's/#.*//g' ${2}`
 13        test -n "${1}" && eval "${_var}=\${1:+http_proxy=http://\${3:+\$3\${4:+:\${4}}@}\${1}\${2:+:\${2}}}"
 14    fi
 15
 16}
 17
 18setproxy http_proxy ファイル名
 19sh -c "${http_proxy} wget …"
 20    :
    

2011/05/22

レアチーズケーキ

遙か 15 年以上昔にバイト先で作っていたレシピを思い出しながら、 週末にレアチーズケーキを作った。
基本的なレシピはフィラデルフィアのクリームチーズに同梱されている リーフレットの通りに作るのだが、 いくつか独自の手順を加える事で格段になめらかな舌触りのチーズケーキになる。

Image: RIMG0253.JPG

ブルーベリージャムとブランデーをたらして

  1. ゼラチンは水と白ワインを同量混ぜたものに浸しておくと ゼラチンの持つ臭みが消える。
  2. ヨーグルトではなくサワークリームを使うと ほどよい上品な酸味となる。
  3. クリームチーズ、サワークリーム、そして砂糖を混ぜる時には 消える寸前のとろ火にかけてゆっくり加熱しながらよく混ぜる。
  4. 火を止めたらレモン果汁 1 個分を加えて更によく混ぜる。
  5. 生クリームを 6 分立て程度にホイップする。
  6. 冷ましたクリームチーズを裏ごしして生クリームに混ぜる。
  7. ゼラチンを湯煎して溶かしてクリームチーズに手早く混ぜる。
あとは型に流し込んで冷やせば美味しいクリームチーズケーキの出来上がり。
カシスやブルーベリーなどのジャムと、 風味付けに少量のブランデーをたらして召し上がれ。

2011/05/19

Mac でシリアルターミナル

ルータなどのネットワーク機器の設定を行う場合や、 ディスプレイを接続しないでサーバ運用しているマシンの作業など、 シリアル接続をする必要は少なくなったとは言えまだまだ作業する機会はある。
しかし Mac Book (というか現在発売している殆どの Laptop) には 既にシリアル端子などは装備されていないので、 USB シリアル変換アダプタを利用して接続する必要がある。

メーカーが公式に Mac 対応を表明しているアダプタもあるが、 手持ちの Arvel SRC06-USB は 利用しているチップセットのメイカー (Future Technology Devices International Ltd. 社) の Web サイト から Mac 用のドライバをダウンロードしてインストールすると 正しく利用できる様になった。
ドライバをインストールした後でアダプタを接続すると、 /dev/tty.usbserial-FTEHW36L というデバイスが自動で生成されたので、 このデバイスを利用して通信する事ができる様になる。

通信に利用するターミナルソフトは 標準でインストールされている cu (1) や screen (1) を利用するのが手軽だ。
screen (1) を利用する場合は以下の様に起動すると接続できる。 切断する時は コマンド文字+k を入力すればよい。

$ screen /dev/tty.usbserial-FTEHW36L 9600
    
ここでは指定していないがフロー制御やパリティチェックの有無、 ストップビット長などシリアル通信で必要と思われる設定は一通り指定できる。
普段からターミナルで screen (1) を利用している場合は ~/.screenrc defkanji utf などと記述してあるだろうが、 シリアル接続の相手が EUC や MS 漢字コードのなどの場合は ~/.screenrc に以下の記述をして コマンド文字+Eコマンド文字+U を入力する事で screen の表示コードが変更できるので便利だろう。
bind E encoding euc
bind S encoding sjis
bind U encoding utf
	

ファームウェアの転送など XMODEM を利用したファイル転送が必要な場合は、 内部で kermit (1) を呼び出して様々な転送処理が実行できる 多機能な通信端末 minicom (1) をインストールすると便利になると思う。

2011/05/18

Imperia Pasta Machine

遙か昔、当時創刊されたばかりの雑誌 Brutus に パスタマシンが掲載されているのを見かけて漠然と良いなと思っていたのだが、 30 年余の年月を経て念願かなって入手する事ができた。
昔の事すぎて詳しくは覚えていないのだが、 当時の金額で 10 万円ほどのプライスタグがついていて、 パスタマシンというのは非常に高価なものだと 30 年もの間 何の疑いもなく信じ込んでいた。
しかし改めて調べてみると意外と安いものだと気がついたので、 今回 Imperia 社製の自家製パスタマシンを購入してみた。

Image: RIMG0241.JPG

Imperial SP-150

ホームベーカリーのメニューにパスタ生地があるので、 デュラム小麦粉のセモリナを使えばパスタ生地が割と簡単に作れる。
とりあえず今週末は自家製のパスタでペペロンチーノを作ってみる予定なのだが、 今から出来上がりが楽しみでしょうがない。

2011/05/16

ナチューラ ヌメ革マウスパッド

土屋鞄製造所 で作成・販売している ナチューラ ヌメ革マウスパッド。

Image: RIMG0238.JPG

以前からずっと欲しいと思っていたのだが、 先日やっと注文できたものが週末に届いた。
植物性のタンニンで丁寧になめした革で作られたマウスパッドなので、 これから使い込むにつれて革の持つ風合いが 良い感じで出てくるだろうと思うと今からワクワクする。

同じ素材で Happy Hacking Keyboard 用の 30cm 幅の パームレストも是非作って下さい。

2011/05/13

ディスク容量のチェックツール

随分と時間が開いてしまったが、友人の awk (1) の勉強支援の第 4 段。 ディスクの容量をチェックして警告メイルを送信するためのスクリプト。

df (1) の内容を簡単に解析して、 ルートパーティションの使用率が指定した値以上の場合は警告メイルを送信し logger (1) を利用して syslog にも警告を出力する。

  1#!/bin/sh
  2#
  3#   All rights reserved, copyright (c) 2011, Mitzyuki IMAIZUMI
  4#   $Id: rdf,v 1.1 2011/05/13 17:38:09 mitz Exp $
  5#
  6
  7myname=${0##*/}
  8tmpfile=${TMP:-/tmp}/${myname}.$$
  9logger=/usr/bin/logger
 10df="LANG=C df -h"
 11
 12# 警告メイルの宛先
 13to=root@example.com
 14
 15# 警告処理
 16warning()
 17{
 18
 19    LANG=C
 20    subject="##### [ ${1}: Disk Usage ] #####"
 21    ${logger} "${subject}"
 22    cat << EOF | mail ${to} -s "${subject}"
 23
 24${1}
 25
 26`date`
 27
 28`cat ${2}`
 29EOF
 30
 31}
 32
 33# 終了時に一時ファイルを削除
 34trap 'rm -r ${tmpfile}; exit' 0 1 2 3 9 13 15
 35
 36# メイン処理
 37
 38# tee(1) を使って df(1) の出力を awk(1) と一時ファイルの両方に出力
 39${df} | tee ${tmpfile} |
 40    awk '{
 41        # 最後のフィールドが '/' の場合 (ルートパーティション)
 42        if($NF == "/")
 43            # 最後の直前のフィールドが使用率なので閾値との比較結果をリターン
 44            exit($(NF-1) < '${1:-70}')
 45    }' && warning `hostname` ${tmpfile}
    


Copyright © Mitzyuki IMAIZUMI 2008,2009. All rights reserved.