2012年9月2日日曜日

Spotlight(Alfred)でMarkdownファイルの中身から検索する方法

Spotlightではテキストファイルの中身も検索対象にして検索できますが、

Markdownファイルはデフォルトでは対応してない(Lionでしか確認してない)ので追加する必要があります。
(Alfredでは“in”コマンドを使ってファイルの中身を検索できます)

Fixing Spotlight indexing of Markdown content - Brett Terpstra からMarkdown.mdimporterをダウンロードします。
この時、Markdown.mdimporter.zipがダウンロードされるのですが、そのまま解凍すると解凍ソフトによっていは
Markdown.mdimporterというフォルダができて、中にMarkdown.mdimporterというファイルがあるという感じではまるので、
Markdown.mdimporter.zipを別の名前に変更してから解凍すると良い気がします。

解凍して中に入ってる Markdown.mdimporterファイルを~/Library/Spotlight/に移動します。
そして、

mdimport -r ~/Library/Spotlight/Markdown.mdimporter

とコマンドを叩くと、mdimport pluginに追加されます。(正確にはリロードっぽい)

ちゃんとpluginに追加されたかは以下のコマンドを叩くことで分かります。

mdimport -L

また、検索したMarkdownファイルがどのように見えているかは以下のコマンドを使って確認できます。

mdimport -d2 検索対象ファイルパス

この時、対象のMardkwonファイルにkMDItemTextContentという属性がちゃんと表示見えていれば、ファイルの中身で検索できるようになります。

1 azu MacbookPro ~ server octopress  zsh 1

pluginが使われているかもログに表示されているので確認するといいです。

(Info) Import: Importing type 'net.daringfireball.markdown' using 'file://localhost/Users/USER/Library/Spotlight/Markdown.mdimporter/'

これで、MarkdownファイルがSpotlightやそれを利用した検索ソフト(Alfred)から等も検索できるようになります。

2012年5月24日木曜日

Python環境とSphinxエディタとしてのEclipse

主題的にはSphinxのエディタとしてEclipseを使うという話ですが、
PythonbrewからPythonzに移行したので、それもついでに。

Pythonzのインストール方法は上を見れば大体わかるりますが、まずはpythonbrewをアンインストールして

rm -Rf ~/.pythonbrew
# pythonz
curl -kL https://raw.github.com/saghul/pythonz/master/pythonz-install | bash
pythonz install 2.7.3

pythonzをインストールしたら、.zshrcも書き換えて、

[[ -s $HOME/.pythonz/etc/bashrc ]] && source $HOME/.pythonz/etc/bashrc
export PATH=$HOME/.pythonz/pythons/CPython-2.7.3/bin:$PATH

pythonbrewみたいにuseとかないので、手動でパスを通すらしい。

で、後はsphinxのインストール

curl http://peak.telecommunity.com/dist/ez_setup.py | python
easy_install pip
pip install PIL
pip install sphinx
# ファイル変更で自動ビルドするためにwatchコマンドも入れておく
brew install watch

これで、Sphinxの準備は終わりで、sphinx-quickstartで作ったプロジェクトでmake htmlをするとhtmlが吐き出せるけど、
手動は大変なので、先ほどのwatchコマンドでファイル監視をして自動的にビルドするようにする

watch make htmlでファイル変更の監視ができる

次はEclipse

普段Eclipseは使ってなかったので、とりあえずEclipse IDE for Java Developersをインストールした。
最近のEclipseはHelp-> Eclipse MarketPlaceから検索してプラグインをインストールできる。

検索窓からReST Editorと検索するとプラグインが出てくるのでインストールする。
このReST EditorプラグインはreSTのシンタックスハイライトや補完、一部Sphinxディレクティブの補完などに対応してる。

Eclipse Marketplace

Eclipseには内部ブラウザでプレビューできるので、編集して(watchで自動ビルドして)確認が出来る。

NewImage

Eclipse

NewImage

アウトラインも対応してる

NewImage

後、Sphinxについてはbenoitbryon/documentation-style-guide-sphinxが結構面白い。

 

2012年4月1日日曜日

Office Web Appsのオンラインビューアー

パワーポイントのファイルとか見るのに便利そう

http://view.officeapps.live.com/op/view.aspx?src=<URL>

https://view.officeapps.live.com/op/view.aspx?src=http%3A%2F%2Futf-8.jp%2Fpublic%2F20110424%2Fsokai-hacks.pptx

xlsxやpptxなどOfficeっぽいファイルを渡すとOffice Web Appsのビューアーで見ることができる。
(どっかにトップページとか対応ファイルのまとめとかあるのかなー)

Google ドキュメント - ビューアよりも良くできてる印象なので、安定して使えるならこっち使ったほうがいい気もする。

2012年3月31日土曜日

引数にパスを渡してiTerm2でそこを開くapplescript

AppleScript - iterm2 - Development site for iTerm2 - Google Project Hosting を参考にそういうapplescriptを書いた。
こういうのデフォルトでできないのかなー

cdto.scptを以下みたいな感じで開きたいディレクトリパスを引数に呼び出す。

osascript cdto.scpt "/Users/path/to/"

WebStormのExternal Toolsに$FileDir$を渡してディレクトリを開けるようにした。

Edit Tool

 

2012年3月13日火曜日

[super tableView:tableView heightForRowAtIndexPath:indexPath]でクラッシュ

表題の通り、iOS4.xだとなぜか

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return [super tableView:tableView heightForRowAtIndexPath:indexPath];
}

というコードでクラッシュしてしまっていた。

2012-03-13 17:16:12.839 AZTableViewApp[17518:11303] -[AZTableViewController tableView:heightForRowAtIndexPath:]: unrecognized selector sent to instance 0x5c3aaf0
2012-03-13 17:16:18.694 AZTableViewApp[17518:11303] CRASH: -[AZTableViewController tableView:heightForRowAtIndexPath:]: unrecognized selector sent to instance 0x5c3aaf0
2012-03-13 17:16:18.696 AZTableViewApp[17518:11303] Stack Trace: (
	0   CoreFoundation                      0x0108a5a9 __exceptionPreprocess + 185
	1   libobjc.A.dylib                     0x011de313 objc_exception_throw + 44
	2   CoreFoundation                      0x0108c0bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
	3   CoreFoundation                      0x00ffba04 ___forwarding___ + 1124
	4   CoreFoundation                      0x00ffb522 _CF_forwarding_prep_0 + 50
	5   AZTableViewApp                      0x000052a0 -[AZTableViewController tableView:heightForRowAtIndexPath:] + 384
	6   UIKit                               0x001ea6d5 -[UISectionRowData refreshWithSection:tableView:tableViewRowData:] + 2888
	7   UIKit                               0x001e7d88 -[UITableViewRowData numberOfRows] + 108
	8   UIKit                               0x001eb82d -[UITableViewRowData globalRowsInRect:] + 36
	9   UIKit                               0x000ac261 -[UITableView(_UITableViewPrivate) _visibleGlobalRowsInRect:] + 178
	10  UIKit                               0x000ad382 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 207
	11  UIKit                               0x0009ca46 -[UITableView(_UITableViewPrivate) _updateVisibleCellsImmediatelyIfNecessary] + 56
	12  UIKit                               0x0009b395 -[UITableView visibleCells] + 39
	13  AZTableViewApp                      0x00004421 -[AZTableViewController viewWillAppear:] + 449
	14  UIKit                               0x000eb9be -[UINavigationController _startTransition:fromViewController:toViewController:] + 858
	15  UIKit                               0x000e632a -[UINavigationController _startDeferredTransitionIfNeeded] + 266
	16  UIKit                               0x002012e9 -[UILayoutContainerView layoutSubviews] + 226
	17  QuartzCore                          0x01761a5a -[CALayer layoutSublayers] + 181
	18  QuartzCore                          0x01763ddc CALayerLayoutIfNeeded + 220
	19  QuartzCore                          0x017090b4 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 310
	20  QuartzCore                          0x0170a294 _ZN2CA11Transaction6commitEv + 292
	21  UIKit                               0x0002f9c9 -[UIApplication _reportAppLaunchFinished] + 39
	22  UIKit                               0x0002fe83 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 690
	23  UIKit                               0x0003a617 -[UIApplication handleEvent:withNewEvent:] + 1533
	24  UIKit                               0x00032abf -[UIApplication sendEvent:] + 71
	25  UIKit                               0x00037f2e _UIApplicationHandleEvent + 7576
	26  GraphicsServices                    0x00d8b992 PurpleEventCallback + 1550
	27  CoreFoundation                      0x0106b944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
	28  CoreFoundation                      0x00fcbcf7 __CFRunLoopDoSource1 + 215
	29  CoreFoundation                      0x00fc8f83 __CFRunLoopRun + 979
	30  CoreFoundation                      0x00fc8840 CFRunLoopRunSpecific + 208
	31  CoreFoundation                      0x00fc8761 CFRunLoopRunInMode + 97
	32  UIKit                               0x0002f7d2 -[UIApplication _run] + 623
	33  UIKit                               0x0003bc93 UIApplicationMain + 1160
	34  AZTableViewApp                      0x0000281a main + 170
	35  AZTableViewApp                      0x00002765 start + 53
)
2012-03-13 17:16:18.697 AZTableViewApp[17518:11303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AZTableViewController tableView:heightForRowAtIndexPath:]: unrecognized selector sent to instance 0x5c3aaf0'
*** Call stack at first throw:
(
	0   CoreFoundation                      0x0108a5a9 __exceptionPreprocess + 185
	1   libobjc.A.dylib                     0x011de313 objc_exception_throw + 44
	2   CoreFoundation                      0x0108c0bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
	3   CoreFoundation                      0x00ffba04 ___forwarding___ + 1124
	4   CoreFoundation                      0x00ffb522 _CF_forwarding_prep_0 + 50
	5   AZTableViewApp                      0x000052a0 -[AZTableViewController tableView:heightForRowAtIndexPath:] + 384
	6   UIKit                               0x001ea6d5 -[UISectionRowData refreshWithSection:tableView:tableViewRowData:] + 2888
	7   UIKit                               0x001e7d88 -[UITableViewRowData numberOfRows] + 108
	8   UIKit                               0x001eb82d -[UITableViewRowData globalRowsInRect:] + 36
	9   UIKit                               0x000ac261 -[UITableView(_UITableViewPrivate) _visibleGlobalRowsInRect:] + 178
	10  UIKit                               0x000ad382 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 207
	11  UIKit                               0x0009ca46 -[UITableView(_UITableViewPrivate) _updateVisibleCellsImmediatelyIfNecessary] + 56
	12  UIKit                               0x0009b395 -[UITableView visibleCells] + 39
	13  AZTableViewApp                      0x00004421 -[AZTableViewController viewWillAppear:] + 449
	14  UIKit                               0x000eb9be -[UINavigationController _startTransition:fromViewController:toViewController:] + 858
	15  UIKit                               0x000e632a -[UINavigationController _startDeferredTransitionIfNeeded] + 266
	16  UIKit                               0x002012e9 -[UILayoutContainerView layoutSubviews] + 226
	17  QuartzCore                          0x01761a5a -[CALayer layoutSublayers] + 181
	18  QuartzCore                          0x01763ddc CALayerLayoutIfNeeded + 220
	19  QuartzCore                          0x017090b4 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 310
	20  QuartzCore                          0x0170a294 _ZN2CA11Transaction6commitEv + 292
	21  UIKit                               0x0002f9c9 -[UIApplication _reportAppLaunchFinished] + 39
	22  UIKit                               0x0002fe83 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 690
	23  UIKit                               0x0003a617 -[UIApplication handleEvent:withNewEvent:] + 1533
	24  UIKit                               0x00032abf -[UIApplication sendEvent:] + 71
	25  UIKit                               0x00037f2e _UIApplicationHandleEvent + 7576
	26  GraphicsServices                    0x00d8b992 PurpleEventCallback + 1550
	27  CoreFoundation                      0x0106b944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
	28  CoreFoundation                      0x00fcbcf7 __CFRunLoopDoSource1 + 215
	29  CoreFoundation                      0x00fc8f83 __CFRunLoopRun + 979
	30  CoreFoundation                      0x00fc8840 CFRunLoopRunSpecific + 208
	31  CoreFoundation                      0x00fc8761 CFRunLoopRunInMode + 97
	32  UIKit                               0x0002f7d2 -[UIApplication _run] + 623
	33  UIKit                               0x0003bc93 UIApplicationMain + 1160
	34  AZTableViewApp                      0x0000281a main + 170
	35  AZTableViewApp                      0x00002765 start + 53
)
Signal received: SIGABRT (Aborted)

なので、

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return self.tableView.rowHeight;
}

という感じにしたら問題なかった。

普通にUITableViewControllerそのもののサブクラスなので、特にsuperが問題にならないと思うんだけど何が原因だったんだろ。。

2012年1月6日金曜日

コマンドラインから今いるgitレポジトリをSourceTreeで開く

タイトルままですが、コマンドラインからSourceTreeを開く方法

open -a SourceTree /path/to/repo

のような感じで、SourceTree.appで指定したレポジトリを開く方法は知っていたのですが、
わざわざ開きたいレポジトリのルートを指定しないと行けないのが面倒でした。(大抵そのレポジトリ内にいるので)

gitレポジトリのルートとなるディレクトリを取得する方法もあるようなので、それを入れて

# sourceTree
alias st='open -a SourceTree `git rev-parse --show-toplevel`'

とという感じのエイリアスにして使っています。

参考

追記:

SourceTree 1.3からstree というコマンドがインストールできるようになったので、
こちらのバイナリを使えば上記のエイリアスがなくても同じ事ができると思います。

NewImage

SourceTreeのメニューからもインストールできます。