Mac 30年の書きかけの記事とか、見出しのデザインの調整したいとか、色々あるのですが、

実験用にMacBook Pro (Retina, late 2013, Core i7 2.7G, 16G/512G) を入手したので、 今のメイン機であるMacBook Air 13"(Mid 2012, Core i7 2.0G 8G/256G) からマイグレーションアシスタントで移したのですが、 少々発見があったのでメモ書き程度に先出し。

ターゲットモードを使わない

Mavericks以降は、ターゲットモードを使わずに、移動元のMac側もマイグレーションアシスタントを立ち上げて実行します。 マイグレーションアシスタントを立ち上げると、他のアプリケーションを全部終了して、移行モードになった上で、 「他のMacへ移動する」オプションを選ぶ形です。

参考:

Thunderbolt で移行するには、ネットワークインターフェースが必要

上記のごとく、一旦システムが上がっている状態から実行するため、 そのときに使えるコネクティビティを用いて移動します。 このとき、Thunderboltを使う場合は、Thunderbolt ブリッジが無いと、通信確立できません。 新旧二台を繋いでいる状態で、ネットワーク設定から、ネットワークインターフェースを作成すると、 Thunderboltのブリッジ作成できます。

これのせいで、ソースを発見できなくて。小一時間悩みました。

なお、二台のMacの間で使えるコネクティビティを選ぶので、両方ネットワークに繋がっていて通信可能だと、その通信方式を使います。 したがって、両方がWiFiに繋がっていると、WiFi使って転送しようとしますから、注意必要。 その場合は、Thunderboltなり何なりで繋げたら?と出ます(つまり、最初それでやってしまった。。)

その他

SSD to SSDだし、CPUも早いからというのもあるとおもいますが、 250GBぐらいの利用(ファイル数400万ぐらい?)で、2.5時間ぐらいで移せました。 Thunderbolt はやくてイイですね。

その他気になったのは以下のような点。。

Xcode は、完全に削除はされない

コマンドラインツールと、一部だけ、再インストール必要でした

Homebrew ユーザは、/usr/local 以下のオーナ変更が必要

brew doctor しましょう。直すの面倒だけど、指示通りにやればOK。 これ簡単にやる方法あるのかな。。

ATOKがおかしくなるので再インストール

ATOK、入力できたり出来なくなったりしました。再インストールしたら直った。

ホームディレクトリ の symbolic link

どうも、シンボリックリンクの移動が、うまくないというか、セキュリティ上の懸念からか、うまくコピーされません。 たとえば、 .zshrc -> .rc/work/zsh/zshrc みたいなシンボリックリンクが、 .BC.xyzzy -> .rc/work/zsh/zshrc みたいにリネームされます。 最初何が起こったのかサッパリ分からなかった。 全部シンボリックリンク作り直して解決。 まだわかりませんが、ホームディレクトリだけに思えます.

プリンタドライバと設定

まえからそうだとおもいますが、入れ直しです。全部消えます。なんでコピーしないんだろと前から不思議。

Notification centerの設定がコピーされない

どうも、notification centerの設定が移ってないようです。 Twitterのメンションでのnotifyはオフにしてたのですが、出るようになった。。

それでもって、MacBook Pro Retina 15"は。。

そんでもって、MacBook Pro Retina、素晴らしいんですが、目が悪いのと、iPhoneみたいに 目を近づけて見るわけではないので、今のところ写真の表示以外で御利益を感じられません。 いざというときに画面広く使えるのは素敵だけど。

また、実験の関係で、重いのを覚悟でクアッドコアにしたのですが、もはや、デュアルコアで シングルスレッド性能高い奴という選択で良い気がしてきました。 試しにChromiumのビルドをしたら41分(Ninja)ぐらいとか、早いっちゃ早いんだけど、 多分、私の手元のマシンには、デュアルコアで充分。。サーバは別の話ですが。。。

SSD早いのは、ヤッパリ良くて、この分は差を感じる。 また、16GBメモリがあるのも良い。

というわけで、もし今後 13" Airの置き換えをするのであれば、13" Retina で良いかなという気分になりました。

このエントリは、TeX & LaTeX Advent Calendar 2013 の参加記事です。 前の記事は k16shikano さんの『Learn You The TeX for Great Good! 「第3章 マクロ初級講座」』、 次の記事は、neruko3114 さんの『私とTeX』です。


あらすじ (あるいは TL;DR)

私は、ここ8年ほど、OmniOutlinerというアウトラインプロセッサを使ってTeXで各種原稿を作成しています。 今日は、その背景と、今使ってるワークフローを説明してみようと思います。 ドキュメント保存するだけで、自動生成されたPDFのプレビューも更新されるようにできます。

TeX好き + アウトラインプロセッサ好き + OmniOutliner 好き、という組み合わせ故の、かなりオカシイワークフローですが、もしかすると誰かの役に立つかもしれません。

ごぶさたです。

スパム的な何かが非常に多くて、負荷が高くなりすぎる関係で、業務に支障がでるので、暫く止めていました。

MovableTypeを捨てるべく、ゆるゆると準備をしていたのですが、 Jekyllのエンコーディングサポートのパッチが1.3でようやく入り、 MovableTypeのコメントの移行も、エキスポート側コメントの書き出し、そして、 アーカイブの処理もこんなかたちでできたので、 よーやく、諸々整えて再開にこぎ着けました。 (ただ、アーカイブプラグインは、バグがいる。。)

もう、スタティックページだけだからスパム的な何かも恐くない。 ぼちぼち書いて行きたいと思います。

サイトデザインについては、次第にということで。。

ちまたでは、ブログ10年とか、イベント結構行われているようですねぇ。

最近さっぱり書いていないのですが、はやいもので、ここでツラツラと書き始 めて10年たったようです。最初のエントリからピッタリ10年です。まぁ、一番 最初は何も書いてないんだけど。

何書くか全然浮かばないので(笑)、まずは、過去10年、夏の頃に何書いてた か、拾ってみたのですが。。。

2003

2004

2005

このころは、もうLAに居るのでした。

2006

このころ、ThinkPadにディスク2個入れてRAIDでNetBSDで自宅サーバ運営して いたのですね。で、ディスクが壊れちゃったので、奥様にとあるところにもっ ていってもらって、とある人(いまは亡きTさん)にディスク交換をお願いしま した。

大和寿司、このころからいってるんだなぁ。

2007

この年、twitter始めてるんですよね。投稿が減る傾向に(笑)

2008

2009

2010

2011

2012

夏に投稿無し(笑)

いやー、こうしてみると、ホントに書かなくなっているのが明らかになっただけで、何も分からないですね。やっても無駄だったかも(汗)。

このブログは、Jekyllベースに移行しようとおもってます。spamフィルタがヘタクソなのせいもありまして。。Jekyllのコードが安定したらということで、多少パッチを提供しつつ、出来るようになったら、変更して、コメント機能もマシになる予定。そうなると、もう少し投稿増えると思うのですが、もうしばくかかりそうです。

ではでは

C++でコード書く仕事をしているわけですが、書き始めるとC++11の機能を使いたくなってきました。とくに、auto と for 文の新しいシンタックスと、lambda。

そんなわけで使い始めましたが、ちょっとだけ填まったので二点ほど。

1. C++11 の機能を使うにはオプション指定が必要

C++11のフィーチャを使うには、clang++ 使うにしろ、g++ を使うにしろ、

-std=c++11 -stdlib=libc++

このオプションを両方を指定しないと、C++11の機能は使えませんから、要注意です。CXXにでも突っ込むのが正解のようです。

2. MacOS X では、LLVM 3.3 を入れるより XCode4.3の方が良さそう

私の理解では、C++11のためには、LLVM 3.3 を使うか、GCC 4.7 を使えば無問題だと思っていたのですが、どうも、LLVM 3.3 はOS Xでは、まだ噛み合わせが悪いところがあるようで、注意が必要です。

他のOSでLLVM3.3を使う場合は、まだ試していないですが、少なくとも、Mac OS X で Homebrew 経由で LLVM 3.3 を入れているとはまります。XCodeの最新使うのが正解のようです。Homebrew 経由で GCC 4.7.3 入れた場合は平気だった。

パッケージマネージャに、うっかりインストールされちゃうことがあるので要注意です。たとえば、doxygen のインストールでlibclang使うように設定してインストールすると、Homebrew君は親切にLLVM 3.3を入れてくれるので、気がつくとclang++がこいつを向いていたりして。おかげで二日ほど悩みました。。。

ということで、C++な人は、C++11 使いましょ。昨今、cpprefjpなどという素晴らしいサイトもあるので、助かりますね。

ちなみに、C++ ポケットリファレンス はとても便利な本で、C++11 使う人は必携というぐらいオススメですが、残念ながら、この処理系毎のオプションの話が書いてないのでした。

遂にこの日が来てしまったという感じです。

The Shibuya Toyoko Line Terminal Station - Exterior

子供の頃は、子供のころ、祐天寺と学芸大学の間ぐらいにある幼稚園にいっていた、という感じで、東横線沿線育ちなので、今回はちょっとだけ特別な感じです。

小学校のころは、渋谷の児童会館に通っていたし、 最初のデートは渋谷の文化会館のプラネタリウムだったし(彼女どうしてるやら。。)、 高校時代は東横線使って通学していたし、ということで、成人するまでは、かなり沿線ベッタリでした。

そんなわけで、終点というか、ターミナル駅として、終了する(ターミナル。。)渋谷に、なんか、えらく郷愁を感じています (ターミナルって、Terminalだから終着駅の意味であって、乗り換えできる駅じゃないから!)。

Untitled

さらに、思い出してみると、

通っていた学習塾は、駅のちょっと北側。和風パスタの店の上だった。 東急東横店にできる前は、文具や製図の道具といえば東邦生命ビルの伊東屋に良くいってました。 Apple IIのレンタルをするのに、警察裏のコンピュータランドにも通った。 画材を買うのには、ウエマツだったし、 パーツを買いに藤商電子にも行ってた。 文化会館の三省堂を眺めて回るのは大好きだった。 劇場版のヤマトと未来少年コナンとは文化会館の映画館で初日に見た。 某社でバイトするのに、地下鉄代節約するのに歩いて行ったり。。

そんなわけで、強い郷愁を感じるのは、渋谷の東口側と、僕の青春時代が切っても切れないからかもしれません。

これから15年かけて渋谷駅は変貌してゆくらしいですが、楽しみなようで寂しくもあります。

さくらのVPSでの環境を、さすがにvirtio対応にしようということで、作業しました。

前回作業したときと比べると、ISOイメージをアップロードしてそこからブートできます。 そこで、くりやまさんがビルドして配っているvirtioドライバを、mfsbsdイメージに 組み込んで使う事にしました。昨今、FreeBSDはバイナリベースでの更新なので、更新に影響無いかたちで ソースツリーを使います。

以下、作成手順です。

  • Makefileを多少修正する必要があるので、このブランチをチェックアウトします。 (pull requestは出してみるつもり)
  • 自分の環境にあったvirtioドライバをここから拾ってきて、チェックアウトしたディレクト リの下の modules ディレクトリ下に展開します。
  • README-virtio.md にあるように、NKPTを増量したカーネルコンフィギュレーションを作ります。
  • あとは、make 時に USE_VIRTIO=1 KERNCONF=MFSBSD を追加指定してmakeすればOK。 BUILDWORLD=1等は、必要に応じて指定してください。

VPSで使う場合は、conf ディレクトリの下に、設定を適切に設定しておけば、ブートした段階で 外からログインできるようになるので大変便利です。ということで、使っているVPSの数だけ iso イメージを作って使うことにしました。

大変ご無沙汰でございます。

少々負荷に苦しめられていて、http 止めてしまっていたのですが、色々構成変更した結果、とりあえず、http についても復活させてみようと思います。

さくらのVPSで、FreeBSD 9.1 virtio使う形になりました。

複数ユーザが並行ログインするような環境の場合、セッションに紐付いたリクエストを追跡するのが結構難しいです。

で、Rails 3で導入されたlog_tagsには、Proc を渡せて、かつ、requestオブジェクト を渡してくれます。なので、ActiveRecord なセッションストアを使っている場合、クッキーとして、session_id が入っているため、log_tags を以下の形で設定しておくと、cookie_jarから拾い出して表示してくれます。

config.log_tags =
   [ lambda {|req| "#{req.cookie_jar["_session_id"]}" },
     :remote_ip, :uuid  ]

ググったものの、丁度良い答えがない上、リリースノートとか、不親切すぎて、この方法見付けるのが厄介だった。結局ソースを読まないとダメなんだよなぁ。

昨今、TeXは、日本語環境であっても、TeXlive 突っ込んで使うのが一番楽ちんです。

相変わらずTeX使ってます。論文書いているからというのもあるのだけど、以前からTeXには愛があるので。過去数年はMacPortsでビルドしたpTeXが、ほぼ安定していたのでそれを使っていました。たまーに、アップデートしそこねがあってビルドできなくて大変な目にあうこととかありましたが、ここ2年ぐらいは、かなり安定していたと思います。

で、今や、TeXliveに pTeXも dvipdfmx も入っているので、それを使うのが一番と思います。TUGが作ってるパッケージであるし、ソースからビルドは重たいですからね。Macの場合は、TeXliveのMac OS X用パッケージであるMacTeXを入れます。

CentOSとMacで使っていますが、快適に使えています。

注意点があるとすると、

  1. アップデートはしない。2011を入れたままで使うのが吉。アップデートすると、たとえば、CID フォントのマップファイルが壊れたりして、色々動かなくなる(たとえば、dvipdfmx が rml 見つけられない事故とか)。恐らく、正しく設定しなおせば動くと思うけど、2011を素のママ使うのがオススメです。7月には2012が出るので、それを待てば良い。僕の場合は、インストールしなおして対処した。

  2. CentOSで入れる場合、パッケージの選択を誤ると、日本語が正しく出なくなります。フルインストールするか、Medium scheme を選んだ上で、US/UK EnglishとCJKのlanguage schemeを選ぶと、問題ない感じです。

  3. Macの場合は、今のところデフォルト設定で突っ込んで使っています。今もやり直してみたけれど、大丈夫。

ということで、理由が無い限り、迷わずTeXlive使いましょう。

前に、さくらのVPSでFreeBSD ZFS rootで書いたように、最近、自分のサイトは、VPSでZFSで運用しています。

ZFSにしていたのは、バックアップと乗り換えの時に楽なことと、圧縮できること、などの運用上のメリットからです。

さて、先だって、さくらインターネットのVPSが、全体的にオトクになったのと、乗り換えキャンペーンやってるので、乗り換えました。まだ完了してないけど。

想定通り、乗り換えは、とても楽でした。前使っていたプランは、運用用のディスクで100G欲しかったので、メモリ4G、CPU 4コア、ディスク120G(100G+20G)のプランを選んでいました。新プランでは、2Gプランでメモリ2G、CPU 3コア、ディスク200Gです。月額利用料金も半額以下になるので、乗り換えない手はないぞ、ということで様子見をしていたら、乗り換えキャンペーンだというので、決断。

200Gが、単一なのか複数ディスクなのかが心配でしたが、結果的には200G一発だったので、メンテ用の10G+ZFSに186G、4G swapという構成をとることに。

前の構成では、一台目のディスクをUFSにし、二台目を全ZFS poolに割り当てていましたが、今回は一台なので、多少実験してから導入。

Installing FreeBSD Root on ZFS using FreeBSD-ZFS partition in a FreeBSD MBR Sliceに記載のように、FreeBSD MBRスライス一枚に入れるようにしました。gpart で見ると、こんな感じ。

% gpart show
=>       63  419430337  ada0  MBR  (200G)
         63   20971377     1  freebsd  (10G)
   20971440  398458935     2  freebsd  [active]  (190G)
  419430375         25        - free -  (12k)

=>       0  20971377  ada0s1  BSD  (10G)
         0  20971377       1  freebsd-ufs  (10G)

=>        0  398458935  ada0s2  BSD  (190G)
          0  390070272       1  freebsd-zfs  (186G)
  390070272    8388663       2  freebsd-swap  (4.0G)

=>       0  20971377  ufsid/ほげほげ  BSD  (10G)
         0  20971377                       1  freebsd-ufs  (10G)

手順としては、

  1. OS再インストールでFreeBSD 8.1-RELEASEを入れる。MBR、ブートセレクタを入れるのを忘れずに。
  2. 8.1-RELEASE -> 8.2-RELEASEへアップデート
  3. 8.2-RELEASE -> 9.0-RELEASEへアップデート(なぜか、8.1=>9.0とやると、うまくいかなかったから)
  4. 困らない程度に、ホドホドにportsを設定する。ログイン作業環境を作る
  5. ZFS pool 作る (仮にrpoolと呼びます)。
  6. 先の手順 の手順に従って、ブート可能な状態を作り、テスト
  7. テスト終わったら、作ったファイルシステムをdestroy。
  8. 元ファイルシステムのスナップショットをとる
  9. zfs create rpool/backup したのち、そこに ssh zfs send -R 等を使い、スナップショットまでの、ストリームを持ってくる
  10. zfs recv rpool/root < ストリーム
  11. zpool export rpool; zfs import rpool したのち、zfs.cacheをコピー(重要)
  12. zpool set rootfs=rpool/root する
  13. ブート確認できたら、念のため、scrub実行後に起動できるか確認
  14. swapを設定。swap食うまでメモリを使ってみたあと、再度scrub実行(オーバラップはないはずだけど)

といった手順です。コピーの類の所要時間は、ファイルシステムが70G使われている状態で、bzip2 して送る前提で、

  • zfs send/recv: 8:47:05.69
  • レストア: 3:28:58.15
  • ストリームのサイズ: 35.7G (bzip2圧縮後)

でした。システムは、IPアドレスとホスト名が変更になっているので、移行後に変更したのは、

  • /etc/rc.conf: IPアドレス等とホスト名
  • postfix で決めうちしているホスト名
  • /etc/fstab の swap 設定
  • name serverの設定
  • ssh のホスト鍵の変更
  • バックアップ周りの設定変更

このホストについては、これだけです。無論、DNSの設定もあるんですが、まだ移設していない。あとは、何もせずに終了。元の環境の、rootも含めて全てが移動できるので、超楽ちん。この点ではZFSは、とってもイイです。

唯一ちょっとはまったのは、saslauth にドメイン名が含まれるのですが、これにホスト名が含まれてしまっていたので、最初認証通らなくて焦りました。

その他、Tipsとか留意点としては、

  1. 楽に運用するには、ZFS pool の根元(上の例ではrpool)を rootfs にしない。僕の場合は rpool/root にしました。メリットは、snapshotを取りやすい、レストアするときに、rpool/restore などというパーティション等を作りやすい、swap を root と分けられる (swap の zfs snapshotとると悲惨)など、いろいろ。

  2. 正式契約するまで、2Mbps 制限、OP25制限があるので、注意。さくらの内部では制限はかかっていない模様(そうでないと、zfs send/recv は8時間で終わらない。。)

こんな感じでした。

で、さくらのVPSの新システム、tweetもしたんですが、まぁ、fake されてるとしても、

旧:

CPU: Intel(R) Core(TM)2 Duo CPU     T7700  @ 2.40GHz (2133.41-MHz K8-class CPU)
  Origin = "GenuineIntel"  Id = 0x6fb  Family = 6  Model = f  Stepping = 11
  Features=0x783fbfd<FPU,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE,SSE2>
  Features2=0x80000201<SSE3,SSSE3,HV>
  AMD Features=0x20100800<SYSCALL,NX,LM>
  AMD Features2=0x1<LAHF>

新:

CPU: Intel(R) Xeon(R) CPU           E5645 (2400.13-MHz K8-class CPU)
  Origin = "GenuineIntel"  Id = 0x206c1  Family = 6  Model = 2c  Stepping = 1
  Features=0x178bf3fd<FPU,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT>
  Features2=0x82b82201<SSE3,SSSE3,CX16,SSE4.1,SSE4.2,x2APIC,POPCNT,AESNI,HV>
  AMD Features=0x20100800<SYSCALL,NX,LM>
  TSC: P-state invariant

という感じで見えてます。ま、fakeしてるかもしれませんが、体感的には、T7700とE5645の差みないなものは感じます(キャッシュの効き具合)

あとは、ノートラブルで動くことを祈る感じで。

追記 (2012/4/30)

都合で、別に一つ新規にたてるのに、セットアップのためのスクリプトを書いたので、置いときます。面倒くさいから。。

pool ができた後のfile systemセットアップ:

400: Invalid request

マウントポイントの設定:

400: Invalid request

既に Rails 3.2.2 が出ていますが、バージョンアップしたときに、Asset Pipeline関係の設定が正しくなくて、えらくはまったので、メモ書きしておきます。Sass 使うようになるまで気づいていなかった。。

3.1 へのバージョンアップ(3.2でも同様だけど、ここでのポイントは3.1) は、3.1のリリースノート には書いてなくて、リリースノートが参照している先のRailsGuidesのAsset Pipeineの説明に、こそっと書いてあります。これ、はまってる人結構居るんじゃないのか。。

以下のコードを、config/application.rb の頭に入れておく必要があります。

if defined?(Bundler)
  # If you precompile assets before deploying to production, use this line
  Bundler.require *Rails.groups(:assets => %w(development test))
end

これが入ってないと、development, test の場合ですが、Sassのように変換後にキャッシュを作るようなケースで、ソースが変換されても、キャッシュの値が変換されず、ソースいじっても、ちっとも結果が反映されません。凄く悩んでしまいました。

まぁ、新しいバージョン出たら、rails new して diff とってみるとか、しないとダメですね。こういうのに気が回らないのは、年を食ったって事だなぁ。。

あけましておめでとうございます。本年もよろしくお願いします。

2011年は忙しすぎて、ロクな写真がなかったので、数年前に飛行機からとった写真を。

Mt Fuji

今年は穏やかな年になるといいなと思ってます。

年末というか、最後の3ヶ月は、例の書き物の執筆に忙殺されておりました。もうちょっとかなぁ。

ただ、なんだかしらないですが、その三ヶ月の間に、前歯が2本折れる(1本づつ。1ヶ月おき)とか、どうも集中力を欠かざる得ないトラブルが連続していて、そういうのがしんどい感じでした。歯は1本は入ったけど、もう一本は年越ししてしまいました。年末〜年明けは、自宅ファイルサーバが壊れるのと、ディスプレイが壊れるのとということで、ちょっとトラブル続きです。十分用心したいと思います。

ともあれ、集中して、いろいろ、やっつけて行きたいと思います。