2022年12月05日

java版 FlappyBird の学習

 ソースが公開されている 小規模な java版 FlappyBird
https://github.com/granttitus/FlappyBird
フォーク

2022年12月04日

php 5.3 → 5.6

相変わらず古い環境の php 5.6 に合わせた時の備忘録。
$ cat /etc/redhat-release
CentOS release 6.8 (Final)
デフォルトは php 5.3。...▼

続きを読む "php 5.3 → 5.6" »

2022年10月10日

Image Asset ツールが起動しない?!

 Android Studio Bumblebee | 2021.1.1 で正常だった Image Asset ツールが Dolphin | 2021.3.1 にバージョンアップして起動しない現象。

再現環境 ↓
Android Studio Dolphin | 2021.3.1
Build #AI-213.7172.25.2113.9014738, built on September 1, 2022
Runtime version: 11.0.13+0-b1751.21-8125866 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 11 10.0
GC: G1 Young Generation, G1 Old Generation
Memory: 1280M
Cores: 8
Registry:
    external.system.auto.import.disabled=true
    ide.text.editor.with.preview.show.floating.toolbar=false
 WEBの代替サービス...▼

続きを読む "Image Asset ツールが起動しない?!" »

2022年10月09日

Java11から導入された関数が使えない?!

サブタイトル:オリジナル ライブラリ jar ファイル作成と 利用パターン
再現環境
Android Studio Dolphin | 2021.3.1
Build #AI-213.7172.25.2113.9014738, built on September 1, 2022
Runtime version: 11.0.13+0-b1751.21-8125866 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 11 10.0
GC: G1 Young Generation, G1 Old Generation
Memory: 1280M
Cores: 8
Registry:
    external.system.auto.import.disabled=true
    ide.text.editor.with.preview.show.floating.toolbar=false
Android Studio Dolphin | 2021.3.1
Build #AI-213.7172.25.2113.9014738, built on September 1, 2022
Runtime version: 11.0.13+0-b1751.21-8125866 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 10 10.0
GC: G1 Young Generation, G1 Old Generation
Memory: 1280M
Cores: 6
Registry:
    external.system.auto.import.disabled=true
    ide.text.editor.with.preview.show.floating.toolbar=false
 これらの Android Studio は Java11 が使えるはずが、なぜか
int i = 0x20BB7;//ツチヨシ Unicode
String str = java.lang.Character.toString( i );
をビルドすると
「エラー: 不適合な型: 精度が失われる可能性があるintからcharへの変換」
"error: incompatible types: possible lossy conversion from int to char".
のコンパイルエラー。
 Java11から導入された「public static String toString​(int codePoint ) new」関数を使用する為
プロジェクト\app\build.gradle
~
android {
	~
	compileOptions {
		sourceCompatibility JavaVersion.VERSION_11
		targetCompatibility JavaVersion.VERSION_11
	}
}
~
を指定。やみくもに検索して見つかる環境変数「JAVA_HOME」値 や、gradle.properties「org.gradle.java.home」値を指定する情報は関係なさそう。
GitHub commit 419b837d40a6995bc690610bd995167ebe07623f
 ところが...▼

続きを読む "Java11から導入された関数が使えない?!" »

2022年10月08日

Basic Activity 備忘録

●2つのフラグメント画面を行ったり来たりするだけのシンプルな Basic Activity テンプレートを選択。
git commit new

●Binding を除外。
git commit new

●アクティビティ、フラグメントのライフサイクルを理解する為 ログを追加。
git commit new

●First fragment のボタンクリックで Second fragment へメッセージを渡して表示。
git commit new
元々、引き数を埋め込むStringリソースが用意されているのに Second fragment の TextView が表示されない。これを完成させる。

●逆に Second fragment のボタンクリックで First fragment へメッセージを渡して表示。
git commit new

●応用として Activity、Fragment どちらからも利用できる DialogFragment 実装例。...▼

続きを読む "Basic Activity 備忘録" »

2022年10月03日

java の interface(CallBack)備忘録

FrameMain.jar  C言語の関数ポインタを java で実装するパターン備忘録。
 親ウィンドウからダイアログを呼び出し、ダイアログから親ウィンドウへ値を返す、よくあるシチュエーション。

FrameMain.jar 15,218kB(ソース含む)
下記 どのSTEPでも同じ動作。...▼

続きを読む "java の interface(CallBack)備忘録" »

2022年10月02日

星図描画

メルカトル図法  天体の基本理解に、「Illustratorで星図と星座を描くスクリプト」 new を参考に Java で静的な星図を描画してみる。作者が事前に加工したタブセパレーション星データ
constellation_boundary.txt
constellation_line.txt
star_map.txt
をそのまま利用。
正距方位図法 北天
正距方位図法 南天
java なので さらにアンドロイドアプリへ発展。...▼

続きを読む "星図描画" »

2022年10月01日

アプリに git リビジョン情報を埋め込む

gitのコミット情報、例えば
git log -1 --date=iso --format='%cd,%h'
のように整形したコミット情報
2022-10-01 00:00:55 +0900,9bcf00b
を WEB や android アプリに 現在のバージョン情報として埋め込む方法例。...▼

続きを読む "アプリに git リビジョン情報を埋め込む" »

2021年11月14日

CloudMonkey

 CentOS 7.9, CentOS 8.1

 CloudStack API 利用クライアントツール「cloudmonkey」備忘録。現時点で、CloudMonkey v5~と CloudMonkey v6~の情報が見つかる。

●CloudMonkey v5~(5.3.3で確認)

 CentOS では、curl、python2 が必要。
# curl https://bootstrap.pypa.io/pip/2.7/get-pip.py| python2
あるいは
# curl https://bootstrap.pypa.io/pip/2.7/get-pip.py| python
# pip install cloudmonkey
注意点
* エラーメッセージ
Error on parsing and printing 'teal'
> set color false
とするか、設定ファイル"~/.cloudmonkey/config"の color を false として回避。
* プロンプトの絵文字化けは、
> set prompt >
とするか、同じく設定ファイルの prompt を変更して回避。

●CloudMonkey v6~(6.2.0で確認)

* コマンドが cloudmonkey → cmk に。
* color 設定が無い。
* パスワード・秘密鍵が平文で保存されず安全に。
* python インストール不要。
インストール手順は本家
https://github.com/apache/cloudstack-cloudmonkey/releases new
の通り、プラットホーム別のバイナリファイルをダウンロードし実行権を付けて配置。
$ chmod +x cmk.linux.x86-64
$ sudo mv cmk.linux.x86-64 /bin/cmk
ちなみにこの手順、ア●プルはNG...接続方法は▼▼▼

続きを読む "CloudMonkey" »

2021年11月13日

HTTPプロトコルGit公開リポジトリ

git version 2.27.0

 2つのHTTPプロトコル(Smart HTTP, Dumb HTTP)のうち、古くからの Dumb HTTP での リードオンリーGit公開リポジトリの作り方備忘録。
●対象ローカルリポジトリ(WORKING1)からマスターリポジトリ(REPOSITORY1.git)を作成。
$ git clone --bare WORKING1 REPOSITORY1.git
●ここからが公開リポジトリに必要な処理。
$ touch REPOSITORY1.git/git-daemon-export-ok
$ git -C REPOSITORY1.git --bare update-server-info
$ mv REPOSITORY1.git/hooks/post-update.sample REPOSITORY1.git/hooks/post-update
●最後にWebのドキュメントルート(例 /var/www/html)の(例 dat/blog/git)へ配置。
$ mv REPOSITORY1.git /var/www/html/dat/blog/git/REPOSITORY1.git
 この場合 公開アドレスは
http://remix.asia/dat/blog/git/REPOSITORY1.git
となり、制限しなければだれでも
$ git clone http://remix.asia/dat/blog/git/REPOSITORY1.git WORKING2
でクローンが可能。

 本家のドキュメント
4.1 Gitサーバー - プロトコル
10.6 Gitの内側 - 転送プロトコル

2021年11月12日

yum で CentOS6~ に Git2~をインストール

前提環境 CentOS 6.6, 64bit

 CentOS6~の終了でリポジトリ情報
/etc/yum.repos.d/CentOS-Base.repo
http://mirrorlist.centos.org
http://vault.centos.org
に代替して久しく、未だにCentOS6環境。現在 yum コマンドを使用すると http から https へリダイレクトされ次のエラー。
https://vault.centos.org/6.10/%2A/x86_64/repodata/repomd.xml: [Errno 14] problem making ssl connection
もはやCentOS6~では接続できない。http で接続できる
http://ftp.riken.jp/Linux/centos-vault/
http://ftp.jaist.ac.jp/pub/Linux/CentOS-vault/
http://ftp.iij.ad.jp/pub/linux/centos-vault/
等への代替で ok。具体的には...▼

続きを読む "yum で CentOS6~ に Git2~をインストール" »

2021年11月11日

Ethernet No Internet access

Ethernet No Internet accessWindows10 Home 20H2, DELL Vostro 3491, YahooBB ADSL 有線接続
 直近半年ほど、ギガビットLANにもかかわらずファイル転送が止まったり再開したり。
 2度目のWindows11のアップデート誘導ダイアログが現れた後、間もなく画像のようなアイコンとなるもののインターネットアクセスできている状態。
 翌日、PCを起動し2時間ほど同じ状態で使用しているとインターネットアクセスできなくなる???LAN内のPCとは通信できる(SMB、RDP)。
 他のWiFi経由のスマートフォン、有線接続PCは正常なのでPC固有の問題。
 ネットワークアダプタは「イーサネット ネットワークアクセスなし」で、IPV4固定/DHCP、有効/無効 など試すものの効果なし。
 何故か IPV4固定で設定しても ipconfig でデフォルトゲートウェイが空欄でセットされない。

 解決方法は
[スタート]>[設定]>[ネットワークとインターネット]
[状態]>[ネットワークのリセット]
[今すぐリセット]
Windows再起動。これだけで改善。VirtualBoxの仮想ネットワークアダプタなど再設定が必要。

 ネット上には、ルーター再起動、レジストリ変更などの情報が見つかるが結果的には無関係。

2021年11月10日

I/Ads: Ad failed to load : 3

 Google AdMob から「広告配信が中断されないよう、早急にご対応をお願いいたします」メールが。 2019年5月に最終更新したアプリで、今になってインタースティシャル広告の「偶発的クリックを誘導するレイアウト - 予期しないタイミングでのインタースティシャル広告の表示」を直せと。 最近の Google WEB 広告のが偶発的な気が・・・
 対応ついでに、AdMob の最新バージョン「com.google.android.gms:play-services-ads:20.5.0」にアップグレード。 すると、広告テストIDにもかかわらず
InterstitialAdLoadCallback()
 ▼
onAdLoaded()
 ▼
com.google.android.gms.ads.AdError.getMessage()
 ▼
No ad config.
I/Ads: Ad failed to load : 3
原因は・・・▼

続きを読む "I/Ads: Ad failed to load : 3" »

2021年11月09日

事前セットアップ ×

マイナポイント マイナポイントのャッシュバックを Windows10 home + ICカードリーダ + Chromeブラウザで申請。このとき「マイナポイントの予約」から 事前セットアップ × と表示され進まない現象でヘルプ要請が。
 該当サイトは
https://id.mykey.soumu.go.jp/
で、「マイナポイント予約・申込サイト」のサブフォルダへリダイレクトされる。

続きを読む "事前セットアップ ×" »

2021年11月08日

VirtualBoxのゲストCentOS7ディスク一時追加

VirtualBoxのゲストCentOS7ディスク一時追加 一時的に大きな作業領域としてディスクを追加する記録。永続的な追加領域として使用する場合は、将来拡張することを想定して論理ボリュームを検討すべきかも。

VirtualBox 6.1.18
ホストOS : Windows 10
ゲストOS : CentOS Linux release 7.7.1908 (Core)[CentOS-7-x86_64-Minimal-1908.iso]
 ディスク追加の流れ...▼

続きを読む "VirtualBoxのゲストCentOS7ディスク一時追加" »

2021年11月07日

VirtualBoxのゲストCentOS7ディスク拡張

VirtualBoxのゲストCentOS7ディスク拡張 ディスク容量不足により追加でハードディスクを増設するリアルなサーバーと違い、仮想環境なのでOSインストール済の元々の仮想ハードディスクを 8GB から 16GB へ大きくする記録。

VirtualBox 6.1.18
ホストOS : Windows 10
ゲストOS : CentOS Linux release 7.7.1908 (Core)[CentOS-7-x86_64-Minimal-1908.iso]

 理解しておきたいキーワード
●LVM(Logical Volume Manager) : Linuxで当初HDDなどに直接ファイルシステムを割り当てて管理していたものが、物理ボリュームをまとめて仮想化されたボリュームグループとし それを論理ボリュームに分けて管理する仕組み。CentOSでは、デフォルト設定のインストールで論理ボリュームを使用。
●PV物理ボリューム(PisicalVolume) : 物理ディスク
●PE物理エクステント(Physical Extent) : PVを分割したLVMが管理する最小単位
●VGボリュームグループ(VolumeGroup) : PVを分割したPEの集まり
●LV論理ボリューム(LogialVolume) : ファイルシステムをマウントするデバイス(旧 /dev/sda1 相当)

 ディスク拡張の流れ...▼

続きを読む "VirtualBoxのゲストCentOS7ディスク拡張" »

2021年11月06日

国会議員の文書交通費 月100万はクーポンで三方よし

2021年11月05日

ffmpeg オプションTips

こちらのように android スマートフォンのスクリーン動画 myVideo.mp4 を軽量な GIFアニメーション myVideo.gif へ変換例。
ffmpeg -i myVideo.mp4 -vf scale=320:-1 -r 10 myVideo.gif
-vf scale=320:-1
縦幅比を維持して幅320ピクセルにリサイズ。
-r 10
フレームレートを10[fps]を指定しサイズに直結。

Windows 10
ffmpeg version 4.4-full_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers

2021年11月04日

gradleエラーその2

Execution failed for task ':app:processDebugMainManifest'.
> Manifest merger failed : Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
エラーメッセージに示される
https://developer.android.com/guide/topics/manifest/activity-element#exported
によれば...▼

続きを読む "gradleエラーその2" »

2021年11月03日

Google ADmob sample bug ?

仮装大賞パネル 無料ジョークアプリ「仮装大賞パネル」へ google admob「アプリ起動時広告」を組み込む為、公式ドキュメント
https://developers.google.com/admob/android/app-open-ads?hl=ja
を参考にサンプルコード
https://github.com/googleads/googleads-mobile-android-examples/tree/master/java/admob/AppOpenExample
commit b54accd1c410a1bf8a5fdcd95a1b19d85d456ca7 (HEAD -> master, origin/master, origin/HEAD)
Date: Wed Sep 22 12:55:50 2021 -0700
をビルド。タイトルから起動時1回限り広告表示を想像させるこのサンプルは...▼

続きを読む "Google ADmob sample bug ?" »

2021年11月02日

アプリの軽微なアップデートをしたところ「非承認」???

 原因は Google Play ストア でのアプリ表示名称の末尾に「Free」が付いていたこと。
最初のリリースはパスしていた為、相変わらず抽象的な原因説明でアップデートに数日・・・。 有料版アプリと区別する為、ストア でのアプリの名称だけを「~ Free」から「~ Mini」に変更してアップデート「承認」。 現在では日本語「~ フリー」も個別に指摘されるので「~ ミニ」へ。
Google Play ストアに掲載するアプリ情報に関するガイドラインを改定します
2021年5月18日火曜日
https://android-developers-jp.googleblog.com/2021/05/updated-guidance-to-improve-your-app-quality-and-discovery-on-google-play.html
価格やプロモーションを示すキーワードを使用しないでください
 アプリケーションコードのパッケージ名称は無関係。

2021年11月01日

突然のgradleエラー

 数日前までデフォルトで新規プロジェクトをビルド出来ていた
Android Studio 4.2.2の Empty Activity
が突然 gradle エラー。
The minCompileSdk (31) specified in a
dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
is greater than this module's compileSdkVersion (android-30).
Dependency: androidx.appcompat:appcompat:1.4.0.
AAR metadata file: C:\Users\wanko\.gradle\caches\transforms-2\files-2.1\b70a38d32b407cc6af29424a07f54027\appcompat-1.4.0\META-INF\com\android\build\gradle\aar-metadata.properties.
 解決方法を調べると...▼

続きを読む "突然のgradleエラー" »

2020年12月23日

Style Sheets + javascript でダークモード

 Webページをダークモードに対応。既存のスタイルシートと新たなダークモードスタイルシートを javascript で切り替えるアプローチ。
 デフォルトでシステム設定に従い、閲覧者の操作でライトモード・ダークモードを選択可能にする最小限の実装例...▼

続きを読む "Style Sheets + javascript でダークモード" »

2020年12月22日

レーダーアニメーション 2

 レーダーと言えば、魚群探知機や戦闘機で搭載される円形のレーダー。レーダーアニメーションの円形版の実装例。

続きを読む "レーダーアニメーション 2" »

2020年12月21日

VirtualDisplay for API 29

VirtualDisplay 実装例」を API 29 の Emulator で実行すると下記ランタイムエラー。
2020-12-21 01:28:56.035 3538-3538/asia.remix.virtualdisplay E/AndroidRuntime: FATAL EXCEPTION: main
    Process: asia.remix.virtualdisplay, PID: 3538
    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=450066721, result=-1, data=Intent { (has extras) }} to activity {asia.remix.virtualdisplay/asia.remix.virtualdisplay.MainActivity}: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
        at android.app.ActivityThread.deliverResults(ActivityThread.java:4845)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4886)
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
        at android.os.Parcel.createException(Parcel.java:2071)
        at android.os.Parcel.readException(Parcel.java:2039)
        at android.os.Parcel.readException(Parcel.java:1987)
        at android.media.projection.IMediaProjection$Stub$Proxy.start(IMediaProjection.java:231)
        at android.media.projection.MediaProjection.(MediaProjection.java:58)
        at android.media.projection.MediaProjectionManager.getMediaProjection(MediaProjectionManager.java:104)
        at asia.remix.virtualdisplay.MainActivity$1.onActivityResult(MainActivity.java:62)
        at asia.remix.virtualdisplay.MainActivity$1.onActivityResult(MainActivity.java:57)
        at androidx.activity.result.ActivityResultRegistry.doDispatch(ActivityResultRegistry.java:377)
        at androidx.activity.result.ActivityResultRegistry.dispatchResult(ActivityResultRegistry.java:336)
        at androidx.activity.ComponentActivity.onActivityResult(ComponentActivity.java:624)
        at androidx.fragment.app.FragmentActivity.onActivityResult(FragmentActivity.java:164)
        at android.app.Activity.dispatchActivityResult(Activity.java:8110)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:4838)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4886) 
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
     Caused by: android.os.RemoteException: Remote stack trace:
        at com.android.server.media.projection.MediaProjectionManagerService$MediaProjection.start(MediaProjectionManagerService.java:476)
        at android.media.projection.IMediaProjection$Stub.onTransact(IMediaProjection.java:135)
        at android.os.Binder.execTransactInternal(Binder.java:1021)
        at android.os.Binder.execTransact(Binder.java:994)
API 29 から、getMediaProjection()の前に、サービスではないが startForeground() が必要...▼

続きを読む "VirtualDisplay for API 29" »

2020年12月20日

常に前面に表示するオーバーレイ

 スクリーンコードアナライザで解析中のマーカーやレーダーアニメーションを他のアプリの上に重ねて表示する基本実装。

続きを読む "常に前面に表示するオーバーレイ" »

2020年12月19日

サービスのライフサイクル

 スクリーンコードアナライザではバックグラウンドで画面上のQR・バーコードを解析する為「サービス」を利用。
 このサービスのライフサイクルを理解するための Android 8.0 (API レベル 26) とAndroid 9.0 (API レベル 28) に対応した基本実装サンプル。

続きを読む "サービスのライフサイクル" »

2020年12月18日

レーダーアニメーション

スクリーンコードアナライザで使用しているレーダーアニメーションの実装例。

続きを読む "レーダーアニメーション" »

2020年12月17日

署名付きBundre/APK作成時のLintエラー

Android Stidio 4.2.2

 いよいよ公開しようと Build > "Generate Signed Bundre or APK" でビルドすると
Execution failed for task ':app:lintVitalRelease'.
> Lint found fatal errors while assembling a release target.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
で失敗。対応方法は...▼

続きを読む "署名付きBundre/APK作成時のLintエラー" »

2020年12月16日

VirtualDisplay 実装例

VirtualDisplaycommit e87093e
VirtualDisplay の出力先を SurfaceView.getHolder().getSurface() として常に端末の画面で SurfaceView を更新するシンプルな例。

commit 2ba351b
次に VirtualDisplay 出力先を ImageReader.getSurface() として onClick で ImageView を更新する例。

 このままだと左に寄って機種によって例えば Galaxy S7 edge では画像のような現象が生じる。ImageReader.acquireLatestImage() で取得する Image.Plane の幅のピクセル数が
Image.getWidth() や DisplayMetrics.widthPixels の値より幅が広い。

commit 1b6140f
最終的にはImageReader.acquireLatestImage() で取得したサイズで ImageReader・VirtualDisplayを作り直すことで改善。

Github VirtualDisplaySample

続きを読む "VirtualDisplay 実装例" »

アーカイブ