おでーぶでおでーぶ

いろいろ書く。いろいろ。

2018-01-01から1年間の記事一覧

むしろ食われろ、餃子に

http://www.anime-line.com/animes/156/stories/2982 今年もやってまいりました、SHIROBAKO Advent Calendar 2018 4日目です。 adventar.org さて、SHIROBAKO 第12話、「えくそだす・クリスマス」の回を覚えているでしょうか? 作中で制作されているアニメ「…

2018年に開拓したオススメのビアバー or 醸造所

完全に忘れてた Beer Advent Calendar 2018 2日目です。 adventar.org もちろんこの日もビールを飲んだんですが、一枚も写真を撮ってなかったので、今年新しくいった国内外のビアバーや醸造所 *1 の中でもオススメをペタペタ貼っていきます。*2 ベルギー Bre…

静的解析(Lint等)に頼らず、ViewModelに載ってる LiveData を ViewModel 外で更新させないようにすることを考える

これはまだプロダクションで動かしてないので気をつけてください AAC ViewModel に生えた LiveData を外に出すとき、フィールドの重複宣言は面倒だし、だからといって直接 expose はしたくないし、それに MutableLiveData や MediatorLiveData を返してしま…

Kotlinの拡張関数を使って、Cursor#use すると ClassCastException で落ちる

現象 Fatal Exception: java.lang.ClassCastException: android.content.ContentResolver$CursorWrapperInner cannot be cast to java.io.Closeable 原因 Cursor が Closeable を継承するのは API 16 から。ContentResolver の返す Cursor が custom cursor …

Android app の versioning と naming

弊社ァでは今までリリースごとに1つずつバージョンを上げていたけれど、以下の問題点が存在した。 meaninglessなバージョンなので「それはアプリのx.y.zバージョンだとどれなのか」が分かりづらい。 e.g. SDK とのやり取り Internal Trackテスト版ではログが…

エミュレーターでプリインアプリを再現する

Google APIの入っていないAVDを作成しておく 今回は API 27 でお試し。 AVD name を確認しておく ls ~/.android/avd/ cd $ANDROID_SDK_HOME/tools export PATH=$PWD:$PATH # tools 以下にいないと以下のコマンドは失敗する # -writable-system で起動しない…

CircleCI の特定ブランチの特定jobのアーティファクトをダウンロードする

はい #!/usr/bin/env bash set -o pipefail set -eu export PRODUCTION_BRANCH="release" export JOB_NAME="build" latest_artifacts() { local -r build_num=$(curl -u "$CIRCLECI_TOKEN:" "https://circleci.com/api/v1.1/project/github/$CIRCLE_PROJECT_…

GithubのLatest Releaseからassetをダウンロードするスクリプト

はい #!/usr/bin/env bash set -o pipefail set -eu GITHUB_USERNAME="..." GITHUB_REPONAME="..." GITHUB_API_TOKEN_USERNAME="... : "${GITHUB_API_TOKEN:=$DANGER_GITHUB_API_TOKEN}" latest_gh_release() { curl -#L -H "Authorization: token $GITHUB_A…

Let's Improve Your and Co-workers' DX ~ CI Improvement Tips ~

そもそもの背景として、「自分や同僚のDX (Developer Experience) を上げる」というテーマで LT をしようとしていました。 そこで CI を設定、保守・運用するにあたって便利な Git、GitHub 周りの Tips と 具体的な CI として CircleCI の Tips を取り上げた…

OSS の公開と保守再開的な何か

最近いくつか OSS を公開したり、保守を再開しました。最近は Ruby 4割弱、BashScript 2割、Kotlin 2割、Golang 1割、YAML 1割、残りJava みたいな生き方をしています。 danger-apkstats Assertion system である danger/danger の Android apk 解析用 plugi…

java.lang.RuntimeException: Failed to parse data binding compiler options. Params: だけ出てビルドできない

multiple module構成のprojectで、とあるmoduleに汎用BindingAdapterを寄せていたら発生した。 なんのoptionがパースできないんだ・・・と思ったら android { ... dataBinding { enabled = true } ... } が抜けていただけだった。エラーメッセージ・・・とい…

Retrofit2でmultipart × multiple images をuploadする

久しぶりにやったらドチャクソハマったのでメモ interface Service { @Multipart @POST("upload") Call<Response> upload( @Part(/* images[] */) MultipartBody.Part[] images, @Part("message") RequestBody message); } Service service = getService(); List<MultipartBody.Part> parts</multipartbody.part></response>…

DroidKaigi2018を致命傷で終えて

DroidKaigi2018を終えて スタッフとしては今年で3回目の参加です。 2015年の初回は一般参加 2016年は東工大で開催だったので地の利(当時在学中)を活かして当日スタッフ 2017年は発表者兼通年スタッフ 2018年は通年スタッフ という感じ。 今回はセッション公…