JavaScriptのArray.sortは安定であるとは限らない

Chromeでのデバッグ中に気づいたことですが, JavaScriptのArray.sortは安定ソートであるとは限らないようです.

Array.sort – JavaScript | MDNによると

一部の JavaScript の実装では、a と b が等しい場合にそれらの添字の部分的な順序を変えない安定ソートが実装されています。もしソートする前の時点で a の添字が b のより小さいなら、ソートによって a と b がどう移動しようとも、ソートした後もそのままになるのです。

SpiderMonkey と Gecko 1.9 以降のすべての Mozilla ベースのブラウザでは、ソートは安定ソートになっています (バグ 224128 を参照)。

となっているので, Firefox 3.0以上なら安定ソートとなっているようです.

iTunes ConnectのSales ReportをRで解析する「RTConnect」をリリースしました

iOSアプリケーションを公開している方は, iTunes ConnectSales and Trendsからダウンロード数等をチェックされることと思います. しかしながら, 日毎のレポートは直近の1ヶ月間分しかダウンロー出来ないことや, 決して使いやすいとは言いがたいグラフ機能に不満が募り, 自分でレポートを解析するライブラリ「RTConnect」を作成するに至りました.

RTConnectを使うと以下のようなグラフを簡単に出力することが出来ます.

RTConnct使用例

「RTConnect」はRで利用できるライブラリとして, 現在CRANで配信しており, ソースコードはGitHubにて公開しています. 使い方はGitHubReference manualにまとめているのでここでは省略します.

現在はダウンロード数(Units)の集計が主な機能ですが, 今後は売り上げの解析等も追加していく予定ですので是非ご利用下さい.

git aliasで入力量削減と美しいログ表示

gitを多用していると

$ git status
$ git checkout master

などと打つのが, だんだん面倒になってくる. そこで以下のようにaliasを設定すると

$ git config --global alias.st status
$ git config --global alias.cm commit

このように入力量を減らすことが出来ます!

$ git st
$ git co master

さらに

$ git config --global lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(blue)<%an>%Creset' --abbrev-commit --date=relative

と設定しておくと, git lgと入力するだけで以下のような美しいログ出力を得ることが出来ます.

git_lg

aliasの設定は~/.gitconfigに書いておけるので, そちらの方が楽かもしれません.

参考までに今使っている.gitconfigはGitHubで公開しています.