応急的にYosemiteでCoreutilsを使う
はじめに
YosemiteにアプデするとHomebrewのCoreutilsが使えなくなる問題があって、brew link coreutilsでシンボリックリンクが生成されないのが根本的な問題っぽいんだけど、修正待ってられないので応急処置を施す。
やりかた
実行ファイルが/usr/local/Cellar/coreutils/`version`/libexec/gnubinにあるのでパス通せばいい
export PATH=/usr/local/Cellar/coreutils/8.23/libexec/gnubin:$PATH
みたいな。バージョン上がったら使えなくなるけど、その頃には直ってるやろ。修正されたら消すのを忘れずに(いつまでも古いバージョン実行し続ける
Play Tips
はじめに
Play使ってて困ったことと解決方法纏めてみた。
カンマ区切りしたい
JavaのString.formatの書式で、%,dとかすると、数値にカンマ付けられる。
ScalaのString Interpolationを使えばこんな風に。
f"${num}%,d"
Play Templateでもこんな風に
@{f"${num}%,d"}
以下サンプル
JavaScriptライブラリ管理
MyFleetGirlsという自作アプリでは、JavaScriptのライブラリはcdnjsから取ってくることにしている。リポジトリにjs入れるのはライセンスとか面倒くさいし、ビルドツール側でjsライブラリを持ってくる仕組みを整えるのは面倒くさかったからである。
ただ一方で、この状態でページ数が増えると、ライブラリのバージョンアップがひどく面倒くさくなる。また、複数バージョンが乱立したりしたら元も子もなくて、jsのロードが増えてページが重くなったりと、いいことがまるでない。
という訳で、cdnjsのURLを一元管理するようにした。
使い方はこんな感じ
コメントにもあるように、Template全体でimportしたいならsbtに以下のように設定すればいい
TwirlKeys.templateImports += "views.Js"
エロゲ回想シーンのスクショを自動で取る
要件
とりあえず必要なのは、
- WindowのタイトルからWindowの範囲を取得する
- プログラム側から自動でクリックする
- Windowをアクティブにする
- スクショを取る
- スクショと画像を比較する - 回想シーンの終了判定で必要です
自動クリック
java.awtのRobotを使う。
Windowをアクティブにする
Window情報からRobotでクリック。
スクショを取る
Robotでいける。
画像比較
上記のBufferedImageと、ImageIOで画像ファイルをロードして生成したBufferedImageをgetColorで比較。
チョットハヤイLongMapを計測してみる
Scaladoc調べてたらLongMapとかいうのを発見した。2.7からimmutableなLongMapが、2.11でmutableなものが実装されている。
Scaladocによると「Longに特化したHashMapでHashMapよりはやい」とのことなので軽くテストしてみた。
import scala.collection.immutable.LongMap import scala.util.Random object Main { val Max = 1000000L val Xs = (0L to Max) val random = new Random() val randoms = Xs.map(_ => math.abs(random.nextLong % Max)) def main(args: Array[String]): Unit = { println("Map: " + timer { val map = Xs.map(it => it -> it.toString).toMap randoms.map(map.apply) }.toString) println("LongMap:" + timer { val map = LongMap(Xs.map(it => it -> it.toString):_*) randoms.map(map.apply) }.toString) } def timer(f: => Any): Long = { val start = System.currentTimeMillis f System.currentTimeMillis - start } }
計測結果は、
- Map
- 1387ms
- LongMap
- 1030ms
言うほど差が出る訳でも無さそう…?
BitBucketでpull requestのcommitをローカルで試す
最近会社でBitBucketを使うことが多いのだけど、色々分からん操作があって、しかもググってもGitHubほどすぐ分からなかったりする。
今回はBitBucketのpull requestをローカルで試したいときにどうするかという話。実はpull requestのURLでpullするだけだった
git pull https://bitbucket.org/ponkotuy/MyFleetGirls/pull-request/7/wip/diff
GitHubと比較して、ls-remoteしても、pull requestらしきブランチ出てこないし、BitBucketはこの点に関して、実装を隠蔽する方向らしい。
JSONログのUNIX Timeを読みやすくする
はじめに
JSONでログためてると、
{"time": 1408715718, ...} {"time": 1409718175, ...} ...
みたいなデータを人間が見えるようにしたいとかいう要望は結構あると思いますが、そんなときにシェル1行で見えるようにしたメモ
コマンド
cat orig.txt | jq '.time' | sed -e "s/^/@/" | xargs -n1 date "+%m/%d %H:%M" --date | paste -d , - orig.txt
add-apt-repositoryしようとしたら困った話
add-apt-repositoryとは
ぼくもちゃんと分かっている訳ではないけど、aptに野良リポジトリの登録を簡単にする支援ツールみたいな奴。
MariaDBなんかは公式で用意しているので
こっからrepository追加すればapt-get updateで自動更新までやってくれる訳だ。
で、MariaDBのrepositoryを追加しようとしたらハマった。
解決方法
なんかMariaDBの解説とはadd-apt-repositoryの実行ファイルが入ってるパッケージが異なるっぽい。最近変わった模様?新しいパッケージはsoftware-properties-commonだから、こちらをインストールしたら問題なく動いた。
ちなみにこれはapt-fileでadd-apt-repositoryを検索することで見つけることができた。apt-file便利