2013年5月15日

プレビューで見られるものは何でもアイコンに

これもまた遼東の豕だろうけど……

OS Xではプレビュー.appで表示できるものなら、ファイルやフォルダのアイコンに使える。しかも、わざわざアイコンファイルに変換する必要もない。Windowsでもそうなのかな?

では、手順を…

(1) ファインダー:アイコンを変えたいファイル・フォルダの「情報」を表示する。
(2) プレビュー:アイコンに使いたい画像をプレビュー.appで表示する。


(3) プレビュー:サムネールを表示させる。



(4) プレビュー:サムネールを選択して、command+C でコピー。


(5) ファインダー:「情報」のアイコンをクリックして、command+V でペースト。


(6) できあがり。簡単。




2013年4月20日

dona nobis pacem

アラビア語の「こんにちは」は、
「アッサラーム アライクム」

返す「こんにちは」は、
「ワ アライクム ッサラーム」。

「サラーム」はヘブライ語の「シャローム」と同じく「平安」。

すぐ隣りの民族だから、訛の差程度しかない。
ヘブライ語の方はダークダックスが「シャロームの歌」を歌ってたから日本人には馴染みがあるかもしれない(一部の世代だけ?)。


で、「アライクム」は「あなたの上に」。「ワ」は「そして」なので、直訳すれば、

「平安があなたのあなたの上に」
「いやいや、あなたの上にこそ平安を」
…と実に思いやりに満ちた挨拶。

そういえば韓国・朝鮮の挨拶「アンニョンハシムニッカ」でも、
「アンニョン」は「安寧」だな。「ハシムニッカ」は「〜ですか」。
これもまた平和な挨拶。

日本語の挨拶「こんにちは」は、述部が省略されていて、それはそれなりに汎用性がある。どんな天候の日でも使えるw

では、アッサラーム アライクム!

2013年1月4日

経籍繙更黄、渾欲不勝筆、

明けましておめでとうございます。

Blog読者のみなさまには遅くなりましたが、新年の挨拶を申し述べさせていただきます。



ことしは芋版を使ってみました。むづかしい…  スタンプ台を使えば簡単だろうと思ったのですが、版にインキがなかなかのりません。

背景は、彌永昌吉・彌永健一『集合と位相 I 』(岩波講座 基礎数学)のp. 25。無限系譜として自然数が立ち上がるところです。岩波講座基礎数学は学生時代に買ったものですが、通読したのは『線形代数』のIとIIだけ、この『集合と位相 I 』は十年ほど前に半分ほど読んで行き詰まったままになっていました。それを昨年からまた読み始め、また行き詰まって、最初からもう一度、読み直しているところです。理解が用紙の酸化にまったく追いついていません。余命は20年ぐらいでしょうけど、なんとかこの講座を読み通したいと思っています。(学問の進歩とはまったくはずれたところにいるので、これでいいのです)

なお、標題は杜甫「春望」のパロディです。こういうもってまわった冗談も癖になってきました。

こんな私ですが、ことしもよろしくお付き合いください。

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」が不要だったようです。