ForkLift でファイル比較に CompareMerge を使う
先日ファイルマネージャとして ForkLift を導入した。2ペイン型のファイラで、SFTP や SMB に加え各種クラウドストレージもローカルと同じように操作できる。
ファイルの比較には FileMerge, Kaleidoscope, Beyond Compare, Araxis Merge が使えるが、次の理由で CompareMerge を使うことにした。
- FileMerge は非 ASCII 文字を含むファイルを開くといちいち警告を出してくるため実用的でない
- Kaleidoscope は試用してみたところ行間が広めの値で固定されており、一度に情報をたくさん表示するのに向いていない
さてここで問題は設定に CompareMerge が用意されていないことだが、 Kaleidoscope の呼び出しがコマンドラインツールから行われているのでこれを利用する。すでに Kaleidoscope のコマンドラインツールを使用している場合は使えないので注意
Kaleidoscope のコマンドラインツールは /usr/local/bin/ksdiff にインストールされる。なのでこれを CompareMerge を起動するスクリプトに置き換えてやればうまくいく。CompareMerge の起動には open コマンドを使うとコマンドラインからファイルを指定することができた。
したがって次の内容で /usr/local/bin/ksdiff を作成し、 ForkLift の Compare Tool の設定を Kaleidoscope にすればよい。
#!/bin/sh open -a /Applications/CompareMerge.app "$@"
xargs の使い方メモ
たまにしか使わないで済んでいるのでいつも使い方を忘れる。
基本
コマンドの出力をパイプで渡すと、各行をコマンドの最後の引数として実行する。
ls | xargs md5 -q
これは次のように展開されたものと同じ。
md5 -q foo md5 -q bar md5 -q baz ...
ただしファイル名にスペースを含んでいると上記の方法ではうまくいかない。この場合、次の節で説明するプレースホルダを使用する。
プレースホルダ
xargs では -I
オプションで引数を展開する場所を指定することができる。-I '{}'
のように指定すると、{}
の場所に引数が展開される。
ls | xargs -I '{}' md5 -q '{}'
これでスペースを含むファイル名もうまく展開される。
md5 -q 'foo' md5 -q 'bar' md5 -q 'foo bar' ...
処理系によっては小文字の -i
オプションで -I '{}'
と同等の動作になるので alias を指定しておくと便利かもしれない。
alias xargs-i='xargs -I "{}"'
拡張子の変更
xargs を使って拡張子を一括置換するにはプレースホルダに加え、 sed を組み合わせるとよい。
find . -name '*.txt' | sed -e 's/[.]txt$//' | xargs -I '{}' mv '{}.txt' '{}.md'
応用例として、 FFmpeg で動画から音声トラックのみ抽出するコマンドを挙げる。
find . -name '*.mp4' | sed -e 's/[.]mp4$//' | xargs -I '{}' ffmpeg -i '{}.mp4' -c:a copy '{}.m4a'
Windows のスクリーンショットを一括で JPEG に変換してリネーム
PowerShell は使わず、WSL の bash や zsh などから使用する。ImageMagick (convert コマンド) がインストールされているものとする。
ls スクリ*.png | \ sed -e 's/スクリーンショット (//' -e 's/)[.]png//' | \ xargs -I '{}' convert 'スクリーンショット ({}).png' 'image-{}.jpg'
一部を切り抜きたい場合はその座標を指定して
# -crop (width)x(height)+(left)+(top) ls スクリ*.png | \ sed -e 's/スクリーンショット (//' -e 's/)[.]png//' | \ xargs -I '{}' convert 'スクリーンショット ({}).png' -crop 1140x641+601+199 'image-{}.jpg'
FFmpeg でオーディオファイルの音量を調整する
Windows 10 に付属する標準の音楽プレイヤーは曲ごとに再生時の音量を設定することができないようなので、 FFmpeg を使って MP3 や AAC の音量を調整した。
ここで使用した FFmpeg のバージョンは N-93565-g0ad0533e91 (2019/2)。
ffmpeg -i INPUT -c:v copy -filter:a "volume=-6dB" OUTPUT
オプションの詳細は次の通り。
- -i INPUT …… 入力ファイル
- -c:v copy …… 映像パートはコピーする
- -filter:a "volume=-6dB" …… 音声にフィルタを適用する
- 音量は -6dB のようにも調整できるし、 0.5 など [0, 1] の値を設定することもできる。デシベル値を設定する場合は B が大文字でないといけないことに注意
- OUTPUT …… 出力ファイル
macOS Mojave をクリーンインストールした
Catalina から Mojave にダウングレードするため macOS Mojave をクリーンインストールした。
この Mac にプリインストールされていた OS は Mojave だったので、Mac の起動直後に shift + option + command + R キーを押し、プリインストールされていたバージョンに最も近い OS をインストールした。OS のインストール自体は 1 時間足らずで完了。
データの復元は Time Machine バックアップで難なくできた。400 GB ほどのデータで 5 時間ほどかかった。
Homebrew を macOS Mojave にインストール
Homebrew のサイトに記述されている次のコマンドを実行すると、インストールされるファイルやディレクトリの一覧が表示される。
% ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ==> This script will install: /usr/local/bin/brew /usr/local/share/doc/homebrew /usr/local/share/man/man1/brew.1 /usr/local/share/zsh/site-functions/_brew /usr/local/etc/bash_completion.d/brew /usr/local/Homebrew ==> The following new directories will be created: /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks ==> The Xcode Command Line Tools will be installed.
Homebrew でインストールしたパッケージ
brew install rbenv ruby-build readline brew install ffmpeg brew install imagemagick brew install dnsmasq brew install unar
MuseScore プラグイン API
サンプル
Score
プロパティ/メソッド | 説明 |
---|---|
newCursor() : Cursor | |
nstaves : Number | 譜表の数 |
Cursor
プロパティ/メソッド | 説明 |
---|---|
staffIdx : Number | 譜表のインデックスを参照または設定する |
voice : Number | 声部のインデックスを参照または設定する [0, 4) |
segment : ? | |
element : Element | カーソル位置の要素を取得する |
rewind (position : Number) : void | カーソル位置を指定の場所に巻き戻す |
next () : void | カーソルを次の位置に進める |
Element
プロパティ/メソッド | 説明 |
---|---|
type : ElementType | 要素の型を取得する |
notes : Note[] | コードに含まれる音符のリスト。低い順 |
ElementType
値 | 説明 |
---|---|
Element.CHORD | コード(音符) |
Element.REST | 休符 |
Note
プロパティ/メソッド | 説明 |
---|---|
type : Number | |
name : String | |
parent : Object | |
selected : Boolean | |
visible : Boolean | |
small : Boolean | |
offsetX : Number | |
offsetY : Number | |
z : Number | |
lineType : ? | |
line : Number | |
direction : ? | |
velocity : Number | ベロシティを参照もしくは設定 |
veloOffset : Number | 相対ベロシティを参照もしくは設定 |