オタク日記

(Mac と Linux)

目次

2013-09-22 (Sun): MacPro (Quadra) の HDD を 2TB に
2013-09-21 (Sat): LTspice IV for MacOS X !!
2013-09-14 (Sat): VMware さん、……
2013-09-09 (Sat): VMware さん、(ちょっとだけ)偉いぞ!
2013-09-07 (Sat): VMware さん、お願いしますよぉ
2013-08-31 (Sat): Django 版 DMS 再訪(その 2)
2013-08-10 (Sat): モバイル環境——もう一つのガラパゴス?
2013-08-03 (Sat): 研究社「新英和大辞典」を Emacs で(その 2)
2013-07-27 (Sat): 研究社「新英和大辞典」を Emacs で
2013-07-20 (Sat): waremo.com 始動(その 2)
2013-07-15 (Mon): waremo.com 始動(その 1)

古い日記: 2013Q2   2013Q1  
2012 年   2011 年   2010 年   2009 年   2008 年   2007 年  
2006 年   2005 年   2004 年   2003 年   2002 年   2001 年


2013-09-22 (Sun): MacPro (Quadra) の HDD を 2TB に

Django 版 MDS がそこそこ動くようになって、 本格的に稼動させる事を考えるようになってくると、 今のサーバは何かと心許無い。

しかしその前に愛機の MacPro (Quadra) を心配しないといけなくなった。Time Machine 用の HDD がフルになって、 バックアップの際に時々こける。 「こける」とは言っても「バックアップに失敗した」という warning が出るだけの事であるが、 昔 Time Machine が古いファイルを順次消すようになってしばらくして、 「バックアップファイルが全部消えてしまう」等という事件が起ったので、 油断はできない。 なので、そんなに一杯ならないうちにディスク交換しようと決心して、 ちょっと前に 2 TB の HDD を二台買ってあったのだが、 ついつい放置。そうこうしているうちに、ディスクの空が 2 % を切り、とうとう、Time Machine が「バックアップに失敗した」と言い出したという訣。

事ここに及んでは仕方ない…… HDD を取り替えるしかないだろう。 昔一度やった事があるが、操作はあまりよく憶えていないのに、 「とっても面倒」という印象だけが残っている。 とにかく、今 Quadra には 3台 HDD が載っていて、

という構成になっている。これを 2TB の HDD (WD Red) に置き換える訣だが、概略以下のようにした
  1. Time Machine を止めて Quadra をシャットダウンし Bay4 に新しい HDD (2TB) をインストールして再起動。新 HDD を initialize しておく。
  2. AppStore.app で App Store へ行き、Purchases をクリックして、Lion を Download.
  3. Download が終ったら、 Lion の installer が立ち上がって、 install 先を聞いてくるので、MacHDD4 を指定。3 0 分程でインストール完。
  4. reboot すると、MacHD4 の新 OS から立ち上がる。 すぐに環境の移行をするかどうか聞いてくる。 ここは Yes.
  5. 色々聞かれるが、それ程悩むところはない。但し、 普通の MacHD3 と、Time Machine のアイコンのついた MacHD3 のどちらからコピーするかと聞かれた時は、大いに迷った…… MacHD3 は Time Machine のバックアップディスクではないから。 とりあえず、Time Machine 版を選んでおく。移行には 2 時間半かかった。 一旦リブート。
  6. MacHD1 の内容を、MacHD4 に移す。(高々 30GB くらいに 30 分以上かかってしまった。)
  7. Shutdown して、MacHD1-3 を取り外し、bay-3 に新しい HDD (WD-Red 2TB) を入れる。
  8. 再起動して、新しい HDD を MacHD3 としてイニシャライズ。Time Machine Preference を開いて、この HDD をバックアップに指定。 バックアップを開始する。(完了まで 5 時間かかった。)
ここまでで、おおまかに作業は完了。結果
fukuda@quadra:~% df
Filesystem      1K-blocks      Used  Available Use% Mounted on
/dev/disk1s2   1952674976 470891696 1481527280  25% /
/dev/disk0s2   1953178672 466161576 1487017096  24% /Volumes/MacHD3 
という、とってもシンプルかつ余裕綽々のシステムとなった。

以下は懸念していた事、していなかった事、とりまぜての感想・微調整等

著作権がらみ

前回 iTunes 管理下のビデオ他は、色々うるさい事を言われたので、 ちょっと覚悟していたが、何のおかまいもなし。多分、改良された installer が良きに計らったのだろう。VMware は、Virtual Machine の移動については面倒臭い事を言うのだが、今回は「copy か move か?」と聞かれて、move と答えたら OK だった。

ネットワーク設定・hostname

インストールそのものがネットワーク越しなので、当然の事ながら? 前の設定は保存されず、dhcp に依存した自動アドレス設定となっている。 System Preference => Network (Advanced) で、手動に設定して、 元の IP アドレスを設定する。一方 Hostname を明示的に設定する方法は以前からよくとまどう箇所だが、今回もすっかり忘れていて、 その上、上記の IP アドレスを設定したら、知らぬ間に quadra になっているというミステリィまで。(どうやら dhcp がその IP から指定したらしい。)結果オーライで良いか……とも考えたが、 先の事もあるので、ちょっとだけしつこく自分の Journal を捜し回って、 どうやら System Preference > Sharing > Edit として設定するらしい。

/bin, /usr/bin

以下のコマンドは、MacOS について来るものなので、 これらへ変更は再インストールしたら消えてしまうのは「あたり前。」 なので、できるだけ触らないようにしてきたが、/bin/env は後で加えたのだった。 それが消されてしまい、そのせいで、/bin/env を呼ぶスクリプトが動かなかった。ほんの数個だったけど、 そのうちの一つが rsync 関連だったので、ちょっと焦った。 今回は、/bin/env を作らず、script 側を /usr/bin/env だけを呼ぶように変更。 もう一つは、/etc/shells。 この先頭に、常用の /opt/local/bin/zsh を書き加えていたのだが、これが消えていた。大した事ではない筈だが、 このままだと、なんと Terminal.app が立ち上がらない……小パニック! だったが Emacs の ramp を使って、何とか /etc/shells を元に直した。 これはむしろ Terminal.app の起動シーケンスを触るべきだったかも。

Xcode

Xcode 本体は(移動したのか再インストールしたのかは不明だが) ちゃんと最新版が入っている。しかし、何故か Text Command Tools だけが消えていた。MacPort からの警告で、すぐに無い事に気がついたが、 どうやれば元に戻せるのか分らない(App Store にあるのは、Moutain Lion が必要な XCode-6.0 のみ。) かなり右往左往したが、しかし半ば偶然に Xcode > Preferences... > Download > Component: と辿っていけば、そこからその Tools がダウンロードできる事が解った (Phew!)

Launchctl 関連

Lion 附属の Apache が復活していたので、直ちにこれを消し、 代わりに MacPort の apache2 を起動する。
fukuda@quadra:~% sudo launchctl unload -w  \
    /System/Library/LaunchDaemons/org.apache.httpd.plist
fukuda@quadra:~% sudo launchctl load -w   \
    /opt/local/etc/LaunchDaemons/org.macports.apache2/org.macports.apache2.plist 
syslog には他にも LyX や Java-Updater の daemon を起動できない旨の警告が出ていた。LyX は uninstall し、Java-Updater は、 /Library/LaunchAgents/com.oracle.java.Java-Updater.plist を unlink した。

バグ?

Home だけ Finder の表示が「おかしくなる」という問題が有って、 再インストールでこれが直るかな、と思っていたが、これはどうやら私の早とちりらしい。 Finder のファイル表示一覧は、なんと場所 (directory) ごとにフォーマットを指定可能で、Lion のディフォルトが Arrange By 属性を、Application Category に指定するせいらしい。 ここは、他と同様 None にしておかないと、 その都度ソートの方法他を弄れなくなる。 また、Idle Sleep も長らくの懸案であるが、これも変化無かった。 つまり、指定の時間放置していても Idle Sleep に入らない。

なんだかんだで、丸一日かかってしまったが、まあ、スムースに行って良かった。 Lion のインストーラが良くなっている事に加えて、MacPro が超安定かつ扱い易くできているからだろう。特に HDD を換装するのは非常に楽だ。これこそデスクサイド機のあるべき姿であって、 件の新 MacPro なんぞは何かの悪い冗談だとしか思えない。 HDD の空容量が 1.5 TB になった事だし、こうなったら、あと 3 年は使うぞ!


2013-09-21 (Sat): LTspice IV for MacOS X !!

Linear Technology さんが無償て提供してくれる LTspice IV には本当にお世話になっている。 というか、わが Waremo Works で、唯一の実用になっているシミュレーターと言っても良い。 (WW の最初の技術レポートは、この拡張が主題になる予定。)

無償なのに、かなりの頻度でアップデートしてくれて、 「グリッチ」などは程なく直っているという事が多い——このごろは、 そもそもそういう不具合に出会わない。

しかもこれ、Wine を介し MacOS X の上で動く。(Fusion に Win 8 をインストールしてみる、なんて「無謀」をやったのは、最早 LTspice のために Windows が必須でなくなっていたから。) Port からの Wine (Port Wine と言うらしい——嘘です)は、 今もどんどんアップデートされていて (現時点は wine-devel@1.7.2.0) その度に起動時の warning が増えるが、程なく LTspice もアップデートされて、かなりの warning が解消される。 実際の動作に関しては殆んど問題無い。

で、最近また wine-devel が新しくなったので、LTspice も更新しておこうと、 おなじみのサイトへ行った。 そしたら何と、こんなアナウンスが!

LTspice for Mac!
遂に、LTspice for Mac!

いや、これには興奮したねぇ。純正版が native で動いてくれるのは有難いし、ひょっとしたら、GUI がもっと洗練されるのでは……などという期待も。

等と喜び勇んでダウンロードしてみたが、インストールできない…… と、思ったが、しかしこれは単なる勘違いで、.dmg ファイルをダブルクリックしても、 mount volume ができるだけ、という由緒正しい動作をしているだけでだった。 さらにその、volume をダブルクリックして開く finder の window で、icon を Applications フォルダにドラッグ・ドロップしてインストールは完了。

設定は何も弄らずに、既存の回路図を開いて、実行させてみた。

LTspice for Mac (Circut Capture)
回路図入力画面

LTspice for Mac (S-para Plot)
測定結果プロット画面

とりあえずちゃんと動いていて、かつ見た限りではなかなかの物のようだ:

が、「あれっ」と思うところも有って などは不安材料。 しかし、これらはもっと使ってみなければ、意味のある評価とは言えないだろう。

2013-09-14 (Sat): VMware さん、……

VMware のサポート(Sibi さん)のお陰で、とりあえず立ち上がるようになった Fusion だが、グラフィックがとても遅いという問題はそのまま。 (Window を drag しようとしても、一秒に二回くらいしか動かない :-p )

Sibi さんがとっても熱心なのに付け込んで、こちらも対応してもらう事にした。 が……

何と、TeamViewer とかいうアプリケーションをインストールして、 こちらの Mac にログインさせろ、と言う。 ちょっとびっくりしたね。勿論丁重にお断りした。 なんぼ熱心だからって、それは無いんじゃないの? (丁重に、はちょっと嘘かも……英語だからね、そんな言い回しは知らない。)

次は、(前から要求されていた)「Log を取って送れ」と来た。 まあ、それくらいは良いだろうと(中身を確認した上で)送ってやった。

と、ここまでやると当然期待は膨らむのだが、 しかし、返ってくるサジェスチョンはどれこれも「そんなのとっくにやったよ」 というものばかり(割り当てる CPU core の数を増す、Memory の割り当てを増やす、VMware Tools を再インストールする、等々。) それでも、Fusion-6.0 になったから効果あるかも、 と一通りやってみたが、案の定効果無し。 効果がないだけならまだしも、あまり色々「あれやれこれやれ」と言うので、 途中で Win 8 が二度程フリーズした。 (もうここらへんで相当嫌気が差している。)

一番聞きたかった「GeForce 7300 GT のサポートは落したままなのか」 については「古い MacPro で、performace problem は聞いていない」 などと言ってごまかす。 しまいには、PC での対策などを書き連らねるようになったので、 「なんだこの人、せっかく送った Log を読まないで、マニュアルを鸚鵡返ししているだけじゃないか」 と分り、お払い箱にする事にした。もとい、session を close する事にした。

この人のサジェスチョンにも「3D Graphics Accelerator を止める」というのが有ったが、それを聞く前に実はもうやっていて、 (4.x のころからの「おきまり」だからねぇ :-) ) そのお陰で、まあなんとか我慢できる程度にはなっていた。 とても「がんがん使う」気にはなれないが、ブラウザを複数立ち上げて Web page の見栄えを確認するくらいには使えそうだ。


2013-09-09 (Mon): VMware さん、(ちょっとだけ)偉いぞ!

驚いた事に、一昨日の質問(苦情)に間髪を入れず返事が来た。 先回の盥回しとは偉い違いである。 ただ、「VMware さんを好きになってしまう」程ではなかった……

最初のは自動リプライで、「これこれこういう設定をして Log を取ってみろ」とあった……そもそも起動できないのに、 どうやって設定を変えるんだ、バカヤロ!っと心の中で叫んで無視。

しかし、その後数時間で「人」が書いたと思われるメールが来て、 /Library/Preferences/VMware\ Fusion/license.fusion.site.6.0.* を消してみろ、との御託宣。そんな馬鹿な……と思いつつやってみると、 Fusion-6.0 がちゃんと立ち上がった……。素晴しい!!

が、よく考えてみると、このファイルって、Fusion-1.x が作った license file なんだよな。で、6.0 は license_version. そんなファイルを Fusion-6.0 が何を思ったか、参照しに行ってあげくはクラッシュという顛末らしい。

そのメールにも、Knowledge Base を参照してくれ、と有って、 実際、症状と対応策がそのまま書いて有ったが、 そもそも「立ち上がらない」という症状を検索に行く人が居るだろうか。 何より原因がクリアで、対策は明白(件のファイルを参照しないようにするだけ) なのに、なんでそれを直さず、KB を作りましたってすましているのかなぁ。 「そもそも立ち上がらない」を経験させた方が、サポートの有難味が増すってか? まさかね。

という事で、サポートは以前の「最悪」から「まあまあ」になったかな、 というところで、「好きになる」までは、とてもとても、ですな。

あと、(古い MacPro では?)描画が遅い、McAfee がインストールできない、 はそのまま。このあたりの改善を期待している人は、まだ 6.0 にしない方が良さそうです。


2013-09-07 (Sat): VMware さん、お願いしますよぉ

VMware は全く度し難い。窓の表示が耐えられない程遅い、 McAfee がインストールできない、起動・停止にやたら時間がかかる…… だのに米国のサポートは日本の代理店に盥回しして、 その代理店は相談するのに本体と同じくらいの金額(質問チケット代)を要求する……

「ばかやろ」で、その後放置していた Fusion-5.0.3 だが、このところ www.waremo.com や dms.waremo.com (仮称) の見栄えや動作の確認用にまた使うようになった。 IE, Firefox, Chrome, あと何と Safari。これらを一度に立ち上げて、 窓を弄っていると、上記の耐え難さがますます募るが、 まあこれらの確認は必須だから仕方が無い——実際 HTML5 関連でボロボロと「違い」が出た。

で、何とか我慢して使っていたのだが、本日 VMware Tools を更新してから落そうとすると、 "saving virtual machine states"と表示したきり、 うんともすんとも言わなくなった。いや、正確には、progress bar は動いているのに、 どこをクリックしても応答しなくなった。"VMware Fusion" のメニューから、Quit しようとしてもダメ。 30分程放置していたが、状況は変わらず。 仕方なくForce Quit を使った……。 なんて事が有ったので、ついふらふらと Fusion-6.0 にしてみようかな、と。

4.0 が 5.0 になる時同様、バージョンアップなのに $50 取られる……。 でも、まあ、以前に比べると、購入 ⇒ ダウンロード ⇒ インストール、はスムースになっているから許すかなぁ……と思っていたら、 なんと、これが全く立ち上がらない。インストーラからの自動立ち上げの他に、 Applications フォルダにあるアイコンをクリックしても駄目。 VMware Tools を含まないバージョン (..-light-...) をダウンロードしてインストールしても駄目。

いくら使用頻度が低いとは言え、全く動かないと Django の動作チェックができないので、泣く泣く 5.0.3 を再ダウンロードしてきてインストールした。 こっちはちゃんと動いた。ふう。(表示が遅いのまで「そのまま」だが。)

ただ、MVware さんの名誉のために言っておくと、 サイトの構成やサポートの体制は、以前に比べたらずっと改善されている。 購入済みの製品のダウンロードや苦情のポストまであまり悩まずにやれた。 これで、苦情に的確に対応してくれたりしたら、VMware さんが好きになってしまいそう……

でも、サービスが改善されたら、肝腎の製品の質が劣化していた、ってのも困ったもんだが。


2013-08-31 (Sat): Django 版 DMS 再訪(その 2)

前に DMS に触ったのは、もう二ヶ月も前になるのか……。 その時は比較的楽観的だったのだが、 やってみるとまだまだひっかかるところは多かった。 中でも 「(ようわからんが)何となく動くようにはなった」なんていう辺りは、 今回もやっぱりてこずった。

get_profile() と Authentication

「何となく」の筆頭はこいつ……。もともと(Django-1.0 の頃)Internet Explorer ではログインできない、という問題が有った。 かてて加えて、Django-1.5 では、get_profile が depreciated になった。 それでも(その 1)では、何とか動いたのだが、 どうも安定しない。というか、AUTH_PROFILE_MODULE で指定する model をどう定義すれば良いのか、よく分らない。 つまり、get_profile は User class の method なのに、
from django.contrib.auth.models import User
from users.models import UserProfile

    user = User()
    user_prof = user.get_profile()
で、UserProfile のインスタンスの user_prof ができてしまうという、一見魔法のような「旨い話」だが、 今はうまく行かない事が多くなってしまった(だから depreciated になった?)そんな機能にあんまり拘るのもアホらしいので、 すっぱり諦めて、UserProfile を定義しなおして
# users/models.py
...
class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    first_name_ja = models.CharField(max_length=80, blank=True)
    last_name_ja = models.CharField(max_length=80, blank=True) 
    
    def get_full_name_ja(self):
        if self.first_name_ja:
            return "%s %s" % (self.last_name_ja, self.first_name_ja)
        else:
            return ""
....
としておいて、
    user1 = User.objects.get(username=author_id)
    full_name_ja = UserProfile.objects.get(user=user1).get_full_name_ja()</
という具合に参照する事にした。つまり、 login やその状態の保持などには、純粋な User object と django.contrib.auth のメソッドだけを使い、 他の profile は、その User instance を ForeignKey にした UserProfile を別途作って、それを参照する、という事。 まあ、ちょっと面倒になったが、おかげで login 等で問題が出る確立がぐっと下った(ように思う。)

また、当初は IE からの cookie 付きの login ができず、ずっと大きな懸案だったが、 今の版ではこれが解消した。但し、get_profile() を止めたからではなく、IE も Django も新しくなった所為かも知れない。

DateTime Format

DB の 'date' や 'datetime' タイプの column は、Django の models で、DateField/DateTimeField として定義される。例えば、
CREATE TABLE "documents_document" (
    "id" integer NOT NULL PRIMARY KEY,
    "doc_id" varchar(40) NOT NULL UNIQUE,
    ....
    "title" varchar(100) NOT NULL,
    "date_issued" date NOT NULL,
    "date_registered" date NOT NULL,  
    ....)
from django.db import models
from django.contrib.auth.models import User, Group

class Document(models.Model):
    doc_id = models.CharField(max_length=40, unique=True)
    title = models.CharField(max_length=100)
    ....
    date_issued = models.DateField()
    date_registered = models.DateField()
のように対応させておく。(実際には、models.py をまず書いて、それを Django が SQL に変換する。) こうしておいて、Django から table にアクセスすると、 暗黙の型の変換をやってくれる。例えば、
fukuda@quadra:~/waremo_dms% python manage.py shell
Python 2.7.5 (default, Aug  1 2013, 00:59:40) 
....
(InteractiveConsole)
>>> from documents.models import Document
>>> doc=Document.objects.get(id=1)  
          ## documents_document table の最初の entry を取ってくる
>>> doc.date_issued  ## DateField (date) type の field を参照する
datetime.date(2013, 8, 20)    
          ## 'datetime.date' type の object が返る
>>> type(doc.date_issued)
<type 'datetime.date'> 
doc.issued_date = datetime.date(2013, 8, 20) としてから doc.save() とやると、逆の変換が起きる。

ここまでは、とてもスマートなのだが、この object を template (HTML の page) とやりとりする辺りは結構ややこしい。

Django-1.5 で、DMS を触り出した時に、いきなりこれでひっかかった。 かつては page に書き込む時、ISO format になっていたと思うのだが、 これが何故か今は "Aug. 21, 2013" と表示されるようになり、 それをそのまサーバに返したのでは、Format Error となる……。

かなり悩まされたが、要するに自分がうっかり DATE_FORMAT (object -> string) のディフォルト値である "N j, Y" を使うように変更してしまった、という事らしい。 つまり、datetime.date(2013, 8, 28) という object は "Aug. 28, 2013" と表示される。 これはなかなかスマートである。("Aug.", "Sept.", "May", "April" となる。こう並べると統一感がないが、文章の中では読みやすい。)

が、これがそのまま、request.POST.get()views.py に返ってくると、明示的な変換( datetime.strptime())でも 暗黙の変換(DATE_INPUT_FORMATS。そもそも動作してないが)でも、 解釈のしようがない。(つまり、どちらの変換でも適切な「format 文字列」を作れないという事。) 少々、スマートさには欠けるが、ディフォルトの日付けを表示して、 そのまま、もしくは、ユーザが変更して返すフィールドだけは ISO format で表示させる事にした。つまり、template で、

....
<form action="..." value="{{ documents.date_issued|date:"Y-m-d" }}" >
....
のようにしておく。で、この ISO format の文字列を、views.py に戻して(つまり request.POST.get[] で取って)きて、doc.date_issued フィールドに代入する。DATE_INPUT_FORMATS は働かないが、 最初のフォーマットだけは大丈夫のようで、次に doc.save() した時に、string から "datetime.date object" に変換される。 が、今回は明示的に datetime.strptime() で変換してから、doc.date_issued に代入する事にした。 (「自動変換」に頼るのはどうも気持ち悪い。)

Time Zone

これまた、とってもややこしくて、Django の問題なのか、Python そのものの問題なのか判然としないのだが、ともかく、DateTimeField の field を定義しておいて、それに普通の datetime object を入れようとすると「"naive" な——つまり TZ を考慮していない——時間データを代入している」なんていう警告が出る。
fukuda@quadra:~/waremo_dms% python manage.py runserver 192.168.0.2:8000
Validating models...

0 errors found
August 31, 2013 - 12:22:58
Django version 1.5.1, using settings 'mysite.settings'
Development server is running at http://192.168.0.2:8000/
Quit the server with CONTROL-C.
/opt/local/Library/……/python2.7/site-packages/django/db/models/fields/__init__.py:827:
RuntimeWarning: DateTimeField received a naive datetime (2013-08-31 12:23:07.081726) 
while time zone support is active. 
単にこれを消してしまうのは簡単で(メッセージにあるとおり)time zone サポートをやめればよいだけ。(mysite/settings.py で、 USE_TZ = False とする。) が、「datetime で TZ」は従来からの懸案だったので、これを極めるために右往左往してみた。

まず、そもそも TZ をどう扱うのか、から。実は、いまだに Python 本体にはこの tzinfo のデータベースは無くて、pytz というモジュールをインストールする必要が有るのだった。 (port では、py27-tz とか、py33-tz という名前になる。但し、Port の Python-3.3 には初めから付いているようだ……ややこしい!)

fukuda@quadra:~/waremo_dms% python manage.py shell    
Python 2.7.5 (default, Aug  1 2013, 00:59:40) 
[GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> import datetime
>>> from django.utils import timezone
>>> from django.utils.timezone import utc
>>> datetime.datetime.now(tz=timezone.get_default_timezone())
datetime.datetime(2013, 8, 29, 6, 21, 22, 121175,
    tzinfo=<DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>) 
>>> datetime.datetime.utcnow()
datetime.datetime(2013, 8, 28, 21, 22, 42, 129837)
>>> now = datetime.datetime.utcnow().replace(tzinfo=utc)
>>> now
datetime.datetime(2013, 8, 28, 21, 23, 43, 728054, tzinfo=<UTC>) 
うーむ、期待した程スマートではないが、とにかくこれで TZ を扱える。どうやら「"tz aware" である」とは <tzinfo=...> の項が付いている、という事で、これを USE_TZ = True DateTimeField に代入すれば良い、という事のようだ。

しかし、この UTC time を template が local time に変更してくれなくては、 あまり意味が無いような気がする。何より、DMS は datetime (DateTimeField) なぞは、logging くらいにしか使わない。一方、date object を上記のように"tz aware" にする方法は無いように見える (例えば、datetime.date.utctoday() は無い)。 当然の事ながら実際には日付けが違い、

>>> now.date()
datetime.date(2013, 8, 28)
>>> datetime.date.today()
datetime.date(2013, 8, 29)
上記の now は utcnow() から取ったもの。日本時間の午前 0時 から 9時までの間、このような差は常に有る訣だ。

しかし、「お手軽」を旨とする我 DMS では対応策は限られるし、 上記の {DATETIME|DATE}_FORMAT とのからみもあるので、 結局「USE_TZ を False にする」のが一番良いと思われる。


2013-08-10 (Sat): モバイル環境——もう一つのガラパゴス?

近頃は出歩く事が減ったので、 当然出先でインターネットに接続したいと思う事も減ってきた。 それどころか、MBA を使う機会も減ってきて、 一時は「やらねば」と思い詰めていた MBA の電池交換も伸び伸びになっている(今や 2時間程度しか保たないのだった。) 何よりも、何故か日記が疎らになってきてしまった。 どうやら、電車の中だと日記が書きたくなるという条件反射ができていたようだ。

iPhone 4S 不調

何も悪い事はしていないのに、私の iPhone 4S で通話ができなくなった。 掛ってきた電話を取っても、こちらから掛けても、 片通話になる——こちらの声が届かない。 おまけに、(こちら側だけで)キリキリキリというような嫌な異音が出る。 再現性抜群で、相手が iPhone、他の携帯、固定電話にかかわりなく問題が出る。 ここまで再現性が良いと「嫌〜な感じ」があまりしなくて、却って懐かしいくらいのもの …… なんて言ってる場合ではなくて、 さすがにこれでは不味かろう。

この際、iPhone 5 にして、正式テザリングにしようと決心。SB に持って行く前に、Jail Break を元に戻しておこうと、6.1.3 にアップグレードする事にした(これまでは 6.1.3 だと Jail Break できないので、ずっと、6.1.2 のままにしていたのだった。) が、これが結構大変な事に。途中、食事で席を離れてから帰ってみると、 エラーで止まっている……一旦「工場出荷時の設定に戻します……」で、 「コンテンツの同期を遣り直します……」なんて「すったもんだ」になってしまい、 結局 1時間以上かかってしまった。でもまあ、なんとかアップグレードには成功した。 当然、Jail Break も元に戻って、テザリングはできなくなっている。

しかし、同時に上の不具合(片通話)も無くなってしまった。ひとわたり、 iPhone, 固定電話、IP 電話に掛けてみたが、何の問題も無いようだ。 うーむ、「何も悪い事はしていないのに……」はちょっと言い過ぎだったか :-p。 それはともかく、iPhone 5 にして eMobile は止めてしまおうという決心がまた揺らいでくる。

eMobile

少し前に、 「LTE4 の使用帯域幅を増やすために、3G に犠牲になってもらう(最大ビットレートを減らす)」等という厚かましい 「お知らせ」が来た。なんでも、下りが 42 Mbps から 21 Mbps と遅くなるんだそうな。勿論それだけでなく(それだけだったら、 却って「潔い」とも言えるが)、今新型の 4G Pocket WiFi に乗換えを予約すれば、殆んど無料でそれが可能だ、とも。 GP02 がよくハングするので、D25HW に(勝手に)ダウングレードして使っている身としては、そんな事に大して興味もなく、 「そんな事より安定性の方を何とかしろよ」と思っていた。

が、ある晩電話がかかってきて、 今申込みすると、追加費用は一切かからないから、申込みしないか?と言う。 何度聞き直しても「ユーザにとって何が嬉しい」のか要領を得ないのだが、 要は、先のお知らせが、最新モデル GL09P への予約を促すものだったに対し、 既存のモデル (GL06P?) で 4G へのアップグレードをしなさい、という事らしい (なにそれ、俺にはなんもメリット無いじゃん。) 成程、それをあっさり言ってしまったら、すぐ電話を切られるわなぁ。

Flet's Spot

これはいきなり電話がかかってきた。要は Flet's Spot を三ヶ月無料で試しませんか、というお勧めらしい——「それを先に言え」と言 いたくなるくらい挨拶がまわりくどかった。

まあ、無料で試せるというなら、eMobile を解約した後の補助として使えるかどうか確認してみようと思い、 話を進めてみる事にした。

では、「MAC アドレスを教えろ」という。あれ、Mac の MAC アドレスって、どうやって調べるんだっけ、ifconfig だと表示が山程出てくるし、Preferences からだと大分ネストが深かったよな…… 結局 Preferences > Network > Wi-Fi > Advanced > Hardware として何とか辿りつけた :-p。(今思えば、MBA の場合は % ifconfig として、IP アドレスがアサインされているポートを見れば良いだけの事だった :-)

次は「OS を教えろ」と言う。「Mac OS X の……」と言いかけると、 「あのう、すみません、MAC ではなくて、OS を御聞き……」「いや、ですから Macintosh OS の……」という、今では懐かしいようなトンチンカンをやって、 結局「誠に申し訣ありませんが Macintosh は対応できません」と来た。 元々こちらは大して熱意も無いので、 そのまま電話を切っても良かったのだが、 つい「今時、相手の OS を選ぶような AP なんか有るんですかぁ。 実際、どのスマートホンでも OK なんでしょ?」 などと言ってしまった。彼女は「それでもダメ」としばらく頑張っていたが、 ようやく「上司」に聞く気になったらしく、さらに二三分待たされて、結局「OK です」との返事。あのなあ……(ただ公平のために言っておくと、NTT さんは、比較的早くから MacOS をサポートしてくれている方だと思う。)

しかし、それより「あのなあ」なのは、使用開始が 8月24日から、という事。 設定にそんなに時間がかかる訣ないから、お盆前後の繁忙期を避けよう、 というつもりなのだろうか。 どちらにせよ、そんなに先では忘れている可能性が大ですな。

考えてみれば

という訣で、SB, eMobile, Flet's さんそれぞれの「なんだかなあ」 や「あのなあ」に右往左往させられている訣だが、 ユーザの利便を考えるなら、MBA に 3G のモジュールをつけるだけで、課題は一挙に解決なんだよね。 つまり、iPhone/iPad がやっている事を、MBA ができるようにすれば良い。 (ちっとも夢物語ではなくて、昔の ThinkPad T4x や X2x には 3G モジュールがついていた。) 唯一の(キャリアさんにとっての)課題は、通話しない 3G の課金の仕方だろうけど、それこそ「差別化」の源泉ではないかなぁ。 今みたいに、誰も理解できないようなチマチマした割引なんかより、 ずっと骨太だろう。 いずれにせよ(あまり高くなければ)少くとも私は飛び付くと思うよ。

2013-08-03 (Sat): 研究社「新英和大辞典」を Emacs で(その 2)

ようやく念願の研究社「英和大辞典第六版」(KEJD6)が、lookup で引けるようにできたのだが、最初の感激が薄れてくると、 ぽつぽつ不満も出てくる。 その第一は発音記号の一部が「外字」のビットマップフォントで現わされる事。 実はこれ、Genius への不満の一つでもあって、KEJD6 にしたら直っているのではないかと密かに(勝手に)期待していたのだが、 そうは問屋が卸してくれなかった。 EPWING が、使える文字コードは JIS X208 のみと規定してあるので、 第三水準の漢字は疎か IPA 発音記号さえ全て外字とならざるを得ない。 (本のタイトルに ASCII を許さない事と言い、 「国際標準」は端から念頭に無い?!ったくもう、である。) なので OALD7 同様、KEJD6 でもビューア(この場合は lookup) がケアしないといけない。

外字の Unicode 化

つまり、辞書に使われている外字を、Unicode に変換してやれば、システムフォントの内、Unicode に対応しているアウトラインフォントを使う事ができる訣だ。

OALD7 では、まさにこれをやっているのだが、 実は Genius でも同じ事を試みて撃退されたのだった。 (OALD7 の 外字 ⇒ Unicode のテーブルをそのまま適用してやろう、 なんて甘い考えだったのだが、うまく行かなかった。) その時の「道は遠いぞ」感から、そもそも、純正の EPWING ではそんな事はできないのかも、と思っていた。(OALD は、独自フォーマットの辞書を oald7-fpw というツールで EPWING に変換したもの。) 第一、KEJD6 に対しては LogoVista の純正ビューアでもこれはできてないように見える。

KEJD on EBMac
EBMac での KEJD6 の表示

なので、案の定かなり右往左往したものの、 これは可能である事が解った…… EBMac というビューアで表示させたら、 何と発音記号が事もなげにアウトラインフォントで表示された。 しかも、この変換表を .plist (XML) 形式でダンプする事も可能。 (「ダンプ」を実行するのに、ちょっと右往左往したが) 一気に展望が開けてきた。

この .plist ファイルから、OALD7 で使っているような変換テーブル (oald7-pkg.el の中の)を作る事はそれ程難しくない筈……なんだけど、 最近 Python の encoding がらみで、ちょっとめげているので、 さらに検索してみた。すると、何と lookup の最新版にはそれが添付されているんだとか——正に灯台下暗し! SourceForge.net から lookup-1.99.95.tar.gz を取って来て展開すると、lisp の下に、support-plusv2.el というのがあった。(上の EBMac が作るファイルは、READERS2.plist だったので、support-readers2.el を期待したが、何故か全々違う名前だった。それにしても、"Readers plus" という書名から plus だけを取るとは……)

このファイルを下のように変更する

(defconst readers-plus-v2-gaiji-table
  (lookup-new-gaiji-table
   '(
     ("ha127" "◆") ;; 全てのエントリから、間の '.' を取った
     ("ha128" "∼")
     ("ha275" "ɵ") ;;「半角」の theta に
    ;;……
     ("ha825" "ɪ") ;; これについては以下で詳述
    ;;……
     ("zb14e" "ǽ") ;; 多分「元の表」のミス
    ;;……
     ("zb460" "菉")))) 
これを、oald7-pkg.el と同じ場所、すなわち ~/Dicts/packages の下に置いて、 ~/.lookup に次のコードを付け加える。
(load-file "~/Dicts/packages/support-plusv2.el")
(lookup-set-dictionary-option "ndeb+/Users/fukuda/Dicts/kej6:kej6" 
	':gaiji-table readers-plus-v2-gaiji-table) 

unicode in KEJD
外字を ビットマップで表示 (KEJD6)

ここまでのところで、一応 KEJD6 でも発音記号をアウトラインフォントで表示できるようになった。 発音記号の見易くなっているのは明らかだろう。

unicode in KEJD
外字を Unicode に変換して表示 (KEJD6)

unicode in KEJD
リファレンス (OALD7)

しかし、それでも OALD7 に対しては見易さの点で一歩譲るような気がする。 これは多分に accent の表示の仕方のせいだろう。母音の上に、 アクサンを付けるのは旧来からの習慣であるが、 これはやたら文字の種類が増えてしまうので Unicode の立場からは上策とは言えない。 ここはやはり OALD7 のように、 " ' " や " , " を挿入する事で、第一・第二強勢を示す方が合理的であると思う——何より、IPA の規格に沿っている。

何だかなあ

上の「置換」は、IPA の発音記号の外字(ビットマップ)を Unicode のアウトラインフォントに置き換えただけではなく、 KEJD6 の新機軸(によるトラブル?)にも対応している。KEJD6 の編集者は /ɪˈlɪmɪneɪt | əˈlɪmɪneɪt/ と書く事を避けようとして、 /ie sound/ という記号を発明して使っているのだった。 勿論こういう記号は Unicode には無いので、どうしたものか大分悩んだが、結局 /ɪ/ で一本化する事にした。自分にはそんな些細な発音の違いは聞き分ける事も、 発音し分ける事もできないし、何より OALD7 でもそうなっている(分けていない——発音のバリエーションを表示する事自体が、 KEJD6 より遥かに少ない。)

また、そのバリエーションを区切る " | " は頻発するのだが、何故かその後で必ず改行が入る。 とっても見難いが、しかし、これは元の LogoVista 形式のファイルがそうなっているのではなくて、EPWING に変換した時のエラーか、 もしくは lookup の動作のせいのようだ。

さて……

とりあえず、KEJD6 の表示は満足の行くものとなって、OALD, KEJD, KJED, 広辞苑を Emacs から串刺し検索できる、 という自分にとっては究極の「辞書環境」が手に入ったのだが、 これを「一生物」にするかどうかちょっと迷っている。

というのは、OALD7 は表示に凝るあまり複雑になり過ぎて、 とてもメンテナンスできそうもない。もっと標準的な EPWING にして、かつ「区切文字」や改行の変更を諦めれば、 設定ファイルはずっと簡単になり (少くとも他の辞書と共通点が増し)、かつ EBMac などで引く事も可能になるだろう。(これには 「解説」なども読む事ができる、という大きなメリットも有る。)

つまり、全ての辞書を EPWING 形式にして、 それに「外字⇒Unicode」を加える、という事。 和英大辞典や、広辞苑にもこれが可能かつ有効で、JIS X208 の制限を緩和する事ができるのだった。

しかし問題も有って、"◇" や"[OPP]" 等の表示は諦めるにしても、 分綴法 (syllabication) を表わす"•" が「・」 (中黒)になるは許し難い(上の、OALD7 と KEJD6 の "character" の表示を比較してみるべし。)

つまるところ、KEJD6 をもうちょっと使ってみて、 その表示に慣れる事ができるか(我慢できるようになるか) にかかっているかな。 しかし、あんまり先になると、また OALD7 の設定を再度勉強し直しになってしまう……悩ましい。


2013-07-27 (Sat): 「研究社新英和大辞典」を lookup on Emacs で

「研究社新英和大辞典」(以下 KEJD) の第六版が出てもう10年になるんだなぁ。出たばかりの頃、 少々イチャモンをつけたりもしたが、信頼が揺らいだ訣ではなかった。 しかし(そこにも書いたが)その第五版を長く使った経験から、 紙の「大辞典」はもう無理、電子版が出ないかなあと思っていた。

それなのに「ジーニアス英和大辞典」(以下 Genius)に走ったのは、 多分、KEJD の EPWING 版が「新和英大辞典第五版」と抱き合せでしか買えなかったからだろう。 (和英大辞典の方はその時既に買っていたのだった。) そのうち、その「抱き合わせ」も品切れになり、 また、その中古は 4 万円もする……という事で半ば諦めていた。

が、先日、LogoVista 版ならば英和のみ単独で買う事ができ、 しかも辞書データは比較的簡単に EPWING 形式に変換できる、という事を知った。 よく見るとこの版は 2007 年頃に出たらしいが、 今の今まで気がつかなかったのは、「EPWING 辞書を lookup で引く意外は考えられない(独自の Viewer は御免だ)」と思っていたからに違いない。

ともあれ、Amazon.co.jp に注文したら、翌日に届いた。11,500 円也。

インストール

ちょっと意外だったが、Mac にもインストールできる、との事なので、 早速インストールしてみた。 が、いきなり問題が……。Admin 権限が必要、と書いてあるけど、 展開しようとしたら、Admin 権限を承認するためのウィンドウが開かないで、そのまま終ってしまう。 なんだか嫌〜な予感がしたが、 LogoVista の FAQ ページに、「Lion 以降には別のインストーラが必要」とちゃんと書い てある。おいおい、Lion なんて、出てからもう 3 年になるんだぜぇ、なんでとっとと……とぼやいても詮ないので、とにかくインストール。

KEJD
LogoVista Viewer で KEJD を引く

ビューワは地味だが、ちゃんと動く。 (しかし、あの秀逸なイラストが全く出てこないのには、ちょっとがっかり。)

しかし、勿論ここで留まる訣には行かず、lookup on Emacs での串刺し検索を目指す。

EPWING 形式へ変換

Vector から dessed_src-1.3.tar.gz を取って来て、展開。 dessed というディレクトリは作られず、いきなり win32 とか unix というディレクトリになってちょっと慌てるが、 コンパイルそのものは、unix ディレクトリに行って、make だけで良い。

もう一つ catdump というコマンドが必要であるが、 これは epwutil というツールキットに含まれている。 openlab から、epwutil-1.1.tar.gz を取ってきて、展開してコンパイル。 ただ、想定しているシステムがあまりにも古いせいか、 compile error が出る。catdump.c を編集して、 getline という関数名を全て getline2 で置き換えたら、 catdump に関してはコンパイルが通るようになった。

で、これらを使って、EPWING に変換。 実は今回「辞書の本体を捜す」が最も困難な作業だった…… :-p

fukuda@quadra:~% mkdir -p Dicts/kej6/kej6/data
fukuda@quadra:~% mkdir -p Dicts/kej6/kej6/gaiji
fukuda@quadra:~% ~/build/unix/dessed /Applications/LVDictionary.localized/DicFolder.localized/KQNEWEJ6/KQNEWEJ6.IDX ~/Dicts/kej6/kej6/data/honmon
fukuda@quadra:~% ~/build/epwutil-1.1/catdump -u catalog.txt CATALOGS
fukuda@quadra:~% cp CATALOGS ~/Dicts/kej6/ 
この catalog.txt は以下のようにしてみた。
[Catalog]
FileName = CATALOGS
Type = EPWING2
Books = 1

[Book]
BookType = 2002 (20:英和辞典, 02:EPWING2)
Title = "新英和大辞典第六版"
Directory = "kej6"
InfoBlock = 0001
ZenGaiji = "GA16FULL"
HanGaiji = "GA16HALF"

ポイントは、

のあたりかな。

lookup on Emacs で使ってみる

こうしておいて、init.el に、

(setq lookup-search-agents
      '((ndeb "/Users/fukuda/Dicts/OALD_7" :stemmer stem-english)
	(ndeb "/Users/fukuda/Dicts/genius_ej" :appendix "/Users/fukuda/Dicts/genius_ej_app") 
	(ndeb "/Users/fukuda/Dicts/kje5") 
	(ndeb "/Users/fukuda/Dicts/kej6")  ;; << これが「研究社新英和大辞典」
	(ndeb "/Users/fukuda/Dicts/kojien") 
	))
とすると、 辞書が Emacs 上の lookup に現われ、ちゃんと引く事ができるようになった。
2013-08-02 (Fri): ゴミ ('!') が入っていたのでとりました。 後、勿論ですが、ディレクトリはそれぞれの環境に合わせて下さいね。

KEJD
KEJD

発音記号や、文型の強調などで OALD7 には、ちょっと譲るが、 現用の英和であるジーニアス大英和より、かなり見易くなっている。 (いずれも、画像クリックで拡大可)

OALD7
OALD7
Genius
Genius

感想

まだ二日程しか使っていないが…… Genius に比較するとかなり見易くなっている。
  1. 見出し語に、 アクセントや '・' が付いていないのが良い。 (リンクを辿って行くと、そうでなくなるが……)
  2. Genius では、見出し語と、副見出し? の扱いが融通無碍になっていて、見難い事があるが、 KEJD では(完璧ではないものの)かなり改善されている。
    radio wave in KEJD
    Radio Wave in KEJD

    raido wave in Genius
    Radio Wave in Genius

  3. 例文の中で見出し語が '〜' になってないのは良い(これは意外に大きい。)
  4. Genius を使っていて、訳語に「あれっ」と思った事が何度か有るが、 その語が何だったか殆んど憶えていない。思い出せるのは redundancy くらいだが、それに Genius は
    3〔電子工学〕代理[重複]機能性《電話送信・コンピュータ処理上の安全機能》.
    なんて訳をつけていて、何だかなぁ、と思ったものだった。一方、KEJD は
    5 冗長性《コンピューター・宇宙船などの装置の一部が故障した際, 代わりに機能を果たす代行能力を備えていること》.
    としている。流石だ。
  5. イラストが見えないのは勿体無い。歴代の KEJD のイラストは、OALD の挿絵が「ちゃち」だと思えてまう程、素晴しかったが、 どうやら電子版では端折ってしまったようだ。(LogoVista のネイティヴの Viewer でも見えない。)
という事で、 今までのところで既に「買い替え」を十分正当化できるレベルだと思う。

2013-07-20 (Sat): waremo.com 始動 (その 2)

先週の(その 1)に続いて waremo.com の整備で、今週は中でもウェブサイトに集中。

常々、このようなものを立ち上げるなら、 ちょっとは「プロフェッショナル」なものにしたい、と思っていた。 とは言え、では具体的にどのようなものなのか、となると、思い付くのは、

  1. 文字を小さくする。
  2. 背景を暗くする。
  3. 水平に並んだ global navigation
  4. 複数の言語に対応
ぐらいかな。しかし、1 と 2 は「そういうサイトが多い」というだけの事で、 どう考えても、見易さに寄与しているとは思えないので没。 (← これはローガンズには見難いサイトがやたら多くなりつつある事への厭味です。) 3. も、とてもポピュラーのようだ。というか、そうでないのは、今や otacky.jp くらいのものではないか:-p。 しかしこれも然程「必然性」は無さそうに見える。 が、drop down (pull-down?) menu にしたらどんな風になるのかとても興味が有るので、これは採用する事に。 (がはは、趣味チックなり!)

そもそも otacky.jp を HTML5 にした本当の理由は、ルビを使いたい、 という事だったので、そんなものは必要無さそうな waremo.com がそれに倣う必要は全くないのだが、まあ、あんまり種類が増えても何なので……

ただ、実際には、HTML5 や CSS3 の新機能に悩む以前に、 もっと基本的な所で大いに戸惑った。

Virtual Host と SSI

我サイトの「役物」は、せいぜい SSI どまり。JavaScript その他のスクリプトは使っていない(使えない。) で、waremo.com でも、SSI を使いたいのであるが、これが、Virtual Host と組み合わさると、なかなか面倒な事になる。言ってしまえば、 結局、VirtualHost の中で SSI を使うためには、
  1. XbitHack は諦め、server-parsed に頼る事にする。つまり、.htaccess で:
    Options +Includes
    AddHandler server-parsed .html 
    これは、.shtml 等ではなく、これまで通り .html を全部パースして、 Includes を実行する、という意味。
  2. httpd.conf の中の最上位の Directory 定義の中で、
    <Directory />
        Options FollowSymLinks 
        AllowOverride All
        Order deny,allow
        Allow from all
    </Directory>
    としておく必要がある。
VirtualHost でなければ、以上の事は <Directory> 内で再設定できるので問題にならない。

Language Negotiation

ユーザ(の使っているブラウザ)の使う言語を、 server が自動判別しているサイトがあり(最近は珍しくもないが)、 これをやってみたかった。 が、なかなか苦労した……。結論は
  1. VirutualHost と共存させるためには、上記の RSS と同様の配慮が必要。(<Directory/> 内の AllowOverride ALL
  2. 先の Include と両立させるためには、さらに
    Options +Multiviews +Includes
    AddHandler server-parsed .html 
    AddLanguage en .en
    AddLanguage ja  .ja
    LanguagePriority ja en
    ForceLanguagePriority Prefer
    としておく必要がある。(AddLanguage の行が必須である事になかなか気がつかなかった。)
  3. 自動判別させるのは、index.html に対してのみ。つまり、 index.html.en と index.html.ja だけを作って (勿論 index.html が有っては駄目)、他のファイルは、hoo.html と hoo_en.html で統一して、それぞれの言語グループの中では明示的に navigation する。
という方針にしてみた。 首尾は上々で、殆んど問題なく使えるのではないかと思う。 違う言語へ移動するのに、常に index.html.xx へ戻る、という格好悪さはあるが、それが必要になる場面は少ないに違いない、 と思う事にする。

Box Model と Multi-column

Major Navigation を水平に置いてしまうと、 どうやら、本文の幅が広くなりすぎるようだ。 なので、マストの下も multi-column にしたいのだが、 これがなかなか大変。

勿論、position: fixed や、position: absolute を用いれば、何だって可能なのだろうが、可搬性が無くなる。 特にブラウザ間の互換性については絶望的となるだろう。

Four Browsers on Windows 8
Win8 上のブラウザの div と img のレンダリング
(Firefox は、2段階 zoom-out してある)
従って、ここは当然(?)float で並べて行くべきなのだが、 いくつか問題が有った。

一つには、div や img のサイズと入れ子関係の問題。左図で見るように、 <div> とその中の<img>さらにその下の<nav>という簡単な「構造」が、 ブラウザによってこんなに違って表示される(Firefox に至っては、 zoom-in/out で言って 2 段階程大きく表示されていた。) この場合、<img>(Smithchart) が下に突き出ていると、 次の <div> の左端は、<img> の右側に接するように来る。

もう一つは、表示範囲を変化させた時に、思うような動きになってくれない事。 otacky.jp のごとく、absolute と fix で構成していると、 これに関しては(完全とは言えないが)まあまあ、まともな動きをしてくれる。 しかし、これを float で並べていると、思わぬ時に改行されてしまう、 なんて事が起きる。

上位のコンテナ(この場合は body)と、件のコンテナの max-width と min-width の値を工夫すれば、何とかなりそうなのだが、 また、実際 Firefox では何とかなったのだが、 これを他のブラウザで確認する元気が出て来ない——上の凄いバラツキを見て、 すっかり怖気付いてしまった:-p。

なので、これはしばらくお預けとする。

Favicon.ico

Box Model もブラウザ依存性が有って往生するが、 これもまた相当のものである。しかも、「一番やっかい」な子が、 Firefox だったりするので悲しい……。

OSX と Win8 の上の、Firefox, Safari, Chrome, IE8 (Win8 only), Opera (OSX only) (合計10種類)で、 確認してみたところ、共通してきちんと fabicon が表示されるためには、

favicon.ico
Preview で見た favicon.ico
これだけの事だが、きちんと確認するのは大変だった。 一つには、どうも favicon に対しては、html ファイルとは違った、caching policy が有るようで、何度 reload しても、favicon だけは変化しない、という事があった——特に Firefox。 (この場合、url ペインに、http://www.waremo.com/favicon.ico と明示的に指定して、何度か reload してやれば良いようだ。) 後は、ブラウザによって、上記の「標準的でないファイル」対応が異る事も、 混乱に輪をかけた。

埋め込みフォント

CSS3 の @font-face は Web font に関連して語られる事が多く、従ってまとまった情報も得られる(早い話が、 google.com へ行けば良い。)が、HTTP サーバからフォントを供給する、 となると、途端に「わけわか」になる。相当の試行錯誤の結果、上記の 8 種類のブラウザで「フォント埋め込み」がちゃんと働くようになるには、 .css ファイルに
@font-face {
    font-family: 'Waremo_Chancery';
    src: url('/fonts/Waremo_Chancery.woff') format("woff");
}
と書く事に尽きる。つまり、
  1. font-type としては woff だけが安全。
  2. このファイルタイプへの変換は、 www.font2web.com 等で可能。
  3. ファイル名(例えば 'Waremo_Chancery.woff')は任意で良いが、 ここで定義した 'Waremo_Chancery' が font-family 名となる。
これで、フォントに関しては完璧な互換性が得られた……と思っていたが、 Mountain Lion の Firefox だけは、Bold が太くなりすぎる。 また、Firefox かぁ……なんだか、もう試合を投げ出したのかな、 という感じがする。
2013-07-27 (Sat): Firefox を 19.0.2 から 22.0 にアップグレードしたら、この問題は解消した。

2013-07-15 (Mon): waremo.com 始動 (その 1)

「われも工房」設立は、固より SRD (Semi-Retired Dilettante) 生活を実現するために過ぎないが、それでも準備はなかなか大変。 その中の最も重要で難しい部分(シミュレーションツール整備等) が一向に進まない中、 とりあえず形だけでも整えて景気をつけよう、 という事で登記申請をしたのだったが、どうやら問題無く完了したようだ。

上記の懸案に比較したら、 Web site 他の IT 関連の整備なんぞは、楽勝に違いない…… と思ったのが大間違い、結構大変だった。 (やっぱり、漱石さんを読んで暮す方が楽だよなぁ、 なんてケシカラン思いも湧いてきたりして。)

H/W

当初かなり意欲的だった新会社の IT 環境の構想は、 その後当然のようにショボくなって来た。 GPGPU の性能改善の見通しの甘さ(FDTD では GPGPU を使っても 10 倍くらいしか早くならない) もさる事ながら、市民税がドンと来たのがもっと痛かった。

という事で、要は(HDD 2 台を除けば)ちっともお金は使っていない。 「元手を掛けずにできるところから」を地で行ってる……というか、 余儀無くされている。

メールシステム

waremo.com のドメインはもう DynDNS に登録(?)してあるので、 上記のようにインターネットサーバをそのまま使い続けるのであれば、 その Postfix にアカウントを作るだけなのだが、 このところのすったもんだで、少々嫌気が差してきていたので、 根本的な変更(の実験)を試みた。

考えてみれば、最近のトラブルは、その原因の半分は gmail.com のサーバが非常に picky な事に起因しているようだ。 (後の半分は、IEEE の forwarder の不具合。) 見事にスパムを弾いているが、その一方の面は 「なかなか受け取ってくれないメールサーバ」という事らしい。 ならば、その身内になれば、送れなくて困る、という事も減るのではないか、 等という甘い素人考えで、gmail.com のごやっかいになる事にした。

Google Apps for Businessの会員になるのは簡単だが、 独自ドメインのメールアドレスを実際に使えるようにするのは簡単とは言えない。 (そもそも「使えるのかどうか」さえなかなか分からなかったぞ……) 言ってしまえば、自分の Domain の MX record を操作できる環境とスキルが無ければ諦めた方が良い。 (運が良ければスキルの方は何とかなるかも。) とにかく、セッティングの中に、

  1. Google 指定の(暗号みたいな)文字列の TXT record を書き込んで、 Google さんに、その record(というか DNS そももの?) が有効である事を確認してもらい
  2. その後、それを消して幾つかの google 指定の mailserver で、その record を置き換える、
なんて事をやらされる。 幸い私の DynDNS さんは、これらが Web サイトから自由にできるので、 比較的すんなり終った——しかし、何と言っても DNS が相手だから時間はかかる。私の場合は殆んど半日かかった。

動き始めると後は順調。数日経ってもスパムが一通も届かないのは大したものだ。

imap.gmail.com への Wanderlust/Emacs からアクセスのアクセスも普通にできるようになった。勘所は、 .foldersの中で、account を

%inbox:"fukuda@waremo.com"/clear@imap.gmail.com:993!
と定義する時に、/clear の前を自分のメールアドレスにして、 さらにそれを dquote で囲む事だけ。(Mail.app などからでも問題なく imad.gmail.com にアクセスできた。)

しかし posting server を使う方は、ちっとも進展が無い。有償の Google Apps for Business の会員になったのだから、大手を振って訊けるぞぉ、等と思ったのは甘かった。 実際にお金を払うようならないと、オンラインの質問はできないんだそうな……


143/1,785,481 Valid CSS! Valid HTML 5.0
Taka Fukuda
Last modified: 2015-11-08 (Sun) 09:35:44 JST