Android アプリでネットワーク接続に対応するの続き 1

この記事を作った動機 Android アプリでネットワーク接続に対応する の続きの記事です。前の記事でやっていたことに関して、進展があったので、とりあえず忘れないうちに記録しようというわけです。 まあ、理解より先に動くことを試していたので、間違ったこととかも書いていること大いにあり得ます。これはあくまで自分の理解を深めるために記事として書いてしまおうという感じです。ご注意ください。(それは他の記事でも言えることですが。。。) コード 専用クラス(ViewModel)にて ... class smbOperation1 : ViewModel(){ private val userLiveData = MutableLiveData<String>() val user: LiveData<String> get() = userLiveData init { // trigger user load. } fun doAction() { viewModelScope.launch { val test = withContext (Dispatchers.IO) { testSMB() } userLiveData.value = test } } ... } アクティビティ内にて ... class shareFolderListActivity1 : AppCompatActivity() { // https://github.com/hierynomus/smbj private val smb by viewModels<smbOperation1>() override fun onCreate(savedInstanceState: Bundle?) { ... val debugTestStart = findViewById<Button>(R.id.debugTestStart) val debugText = findViewById<TextView>(R.id.resultAndDebugConsole) smb.user.observe (this){ message: String -> debugLog(message) debugText.setText(message) } debugTestStart.setOnClickListener{ smb.doAction() } } ... } わかったこと(現時点での理解) LiveData というのを使う方仕組みの方が新しいっぽい AsyncTask クラスとは異なる、kotlin 側で用意されたスレッド管理の仕組みを使う方が簡単そう LiveData UI と ViewModel クラス間におけるデータの橋渡し的なやり取りを行う。UIスレッド側で監視される変数的なものである。ViewModel クラスのインスタンスのうち、 LiveData に変更があり次第オブザーバー内に登録された処理が実行され、UIが更新される。 ...

June 21, 2025

Android アプリでネットワーク接続に対応する

この記事を作った動機 単に、ネットワークを使うだけで、パーミッション周りの設定と、UIスレッドと分離されたスレッドによる、非同期処理が必要なので、忘れる前に記録しておこうという話。 権限の設定(AndroidManifest.xml) android.permission.INTERNET の権限を追加 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <uses-permission android:name="android.permission.INTERNET" /> ... </manifest> 権限を許可したいときに確認すべきところ Manifest.permission | API reference | Android Developers https://developer.android.com/reference/android/Manifest.permission (2025年6月14日) 非同期処理(とりあえず動くというだけ kotlin) 本当のところは、AsyncTask は廃止なので java.util.concurrent を使うべきらしい。 参照すべきドキュメント AsyncTask | API reference | Android Developers https://developer.android.com/reference/android/os/AsyncTask (2025年6月14日) 専用にクラスを定義する package com.example.smbfileviewer import android.os.AsyncTask import android.util.Log import com.hierynomus.smbj.SMBClient import com.hierynomus.smbj.auth.AuthenticationContext import com.hierynomus.smbj.session.Session import com.hierynomus.smbj.share.DiskShare import com.hierynomus.smbj.share.Share class smbOperation(val handler: (message:String) -> Unit) : AsyncTask<Void,Void,Unit>(){ override fun doInBackground(vararg params: Void?): Unit { handler(testSMB()) } fun testSMB(): String{ val client = SMBClient() // 何かネットワークを使う処理をする // 今回は SMB ファイルサーバのライブラリを試すという前提で。 return "do something" } } 作ったクラスをボタンを押されたときとかに呼び出す // 何かのアクティビティクラスの onCreate 内などのUIの処理にて class shareFolderListActivity1 : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { val debugTestStart = findViewById<Button>(R.id.debugTestStart) debugTestStart.setOnClickListener{ val instance = smbOperation({ message -> debugLog(message) }) instance.execute() } } } 次の記事 Android アプリでネットワーク接続に対応するの続き 1 参考にしたサイトとか java - How can I fix ‘android.os.NetworkOnMainThreadException’? - Stack Overflow https://stackoverflow.com/questions/6343166/how-can-i-fix-android-os-networkonmainthreadexception (2025年6月14日) java - Permission for sockets - android manifest - Stack Overflow https://stackoverflow.com/questions/56582336/permission-for-sockets-android-manifest (2025年6月14日) Manifest.permission | API reference | Android Developers https://developer.android.com/reference/android/Manifest.permission (2025年6月14日) AsyncTask | API reference | Android Developers https://developer.android.com/reference/android/os/AsyncTask (2025年6月14日)

June 14, 2025

http-server と SSL、CORS

この記事を作った動機 単にいちいちどうやって開発用に、http-server(npm経由) 上で SSL(HTTPS) を利用できるのかとか、とにかくCORSをどうにかしたいとき、忘れたときにいちいち調べるのはめんどいので、記録するだけ。 必要なもの http-server (via npm) mkcert まとめ http-server --cors --ssl --key ~/path/to/key/key.pem --cert ~/path/to/cert/cert.pem 個別のメモ書き CORSを何とかする http-server --cors SSL を何とかする mkcert -install # mkcertを初めて使うときのみ mkcert [開発用サーバのIP or localhost とか] http-server --ssl --key ~/path/to/key/key.pem --cert ~/path/to/cert/cert.pem 参考にしたサイトとか macos - enable CORS for local http server - Stack Overflow https://stackoverflow.com/questions/63297822/enable-cors-for-local-http-server (2025年6月13日) http-serverによるローカル HTTPS server 構築 (5分でできる) #Node.js - Qiita https://qiita.com/hbjpn/items/925c8012cd93d9165be6 (2025年6月13日)

June 13, 2025

パスワードを無期限で利用できるようにする

この記事を作った動機 最近 Win 11 24H2 を使っているときに、「パスワードの有効期限が切れています」とログオン時にパスワードの再設定を求められるということがあった。なぜか作成したアカウントの有効期限がデフォルトで設定されている状態であった。 それで調べてみるとGUI操作で、設定する方法ばかりヒットして、めんどくさかったので、コマンドでどうにかできないか試したことを記録するだけ。 やり方 以下はすべてのアカウントに対して設定を反映する方法である。一つ一つやる方法もあるらしいが、試していない。 コマンド (base) PS C:\Users\username> net accounts /maxpwage:unlimited コマンドは正常に終了しました。 全体像 (base) PS C:\Users\username> net accounts 強制ログオフまでの時間 (分): しない パスワード変更禁止期間 (日数): 0 パスワード有効期間 (日数): 42 最小パスワード長: 0 使用できない旧パスワード数: なし ロックアウトしきい値: 10 ロックアウト期間 (分): 10 ロックアウト監視ウィンドウ (分): 10 コンピューターの役割: WORKSTATION コマンドは正常に終了しました。 (base) PS C:\Users\username> net accounts /maxpwage:unlimited コマンドは正常に終了しました。 (base) PS C:\Users\username> net accounts 強制ログオフまでの時間 (分): しない パスワード変更禁止期間 (日数): 0 パスワード有効期間 (日数): 無制限 最小パスワード長: 0 使用できない旧パスワード数: なし ロックアウトしきい値: 10 ロックアウト期間 (分): 10 ロックアウト監視ウィンドウ (分): 10 コンピューターの役割: WORKSTATION コマンドは正常に終了しました。 (base) PS C:\Users\username> net user username ユーザー名 username フル ネーム コメント ユーザーのコメント 国/地域番号 000 (システム既定) アカウント有効 Yes アカウントの期限 無期限 最終パスワード変更日時 2025/05/29 21:33:43 パスワード有効期間 無期限 パスワード次回変更可能日時 2025/05/29 21:33:43 パスワードあり Yes ユーザーによるパスワード変更可能 Yes ログオン可能なワークステーション すべて ログオン スクリプト ユーザー プロファイル ホーム ディレクトリ 最終ログオン日時 2025/05/29 21:33:44 ログオン可能時間 すべて 所属しているローカル グループ *Administrators *Users 所属しているグローバル グループ *なし コマンドは正常に終了しました。 参考にしたサイトとか Set User Password to never expire | NTLite Forums https://www.ntlite.com/community/index.php?threads/set-user-password-to-never-expire.3328/ (2025年5月29日)

May 29, 2025

ローカルリポジトリをリモートへアップロード

この記事を作った動機 単にすでに存在する、git リポジトリを LAN 内の Gitea 上にアップロードするための方法の簡易的なメモ。Githubの場合でも同じようなことはできると思う。(そもそも github のページ参考にしたし) やり方 リポジトリの URL は、“https://aaa.info/urlToAremoteRepo.git" と仮定している。 リポジトリの作成(リモート側) リモート側に、最小構成で、readme や license、gitignore を追加しないようにして空っぽのリポジトリを作成する。 リポジトリの URL を設定する(ローカル側) git remote add origin https://aaa.info/urlToAremoteRepo.git ブランチの確認(ローカル側) アップロードしたいブランチの確認。今回は “master” という名前のブランチを、リモートにアップロードする。 git branch * master アップロード(ローカル側) git push origin master リポジトリが設定できたかの確認方法 git remote -v origin https://aaa.info/urlToAremoteRepo.git (fetch) origin https://aaa.info/urlToAremoteRepo.git (push) 参考にしたサイトとか Adding locally hosted code to GitHub - GitHub Docs https://docs.github.com/en/migrations/importing-source-code/using-the-command-line-to-import-source-code/adding-locally-hosted-code-to-github (2025年5月19日)

May 19, 2025

git に証明書を追加する

この記事を作った動機 最近、いろいろ作ってみてはファイルがあっちゃこっちゃ行ってぐちゃぐちゃになっていたので、整理の一環として、LAN内で Gitea なるものを動かしてみている そこで、内部ネットワークで使っている証明書を windows 側にいれても git がそれを直接は使ってくれなかったので、SSL 証明書の設定の仕方を自分用に記録するだけ。(すぐ忘れるし) やり方 # 多分 global オプションはつけないほうがいいかも。全体的に証明書情報を変えてしまい、ほかのリポジトリで、githubから何かしようとか思ったとき、多分証明書が合わなくてエラーを吐いてしまう。 # git config --global http.sslCAInfo /path/to/cert.pem git config http.sslCAInfo /path/to/cert.pem 参考にしたサイトとか configure Git to accept a particular self-signed server certificate for a particular https remote - Stack Overflow https://stackoverflow.com/questions/9072376/configure-git-to-accept-a-particular-self-signed-server-certificate-for-a-partic (2025年5月11日)

May 11, 2025

blender が Intel HD Graphics 4000 で動かない

この記事を作った動機 最近550円で Thinkpad T430 を買って色々動かしてみて遊んでみたら、blender が動かなかったので、記録を取るだけ。 環境 Report details Date generated: 2025-05-08 04:15:17 Hardware Information: Hardware Model: Lenovo ThinkPad T430 Memory: 12.0 GiB Processor: Intel® Core™ i5-3230M × 4 Graphics: Intel® HD Graphics 4000 (IVB GT2) Disk Capacity: 628.1 GB Software Information: Firmware Version: G1ET92WW (2.52 ) OS Name: Arch Linux OS Build: rolling OS Type: 64-bit GNOME Version: 48 Windowing System: Wayland Kernel Version: Linux 6.14.5-arch1-1 解決方法 単純に環境変数として、Intel® HD Graphics 4000 がサポートする openGL のバージョンを指定する。解決方法の書いてある記事を読み切る前にどうすればいいかわかってしまったので、深いことはわからないが、blender 4.x.x くらいから、openGLのバージョンのデフォルトの最低要件が上がったらしいく、その影響で起動しないっぽかった。 ...

May 8, 2025

Google Chrome がいちいちデフォルトブラウザにするようにと強引に広告出してくるのを止める(機能しない)

このページは、まだ未完成です。。。 nicotalk&キャラ素材配布所 http://www.nicotalk.com/charasozai_kt.html (2024年5月16日) この記事を書いた動機 Google Chrome が図々しく至るところで、“Set as default browser” と表示を出してくてあまりにうざいのと、そのプロンプトの止め方がlinux環境だとあまり見つけづらかったので、自分用に記録するだけ。 問題の状態 解決された状態 追記(2025年5月31日) 最近、実はこの記事で書いた方法も機能しないことに気づいた。最初から機能していなかったのか、それとも最近機能していなかったのかは定かではない。更に調べる必要がありそうである。 環境 Arch Linux Gnome wayland やり方(機能しない) 環境変数で、“CHROME_DEFAULT_BROWSER_CHECK_ENABLED=0"と設定する。 ...

May 2, 2025

Chrome と Intel UHD 615 で 動画再生にハードウェアアクセラレーションを使いたい

この記事を作った動機 Google Chrome を linux環境で使っていて、動画再生が安定せず、フレームが落ちまくり、CPUをめちゃくちゃに使い込むということがあったので、それに対処したときの記録を残すというだけです。 環境 XPS 13 2in1 (9365) Intel® UHD Graphics 615 wayland 48 Chrome (バージョン: 135.0.7049.84(Official Build) (64 ビット)) lsmod | grep i915 i915 4714496 61 i2c_algo_bit 20480 1 i915 drm_buddy 24576 1 i915 ttm 110592 1 i915 intel_gtt 28672 1 i915 drm_display_helper 270336 1 i915 cec 94208 2 drm_display_helper,i915 video 81920 3 dell_wmi,dell_laptop,i915 インストールするパッケージ GNOME 環境が動く状態が前提。必要そうなものは全部入れているので、いらないものもあるかもしれない。もしくは、インストールしたけど、色々探しているうちに存在を忘れていて、ここにはちゃんと書けていないものがあるかもしれない。 libva-intel-driver intel-media-driver lib32-mesa 1:25.0.3-1 mesa ~/.config/chrome-flags 今のところ、以下の設定で、ハードウェアアクセラレーションが機能することが確認できた。intel-gpu-tools をインストールして、intel_gpu_top で video の項目が動画再生時になんか動いてそうだったら、とりあえず成功したということだと思う。 ...

April 26, 2025

Visual Studio Code の Wayland の設定をする

この記事を作った動機 Wayland環境を使っていて、いちいち設定を見に行くのがめんどくさいので、ここにメモ書きとして乗せるだけ。「fcitx5 の日本語入力ができない問題を何とかする」ということに注目している。 ~/.config/code-flags.conf を以下のように編集 --enable-features=UseOzonePlatform --gtk-version=4 --enable-wayland-ime --wayland-text-input-version=3 # これは実験した跡 #--ozone-platform=x11 #--ozone-platform-hint=auto 必要なパッケージ 上記だけでは動かない場合、この記事でも書いている、fcitx5 関連のパッケージをインストールする。以下は、gnomeの設定のメモ ⚙の引用である。 パッケージのインストール 私は普段 fcitx5 を常用しているので、それらをインストール。 # 通常はこれだけ入れればうまく行くかも yay -S fcitx5 fcitx5-mozc fcitx5-input-support fcitx5-configtool # なんかうまく動かないと思ったらここらへんも確認してみるといいかも yay -S fcitx5-qt fcitx5-gtk fcitx5-anthy 関連するページ gnomeの設定のメモ ⚙ 参考にしたサイトとか Visual Studio Code - ArchWiki https://wiki.archlinux.jp/index.php/Visual_Studio_Code (2025年4月12日) Wayland - ArchWiki https://wiki.archlinux.jp/index.php/Wayland#Electron (2025年4月12日) Using Fcitx 5 on Wayland - Fcitx https://fcitx-im.org/wiki/Using_Fcitx_5_on_Wayland (2025年4月12日)

April 12, 2025