つれづれ日記 2015年4月

予定

毎日


2015年4月30日 (木曜日)

20:32:44 # Life GetUserMedia でカメラの画像をとりこむ。 navigator.getUserMedia でカメラの画像を取り込んでCanvasにとりこんだあとtoDataURL()で画像を取得できるんだけど、いろいろな形式が指定できるので実際に手元のデータ(というが自分を撮影した画像で)計測してみた。 webp 75kB, png 850k, jpeg 145k くらいのさいず。JPEGはまぁ許せる範囲なんだけど、Webpすごくコンパクトでびっくりした。デフォルトはPNGだけどまぁPNGは写真の圧縮アルゴリズムとしては向いてないでしょう。

2015年4月28日 (火曜日)

11:35:18 # Life 100円均一の店で買ってきた時計が壊れてしまい、うちにアナログ時計がないなぁと思ったので作った。 適当につくってみた。 文字盤の文字の位置とかフォントとかこだわろうと思えばいくらでもこだわれるかんじに気づいて沼にはまりそうだったがそこはこだわらないことにしてみた。時代は多分CanvasなんだけどそこはオールドタイプにSVGで。多分30FPSでてる。

2015年4月27日 (月曜日)

11:34:00 # Life そろそろApple Watchをもってドヤ顔している人が増えてきたので久しぶりに時計アプリでも書こうかと。 昨年7月に買ったのでもうそろそろ一年くらい使っているわけか。 昨年9月ころにAndroid Wear用に書いたコードを再度コンパイルしようとおもってAndroid Studioの起動から順番にやっていったらGradle Pluginの非互換な変更のエラーが出た。泣ける。 結局まともに書いたアプリはひとつだけ、しかも自分の好きなNotificationを表示するだけのやつ。

2015年4月25日 (土曜日)

10:38:41 # Life 久しぶりに R でXLSデータソースからグラフを作る。 ggplot2 で作成。手元のデータはCSVとかXLSとかから変換することになるんだけどそうするとデータフレームになる。 家計簿から資産のArea stack graphが作りたいなと思ったんだけどデータフレームから reshape2パッケージに入っている melt 関数で形式を変換。データフレームのコラム名前がカテゴリであるような形式に変換するっぽい。これを理解するまでは困難だったけどあとはスムーズ。 あとNAを足すとNAになってしまうのでNAのところを0に置き換える方法を思い出す。 XLSからの入力はいろいろ方法があるんだけどとりあえずgdataを使ってread.xls()。円形式のところが[$¥411]とかついているのでそれを削除する関数を追加。 2015年4月という日付だとRがおこるので日付を適当に追加する正規表現で処理。 geom_area の使い方が最初意味不明だったんだけど、ggplotの結果に足せばいいらしい。えー。なんかDSL過ぎてよくわからんけどストリームみたいなもんか。戻り値をそのまま表示させようとするとグラフが描画されて何がおきているのかちょっと理解できなかった。Rってそんな言語だったのか?

parseXlsYen <- function(string) {
  # Parse Yen in XLS that is like [$\411]123,456,789
  v <- as.numeric(gsub(',', '', sub('^[[]\\$¥411[]]', "", string)))
  v[is.na(v)] <- 0
  v
}
date <- as.Date(gsub("([0-9]+)年([0-9]+)月", "\\1/\\2/1", rawdata$月))

p <- ggplot(melteddata, aes(y=value, x=date, fill=variable)) +
geom_area(position="stack") + 
xlim(as.Date('2003-01-01'), as.Date('2015-05-01'))
ggsave(file="plot-summary.png", plot=p)
	

2015年4月23日 (木曜日)

10:41:49 # Life Buffalo 無線LANとNasne. Multicast Snooping がデフォルトで有効になっているんだけど、 Nasneは有線で他に機器は無線でつながっているという構成だとマ ルチキャストのパケットが到達しない、ということかな。 この設定とDTCP-IP・DLNAとの相性の悪さについては結構みんなブログに書いているっぽい。 しかし、光テレビがマルチキャストでフラッディングするのが誰得な気がする。

あとはWPA2-PSKの鍵のリフレッシュのタイミングでテレビが接続失敗してるっぽかった。これは残念。60分に一回の設定なのでこれをもうちょっと伸ばしてバグっぽい挙動を回避。うげー。

17:23:30 # Life SQLiteをRで使う。Debian では r-cran-rsqliteパッケージをインストールすれば使える。 汎用のDBIを使うことになるんだけど、ちょっとSQLiteにしては面倒だけどまぁデータベース汎用としておもえば直感的。まずドライバー確保して、コネクションを取得して、クエリを発行。発行してしまえばRの普通のデータとして扱える。

	  library("RSQLite")
	  drv <- dbDriver("SQLite")
	  con <- dbConnect(drv,dbname="db.sqlite")
	  temp <- dbGetQuery(con, "select * from table");
	  plot(data.frame(time=temp$timestamp, temp=temp$temperature), type='l')
	

2015年4月21日 (火曜日)

10:23:55 # Life Emacs/Wl/MimeEditでGPG署名したメールを送るときに複数のGPG鍵があるときに使いたい鍵を選択してくれないので調べてみた。 epg のレベルでやってるのかなとおもって mm-sign-option 'guided を設定したけど特に何も起きないので困っていたのだけど、 mime-edit のレベルでやってるっぽい。 mime-edit-pgp-signersというリストがあるのでそれに鍵のIDを追加すればよかった。customizeで設定可能。複数のGPG鍵使う人そんなにいないのかなぁ。

18:42:07 # Life sqliteでinsert文発行しててやたら遅いなぁと思っていたらトランザクションのデフォルト挙動が一行ごとにコミットだった。 Begin transaction / commit を加えると高速になってめでたしめでたし。 一万トランザクションとかの実行は遅い。

2015年4月20日 (月曜日)

10:57:04 # Life 公開しているメールアドレスに来るSPAMメールは一応四半期に一回くらい眺めることにしている。 よくわからないメールが大量にくるんだけど、今日眺めたら面白いのがあった。どうも包装業界の雑誌に掲載依頼っぽい。たしかにパッケージングだ。

2015年4月8日 (水曜日)

11:05:36 # Life New Month. New Life. 自宅ネットワークを802.11ac対応にしてみた。 WPA2-PSKの設定ってどうやって書くのか毎回忘れる。


Junichi Uekawa