sky’s 雑記

主にAndroidとサーバーサイドの技術について記事を書きます

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

kotlinx-coroutines-testのDispatchers.setMainについて

Coroutinesの単体テストの話です、マルチスレッドな関数の単体テストを書いていると理解が曖昧なところがまだあるので改めて調べることにします。趣旨としてはCoroutineのテストを書くときに@BeforeでDispatchers.setMainを何故やる必要があるのかと何が行わ…

Kotlin 1.4.20-M2でDeprecatedとなったKotlin Android Extensionsを弔う

表題の通りKotlin 1.4.20-M2でKotlin Android ExtensionsがDeprecatedとなりました、個人的には好きな技術だったので弔いがてら記事にしたいと思います。 概要 Kotlin Android Extensions[1]はKotlin用のView参照機構で、findViewByIdによるViewの参照の問題…

AndroidにおけるJSR-310実装

ちょっとツイッターに流れてきた情報を見て気になったので改めて調べてみました。 これが凄く気になってて、本当に java.time API移行していいのかなぁ・・・ともにょってる https://t.co/XLwTNu9EuB— (@red_fat_daruma) June 3, 2020 TL;DL ThreeTenABPでJ…

9月の振り返りと10月の目標

Android 一応月1は維持している。 Coroutine Suspending Functionsを理解したい2 - sky’s 雑記 Android関係なくなりつつあるが、Coroutineについてもう少し調べて記事にする。 大学院 授業のほうは比較的順調?らしく現在10単位取得。 弊学は4学期制で10月か…

関数プログラミングと形式手法の振り返り

本日で春先から受講していたJAISTの授業I217関数プログラミングを終えました。 経緯としてはSET(Software Engineer in Test)界隈で形式手法が取り上げられることがあり、自分の業務守備範囲からそう遠くない領域だったため興味を持ち受講しました。今回学ぶ…

Coroutine Suspending Functionsを理解したい2

続きの記事です。 Coroutine Suspending Functionsを理解したい1 - sky’s 雑記 振り返り fun main(args: Array<String>) { CoroutineScope(Dispatchers.Main).launch { println("start") greet() println("end") } } suspend fun greet() { println("suspended!!") }</string>…

7月の振り返りと8月の目標

Android DIについて詰める予定だったけど書かなかった、とりあえず月1ペースは維持できている。Androidは仕事で触れていて書きたいものは無限に出てくるので、興味の赴くままに記事を書く形でいいかなと思っている。8月は既にCoroutineについて記事を書いて…

確率的データ構造ブルームフィルタについて

Scalable Packet Classification on FPGA - IEEE Journals & Magazine 論文を読んでいて初見のデータ構造があったので記事にしておく、wikiのほうが確かだし詳しいので自分用のまとめです。 内容はルーターのようなネットワーク機器に実装されるパケットクラ…

Coroutine Suspending Functionsを理解したい1

導入 今更ながらCoroutineのsuspendを不思議に感じることが増えてきて、なんとなくステートマシンで動いているらしいとかいう曖昧な理解のまま使っているのも癪なので本腰入れて調べてみることにする。タイトルに1と書いてあるのはちょっとずつでもアウトプ…

ViewPagerからViewPager2に移行するときのちょっとした罠

ちゃんとした記事を書きたいけど投稿しないよりマシなので小ネタ投稿 ViewPagerを0以外のpositionで起動したいときに以下のようにすると思う. view_pager.currentItem = 1 内部的にはsetCurrentItemInternalのsmoothScrollという値にfalseが渡っていてこれ…

エイシング プログラミング コンテスト 2020 D - Anything Goes to Zero

atcoder.jp 昨日のD問題,このレベルは本番で出ても難しい. 解答だけ見ると真新しい知識はないんだがビット系の問題はどこから取っ掛かりをつければ良いか勘がつかめていない. 回答時の方針 本番中に提出したのが以下のコード. Submission #15177835 - AI…

6月の振り返りと7月の目標

5月の振り返りと6月の目標 - sky’s 雑記 Android DIについて記事を書いた. KoinとDagger2のパフォーマンスについて その1 - sky’s 雑記 あと7月入ってRemote Configについて記事を書いた. Firebase Remote Configの挙動について - sky’s 雑記 1記事/月が目…

Firebase Remote Configの挙動について

Remote Configは便利なんですが雰囲気で使うと思ったように動かなかったりするのでちゃんとまとめようと思います. TL;DL fetchAndActivateをするとremoteの値がローカルに保存され参照可能となる ローカルキャッシュの期限は最短でも12分でそれ以上の頻度で…

エラトステネスの篩のまとめ

整数にもう少し馴染みたいという気持ちからまとめてみます, 茶とか緑レベルくらいまで通用しそうなところまでです. それにしてもdiff800の壁が高すぎる... 今acceptが140だけど200くらいで緑コーダーになりたいが遠そうな感じ. ナイーブ エラトステネスの…

KoinとDagger2のパフォーマンスについて その1

唯一Koinが優位に立っていたと思っていたラーニングコストについてもDagger Hiltがリリースされ消え去ろうとしていますが,引き続きKoin利用勢としてDIライブラリの仕組みについて見ていこうと思います. 導入 以下のライブラリでKoinとDagger2の速度につい…

床関数と天井関数

小ネタです. 競技プログラミングでよくやるテク. 容量nの容器に容量dの容器で満たすことを考えたときに何回試行が必要かみたいな問題で使えるテク. 愚直にやると(long long)/(long long)と(double)(long long)/(double)(long long)の比較をするみたいな作…

ABC 170 D - Not Divisible

atcoder.jp エッジケースを通すコードを書く技術がまだまだ足りない. ネストが深くなったり変数定義が増えるときは大体考察が足りていなくて,そういうときはアクセプトしない. ネストを浅くしたり変数定義を減らせばアクセプトするのは事実だと思うが,そ…

ABC 129 C - Typical Stairs

atcoder.jp リハビリっていうほど元々すごいわけでもないけど レポート提出が落ち着いたのでリハビリがてら解きました diff 795 Total Accepted 122 回答時の方針 最近関数型言語に触れていたこともあり再帰脳で全探索しにいってしまった,当然間に合わず. Su…

5月の振り返りと6月の目標

4月の振り返りと5月の目標 - sky’s 雑記 Android とりあえず1記事/月は守った. 年末のアドベントカレンダーネタもなんとなく決まりつつあって流れとしては悪くないと思う. github.com ここでDIツールのパフォーマンスが比較されてるんだが仕組みはわかってい…

koinのインスタンス管理について

Android開発していて体験的に特に不満はないんだが,単体テストの書き味だけはrspecに劣るなと思っている.特にfactory_botによるテスト用のオブジェクト生成はtraitによる拡張とか含めシンプルで好きだった.サーバーサイドだとDBという状態の塊をテストする必…

ARC 042 A - 掲示板

atcoder.jp ギョームでも取り扱いそうな問題. diff 855 回答時の方針 Submission #12993816 - AtCoder Regular Contest 042 まずは全探索. 愚直にやると書き込みがあったスレッドのインデックスを0にしてそれ以外のインデックスを+1する,これをm回繰り返せば…

三井住友信託銀行プログラミングコンテスト2019 D - Lucky PIN

atcoder.jp diff 836 回答時の方針 Submission #12909261 - Sumitomo Mitsui Trust Bank Programming Contest 2019 N個の数字の中から3個選んで3桁の数字を作ろうかと思ったがとなり筋が悪そうだと思い別の方法を検討した.暫くして3桁としたときにN個の数字…

4月の振り返りと5月の目標

Android koinとdagger2の比較記事を書こうと思っていたらレシーバー付きラムダの記事になっていた. 5月こそはこれについて書きます. また仕事をしていて解決していない疑問が2つあって年末のアドベンドカレンダーの記事は以下のどちらかについて書くべく調査…

ABC 125 D - Flipping Signs

atcoder.jp 回答時の方針 Submission #12828298 - AtCoder Beginner Contest 125 最初に全探索を考えたの符号を反転する/しない操作をの範囲で行うと計算量はで間に合わない.次に局所的にの反転操作を考えたときにのときに反転が必要だと思った,これをi=0か…

ABC 165 C - Many Requirements

atcoder.jp 毎回至らなさしか感じていないが圧倒的にこなしてる数が足りていないので粛々と向き合い続けるしかない. 道具としては一度くらいは触ったことがあるものでもセンスが良いほうでもないので応用が効かず解法を覚えていくしかないように思う.とはい…

レシーバ付き関数リテラルのおさらい

kotlin製ライブラリを読んでいると頻出の文法だが,混乱して毎回復習してる気がする. レシーバ付き関数リテラルの説明のためにletとapplyの比較が良くされており, 実装でも良く使う文法で馴染み深いから混乱したらここに立ち返ると良い. public inline fun <T, R> T</t,>…

ABC 057 C - Digits in Multiplication

C - Digits in Multiplication 久々に頭悪すぎて涙出そうになった... 初手の方針 Nを素因数分解してA,Bの桁数の差が最小になるように貪欲に取っていけばいけるかなと思った. 制約もなので素因数分解の計算量はで十分間に合う. Submission #12467047 - AtCode…

緑になるために必要なパフォーマンス

今400の茶コーダー. 緑コーダーがレート800-1200. AtCoder Rating Simulator 5回連続で1200パフォでやっと緑. 1200パフォにはABC161を参考にするとDifficulty1100のD問題を開始1時間くらいまでに解く必要がある. ということで早解は得意じゃないのでA-Cまで…

ABC 164 D - Multiple of 2019

atcoder.jp 高校のときから整数問題苦手だったんだけど10年以上経って改めて苦しめられている... ちなみに4月中に茶色くらいはいけるだろうって言ってたのはなんとか滑り込みで今回達成しました. 初手の方針 そもそも整数問題っていうことに気づかなかった. …

ABC 128 C - Switches

atcoder.jp ABC147-C,ABC159-Eについで3度目のbit全探索が題材 初手の方針 N,Mが最大で10なのでスイッチのon/offパターンは全列挙しても,それぞれの電球が繋がるスイッチを1つずつ走査してもで余裕で間に合いそうということで全探索することにした。 [WIP] …