MagitがCommitで失敗する話のつづき

公開:2010年01月20日

Carbon EmacsにMagit再インストール話の続きで、ステータスを見たりdiffを取ったりブランチを変更したりはできるのに、Magitから変更をコミットしようとすると、"Symbol's function definition is void: start-file-process"というエラーメッセージが出て失敗するお話。

"start-file-process"で検索してみると、この関数はEmacs 23から実装されたのだそうで。Carbon EmacsのベースはEmacs 22だから、関数が定義されてないって言われちゃうわけですね。

昨晩記事を書いて寝床についた後に、そういえばMacにはTime Machineという仕組みがあるんだった、と思いだしたので、今朝起きてから、ターミナル経由でTime Machineに潜入。アップグレード前のEmacs.appにインストールされていたmagit.elを復元してみました。

Diffを取ってみると:

$ diff magit.el /Applications/Emacs.app/Contents/Resources/site-lisp/magit.el
244a245,250
> (defun magit-git-insert (args)
>   (apply #'process-file
> 	 magit-git-executable
> 	 nil (list t nil) nil
> 	 (append magit-git-standard-options args)))
> 
249,252c255
<       (apply #'process-file
< 	     magit-git-executable
< 	     nil (list t nil) nil
< 	     args))))
---
>       (magit-git-insert args))))
261c264,265
<   (apply #'process-file magit-git-executable nil nil nil args))
---
>   (apply #'process-file magit-git-executable nil nil nil
> 	 (append magit-git-standard-options args)))
654c658
< 	    (apply 'process-file cmd nil t nil args)
---
> 	    (apply 'process-file cmd nil t nil (append magit-git-standard-options args))
1020c1024
< 		     (apply 'start-process cmd buf cmd args))
---
> 		     (apply 'start-file-process cmd buf cmd args))
1053c1057
< 		     (equal (apply 'call-process cmd nil buf nil args) 0))
---
> 		     (equal (apply 'process-file cmd nil buf nil args) 0))
1628,1629c1632
< 	(args (append magit-git-standard-options 
< 		      (list "diff")
---
> 	(args (append (list "diff")
1634c1637
<       (apply 'process-file cmd nil t nil args)
---
>       (magit-git-insert args)
2858c2861
<       (let ((res (magit-git-exit-code "log" "--decorate" "--max-count=0")))
---
>       (let ((res (magit-git-exit-code "log" "--decorate=full" "--max-count=0")))
2871c2874
< 	     ,@(if magit-have-decorate (list "--decorate"))
---
> 	     ,@(if magit-have-decorate (list "--decorate=full"))

と、たしかにstart-processまわりに変更が入ってます。

というわけで、Carbon Emacs(またはEmacs 22.x)使いの人は、最新版でない古いバージョンのMagitを使用する必要あり。

$ git clone git://gitorious.org/magit/mainline.git
$ cd mainline
$ git tag -l (※オプション。タグ一覧を表示)
$ git checkout magit_0.7

で、0.7あたりを取り出して使うのが、とりあえずの正解です。

ジャンル: FreeBSD, Memo [ Permalink ][ View Comments ]

Carbon EmacsにMagitをインストールする

公開:2010年01月20日

Carbon Emacsのパッケージを2010年冬版に入れ替えたら、/Application/Emacs.app下にインストールしていたMagitが消えちゃったので、gitから再インストール。make installまでは成功したので、そこまでの手順をメモしておきます。

  1. リポジトリを複製
    $ git clone git://gitorious.org/magit/mainline.git
    

    (※ git clone git://github.com/jdhuntington/magit.git でも取れるが、公式サイトで指定されている gitorious のほうがベター)

  2. 前準備
    $ ./autogen.sh
    $ ./configure --prefix=/Application/Emacs.app/Contents/Resources  --infodir=/Applications/Emacs.app/Contents/Resources
    
  3. Makefileを書き換える

    Magitのconfigureは、--with-emacsと--with-lispdirオプションを認識せず、makeにEMACS/LISPDIRオプションを渡しても無視されるので、手動でMakefileを書き換える。

    $ diff Makefile.old Makefile
    170,171c170,171
    < lispdir = $(datadir)/emacs/site-lisp
    < sitestartdir = $(sysconfdir)/emacs/site-start.d
    ---
    > lispdir = /Applications/Emacs.app/Contents/Resources/site-lisp/
    > sitestartdir = /Applications/Emacs.app/Contents/Resources/site-lisp/site-start.d
    764c764
    < 	emacs --batch --eval '(byte-compile-file "$*.el")'
    ---
    > 	/Applications/Emacs.app/Contents/MacOS/Emacs --batch --eval '(byte-compile-file "$*.el")'
    
  4. make & make install
  5. $ make
    $ sudo make install
    
    ……
省略されました・・全てを読むにはここを押してください ジャンル: FreeBSD, Memo [ つづきを読む / Permalink ][ View Comments ]

そういうショートカットがあることは知っているのに、たまにしか使わないせいで、いざ押そうとしたときに思い出せないことってありませんか? 僕はあります。

というわけで、すぐに忘れちゃうemacsのショートカットをメモ書きしてみたり。

  1. リージョンをコメント化する:M-;(※comment-dwim, コメント/非コメント化のトグルなど、さまざまに雰囲気を読んでくれるので、comment-regionより便利)
  2. 特定行に移動する:M-g g(※goto-line)
  3. リージョンをすべて小文字にする:C-x C-l (※lowercaseだからl. 逆に、すべてを大文字化する場合は、uppercaseだから C-x C-u
  4. バッファ保存時の文字コードを指定する:C-x RET f

あと、emacsじゃなくてMacのショートカットなんですが、

  • 文字列をポイントしながら[Ctrl + Command + D]: 辞書.appの定義がポップアップする

この機能のことを、使うたびに便利だなーと思っているはずなのに、すぐ忘れちゃいます。(たぶん、手持ちの電子辞書の方がコンテンツが充実しているのと、標準のブラウザにしているFirefoxがこの機能に対応していないせい) 辞書.appから直接Wikipediaを引けることもすぐに忘れちゃうなあ。

ジャンル: FreeBSD, Memo [ Permalink ][ View Comments ]

yasnippetが便利すぐる

公開:2009年12月19日  最終更新:2009年12月21日

yasnippetというものがあることを今ごろ知りました。なにこれ便利すぎる。

入力したテキストから正規表現に該当する部分だけを抽出したり、マッチした部分を除外したり、あらかじめヤンクしたテキストを$1や$2に当てはめたり、って使い方はできるのかな。やり方がありそうな気がするけど、elispの知識がないからよく分からないや。

参考

ジャンル: Bookmarks, FreeBSD [ Permalink ][ View Comments ]

こないだアップグレードしたThunderbird 3. 直後にアクティビティモニタでチェックしたときは、180MB以上の実メモリを占有していた。

ところが、ログイン時に起動してずっと立ち上げっぱなし、という使い方は変わっていないのに、ファームウェアをアップグレードするため、数回マシンを再起動した後にアクティビティモニタを覗いてみたら…… あれ? メモリ使用量が下がっている。しかも89MBしか使っていない。TB2のときは、常駐させておくと108MB程度のメモリを食うのが常だったから、以前のバージョンより少なくなっているじゃないか。

89MBは立ち上げ直後のメモリ使用量で、メールを作成したりすると、使用量はすこし増加するけど、この記事を書いている時点では、4日間プロセスを立ち上げ続けて、メモリ使用量は105MB. TB2と遜色ないレベル。バージョンアップ直後は、データベースのコンバートなどで、通常より余計にメモリを食うのかしら。

あ、あともう一つ、Dockアイコン右上に表示される未読メール数。TB2時代は、ここに表示される未読メール数の数字がずっと正しくなかったのだけど、TB3にアップグレードしたら、正しい未読メール数が表示されるようになりました。

その代わりと言ってはなんだけど、新着メール到着時にTBのアイコンが飛び跳ねなくなったのだけど、これはどこかの設定で変更できるのかしら。

ジャンル: Akihabara, FreeBSD [ Permalink ][ View Comments ]
Apple MacBook 2.0GHz 13.3インチ MB466J/Aの商品画像
  • アップル(2008-10-15)
  • マーケットプレイスの価格:¥ 97,999より (定価:¥ 148,800, 34% off
  • 中古商品

Q: MacBookのEFIをアップデートするため、[MacBook EFI ファームウェア・アップデート.app]の指示に従ってボタンを押し、マシンを終了しました。しかし、MacBookのパワーボタンを押して電源を投入しても、ビープ音が1回だけ長く鳴っただけで、EFIの更新画面が表示されません。

A: MacBookの画面を出力するのに、外部ディスプレイを使っていませんか? MacBookに接続されたディスプレイコネクタを抜けば、即座に、MacBook本体の液晶画面に、白黒の林檎アイコンが表示され、EFIの更新が開始されます。

Mac OS X: Thunderbird 3を入れてみた

公開:2009年12月09日

念のため、Thunderbirdを終了し、/Users/ユーザー名/Library/Thunderbird フォルダをまるごとバックアップしたうえで、Mac OS X版のThunderbird 3をえいやっと導入。

画像(Mac版Thunderbird 3のインストーラ)
Mac版の場合、ディスクイメージをダウンロードして、Thunderbird.appをApplicationフォルダへ移動するだけ

手順は:

  1. 公式サイトからdmgをダウンロードする
  2. ダウンロードしたdmgをダブルクリックしてマウント
  3. Thunderbird.appをApplicationフォルダに移動する

だけ。Thunderbird2時代の設定はすべて受け継がれます。

インタフェイスが小型でスマートになったのと、タブに対応したのが、外見上最大の変化。全文検索は確かに超速になっていて、見ばえもなんだかかっこいいです。(追記:メモリ使用量はTB2より多いかも? TB2の1.5〜2倍くらい使っている感じです)

画像(Thunderbird 3の受信トレイ画面)
TB3の受信トレイ。画面上部にタブが追加され、アイコンが小型化。動作が軽快になっています……
省略されました・・全てを読むにはここを押してください ジャンル: Akihabara, FreeBSD, Memo シリーズ: いろんなものをレビューするよ [ つづきを読む / Permalink ][ View Comments ]
ハーツ オブ アイアン III 【完全日本語版】の商品画像

完全日本語版の発売日が、いよいよ来週18日に迫ったHearts of Iron IIIですが、海外でも新たな動きが。Virtual Programmingが、Intel Macに対応した英語移植版をリリース。デジタル販売が開始されています!

画像(Mac英語版Hearts of Iron IIIが販売開始)

必要環境は:

  • OS X 10.5.8以降
  • すべてのIntel CPU
  • GeForce 7300, RadeonHD 2600/4850/4870 (GMAはサポートされません。ATI X1600はサポートされません)
  • 128MB VRAM, 1GB RAM
  • 1.3 GBのハードディスク空き容量
  • インターネット経由のプレイと製品登録にブロードバンド接続が必要

HoI3はやたらとスペック食いという印象があったんだけど、僕のMacBookでも動くんだなあ。HoI3 wikiのFAQからすると、いちばん大事なのはメモリなのかしらん。

Mac版Hearts of Iron IIIの販売価格は、29.95ポンド/34.95ユーロ/39.95ドルです。

参考

ジャンル: FreeBSD, Game [ Permalink ][ View Comments ]

もちろん、ファイルが少ないときは、

ls -1tr /foo/bar/*.jpg

でイケるんだけど、ファイル数が多すぎると、

-bash: /bin/ls: Argument list too long

とエラーが出ちゃう。

じゃあ、と、find と xargs を組み合わせて、

find /foo/bar -name "*.jpg" | xargs ls -1tr

とやってみたんだけど、これだとソート順がおかしいんだよね。FreeBSDではこれでうまく行ったような記憶があるんだけど、Mac OS Xだと駄目。なんでだろう?

ジャンル: Akihabara, Diary, FreeBSD [ Permalink ][ View Comments ]

オンラインストレージサービス「Dropbox」のiPhone/ iPod touch用アプリケーションがリリースされた。iPhone/ iPod touchからのオンラインストレージへのアクセス、Dropbox内のファイル表示、ファイルダウンロード、URLリンクを通じたファイル共有などをサポートする。価格は無料。システム条件はiPhone OS 3.1以降となっている。

というわけで、早速iPhone 3GSにダウンロードして使ってみました。

画像(iPhone版Dropboxアプリの画面)

iPhone版Dropboxアプリの画面。iPhoneとDropboxに慣れている人なら、操作に迷うことはないはず……

省略されました・・全てを読むにはここを押してください ジャンル: Akihabara, Diary, FreeBSD [ つづきを読む / Permalink ][ View Comments ]

巷でちょろっと話題になっている、「iPhoneで撮影された写真にはGPSの位置情報が埋め込まれているので、自宅で撮影した写真を不用意にWebにアップロードすると、住所が漏れちゃう」問題関連。ExifToolを使って、iPhoneで撮影した写真の.jpgファイルから、GPSの緯度経度情報を削除する方法を説明してみます。

前提

  • MacbookとiPhone 3GSを組み合わせて使用
  • iPhone 3GSで撮影した写真の取り込みにはiPhotoを利用
  • ExifToolをインストール済み

ExifToolはプラットフォームに依存しないPerlライブラリ + コマンドラインツール。Exif情報を編集するツールは他にもいくつか存在しますが、Mac OS Xに対応しており、頻繁に更新が継続されている点から、このソフトウェアをチョイスしました。

ExifToolには、別途Perlを必要としないMicrosoft Windows用の実行ファイルや、Mac OS Xに簡単にインストールするための.dmgパッケージも用意されています。

手順

  1. iPhotoから、位置情報を削除したい写真を選択。デスクトップにドラッグ&ドロップする
  2. ターミナルを開く
  3. cd Desktop
    

    でデスクトップに移動

  4. exiftool -GPSLatitude='' -GPSLongitude=''  写真.jpg
    

    で、指定した.jpgファイルから、GPSの位置情報が削除される

  5. デスクトップに置いた.jpgファイル群を一括で処理したい場合は、
    exiftool -GPSLatitude='' -GPSLongitude='' *.jpg
    

    で一発

  6. デフォルトでは、変更前のファイルが別名で保存されるようになっているので、直接上書きしたい場合は、-overwrite_original または -overwrite_original_in_place オプションを追加

オリジナルの写真はiPhotoに保存されたままなので、処理を誤って画像を壊してしまった場合でも大丈夫。Webにアップロードしたい写真からのみ、位置情報を削除したい場合におすすめです。

参考

ジャンル: Akihabara, FreeBSD [ Permalink ][ View Comments ]

物書堂は、2009年10月に Mac OS X 10.6 Snow Leopard および 10.5 Leopard に対応した日本語入力プログラム“かわせみ”を発売します。

この日本語入力プログラムは株式会社コーエーよりライセンスを受けた“egbridge Universal 2”がベースになっています。

「残念ながら“egbridge Universal 2”にあったすべての機能を備えているわけではありません」「販売はダウンロード販売のみ、価格は3,990円(税込)です」とのこと。

ATOK定額制1年分とそれほど変わらないお値段ですね。ATOKがあればとりあえず困らないんだけど、ちょっと使ってみたくもある。

ジャンル: Akihabara, FreeBSD [ Permalink ][ View Comments ]

Mac OS Xを使い始めた頃、MS WindowsでいうところのIMEの状態が、OS全体で統一されている(たとえば、Carbon Emacsで日本語入力をオンにすると、ターミナルでも日本語入力がオンになり、ターミナルで日本語入力を切ると、Emacsでも日本語入力がオフになる)のにびっくりしたんだけど、Mac OS X 10.6では、この挙動を変更できるようになってました。(聞いた話によると、この機能は新設ではなく、昔あったものが復活したのだそうな)

アプリケーションごとに入力ソースの状態を切り替えるには

画像([システム環境設定]の[言語とテキスト])
  1. [システム環境設定]→[言語とテキスト]から、[入力ソース]タブを選択
  2. [入力ソースのオプション]で、[書類ごとに異なるものを使用]を選択

これで、Windowsと同じように、IMEのオン/オフの状態が、アプリケーションのウィンドウごとに個別に保持されるようになります。

ジャンル: Akihabara, FreeBSD [ Permalink ][ View Comments ]

それでもユーザーによって検出にばらつきがあるのは、フィッシング詐欺サイトのデータベースが更新されていないのが理由だという。Appleの説明によると以下のステップを踏む必要がある。

  1. Safariブラウザを起動
  2. Wi-Fiネットワークに接続
  3. スクリーン・オフ状態でiPhoneを充電

フィッシング詐欺サイトのデータベースは充電中にダウンロードされる。これらのステップは、予期せぬデータサービス利用料金やバッテリーの消費を防ぐためだという。

なのだそうです。

データベースは随時更新だろうから、OSアップロード本体に含めることができない事情は理解できるけど、更新のプロセスが不可視だったのはまずかったかもですね。アプリケーションみたいに、App Storeで更新が通知される仕組みだったら気づきやすかったと思う。

ともかく、iPhoneユーザーのみなさんはご注意を。

ジャンル: Akihabara, FreeBSD [ Permalink ][ View Comments ]

ターミナルで動く軽いエディタを用意しておこう、という趣旨には全面的に賛成するとして、

Mac OS Xを長く利用していると、Finderではアクセスできない/しにくい領域にあるテキストファイルを編集する場面に出くわすことがある。たとえば、シェルのスタートアップファイル(ex. ~/.bashrc)など、いわゆる「ドットファイル」。/etcや/usrなどのUNIXとしての互換性を維持するためのディレクトリも、ファイルダイアログの表示対象外かつ管理者権限がなければ上書きできないことから、Cocoa/Carbonベースのテキストエディタでは利用しにくい。

ドットファイルの表示は defaults コマンドや TinkerTool 使わなきゃいけないからあれだけど、/etc や /usr への移動は、ファイルオープンダイアログで[Shift + Command + G]を押せば、「フォルダへ移動」で一発じゃね?

あ、でも管理者権限では開けないから、GUIベースだと利用しにくいのは真ですね。細かいツッコミ所は別にして、全体としては正しいのか。

ジャンル: Akihabara, FreeBSD [ Permalink ][ View Comments ]
次の15件を見る