2014-01-29

git-encwrapper再び

git-encwrapper のバグを修正しました。

git-encwrapper は、gitのencoding属性(.gitattributesで指定)を活用してgit diffの出力の文字コードを統一したり、git applyの入力の文字コードを統一されたものから元に戻したりするgitラッパーです。

ところがCygwinを64bit版にしたときになぜかgit-encwrapperが動かなくなってしまいました。
原因を突き止めるのが面倒だったので、elisp側でなんとかするコードを書きました。

今日 magit.el を開発最新版へ更新したら、案の定上のelispは使えなくなってしまいました。
magit.elの中をざっと見てみたのですが、プロセスを呼び出すところ(つまり、フックすべきところ)が沢山あり、
修正は大変そうでした。

なので、再びgit-encwrapperを復活させることにしました。

調査した結果、次の二つの問題が見つかりました。

  • -cオプションを使っているとgitコマンド名を誤認識する不具合
  • NULLポインタの判定ミス

前者は「git -c diff.submodule=short diff」のようなコマンドラインへの対応です。
ハイフンで始まらない一番最初のコマンドライン引数をコマンド名として扱っていたので、
「diff」ではなく「diff.submodule=short」がコマンド名だと認識されていました。

後者は単純なミスで、if(p)と書くべきところをif(*p)と書いていたというものです。
おそらくこれによって動いたり動かなかったりしていた模様です。

これらを修正したところ、おおむね正常に動いているようです。

2014-01-27

2014-01冬の新番組

ようやく新番組一通り見終わりました。

今のところ一押しは「世界征服~謀略のズヴィズダー~」でしょうか。

2014-01-16

ノートPC吟味

今新しいノートPCを買うとしたら何が良いかなぁと最近考えてます。

十分な性能を持ち、出来るだけ軽量、画面は小さすぎず、キーボードがまとも、出来ればタッチパネルは欲しいなと。

製品名 価格 画面サイズ CPU 外部記憶 重量 備考
Surface Pro 2 99800+12100円 10.6" Core i5 4200U/1.6GHz 128GB 907g+216g タイプカバー2込み
Lavie Z(LZ650/NS) 122267円 13.3" Core i5 4200U/1.6GHz 128GB 945g  
Let's note AX3(CF-AX3SEGJR) 21万円程度? 11.6" Core i5 4200U/1.6GHz 128GB 1140g  
Let's note MX3(CF-MX3SEBJR) 20万円前後 12.5" Core i5 4200U/1.6GHz 128GB 1198g  
Let's note MX3(CF-MX3TEABR) 27万円前後 12.5" Core i7 4500U/1.8GHz 256GB 1198g  

条件に合うのはこの辺りでしょうか。もう数百グラム重量を増やして良いなら選択肢はグッと広がりそうですが。

値段と財布と使用頻度と今持っているノートPCとを考慮すると、もう少し先でも良いかなぁと思います。

2014-01-03

書籍の取り込みと整理

年末年始の休みを利用して書籍の電子化、いわゆる自炊を少しずつ進めています。
まとまった時間が無いとなかなか手をつける気にならなかったのです。
それでも一日に10~16冊程度、2~3時間でできる程度にしています。
一気に取り込もうとすると疲れるので。

本を取り込むには、次のステップが必要です。

  1. 本の選定。
  2. 裁断(裁断機による本体の裁断、カッターによるカバーの裁断はスキャン直前に行うことが多い)。
  3. スキャン(ScanSnapによるスキャン設定の調整と取り込み)。
  4. PDFファイルの加工(ページの結合や回転、ファイル名の設定、閉じ方向の設定)。
  5. 文字認識。
  6. 分類。
  7. バックアップPCへの転送。

これらを一冊ずつやるのではなく、ある程度まとまった冊数ごとにやることにしています。
つまり、次のような流れになります。

  1. 取り込む本を30冊くらい床に積む。
  2. 選んだ本を裁断機で裁断する。裁断機は重くて取扱が面倒なので、スキャンと平行して行わず、まとめて行うようにした。
  3. 適当な冊数(15冊くらい)まとめてスキャンする。カッターでカバーを切り、スキャンし、PDFを加工する。
  4. スキャンした本を文字認識(検索可能なPDFに)する。一冊スキャンする毎に文字認識すると、微妙な予測できない待ち時間が発生するので、後で一括で行うようにした。
  5. スキャンした本を分類する。フォルダ分けする。分類が直感的に分かるものはそうする。分からないものは日本十進分類法(NDC)で分ける。
  6. スキャンした本をバックアップPCへ転送する。
  7. 裁断した本が残っているなら3へ。
  8. 裁断した本が無くなったら1へ。

疲れたらどの段階で中断してもOKです。

最近ようやくライブラリが充実してきて、電子化の意味が出てきつつあります。
これまで、どうでも良い本から取り込んでいく方針で進めてきました。
そうするとせっかく苦労して取り込んでも、そのデータにアクセスすることはほとんど無いわけです。
何のためにスキャンしているんだろうと疑問に思うこともしばしばありました(部屋が片付くくらいの意味はあるのですが)。
最近は読まずに放置されている本(いわゆる積ん読)も少しずつ取り込んでいます。
電子化することで読むきっかけになればという期待を込めつつ、読まれなくても損は無いとの考えです。

2013-12-22 ,

ローソンのマチカフェを試飲

ローソンのマチカフェのコーヒーを試飲したのですが、思ったよりも美味しいですね。

ローソンで冷蔵カップコーヒーを手に取ったとき、
近くにいた店員(顔を覚えられていて良く話しかけてくるおばさん)が
マチカフェの試飲をやっているので飲みませんかと言ってきたので、
せっかくなのでいただくことにしました。

最近どこのコンビニでもコーヒーを売り出していることは知っていましたが、実際に飲んだことはありませんでした。
店の前で飲むのは落ち着きませんし、持ち帰るのも面倒だなと思っていましたので。

ポンタカードを持っていれば30円引き、容器を持参すれば10円引きだそうです。

保温性のあるボトルを持って行けば、持ち帰るのもそれほど苦では無いかもしれませんね。
洗うのは面倒くさいですけど。

他のコンビニのコーヒーも試してみようかなと思いました。

2013-12-21

Google Mapsの埋め込み機能と深大寺そば

単純に地図を埋め込みたいだけなら、埋め込み機能でも出来るのでした。もちろんJavaScriptで色々出来るわけではありませんが。

地図は神代植物公園の南側で「そば」を検索した結果。いわゆる深大寺そばです。何回か同僚と自転車で行ってます。

今のところ私たちの中で一番評価が高かったのは「湧水」でしょうか。

今週久しぶりに行く予定だったのですが、雨で流れてしまいました。

2013-12-20 , , ,

Blog(org-mode)にGoogle Mapsを埋め込むテスト

BlogにGoogle Mapsを埋め込むテスト。


普通にorg文書に#+BEGIN_HTMLから#+END_HTMLを書いて、その中にscriptを書いてみる。

#+BEGIN_HTML
<script src="http://maps.google.com/maps/api/js?sensor=true">
</script>
<script>
var div = document.createElement("div");
div.style.width = "100%";
div.style.height = "400px";
div.style.border = "solid";
var currscr = (function(n){return n.nodeName.toLowerCase() != "script" ? arguments.callee(n.lastChild) : n;})(document);
currscr.parentNode.insertBefore(div, currscr);

var mapOptions = {
zoom:10,
center: new google.maps.LatLng(35.0, 139.0),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(div, mapOptions);
</script>
#+END_HTML

これを複数投稿すると <script src="http://maps.google.com/maps/api/js?sensor=true"> の部分が複数実行されてどうなるのか不明。