Diary

Diary

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

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

bash スクリプトはオンメモリにならない?

[目次] 環境 オンメモリ bash で検証 メインファイル(test.sh)の中身を変更する サブファイル(echo_script.sh)の中身を変更する おまけ:python で検証 終わりに 環境 - Machine: Raspberry Pi 4 Model B Rev 1.4 - OS: Linux ubuntu 5.4.0-1045-raspi - Bas…

ワンライナーで棒グラフを作る

ダウンロード時などに、進捗を表すグラフをターミナルでも見かけることが多く、「自分でもグラフっぽいの作れるんじゃないか!」と思ったので作ってみました 棒グラフを作ってみた 具体的には、二列のデータ(二列目は数値)から以下のようなグラフを作るこ…

Android で署名付きビルド+ハマったこと

Android で apk ファイルの署名付きビルドを行ったのですが、その際に少しハマった(gradle.properties & github actions)のでその点についてメモしておこうと思います [目次] アプリレベルの build.gradle の記述 ハマったこと gradle.properties の記述は '…

Jetpack Compose で正しい R の import がされない!

環境 - compose_version = '1.0.1' - targetSdk 26 - kotlinCompilerVersion '1.5.21' 問題点 以下のように composable 関数の中で string リソースファイルの文言を使いたいケースを考えます。 Text( text = stringResource(id = R.string.your_feet) ) こ…

apache のアクセスログを linux コマンドでチョット確認してみた

自宅のラズパイ上に apache でサーバーを立てており、Android アプリのバックエンドとして利用しています。 今回はそのログを少し覗いてみたところ、個人的に面白い結果が得られたので共有をしたいと思います。 HTTP ステータスコード集計 $ cat `ls access.…

.gz ファイルをまとめて cat する

apache のログなどは、貯めていくと勝手に .gz ファイルに圧縮されるかと思います。 例えば、自分のラズパイ上の apache のログは以下のようになっています。 /var/log/apache2$ ls access.log access.log.13.gz access.log.5.gz access_log error.log.12.gz…

jetpack compose の alertDialog でボタンをいい感じに配置する

今回は、jetpack compose の alertDialog を使って、以下のようにボタンを中央から均等に配置させる方法について紹介したいと思います。 環境 - compose_version = '1.0.1' - targetSdk 26 - kotlinCompilerVersion '1.5.21' 実装方法 「compose alertDialog…

Text ではなく TextButton に testTag をつける

今回は compose のテストに使用する testTag のつける場所についてハマった話をしようと思います。 環境 - compose_version = '1.0.1' - targetSdk 26 - kotlinCompilerVersion '1.5.21' Text に testTag をつけたら失敗した話 TextButton を使って compose …

apache access_log 中の User-Agent まとめ

現在 apache のアクセスログの解析を自分でやってみようと進めております。アクセスログの中には UserAgent の欄が存在し、UserAgent には Scraping の際に苦しめられた思い出があります(以下記事)。 そこで今回は、自分の所有する色々な端末からどのよう…

adb コマンドのみで画面のスクロールを行う

adb コマンドのみで画面のスクロールを行ったので、今回はその方法についてメモしておこうと思います。 スクロール方法 現在の端末のディスプレイサイズを取得する adb shell wm size Physical size: 1080x2160 adb コマンドで swipe のイベントを送る adb s…

adb コマンドを使ってデフォルトのランチャーアプリを設定する

adb コマンドを使ってデフォルトのランチャーアプリを設定する方法のメモです。 デフォルトアプリの設定方法 adb shell cmd package set-home-activity "PACKAGE/ACTIVITY" -user --user 0 起動中の activity の調べ方については以下の記事も参考にしていた…

adb コマンドで現在起動中の activity を立ち上げる

adb コマンドを使いアクティビティを調べ、そのアクティビティを立ち上げるところまで行いました。 今回はそのまとめです。 [目次] 現在起動中のアクティビティを調べる adb コマンドでアクティビティを起動する adb start -a: インテントを起動 adb start -…

”正しいはず”の URL が WebView で開けない

ブラウザで開ける”正しいはず”の URL が WebView で開けない症状に遭遇しました。 結論としては「渡した URL に最後のスラッシュが抜けていた」という単純なものでしたが、今まで意識したことがなかったので発見が遅れてしまいました。 [目次] 環境 忙しい人…

retrofit を使った compose UI testing で could not find any node が出た

以下のような状況で compose の UI のテストをしていたら、なかなか希望の node が取れませんでした。 自分の探す方向性が悪くなかなか解決できなかったので、その反省を兼ねて記録しておきます。 公式の compose Test 記事を参考に compose の UI テストを…

「Could not resolve all files for configuration」junit が読み込めない

Android Studio において、「test は実行できるが androidTest の実行ができない」という症状に陥りました。 今回はその解決方法についてメモしておこうと思います。 [目次] 環境 プロジェクトレベルの build.gradle アプリケーションレベルの build.gradle …

JetPack Compose の文脈で Action Bar を変更する

JetPack Compose を使い簡単にアクションバーを変更する方法があったのでその紹介です。 環境 - compose_version = '1.0.1' - targetSdk 31 - kotlinCompilerVersion '1.5.21' 実装 Action Bar アクションバーとは、端末上部の時間などが表示されている部分…

【JetPack Compose】Image で長方形の写真を正円にカットする方法

元の形が長方形の画像を正円に切り取る際に、地味に調べるのに時間がかかったのでメモしておこうと思います。 [目次] 環境 うまくいかなかった例 その時の写真 改善策 上部分を用いて正円を作る おわりに 環境 - compose_version = '1.0.1' - targetSdk 31 -…

remember の import 時にエラーになる (Jetpack compose)

経緯 Jetpack compose の中で、以下のように remember を使おうとしてました。 var isDisplayed by remember { mutableStateOf(false) } 最初は remember の文字が赤くなっていたので、Alt + Enter を押し自動インポートさせました。 無事 androidx.compose.…

ターミナルでゼロ埋めを行う方法

ターミナル上でゼロ埋め(ゼロパディング)を行いたいことがあったので、その方法についてまとめてみたいと思います。 [目次] ゼロ埋めを行う方法 printf seq seq + awk (おまけ)ゼロ埋めされた値を計算に使う おわりに ゼロ埋めを行う方法 printf format …

Android Studio でディレクトリが重なって表示される

Android Studio のデフォルトでは以下のように、可能な限りディレクトリを重ねて表示されていると思います。 ところがこの表示の仕方では、重なっている中間層にクラスなどを作ることができず、今までもどかしい思いをしてきました。 そこで今回は、表示方法…

API キーを安全に Android プロジェクトで管理する方法

API キーを(多少)安全に Android プロジェクトで管理する方法についてまとめておこうと思います。 前提 Git でプロジェクトを管理していること Android Studio を使用していること 手順 1. gradle.properties(Project Properties)に API キーを記述キーを…

特定のサイトからスクレイピングできない

Go

症状 golang で http リクエストを投げてスクレイピングしたい時、特定のサイトでは全く情報が取れない時がありました。 解決策 Header 情報に Agent の情報を入れてあげると解決しました。 req.Header.Add("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone …

gpio のアップデート手順で the package is missing, has been obsoleted のエラー

gpio のバージョンをアップデートしようとした際に次のようなエラーで詰まったので、解決策についてメモしておこうと思います。 環境 ubuntu 20.0.4 Raspberry Pi 4 Model B エラー内容 $ sudo apt install libc6:armhf libgcc1:armhf Reading package lists…

ubuntu で wget がインストールできない

ubuntu で wget がインストールできない 環境 ubuntu 20.0.4 Raspberry Pi 4 Model B $ cat /etc/os-release NAME="Ubuntu" VERSION="20.04.2 LTS (Focal Fossa)" ID=ubuntu ... $ uname -a Linux ubuntu 5.4.0-1038-raspi #41-Ubuntu SMP PREEMPT Thu Jun 1…

【sed】文頭と文末に文字挿入

(目次) 文頭に挿入 文末に挿入 両方のオプションを指定 おわりに 注)今回の記事の内容は mac(zsh)では動作確認ができませんでした。 文頭に挿入 1i(文字列) という形にして、シングルクォーテーションでかこんであげます。 「insert オプションを 1 行…

【ターミナル】直前のコマンドを引数を変えて実行

直前のコマンドを引数を変えて実行 例えば以下のように、1-10 までの素数を求めるワンライナーがあります。 $ seq 10 | factor | awk 'NF == 2' 動作を確かめた後で様々な数値で試したいとき、そのまま 10 を書き換えてもよいですが以下の方法があります。 $…

Keynote を利用して動画から gif ファイルを作成する

検索して出てくる gif 生成ツールでは、長目の動画では上手くいかない。 そこで、Mac の機能(Keynote)を使って gif を生成する。 gif ファイルを作る 動画を Keynote にはる Keynote のノートのサイズを動画の縦横に合わせる 動画の貼られたページを書き出…

Kotlin で Cloud Firestore にアクセスする際の注意

Kotlin を使って Firebase の Cloud Firestore からデータを取得する際、データクラスのバインドでエラーが出たのでその解決策をメモしておきます。 [目次] クエリで取得したデータをクラスにバインドさせる MemberPayload のデータクラスの定義 データクラ…

Linux コマンドで文字コードを変換する

今回は、Shift_JIS と utf-8 の変換などについて扱います。 [目次] 文字コード xxd で実験してみる 元に戻す 1バイトずつチェック 2進数から文字列を復元 nkf Shift_JIS のファイルを UTF-8 に変換する UTF-8 のファイルを Shift_JIS に変換する おまけ ま…

分数の足し算引き算を AWK で

前回の記事で、AWK を使ってどのように分数の約分ができるのか、ということをやりました。 今回は、引き続き足し算と引き算をさせてみようと思います。 前回のまとめ 以下のようにして約分を行いました。詳しい方針は過去記事をご覧ください $ echo 6/8 | tr…