feed
2014年07月26日, 編集履歴
UTF-16でエンコーディングされたテキストファイルをgit-diff
等で表示することを考える。
.gitattributes
をリポジトリィに追加する
.gitattributes
ファイルを用いることで、特定のファイルやディレクトリィ単位で個別のdiffツールやmergeツールを用いるといった設定を行うことができる。
リポジトリィに以下のような内容の.gitattributes
ファイルを追加する。
この場合、.gitattributes
ファイルを配置したディレクトリィ以下の.txt
拡張子を持つファイルのdiffに、utf16
という名前のフィルタを用いる指定をしたことになる。指定したフィルタがどういう動作を行うのかは次項で設定する。
フィルタの動作を設定する
前項で指定したutf16
フィルタが実行する内容を設定する。
$ git config diff.utf16.textconv 'iconv -f utf-16 -t utf-8'
このようにすると$GIT_DIR/config
ファイルに、
[diff "utf16"]
textconv = iconv -f utf-16 -t utf-8
のような記述が足される(このファイルを直接編集しても良い)。
これで、utf16
フィルタを指定されたファイルのdiffを表示する際に、iconv
でエンコーディングの変換処理が噛まされるようになり(iconv
は文字エンコーディング変換プログラムで、OS Xに始めから入っている。-f
オプションで入力エンコーディング、-t
で出力エンコーディングを指定)、diffが見られるようになる。
参考
2014年07月12日, 編集履歴
mailto:
リンク等によるメールアプリケーションの起動を抑制するユーティリティMailto Interceptorをver. 1.1にヴァージョンアップしました。
ver. 1.1では、選択された動作をHUDパネルで通知する仕組みを導入しました。
これにより、ヴィジュアルフィードバックがなかった「mailto リンクを無視」、「メールアドレスをコピー」等の動作が正常に処理されたかどうかを知ることができるようになりました。通知パネルを使用するかどうかは選択できます。
Mac App Storeでの日本語文章も今回はちゃんと用意できました。
どうぞよろしくお願いします。
2014年06月14日, 編集履歴
Jekyllでは、YAML Front-matterでtags
変数にタグを割り当てることで、ブログ記事にタグを付けることができる。たとえばこの記事のFront-matterは以下のようになっている。
---
title: Jekyllで空白を含むタグを付ける
layout: post
tags: jekyll development
---
タグはスペース区切りで割り当てる。この場合はjekyll
、development
というふたつのタグが付けられることになる。
タグ名にスペースが含まれない場合は上記の記法で良い。タグ名にスペースを入れたい場合は、YAMLのリスト形式を用いる。
たとえば「Mailto Interceptorをリリースしました 」という記事にはmailto interceptor
やos x
というスペース含みのタグが付けられている。この記事のFront-matterは以下のようになっている。
---
title: Mailto Interceptorをリリースしました
layout: post
tags: [os x, release, mailto interceptor]
---
[]
でくくった中に,
区切りでタグ名を指定する。このようにすれば、空白含みのタグを付けられるようになる。
2014年06月06日, 編集履歴
Mailto InterceptorというOS Xアプリケーションをリリースしました。
ウェブブラウズ中にmailto:
リンクをクリックしてしまい、意図せずメイルアプリケーションが起動してしまったことがありませんか? Mailto Interceptorを使えば意図しないメイルアプリケーションの起動を抑制します。
Mailto Interceptorはシステムからはメイルアプリケーションとして認識されます。Mailto Interceptorをシステムのディフォルトメイルアプリケーションとして設定することでmailto:
リンクのクリック等に反応して起動するようになります。
通常のメイルアプリケーションであれば、起動後メイル作成画面を開きますが、Mailto Interceptorは設定された動作を実行後、自動終了します。Mailto Interceptorで設定可能な動作は以下の通りです。
mailto:
リンクを無視(なにもしない)
メイルアドレスをコピィ
Gmailの作成画面を開く
上記の動作とメイルアプリケーションの起動を選択できるメニューをポップアップ(推奨動作)
Mailto Interceptorがmailto:
に反応して起動した場合、Dockへのアイコン表示、およびDockアイコンのバウンドアニメーション等はしないので、ユーザはMailto Interceptorの存在を意識することなく上記の動作を実行させることができます。
上記デモアニメーションは、メニューをポップアップする動作を行ったときのものです。mailto:
リンクをクリックすると、システムがディフォルトのメイルアプリケーションを起動します。Mailto Interceptorをディフォルトメイルアプリケーションにしている場合、Mailto Interceptorが起動し、指定動作を実行します(上記デモアニメーションの場合はメニューのポップアップ)。
デモアニメーションで”Copy Email Address”をしているメニューは通常のコンテキストメニューではなく、Mailto Interceptorが表示しているメニューです(”Paste”しているメニューは通常のコンテキストメニュー)。前述のように、このときDockにアイコンが表示されたりはしません。
不意にメイルアプリケーションが起動してしまい、イラっとしたことがあるひとはぜひMailto Interceptorをお試しください。
余談
Mac App Storeでの文言は英語になっていますが、アプリケーション自体は日本語化されています。Mac App Storeでの日本語文言の準備を後回しにしていたら、それより早くリリースされてしまい、日本語文言の追加ができなくなってしまいました……。次回アップデート時にはちゃんと日本語追加します。
2014年06月04日, 編集履歴
(この記事の内容よりも良い方法を「動画ファイルからより良いアニメーションGIFを作る 」に書きました)
QuickTime Playerで「ファイル」→「新規画面収録」することで、画面の操作をMOVファイルの動画にすること(スクリーンキャプチャ)ができる。そのMOVからある程度きれいでファイルサイズが小さいアニメーションGIFを作ることを考える。
用意するもの(括弧内のヴァージョンは筆者の環境。他のヴァージョンでもたぶん可):
QuickTime Player (version 10.3) で画面収録したMOVファイル
ffmpeg (version 2.2)
ImageMagick (version 6.8.8-10)
手順:
ffmpegを使って動画を連番画像に切り出す
ImageMagickのconvertコマンドで連番画像をアニメーションGIFに纏める
ffmpegを使って動画を連番画像に切り出す
まずはffmpegを用いてMOVをフレーム毎に連番画像に切り出す。
ここで、アニメーションGIFのフレーム間の間隔は0.01秒単位である。したがって、フレーム間隔0.01秒で100fps(fps = 秒間フレーム数)となり、以後、0.02秒で50fps、0.03秒で33.33fps、0.04秒で25fps……となる。
QuickTime Playerで画面収録した場合、収録サイズやマシンスペックによって出力される動画のfpsは変動するので、アニメーションGIFの仕様に合わせたfpsで画像切り出しを行う。
$ ffmpeg -i input.mov -r 50 frames/%03d.png
この例では、カレントディレクトリィ下のframesディレクトリィに、3桁の連番をファイル名としたpng画像群が出力される。入力動画が60fpsで収録されていたので、アニメーションGIFの仕様に一番近い50fpsでの切り出しを行っている(したがって、秒間10フレーム分間引かれる)。そのために-r
オプションでフレーム数50
を指定した。
Internet Explorerの古いヴァージョンではフレーム間隔0.06秒以下(= 16.67fps以上)のアニメーションGIFは正常に再生できないらしいが、今回は無視する(参考:あなたは大丈夫?高速GIFアニメになってしまう症状 知らなきゃ絶対損するPCマル秘ワザ )。
ImageMagickのconvertコマンドで連番画像をアニメーションGIFに纏める
次に出力された連番画像をImageMagickのconvertコマンドを用いてアニメーションGIFに纏める。
$ convert -delay 2 -layers optimize frames/*.png output.gif
上記のようにすればframesディレクトリィ下の連番画像がアニメーションGIFになる。-delay
オプションでフレーム間隔を0.01秒単位で指定する。ここでは上述の動画切り出しfpsに合わせて2
(= 0.02秒間隔 = 50fps)を指定した。
-layers optimize
オプションを使用することでいい感じにアニメーションGIFを最適化してくれる(フレーム間で差分のあるところだけを使うとか)。このオプションを指定しない場合、50fpsで約9秒のアニメーションGIFのファイルサイズが約7.8MB、指定した場合は約552KBと、大幅なファイルサイズ削減効果があった。それでいて見た感じの画質の劣化等は全然解らないので、-layers optimize
オプションを指定することをおすすめする(動画の内容によるかも)。
以上のようにして生成したのが以下のアニメーションGIFである。
ターミナルでの操作が嫌なひとは以下のようなGUIアプリケーションがあるので参考まで。
LICEcap
LICEcapはWindows/OS X両方で使える。スクリーンキャプチャから一貫してこのアプリひとつでできるのでお手軽。出力の質は本稿の手法より劣ると思う。無料。
GIF Brewery
GIF Breweryは動画ファイルをアニメーションGIFに変換するOS X用のアプリケーション。GUIでクロップやリサイズ、オーヴァレイとかできる(本稿の手法でもImageMagickでがんばればクロップやリサイズ等できる)。出力の質は本稿の手法以上。有料。
余談
ちなみに上記のアニメーションGIFは2014年6月4日現在Mac App Storeに申請中のアプリケーションのデモアニメーションです。mailto:
リンクのクリックによる意図しないメイルアプリケーションの起動を抑制します。メイルアプリケーションの起動の代わりにアドレスをコピィしたり、Gmailの作成画面を開いたりできるようになるアプリケーションです。
追記:上記アプリケーションをリリースしました(「Mailto Interceptorをリリースしました 」)。
参考