開発中Javaソフトが終わらない

Pure Javaのカレンダー作っていたらHTMLのヘルプファイル表示のためにPure Javaのウェブブラウザー作りはじめてダウンロード機能もいるかなあとか思いはじめてPure Javaのダウンローダー作りはじめていつ終わるんだみたいな感じ。
細かいことを気にしていたら終わらんと思う。
鍋田辞書をQtに移植しようとして長らく放置中だけども、Javaへの移植のほうが先になる可能性が高まった。
(どちらにも移植しない可能性も高いけど。)
Java言語よりも元と同じC++のほうが移植しやすいがGUIのノウハウはQtよりJavaのほうがあるんでJavaへの移植のほうが早いような気がする。
どちらにしてもJava版の鍋田辞書は作りたい。

今、Java + Swingやっています。

大昔にJavaアプレット(AWT)でカレンダー作っていました。
一年か二年前にそれをJavaアプリケーションに移植しようとしていて完成まであとちょっとのところで放置していました。
動いてはいたけども祝日などのチェックを広範囲にするのが面倒で。
それを最近、祝日のチェックもしてJava+Swingアプリーションに移植して改造も加えている途中です。
どこかでやめればいいんだけど、つい余計かも知れないことまでしはじめて終わりが見えません。
しなければいいんだけど内蔵(単体動作も可)の簡易ウェブブラウザ(Java+Swing)も作り始めてしまった。
このまま鍋田辞書をJavaへ移植するのもいいかと思っている。
技術的な問題がないことがほぼはっきりしているし。
少しやりかけて長らく放置のQtをどうするかも考えないといけない。
FireMonkeyは少なくとも鍋田辞書の移植に使うのはだいぶ前に諦めた。
Swingは今は古いものになっている。
Swingの後継はJavaFXだがやるつもりがない。
あまり調べていないのでJavaFXのことはよく分からない。

javapackager

javapackagerというすごいコマンドがJDKに含まれているを今日知った。
なんで今まで知らなかったんだろう。
jarファイルを作れるのはjarコマンドでもできるので特にすごくはないが、
WindowsやMac OS、GNU/Linux(rpm/deb)のJREを含めたインストーラーを作れる。
(JREを含めずにインストーラーだけ欲しい場合には使えないような気がする。)
JREはどのJavaアプリケーションからでも使えるように普通にOSにインストールされるのではなく、
配布自作ソフト専用でその一部として陰に隠れた状態でインストールされる。
(自作ソフトがインストールされた場所の下のディレクトリにJREがあるから見れば見れるが、コントロールパネルのプログラムの追加と削除の一覧の中には出て来ないしパスも通っていない。)
インストーラーはWindowsの場合はexeまたはmsiを作れるみたいたが両方とも別途ソフトのインストールが必要。
exeの場合はInno Setupというソフトをインストールし、Inno Setupのパスを環境変数PATHに追加する必要がある。
Javaで作ってあってもWindows専用ソフトして配布できるようになる。
確実にWindowsで動作するのでJava製と言う必要もなくなる。(言ったほうが親切だが)
小さい自作ソフトで試してにやってみるとサイズがインストーラー(exe)で46MB、展開後は177MBになった。
まあサイズは大きくなるけどもJavaをインストールしていない人が多く、Javaをインストールしたがらない人がいる以上は仕方ないとは思う。

Raspberry Pi 3にXRDP入れてみた

XRDPはVNCみたいなもので別のパソコンの画面全体をリアルタイムで表示して遠隔操作するもの。
Raspbianやその他UNIXライクOSにXRDPをインストールして、WindowsからRaspbianやその他UNIXライクOSを遠隔操作する。
(私の場合は遠隔ではなく、Windowsパソコンの上にRaspberry Pi 3を置いている)
WindowsのRDPを利用しているのでWindows側には何もインストールする必要はない。
英語版のWindowsならRemote Desktop Connectionで検索して出てくるプログラムに操作するコンピューターのIPを入力すれば接続できる。
Remode Desktop Connectionのファイル名はmstsc.exe。
sudo apt-get install xrdpとしてインストールした。
(最近はapt-getでなくaptを使うのが推奨らしいが。)
一度しか使ったことがないので詳細はまだ分からない。
動画はyoutubeの144pの低画質を試してみたがスムーズではないが一応見れた。
音声も転送できると聞いたことがあるが、音声は転送されずにホスト側からは音が出た。
なんかホスト側のコンピューターを使いながらWindowsから操作というのは問題があるようだ。
それをするといろいろ挙動があった。
Windows側からだけ操作する場合は音声以外はうまくいくようだ。
同時に二台のコンピューターを使わなければならない事態が想定しにくいので利用価値がある人は限られると思う。
Windows側がディスク容量が極端に少ないなど非力な場合は少しは意味があるかも知れない。
Windows単体でもCygwin、WSL、仮想化ソフトなどでUNIXライクOS系のソフトは動かせるので普通はWindows単体で済むと思う。

追記、
WindowsからRDPでRaspberry Pi+Raspbianを動かす場合はVirtual Boxなどの仮想化ソフトでLinuxを動かすのと同じ感覚で使える。
ディスプレイ、キーボード、マウスを二個ずつ用意するよりは便利かも知れない。
ディスプレイは二台同時のほう画面が広くていいかも知れないがにキーボートとマウスをいちいち抜いて差し替えたり、あるいはもう一個の物と入れ替えるのはかなり面倒だ。
WindowsからRDPで動かしているRaspberry Piへコピーペーストもできた。
RDPはCtrl+Alt+Breakの同時押しで枠無しの全画面にもできる。
個人的に困ったのはBreakキーがないキーボードではどうしたらいいんだろう。
なぜかこの前買ったキーボードにBreakキーがない。
単純にUNIXライクの操作をしたい場合は前述したようにCygwin、WSL、仮想化ソフトもあるわけでわざわざ二台同時に動かす必要があるのかという問題がある。
必要もしくは利点があるパターンを考えるとすれば、
・二台に分散していたほうがどちらか一台壊れてももう一台は生き残りダメージが減る。
・Windows側のメモリやディスク容量が少ない、CPUが遅い、CPUに仮想化機能がないなどの場合はRDPで二台目を動かしたほうがWindows側の省メモリ、省ディスク容量、CPU負荷軽減?、CPUの仮想化機能不要の利点がある。
というのが思いついた。
仮想化ソフトはメモリを食うけどCygwinとWSLはそうでもないかな。
CygwinもWSLも仮想化ソフトもディスク容量はかなり食うと思う。

Raspberry Pi 3のwi-fiのローカルIPを固定

OSはRaspbian。
/etc/dhcpcd.conf
に、以下の記述を追加すると、192.168.1.111が固定ローカルIPになる。
少なくともうちの環境では動いた。
interface wlan0
static ip_address=192.168.1.111/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8

この設定前にifconfigコマンドを打ってwlan0のinetのIPが元の可変するIPで、私の場合は192.168.1.101 などになっていた。
192.168.1 の部分は変化しないようだった。
なので、192.168.1の部分はそのままにした。

Raspberry Pi 3がケースに入れても動くようになった。

2.5インチのハードディスクを使うため、X820というRaspberry Pi 2/3向けのUSB2.0/3.0-SATA変換基盤とX820専用メタルケースを使用しています。
Raspberry Pi3 + X820 + X820ケースで起こった三つの問題。
・X820専用ケースがAudio/Videoジャックに未対応。
・X820専用ケースによる内蔵wi-fiの電波障害。
 内蔵wi-fiは外部アンテナを接続できない。
・X820ケース付属USBジャンパーの不良でケースに入れるとジャンパーの長さが足りずにハードディスクを認識しない。
の三つの問題が出てせっかく買ったケースを使えずにいました。

それを、以下のように対策。
・ドリルでケースに穴開けてイヤホン延長ケーブル買ってAudio/Videoジャックの音声だけ端子を外部に出した。
https://www.aliexpress.com/item/Hot-Sale-3-5mm-1-To-2-Dual-Y-Audio-Splitter-Cable-Adapter-Golden-Connector-for/32809998475.html
(ビデオ信号を出せないのでベストではない。)
・USBwi-fiドングルを購入。
https://www.aliexpress.com/item/EP-N8508GS-Realtek-RTL8188CUS-150Mbps-USB-WiFi-Dongle-Wireless-Adapter-for-PC-Raspberry-PI/32589918098.html
 設定で内蔵wi-fiを無効にした。
・X820とX820専用メタルケースを買った店に苦情を出してUSBジャンパーの使えるものを送ってもらった。
 昨日届いた。

右が新バージョンのケースでも使えるUSBジャンパー。
左が旧バージョンのケースでは使えないUSBジャンパー。
新バージョンでは基盤のプリントが長くなっているため、ケース使用時でもプリント部分がUSB端子の奥まで届きます。

今のノートパソコン

今のノートパソコンは2012-12-01ぐらいに買いました。
一部壊れていますがまだ使える状態にありメインパソコンとして現役です。
CPUは、Intel COre i3-3110M 2.4GHzです。
今、話題になっているIntel CPUのメルトダウン(Meltdown)の脆弱性の対象外です。
(メルトダウンの他にSpectreという脆弱性も一緒に発表されていますがその対象にはなるのかな。)

だいぶ前にいろいろ壊れてACアダプターもDVDドライブもタッチパネルも壊れました。
ACアダプターとDVDドライブは相当品に交換しています。
タッチパネルは使えなくなりました。
画面がつかなくなる症状がある時もあったけどタッチパネルのケーブル抜いたからか症状が出なくなりました。

いつ完全に使えなくなるかなー と思っています。

Raspberry Pi 3をX820用ケースに入れて電源入れたら

ハードディスクを認識せずに起動しなかった。
SDカードで動かしたことはあったけどケースいれた状態でハードディスク使おうとしたのがはじめてだったんで今まで気がつかなかった。
内蔵wi-fiがX820用ケースに入れるとふたを開けた状態でもインターネットができないもしくは不安定な状態だったのケースに入れられなかった。
注文していたUSBのwi-fiドングルが届いたのでケースに入れられると思っていたところ。
ハードディスクはRaspberry Pi 2/3用のUSB-SATA変換基盤のX820に取り付けて使っています。
X820用ケースはAudio/Videoジャックに対応していないのでドリルでケース穴をを開けて延長ケーブルを取り付けて一応解決しました。
これで完璧と思いましたがX820用ケースに入れると起動しませんでした。
症状はハードディスクがつながっていない時と全く同じです。
X820とRaspberry Piをつなぐジャンパー(って言うのかな?)を使わずにUSBケーブルを使うと起動しました。
ケースに入れるとジャンバーがUSB端子の奥まで入らないのでハードディスクを認識しないのです。
USBケーブルは長すぎて使いたくないです。
とりあえず今はふたを外して使っています。
ふたを付けるにはふたに大きな穴を開ける必要があります。
金属ケースなので簡単にはできません。
小さいやすりを買ってこないといけない。
いつになったらケースをつけられるのか。
aliexpress.comの中の買った店に苦情を言うと、その問題は把握していてUSBジャンパーは既にバージョンアップしてケースに対応しているものがあって無料で送ってくれることになりました。
在庫さばくためにわざと欠陥品送って来たのかな?
原価一個10円ぐらいのものだと思うけど。
ケースに入れない仕様なら欠陥ではないけどケースも買って、X820にもX820のケースにもUSBジャンパー付いていて全く同じ物でケースに使えないんだから欠陥です。
二個とも設計の時点で欠陥品だったから品物を間違えたとは考えにくい。

Raspberry Pi 3はデフォルトでUSBが1.2A

調べたらRaspberry Pi 3は何もしなくてもUSBの電流が全4ポート合計で1.2Aでした。
なので/boot/config.txtを書き換える必要はなかった。
初代からRasberry Pi Bまでは
/boot/config.txtに、safe_mode_gpio=4の行を追加でUSBバスパワーが0.6Aから1.2Aにアップ。

Raspberry Pi B+ と Rasberry Pi 2は、
/boot/config.txtに、max_usb_current=1を追加でUSBバスパワーが0.6Aから1.2Aにアップ。

Raspberry Pi 3は最初から1.2A。