2008年6月25日水曜日

Thunderbird No.030(Quicktextでルーラー機能)

ルーラー機能がないという致命的な欠陥(といえばいい過ぎ・・・)を抱えているThunderbirdですが、Thunderbird 用拡張機能にあるRulerrrrrでルーラー機能を使えるのですが、ライセンス上はビジネスユースでは使えない・・・のです。

ユーザは、非営利かつ個人的な目的に限り、本製品を対応製品にインストールし、無償でご利用いただくことができます。
といった一文が掲載されています。会社では使えないですよね・・・

やはり、ルーラー機能は必要です。ないと日本人としてメールが書けません。日本語メールは桁揃えが重要ですし、受ける人も結構意識しているもんです。

ですから、ルーラー機能は必要なんです。というわけで、ルーラー機能を備えたアドオンを探していましたが、ありませんねぇ・・・

まあ、ルーラーがない状態でも、以下の通り、‘プレーンテキストメッセージを○文字で改行する’を適当な文字数に設定することで、ルーラーがなくても何とかなっていました。



しかし、改行文字数の設定が簡単に切り替えられないThunderbirdの場合、どうしても改行したくないメールを書くことを想定すると、「改行しない」設定で使うほうがいいので、改行を‘0’文字と設定して、改行しないよう設定し、手動で必要に応じて改行するようにしました。



となると、自分で改行していかないといけないので、ルーラーが必要になってきました。

でも、適当なアドオンはないので、QuickTextで桁数の目安となるテキストを挿入することで、ルーラー機能を代替しています。

やり方は以下のスケールとなる以下のようなテキストを設定し、必要に応じて、QuickTextのショートカットでテキストを表示し、改行位置を確認し、確認が終わったら、[Ctrl]+[z]で表示されたテキスト行を削除するという方法です。
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8

2008年6月24日火曜日

シェルで配列を使う No.003

シェルで配列を使う際、要素でソートする場合、以下のようにするのですが、

HOGE2=(`echo ${HOGE[*]} | sed 's/\s/\n/g' | sort`)
これだと、確かにソートされるのですが、数字としては、うまく処理されません。そこで、以下の通り、一旦、ゼロ付数字に変換してやることで、正常にソートされます。
  • 正常にソートされない
    要素が 1 5 11 2 3 21 31 22 だとすると、以下のようになってしまいます。
    1 11 2 21 22 3 31 5
  • ゼロ付数字に変換してソートする
    要素を 01 05 11 02 03 21 31 22 に変換してソートします。
    # ゼロ付でソート
    HOGE2=(`printf "%02.0f\n" ${HOGE[*]} | sort | sed 's/\n/ /g' | sed 's/\s+$//g'`)
    # ゼロを取り除く
    HOGE3=(`printf "%.0f " ${HOGE2[*]}`)
    1 2 3 5 11 21 22 31
余談ですが、sed で 半角スペースを扱う時は、"\s" と表現しますが、場合によっては、"\ " としないといけない場合があります。なぜかは理解できていません。

2008年6月21日土曜日

Firefox No.008(You were denied acces)

Firefoxを3にバージョンアップして、最初の接続時に以下のメッセージが出力されるようになりました。

Forbidden
You were denied access because:

Access denied by access control list.

いろいろ調べてみると、以下のMicrosoftとGoogleのページが引っ掛かりました。

"403 Forbidden - access denied " というエラーが表示されるのはなぜですか。 - Picasa と Picasa ウェブ アルバム ヘルプ

Web ページを開くときに "Access Denied By Access Control List" というエラー メッセージが表示される

どちらも、「プロバイダ(ISP)のせいで、そうなることがあるから、もう一度アクセスしなおしてください。影響ないです。」といった回答になっています。まあ、確かにそうなんですが。

IEならそうはならないのと、Firefoxを3にしてから発生しているので、PC側になんらかの問題があるはずですが・・・原因はわかりません。とりあえず、そのままもう一度、リロードすると問題ないので、深くは追求していません。

Firefox No.007(Gmailを固定ピッチで表示する)

Gmailですが、非常に便利で重宝します。モバイルでチェックできますし、容量も5GBちかく使えます。ただ、メール本文などが、プロポーショナルフォントで表示されるようになっており、メーラーとしては少々使いづらいです。

そこで、Firefoxで固定ピッチフォントに切り替える方法です。(※ローカルのスタイルシート情報を編集する方法で、環境毎に設定が必要です。)

以下、手順です。

  1. C:\Documents and Settings\%USERNAME%\Application Data\Mozilla\Firefox\Profiles\abcdefg.default\chrome にある、userContent-example.cssをコピーし、userContent.cssを作成します。(Customizing Mozzila
  2. 以下の内容を追記します。
    @-moz-document domain(mail.google.com) {

        .ArwC7c {
            font-size: small !important;
            font-family: monospace !important;
            line-height: 1.2 !important;
        }
        textarea {
            font-family: monospace !important;
        }

    }

2008年6月19日木曜日

Firefox No.006(FoxyProxy)

次世代ブラウザ Firefox - 高速・安全・自由にカスタマイズ

SwitchProxy Tool :: Firefox Add-ons
FoxyProxy :: Firefox Add-ons

Firefoxを3へバージョンアップしたところ、案の定、いくつかのアドオンが使えなくなりました。その中に、とっても重要なアドオンSwitchProxyがありました。正直これは困ります。

とりあえず、旧バージョンしか対応していないxpiファイルを編集しましたが、これまでのようにうまくインストールされません。

仕方なく、別のアドオンを使うことにしました。とりあえず、良さそうなFoxyProxyをインストールして使っています。かなり高度なことができるようですが、使いこなせていません。とりあえず必要なプロキシを指定している程度の使い方です。

凝った使い方は、別の機会に・・・

2008年6月17日火曜日

シェルで配列を使う No.002

なんでもかんでもシェルでやってしまおうとすると、配列を扱うことが多くなり、配列による複雑な処理が増えてきます。

配列全体を表示する時は、echo ${HOGE[*]} としたりするのですが、そうすると配列の要素がブランク区切りで表示されます。

echo ${HOGE[*]}
a b c d e f g h i j k 1 1 1 1 2 2 2 a b c x y z
いろんな処理をしていると、重複した要素をまとめたいことがあります。また、要素をソートしたい場合もあります。以下、それらの方法です。

  1. 重複した要素をまとめる
    sort と uniq を使いたいので、配列の要素列をスペースを改行に変換します。
    HOGE2=(`echo ${HOGE[*]} | sed 's/\s/\n/g' | sort | uniq`)
  2. 要素をソートする
    1.の例とほとんど同じで、uniqが無いだけです。
    HOGE2=(`echo ${HOGE[*]} | sed 's/\s/\n/g' | sort`)

2008年6月15日日曜日

exprで掛算する場合

exprで四則演算する場合に嵌ってしまうところです。

exprの文法では、+、-、*、/で加減乗除を行うわけです。例えば、シェルスクリプトの中では、カウンタ変数の足算が最もポピュラーな使い方ではないでしょうか。以下のようにやりますね。

cnt=0
while [ #{cnt} -lt 10 ]
do
cnt=`expr ${cnt} + 1`
done
これと同様に減算、除算はできてしまいますが、乗算(掛算)はうまくいかない場合があります。すぐに気付くのですが、‘*’はメタキャラクタとして扱われて、シェルスクリプトが実行されているカレントディレクトリなどが展開されてしまいます。
[NG]
hoge=`expr ${hoge} * 10`
[OK]
hoge=`expr ${hoge} '*' 10`
hoge=`expr ${hoge} "*" 10`
hoge=`expr ${hoge} \* 10`
‘うまくいかない場合がある’と表現したのは、[NG]の書き方でもうまくいく場合があるからです。シェルやそのバージョンなどの環境によるのかもしれませんが、ダメな場合があるので、念のため囲んでおいたほうがいいでしょう。

2008年6月14日土曜日

シェルで配列を使う No.001

シェルスクリプトでも、一般的なプログラミング言語と同様に配列変数を使えます。

使い方は簡単で、値を複数代入することで、配列変数となります。ただし、この簡単さ故に、規則的にコーディングしないと、配列なのかどうかわからなくなってしまったりします。

  1. 初期化
    必須というわけではないですが、一応行っておいたほうが無難でしょう。
    HOGE=()
  2. 初期化(代入)
    ()で初期化すると値は何も入っていない状態ですが、値を代入しながら初期化することも可能です。(括弧で括って、スペースで区切ります。)
    HOGE=(a 1 bcd 123)
  3. 参照(1)
    代入してある値を参照する方法です。

    一つ一つ値を参照
    echo ${HOGE[0]} ${HOGE[1]} ${HOGE[2]}
    a 1 bcd
    まとめて参照
    echo ${HOGE[*]}
    a 1 bcd 123
  4. 参照(2)
    ちょっと変わった参照方法です。

    文字数を参照 (変数名の先頭に#をつけて、要素を指定します。)
    echo ${#HOGE[2]}
    3
    要素数を参照 (変数名の先頭に#をつけて、全要素‘*’を指定します。)
    echo ${#HOGE[*]}
    4
入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界
入門UNIXシェルプログラミング シェルの基礎から学ぶUNIXの世界

図解でわかるLinuxシェルスクリプト・正規表現
図解でわかるLinuxシェルスクリプト・正規表現

2008年6月10日火曜日

cutでデリミタとして連続スペースを使う

cutでデリミタとして連続スペースを使う方法ですが、正確には、cutで連続スペースをデリミタとして使用できません。ですので、連続スペースを1つのスペースにまとめて処理することになります。

まず、sedで連続スペースを1つのスペースにまとめる方法です。

sed 's/\s\{1,\}/ /g' hoge1.txt > hoge2.txt
次に、cutで1つのスペースをデリミタとして使用します。
cut -d' ' -f1 hoge2.txt > hoge3.txt
パイプで続けて実行する場合は、以下の通りです。
cat hoge1.txt | sed 's/\s\{1,\}/ /g' | cut -d' ' -f1 > hoge3.txt

2008年6月1日日曜日

screenならセッションが切れても大丈夫

Linuxなどのターミナルで、screenコマンドを使うことで、セッションが切れても大丈夫ですし、画面を共有したりもできます。

Manpage of SCREEN
Let's use SCREEN!
iandeth. - screen - 仮想端末マネージャーの使い方

[Ctrl]+a は ^A と表しています。(^ は [Ctrl]+? ということです。)
a は小文字、A は大文字です。a は[a] 、A は [Shift+a] です。

【screenの操作】

  1. screenを起動する
    # screen
  2. screenから抜ける
    ^A d
  3. screenに(再)接続する
    # screen -r

【ウィンドウの操作】
  1. ウィンドウを開く
    ^A c
  2. ウィンドウを閉じる
    ^A K
【リージョンの操作】
  1. リージョンを分割する
    ^A S
  2. リージョンを破棄する
    ^A X
  3. カレントのリージョン以外を全て破棄する
    ^A Q
【スクロール・コピー・ペースト】
  1. スクロールモードにする
    ^A Esc
  2. 範囲選択・コピー
    Enter / Space
  3. ペースト
    ^A ]

【その他】
  1. 最下行にウィンドウ一覧を表示
    .screenrcに以下のhardstatus alwayslastlineを指定
    hardstatus alwayslastline %w
  2. エスケープキーバインドの変更
    .screenrcに以下のescapeを指定
    (^Aaを^Zzに変更)
    escape ^Zz