Unison 2.51でWindows 10とDebian 11を同期する

WindowsとLinuxでファイルの共有を行うために Unison File Synchronizerを使っていたのだが、Linux側をDebian GNU/Linux 11へアップグレードしたら、同期に失敗するようになってしまった。原因はこれまで使っていた(Windows側)のが2.48、Debian 11側が2.51になってしまったこと。Unisonはメジャーバージョンが一致していないとうまく動かない。

以下、設定メモ。

環境

サーバ側環境
Debian GNU/Linux 11.1

% cat /etc/devian_version
11.1

Unison 2.51.3

% unison -version
unison version 2.51.3 (ocaml 4.11.1)

Windows側環境

  • Windows 10 Home 21H1 19043.1266
  • putty 0.76(C:\Program Files (x86)\PuTTyとして設置しているとする)

Windows 10でのUnisonの設置と設定

GitHub bcpierce00/unisonからバイナリーファイルをダウンロードする。

  1. 上記リポジトリにアクセスする
  2. 「Releases」をクリックする
  3. 最新リリース(2021年10月11日現在 2.51.4)のWindows版をダウンロードする。今回は unison-v2.51.4+ocaml-4.11.2+x86_64.windows.zip をダウンロードした。
  4. 解凍し、フォルダ名を「Unison-v2.51.4」に変更し、C:\Program Files (x86)以下へ移動させる(C:\Program Files (x86)\Unison-v2.51.4)

続いて環境変数を設定する。

  1. 「スタート」を右クリックし、「システム」をクリック
  2. 開いたウィンドウの右側にある「システムの詳細設定」をクリック
  3. 開いたウィンドウの「環境変数」をクリック

以下の環境変数を追加する

  • UNISON:設定ファイルの置き場所。今回の例ではC:\MyDocument\.unison
  • UNISONHOSTNAME:ホスト名。今回の例ではNex49Desktop

次にプロファイルを設定する。C:\MyDocument\.unisonに default.prf を作成し、中身を以下のようにする。サーバーのPuTTyでの保存名をhogehoge, サーバのユーザ名をnext49、同期を取りたいディレクトリを~/SyncDir とする。

root=「Windows側の同期をとりたいフォルダ。例えば、C:\MyDocument\SyncDir」
root=ssh://next49@hogehoge/SyncDir
sshcmd=C:\\MyDocument\\.unison\\sync.bat
servercmd=/usr/bin/unison
fastcheck=true
addversionno=true

注意点は2.48では大丈夫だったのだけど、2.51ではsshcmdのフォルダ区切り(\)の処理がおかしい(\が無視される。たぶん、エスケープシーケンスの処理がおかしい。)。このため、フォルダ区切りは2重にする必要がある。

sshcmd(SSHを実行する実行ファイル)として、バッチファイルをC:\MyDocument\.unison\sync.batとして設置する。sync.batの中身は以下の通り。PLINKのオプションはこちらのとおり(コマンドラインの接続ツール Plink を使う)。Unisonのオプションはこちらのマニュアルか、unisonのヘルプ(unison -help)を参照のこと。なお、plinkコマンドの前に@を付けないとLinuxとWindowsの改行コードの違いによりエラーとなる(DOSコマンド一覧 @ (アットマーク))。

@plink PuTTy上のサーバ保存名 -l サーバのユーザ名 -ssh unison -server -contactquietly

最後にUnisonのGTK版(C:\Program Files (x86)\Unison-v2.51.4\bin\unison-gtk2.exe)のショートカットを使いやすいところに置く

Rails 6.1 + Ruby 3.0.2でテスト時にエラーがでる

Ruby on Rails チュートリアル 第6版 第3章のテストの節を実行していたら、以下のエラーに直面した。やっぱり、ちゃんとチュートリアルどおり、指定されたバージョンでやらないとだめよね。
stackoverflow.com

似たような人がいるかもしれないのでメモ。

  • チュートリアルで推奨されている環境:Ruby 2.7 + Rails 6.0.0
  • 私の環境:Ruby 3.0 + Rails 6.1

現象:cannot load such file -- rexml/document (LoadError)

% rails test
/Users/gotoh/.rbenv/gems/3.0.0/gems/bootsnap-1.9.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:34:in `require': cannot load such file -- rexml/document (LoadError)
	from /Users/gotoh/.rbenv/gems/3.0.0/gems/activesupport-6.1.4.1/lib/active_support/dependencies.rb:332:in `block in require'
	from /Users/gotoh/.rbenv/gems/3.0.0/gems/activesupport-6.1.4.1/lib/active_support/dependencies.rb:299:in `load_dependency'
	from /Users/gotoh/.rbenv/gems/3.0.0/gems/activesupport-6.1.4.1/lib/active_support/dependencies.rb:332:in `require'
〜以下略〜

原因:Ruby3.0からrexmlが標準Gemから外れたとのこと

rexml gem is a bundled gem since Ruby 3.0.0. So you must add rexml to Gemfile.

On Ruby 2.6 and 2.7, rexml gem is default gem. So default rexml is used if Gemfile does not include rexml. On these versions of ruby, you must add rexml to Gemfile only if you want to use specific rexml version.
(Rails 6.1, Ruby 3.0.0: tests error as they cannot load rexml - Stack Overflowより)

対処法:Gemfileにrexmlを追記する。

Gemfileに以下を追加する。

gem 'rexml'

その後、有効にする。

% bundle install

実行する。

% rails test
Running via Spring preloader in process 99508
Run options: --seed 58235

# Running:

..

Finished in 3.176816s, 0.6296 runs/s, 0.6296 assertions/s.
2 runs, 2 assertions, 0 failures, 0 errors, 0 skips

日本産婦人科医会と日本産婦人科学会は違うのか

10/8のポリタスTV「厚労省の検討会が薬局で緊急避妊薬を購入できるようにするかの議論を開始。解禁に向けた課題はどこにあるのか(10/8) ゲスト:遠見才希子」を聴いていて、「なんで、子宮頸がんワクチンについてはがんばって普及するのに、緊急避妊薬の薬局販売は阻止するんだろう?」と不思議に思っていたけど、子宮頸がんワクチンの普及は日本産婦人科学会で、緊急避妊薬の薬局販売素子は日本産婦人科医会だった(追記:日本産婦人科医会も子宮頸がんワクチンの普及を推進していた)。
youtu.be

議論再開のNHKニュース。
www.nhk.or.jp

日本産婦人科学会
公益社団法人 日本産科婦人科学会

日本産婦人科医会
www.jaog.or.jp

厚生労働省:第17回 医療用から要指導・一般用への転用に関する評価検討会議のページにリンクのある「要望者提出参考資料」である「ECP(Emergency Contraceptive Pill)ファクトチェック」を読むと、日本産婦人科医会の主張はあんまりにもあんまりじゃない?と思う。

追記:一方で100%子宮頸がんを防ぐわけでもなく、副作用がないわけでもない、そして性行為することをある程度前提とするHPVワクチンを女性のQOLを考慮して推奨し、一方で緊急避妊薬を100%妊娠を防ぐわけでない、(根拠あやふやな)副作用が懸念される、避妊なしで性行為が増えると反対する。なぜに?

音声でのやりとりが苦手な子に文章ベースのやりとりがハマった例

情報発信によって良い事例につながることができ、さらにその事例は発信するという良いインターネットの素晴らしい例。

1対1のテキストベースやりとりというのがうまくハマったのかな。

多対多だと話題の切り替えに対応できず苦手になっちゃうみたい。
lovetech-media.com

いろいろな方法にアクセス出来て、試せるのが良い。