elangのremote objectチュートリアルで詰まった

elangでremote objectのチュートリアルをやっていたわけだが、エラーが出て詰まった

erights.org

? var uri :=  "captp://*yajqnhlyv6dsln4lbldub3sde2pv4ntl@6da37224c737:45401,172.24.0.2:45401/4vpusf2seuryrx5e6d2iu4npzvsltfvk"
# value: "captp://*yajqnhlyv6dsln4lbldub3sde2pv4ntl@6da37224c737:45401,172.24.0.2:45401/4vpusf2seuryrx5e6d2iu4npzvsltfvk"

? def sr := introducer.sturdyFromURI(uri)
# value: <SturdyRef>

?  introducer.onTheAir()
# value: ["3DES_SDH_M2", "3DES_SDH_M"]
?  def remote := sr.getRcvr()
# value: <Promise>

? === 2020-01-07T16:07:37.396Z (StartUpProtocol.processMessage:StartUpProtocol.java:1227) ERR
comm: Exception during startup for
  net.vattp.data.DataPath@115d4d7b|172.24.0.2:45401|yajqnhlyv6dsln4lbldub3sde2pv4ntl, startupState=6
--vvvv--
No parameter accepted


java.security.InvalidParameterException: No parameter accepted
        at java.base/sun.security.provider.DSA.engineSetParameter(DSA.java:371)
        at java.base/java.security.Signature$Delegate.engineSetParameter(Signature.java:1427)
        at java.base/java.security.Signature.setParameter(Signature.java:993)
        at net.vattp.data.StartUpProtocol.signSent(StartUpProtocol.java:1517)
        at net.vattp.data.StartUpProtocol.handleStateOutgoingExpectREPLYINFO(StartUpProtocol.java:913)
        at net.vattp.data.StartUpProtocol.processMessage(StartUpProtocol.java:1187)
        at net.vattp.data.DataPath.newIncomingMsg(DataPath.java:703)
        at net.vattp.data.DataCommThunk.run(DataCommThunk.java:207)
        at org.erights.e.elib.vat.PendingCall.innerRun(PendingCall.java:75)
        at org.erights.e.elib.vat.PendingEvent.run(PendingEvent.java:74)
        at org.erights.e.elib.vat.HeadlessRunner.run(HeadlessRunner.java:174)
        at java.base/java.lang.Thread.run(Thread.java:830)

--^^^^--

=== 2020-01-07T16:07:37.449Z (StartUpProtocol.processMessage:StartUpProtocol.java:1227) ERR
comm: Exception during startup for
  net.vattp.data.DataPath@1fe3232a|172.24.0.2:45401|yajqnhlyv6dsln4lbldub3sde2pv4ntl, startupState=6
--vvvv--
No parameter accepted


java.security.InvalidParameterException: No parameter accepted
        at java.base/sun.security.provider.DSA.engineSetParameter(DSA.java:371)
        at java.base/java.security.Signature$Delegate.engineSetParameter(Signature.java:1427)
        at java.base/java.security.Signature.setParameter(Signature.java:993)
        at net.vattp.data.StartUpProtocol.signSent(StartUpProtocol.java:1517)
        at net.vattp.data.StartUpProtocol.handleStateOutgoingExpectREPLYINFO(StartUpProtocol.java:913)
        at net.vattp.data.StartUpProtocol.processMessage(StartUpProtocol.java:1187)
        at net.vattp.data.DataPath.newIncomingMsg(DataPath.java:703)
        at net.vattp.data.DataCommThunk.run(DataCommThunk.java:207)
        at org.erights.e.elib.vat.PendingCall.innerRun(PendingCall.java:75)
        at org.erights.e.elib.vat.PendingEvent.run(PendingEvent.java:74)
        at org.erights.e.elib.vat.HeadlessRunner.run(HeadlessRunner.java:174)
        at java.base/java.lang.Thread.run(Thread.java:830)

--^^^^--

=== 2020-01-07T16:07:37.451Z (PendingEvent.report:PendingEvent.java:107) WRN
causality: Problem in turn <<Vat start in <runs in start>>,115>: 
--vvvv--
Failed: done

- DelayedRedirector#__reactToLostClient(Object)
. <a DelayedRedirector>.__reactToLostClient(problem: <IOException: 172.24.0.2:45401: java.security.InvalidParam...a.base/java.lang.Thread.run(Thread.java:830)\n         \n         >)

java.lang.RuntimeException: Failed: done
        at org.erights.e.develop.assertion.T.fail(T.java:85)
        at org.erights.e.elib.ref.EProxyResolver.getOptRef(EProxyResolver.java:112)
        at org.erights.e.elib.ref.EProxyResolver.resolve(EProxyResolver.java:184)
        at org.erights.e.elib.ref.EProxyResolver.smash(EProxyResolver.java:212)
        at org.erights.e.elib.ref.DelayedRedirector.__reactToLostClient(DelayedRedirector.java:115)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:567)
        at org.erights.e.elib.prim.InstanceMethodNode.innerExecute(InstanceMethodNode.java:111)
        at org.erights.e.elib.prim.JavaMemberNode.execute(JavaMemberNode.java:188)
        at org.erights.e.elib.prim.E.callAll(E.java:164)
        at org.erights.e.elib.vat.PendingDelivery.innerRun(PendingDelivery.java:96)
        at org.erights.e.elib.vat.PendingEvent.run(PendingEvent.java:74)
        at org.erights.e.elib.vat.HeadlessRunner.run(HeadlessRunner.java:174)
        at java.base/java.lang.Thread.run(Thread.java:830)

--^^^^--

openjdk最新を使っていたのが原因のようで、6まで下げたら動いた

そのためのdocker

FROM openjdk:6

ENV EHOME=/ehome
RUN mkdir $EHOME
RUN curl -O http://erights.org/download/0-9-3/E-purej-0.9.3a.tar.gz
RUN tar zxvf E-purej-0.9.3a.tar.gz -C $EHOME

J2SE 1.4 をDockerで動かす試み

J2SE 1.4 をDockerで動かすときのメモです

java -versionでバージョン番号が出るところまでしか見ていないので、もしかしたらちゃんと動かないかもしれないが、過程をメモしておく

  1. j2sdk-1_4_2_19-linux-i586.binをダウンロード

    www.oracle.com

    Oracleアカウントが必要なので注意

  2. 作業用ディレクトリにj2sdk-1_4_2_19-linux-i586.binを入れる

    mkdir ~/java14/sandbox/ mv j2sdk-1_4_2_19-linux-i586.bin ~/java14/sandbox/ cd ~/java14/sandbox/

  3. centos7でコンテナを作成

    sudo docker run -v $(pwd):/tmp -it --name kytiken-java14 centos:7 bash

  4. yum install

    yum -y install ld-linux.so.2 libnsl

  5. j2sdk-1_4_2_19-linux-i586.binを実行

    cd /tmp chmod +x j2sdk-1_4_2_19-linux-i586.bin ./j2sdk-1_4_2_19-linux-i586.bin

  6. usrに移動

    mkdir /usr/java mv j2sdk1.4.2_19/ /usr/java/

  7. JAVA_HOME設定

    export JAVA_HOME=/usr/java/j2sdk1.4.2_19

  8. PATH通す

    export PATH=$PATH:$JAVA_HOME/bin

  9. java バージョン確認

    java -version

以上

あとがき

そもそもこれをしようと思ったのはElangという言語を動かすためにJava1.4が必要だと思ったからなのだが、やってみるとJava1.4だとうごかなかった

したがって、この作業はまったく不要だったわけだが、せっかく調べたので手順を残しておく

fishでLC_ALLとLANGを設定する

方法

設定用のスクリプトファイルを作成

touch {$HOME}/.config/fish/conf.d/lang.fish

編集

 set -xg LC_ALL ja_JP.UTF-8
 set -xg LANG ja_JP.UTF-8

背景

hyperというアプリケーションを使っていて LC_ALLLANG が設定されていないと日本語表示がおかしかったから設定したかった

hyper.is

感想

設定したらちゃんとhyperで日本語表示できるようになったからよかった

hyperちょっと使ってみた感じ悪くない

あとで記事にする

以上

dockerで使われているサブネットをしらべる

方法

docker network inspect [ネットワーク名] -f '{{range .IPAM.Config}}{{.Subnet}}{{end}}'

$ docker network inspect afilms_default -f '{{range .IPAM.Config}}{{.Subnet}}{{end}}'
192.168.80.0/20

ネットワーク名を調べる方法

$ docker network ls
NETWORK ID          NAME                            DRIVER              SCOPE
8dd19b5b834f        afilms_default                  bridge              local
7e3ed89b9261        host                            host                local
b37e0264e6ff        none                            null                local

docker network inspect

docker network inspect [ネットワーク名] でいろいろな情報をみることができる

json形式で出力される

$ docker network inspect afilms_default
[
    {
        "Name": "afilms_default",
        "Id": "8dd19b5b834fbd9fe9617064aae427bf0ee1e2ca9fda82018c7256306eb0e738",
        "Created": "2018-05-04T06:33:59.6783397Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "192.168.80.0/20",
                    "Gateway": "192.168.80.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "07cffd072b8f66868568e5f5656b5a976b28cfeea7111206f2e405aba74d005b": {
                "Name": "afilms_app_1",
                "EndpointID": "51c4e38588fa7148f46a985c1e8b28192b758a6c901f56399afc5607dd3f4a16",
                "MacAddress": "02:42:c0:a8:50:05",
                "IPv4Address": "192.168.80.5/20",
                "IPv6Address": ""
            },
            "093e3bf733e30f5636e4726384e72081bc25854abfb093d6dc1c88991a3347c2": {
                "Name": "afilms_webpacker_1",
                "EndpointID": "4b6e62b3217d67b6a2591922ddefc935e2219b742a283b585e6bc2785d2e0ac0",
                "MacAddress": "02:42:c0:a8:50:02",
                "IPv4Address": "192.168.80.2/20",
                "IPv6Address": ""
            },
            "7f3c95cd015a63fe6ca0cc0f5a81fbc8146c5097a6240a097189beea3f60ca2f": {
                "Name": "afilms_job_1",
                "EndpointID": "c1782aae5e921fab976fcd07043e41be34fb170cbddec29b11dfb6b6dc77fbef",
                "MacAddress": "02:42:c0:a8:50:06",
                "IPv4Address": "192.168.80.6/20",
                "IPv6Address": ""
            },
            "d26464fada8e638de59e41bd7267e0a1b158c50721c2dd30c5b0358999359fcd": {
                "Name": "afilms_redis_1",
                "EndpointID": "d84772758772e0e3e380cd3f22c17b0149fb2eb8cdb5cb4bec8d37e2ba94b611",
                "MacAddress": "02:42:c0:a8:50:04",
                "IPv4Address": "192.168.80.4/20",
                "IPv6Address": ""
            },
            "da052580d9592738586858e620db089fd23e7e8577546450bf259350d134f48f": {
                "Name": "afilms_db_1",
                "EndpointID": "78bf286b1701834d36cf262fecf3e54cdec8b1e3e58bc82acdc771699ad7a20d",
                "MacAddress": "02:42:c0:a8:50:03",
                "IPv4Address": "192.168.80.3/20",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {
            "com.docker.compose.network": "default",
            "com.docker.compose.project": "afilms"
        }
    }
]

-f オプション

-f オプションをつけることによって出力フォーマットを指定することができる

$ docker network inspect afilms_default -f '{{.Name}}'
afilms_default

以上