anything-browse-kill-ring と session.el
まとめ
- Anything と session.el を一緒に使うなら, 以下を .emacs に追加すること.
(setq session-save-print-spec '(t nil nil))
経緯
anything-show-kill-ring が以下のエラーを返し, 使えない状態となってしまいました.
void-variable \.\.\.
で
いろいろ調べてると helm-show-kill-ring: void-variable ... に行き当たりました.
どうやら session.el と組み合わせるていたため, 起きた問題のようです.
このスレッドにもあるように session-save-print-spec へ上掲のような値を束縛したところ anything-show-kill-ring が使えるようになりました.
おまけ
変数 session-save-print-spec とは何なのか.
少しだけ深入りしてみました.
まず M-x describe-variable session-save-print-spec すると以下のように返ってきます.
session-save-print-spec is a variable defined in `session.el'. Its value is (t 2 1024) Documentation: *Print specification for the values of global variables to save. The value looks like (CIRCLE LEVEL LENGTH) and is used to bind variables `print-circle', `print-circle' and `print-circle' when evaluating `session-save-session'.
...ん. これは Documentation が間違ってる感じですね.
関数 session-save-insert-variable を見てみましょう. 以下のような個所が見付かります.
(let ((print-circle (car session-save-print-spec)) ;#dynamic (print-level (cadr session-save-print-spec)) ;#dynamic (print-length (caddr session-save-print-spec)) ;#dynamic
ということで CIRCLE は print-circle, LEVEL は print-level, LENGTH は print-length に束縛して使っているようです.
各変数の値は以下のような意味を持っているとのことです.
- print-circle
- 末尾が先頭と繋がった構造をどのように print するか
- print-level
- 入れ子になったリストやベクタをどこまで print するか
- print-length
(詳細は Variables Affecting Output 等でご確認ください.)
session-save-print-spec のデフォルト値は (t 2 1024) でしたので, 以下と等価といって良いでしょう.
(setq print-circle t print-level 2 print-length 1024)
print-level が 2 ですので, 2 より多い要素を持ったリストやベクタの場合, 後続要素が ... と表現されてしまいます.
print-length も同様です.
(print-circle は上記 2 つとは異なりますが, 普段の生活にはあまり現れないでしょうから割愛します)
これにより, session.el が変数の値をファイルに書き出す際に ... が含まれてしまいます.
session.el は session-initialize 時に session-save-file を load しているだけのようです. 従って束縛される値も ... が含まれたものとなります.
... は通常, 変数名として使われていませんので, これを評価すると (void-variable ...) となります.
これらは print-level, print-length の値を増やしてあげることで回避できます. またこれらの変数には nil を束縛することで限界値を設けないという設定も可能です.
したがって以下のように束縛すると, 今回の問題を回避できることがわかります.
(setq session-save-print-spec '(t nil nil))
...あれ
おかしいな, 長めに kill した文字列が session に保存されなくなったような...
宿題にします... :(
"Unable to complete backup. An error occurred while copying files to the backup volume."
まとめ
- Time Machine にこんなこと言われたら system.log を見る こと
- 引っ掛かってるところがわかるかも
経緯
まあ Time Machine の Back Up Now をする度に, 題にあるようなことを言われてしまっていたわけです.
困るなー, と思いつつも Restart, then try the backup once again. なんて書いてあったので気長に試してたのです.
でも何度も何度も同じ事言われるので, 流石に何か間違ってるんじゃないかと思い調べたのですね. (ちなみに fsck しても特に異常は検出されませんでした. )
で
/var/log/system.log を見てみたらそこにこんなのが吐かれてるじゃないですか.
Sep 29 02:20:12 machine_name com.apple.backupd[71922]: Error: (-36) SrcErr:NO Copying /Users/username/path/to/file to /Volumes/Time Machine/Backups.backupdb/machine_name/2012-09-26-114039.inProgress/MAY_BE_UUID/Macintosh HD/Users/user_name/path/to
これ Git のリポジトリで, しかも手許の変更は全部リモートに push してあったので失われても全く問題のないものだったのですね
Time Machine 内の同ディレクトリのバックアップをざっくり削除してから Back Up Now したところ, 無事に成功しましたとさ
おまけ
Mac Time Machineからバックアップを削除する方法
大変助かりました.
Terminal.app から切り換えた時のフォーカス
Terminal から他のアプリケーションに切り換えたのに、直後のキー入力を Terminal に拾われてしまうことがある場合は
defaults delete com.apple.Terminal FocusFollowsMouse
してみること。
経緯
どうやら自分は昔、慣れ親しんだ X11 の環境に似せるために以下を実行したらしい。
defaults write com.apple.Terminal FocusFollowsMouse -boolean true
これによって、マウスカーソルが乗っただけで Terminal にフォーカスが移る(キー入力を受け付ける)ようになる。
それをすっかり忘れて
ここ数ヶ月、Terminal から Chrome に切り換えて ⌘ + K しても、 Terminal のタブが増える、なんてことが頻発するので悩んでいた。
そしてそれは Mountain Lion に乗り換えても症状が収まらなかったのだった。
全画面の Terminal と Chrome で快適 web developing なはずが、 Terminal のタブばかり増えて不快で仕方がない。
考察
OS を変えても起きたからには、 ~ 以下(((秘伝のタレのように引き継いでいる))に問題があるのだろうとアタリを付けて検索。
上記に行き当たった次第。
Chrome で日時表示が UTC 起点になる
はじめは メッセージの時間表示が正しくありません - Gmail ヘルプ かと思ったのですが、他の端末の Chrome から Gmail を開いても JST なので違うようです。
で、ある日 Cygwin mintty から起動した時だけそうなるのが分かりました。
LC_* のどれかを見てくれてるのかなー。
ソフトウェアの起動はだいたいこんな感じでやっていて、 C-r chr
$ screen 19 $USERPROFILE/Local/Google/Chrome/Application/chrome
まあ一度起動したらそうそう終了させないんですが。
ffmpeg で m4v の一部分を切り出す
$ ffmpeg -ss 00:00:05 -t 2102.0 -i /path/to/file.m4v -acodec copy -vcodec copy /path/to/output.m4v
- -ss 開始点
- -t 開始点から何秒分を出力するか
とある講演の映像が、本編と質疑応答が 1 トラックで収録されていたため、上記の方法で分割した。
ちなみに -ss は冒頭の拍手が長かったのでそれを削るためのもの。
ところで当初 homebrew で入れた ffmpeg (0.6.2) で試したところ、音声と映像がずれてしまい大変残念な思いをしたが
$ brew install --HEAD ffmpeg
として、ffmpeg の HEAD(現時点では git-707e861)を使用したところ、ずれのない m4v が得られた。
開発者のみなさまに感謝。
rvm install 時に clang を要求されたら
twitter でそのような方をお見掛けしたので調べてみた。
環境変数 $rvm_clang_flag のチェックがおかしかった模様。RVM 自体を更新すると起きなくなる。
History for scripts/manage - wayneeseguin/rvm · GitHub
こちらもしばしば手を入れてらっしゃるようだ。
Dropbox の更新を知る
Dropbox - Release notes - Simplify your life の feed をお好きな feed reader に入れておくだけ。
結構頻繁に更新してる。