1月
30
2009
0

Mac OS XのTeX環境

Mac OS XでTeX環境を構築する際に考えられる主な選択肢は次の4つ

TeXのバリエーションに関しては別の機会に書こうと思うが,pTeXだと小川版,桐木版,MacPortsが候補に,TeX LiveだとMacPortsもしくはMacTeXが考えられる

teTeXの開発終了を受けて一部のLinuxディストロなどではTeX Liveに移行しているが,TeX Liveはまだまだ日本語が怪しい
論文を書くとなるとスタイルやらなんやらを投稿先に指定されるので,現状ではpTeXが妥当な選択肢だと思う

桐木版はもう長いこと更新されていないようなので,小川版かMacPortsで悩むところだが,英文で書くことも考えるとShift_JISベースより,UTF-8をデフォルト指定できるMacPortsがオススメ(もちろんShift_JISやEUC-JPの文書もOK)
インストールやアップデートも簡単だし,/opt 以下に隔離されていて扱いやすいのもGood
ただ,MacPortsのpTeXも内部がUTF-8なわけではないので,全ての文字が使える訳ではない

とりあえず,ptexで指定可能なオプションは以下の通り

% /opt/local/bin/port variants ptex
pTeX has the variants:
no_hiragino: Do not embed Hiragino fonts in PDF
no_otf: Do not use otf.sty
babel: Use babel
euc: Set default character set to EUC-JP (default)
sjis: Set default character set to Shift_JIS
utf8: Set default character set to UTF-8
nox11: Do not use X11
motif: Use motif (default)
xaw: Use xaw
xaw3d: Use xaw3d
nextaw: Use nextaw
darwin_9: Platform variant, do not select manually

個人的には,+utf8 +nox11 でよいと思う
+nox11 を指定しているのは,MacではPDFの表示がかなり速いのでわざわざ中途半端な仕上がりのdviを見る必要がないから
ヒラギノの埋め込みについては議論があるがデフォルトでは埋め込んどいたほうがよいと思う(必要に応じて埋め込まないように変更することもできる)
フォントに関してもまた別の機会に書きたいと思う

ということで,インストール(たまにselfupdateしたあとsyncとか書いてるサイトがあるけどsyncはselfupdateのサブセットなので不要)

% sudo /opt/local/bin/port selfupdate
% sudo /opt/local/bin/port install pTeX +utf8 +nox11

ちなみに,/opt/local/bin 以下には
ptex-euc, ptex-jis, ptex-sjis, ptex-utf8, platex, platex-euc, platex-jis, platex-sjis, platex-utf8, platex209
が生成されるが,全部ptexへのシンボリックリンク
ptex内部でargv[1]を見てエンコーディングなどに対応している模様(BusyBoxみたいな感じ)

Written by h2 in: PC | タグ: ,
1月
24
2009
0

Growl4Becky

言わずと知れた軽量&高機能メーラーBecky!
10年以上使っているとなかなか他のソフトに乗り換えるのは難しく,Becky!だけのためにVMWare Fusionを買ってWindowsを走らせてます
(まぁ組込み系の開発ツールやVMWare Infrastructureの管理ツールとかWindowsがないとどうにもならないことも多いので,助かってるけど・・・)

VMWare Fusionではご存じユニティモード(ParallelsでいうCoherence)が使えるので,WindowsのアプリをまるでMacのアプリのように扱うことができます
バージョン2からはURLの共有という超便利な機能が追加されて,メール内のURLをクリックするとMac側のSafariとかFirefoxで開くことができるようになり,もっとも不満だった点が解消されました

となると残りの大きな不満点は,「新着メールの通知」機能!!

普通のWindows環境ならタスクトレイのアイコンで着信に気づくことができるんですが,ユニティモードでタスクバーを隠しているとメールの着信が分からない・・・

ちょうど先日Beckrbを入れてみたので,Rubyスクリプトで適当にでっち上げてみました

require 'ruby-growl'
require 'rbuconv'

class Growl4Becky

	def initialize(ipaddr, pass)
		@g = Growl.new(ipaddr, 'Becky!', ['New Mail Landing'],
			 nil, pass)
	end

	def on_retrieve(message, mail)
		subject = mail.headers.slice(/^Subject: (.*)/, 1)
		from = mail.headers.slice(/^From: (.*)/, 1)
		@g.notify('New Mail Landing', Uconv.sjistou8(from.chomp),
			 Uconv.sjistou8(subject.chomp))
	end

end

# Edit ip address and password
Becky.add_callback Growl4Becky.new('192.168.46.1', 'password')

Becky!がメールを受信すると,Growlでお知らせしてくれます

使い方ですが,Beckrbが必要です
上記のRubyのスクリプトを作成して, scripts\startup フォルダにぶち込んでください
(コピペがめんどいって人はコレを保存してください)

Rubyのライブラリとしてruby-growlrbuconvを使っています
Growlへの通知はUTF-8で行う必要があるのですが,Ruby 1.8.1でUnicodeに変換するのはちょっと面倒です
システムにはできるだけ手を入れたくなかったので,ピュアRuby版Uconvのrbuconvを使いました
なので,これらのライブラリをDLして,Beckrbの lib\ruby\1.8 フォルダの中にぶち込んでください

あと,ネットワーク通知を使うので「システム環境設定」の「Growl」で「リモートアプリケーション登録を許可」しておく必要があります
パスワードも設定しておいた方がよいでしょう

あとは,スクリプトの最終行のIPアドレスと,パスワードを適宜変更するだけです

Becky!を再起動するとGrowlに登録されるので,お好みに応じて「システム環境設定」の「Growl」でBecky!からの通知に対して,表示スタイルやスティッキーなどを変更できます

VMware FusionとかParallelsを使ってて不便やなぁ・・・と思ってる方はぜひお試しください

#IMAPでの受信はうまく通知されません(Becky! APIの仕様と思われます)

Written by h2 in: PC | タグ: , ,
1月
21
2009
1

Beckrb

RubyでBecky!の機能を拡張することができるラッパープラグインBeckrb

先日たまたま見つけたが,もっと早く知ってれば・・・

ただRubyのバージョンは1.8.1

Unicodeの扱いなどを考えると1.8.2の壁は小さくないが,残念ながら最後の更新が2004年の5月なのでもうメンテナンスされていないみたい

とりあえずインストール方法をまとめておく

まず次の3点をダウンロード

Beckrbのインストール先は,

  • 全ユーザ共有のインストールディレクトリ
  • 各ユーザ専用のデータフォルダ

のどちらかを選ぶことができる

データフォルダさえ移せば簡単に環境が移せるのもBecky!のよいところなので,今回はデータフォルダにインストール

  1. beckrb-0.9.7.zip を展開して beckrb.dll(プラグインローダ) と bekrb.so(プラグイン本体) を Plugins フォルダにコピーする
  2. ruby-1.8.1-20040218_vc71.zip を展開して msvcrt-ruby18.dll(Rubyインタプリンタ) と lib フォルダ(Rubyライブラリ)をデータフォルダ直下にコピー
  3. msvcr71.zip を展開して msvcp71.dll(VC++ランタイムライブラリ) と msvcr71.dll(VC++ランタイムライブラリ) をデータフォルダ直下にコピー(システムディレクトリ C:\Windows\System32 などに置くのもアリ)
  4. Becky!を再起動してプラグインを組込む

メニューに「スクリプト」という項目が増えていれば成功

Beckrbは起動時に,インストールフォルダ直下の scripts/startup/*.rb,データフォルダ直下の scripts/startup/*.rb を順に実行するので,コールバックを利用するスクリプトはココに置いておく

とりあえず前から作ろうと思っていたプラグインを作ってみた

ソースも公開されているので最新版のRubyに対応させてみるのもおもしろいかもしれない

なんかJava版のBkJavaというものもあるみたい

Written by h2 in: PC | タグ: ,
1月
15
2009
0

winmail.datがウザい件

Outlook 2007(X-Mailer: Microsoft Office Outlook 12.0)とかを使っている人から,winmail.datとかいう謎の添付ファイルがついたファイルが届きませんか?

winmail.datはMicrosoftの独自仕様のリッチテキストデータですが,メールはMIMEマルチパート形式になっていてプレインテキストもついてくるので何とか中身を読むことは可能です

ただ,添付ファイルがwinmail.datにまとめられてしまって,Outlook以外のメーラーでは開けないというクソ仕様です
しかもデフォルトでそういう設定になっている?ようで,HTMLメールの数倍ウザい存在です

Winowsではfentun.exe,MacだとTNEF’s Enoughなどの解凍ツールが有名ですが,ファイル名に漢字などのマルチバイト文字が含まれているとうまく解凍できないようです
これまでだとここであきらめて送り直してもらっていたのですが,筑波大学の新城氏が書かれたwinmail.rbというスクリプトを見つけました
このスクリプトは漢字OKで,先頭の設定を適当に修正することで,EUCな環境にも対応できるとのことです
RubyなのでOSを選ばないのもGood

winmail.rbはRuby TNEF libraryを使用します
ダウンロードしてきて適当な場所において,winmail.rbのrequire文を適宜修正すればOKなのですが,29Jan2004版では下記のような警告がでます

/Volumes/Home/h2/bin/tnef.rb:498: warning: parenthesize argument(s) for future version
/Volumes/Home/h2/bin/tnef.rb:574: warning: parenthesize argument(s) for future version
/Volumes/Home/h2/bin/tnef.rb:575: warning: parenthesize argument(s) for future version
/Volumes/Home/h2/bin/tnef.rb:576: warning: parenthesize argument(s) for future version
/Volumes/Home/h2/bin/tnef.rb:579: warning: don't put space before argument parentheses

要するに括弧を付けておいたほうがよいとかスペースを入れるなって話なので,修正しておきましょう

498c498
< debug sprintf '## Unknown attribute name %4.4x',attribute.name
---
> debug sprintf('## Unknown attribute name %4.4x',attribute.name)
574,576c574,576
< debug sprintf '## Unknown MAPI type 0x%4.4x',attr_type
< debug sprintf "attr_type: 0x%4.4x",attr_type
< debug sprintf "attr_name: 0x%4.4x",attr_name
---
> debug sprintf('## Unknown MAPI type 0x%4.4x',attr_type)
> debug sprintf("attr_type: 0x%4.4x",attr_type)
> debug sprintf("attr_name: 0x%4.4x",attr_name)
579c579
< attr = TNEFMAPI_Attribute.new ( attr_type, attr_name, attr_data)
---
> attr = TNEFMAPI_Attribute.new( attr_type, attr_name, attr_data)

パスの通った場所において,chmod a+xとかしとけば,

$ winmail.rb winmail.dat ls
$ winmail.rb winmail.dat extract

するだけでOKです

TNEFなんてさっさと消えてくれればいいんですが・・・

Written by h2 in: PC | タグ:
1月
07
2009
0

zshをログインシェルっぽくする

大したネタじゃないけど「毎回zshって打つのがヤダ!!」っていってる人に教えてあげたら,なんかウケがよかったのでメモ

下記のような理由で,「メインで使うシェルはzshやけど,ログインシェルにはできないと」いう人は以外と多いのではないでしょうか?

  • LDAPで複数のサーバのアカウントを管理していると,zshが入っていないサーバにログインできない
  • まだ枯れていないので更新頻度が高く,もし失敗するとログインできず悲惨
  • 特にBSD系などで,ユーザランドにあるシェルをログインシェルにすることに抵抗がある

自分もcshしか入っていないサーバを管理する必要があって,デフォルトはcshです

とはいえ毎回ログインするたびにzshと入力するのはあまりにも面倒なので,ログイン後zshがあればzshを起動するようにしましょう

~/.login を次のような感じにします
下記はzshがあればzshを,zshがなければbashを,bashもなければcshで我慢という例です
(NetBSDで使っているものから拝借)

if ( -x `which zsh` ) then
    exec zsh
else if ( -x `which bash` ) then
    exec bash
else
    if ( ! $?SHELL ) then
        setenv SHELL /bin/csh
    endif
    # cshの設定
    # ・・・
endif

忘れずに,~/.zshenv で環境変数SHELLを設定しておきましょう
~/.zshenv に書いておけば,シェルスクリプトを引数に渡された時にも読み込まれます

export SHELL=`which zsh`
Written by h2 in: PC | タグ:
1月
06
2009
0

FreeBSD 7.1-RELEASE

年明け早々FreeBSD 7.1-RELEASEが発表されましたね

なんといっても今回の目玉はDTraceでしょう!!
OpenSolarisからインポートしたとのことですが,LeopardにつづきDTraceが使える環境が増えたのはすばらしい

最近はdummynetを使うときくらいしかご縁がありませんが,Linuxも大衆化してきたしフリビに戻ろうかな・・・

Written by h2 in: PC | タグ:
1月
04
2009
0

iPhone/iPod Touchで802.1Xを使ったネットワークに接続

iPod Touchはもちろん3Gが使えるiPhoneであってもWiFiで接続したい場合は多いと思います
ところが最近の企業や大学は802.1Xを導入していて,ちょっと面倒な設定がいることも少なくありません
WWDCで「802.1Xをサポートするぜ!!」みたいなことを言ってた気がするし,部屋を一歩出ると802.1X認証が必要なので設定してみることにしました

実は以前から何度もやろうやろうと思って放置していたんです・・・がっ!!
最近またLast.fmにハマりだしたので,部屋から出ても聞き続けられるようにやってみました

いきなり面倒ですが,802.1Xの設定は本体で直接行うことはできず,専用の設定ツールでプロファイルを作成して本体に転送する必要があります

設定ツールはiPhoneのエンタープライズサポートサイトからダウンロードできます
インストールが完了すると,「アプリケーション」の「ユーティリティ」の中に「iPhone 構成ユーティリティ」というアプリがあるハズです

VPNなどの設定も行えるようですが,今回関係するのはWi-Fiタブの項目です
ちらっと見た限りでは,iPhone/iPod TouchはLeopardと同等のサプリカント機能を備えているようです

802.1X_1

SSIDやEAPの種類,その他の認証情報などを入力したら,メニューの「ファイル」から「書き出す」を選んでプロファイルを書き出します

プロファイルの転送方法はいくつか考えられますが,今回はメールに添付して送りました(一番カンタンなので)

iPhoneやiPod Touchで送信したメールを表示して,添付したプロファイルをタッチします

802.1X_2

あとは「プロファイル」という画面が表示されるので,「インストール」をタッチするだけです

802.1X_3

Written by h2 in: ガジェット | タグ:
1月
01
2009
0

iPod Touch 2.2 (5G77) も嘘つき?

あけましておめでとうございます!!

こんなテキトーなメモにも関わらず毎日チェックしてくれている人がいらっしゃるようで,ありがとうございます
メモしておきたいネタはいろいろあるんですが書く時間がなかなか取れないのが悩みです・・・
今年は更新頻度を上げられるよう努力します

実家のネットワークにiPod Touchをつなごうとしたんですが,新年一発目から見事にだまされました

以前iPod Touch 2.0 (5A347) は嘘つきという記事を書きましたが 2.2 (5G77) も嘘つきのようです

2.0 (5A347) では設定メニューとifconfigで表示されるMACアドレスが違うという話でしたが,2.1 (5F137) で修正されていました
ところが・・・なぜか2.2 (5G77) で再発しています

ボカシをいれてますが,偽のアドレスは前回と同じものです

最近はWEPやWPA-PSK(WPA2-PSKも同様)がスグに解析されてしまうので,パーソナルユースではMACアドレスフィルタリングなどを併用するのが必須ですが,JailBreakしないと正しいMACアドレスが分からないのは問題ですね

Written by h2 in: ガジェット | タグ:

TheBuckmaker WordPress Themes Webhosting, MP3, AAC & Co