« 2024年9月 | トップページ | 2024年12月 »

2024年11月

2024年11月28日 (木)

OrcaController オルコン

weborca になる前の orca は、monsiaj というオープンソースのクライアントがあって、ショートカット組み込んだり自由にできた。weborca になって、クライアントは chrome ブラウザになったので、ショートカットが使えなくなってしまった。何かいい方法はないかと調べていたところ、selenium というツールを使うと、java で chrome を、自由自在に操作できることがわかった。

これを使って、opendolphin から weborca を弄ぶ、OrcaController (オルコン) を作ってみた。dolphin 側でキー入力をうけつけて、ショートカットキーならマクロを流し、それ以外のキーはそのまま weborca に流すしくみ。もちろん、dolphin 側でキーリスンしているので、chrome をクリックして、フォーカスを渡してしまうと機能しない。

Orcon1 Orcon2_20241127073201

さらに、高難度のコントロール方法として、ステルスモードというのも作ってみた。ステルスモードにすると、オルコンのタブにマークが付く。この状態は、dolphin で受けるキーと weborca に送るキーを、裏で密かに分離する。表では dolphin の操作ができて、裏では orcon で設定しているショートカットなどを weborca に通して、患者番号を送ったりもできる。しかし、例えば enter は dolphin が取ってしまうので、代わりに alt + enter で enter を送るようにしていたり、難しいことになってしまっているので、多分プログラムした本人以外は操作できない。

Orcon3

あと、dolphin に依存しない、スタンドアロンバージョンも作ってみた。weborca 単独で使うときに、マクロを使うことができる。

2024年11月 8日 (金)

OpenDolphin: java 21 / wildfly 34 への移行

これまで java 17、wildfly 27 で運用していたが、java 21、wildfly 34 へ移行した

wildfly 34 の準備

wildfly の github から branch 34.x を選択,"Download Zip" して解凍する。作業時点ではこれで 34.0.1.Final がダウンロードされた。

mac で wildfly 34 のビルド

brew をアップデートして mvn と ant を最新にしておく。

$ brew update ; brew upgrade

wildfly の build

$ mvn install
[INFO] Scanning for projects...
Downloading from jboss-public-repository-group: https://repository.jboss.org/nexus/content/groups/public/org/wildfly/core/wildfly-core-parent/26.0.1.Final/wildfly-core-parent-26.0.1.Final.pom
Downloaded from jboss-public-repository-group: https://repository.jboss.org/nexus/content/groups/public/org/wildfly/core/wildfly-core-parent/26.0.1.Final/wildfly-core-parent-26.0.1.Final.pom (123 kB at 73 kB/s)
Downloading from jboss-public-repository-group: https://repository.jboss.org/nexus/content/groups/public/org/jboss/jboss-parent/40/jboss-parent-40.pom
Downloaded from jboss-public-repository-group: https://repository.jboss.org/nexus/content/groups/public/org/jboss/jboss-parent/40/jboss-parent-40.pom (76 kB at 106 kB/s)
Downloading from jboss-public-repository-group: https://repository.jboss.org/nexus/content/groups/public/io/netty/netty-bom/4.1.112.Final/netty-bom-4.1.112.Final.pom
Downloading from central: https://repo.maven.apache.org/maven2/io/netty/netty-bom/4.1.112.Final/netty-bom-4.1.1
 :
 :
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  20:59 min
[INFO] Finished at: 2024-10-25T14:19:47+09:00
[INFO] ------------------------------------------------------------------------

これで wildfly-34.0.1.Final-SNAPSHOT ができる。WildFly 27.0.2 と同じく,full distributable build が欲しい場合は,build/target ではなく,dist/target の方を使う必要がある。

wildfly 34.0.1 のセットアップ

  • ./standalone.sh -b 0.0.0.0 で立ち上げて,./add-user.sh で管理ユーザ登録
  • JDBC の登録(ドライバは postgresql-42.7.4.jar),data-source の作成,パスワード登録。
    $ ./jboss-cli.sh --connect
    [standalone@localhost:9990 /] module add --name=org.postgres --resources=~/Downloads/postgresql-42.7.4.jar --dependencies=javax.api,javax.transaction.api
    [standalone@localhost:9990 /] /subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver)
    [standalone@localhost:9990 /] data-source add --jndi-name=java:jboss/datasouces/DolphinDS --name=DolphinDS --connection-url=jdbc:postgresql://localhost/dolphin --driver-name=postgres --user-name=dolphin
    [standalone@localhost:9990 /] /subsystem=datasources/data-source=DolphinDS:write-attribute(name=password, value=dolphin)
    [standalone@localhost:9990 /] quit
    

ライブラリのアップデート

WildFly 34 に合わせて、ライブラリをアップデートする。

  • Hibernate 6.6.1.Final
  • Hibernate Search 7.2.1.Final
  • Resteasy 6.2.10.Final
  • Jackson 2.17.0
  • Postgresql 42.7.4

移行に必要な書き換え

前回やらかしたので、今回はマイグレーションガイド読んだが、Hibernate 6 のままなので、多分、罠はないようだった。

  • SearchPredicateFactory#bool(Consumer) が非推奨になり、f.bool().with(〜) か、.where ((f, root) -> ) に書き換え推奨されていたので、書き換えた。where ( (f, root) -> ) の方が、一体わかりやすい。

  • websocket が 90秒でタイムアウトするようになった(wildfly 28 かららしい)。standalone.xml の該当箇所に read-timeout="0" write-timeout="0" を挿入すると、タイムアウトしなくなる。
    <http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true" read-timeout="0" write-timeout="0"/>
    
  • クライアントで使っていた javax.mail は、provided scope の場合は jakarta.mail-api、実体が欲しい場合は angus.mail を使うように変わっていた

Opensearch は最新版の 2.17.1 に移行

  • ubuntu で java 21 をインストール
    $ sudo apt install openjdk-21-jdk-headless
    $ sudo update-alternatives --config java
    alternative java (/usr/bin/java を提供) には 2 個の選択肢があります。
    
      選択肢    パス                                       優先度  状態
    ------------------------------------------------------------
    * 0            /usr/lib/jvm/java-21-openjdk-amd64/bin/java   2111      自動モード
      1            /usr/lib/jvm/java-17-openjdk-amd64/bin/java   1711      手動モード
      2            /usr/lib/jvm/java-21-openjdk-amd64/bin/java   2111      手動モード
    
  • レポジトリがないので、直接ダウンロードサイトから tarball を取ってくる
    $ tar xvzf opensearch-2.17.1-linux-x64.tar.gz
    $ ln -s opensearch-2.17.1 opensearch
    
  • 初期インストールのプラグインは全部消す
    $ cd opensearch
    $ rm -rf plugins/*
    
  • プラグインインストール
    $ ./bin/opensearch-plugin install analysis-kuromoji
    $ ./bin/opensearch-plugin install analysis-icu
    
  • config/opensearch.yml を設定して起動してみる
    $ vi ./config/opensearch.yml
    cluster.name: opensearch_dolphin
    path.data: /home/dolphin/opensearch/var/lib/opensearch
    path.log: /home/dolphin/opensearch/var/log/opensearch
    $ ./bin/opensearch
    WARNING: A terminally deprecated method in java.lang.System has been called
    WARNING: System::setSecurityManager has been called by org.opensearch.bootstrap.OpenSearch (file:/home/dolphin/opensearch-2.17.1/lib/opensearch-2.17.1.jar)
     :
    
  • インデックスは、前バージョンから var/lib/opensearch/nodes をコピーしてそのまま使える

wildfly 起動

8:20:55,954 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly 34.0.1.Final-SNAPSHOT (WildFly Core 26.0.1.Final) 
started in 71423ms - Started 640 of 824 services (328 services are lazy, passive or on-demand) - Server configuration file in use:
standalone.xml - Minimum feature stability level: community

その他

  • java 21 になって、メモリリーク?はなくなった。
  • 今回、依存性管理を pom.xml から gradle + kotlin に移行した。苦手の xml から開放されてよかった。
  • パッケージは jpackage から conveyor に変更した。conveyor の方が少し速くて、しかも mac で windows 用の msix が作れる。ちなみに、windows で msix するには、オレオレ証明書のインストールが必要。
    Msix   Certification
  • あと、conveyor でバージョン番号が通りやすいように、OpenDolphin-1.3.0 はプロジェクト名として settings.gradle.kts に固定して、バージョン番号は、21.0 を gradle.properties に設定して、これをインクリメントしていくことにした。
    About

WildFly アップデート記録
  • 2008年 JBossAS 4.0.5
  • 2009年 JBossAS 4.2.3
  • 2010年 JBossAS 5.1.0
  • 2013年 JBossAS 7.1.4
  • 2015年 WildFly 8.2.1
  • 2017年 WildFly 10.2.0
  • 2019年 WildFly 18.0.1
  • 2021年 WildFly 25.0.2
  • 2023年 WildFly 27.0.2
  • 2024年 WildFly 34.0.1

2024年11月 7日 (木)

WebORCA オンプレ版に移行

weborca 構築の忘備録

weborca をインストールする kvm 仮想マシンの準備

  • 作ってあるテンプレートマシン template2204 から新しいマシンを作成
    $ sudo virsh define virt-config/template2204.xml
    $ sudo virsh domrename template2204 weborca
    $ sudp cp template2204.qcow2 weborca.qcow2
    $ sudo virsh edit weborca
    
  • 容量を 50G に拡張
    $ sudo qemu-img info weborca.qcow2
    image: weborca.qcow2
    file format: qcow2
    virtual size: 20 GiB (21474836480 bytes)
     :
    
    $ sudo qemu-img resize -f qcow2 /vm/weborca.qcow2 +30G
    Image resized.
    
    $ sudo virsh start weborca
    $ sudo virsh console weborca
    $ sudo parted /dev/vda
    GNU Parted 3.4
    /dev/vda を使用
    GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
    (parted) p
    警告: /dev/vda で利用可能な領域の一部が利用されていません。GPT を修正して全ての 領域を利用可能にするか(62914560
    ブロック増えます)、このままで続行することができますが、どうしますか?
    修正/Fix/無視(I)/Ignore? Fix
    モデル: Virtio Block Device (virtblk)
     :
    番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
     1    1049kB  2097kB  1049kB                          bios_grub
     2    2097kB  21.5GB  21.5GB  ext4
    (parted) resizepart 2
    警告: パーティション /dev/vda2 は使用中です。それでも実行しますか?
    はい(Y)/Yes/いいえ(N)/No? Y
    終了?  [21.5GB]? 100%
    (parted) p
    モデル: Virtio Block Device (virtblk)
    ディスク /dev/vda: 53.7GB
     :
    番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
     1    1049kB  2097kB  1049kB                          bios_grub
     2    2097kB  53.7GB  53.7GB  ext4
    (parted) quit
    通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。
    
  • ホスト名変更
    $ sudo hostnamectl set-hostname weborca
    
  • ip 固定
    $ sudo vi 01-static.yml
    $ sudo netplan apply
    
  • orca ユーザー作成
    $ sudo useradd orca
    
  • 最新までアップデート
    $ sudo apt update ; sudo apt upgrade -y
    
  • user-dirs.dirs の作成
    $ cat .config/user-dirs.dirs
    XDG_DESKTOP_DIR="$HOME"
    XDG_DOCUMENTS_DIR="$HOME"
    
  • cups のインストール
    $ sudo apt install cups
    $ sudo usermod -aG lpadmin orca
    
  • cupsd.conf の設定
    # Only listen for connections from the local machine.
    #Listen localhost:631
    #Listen /run/cups/cups.sock
    Listen weborca:631
    
    # Restrict access to the server...
    <Location />
      Order allow,deny
      Allow from 192.168.1./24
    </Location>
    
    # Restrict access to the admin pages...
    <Location /admin>
      Order allow,deny
      Allow from 192.168.1./24
    </Location>
    
    # Restrict access to configuration files...
    <Location /admin/conf>
      AuthType Default
      Require user @SYSTEM
      Order allow,deny
      Allow from 192.168.1./24
    </Location>
    
    $ sudo systemctl restart cups.service
    
  • Brother プリンタドライバインストール
    $ sudo apt-get install lib32stdc++6
    $ sudo mkdir /var/spool/lpd
    $ sudo chown lp:lp /var/spool/lpd
    $ sudo mkdir -p /usr/lib/cups/filter
    $ sudo dpkg -i --force-all ./LPRファイル
    $ sudo dpkg -i --force-all ./CUPS 用ファイル
    $ dpkg -l | grep Brother
    
  • web で http://weborca:631 にアクセス
    cupsd.conf で設定したアドレス範囲のプリンタを探して、cups が自動的にプリンタを検出している。implicitclass:// となっているプリンタは、ドライバがないので設定できない。新しいプリンターを socket:// で作る
  • 処方箋用 HL-L5100DN デフォルトオプション: A5, Thin Paper, Resolution 300dpi とする

weborca インストール

  • インストール手順書に従ってインストール。ただし、プリンタはサーバで設定してあるので、クライアントでは設定不要。
  • データベース移行は、orca でデータベースをダンプ、weborca の /opt/jma/weborca/app/bin/onpre_db_import.sh で読み込む。このスクリプトは、weborca のダンプでも使える。
  • オン資インストール
  • orca api のアドレスが変わったけど、OpenDolphin は、大分前に、どちらでも対応できるようにプログラムしてあった。移行終了して、安定運用が確認できてから、さらに weborca 専用に書き換えた。

« 2024年9月 | トップページ | 2024年12月 »