2012年12月6日

52週はたらく人のためのカレンダー CE2013版

昨年につづいて「52週はたらく人のためのカレンダー」をつくりました。

普通のカレンダーだと月をまたぐ週が、週単位で仕事をしている私にとっては見にくいのです。

ごくごく趣味的に地球の動き、月の動き、惑星たちの動きを記しています(『理科年表』によりました)。しかも、それぞれの時刻も示しました。

例えば、11月の望は18日なのですが、その時刻は0:16分。これは未明ですから、「18日の夜」にはもう十六夜月に近くなっています。実感的には「17日の夜」が満月なのです。そんなことが分かるようにしました。

内惑星は東西の最大離角の日を、外惑星は衝の日を示しました。冥王星が入っているのは作成者が「どってんかいめい世代」だからです。


来年は、欠けながら没する部分月食がなんとか見えるぐらいで、空は地味な年のようです。でも、中秋の名月は9月19日の夜8時ごろ、眺めるのにちょうどよい高さに正真正銘の満月がかかるはずです。7月2日は半夏生ですが、冥王星が衝。なにやら妖しげな日になりそうです。



PDFをサイトに置いてきましたので、よろしければ、ご自由に(かつ自己責任で)お使いください。https://sites.google.com/site/amplexicaule/file_cabinet

[12/24 第2版] 流星群の極大日も載せました。なお、日曜日に振ってある通し番号は私が作っている新聞の号数です(ちょっとおじゃまでしょうが、消し忘れました ^^)

2012年6月23日

雨の中で

たまにはblogも書こう。

くたびれてちょっと早めに帰る電車。私は雨の中に立っている。

現実のきょうは梅雨も中休み。だけど、脳裏は雨が降っている。足もとは泥。カッパじゃなくて昔風の外套。目の詰まったフェルトなんだろうか。雲からまっすぐまっすぐ流れ落ちる雨のなかに私が立っている。

誰かに話しかけている。馬か牛のにおい、泥と草のにおいがする。でも、鳴き声も姿もない。自分の声も。ずいぶん降っているはずの雨の音もしない。

誰と話しているのか。あたたかい。


……新しい白昼夢なので記録しておく。分析は不要です。



2012年3月28日

ひらがな・カタカナ変換

ひらがなをカタカナに、カタカナをひらがなにそれぞれ変換するperlスクリプト。
これをOS Xのサービスに入れておくと便利かも。

ひらがな→カタカナ
use utf8;
binmode STDOUT, ':utf8'; 
binmode STDERR, ':utf8'; 
binmode STDIN, ':utf8';
while (<>) {
 tr/ぁ-ゖ/ァ-ヶ/;
 s/わ゙/ヷ/;
 s/ゐ゙/ヸ/;
 s/ゑ゙/ヹ/;
 s/を゙/ヺ/;
 tr/ゝゞ/ヽヾ/;
 s/ゟ/ヨリ/;
 print $_;
}

カタカナ→ひらがな
use utf8;
binmode STDOUT, ':utf8'; 
binmode STDERR, ':utf8'; 
binmode STDIN, ':utf8';
while (<>) {
 tr/ァ-ヶ/ぁ-ゖ/;
 s/ヷ/わ゙/;
 s/ヸ/ゐ゙/;
 s/ヹ/ゑ゙/;
 s/ヺ/を゙/;
 tr/ヽヾ/ゝゞ/;
 s/ヿ/こと/;
 print $_;
}



「わ゙ゐ゙ゑ゙を゙」で、trコマンドじゃなくて、sコマンドを使ってるのは、合成用濁点を使っているからです。濁点付きの「わゐゑを」という文字はありませんもん。

なお、小書きの「ヵ」「ヶ」を「ゕ」「ゖ」に変換するのは間違っていると思うけど、ここでは形式的に変換してみました。「ヵ」「ヶ」は「箇」や「个」の略字・異体であって、仮名ではないはず。


 NOTA BENE :  当初「use encoding "utf8";」という指定をしてましたが、これは使うべきではないとのことです(→『404 Blog Not Found』「perl - use encoding; #は黒歴史」)。


2012年3月24日

たくさんのファイルをいっぺんにリネーム

きのうの隔週勉強会で「リネームソフトってWindows用ばっかりや」という声が(一部から)聞こえたけど*、Mac OS Xだと別段必要もないんじゃないかな。Windowsはシェルがしょぼいから、ファイルのリネーム程度のことでもソフトを作らなあかんということですよ。実際にはMac用のもたくさんあるようです。私がWindowsのこともMacのことも知らないだけでした^^)

OS Xはunixですから。


勉強会で出て来たのは、「感-5864.ai」という形式の名前を持つファイルを、冒頭の漢字1文字とハイフンまでを外した「5864.ai」という形式の名前にリネームしたい。たくさんあるのを一括処理したいという課題でした。

Terminal(shellはbash)でやれば簡単。
bashの「for name [ in word ] ; do list ; done」構文を使います。

sedでやってみる

まず、考えたのは手に馴染んでいるsedを使うやりかた。
for i in *.ai
> do
> cp $i `basename $i | gsed -e 's/^.-//'`
> done
  1. basenameコマンドでファイル名をテキストとして取得:basename $i
  2. それをパイプを通じてsedに渡し、
  3. 先頭の一文字とそれに続くハイフン(^.-)を削除:s/^.-//
  4. ここまでの実行結果(`basename $i | gsed -e 's/^.-//'`)を新しいファイル名としてcpコマンドに渡す
という手順。

ただし、漢字など多バイト文字はOS X付属のsedではうまく変換できないので、GNU sedが必要です。(bashの環境変数のうちLANGも、LANG=ja_JP.UTF-8とする必要があります)

perlをつかう

そこで、OS X付属のperlを使ってみました。こんな感じです。
for i in *.ai
> do
> cp $i `basename $i | perl -CIO -pe 'use utf8; s/^.-//;'`
> done

】当初、perl -pe 'use utf8; s/^.+-//;'」と書いていて、どうして「+」が必要なんだろうと不思議に思っていたのですが、エンコーディングの指定書式を旧式の「use encoding "utf8"」にすると文字数が思惑どおりになりました。しかし、その後、perlの起動オプション「-C」で出入力のエンコーディングを指定することを教わりました(man perlrun参照)。これでやっと現代的なコードになりました。みなさん、ありがとうございます。


bashだけでできる

そうこうしているうちに、bashだけでできるのに気付きました。こうです。
for i in *.ai
> do
> cp $i ${i/*-/}
> done

変数を展開する際にその一部を書き換える機能をbash自体が持っているんです。
bashのmanpageでは、「Parameter Expansion」項の最後の方に載ってます。
 ${parameter/pattern/string}という構文です。
(今回はpatternの文字列を削除するのでstring文字列は

検索パターンの書き方にちょっと癖があるし、機能もsedやperlほどではないのですが、今回のような事例ならこれで充分役立ちます。

2012年3月5日

どこでもunixフィルタ

おとといの記事のつづきです。


OS Xの「サービス」に「シェルスクリプトを実行」を組み込む時、オプションの「ワークフローの実行時にこのアクションを表示」をONにしておけば、その時々でスクリプトを書き換えられるので便利。


環境変数の設定だけしておけば汎用フィルタとなります。
export LANG=ja_JP.UTF-8
これを「汎用篩」という名前で保存しておきます。

では、facebookの投稿欄で使ってみましょう(ブラウザはSafariです)。


無理矢理の例ですが、各教科ごとの平均点を計算させてみます。計算する行を選択して、上で作ったサービス「汎用篩」を呼び出します。


生徒 A  B  C  平均
国語 85 89 84
算数 92 90 88
理科 78 75 80
社会 94 90 92

おとといの例とは違って、「シェルスクリプトを実行」windowが現れます。
ここにスクリプトを書きこみます。

今回はawkスクリプトを書いてみましょう。awkはOS Xネイティブのものでもutf-8テキストをちゃんと扱えます。

awk '{total=$2+$3+$4; avg=total/3; print $0, avg}'


えい!


生徒 A  B  C  平均
国語 85 89 84 86
算数 92 90 88 90
理科 78 75 80 77.6667
社会 94 90 92 92

できました^^

2012年3月3日

InDesign上のテキストをperlやsedで編集

(2016-1-11注記: CS6ぐらいから仕様が変わったのか、InDesignからサービスにテキストを渡せなくなっています。残念 orz)

Macはテキスト処理も強力なのです。なにせunix系ですから。
しかも、Terminalじゃなくても、Webページの入力フォーム内や、もちろんInDesignのフレームグリッド内でもperlやsed、awkを使ったテキスト編集ができてしまうのです。

もう、これだけでもWindowsを捨てて、Macにしなさいと声を大にして言えます。

InDesignだとこんな具合;
洋数字を漢数字に:置換前
置換後
このあと、「六八〇」→「六百八十」と単位語を書き加えたりしなければなりませんが、手間や書き換え間違いはずいぶん減ります。



これは、OS Xの「サービス」という名前のサービスを使っているのです。
「サービス」は選択部分に対して適用されます。(選択部分が何なのかによってサービスメニューの内容が変ります)


「サービス」はOS X付属のAutomator.appで作ります。
Otto君が手にしているのは他ならぬ「パイプ」です。









起動したら「新規作成」ダイアログで「サービス」を選びます。












左側にある「アクション」を右側の編集欄にドラッグして、unixのフィルタをパイプで繫いでいくように、並べていきます。

↑これは「サービス」ではなく「フォルダアクション」の例です
今回作るフィルタで使う「シェルスクリプトを実行」は「アクション」の「ユーティリティ」の中にあります。それを編集欄にドラッグすると…
ここで、「選択されたテキストを出力で置き換える」にチェックを入れるのがミソです(デフォルトではOFFになってます)。

unix流にいうと選択部分を標準入力・標準出力として扱っているのです。
なお、流れるテキストストリームは、文字コード:utf-8、改行:LF (とおもいきや、InDesignのようにCR改行のテキストを渡すものもあるようです)。



シェルには各種のshellが選べます。perl、python、pubyを直接呼び出すこともできます。








それぞれ、あらかじめ、標準入出力用の枠組みが用意されています。perlだとこんな具合。










あとは、やらせたいフィルタスクリプトをここに書いて、適当な名前をつけて保存すれば、メニューバーのアプリケーションメニューやマウス右クリックでのコンテキストメニューでの「サービス」から呼び出せるようになります。

(この段階では特定のスクリプトを書かず、「汎用のフィルタ」とするのも便利です。詳しくは後日の「どこでもunixフィルタ」記事をどうぞ)


なお、自作の「サービス」は、各ユーザの「~/Library/Services/」フォルダに保存されるのですが、Lionからこのフォルダが不可視とされてしまいました。Finderのメニューバーの「移動」をOptionキーを押しながらクリックすると「ライブラリ」に移動できますが、Automatorの「開く」ダイアログには「移動」がないので、Finderのサイドバーにドラッグして登録しておくことをお薦めします。


実例:

洋数字を漢数字に書き換えるサービスならこんな具合です。shellとしてperlを使ってます。

use encoding 'utf-8';
while (<>) {
 y/0-9/0-9/;
 y/,./,./;
 y/0123456789/〇一二三四五六七八九/;
 y/,./千・/;
 print $_;
}
「use encoding 'utf-8'」と宣言してやれば、仮名漢字スクリプトもOKです。

メールなど改行で体裁を作ってしまったテキストの行を連結させるサービスでは、bashからsedを呼び出しています。

export LANG=ja_JP.UTF-8
tr \\r \\n | /usr/local/bin/sed -f /Users/mt/bin/jointline.sed
「export LANG=ja_JP.UTF-8」で環境変数LANGをutf-8用にするのが肝心。

なお、OS Xネイティブのsedはutf-8をまだうまく扱えないので、GNU Sedを使う必要があります。GNU Sedはソースから、configure→make→make install で簡単にインストールできます。
また、InDesignのようにCR改行テキストを渡すものもあるので、「tr \\r \\n」で改行をLFに揃えます。

この例で呼び出している jointline.sed は2010年6月に書いた「行連結sedスクリプト」です。
:loop
$!N
s/\(.\+\)\n\([^ ]\+\)/\1\2/
t loop
P
D
 は全角空白です。


*改題しました。2012-03-04

2012年2月17日

MacBiffでMail.appでないメーラを召喚

iCloudとGmailの新着チェックにMacBiffを使ってみました。

この2つについてはMail.appの代わりにSparrowを使っているんですが、はて? MacBiffのプルダウンメニューの「Launch Mail」でSparrowが起動しない。


MacBiffの設定パネルの「Options > Mail Application」の「Choose」ボタンでSparrowを指定したのです。こんな風に…
OSはLion(10.7. 3)です。

う〜ん… う〜ん… … …
これでどうじゃ? … …

(^o^)y  Sparrowが起動しました。




file://localhost」が不要だったようです。




2012年2月8日

題字のひみつ


これは私が編集している新聞の創刊時(1963年)の題字です。
レトロでかっこいいでしょ?

でも、文字の周りに不自然なアキが…



この題字の背景は、「赤旗」の戦後復刊から1966年1月まで使われていた題字(当時は「アカハタ」)からの借用なんです。


おぉ、本家のほうが断然、かっこいい。「兵庫民報」では煙突も星も隠れて、何の絵か分かりません。でも、どうして稲じゃなくて麦なんだろ?



重ねてみました…

「兵庫民報」題字のへんなアキは、「アカハタ」の文字を削った痕だったんです。それに、かなり傾いてます。むかしはずいぶんおおらかだったようです :-)



2012年1月4日

ことしこそは よいとしに


昨年も「よいとしに」と書いたら、とんでもない年になってしまいました。ことしこそはみなさんにとって、ほんとうによいとしに!