assemblyPackageDependency用のassemblyMergeStrategyを入れる

以前,sbtでfat-jarを作る時に,毎回全ファイルのjarを作るのを止めて作業を効率化する方法を紹介したのですが,
ScalaでSparkのプログラムを作る作業を高速化する. - なぜか数学者にはワイン好きが多い

こんなエラーが出ることがあります.

[error] 426 errors were encountered during merge
[error] stack trace is suppressed; run 'last assemblyPackageDependency' for the full output
[error] (assemblyPackageDependency) deduplicate: different file contents found in the following:
[error] \null\Coursier\cache\v1\https\repo1.maven.org\maven2\org\apache\poi\poi\5.0.0\poi-5.0.0.jar:META-INF/versions/9/module-info.class
[error] \null\Coursier\cache\v1\https\repo1.maven.org\maven2\org\apache\xmlbeans\xmlbeans\4.0.0\xmlbeans-4.0.0.jar:META-INF/versions/9/module-info.class

重複ファイルのエラーが出るときは,build.sbtに以下のような記述を入れる:

assemblyMergeStrategy in assemblyPackageDependency := {
  case PathList("javax", "servlet", xs @ _*)         => MergeStrategy.first
  case PathList(ps @ _*) if ps.last endsWith ".class" => MergeStrategy.first
  case "UnusedStubClass.class"  => MergeStrategy.first
  case "application.conf"                            => MergeStrategy.concat
  case "unwanted.txt"                                => MergeStrategy.discard
  case x =>
    val oldStrategy = (assemblyMergeStrategy in assembly).value
    oldStrategy(x)
}

記述の中身は,ドキュメント
GitHub - sbt/sbt-assembly: Deploy über-JARs. Restart processes. (port of codahale/assembly-sbt)
のMerge Strategyの記載を参考に,適宜変更してほしい.

plugins.sbtにハマる

sbtでscala3を書いていてハマりました.

ちょっと違うバージョンを作ろうと思ってsbtプロジェクトのディレクトリをコピーしたりしてたら,こんなエラーが出始めました.

[warn]  Note: Some unresolved dependencies have extra attributes.  Check that these dependencies exist with the requested attributes.

[warn]          com.eed3si9n:sbt-assembly:1.2.0 (sbtVersion=1.0, scalaVersion=3)

[warn]  Note: Unresolved dependencies path:

[error]   not found: https://repo1.maven.org/maven2/com/eed3si9n/sbt-assembly_3_1.0/1.2.0/sbt-assembly-1.2.0.pom

mavenから消えたのかと思って数時間悩みました.

原因は,project/plugins.sbtを間違って一個上のディレクトリにもコピーしていました.

この2つのファイルが同時に存在した状態.

<projectディレクトリ>/project/plugins.sbt
<projectディレクトリ>/plugins.sbt

ディレクトリ直下にファイルがあったせいで,sbt-assembly_3.1.0となっていてファイルが探せていませんでした.

  • plugins.sbtの記述

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "1.2.0")

  • plugins.sbtがディレクトリ直下にある場合に探しに行くパス

https://repo1.maven.org/maven2/com/eed3si9n/sbt-assembly_3_1.0/1.2.0/sbt-assembly-1.2.0.pom

  • plugins.sbtがprojectディレクトリにある場合に探しに行くパス

https://repo1.maven.org/maven2/com/eed3si9n/sbt-assembly_2.12_1.0/1.2.0/sbt-assembly-1.2.0.pom

Scala関係は難しい.

SSHクライアントでX11フォワーディング設定をしてもX Windowが飛んでくれない時に最後に確認すること

クラウドでサーバを使うときも,グラフィカルなインターフェースを見たいことはあります
今どきは回線も速くなったので,Xを飛ばすくらいは軽々です

今どきじゃなくても,サーバ側のデフォルト設定としては,sshでXが飛ばせるようになってます

less /etc/ssh/ssh_config

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

なので,X Windowを表示したいパソコンにX Windowサーバを入れて立ち上げておけば,あとはそのパソコンで使っているsshクライアントでX11フォワーディングの設定をし,sshサーバにsshログインすれば,X Windowが飛んでくるはずです.

テスト用のX Windowアプリとしては,やはり伝統的なxeyes辺りがオススメ.なので,yum install xeyesとかapt install xeyesとかでsshサーバ側にインストールしておいて下さい.
(xeyes+は,もうサポートしていません)

さて,X Windowは30年くらい使っているのですが,未だにXが飛んでこないと悩むことがあります.
最近あったのは,gcpのCompute EngineのインスタンスからだとXが飛んでくるのに,AWSのEC2のインスタンスだと飛んでこない現象.

手元のWindows PCにはX Windowサーバが立ち上がっていて,クラウド上のサーバにアクセスするのもPuttyなんで設定は同じ.ポートが開いていないとかあるかと考えたけど,sshポートフォワードを使っているはずなので,sshで入れるってことは大丈夫なはず.

あるサーバからはXが飛んできて,あるサーバからは飛んでこない.そんなとき,xauthの存在を確認しましょう.

sshサーバ側で,xauthコマンドを叩いて立ち上がるか.
command not foundとかでxauthが立ち上がらなかったら,それのせいの可能性が高いです.yum install とかapt install とかで,xauthを入れて実行したら,/home/user名/.Xauthorityが無いから作った的なメッセージが出ると思います.そうしたら,もうXが飛ぶはず.

情報処理学会第84回全国大会

参加しました.
情報処理学会第84回全国大会ホーム

前回に引き続き,オンライン開催でした.
情報処理学会 第83回全国大会 - なぜか数学者にはワイン好きが多い

今回,アレだったのは...
ずっと現地開催のアナウンスが出ていて,オンライン開催のアナウンスが出たのは,2月18日.

各位

                一般社団法人 情報処理学会


     第84回全国大会の開催方法の決定について


 拝啓 時下ますますご健勝のこととお慶び申し上げます。

 第84回全国大会の開催方法を決定しましたのでご連絡いたします。
今回は大幅に規模を縮小したハイブリッド開催といたします。

・まん延防止対象都道府県(大会参加のご登録住所)の方は、
 県外移動制限措置のためオンラインで参加いただきますよう、
 強くお願いいたします(講演発表者、聴講参加者等全ての参加者が対象です)。
・3月3日の懇親会は誠に残念ながら中止といたします。

 現地参加予定で準備を進めていた方には大変申し訳ございませんが、
何卒ご理解、ご協力をお願いいたします。

                       敬具


<令和4年3月6日までのまん延防止の対象地域>
広島県群馬県、埼玉県、千葉県、東京都、神奈川県、新潟県
岐阜県、愛知県、三重県香川県長崎県熊本県、宮崎県、
北海道、青森県福島県茨城県、栃木県、石川県、長野県、
静岡県京都府大阪府兵庫県岡山県、福岡県、佐賀県
鹿児島県、和歌山県高知県

開催が3月3日からだったので,2週間ほど前の決定でした.一ヶ月くらい前に決めて欲しかった...

私も宿や交通を取っていたのですが,幸い,コロナの影響ということで,キャンセル料等は無しで支払っていた料金は返して頂けました.

今年も,全国大会のシメとして行われるIPSJ ONEは面白かったです.
【生放送】情報処理学会 第84回全国大会 IPSJ-ONE 2022 - YouTube

情報科学技術フォーラム FIT2021参加

今年も参加しましたよ.

FIT2021

以前に投稿した記事によると,
FIT2018 第17回情報科学技術フォーラム - なぜか数学者にはワイン好きが多い

例えば2005年まで参加記録があるようです.
FIT2005 その後 - なぜか数学者にはワイン好きが多い

ああ,参加記録がある,というのは,ブログに書いたFIT参加記録の最初が2005年ということで,FIT自体は最初から参加してました.

「静電容量無接点方式」で高い耐久性を誇り、10年くらいは使えるらしい。

ずっと使っているハッピーハッキングキーボードの使用レポート的な記事を読みました.

タイピングの衰えを補ってくれたのは、HHKBのハイエンドモデル「キーボード」でした | ギズモード・ジャパン

記事中の文章によると.

静電容量無接点方式」で高い耐久性を誇り、10年くらいは使えるらしい。

自分が使っているHHKを見てみました.
f:id:tullio:20210815010819j:plain

2004-08って書いてます.
買ったのはだいたいその頃なので,もうすぐ,10年どころか使って20年になるようです.壊れたり調子が悪くなる気配は全くありません.死ぬまで使えそうです.