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

The Shibuya Toyoko Line Terminal Station - Exterior

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

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

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

Untitled

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

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

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

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

さくらのVPS上に、mfsbsdのイメージを使ってvirtio ベースの環境をスクラッチで作りました。 作った後に、移設元の環境からzfs sendで流し込んで丸ごと環境を移設しました。

さくらの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 イメージを作って使うことにしました。

サーバ移設(済)

| No Comments | No TrackBacks

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

少々負荷に苦しめられていて、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が、全体的にオトクになったのと、乗り換えキャンペーンやってるので、乗り換えました。まだ完了してないけど。

既に 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 とってみるとか、しないとダメですね。こういうのに気が回らないのは、年を食ったって事だなぁ。。

[メモ] そのまんまだと填まります。現時点だと、下記の方法でうまく行きます。

(トップにあると、gist のせいで開くのが遅いので、別ページによけました)

こっちに書いてなかったので一応。。

LAに行くぞということになってから7年。。ようやく、アップグレード(謎)が一段落したので、お知らせ致します。

ぼちぼち、いろいろやってゆきたいと思います。

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

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

Mt Fuji

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

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

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

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

ときどき、PDFのテキスト的な差分を取りたくなることがあります。Acrobat の機能に比較があるので、これを使うことも可能ですが、遅いし、不要な差分が出たりして面倒くさいです。

我慢して使ってたんですが、探してみたら、pdftotext使ってFileMerge(コマンドラインからはopendiff)するのがサイコーだというので、試してみたら確かにサイコーだった。

opendiffは名前のごとく昔からあるものですが、差分取る前にフィルタを適用する機能があるので、これを使います。 MacWorldの記事ここを参考にしました。

やることは、大きく2つ。pdftotext をインストールして日本語を扱えるように設定することと、シェルスクリプトを一つ書いてFileMergeで設定することです。

まず、pdftotextですが、MacPorts でpopplerとxpdfを入れるという手もあるのですが(上記は、その手順を書いてあった)、gtkとか使っていて、パッケージの依存がとても深いので、オススメしません。同記事に、バイナリのありかがかいてあったので、それを用いました。このディレクトリの xdf-tools-3.dmg をもってきて、中にあるパッケージをインストールします。

さらに、日本語エンコーディングファイルが必要なので、ここからxpdf-japanese.tar.gzをダウンロードしてきます。以下の手順。ルートかルート相当で操作:

mkdir -p /usr/local/share/xpdf
cd /usr/local/share/xpdf
tar zxf ~/Downloads/xpdf-japanese.tar.gz     # パスは適当に変更
mv xpdf-japanese japanese

最後に、xpdfrc をに設定を追加。上書きしないように注意。

cat japanese/add-to-xpdfrc >> /usr/local/etc/xpdfrc

ここまでで、pdftotext で日本語が通るようになるので、以下のようなシェルスクリプトを用意します。

#!/bin/sh
pdftotext -layout -nopgbrk -enc UTF-8 "$1" -

適当に名前をつけて、適当な場所において、chmod +x しておきます。

最後に、FileMergeを立ち上げて、Preferenceから、Filterを選びます。Filterの設定で、+を押し、

extension へ pdf 、filter へ"pdftotextへのパス $(FILE)" と設定して閉じます。

これで、pdf で diff できます。

ただし、エンコーディングの関係で、"File not ascii" と警告されてしまい "Proceed" 押さないといけないという問題点があります。この記事にあったように、エンコーディング強制してみるとかしてみたんだけど、旨くいきません。だれか上手い方法おしえてください.

iTunes Matchの事とか、ストリーミングに関しての話もあって、もっぱら音楽周りの話が注目されがちですが、 僕は、iCloud の本質は、同期不整合解決にあると思っています。

Lionのリリースノートである、What's New in Mac OS X Lion というデベロッパ向けの文書があります。 これの一番最初に書かれているのは、iCloud Storage APIの説明です。 一番最初に書いてあるぐらいなので、Appleが一番大事だと思っているフィーチャはiCloud Storage APIだと言うこともできるでしょう。

それで、iCloud Storage APIでできるのは、簡単にいうと、

  • Dropboxに類した情報同期を
  • アプリケーション毎のSandboxの中で、
  • アプリケーション毎に同期不整合の解決できる仕掛け

を実現してるところです。 (これに加えて、Key-Value storeもありますが、これについては、今回は置いておきます。)

これのどこにインパクトがあるかというと、同期の不整合解決です。

Dropbox含めて、いろいろな形で「ファイルの同期」する仕掛けは提供されているし、先に、VMwareもProject Octopusを発表したぐらいで、ファイル同期が情報共有のための仕掛けとして重要なのは、誰もが知っているところです。

しかし、分散している端末それぞれでコピーをもっている以上、様々な理由で同期は失敗します。実際、Dropboxで同期が失敗すると、タイムスタンプ入りのファイルができてしまいます。これらのファイルの間の不整合を解決するのは、簡単にできる場合もありますが、 うっかり二箇所でExcelファイルをいじっていたりすると、目に手も当てられない状況になりますよね。 さらに、複数のファイルから構成される情報等の場合、ファイル同期にトランザクションみたいな概念もないわけですから、大変なことになります。

iCloud Storage APIの場合、同期の不整合解決をアプリケーション側でコントロールできるようになっています。ファイル、という、一種の「バイナリデータ」ではなく、 意味を持った情報として中身を統合することができるのは、そのファイルを読み書きできるアプリケーションだけなわけですから、自然な方法と言えると思います。

これができると、 ユーザは、自分の作ったファイルであれば、全く同期を意識せず、 ファイルは手元にあるのに関わらず、端末間で完全に共有され、ストレージが見えなくなると思います。 さらに、履歴もTimeMachineで保存されますから、遡ることも可能。 これがAppleの狙いだと思います。 iPadもそうだったという人もいますが、Appleやろうとしているコンセプトの一つは「見えなくすること」だとも思ってます。

一方、モバイルデバイスとクラウドの間での情報同期が容易であるということのインパクトは他にもあります。 昨今いわれている回線品質とかの関係でいうと、どうしてもラストホップの太さは期待出来ないわけで、 なんでもかんでもクラウドにおいてブラウザで叩くというのは、通信帯域が確保できていれば快適ですが、 そうでない場合は厳しいわけです。そんなこともあいまって、ここいらの技術が今後重要になるんじゃないでしょうか。

アプリケーションの対応ということでは、少なくとも、OmniOutliner 等で有名な Omni Group1Password の AgileBitsは間違い無く対応してくるでしょう。1Passwordは3.9がAppStore向けにでたところですが、4.0を開発中ということで、iCloudがリリースされたら、4.0が出で来るのではないかと。

蛇足ですが、個人的には、Documentあるいはファイルやフォルダという抽象化がベストかどうか前から疑問持っていて、 もっと良い形はとれないものかと、常日頃考えています。そんなわけで、この動きは注目しています。

Rails 3.1 が出たので、昨今作っているアプリをマイグレーションしてみました。

まず、3.1 のコードベースで bundle して、rspec走らせると、jQuery-UI 使ってる部分のコードが動作しないせいで、integration test (Capybara-Webkit使ってる)が通らないところが数カ所出ました。

原因は、jQuery関係の .jsなファイルを publicから見付けてくれなかったから。バックワードコンパチビリティ的に多少問題ある部分がありそうな予感だけど、追求は面倒くさそう。ちなみに、development環境で実行しても、何も出ないので、何が起こってるかさっぱり分かりません(笑)。

そんなわけで、正当に、Asset Pipeline 使うように変更したら動くようになりました。Rails 3.0 向けに書かれたコードで Asset Pipeline使うためには、下記三点の修正が必要のようです。

  1. config/ の下を直す

Ruby on Rails Guide: Asset Pipeline の一番最後にこそっと書いてある修正が必要です。

  1. 適宜 public の下のイメージ、JavaScript、 スタイルシートを app/assets の下などに移します。

  2. 場合によると、上記アセットを参照しているパスの修正が必要(私の場合は image/ほげ と書いてあった部分で、一部、image/ を削らないとダメなのがあった)

これで、なんでもかんでも public にあるという状態から解放されるので、少しコードのコンポーネント化をすすめられそうです。

Lion、段々慣れてきました。スクロール方向にさえ。

特に評判がわるいのは、Mission Controlの操作性が違うことと、Trackpadの縦スクロールの件のようですね。 少し慣れてきたので、思うところを書いてみます。

Trackpadの操作

まず、スクロール方向の操作は、元々Scroll Barの操作の方向と画面の動く方向が逆だったのに、みんなスクロールバーの操作に慣れているというのがネック。

で、どうも、トラックパッドを活かした操作を持ち込もうとすると、どうしても、これが足かせになるんですね。たとえば、Safariは二本指左右で、Forward/Backwardボタンの操作がそのままできるだけでなく、前、後のウィンドウの中身を覗き見られるような操作になってるけど(これは、超、便利。大変直感的)、これが逆向きだと、直感的じゃない感じ。

これ、つまり、中身の動きに指の動きを合致させたかったのが変更の理由だと思うのですね。なので、諦めて慣れることにしました。で、二日もさわってると、だいたい慣れます。そんなにハードル高くない。

ただ、インターフェースの練りに一部問題があります。気がついていることを書くと、

  • スクロールバーが見えないから位置がわからないこと
  • アプリの設定によるけれど、一番上か一番下でスクロールしない方向に操作したときに、スクロールバーさえ出ないことがあって、何が起こったのか分からない。
  • 一番上に戻りたいときに、iPhoneみたいにダブルタップで戻れないこと
  • タッチ操作中に中途半端に指がはなれたりついたりすると、予期しないことが起こる。iPhone/iPadはタッチスクリーンだったから問題が少なかったように思うのですが、トラックパッドだと色々と問題がありそうな感じ。

ここいらの作り込みは、まだまだな感じ。改善されるといいな。。

Mission Control

Mission ControlはSpaces+Exposeと操作性ががらりと変わったので、前と同じであることを期待していた人は、超絶がっかりしているようです。気持ちは分かる。特に、全ウィンドウを出す操作が無くなったのは確かにちょっと悲しい。

ただ、実は、頭切り替えて、使い方をあわせてやると、あきらかに使いやすい部分があります。気がついたのは、

  • フルスクリーンモードで使うには相性が良い(フルスクリーンモードはスペースが一つ作られます)
  • ホットコーナに頼らず、トラックパッド操作に慣れる。横3本指スワイプで切換は、慣れると、操作しやすい。トラックパッド操作しないなら、多分操作性的には大損
  • デスクトップは固定してウィンドウを割り当てておいて使うより、ドンドン作って使うのがよさそう(作る操作は簡単)
  • Preference で、「最新の使用状況に基づきて操作スペースを自動的に並べ替える」のは、Control-数字で切り替えていた人には、かなり鬼門(これは、オフにしました。。)

といったあたりでしょうか。

結構住めば都な気がしてきています。

フルスクリーンモード

前は嫌いだったんですけど、実は、単一の仕事にフォーカスできて、Dockとかで表示されるノイズに邪魔されないから有効という気がして来ました。Mind Mappingとか図書く作業なんかは、とっても向いてる気がします。

で、フルスクリーンモードがスペース一つに割当たることから、左右3本指スワイプで切り替えられるし、必要ならControl+数字でも、Cmd-Tabでも、Dockクリックでも切り替わるので、思っていたより困らない感じ。

ともあれ、ポイントは、今までの使い方をかえないといけないということで、ハードル高いと思う人は多いと思うけど、切り替えられればいいんじゃないかと。僕は割と幸せになれそうだと思いました。

とくに、トラックパッド操作が非常に快適。まぁ、デスクトップもクラムシェル環境も全部トラックパッドに統一したおかげってのもありますけどね。

少し我慢して使ってみるのもオススメです。

OS X Lion、早速入れてみました。

それで、神奈川方面オフィスの環境では気づかなかったのですが、Xerox C3050 で、印刷ができなくなりました。

原因は、/usr/bin/python が 2.6 から 2.7 にあがったせいでした。 Xerox のドライバは .pyc で提供されているため、/usr/bin/python2.6 に食わせればOKということになります。

対処は簡単。/Library/Printers/FujiXerox/Filter/fxnpdftopdf.bundle/Contents/MacOS にある fxnpdftopdf というスクリプトで、python 2.6 を使うようにすれば良いだけです。以下のような感じ。

2052% diff -c fxnpdftopdf.FCS
*** fxnpdftopdf.FCS Wed Oct 27 12:54:26 2010
--- fxnpdftopdf Thu Jul 21 08:40:12 2011
***************
*** 12,17 ****
  fi

  PARDIR=${0%/*}
! /usr/bin/python "$PARDIR/driver.pyc" "$1" "$2" "$3" "$4" "$5" "$LASTARG"

  exit $?
--- 12,17 ----
  fi

  PARDIR=${0%/*}
! /usr/bin/python2.6 "$PARDIR/driver.pyc" "$1" "$2" "$3" "$4" "$5" "$LASTARG"

  exit $?

March 2013

Sun Mon Tue Wed Thu Fri Sat
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

Categories

Pages

OpenID accepted here Learn more about OpenID
Powered by Movable Type 5.14-ja

About this blog

某IT系(学術+実業)な人のブログです。

味は保証しませんが、たまに役にたつことを書いてるかもしれません。

Twitter: @shigeyas

Recent Comments

Monthly Archives