Macintosh Tips


Extract Japanese file name

NewsWatcher でまとめて保存したファイルをデコードしたら添付ファイル名がおかしくなることが時々あります。その殆どが添付ファイル名に日本語が使われていた場合です。

Base 64

ISO 2022-JP B エンコードか ISO 8859-1 Q エンコードの場合は Mac nkf で変換出来ますので Decoder 1.3.7 を使って取り出すことが出来ます。
Mac nkf の設定では「 MIME を解読する」をチェックしてください。

Mac nkf, 3.8KB

Mac nkf 2.0 のススメ -- 68k Machine でないなら UTF-8 の Support 丈けを取ってみても v2.0 にする価値は十分にあります。

UU encode

ISO-2022-JP なら上記と同じく変換するだけです。

現状では滅多に遭遇しませんが、Netscape で UU エンコードを選択した場合等は %?? の様な urlencode されている事もあります。

この形式、Macintosh 用の変換出来るツールは大抵 WWW 上の FORM から送信された E-Mail を読むためのもので、巨大なファイルを扱うようには出来ていません。

MacPerl があれば処理できるのですが……。文字コード変換無しなら、たった 2 行です。

#! MacPerl -pi.bak
(/name[:=]/i || /begin /) and s/%([a-fA-F0-9]{2})/pack 'H2', $1/eg;

これで Mac nkf で変換出来ますので Decoder 1.3.7 で取り出せます。

MacPerl 5.2.0r4 で文字コード変換もする場合。

#! MacPerl -pi.bak -MJcode
s/%([a-fA-F0-9]{2})/pack 'H2', $1/eg;
Jcode::convert(\$_, 'sjis', '', 'z')
    if /^Subject:/i || /^begin [0-7]{3,4} / || /\b(?:file)?name=/;

Jcode.pm が無い、又は MacPerl 4.1.8 の場合 (Perl4 は忘れてるんで間違ってるかも)。

#! MacPerl -pi.bak
require 'jcode.pl';
s/%([a-fA-F0-9]{2})/pack 'H2', $1/eg;
jcode'convert(*_, 'sjis', '', 'z')
    if /^Subject:/i || /^begin [0-7]{3,4} / || /\bfilename=/ || /\bname=/;

Decode/Encode with Japanese Charactor

Decode - Decoder

Decoder 1.3.7 は稀にファイルが壊れることがあります。
しかし、添付ファイル名に 2 バイト文字が使われていた場合、予め Shift JIS に変換しておけば取り出すことが可能です。

Decoder v2 はあまり具合が好くないです。

Decoder v3 以降はちょっと増しになった様です。

Decode - YA-Decoder

YA-Decoder はファイルが壊れることはあまりありませんが、ドロップしたファイルの最初に出てきたエンコード方式 ( Base64 / UU ) のどちらかしか取り出すことが出来ません (これは、YA-NewsWatcher のヘルパーとして使用することが前提になっている為と思われます)。
エンコード方式が判っていれば、予め保存するファイルを分ける等の対策をすることで、全てのファイルを取り出せます。

注意点

YA-Decoder はファイル名のアルファベットを全て小文字に変換してしまう事がありますので、ファイル名に日本語など 2 バイト文字が使用されていた場合、元の文字列に復元出来なくなる事があります。必ずそうなる訳でも無く、どう云った条件の時そうなるのかは良く判りません。

[ ファイル名 .jpg ] が ISO-2022-JP だった場合

 ファイル名 :ISO-2022-JP

[ ファイル名 .jpg ] が Shift_JIS だった場合

 ファイル名 :Shift_JIS

Decode - UUCD

uucd が v2.5 になってからデコードされたファイルが "Untitled" になったり、壊れたりしなくなりました。

Mac でまとめて添付ファイルを取り出したい場合は、先ず uucd を使用されることをお薦めします。

但し v2.5 は BinHex デコードに不具合が在って Type 2 エラーで落ちますので、必ず v2.5.1 を使う様に。

画面上で分割されたファイルが認識されていないこともありますが、殆どの場合は特に気にしなくても上手く取り出してくれます。

 認識出来ないが大丈夫 example

保存できない場合は添付ファイルが順番に並んでいる事を確認して、右端の [?] をクリックし、ファイルの先頭や終端のアイコンを変更すれば取り出せるでしょう。

注意点

uucd はファイル名の記号類 ( [-#&._] 以外全て ) や制御文字 [0x00..0x1F] を削除してしまいますので、日本語などの 2 バイト文字が使用されていた場合、元のファイル名に復元出来無くなります。

[ ファイル名 .jpg ] が ISO-2022-JP だった場合

 ファイル名 :ISO-2022-JP

[ ファイル名 .jpg ] が Shift_JIS だった場合

 ファイル名 :Shift_JIS

Encode - UUCD

uucd はファイルのエンコードも出来ますが、ファイル名に日本語などの 2 バイト文字が含まれていた場合もそのまま Shift_JIS になってしまいますので、送信してはいけません。これは Mpack 1.5UULite 3.0.1 でも同様です。

例えば Netscape でファイル名に 2 バイト文字が含まれる場合

Content-Type: image/jpeg;
    name="月刊矢部美穂 01.jpg"
Content-Transfer-Encoding: x-uuencode
Content-Disposition: inline;
    filename="月刊矢部美穂 01.jpg"

は B エンコードされ、更に UU エンコードならファイル名が 16 進 (%..) にエスケープされています。

begin 644 %8C%8E%8A%A7%96%EE%95%94%94%FC%95%E401.jpg

これは Netscape などでは正常に復元され下記のようになります。

Name: 月刊矢部美穂 01.jpg
Type: JPEG Image (image/jpeg)
Encoding: x-uuencode

しかし、ファイル名部分をエスケープしただけの物は NewsReader は復元してくれないようです。

Name: %8C%8E%8A%A7%96%EE%95%94%94%FC%95%E401.jpg
Type: JPEG Image (image/jpeg)
Encoding: x-uuencode

ファイル名は [-._0-9A-Za-z] だけに留めると安全でしょう (Space [0x20] も使わない)。


MT-NewsWatcher and ISO-2022-JP

[Q]. MT-NewsWatcher を使用していますが、読まずに Subject ウィンドウから直接 (ドラッグ & ドロップ等で) 保存した記事が読めません。どうしたら良いですか ?

[A]. それはエスケープシーケンスが欠落した ISO-2022-JP の文字列だと思います。小さいファイルなら MailKanjiFixer にドラッグ & ドロップするだけで読めます。

[Q]. (当然)とても大きいファイルなんですが ?

[A]. Mac nkf の割り当てメモリを増やして「困ったときの詳細な設定」で「壊れた JIS (ESC 欠落)と仮定」を選択します。

MIME デコードも選ぶと良いでしょう。但し、先に添附ファイル等は取り出しておかないと……。

 困ったときの詳細な設定

UU decode additional test

使用したファイル :

MacBinary エンコードしたアプリケーション

結果判定方法 :

CRC32

Test #1

単に uucd で分割エンコードしたファイル。つまり

BEGIN --------- cut here --------- CUT HERE -------- PART 1/2
END ----------- cut here --------- CUT HERE -------- PART 1/2

等が付いた状態で、news/mail ヘッダー等は含まれない。ファイルを全てドラッグ & ドロップする等してデコードさせる。

Test #2

先程の uucd で分割エンコードしたファイルを 1 ファイルに連結してからデコードさせてみる。

Test #3

今度は連結する際に UUzilla を使って "Newsgroups" 等のヘッダーを挿入 (つまり

BEGIN --------- cut here --------- CUT HERE -------- PART 1/2
END ----------- cut here --------- CUT HERE -------- PART 1/2

は削除される)。

Test #4

Outlook Express 4.5 で E-Mail の添付ファイルとして UU エンコードしたファイルをデコード .
(何故今頃 v4.5 なのか :: v5.* は使い方が解らなかった (;-p) メールボックスの "Compact" も出来ないし)。

Test 結果
CSS に対応したウヱブ・ブラウザでは、色の付いたカラム上で追加の Text が表示されます。
Application Test#1 Test#2 Test#3 Test#4
Decoder 1.3.7 OK OK OK OK
Decoder 2.1.1 OK OK OK OK
MACUUCODE 1.05 NG NG NG OK
StUU 1.1 NG OK OK OK
StuffIt Expander 4.0.2 OK OK NG NG
StuffIt Expander 4.5 OK OK OK NG
StuffIt Expander 5.1.3 OK OK NG OK
StuffIt Expander 5.5 OK OK NG OK
StuffIt Expander 6.0.1 OK OK NG NG
UUCat 1.1 (NG) (NG) (NG)
UULite 3.0.1 NG OK OK OK
UUParser 1.72 NG NG NG NG
UUTool-FAT 2.4 NG NG NG OK
UnUU 2.1US OK OK OK OK
YA-Base64 1.2.9 NG OK OK OK
YA-Decoder 2.4.1 NG OK OK OK
suntar 2.2.2 NG NG NG OK
uuUndo 1.0 NG OK OK OK
uucd 2.5.1 OK OK OK OK
一つの結論 :

全 OK で Freeware は uucd だけである。


Scripts

FileType 変更

なんだかファイル・タイプを変更するツールというのが F.A.Q のようなので、ここにも書いておくとしよう。

MacPerl Droplet type.pl
#!/usr/bin/env perl
MacPerl::SetFileInfo('ttxt', 'TEXT', @ARGV);
MacPython Droplet type.py
#!/usr/bin/env python
import MacOS, macostools, sys
if __name__ == '__main__':
    for i in sys.argv[1:]:
        MacOS.SetCreatorAndType(i, 'ttxt', 'TEXT')
        macostools.touched(i)
AppleScript Droplet type.applescript
on open argv
    tell application "Finder"
        repeat with i in argv
            set i's file type to "TEXT"
        end repeat
    end tell
end open

File 連結

勿論 Classic 環境用。

MacPerl Droplet concat.pl
#!/usr/bin/env perl
open CAT, "> dogCow.cat" and print CAT while <>;
MacPython Droplet concat.py
#!/usr/bin/env python
import sys
open('dogCow.cat', 'w').write(sys.stdin.read())
AppleScript Droplet concat.applescript
on open argv
    open for access (choose file name) with write permission returning total
    repeat with i in argv
        open for access i returning part
        write (read part) to total
        close access part
    end repeat
    close access total
end open

後始末

"Mpack" Folder 内のゴミを捨てる AppleScript.
tell application "Finder"
    tell preferences folder's folder "Mpack"
        if exists it then delete folders
    end tell
end tell

One Point Tips

ショートカット・キー

System Startup

option+command+P+R PRAM クリア。
C CD-ROM から起動。
shift+option+command+delete 内蔵ハードディスクドライヴを読み込まない。
shift 機能拡張書類を読み込まない。
space 機能拡張マネージャを開く。
option+E 日本語関連機能拡張書類を読み込まない。
option+command+Q+T QuickTime

Finder Startup

command+. 起動項目を読み込まない。

Disk Mount

option+command デスクトップ再構築。 失敗する場合
option+command+tab ディスク消去 / 初期化
option ウィンドウを全て閉じた状態にする。

Freeze

power-->R or S or return or esc Mouse Cursor 丈けが動かない場合、power キーでダイアログが出てから
  • R = 再起動
  • S = スリープ
  • return or enter = 終了
  • esc or command+. = キャンセル
option+command+esc アプリケーション強制終了。 実行後再起動必須
shift+option+command+power System 強制終了 (一部機種のみ再起動を選択可)。
control+command+power System 強制再起動。

Finder Shortcut

command+ 上位階層へ移動
command+ 下位階層へ移動
option+command+ ウィンドウを閉じながら上位階層へ移動
option+command+ ウィンドウを閉じながら下位階層へ移動
tab ASCII 昇順に選択
shift+tab ASCII 降順に選択
| | | 項目選択移動
shift+command+ デスクトップに移動
command+Y 片付ける、ボリュームのマウント解除。

Finder Shortcut - List View

command+ 下位階層を表示
command+ 下位階層を閉じる
option+command+ 下位階層を全て表示
option+command+ 下位階層を全て閉じる

Dialog

return or enter デフォルトのボタンをクリックと同じ
esc or command+. キャンセル
command+ 上位階層へ移動
command+ 下位階層へ移動
command+ | command+ ボリューム切り換え
command+E ボリュームマウント解除
command+D or shift+command+ デスクトップに移動

MacsBug

command+power Finder、アプリケーション等から MacsBug に入る .
help | ? ヘルプ。? の後にコマンドを続けるとその内容。
esc Finder の画面を見る
g 実行。Finder に戻る。command+G も使える。
ea アプリケーション再起動
es アプリケーション強制終了 (Exit to Shell)
rb リブート (起動ボリュームのみマウント解除して再起動)
rs リスタート (サーバー以外の全てのボリュームをマウント解除して再起動)
set mouse [ on | off | now ] MacsBug で Mouse を使うか否か。Default は ON.
set menubar [ on | off | now ] MacsBug で MenuBar を使うか否か。Default は OFF.

Petit Tips

デスクトップ再構築に失敗する場合

機能拡張マネージャで { Mac OS (Macintosh) Easy Open, File (PC) Exchange } のうちいずれかのコントロールパネルだけを ON にして再起動し、option+command で再構築する。

Alias にオリジナルの変更 (カスタムアイコン等)を反映させる。

command+R でオリジナルファイルを探す。

アップルメニューオプションでディスク、フォルダの更新内容が反映されない

アップルメニューフォルダの中のエイリアスを一旦出して又入れる。

ことえり (v1.*) の詳細設定

control+shift+U でダイアログの左下にボタンが追加される。

一時的に HFS, HFS+ のディスクを作る

Disk Copy 等を使う

Netscape Tips

Profile を複数設定しておくと、間違って起動してしまった場合も Select 画面で Quit 出来ます。
Netscape Profile Manager PNG 10.6KB
いつの間にか使い易いメッセージ・フィルターが装備されてますね。v4.5 からでしょうか ? v4.7 で気が付きました。
Netscape Message Filters Window PNG 4.2KB
タイトルバー / メニューバーが文字化けしてしまった / 変になった

HyperCard を起動すれば治るかも‥‥‥。

デフォルトでウィンドウの背景が白色になってしまう

先ず、Composer で空のウィンドウを開きます (shift+command+N)。
Page Properties... で Use Custom Colors を設定します (色は好みで)。

Netscape Composer Property Window PNG 3.9KB

Apply these settings to all blank pages をチェックしてから Netscape Communicator を再起動すれば設定したカラーになります。

FORM の TEXTAREA の範囲とフォントの大きさ

Preferences... ⇒ Appearance ⇒ Fonts ⇒ MyFonts にある For the Encoding:「Westarn」の Fixed Width Font: の設定に依存します。

Mozilla 4.0x で、TEXTAREA の範囲が小さい場合

Monaco 等の 等幅 フォントに設定します。

Mozilla 4.* で TEXTAREA の Font Size が小さい

Courier 等の等幅フォントで 12 point 等読みやすいサイズに設定します。

コンテクスト・メニューを素早く出す

control キーを押しているほうが早く出ます。因みにリンク文字列で command+ マウス・クリックは別ウィンドウに開く、option+ マウス・クリックはファイルに保存、option+command+ マウス・クリックはインターネット設定のヘルパー・アプリケーションで開く (例えば mailto: Eudora, ftp: Anarchie 等)。

command+ | command+ キーでページ上下移動 .

shift+space or delete | space と同じ。

command+ or で History 移動

option も押すと、最初 / 最後のページに移動。

Memory Cache と Disk Cache

初期設定ファイルのデータ・フォークを書き換えれば Memory Cache も変更できます……云々、と云ふのは嘘でした、済みません。