Diary

Diary

日々学んだことをアウトプットする場として初めてみました

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

もっとよく標準パッケージを使おう!

これは自戒を込めてになるんですが、もっとよく標準パッケージを使おう(知ろう)という話です。 なければ探す。 例をいくつかあげてみます。 URL Encode 基本的な言語には、URL エンコード・デコードをするための標準ライブラリがあるはずです。 Bad val en…

Java (Kotlin) で HTTP のステータスコードの定数を使う方法

Android (Kotlin) で Retrofit を使っていた時に、HTTP のステータスコードを使いたくなりました。 直にベタ書きするのはいやだなーと思っていたところ、HttpURLConnection のクラスに用意されていました。 import java.net.HttpURLConnection // int が求め…

bash [[ 内での <,> は文字列比較になるよ

bash で変数の評価を行う際に [[ をよく使うんですが、その中の <, > の意味を間違っていたがために、無駄に時間を使ってしまう事件がありました。 (未来の自分を含めた)皆さんには変なところで躓いて欲しくないため、こちらにメモしておきます。 [目次] …

Retrofit & Gson Converter でぬるぽ

以下のようなセットで API をコールしていた時に、『Non-null と思っていたのにぬるぽが発生する』ということが起きてしまいました。 HTTP クライアントとして Retrofit JSON to クラスのコンバーターとして Gson 原因 API サーバーで api-key が無効の時に …

git log を使って 1 日分のコード差分行数を計算

git log を使って、特定のユーザーが何行進捗を出したかを確認する例のメモです。 特に、initial commit などのコミットメッセージに代表されるプロジェクト(フレームワーク)の初期ファイルを、コミットメッセージから無視するようにしました。 特定のユー…

Android のテーマアイコンの設定

Android のテーマアイコンを有効にする方法と、アプリに設定する方法を紹介します。 [目次] テーマアイコンとは テーマアイコンを有効にする方法 自アプリに設定する方法 リンク おわりに テーマアイコンとは アプリのテーマアイコンとは、以下のように『ユ…

<meta charset="UTF-8"> をつけてるのに文字化けする

Web

Apache 2.4 を使ってコンテンツを置いているサーバーで、HTML の <head> 内に <meta charset="UTF-8"> をつけているのに文字化けが発生する現象が発生しました。 これは次のように content を指定したら解決しました。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></meta></meta></head>

Jetpack Compose で Material You を使う

今回は、Jetpack compose で Material You を使う方法についてメモしておきます。 なお、今回の内容は『Android DevSummit "Material You in Compose apps"』から学んだものとなります。 環境 - kotlinCompilerVersion '1.6' - compose_ui_version = '1.3.0-…

ワイヤレスデバッグをステータスバーに表示する方法

開発者モードのオプションにあるワイヤレスデバッグを、ステータスバー(通知バー)に表示する方法をメモしておきます。 開発時、ステータスバーにデバッグオプションを表示させた方が便利なケースが多いです。 標準ではこちらに表示されておりません。 Sett…

Android: offline-first

Dev Summit: Create offline-first apps を試聴したのでそのメモです()。 repository 層の役割 リポジトリー層の役割として、少なくとも 2 つのデータソース(LocalDataSource と NetworkDataSource)からデータを取得することを考える。 この際、取得でき…

Jetpack Compose をデバッグする方法

今回は Android Studio の Layout Inspector Jetpack Compose のを使ってみていくことになります。 環境 - Android Studio: Android Studio Dolphin | 2021.3.1 - kotlinCompilerVersion '1.6' - compose_ui_version = '1.2.1' 確認方法 右下の方に Layout I…

ShellCheck から学ぶ良いスクリプトの書き方 〜SC2086(ダブルクォート)編〜

とりあえずは変数はダブルクォーテーションで囲もうってことなんですが、囲まないとどうなるか少し調べてみました。 [目次] Double quote to prevent globbing and word splitting. globbing word splitting おまけ おわりに 今回は簡単な部類である SC2086 …

Jetpack compose で Indicator をなめらかにする

今回は、Jetpack compose でなめらかに Indicator を表示する方法についてメモしておきます。 なお、今回の内容は『Android DevSummit "5 quick animations to make your Compose app stand out"』から学んだものとなります。 [目次] 環境 実装方法 通常の I…

Android のマルチモジュール化で Preview の高速化

今回は Android のプロジェクトをマルチモジュール化し、Jetpack Compose の Preview を高速化してみました。 [目次] 環境 マルチモジュール化のメリット デメリット マルチモジュール化の方法 プレビュー速度の向上 Links おわりに 環境 - PC - macOS versi…

Android のモジュールで BuildConfig を生成しない方法

この間マルチモジュールの対応をしたのですが、その際に BuildConfig について少し気になったので、今回はモジュールにおいて BuildConfig を生成しない方法についてメモしておきます。 各モジュールにおいても、標準では以下のようなファイルが generated …

マルチモジュールでの compose navigation におけるベストプラクティス(Android DevSummit)

Compose の nagitaion における multi module 対応についての内容を youtube で見ました("Type safe, multi-module best practices with Navigation Compose")。 この中で 5 つのベストプラクティスが紹介されていたため、簡単に紹介します。 Compose のス…

Jetpack compose で Back-end (JVM) Internal error

Jetpack compose で開発中、以下のようなエラーが出ました。 Caused by: org.jetbrains.kotlin.codegen.CompilationException: Back-end (JVM) Internal error: Couldn't inline method call: CALL 'public final fun Column (modifier: androidx.compose.ui…

bash スクリプト初心者が知っておきたいことまとめ

いまだに自分も初心者ですが、 初心者から見て初めに知っておきたかったこと、思いがけず詰まったことをメモしておきたいと思います。 誰か(来年のぼく)の参考になればと思います。 [目次] 環境 結論 スタイル編 変数 [ はコマンドです! エラーが起きても…

emulator-5554 offline の退治法

emulator-5554 offline の退治法(Linux, macOS) emulator は 1 つも立ち上げてないはずなのに、more than one device/emulator と表示され adb コマンドや scrcpy などが動作しない場合があります。 adb shell dumpsys package d adb: more than one devic…

adb コマンドで端末を指定して起動する方法

adb コマンドで端末を指定して起動する方法 複数端末・エミュレータが接続されているケースにおいて、adb コマンドを使う際に特定の端末を指定する方法です。 # シリアル番号を特定する $ adb devices List of devices attached 1C221FDF600AW6 device # 1C2…

GitHub Actions 個人用チートシート

GitHub Actions ハロワの記事も書いているので、よかったらご覧ください。 基本的にはドキュメントがしっかりしているのでそちらで足りるかと思うのですが、個人的に何度も調べてるものはこちらにまとめておきます。 [目次] トリガー 手動実行できるようにす…

GitHub Actions の shell 設定について調査

GitHub Actions の shell の設定について、以前から ubuntu の通常 shell とは異なってるな〜と、気になっていたので調べてみました。 [目次] 時間がない人まとめ set -o で確認 emacs errexit histexpand history monitor Actions の実行結果確認 -e -e を…

GitHub Actions ハロワ

[目次] GitHub Actions について 値段 他 CI/CD ツールとの比較 ハロワ Web 上からセットアップ Links おわりに GitHub Actions について GitHub Actions とは何か、について私が語るのもどうかと思うので、公式の概要をご覧ください。 1 文で言えば(唯一日…

FCM を使って push 通知(iOS, Android)

今回は、push 通知の代表格である Firebase Cloud Messaging (FCM) を使って、プッシュ通知を行いました。 通知させる端末は iOS, Android を対象に、通知を行うサーバーは Go の admin-SDK を使って作成しました。 この記事を見たらなるべく迷わずに通知ま…

各プラットフォームにおけるスクショ防止調査

Netflix 等では、画面スクショ等をしようとした時に、内容が表示されない用画面が真っ黒になります。 自分はこういった機能をみると実装方法を知りたくなるたちなので、少し調べてみました。 [目次] 時間がないひとまとめ はじめに コンテンツ保護(真っ黒で…

拡張関数を使って Jetpack Compose にカスタム Modifier を作成

Swift, Kotlin などの言語では拡張関数なるものを定義する事が可能で、好きなクラスにメソッドを生やす事が可能です(Int などの基本的なクラスに対してさえ可能)。 今回はこの機能を使って Jetpack Compose でのカスタム Modifier を作成しました。 [目次]…

bash で `!` は特殊な意味を持つっていう話

bash で ! は特殊な意味を持つので注意しよう、という話をしたいと思います。 私は語尾に ! をつける癖があるのですが、そのせいで予想と異なる挙動をすることがありました。 [目次] 時間がないひとまとめ 環境 なにが起こったか とりあえずはマニュアル ! !…

bash 大文字小文字を無視して比較したい

bash の文字列比較において、大文字と小文字を区別して比較する方法のメモです。 [目次] bash のパラメータ展開の文字列操作 zsh にはない? sed で大文字小文字 tr で変換 awk でパターンマッチ bash のパラメータ展開の文字列操作 bash のパラメータ展開を…

GitHub で全リポジトリのコード行数をカウントを出力する CLI を作りました

GitHub ではアカウントページに『草』が活動量(コントリビューション)として表示され、ユーザーの日々のモチベーションに繋がっています(知らんけど)。 しかし、この表示には次のような問題があることが分かっています。 直接進捗以外に関係する項目もカ…

bash リダイレクトはファイルを初期化します

これはかつての自分が本当に体験したことなのですが、『ファイルの情報源』と『リダイレクトの出力先』を同一にしてしまったために起きた怖い怖い現象の話をしたいと思います。 [目次] 環境 時間ない人向けまとめ 自己リダイレクト system call をみてみる …