特別セール開催中!限定クーポンでお得にAndroidアプリ開発を学ぶ
「Kotlin知識ゼロOK!Composeで始めるプロのAndroid開発者になるためのマスターコース」は、新しくリリースされたばかりのコースで、Androidアプリ開発に興味を持っている方に最適です。このコースでは、Jetpack Composeを使ってAndroidアプリを作成する方法を学ぶことができます。
以下は、コースの概要です:
-
Kotlinプログラミングの基本: まずはKotlinの基本からスタートしましょう。シンプルなKotlinプログラムを記述して実行する方法を学びます。
-
Composeを用いたAndroidアプリ開発の基礎: Jetpack Composeを使って簡単なAndroidアプリを作成する方法を学びます。
クーポンは以下のサイトで配布中です!
Scrcpy: Android 開発で便利なツール
Android開発時に重宝するツールの一つにscrcpyがあります。Android端末の画面をパソコン上にミラーしてパソコンから操作できるソフトウェアです。Windows/Linux/Macに対応しています。
Macの場合、
brew install scrcpy
でインストールできます。私の環境だと
Error: gcc: the bottle needs the Apple Command Line Tools to be installed. You can install them, if desired, with: xcode-select --install
というエラーになってしましました。素直に
xcode-select --install
を実行してから再びインストール。ダウンロードとインストールには数分かかりましたが今度はうまくいきました。
実行する前に、adbへのパスを通します。
export PATH=$PATH:/Users/$USER/Library/Android/sdk/platform-tools
実行します。
scrcpy
同様の機能がAndroid Studioに搭載されている
さて、ここまでインストールして気がついたのですが、実はAndroid Studioに同様の機能が搭載されています。
Running Devicesを開き、+ボタンからConnected Devicesより端末を選択するだけ。
以上、とっても遠回りしてしまった実機ミラーリングでした。
こちらの記事もどうぞ
android studio assets folderは何が違うの?resとの違いは?
android studio assets folderは何が違うの?resとの違いは?
なんとなく、resフォルダは画像とテキストを置く場所、という理解で勧めていると、ふとassetsフォルダとの違いってなんだったっけ、となってしまいます。せっかくなので改めて整理します。
assets フォルダと res フォルダは、Android Studio プロジェクト内で異なる役割を果たします。
res フォルダ (リソースフォルダ):
- res フォルダは、アプリのリソースを格納する場所です。
- 画像、レイアウト、文字列、アイコン、色などのリソースはここに配置されます。
- リソースID が自動的に生成され、アプリ内でこれらのリソースにアクセスできます。
- 例えば、R.drawable.icon のようにリソースを参照できます。
assets フォルダ:
- assets フォルダは、未加工のファイルを格納する場所です。
- テキストファイル、音声ファイル、ビデオファイルなどがここに配置されます。
- リソースIDは付与されません。代わりに AssetManager を使用してファイルにアクセスします。
つまり、アプリで画一的に使用するようなリソースはルールに基づいてresに入れておけば自動的にアプリで使えるようになるという点が便利である。resが対応していないデータについてはassetsにおいておいて、自身のプログラムで利用する。という感じでしょうか。
memo
ansibleでLinuxコマンドの「patch」をインストールするスクリプトを書いてください。redhad系、Debian系両方対応するようにお願いします。
- name: Install patch command
hosts: all
become: true
tasks:
- name: Install patch on Red Hat based systems yum: name: patch state: present when: ansible_distribution == 'RedHat' or ansible_distribution == 'CentOS' - name: Install patch on Debian based systems apt: name: patch state: present when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'
# ログイン az acr login --name <acr-name> # レポジトリの一覧を取得 repositories=$(az acr repository list --name <acr-name> --output tsv) # 各レポジトリのイメージのダイジェストを取得 for repo in $repositories do echo "Repository: $repo" az acr repository show-manifests --name <acr-name> --repository $repo --query "[].digest" --output tsv done
# Azureにログイン
az login
# ACR_NAMEにはあなたのACRの名前を設定してください
ACR_NAME="your_acr_name"
# リポジトリ一覧を取得
REPOSITORIES=$(az acr repository list --name $ACR_NAME --output tsv)
# 各リポジトリについて、イメージのタグとダイジェストを取得
for REPO in $REPOSITORIES
do
echo "Repository: $REPO"
TAGS=$(az acr repository show-tags --name $ACR_NAME --repository $REPO --output tsv)
for TAG in $TAGS
do
DIGEST=$(az acr repository show-manifests --name $ACR_NAME --repository $REPO --query "[?tags[? @ == '$TAG']].digest" --output tsv)
echo "Tag: $TAG, Digest: $DIGEST"
done
done
#!/bin/bash
# Azure ACR name
ACR_NAME="<your-acr-name>"
# Output file path
OUTPUT_FILE="acr_images.csv"
# Get all repository names
REPO_NAMES=$(az acr repository list --name $ACR_NAME --output tsv)
# Create the output file with headers
echo "Repository Name,Image Digest,Tag" > $OUTPUT_FILE
# Loop through each repository
for REPO_NAME in $REPO_NAMES; do
# Get all image manifests for the repository
MANIFESTS=$(az acr repository show-manifests --name $ACR_NAME --repository $REPO_NAME --output tsv)
# Loop through each image manifest
while IFS=$'\t' read -r DIGEST TAG; do
# Append the repository name, image digest, and tag to the output file
echo "$REPO_NAME,$DIGEST,$TAG" >> $OUTPUT_FILE
done <<< "$MANIFESTS"
done
echo "CSV file with repository names, image digests, and tags has been created: $OUTPUT_FILE"
#!/bin/bash
# Check if ACR name is provided as an argument
if [ $# -eq 0 ]; then
echo "ACR name is required."
exit 1
fi
# Set ACR name from the argument
ACR_NAME=$1
# Get the list of repositories in the ACR
REPOSITORIES=$(az acr repository list --name $ACR_NAME --output tsv)
# Create a CSV file to store the output
OUTPUT_FILE="acr_images.csv"
echo "Repository,Image Digest,Tags" > $OUTPUT_FILE
# Iterate over each repository
for REPO in $REPOSITORIES; do
# Get the list of images and their digests
IMAGES=$(az acr repository show-manifests --name $ACR_NAME --repository $REPO --orderby time_desc --output tsv --query "[].{Digest: digest, Tags: tags[0]}")
# Iterate over each image
while IFS=$'\t' read -r DIGEST TAG; do
# Append the repository, image digest, and tags to the CSV file
echo "$REPO,$DIGEST,$TAG" >> $OUTPUT_FILE
done <<< "$IMAGES"
done
echo "Output saved to $OUTPUT_FILE"
Android Studio GiraffeでRealmプラグインの設定エラーを解決する方法
最新バージョンのAndroid Studio Giraffe(Android Studio Giraffe | 2022.3.1 Patch)を使用中にRealmを導入しようとしたところ、ビルドエラーに遭遇しました。以下はその問題と解決策についてのメモです。
エラーメッセージ
ビルド時に以下のエラーが発生し、ビルドが成功しません。
Build file '/Users/hiro/AndroidStudioProjects/MyApplication10/app/build.gradle' line: 6 An exception occurred applying plugin request [id: 'realm-android'] > Failed to apply plugin 'realm-android'. > API 'android.registerTransform' is removed.
背景
Android Studio Giraffeでは、Gradleというツールを使用してAndroidアプリケーションをビルドします。新しいAndroid Gradle Plugin(バージョン8以降)が導入され、その結果、以前のバージョンで使用されていた 'android.registerTransform' API が削除されました。この変更により、Realmプラグインが正常に動作しなくなりました。
解決策
以下の手順に従って、Realmプラグインの問題を解決できます。
以下の説明はGroovy DSLを採用しているプロジェクトが前提です。プロジェクトがGroovy DSLを採用していることを確認してください。Groovyを使用するには、プロジェクトを作成する際に "Build configuration language" で "Groovy DSL" を選択します。もしsettings.gradleの拡張子が.ktsである場合、Garoovyではありません。
次の手順を実行します。
settings.gradle(Project Settings)を開きます。dependencyResolutionManagement内のrepositoriesに、jcenter()を追加します。
dependencyResolutionManagement { repositories { google() mavenCentral() jcenter() // これを追加 } }build.gradle(Project: プロジェクト名)を開き、以下の行を追加します。buildscript { dependencies { classpath "io.realm:realm-gradle-plugin:10.13.3-transformer-api" } }build.gradle(Module: app)を開き、以下の行を追加します。plugins { id 'kotlin-kapt' id 'realm-android' } dependencies { // 他の依存関係 implementation 'io.realm:android-adapters:2.1.1' }
これらのステップに従うことで、Realmプラグインの設定エラーを解決し、ビルドが正常に通るはずです。
【ドラレコ】メモリを読み取り専用にして完成とする。ラズパイをリードオンリー化する方法【ラズパイ】
Raspberry Pi Zero 2 Wをリードオンリー化する
電源が急に切れた場合など、まれにSDカードのデータが破損してラズパイが起動しなくなることがあります。Read Onlyでマウントしておくことで、安定運用ができそうです。
リードオンリー化
設定画面を開きます
sudo raspi-config
4 Performance Optionsを選択します

P3 Overlay File Systemを選択します

Overlay File System(リードオンリー化)を有効にする画面です。
Overlay File System(リードオンリー化)が有効になりました。
ブートパーティーションのリードオンリーを有効にする画面です。
ブートパーティションの読み取り専用化が完了しました。
再起動するか聞かれるので
リードオンリー化の確認
overlayとして214M確保されています。
$ df -h Filesystem Size Used Avail Use% Mounted on udev 178M 0 178M 0% /dev tmpfs 43M 2.1M 41M 5% /run overlay 214M 214M 0 100% / tmpfs 214M 0 214M 0% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock /dev/mmcblk0p1 255M 60M 196M 24% /boot /dev/sda1 119G 38G 82G 32% /media/usb0 tmpfs 43M 0 43M 0% /run/user/1000
メモリが足りなくなり、ffmpegが動作しなくなったので残念ながら今回のシステムには向いていませんでした。
