2016-10-30 (日)
ICFPCのTシャツ届いていた.
この日記はフィクションです.登場する人名・団体名・地名・職業などはぜんぶ架空のものです. なので実際のものとは何も関係がありません. それから,写真のように見える画像はCGもしくは念写によるものです.
ICFPCのTシャツ届いていた.
mp4いじるのにmp4boxやffmpeg使ってたけど,実装いじりやすいシンプルなやつが欲しかったので書き始める.ためしにmp4をflvに詰め替えてみたり.flvの生成は楽だけど,逆はめんどい.
今日も引きこもる.
なんとなく窓の外を見たら,建設中のマンションが伸びててスカイツリーが見えなくなってるのに気づいた.昼間もカーテン閉めてるので気づいてなかった.
PCの周りのUSBハブとケーブル整理したくて,いっそのこと今後を見越してケーブルをType-Cにしてみようと思ったのだけど,まともなUSB 3.1ハブが見当たらない.売ってるUSB 3.1ハブのほとんどが,MacBook に挿すためにホスト側のケーブルだけType-CにしたGen1のハブで,欲しいのはそれじゃない...
MacBook のおかげか,USB 3.1 Gen2 のSSDやHDDは出始めたみたいだけど,まともなハブが無いと複数台使うとき不便そう.
やっと開発環境をひととおりAndroid Studioに移行し終わった.
ついでに,ニコニコPlayer(仮)をアップデート.
AdMobの広告周りのライブラリも古くて,ずっと管理画面上に警告出ているのでいい加減に差し替える.play-services-ads と play-services-ads-lite があるけど,play-services-ads-liteの方が圧倒的にapk小さくなる.Google Play Servicesが無いと動かないらしいけど気にしないことに.
minSdkVersionが低いせいでビルドできないので,AndroidManifest の uses-sdk に
tools:overrideLibrary="com.google.android.gms, com.google.android.gms.ads"
と書いておくとアプリのAndroidManifest.xmlの値でビルドできる.(未対応の環境で呼び出さないようには気をつけないとだけど)
Developer Console のリリース前レポート,署名済みのapkの中身を確認しないでアップロードしても,うっかり壊れたapk公開してしまったりする心配が無くなるので便利.
家から出ずに引きこもる日.
Android N から View.showContextMenu()の引数に表示座標が追加されてるな...ContextMenuは中央に出ちゃうので,ICS以降だったらPopupMenu使うようなコード書いた覚えがある.ただ,Activity.openContextMenu(v)のときは位置を指定できなさげ.
Playストアのアプリの統計情報がCloud Storageに入ってるようなので,色々なデータ見れるようにする.
とりあえず,インストール数から端末の寿命が分かるかなと思って端末ごとのインストール数の推移を出してみる.
インストール数5000以上の端末を抜き出すとこんな感じ.
インストール数が一番多かった日を1として日毎の値を出してみた.750日くらいが半減期か.もちろん,アプリと端末の相性とか,他のアプリに流れたユーザとかも多いはずなので実際の端末の寿命では無いのだけど.
思ったよりメーカーごとの差異が無い.評判が悪かった機種でもがんばって2年くらい使う人が多いのかなあ.あとこのグラフに出てきてないけど最近の機種は寿命が長い気もする.
本当は,Prediction APIで最近の端末の今後の推移とか出そうと思ったのだけどグラフの形が単純なのであまり面白くないかな.
Google Cloud StorageをRubyから使ってると,FileVerificationError出るの何だろと思ったら,サーバ上でgzip圧縮されてるデータは,APIが返すMD5 digest も gzipされた状態のものになるのだけど,rubyのクライアントでダウンロードするとgzipされてないデータ取ってくるので絶対に一致しないような... とりあえずverify: :noneしとく.
直そうかと思ってリポジトリ見たら開発が活発,というか自分が使ってるバージョンとインターフェイス変わっててとりあえず様子見.
触ろうと思いつつ数ヶ月たってしまった気がするけど,Vulkan.
Intel HD Graphics 5500がVulkan 1.0をサポートしてるので,X250で動くかと思ったのだけど,Intelが公開してるWindows用ドライバがSkylake以降じゃないと駄目だった.Windowsは駄目だけど最近のLinuxにはドライバ入ってるみたい.
とりあえずAndroidで試す.
https://developer.android.com/ndk/guides/graphics/getting-started.html
サンプル動かすだけだけど,いつもどおりGradleに苦戦.Android Studio 2.2でcmakeまともに使える様になったらしいので,NDK周りは今後は楽になるのかなあ.いくつかビルドできてないサンプルあるけど放置.
サンプル見てると,GLSLがコード中に文字列で書かれてて,あれ?と思ったけど,util_init.cpp で実行時にglslangでコンパイルした結果をVkShaderModuleCreateInfo.pCodeに突っ込んでるだけだった.せっかくSPIR-Vが使えるので,実際に使うときはコンパイル済みのファイルを使うのが良さげ.utilsに色々入ってるので,サンプル本体だけじゃなくて,こっちも読まないと何やってるのか分からない.
メモ:
試してないけど,シェーディング言語はHLSLも使えるっぽい.というか,SPIR-Vにコンパイルさえできれば良いのか.
SPIR-VはLLVMのbytecodeとは無関係の独自のフォーマットになったみたい.
VulkanのAPIで読み込んだシェーダーをOpenGLで使ったり,OpenGLで作ったVBOをvkMapMemoryしたりしたいのだけど,可能なのかどうかも良くわからない.