sky’s 雑記

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

なぜ正社員が難しいか

以前こういう記事を書いたが結構深掘りが進んだので忘れないうちにまとめておく。 今のところ社員をやることの最大のデメリットは会社に対して甘えが生じるということ、 会社目線だと自分がやっていること、やろうとしていることにメリットがないと分かって…

正社員とフリーランスのpros/consと重要度

正社員を辞めて1ヶ月くらい経過しました、 喉元過ぎれば〜で悪いことも時が経つと美化されて後々誤った選択をしてしまうのでつらつら書いていきます。 正社員 pros ★★★☆☆ ラベル まじでくだらねぇと思いつつ、どこどこ株式会社です、というと「オー(棒読み…

OpenVPN on Raspberry Pi開通

2022年最後の投稿 1つ前の投稿の続き OpenVPNが繋がらないとき/繋がったがインターネットに繋がらないときの確認事項 - sky’s 雑記 元々ubuntu desktop上で動かしていたんだけど、マシンの移行が大変だったりしたのでdocker化してraspberry piで動かすように…

OpenVPNが繋がらないとき/繋がったがインターネットに繋がらないときの確認事項

自宅にVPNサーバーをOpenVPNで構築したのですが、 引っ越しやマシンの変更があると詰まりそうなので念の為まとめます。 環境 ubuntu 18.04 OpenVPN 2.4.4 x86_64-pc-linux-gnu library versions: Open SSL 1.1.1 自宅のグローバルIP ドメインでなくIPアドレ…

Amazon ECS Exec CLIのワンライナー実行

ECS ExecのときにServiceとTaskのARNが必要なんだけど、 もっと良い方法あるかな $1にはClusterの名前が入ります。 aws ecs execute-command --cluster $1 \ --task $(aws ecs list-tasks --cluster=$1 --service-name $(aws ecs list-services --cluster=$1…

EXISTS と INNER JOIN のパフォーマンスについて

EXISTSをINNER JOINに置き換えるとパフォーマンスが上がるという主張をよく見かけますが、 ちょっと怪しい記事が多かったので調べました。 環境 他のDBでは確認していないのでMySQLに限定した話題です。 usersテーブルは複数のroom_usersを持ちます、レコー…

MySQLコンテナのready for connectionsを保証する

マイグレーションなどアプリケーションからMySQLを操作する場合にMySQLの起動を保証する方法についてです。 概要 docker exec db mysql -u${DB_USER} -p${DB_PASSWORD} でMySQLのready for connectionsを保証できます。 - name: wait for connections ready …

Github Actionsでワンショットタスクを実行する

最近はサーバーサイドの仕事が増えているので、 記事もサーバーサイドよりの技術が増えるかもしれません。 ECS Fargateにアプリケーションをデプロイする際、 あわせてDBスキーマの更新マイグレーションを行いたいユースケースについてです。 結論 steps: - …

英語の勉強を始める

新年度から転職して英語を使う環境で働き始めた、 仕事で不自由があるといけないので本腰入れて勉強しようと思う。 ちなみに英語力は10年以上前にTOEIC800ちょっと取った程度です。 スピーキング 当初の想定どおりではあるが全然話せない。課題意識としては3…

LiveDataのこれまで

Coroutinesのアップデートが盛んに行われており、昨今のAndroid界隈でLiveDataからFlowへ乗り換える機運が高まっているように感じます。今一度Flowへの乗り換えをスムーズに行うためにもLiveDataが発表された経緯など歴史を振り返りたいと思います。 Archite…

kotlinx-coroutines-testのrunBlockingTestについて

前回に引き続きCoroutinesの単体テストの話です。 kotlinx-coroutines-testのDispatchers.setMainについて - sky’s 雑記 今回はrunBlockingTest[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ツールのパフォーマンスが比較されてるんだが仕組みはわかってい…