Archive for the ‘Linux’ Category

以前ちょっと書いたように、Androidスマフォでの自動処理などに便利に使っていたAutomagicが終了になってしまったので、他の同等なアプリに移るか使わないで済むようにしようとしていた。具体的には、それまで使っていた2つの処理: スマフォ内の画像のPCへの自動転送とWriteNoteの代わりのメモ作成・送信が対象だった。

調べてみると、有名なTaskerは余りにも操作性が悪いとのことだったし(あと、デモ版がない)、ちょっと試したAutomateは まあ悪くなかったが、またいつか使えなくなる可能性があるのは嫌だし、電池を食う可能性があったので、そういうアプリを使わないで済む方法を考えた。

WriteNoteの代わりについては、以前も書いたように、比較的容易にBNoteという自分用サービスができた。自分のサーバでノートを記録するサーバプロセスを動かしておき、スマフォのブラウザで書き込むものである。

残ったのはスマフォ内の新規画像(動画、音声も可能)のPCへの自動転送だが、これがなかなか難しかった。技術的には全然高度ではないが、Automagicなどのようなアプリなしでスマフォを外から状態取得・制御することは不可能なので、そこを「なんとか」するのが難しかった。具体的には、スマフォ内に新規画像が出来たことはスマフォしか知っていないが、AutomagicなどがないためPCに通知することができないのだ。

それでも、いろいろ考え、試行錯誤やAndroidの動作を確認して、以下のような処理にした。スマフォ側アプリは使わないので、全部Linux PCからの処理だが、念のため、処理の主体として"[PC]"と書いた。

  1. [PC] スマフォがLANに接続され、sshが通じるまで待つ。(= スマフォが室内に入ったか、スリープが解除されるまで待つ。)
  2. [PC] スマフォ内の新規画像の有無を調べる。
  3. [PC] 新規画像があれば取り込む。
  4. [PC] 少し(今は3分)待つ。
  5. [PC] スマフォがLANに接続されていてsshが通じていたら、2へ。
  6. [PC] スマフォにsshが通じなくなったら、1へ。

最初に書いたように、元々Automagicのプログラムからの通知を契機に画像をPCから取得するプログラム(システム)があったのだが、それを上のような処理もできるように変更(機能追加)した。従来のはサーバーモード、今回のはpull(またはポーリング)モードと呼んで居る。今回は、上の処理の3以外の部分を作った(正確には、共通部分=3は同じものを使いたかった)。

なお、「スマフォ側アプリは使わない」と書いたものの、実際にはsshサーバアプリ(SimpleSSHD)を使っている。これにより、PCからスマフォに接続してコマンド(多くのLinuxコマンドが使える)を実行したり、スマフォのストレージにアクセスしたりする。sshサーバ(sshd)はとても汎用的なので、Automagicのようにディスコンになって困ることはまずない。ある製品がディスコンになっても、互換の別のものに置き換えることが容易なためだ。

スマフォ内に新規画像が出来たことをスマフォから通知できないので、PCから定期的に調べる(ポーリング)ことにした。この方法はほとんどいつも無駄にファイルを検索するので好きでないが、仕方ない。頻繁にストレージにアクセスすることで電池消費率が増えなければ良しとしたが、今のところ問題なさそうだ。Androidの仕様なのか、スリープ状態の時は処理が遅くなる(例: 新規画像の検索(の開始)に1分以上掛かることがある)ので、GUIでないプログラムも省電力化されているようだ。

それから、外から帰って来た時などに、スマフォへの接続がなかなかできない問題があった。いろいろ調べたら、スマフォがルータに接続していないためで、当たり前のことだった。Androidはあまり頻繁にWi-Fiをチェックしないようだ。帰宅して画面を点灯しないでいると数十分は繋がらないので、15-30分間隔だろうか(それで、以前は即座に繋げるようなフローをAutomagicで作ったのだが、電池を食うので止めた)。

もう一つの問題は、やはり省電力化に関係すると思われるが、sshで繋がっても、コマンドによって処理が遅いものがあることだ(速いコマンド・場合があることが謎である)。具体的にはrsync(新規画像の取得に使う)が遅くなることが多かった。また、find(新規画像の検索に使う)も遅くなることがある。正確には、どちらも実行が遅いのでなく、起動するのが遅いようだ。rsyncは数分間掛かることがあり、普通の設定だとタイムアウトしてしまう。かといって、タイムアウトを10分などにするのも今ひとつだ。

それで、試しに、sshfsでスマフォのストレージをPCにマウントして画像取得してみたら、マウントされるのが遅いことがあるものの、その後は高速に処理できたので、画像取得はsshfs+rsync(スマフォのストレージをローカルととして扱う)で行うことにした。

ただ、そんなことは(今まで使っていて、今回も使っている)画像取得プログラムは想定していないので、いろいろな対処(「調整」)をした。それらを場当たり的でなく、なるべく汎用的にするのが大変だったが、「まあまあ」だ。

その他に、スマフォの処理状況をPCは分からないので、書き込み中の中途半端な画像を取り込んでしまうのを防ぐことにした。これも どう実装するか悩んだ。結局、ファイルの更新時刻が新し過ぎるものは取り込まないようにした。※ 具体的には、ファイルの更新時刻が現在時刻より1分以内のものは次回(約3分後)に取り込むようにした。

※他の方法として、画像ファイルなどの中身(が正しいか)をチェックすることも可能だが、既存のプログラム(例: ffmpeg, ImageMagickのidentify)で最後の数バイトが欠けても分かるものはなさそうだったので、止めた。

ただ、3分待たずに画像を取り込みたいこともあるかも知れないので、以前同様に手動取り込みもできるようにした。スマフォ側からは、ブラウザでPC側のサーバに(従来と類似の手順で)アクセスする(通知を送る)ことでできるようにした。PC側からは、上の2と3の処理を(周期的なタイミングでなく、)僕のしたいときにするような処理にしている(従来と同じ処理)。

細かい工夫として、スマフォのIPアドレスはルータの設定や交換などで変わる可能性があるが、そのたびにPCの画像取得の設定を変えなくても済むように、スマフォをMACアドレスで管理し、通信する時にarpコマンドでIPアドレスを調べるようにしている。なお、スマフォやPCが起動直後などでarpテーブルに登録されていない場合は、broadcast pingなどで調べるようにした。

 

作って(正確には既存プログラムの改良)出来て、それなりにちゃんと動き出した。手前味噌だが、スマフォで写真を撮影したり画面キャプチャして少しすれば(忘れて居たりするw)勝手にPCに来て、digiKamで"New"のタグが付けられていて一目で分かるので、かなり便利だ。

 

という訳で、めでたく(というか、多くの場合と違って何も問題はなかったので、めでたくはないのだが)Automagicを使わなくすることができた。

 

(バックグラウンドで動く、純然たるサーバプログラムなので全く画像がない。出すとしたら、(ハッカー映画みたいな)ターミナルにデバッグ文字列が流れる動画?w)

  •  0
  •  0

先日買ったLogitecのHDDケース(ビデオ用)が僕のPCや別の外付けHDD(バックアップ用)と相性が悪いようで、USB3では まともに繋げられないことが分かった。もちろん、そもそも、ビデオは観ないので気にする必要はなく、そのまま「そういうものだ」と目をつぶって忘却の彼方に放り出せばいいのだが、それはできない相談だw 随分試行錯誤して、原因に関係ありそうなことが分かって対処ができ、今は無事USB3で繋がるようになった。

環境

  • マザーボード: ASUS P8H67-V
    • USB3のコントローラ: ASMedia ASM1042
  • HDDケース
    • Logitec LGB-EKU3 (= LHR-EKWU3BK)
    • センチュリー 裸族のインテリジェントビル5Bay CRIB535EU3
  • OS: Linux Mint 20 Xfce

現象

  • LogitecのHDDケースに入れたHDDとセンチュリーのケースに入れたHDDをASMediaのUSB3ポートに繋いで同時に電源を入れると、片方(ほとんどはLogitec)が認識されないことが多い。
    • 認識されない場合、Logitecの電源はoff(ランプが消灯)になる。
    • 片方ずつ電源を入れた場合はほとんど問題ない。
      • ただし、センチュリーのケースはタイミングによっては起動しないことがある(offにした直後にonすると、まず駄目)。
      • Logitecもたまに駄目なことがある。
  • 認識されなかった場合、lsusbコマンドでも表示されない。
  • 認識されなかった場合でも、問題のドライブのUSBコネクタを抜き挿しすれば直る。

原因に関係ありそうなこと

  • ドライブを接続した場合、システムのログ(syslog)には、USBのconfig error(詳細は不明)が出ることが多い。
  • センチュリーのケースは一旦High Speedで認識され、すぐに切断されてSuper Speedになることが多い。
    • ただし、上の2つの現象が起こっても正常に認識されることもある。
  • 以下は推測
    • センチュリーのケースの電源が経年劣化で弱くなっていて、電源投入直後の動作が不安定。
      • 仕様上は電源の容量は足りている(HDDの起動時の消費電流を概算で確認した)。
    • Logitecのケースの自動電源オフ機能がせっかち過ぎて、アイドル(USBプロトコル的に非接続)状態だとすぐにoffになってしまう。
      • この状態になると、PCに繋がっていないのと同じなので、電源off/onや抜き挿しする以外は何もできない。
    • ASM1042が古く、USB3対応が怪しい。
    • 同様に、マザーボードも古く、BIOSのUSB3対応が怪しい。
    • 同様に、LinuxのASM1042ドライバが怪しい。

関係なかったこと・試さなかったこと

  • UAS(USB Attached SCSI)が問題になるという情報があったが、どうもASM1042(またはLinuxのドライバ)は対応していないようで(ログに非対応というメッセージ("usb 4-2: USB controller 0000:05:00.0 does not support streams, which are required by the UAS driver.")が出る)、UASを有効にしても無効にしても、現象には関係なかった。また、速度も変わらなかった。
    • ただ、非対応と出るので、念のために無効にしている。
    • 古い情報(2014)だが、LinuxではASM1042のUASはうまく動かないために、無効にするパッチが出ていたようだ。それが今はどうなっているかは不明(無効にはなっておらず、致命的な問題もないが、うまくも動かない)。
  • ドライブやケースが冷えていることは関係なかった(寒い朝に起動しても問題は起こらなかった)。逆に熱いほうが関係しているのだろうか? あるいは、純粋にタイミング的な問題で、温度には無関係なのかも知れない。
    • 今日の昼の比較的暖かい時に試したら問題なかったので、温度は関係なさそうだ。 (12/15 16:50)
  • BIOSのUSB関係の設定はいくら変えても関係なかった。
    • 意味が分からないものがほとんどで、マニュアルにも書いてないものがあり、手探りで試した。
  • 以下は試さず。
    • BIOSのファームウェアは最新なので、更新しようがなかった。
    • ASM1042のファームウェアは公式に配布されていないので、更新しようがなかった。
    • どちらかのドライブをUSB3のハブを介して接続すれば、あるいは、別のUSB3インタフェースボードを使えば直りそうな気がしたが、どちらも手持ちはないからお金が掛かるし、わざわざ古いPCに追加するのは馬鹿らしいので止めた。
    • センチュリーのケースの電源を交換したかったが、やっぱり手持ちはないので、壊れてからにすることにした。
    • 書いたあとで気になったが、どちらかあるいは両方のケーブルが悪いということはあるだろうか? まずないとは思うが、そういうオチもあるから怖い。

対処

  • 問題のドライブ(のUSBコネクタ)をソフト的に抜き挿ししてみたら、うまい具合に両方のHDDが認識されたので、処理を自動化するプログラムを作った(次項を参照)。
    • 検索したら いくつかの方法が見付かったが、USBコントローラを無効にしてから有効にするのが効果があった。 (→ 参照)
      • 具体的には、LinuxのUSBコントローラのunbindとbindという制御ファイルにコントローラのデバイスID(Linuxのデバイス関係にはいろいろな名前があるので、正しい呼び方は分からない)を書き込む。
        • 例(super userで実行):
          • dev_id="0000:05:00.0" (/sys/bus/pci/drivers/xhci_hcdの下にIDの名前のディレクトリがあるので、対象のものを探す)
          • 無効化: echo $dev_id > /sys/bus/pci/drivers/xhci_hcd/disable
          • 有効化: echo $dev_id > /sys/bus/pci/drivers/xhci_hcd/enable
      • この方法だと、そのコントローラに繋がっているすべてのデバイスが切り離されてしまうので、多くのデバイスを使っている場合は余り便利でない。(別のコントローラに繋がっているデバイスは全く問題ない)
    • 念のため、抜く前に、認識されてマウントされているディスクをumountすることにした。

ソフト

  • 問題発生の検出と対処を自動化するスクリプト(chk-usb3-mf.sh)を作った。
  • chk-usb3-mf.shは以下の処理を行う。 (概要)
    1. システムのログ(/var/log/syslog)にメッセージが記録されるたびにチェックし、問題に関係のあるイベント(下記)を抽出して、それぞれに対応する処理を行う。
      • USB config error (例: "usb usb4-port1: config error"): 処理に必要ではなく、参考のために抽出している。
      • Super Speedデバイスの認識 (例: "usb 4-1: new SuperSpeed Gen 1 USB device number 4 using xhci_hcd"): それほど重要ではなく、参考のために抽出している。
      • High Speedデバイスの認識 (例: "usb 3-1: new high-speed USB device number 2 using xhci_hcd"): 処理に必要ではなく、参考のために抽出している。
      • SCSIデバイスの接続 (例: "sd 6:0:0:0: Attached scsi generic sg3 type 0")
        • なぜか、ディスクIDの先頭は"sd"の場合と"scsi"の場合があった。
      • ディスクのマウント (例: "Mounted /dev/sdd1 at /media/XXXX/VOLUME on behalf of uid YYYY"): 上のattachと比べてマウントには時間が掛かるので、今は参考程度にしか使っていない。
      • 周期タイマー(ログのイベントではない): タイムアウト処理のため、一定時間(2秒)ごとに起動する。
    2. SCSIデバイスが接続されたら、ディスク数を+1する。
    3. ディスク数が想定値(2)になったらOK(= 問題は起こらなかった)なので、タイマを停めて内部状態をリセットする。
    4. そうでない場合はタイマを起動する。
    5. タイマがタイムアウトした(前回のSuper Speedデバイスの認識から規定時間(6秒)以内にディスク数が想定値(2)にならなかった)場合、問題が発生したので、USBの再スキャン(USBコントローラの無効・有効化)処理を行う。
      1. 再スキャンを行うかのダイアログを出す。
      2. 回答が「行う」の場合は、以下を実行する。
        1. Super userの権限が必要なので、以下の処理をpkexecを使って行う。
        2. 認識されたディスクがマウントされていたらumountする。
          • タイミングによっては、問題を検出したときはドライブを認識だけしていて、この処理の直前にマウントされる場合があるので、ドライブのデバイス名が分かる場合は、エラーになってもいいのでumountするようにした。
        3. そのディスクのUSBコントローラ(= ASM1042)を無効にする。
        4. 少し(1秒)待つ。
        5. 無効にしたUSBコントローラを有効にする。
        6. 少し(1秒)待つ。: 不要と思われるが、念のために入れた。
      3. 内部状態をリセットする。

結果

  • 成功: おそらく10回以上試したが、問題の発生を確実に検出できてダイアログを表示し、そこで指定することでUSBデバイスの再スキャンを行って両方のドライブを認識できるようになった。

その他

  • 電源投入直後に比べ、コントローラの無効・有効後のドライブの認識はすごく速い。これが何か関係あるのかも知れない。
    • 単に、HDDなので電源on後に回転数が上がるのを待つ時間があるだけなのか?
  • ASM1042のSuper SpeedとHigh Speedは、仮想的に別のポートとして扱われている(LinuxではデバイスIDが異なる)。
  • 一度、ファイルマネージャ(Thunar)の動作がおかしくなった。Thunarのボリューム管理と本プログラムのumount処理が競合したと思われる。
  • 想定した数のドライブが接続されていることを前提にしているので、本当にドライブが少ない場合でも問題が起こったと認識してダイアログが出るのが今ひとつ。
    • ドライブが認識されていない状態ではドライブが繋がっているかどうかは分からないので、ドライブ数を自動で判別するのは難しい。
  • イベントのチェックや再スキャン処理の実行はもっとスマートな方法(udevを使う?)があると思うが、udevはなかなか手ごわいので、今回は見送った。
  • 本当はダイアログを出さずに自動的に再スキャンしたいが、無限に再スキャンし続けることがありそうなので、今は止めている。

 

これでめでたくLogitecのHDDケースもUSB3で繋げられるようになった。USB3になった効果としては、転送速度が約2倍(80MB/s前後)になった。とはいえ、何度も書いているように、このHDDを使うことはほとんどないので、あくまでも自己満足の世界であるw

ただ、USBポートのソフト的な抜き挿しは以前からやりたかった(何度も失敗していた)ので、用途は限定的ながらもその方法が分かったのは、収穫だ。

 

そして、(前に書いたが、)Logitecのケースについては、この処理に加えて、定期的にアクセスすることで自動電源オフ機能を実質無効化できたのと電源・アクセスランプを前面に付けたので、ようやくまったく普通に使えるようになった。いやぁ、全く面倒な奴だ・・・w

 

PS. デバッグや動作確認で何度もoff/onすると、いつかセンチュリーの電源が壊れそうで ひやひやしていたが、今はまだ大丈夫そうだ。でも、古いもの(2011年に購入)なので いつかは壊れる気がする。

  •  0
  •  0

先日気になった、スリープからの復帰後に、EvolutionがIPv6(以下v6)でなくIPv4(以下v4)を使ってしまう件だが、やはり、v6とv4の初期化時間の違いによるようだ。

今日、後述の処理の有効性を調べるため、一旦ネットを全部無効にして、手でv6とv4を順番に有効にしようとしてみたら、v6の初期化が全然終わらず、設定間違いや何かのバグで停まっているのかと思った。しかし、実は処理は続いていて、忘れた頃に有効(使用可能)になった。と言っても何十分も掛かる訳ではなく10秒くらいだが、体感としては随分遅い。

処理時間が違う理由を考えてみると、僕のデスクトップPCでは、v4はローカルな固定IPアドレスなので、初期化時間はほぼ0だが、v6はプロバイダの設備やルータと相談しながらアドレスを振っているからだろうと思われる。更に、先日使い始めたプライバシー拡張も遅くなる一因なのかも知れない。元々v6は複雑で重いのが、更に遅くなるのだろうと想像する。

という訳で、初期化の時間差はどうにもならないけれど、それでも意地でもEvolutionにv6を使わせたくなってしまい、次のような処理を考えた。

  • EthernetのNW-IFとして、v6専用とv4専用の2つを作る。
    • どちらも物理IFは同じ(ルータに繋がる)なので、片方は仮想的なものにする必要があり、v4をaliasにした。
      • aliasの名前(suffix)は数字でなくてもいいようだったので、分かりやすくしようと":v4"にした(例: "eth0:v4")。駄目なら数字にすればいい。
  • スリープになる時は、まずv4専用NW-IFを無効にし、そのあとでv6専用NW-IFを無効にする。
    • Linuxのマニュアルを読むと、本来のNW-IF(ここではv6専用NW-IF)を無効に(ifdown)すると、aliasも無効になると書いてあるが、先にaliasを無効に(削除)しておかないと内部に残骸が残ってしまうようで、次(復帰時)にaliasが作れなくなってしまったので、このようにしている。
  • スリープからの復帰時には、まずv6専用NW-IFを有効にし、そのあとでv4専用NW-IFを有効にする(aliasを作る)。
    • 念のため、v6の初期化のあとで0.5秒待ってから、v4専用NW-IFを有効にするようにした。
    • OSの起動時も同様である。

こうすることで、スリープからの復帰時に、(スリープ中にメールチェック間隔が過ぎたために)ネットが使えるようになるのを手ぐすね引いて待っているEvolutionは、v6専用NW-IFが使えるようになった時点でそっち経由で通信し出すと考えた。

なお、Evolutionがネットの状態をチェックしないようにしたら、スリープからの復帰後はエラーなどを出さずに全然メールチェックしなくなってしまったので、PCをスリープさせる場合でも意図してv6を使わせ続けるには こういう処理が必要そうだ。

本来は、スリープからの復帰後にタイムアウトで通信を中断し、エラーを出すとかリトライすべきなのだが、Evolutionはなぜか だんまりを決め込んでしまうようだ。あるいは、タイムアウトが長過ぎる(数時間?)のだろうか?

実装してみたら、(例によって随分試行錯誤したが)うまくいった。明日、(寝ている間の)長時間スリープ後の結果を見るまでは確定しないが(→ 12/4の朝に問題なかった。: 12/4 9:49)、今はめでたく、通常時は自分のサーバ関連のv4の使用ポート数が0になった。

 

とは言え、冷静に考えれば、そこまでv6を使う意味はミリもないのだが、気分とか趣味(v6が好きだからでなく、「きちんとしたい」みたいな、あるいは、「僕の目の黒いうちは、Evolutionなんかには好き勝手はさせねえぜ」w)的な理由で頑張ってしまった。すなわち、冷静じゃないってことだw

  •  1
  •  0

少し前の話だが、2要素認証のワンタイムパスワード(TOTP)生成用のアプリAuthyを止めた。それ自体は便利だったのだが、Linux版が嫌いなSnapというソフト配布システムを使っていて、Snapを止めるために止めることにした。

乗り換え先のアプリを検討したが、Authyのように、LinuxとAndoroidで動いてTOTP生成用データを共有・共用できるアプリはなかった。ただ、パスワードマネージャのKeePassXC(Linux)とKeePassDX(Android)はTOTPに対応しており、それらはクラウド経由でデータが共有できるので、使えそうなことが分かった。

一方、同じアプリでパスワードとTOTPを管理するのでは、2要素認証の意味がなくなって脆弱な気がしたので、次の方針にした。

KeePassXCとKeePassDXでパスワードとTOTPを管理するが、マスターパスワードの異なる別のDBに格納する。

そのため、実際のログイン時の操作は少し面倒で、以下のようになる。

  1. パスワードのDBを開き(パスワードDBのマスターパスワードを入れる)、目的のサイトなどにユーザ名とパスワードを入力する。
  2. 2要素認証のサイトではTOTPのDBを開き(TOTP DBのマスターパスワードを入れる)、目的のサイトなどにTOTPをコピー・ペーストする。

マスターパスワードが増えて なかなか面倒だ(その他にもPCやサーバのログインなどのパスワードがあり(これらもDBに入っては居るが、開くのが面倒なので覚えている)、記憶の上限に近くなっていて、時々こんがらがる)。Linux対応の指紋読み取り装置があれば使えるだろうか? 他にもっと便利な仕組みはあるだろうか?

近頃はFIDOとかいうのが有名だが、名前しか知らない。 → LinuxではYubiKeyというのが使えるそうだ。それを買うのもいいが、スマフォの指紋読み取りシステム・デバイスをLinuxにも使えれば手軽でいいが・・・ (これはおもしろそうだが、セキュリティ的にはどうなんだろうか? それに、きっと「root化」しないと無理だろう。)

なお、Andoroidには(TOTPには対応していないが)上記のアプリとDBが共用できるKeepass2Androidというパスワードマネージャもある(KeePassDXの前に使っていた)ので、パスワードはKeepass2Androidで、TOTPはKeePassDXでアクセスすることにして、アプリ内でDBを切り替える手間を省いた(KeePassDXは切り替えが面倒)。それから、Andoroidでは指紋認証でDBが開けるのでLinuxよりは楽だ。ただ、指紋を共用することで2要素認証の意味がなくなる気がしないでもないことに今気付いたが、どうなんだろう?

 

それから、以前も書いたが、Authyはデータをエクスポートできないので、移行する際は、Authyに登録している全部のサイトのTOTPを設定し直す手間があった。また、退会を申し込んでも30日間は保留され、毎週リマインダのメールが来るのが結構鬱陶しい。

  •  1
  •  0

起こりうる問題の検討と対処が終わったので、このドメインをIPv4/v6両対応にしました。当然ながら、このブログも両方対応です。

とは言え、アクセスする側からは何も変化はありません(何もする必要もないです)。あったら駄目ですw IPv6が使えて、IPv4より優先されているクライアントからは、IPv6でアクセスされます。もし問題がありましたら、お知らせ下さい。

なお、確認のため、当面、ブログのページ最下部にサーバとクライアントのIPアドレスを表示するようにしています。アドレスがなんか見慣れなくて : が含まれている場合はIPv6で繋がっています。

 

PS. やっぱり、個人的には、鳴り物*も、したり顔でユーザーに押し付ける下らねえ作業(例: 良く、「Aにしたら最初にすること10個」みたいなクソページにある、「AではBはこうする」)もなしの、「気付いたら なってた」ってのが一番いい。(v6追加なんて全然ローンチじゃないが※、)「シームレスローンチ」とでも言うのだろうか?

*ファンファーレ、「パフパフ」、「ドンドン」とかティーザーとかカウントダウンとかシャンパンとかクラッカーとか花火? それはそれで面白そうだwww

※もちろん、日本語で「ローンチ」って言うのすら嫌いで、ここに書くのも嫌だったw そういう人たちとは住む世界が違うと思っている。

そういう意味では、IPv6はなかなかうまいことやっている(運がいい)。IPv6自体は全くうまくなかったが、手をこまねいているうちにOSなどが対応していて、日本に限ってだが、フレッツのPPPoEがクソになったという無関係な方向から圧力が掛かって、意外にうまい具合に移行が進んでいる感じだ(棚ぼた?)。

こんなの、当時は全然思ってもいなかったw (「こんな複雑なの、永遠に使われねーよ」と思って居た。: まあ、先見の明がなかったな)

  •  2
  •  0

(題は微妙に違うかも。題と「毒を喰らわば−」と「背に腹は−」を足して3で割った感じかw)

先日の、IPv4(以下v4)だけがネットに繋がらなくなったトラブルの予防的対処のため、仕方なく、IPv6(以下v6)が使えるところは使って行くことにした。

いや、僕はそんな仕様はどっちでも良くて、そもそも「アドレス枯渇する・した」とか「遅いからv6にする」なんてのがおかしいと思って居るので、積極的にIPv6を使う気持ちはさらさらなかったのだが、ああいうトラブルがあると、さすがに全面移行とまでは行かないが、代替手段を用意して可用性を高めておく必要性を痛感したのだ。※ それが無料(自分の時間は別)で実現できるし、各アプリ・プロセスの通信速度が向上・安定する可能性がある(といっても、IPoEにしてから全体でも個々でも速度が遅いと感じたことはほとんどないが)から、まあ悪い話ではない。

※そもそも、可用性を高めることが必要なことをしているかどうかは別でw、「気分の問題」であろう。

それで、まずは、自分のサーバから始めた。サーバは、プロバイダがv6対応の環境で提供してくれていて、OSも対応しているので、設定すれば使える状態だったが、面倒なので今までは有効にしていなかった。

最初にサーバのv6関係の設定をした。普通にできて、デスクトップPCからpingが通った(v6のアドレスを直接指定した)。試しにwebサーバにアクセスしてみたが、通らなかった。Webサーバの設定をしていないので、v6では接続を受け付けていないためだ。

次に、設定を誤ると面倒なことになるwebサーバの、比較的単純な部分をv6対応の設定にした。試しにブラウザからv6のアドレスでアクセスしたら、例によって「怪しいサーバです。これ以上は駄目よんw」みたいなのが返って来て(HTTPSでSSL証明書がおかしいため)、めでたく繋がった。

それからDNSサーバにv6用のホスト名(サブドメイン)を登録した。今はv4とv6のホスト名を共通化する(同じ名前で両方に対応)のが一般的だろうが、予期できないさまざまな問題が起こりそうだったので(実際に問題は起こった(後述))、ひとまず別にした。作業としては、v6用のサブドメインにAAAAレコードだけを設定した。設定してから数分で反映され、ホスト名の検索(nslookupコマンドなど)に出るようになった。

次に、HTTPSをちゃんと使えるようにするために、Let's EncryptのSSL証明書にv6用のサブドメインを追加した。証明書の生成時にサーバの設定の調整が必要だった。証明書を作る時には、確認のためそのサーバにアクセスされるのだが、それを忘れていてwebサーバはHTTPSだけ有効にしていたが、真っ当な証明書(これを作ろうとしている!)がないのでアクセスされず、HTTP接続しようとして失敗した。それで、仕方なくHTTPも有効にして、無事(でもないけど)作れた。新しい証明書を作ってからブラウザでアクセスしてみたら、ちゃんと"404 Not found"が返って来た。

設定が複雑なので間違うと面倒なことになるブログは落ち着いてからにすることにして、まずは、普通のweb(BNoteを含む)とDAV(カレンダー・アドレス帳やJoplinで使っている)をv6対応にすることにした。とは言え、webサーバに関しては証明書を作るために調整してほとんど出来ているので、DAVサーバやクライアントアプリなどの設定変更や追加がほとんどだった。クライアント側の機器やアプリが多いので手間は掛かったものの、ほとんど問題なく終わり、ちゃんとv6でアクセスできるようになった。

とりあえずできたので、しばらく使って問題がないかをチェックすることにした。使っているうちに、以前から気になって居た、v6のプライバシーの問題※の解決策が見付かった。デスクトップPC(Linux)のv6の設定に、"IPv6 privacy extensions"というものがあるのに気付き、調べてみたら、僕の懸念を解消できそうなものだった。

※IPv6のアドレスは全世界でユニーク(かつ、不変なものもある)なので、そのクライアント(PCなど)からアクセスしている個人の特定や追跡が容易そうだという僕の懸念。

その機能を有効にし、モードを"Prefer temp. addr."にしたら、PCのv6のアドレスが増えた。今までのもの(通常のグローバルアドレス)に加え、一時アドレスが表示されている。このアドレスは通常のアドレスより秘匿性(?)が高いらしく、また、定期的に(1日-1週間のようだ※)変わるので、個人の特定や追跡が困難になるとのことだ。

※設定後1日経った今現在でもアドレスが変わっていないので、しばらくは観察する必要がありそうだ。 → 忘れると嫌なので、愛用のcrontabで自動チェックするようにした。

→ (12/2 19:35) 昨日くらいからアドレスが変わるようになった。大体30時間で変わった。設定変更後、OSの再起動またはNW IFの切断と再接続が必要だったようだ。

ただ、これには欠点もある。アドレスがコロコロ変わるので、僕がサーバのログを見て、本当に自分でアクセスしたのか分からないということだ。でもまあ、他の情報から判別できるし、プライバシーの問題の方が重要なので、Privacy extensionsを使うことにした。

一方、Androidはその点はどうなのかと調べたら、結果的には問題なさそうだ。rootになれないのでprivacy extensionsを有効にしたりすることはできないが、挙動を調べたら、v6アドレスが結構頻繁に変化することが分かった。

そもそも、Androidスマフォには2つ(以上)のv6アドレスがある。モバイル(LTE)とWi-Fiである。モバイルは、詳しいタイミングは分からないが、基地局に接続するたび(基地局が変わるたび?)に変わるようだ(機内モードをon/offした前後でアドレスが変わっていた)。Wi-Fiも同様に、APに接続するたびに変わる。

だから、僕の観察が間違っていなければ、Androidに関しても、v6で概ね問題なさそうだということになった。

なお、僕のスマフォ(AQUOS sense lite)はAPN登録時にはv6は無効になっていたが、APN設定でv4/v6のモードに切り替えたら、v6が使えるようになった。MVNOの場合、プロバイダによってはv6が使えないことがあるらしいが、僕は(IIJが下回りらしい)イオンモバイルで、全く問題なく使えた。

随分調子良かったので、このあともこの調子でスルッと行くかと思って気を良くして居たが、やっぱり、そうは問屋が卸してくれなかった。問屋というのは そんなに厳しいのだろうか?w 作業面での手間はなかったが、原因不明で解決が難しそうな問題が残っている。

切っ掛けは、欲を出して早くも(サブ)ドメインをv4/v6両用にしたくなって、v6用に作ったものをそうしてみたところ、一見うまく動いているのだが、Joplinだけがおかしかったことだ。本来の動作は全く問題ないのだが、なぜかサーバのv4のアドレスにアクセスしてしまうのだ。PCのOS(Linux)のv4とv6の優先順位がおかしいせいだろうと考えて、いろいろ調べて調整しても、結局直らなかった。

それで、Joplinのフォーラムに質問を出しつつ、更にJoplinのソースなどを調べたら、確定はできないが、どうやらJoplinの下回りのNode.jsのnode-fetchという通信用モジュールの仕様(または「現状」)によるのではないかと推測している。というのはnode-fetchのcustom agentオプションのうち、v4とv6の切り替えに関係するfamilyは、socket.connectによって以下のように規定されている。

family <number>: Version of IP stack. Must be 4, 6, or 0. The value 0 indicates that both IPv4 and IPv6 addresses are allowed. Default: 0.

字義通り解釈すれば、デフォルトの0で、v4/v6どちらも使える場合に、どちらが使われるか不明(不定)だ。※ 「普通」ならOSの優先順位(Linuxではv6が優先)と同じになると期待するが、実際の動作はそうではない。もちろん、Joplinに「v4優先」という意思や仕様があれば別だが、そうする理由は全くない。また、familyには優先順位が指定できないので、「v4優先」を実装するのは面倒だ。

※Node.jsのそこのソースを読めば分かるだろうが、なかなか面倒だ。一体、Joplinから何階層下がらせるつもりだ!?w

そこで想像してみると、OSまたはシステムコールまたはライブラリからホスト名に対応するIPアドレス一覧を得たあと、familyが0以外ならv4かv6でフィルタリングする。そして、残ったものを使う。複数あっても気にせず、「最初の1個」を使うのだろう。

結局、OSなどからどういうふうにIPアドレス一覧が来るかが問題だ。どうも、単にソートされているだけのような気がする。その場合、v4が先に来る可能性が高そうだ。 (まあ、余計なこと考えてないで、実物を読めば速いのだがw)

(11/29 0:01) 書いた後で更に調査・実験して、ほぼ原因が分かった。Node.jsのDNSモジュールのdns.lookupという関数は、ホスト名からIPアドレスを取得する(これをnode-fetchが使っているかは未確認だが、おそらく使っていると思う)。そのデフォルトの動作はDNSリゾルバの結果をv4のアドレスをv6より先に並べ替えて出すため、Joplinはv4/v6両用ホストに対しては(Linuxの標準・通常動作とは逆に)v4のアドレスにアクセスする。参考のため、dns.lookupの設定を行うオプションverbatimの説明を引用する。

verbatim <boolean> When true, the callback receives IPv4 and IPv6 addresses in the order the DNS resolver returned them. When false, IPv4 addresses are placed before IPv6 addresses. Default: currently false (addresses are reordered) but this is expected to change in the not too distant future. New code should use { verbatim: true }.

確認のため、簡単なプログラム(→ 参照: そのページ下部の"Live Demo"から開けるOnline Node Compilerが便利。ただし、そこではDNS検索は失敗してしまう)で、dns.lookupをv4/v6両用ドメインに対して実行したら、本当にv4アドレスが返って来た。そして、オプションを追加してverbatimをtrueにして実行したらv6アドレスが返って来た。。。

どういう理由か知らない(IPv6の実装が今一つだった頃からの経緯?)が、折角OSが苦労して(そのうえ、ユーザから文句を言われたであろう: )RFCに準拠して並べ替えたIPアドレスを、ライブラリごときが勝手に並べ替えてしまうなんて、余計なお世話もいいとこだ! 上の説明に「近い将来は逆になる」と書いてあるが、現行版ですらこの勝手な動作なので、当面は直りそうにない。ということは、Joplinの問題も直りそうにない。

直すとすれば、自分でNode.jsに手を入れることだろうが、そもそもビルド環境を作るのが面倒だ。更に、Node.jsは結構更新されそうなので、僕の修正を残すようにするのが難しい(でも、できれば爽快だろうな・・・)。

(11/29 12:57) 直し方を検討したが、「まあ不可能」という結論になった。まず、dns.lookup(DNSモジュール)はNodeに埋め込まれている(コンパイルされているようなので、パッチはまずできない。さらに、NodeはJoplinに埋め込まれている)ので、Node(この場合、Joplinも)をビルドし直さない限り入れ替えられない。

次に、dns.lookupは最終的にはLinuxのgetaddrinfo()を呼ぶが、これはlibcまたはlibnssに入っているようで(未確認)、どちらも大変基本的なライブラリなので安易には改造できない。うまくしてライブラリとNodeの間に割り込めばいいが、さすがに、いくら暇でもクソのためにそんな面倒なことはやってられない。

ってことで、気に入らないけど我慢するのがベストだ。

 

てな訳で、別に大きな問題ではないが、喉に魚の小骨が刺さったような気持ち悪さが残っている。しかし、そもそも論とか現実問題としては全く問題ない。というのは、最初に書いたように、v4が使えなくなった時の代替手段が欲しかった。そして、この仕様では、v4が駄目になったら自動でv6に切り替わる(正確には、アクセスする時に、生きているであろうv6が使われる)はずだからだ。

が、通信速度の向上・安定化とか、前回書いた、JPNEのMAP-Eのv4のポート数の上限の問題も改善したいという欲があるので、気に入らない。それで、今は、v6用に作ったドメインをやっぱりv6専用に戻して使っている(他の方にすれば「は?」って感じだろう)。

まあ、(気分は悪いが、)自分用サーバはv6専用でも何も問題ないから、このままでもいいかという気はしている。一つだけ問題が起こる可能性としては、何らかのトラブルでv6だけ通らなくなった場合にアクセスできなくなることだ(そんなことが本当に起こるのか、検討の余地はあるw ただ、ルータ故障時にv6非対応の物に交換したらそうなる)。その時はv4/v6両用の方がいい。ということは、そもそも論で言えば、v4/v6両用にして、Joplin(と他のNode.jsのアプリ?)だけはv4でも見逃すべきなのだろう。もう少し考えよう。

→ 全体的には、しばらくv6用ドメインで試して問題なければ、基本ドメインをv4/v6両用に変更し、v6用ドメインに換えた自分用サーバを使っているアプリの宛先をそっちに戻すのが一番美しそうだ。多くのアプリの設定を戻すのは手間だが、これなら、v6用ドメインは本当にv6用で筋がとおるし、基本ドメインはv4/v6両用で今風になるし、可用性も高まるから、いいことづくめだ。 (本当に?w)

それから、Joplinと似たような問題がEvolution(メーラー)でも起こった。通常時はv6をアクセスするのだが、スリープからの復帰後にv4に戻ってしまうのだ。どうやら、Linuxの動作なのだろうが、復帰時にv6が使えるようになるのが少し遅れるようで、※その関係で先に使えるようになったv4にアクセスしてしまうようだ。

※推測だが、v6の初期化の処理が多いために遅くなるのかも知れない。確かに、普通の処理(v6アドレスの取得・調整?)ですら重そうだし、上に書いたPrivacy extensionsは複雑そうだ。そういう処理はv4には全くないので、時間差ができても不思議はない。

それで、効果確認中だが、Evolutionのネットの設定の"Method to detect online state"を"Always online"にして試している(今まではNet Managerから取得するようにしていた)。これは他の普通のアプリと同じ動作(ネットの状態には関知しない)と考えられるから、一旦v6にアクセスしたら、そのまま使い続けることが期待できる。気になるのは起動時で、その時にv4だったら嫌だから、ログイン時の自動起動では数秒送らせて起動するようにした(ログイン時はスリープと違ってOSは普通に起動しているので、必要ない気もするが・・・)。

 

最後に、v6化した効果というのか、v4のポート数の削減率を調べたところ、当然ながらあった。僕のサーバ以外にもv6対応のサーバ・サイト(例: メールサーバ)があるため、アイドル時(例: Webブラウズしていない時)のv4のポート数が半分くらいに減り、その分がv6になった。以下に例を示す。

デスクトップPCで使っているTCPの全ポート数

  • アイドル時
    • v4: 15
    • v6: 15
  • アクティブ時
    • v4: 38
    • v6: 14

デスクトップPCで使っているTCPのポート数(自分用サーバとプロバイダのメールサーバ宛のもの)

  • アイドル時
    • v4: 3
    • v6: 10
  • アクティブ時
    • v4: 15
    • v6: 10

v6を使わない場合に比べ、v4率は、全ポートでは約27-50%減少し、自分用サーバなどに関しては約40-77%減少した。

とはいえ、もちろん、「Webの表示やJoplinの同期が倍速になった!」とかいうことは全くないw

 

という訳で、少し前までは使いたくもなかったIPv6を頼まれてもいないのにゴリゴリ使うことになって、いつものように疲れたでござるw

  •  0
  •  0

Evernoteからの脱却の一環として先日作った、WriteNoteの代わりのメモアプリ・システム BNoteを改良、というか何度も作り直して居た。いろいろ試したものの、結局、25年くらい前を彷彿させる※素っ気ないwebとなった。

※でも、marqueeやアニメGIFは使ってないので許されそうだw

僕にとって一番重要なのは、主に外出先で手軽に「サッと」ノート(タイムスタンプ付きメモ)を書くことができる、しかも、入力欄が大きくて見やすい・書きやすいということで、それらは充分に満たしているし、自分だけで使うものなので、やり過ぎるのは疲れるうえに馬鹿らしいから、とりあえずは良しとした。

以下にその変遷を書く。

  1. Automagic版
    • Automagicに問題はなかったが、この夏に終了になってしまったため、なるべく移行した方がいいと考えた。
    • また、入力欄が小さい(ほとんど調整できない)のがちょっと気に入らなかった。
  2. Automate版: 初期の機能確認まで
    • Automagicの代替アプリのひとつ、Automateを試してみた。
    • 機能的には使えそうなことは分かった(入力欄はAutomagicより良かった)が、有料だし面倒(グラフィカルなプログラミングはスマフォでしかできないので、結構疲れるし、何をするにもやり方が違う)なので止めた。
    • 入れたら電池消費が増えた(本当かは不明)気がしたのも、止めた理由の一つ。
  3. Web版 (作らなかったかも: 記憶が曖昧)
    • 試しに作って動いたが、ちゃんと使うには認証が必要なので、WordPress版に移行した。
  4. WordPress版
    • WordPress(以下WP)の非公開の投稿(ログインしないと表示できない)に無理やり(<pre>の中に入れた)HTMLとプログラム(PHP)を書いて、ノートが書けるようにした。
    • WPで認証できるメリットがあったため、やってみた。
  5. Web版 (WPで認証)
    • さすがに(中身が)綺麗でなかったので、単独のwebページにした。ただ、認証は必要なので、(無理やり)WPの認証を使った。
      • どういう仕組みかは分からないが、wp-load.phpを取り込むと、ログインしているかの確認ができる。
  6. Web版 (Joplinに保存): 中止
    • サーバにJoplinアプリ(コマンドライン版)をインストールすれば、自動でJoplinに取り込めて便利だと考えたが、以下の理由で中止した。
      • サーバにJoplinのストレージのNextcloud(以下NC)のアカウント情報を保存するのは良くない。
      • Joplinアプリのキャッシュ(Joplinのノート全部が入る)は暗号化されないが、それではNCのストレージを暗号化している意味がなくなる。
  7. Web版 (NC管理下に保存)
    • ノートのファイルをNCの管理下に保存し、NCでデスクトップPCに同期できるようにした。
    • NCの仕様により、ノートは平文で保存している。
      • BNoteのノートは量が少ないので、許容することにした。
  8. NCのFormsアプリ改造版: 断念
    • ファイルはNCに保存するのに認証がWPなのは変なので、NCの認証が効くNCのアプリを利用しようとしたが、断念した。
    • Formsアプリ(アンケートなどに使うアプリ)が結果が見やすいので試してみた。
      • Formsの入力ページを外のページのIFRAMEに入れて位置情報を追加しようとした。
        • しかし、どうしてもFormsの入力フィールドに位置情報を設定(自動記入)できなかった(設定してもサーバに届かない)ので、諦めた。
  9. NCの外部サイト版: 断念
    • NCから外部サイトを開ける機能にBNoteのweb版を指定して、NCの認証を利用しようとしたが、手軽に使える認証情報はなかった。
      • その情報(例: 外のNCのページのrequesttoken)とNCのDB内に保存された値を比較すれば、認証しているか確認できそうだと考えたが、DB内には見つからなかった。
    • NCのOAuth2機能が使えそうだったが、それほど手軽ではなかったので断念した。
  10. WP版 (Basic認証+α) ← 今ここ
    • 既にある手軽な認証機能を使うのを諦め、(昔ながらに)自分で認証することにした。
    • HTTPSなら、Basic認証は(カッコ悪いけど)それほど脆弱でないので、そうした。
    • また、愉快犯によるブルートフォース攻撃を避けるため、URLのパスを"bnote"のような分かりやすいものでなく暗号みたいな文字列にして、ログインを試すこと自体を難しくした。
      • 仮にログインできても、ノートが書けるだけで読めないので、(DoS攻撃は別として)致命的な問題は起こらなそう。
      • とは言え、変な引数やバッファオーバーフローなど、考慮していない脆弱性があるかも知れないので慎重を期した。

以下に、作った(出来た)ものについて書く。

BNoteの機能

  • スマフォで(PCでも)短いノート(タイムスタンプ付メモ)が書ける。
    • ブラウザで動くのでアプリのインストールは不要。
      • ただし、スマフォの場合、Operaでは位置が取れず、Firefoxはなぜかハングして表示できないので、事実上はChrome系しか使えない。
  • 各ノートには時刻と位置(取得可能な場合)が追加される。
    • 各ノート間は空行で区切られる。
    • その日の最初のノートの前には日付も入る。
  • 一日分のノートは1個のファイル(ファイル名に日付が入る)にまとめられる。
    • ユーザ(一人しか居ないが)・年ごとに別のディレクトリになる。
  • ノートのファイルはサーバに作成され、自動でデスクトップPCに同期される。
  • ノートを新規作成・更新したらメールで通知が来る。(Joplinへの転記忘れを防ぐため)

 

実装メモ

  • 認証: Basic認証
    • 上記のとおり、HTTPSならそれほど脆弱でないと考えた。
  • ノートの入力: HTML(FORM, textarea)
    • ノートをJavaScriptで送るためPOSTは面倒だったので、GETを使っている(URLのクエリー文字列にノートを含めている)。それぞれのノートは短いので、GETでも大きな問題はなさそうだと考えた。
  • 位置の取得: JavaScript
    • 送信ボタンを押した時に位置を取得し、ノートと一緒にサーバに送る。
    • 位置取得条件は「何でも可」(高精度でなくても可、無限に過去のものも可)にして、電池消費を増やさないようにしている。また、「あればいい」スタンスなので、取得タイムアウトを0.5秒と短めにした。
  • ノートへの時刻・位置情報の自動付加: PHP
    • ノートの送信時刻を各ノートの前に付け、位置(送られて来たら)を後ろに追加して、ファイルに記録する。
    • 時刻は、クライアント(ブラウザ)から送られて来たらそれを使い、なければサーバでの受信時刻を使う。
  • ノートの保存先: 通常のファイル (NCで同期)
    • NC(暗号化ストレージ)以外で作成・更新したファイルの取り込みを容易にするため、「外部ストレージ」の機能を使った。
  • ノートの同期: Nextcloudアプリ
    • 今までは別のファイルをrcloneで同期していたが、こちらのほうがリアルタイム性があって便利なので、全部を切り替えた。
  • 新規作成・更新ノートの通知: crontab+find
    • 定期的に検索している。
      • 最後に最新だったファイル名を保存しておき、それより新しいものを調べている。

問題点・TODO

  • サーバが停まっていたり、通信出来ない場合はノートが書けない。
    • そういう時は、エディタやJoplinを使うとか、手で紙に書けばいいか。。。
      • 通信できる場合は、元祖のWriteNoteを使ってもいい。
    • ブラウザのローカルストレージを使う手もありそうだが、なかなか面倒そうだし、やり過ぎだろう。
  • 複数のセッションで同時に書き込むと、きっと良くないことが起こる。
    • 対応するとすれば、書き込む時に排他制御するのだろうが、一人で同時に別の端末から書き込むことは物理的にできないので、対処しなくても大きな問題ではない。
  • 位置の取得条件などを変えられると便利かも。
    • そういう設定を付けても、いじることはまずなさそう・・・

その他

  • FirefoxのAndroid版は、上記のようにハングしたり位置が取れないだけでなく、viewportの動作がChromeやOperaと違っていた(textareaの幅がものすごく広くなった)ので、以前もそうだったが、相変わらず使えないと思った。
  • Operaで位置が取れないのは、navigator.geolocation.getCurrentPosition()のオプションの高精度("enableHighAccuracy")を有効にしていないからかも知れない。(未確認: これを指定すると電池を食いそうなので、余りしたくない)
  • 今はノートの記入にはChromeを使っていて、電池消費が気になるが、使いながら確認したい。
  • JavaScriptを使うと、(セキュリティ上の条件はあるが)iframeの親(外)や子(中)にアクセスできることが分かり、なかなか強力だと感心した。

 

PS. Evernoteからの脱却はほとんど終わったようなものだ。近頃はEvernoteでノートを書くどころか、全然アクセスしていない。あとは残りのノートをJoplinに移行する「だけ」だからロボットにでも頼めばいいが、適当なものがないのでw、やる気が出た時にやろうと思っている。ノートの数が多いので、重要なものだけは目で確認し、残りは一括処理しようと思っていて、その準備は大体できている。あとは一括処理するスクリプトを書く「だけ」だ。これもロボットに頼みたい(爆)

なお、Joplinは最高とは言えないが、少なくともEvernoteの10倍は いい。自分でいろいろ いじれるのもいい。ただ、Androidアプリはもう少し頑張って欲しい(大きいノートではビューア以外に使うのはキツい)。今はデスクトップ版に注力している感じなので、今後に期待したい。

PS2. その後、Hacker newsを見ていたら、僕と同じようにタイムスタンプ付きメモをしたい人(→ 元のスレッド: jlduggerという人のコメント)が居ることを知り、そのためのツール(jrnl)があることを知った。ノートの記録(表示)のされ方がBNoteそっくりなのに驚いた。 (11/26 14:16)

  •  0
  •  1

今までにもひどいソフトは数多くあったが、近頃いろいろ出て来たので書く。

Snap(Linuxのソフト配布システム?): 自分勝手・押し付けで全くひどい。とりあえず使わない方がいい。

  • システムディスク(ルートパーティション)を食ううえに、好きなところに移動すらできない(どういう訳かsym-linkすら拒否される)。
    • 調べると、結構多くの人が嫌がっていて、移動しようとして苦労しているようだ。
  • ホームディレクトリに勝手に作られたディレクトリ(snap)も移動不可(sym-linkも不可)。
    • この下に各自のキャッシュ(.cache)なども(通常のものと重複して)作られるので、ディスク効率が悪いこと この上ない。
    • アプリの設定(.config)も別で、sym-link不可で通常のものと共用もできないから、とにかく使いにくい。
  • 上記以外に、snapのリポジトリのディレクトリが勝手に大量にマウントされる。Snapのアプリを増やしたら際限なく増えるのではないか?
    • Authyを使っていた時の例:
/dev/loop1 56704 56704 0 100% /snap/core18/1932
/dev/loop0 56704 56704 0 100% /snap/core18/1885
/dev/loop2 165376 165376 0 100% /snap/gnome-3-28-1804/128
/dev/loop3 63616 63616 0 100% /snap/gtk-common-themes/1506
/dev/loop5 31744 31744 0 100% /snap/snapd/9607
/dev/loop4 166784 166784 0 100% /snap/gnome-3-28-1804/145
/dev/loop6 31744 31744 0 100% /snap/snapd/9721
    • AppImageもアプリのファイルをマウントはするが、ちゃんと、見えないようになっている。
  • システムを重くするようで(サーバに通信するため?)、Linux Mint 20に更新後にパネルのメニューが出るのが遅くなったり、ターミナル(シェル)が時々遅くなったのはこれのせいだった。Snapをアンインストールしたら直った。
    • 以前書いたpreloadは関係なく、やっぱり不要だった。
  • 更にひどいのは、今までsnapでなかったパッケージが無断で・気付かされずにsnapに移行することがあることだ。それに気付かないと、自分で設定を変更しても反映されないことが起こりうる。
    • なぜかMintのテーマ(Mint-Y)もsnap版になっていたので(アンインストールする時に気付いた)、それでテーマの修正がうまく行かなかったのかも知れないと思っている。
  • これを作ったUbuntu(Canonical)はかなり邪悪、あるいは、技術力・センスがない。UNIX, Linuxの文化に明らかに合っていない・無視している。

なお、似たようなシステムのFlatpakは随分マシな感じだし、AppImageは全く問題ない。ただ、どれもディスク容量は食う。

CanonicalはSnapを押し付けたいようで、将来的にはサーバでも使わざるを得ないようになりそう(今でも一部そうらしい)なので、やはり、Ubuntuからの脱却は不可避なようだ。

 

Authy(ワンタイムパスワード(TOTP)生成ソフト): Snapでなければ良かったのに・・・

  • Linux版はSnap版しかない。
    • ディストリビューションごとのパッケージが無理ならAppImageにしてほしかった。
  • 上記のようにSnapがひどくて削除するため、Authyを使うのを止めてKeePassXC(PC)とKeePassDX(スマフォ)に換えた(あとで書く予定)。
    • 登録したアカウント情報のエクスポートができないので、全部のサービスを再登録する羽目になって面倒だった。

退会手続きをしたら、直後だけでなく翌日にも通知メール※が来たので、30日後の期限まで毎日メールが来るかと思って あらかじめムカついてw 迷惑メールのマークを付けたが、そうではないようだ。

※間抜けなことに、HTMLの背景?が大き過ぎるため、スクロールして文字を探さないと読めなかった。

 

MySQL(DB): MariaDBとグルで嫌がらせ? 互いにロックイン状態をキープして、持ちつ持たれつ?

  • Mint 20(Ubuntu 20)に上げたらバージョンが8に(勝手に)上がり、設定やDBの互換性がなくなり、MariaDBに容易に移行できなくなった。
    • 勝手にバージョンを上げたのはUbuntuなので、やっぱりCanonicalも悪い。
  • 8になったらデスクトップもサーバも結構遅くなった気がする。
    • クエリーキャッシュなど、5からなくなった機能があるせいか?
    • また自分で最適化しろってこと?

下記のMariaDBの件もあって気分が悪いので、デスクトップPCのdigiKamでMySQLを使うのを止めて、SQLiteに移行(逆戻り)中(これがかなり遅い・・・)。サーバはPostgreSQLに移行かな?? (すごく面倒そう)

 

MariaDB(MySQL互換だったDB): 不親切なうえに出来が悪い。これは駄目。

  • MySQL 8からの移行が至難の業。
    • なぜか、MySQLでダンプしたデータ(SQL)を取り込めない(エラーになる)。
      • InnoDBが悪いのだろうが。原因も出ないのでお手上げ。
      • 僕が詳しくないせいはあるだろうが、なぜか、デフォルトのストレージ(AriaだかSonataだか何だか忘れたが、まともに使えれば何だっていいよ)でなくInnoDBが使われてしまう。
    • その前に、互換だと思って「普通に」起動したら、DBが一部変更されたようで、MySQLに戻しても開けなくなった(FREEZE状態になった)。
  • そもそも、コマンド名をMySQLと同じにしているのだから、互換性を保証して何の苦労もなく移行できなくちゃ、それこそ偽物や詐欺ではないか?
    • まったく「馬鹿かな?」だ。
  • サイトはごちゃごちゃしていて分かりにくく、全く不親切。
  • 名前(作者のガキの名前らしい)もセンスがない!

昨日だったか、MySQLから移行しようと随分苦労したが、結局上記のエラーでできずに諦めてMySQLに戻した。

  •  0
  •  0

近頃はPCなどに掛かりっ切りで随分篭っていた感じなので、昨日散歩した。ふと思い出した、ちょっと離れた公園の銀杏がまだあれば、それを観たかった。あと、先日作った、WriteNoteの代替(BNoteと名付けた)の屋外での動作確認や使い勝手の評価も兼ねた(実はこっちが主な動機だった?)。

着いたら、間に合ったのが分かったので ちょっとうれしくなった。いつもながら、ここの銀杏は なかなか綺麗だ。多くはなかったが、紅葉も綺麗だった。

その並木の下で、中国のイケメン(?)と女の友達数組が、ポーズを付けて(銀杏の葉の上に脚を伸ばして座ったりなど)撮影会(ってこともないだろうが)をしていた。いかにも中華系の若い人たちの元気な雰囲気で、なかなか楽しそうだった^^

公園を歩いて居たら、小さい保育園児4人くらいが(全然うるさくなく)おとなしく※並んで縁石にちょこっと座って、保育士さんたちに話し掛けられながらおやつを食べていた。何とも のどかで良かった。

※まだ歩くのもおぼつかなくて、うるさく走り回れないだけなのかも知れない。確かに、その子たちの大半は、あの柵付きトロッコのような手押し車に乗って来たようだ。

それにしても、あそこまで無口でおとなしいと(実際には、内心はそうでもないのかも知れないが)、さすがの僕も不思議と優しい目で見てしまう。そして、そういう幼い子どもの行動は、実は自然の本能なのかも知れないと、余計な想像を巡らせて仕舞った。

歩きながら、ラフマニノフのピアノ協奏曲 第2番 第1楽章の行進曲のようなところ(指示が長いなーw)が浮かんで来た。そこら辺は以前はそれほど好きではなかったが、近頃はいい(うまい)演奏を聴いたせいか、なかなかいい感じに思える。短い和音が連続するのを いかに滑らかに弾けるか(これはすごく難しそうだ)、しかも、行進曲のようにはガチガチにせず、ロマンティックな感じを残す、それでもパワーはちゃんと出すのがポイントのような気がしている。

それから、眺めがいいだけあって、カメラ女子(昔の能年的な雰囲気)と同オヤジw(例: 一眼+一脚+帽子+ベスト)が結構居た。平日だけど若い子は休みなのだろうか? 多いと言えば、赤ちゃんや幼児や犬を連れた人も多かった。一方、猫連れはもちろん おひとりさまの猫も見掛けなかった。

帰路、ちょっと遠回りして川沿いを歩いたが、なぜか、以前良く見た鯉も鳥も居なかった。

全部で2時間くらい歩いた。なかなか気持ち良かった。帰ったら昼時だったが、暑かったので とりあえずブローリーを飲んだ。

AQUOS sense liteで撮影

 

BNoteは問題なく使え、動作していた。散歩の経路を記録したり写真撮影してGPSが頻繁に更新されたためか、ノートに記録される位置情報もほとんど正しかった。ノートが、撮影した写真と一緒にPCに取り込め、メールで通知もされて、(細かい改良に結構苦労した甲斐あって)なかなか便利だと悦に入ったw そして、そのノートをそのままJoplinの日記に貼り込み、更に、この投稿の元ネタにできているのも便利だ。

なお、電池消費が少し多いようだったので、ノートのDropboxへの保存は止め、スマフォ内だけに保存するようにしてみた(でも、GPSやカメラの方が電池を食うので、変わらない気はする)。ただ、ミッションクリティカルな場合(例: 潜入取材)にはDropboxにも保存した方が確実そうだが、果たしてそういう機会はあるだろうか?w

 

PS. 歩いている途中で、埃っぽかったり目が痛くなることがあったので、部屋でたまに少し臭うのは(環境騒音と同様に)仕方ないのかも知れない。ただ、ジジイが吸って居た電子(加熱式)タバコの臭いは、部屋でもしたように思う。あの臭いも結構強く、しかも、煙草とは違った特性があるようで、始末が悪い感じだ。

  •  1
  •  0

昨日なんとか終わった、サーバのOS更新。12時間近く掛かった。そのあとも細かい修正をしていた。

デスクトップと同様、サーバもバージョンを2つ(Ubuntu 16 → 18 → 20)上げるため なかなか大変だったが、最初から思わぬトラブルばかりだった。

まず、もしもの時のため※、サーバ(VPS)の仮想コンソールが開けることを確認しようとしたら、そのログインのためのデスクトップPCの二要素認証のアプリが起動せず、そこから対処する羽目になったw (少し前に、そのアプリが使っている、snapという大嫌いなクソシステム(Ubuntu(Canonical)謹製)の設定を変えたのだが、それが悪かったようだ。)

※「まあ、使わないだろう」と高をくくっていたら、大活躍する羽目になったw

それから準備して、最初の更新を始めた。Ubuntuのリリースノートに書かれているようにdo-release-upgradeコマンドを実行したら、パッケージのダウンロードが途中で失敗してしまった。。。 サーバを変えようかと思ったが、面倒だったので、少し待って再実行したら成功したように見えたが、インストール中にハングしてしまった。。。

仕方なく強制再起動して、仮想コンソールで更新を再実行したら、途中でカーネルパニックで落ちた。これは、以前問題になって暫定対処したもの(telinitというコマンドを実行すると落ちる)を、更新の邪魔になるかも知れないと思って元に戻したせいだ。それで、その暫定対処を再度入れた。

それから、再び、更新の準備としてインストールされているパッケージの更新をしようと"sudo aptitude upgrade"をしたら、ハングはしないが全然進まない。どうやらメモリフルになっている感じで、途中でaptitudeが強制終了されてしまった。さっき途中で落ちたせいでシステムが壊れてしまって、最初からインストールかと思ったが、ダメ元で"apt-get upgrade"としたら、嘘のように処理が進み、なんとか通ってしまった。僕の思い込みだったのだが、aptitudeはapt-getの上位互換ではないようだ。全く馬鹿だった。

それで、今度こそ本来のOSの更新をしようとdo-release-upgradeを実行したら、パッケージの更新はしたつもりなのに、"Please install all available updates for your release before upgrading."と出る。調べて、関係ないとは思ったが、"sudo apt autoremove"をして再起動してみた。

すると、また起動中に落ちた。やれやれである。今度は、plymouth-upstart-bridgeとかいう初めて見たものでパニックになっていた。検索したら既知の問題で、それを起動しているスクリプトに待ちを入れると何とかなるとのことだったが、そうしたくても起動中に落ちるのだが・・・ 使いにくいリカバリモードで起動して対処するか、0から再インストールしかないのかと思いつつ、まさに勘で起動時のブートセレクタで別のモード(Extendedの上から2番目の"systemd"とかいうもの)を選んでみたら何とか起動し、その修正を入れられた。ただ、systemdの方が筋が良さそうなので、そっちをデフォルトに変更した。

ただ、再度do-release-upgradeを実行しても、やっぱり駄目だった。それで、もしかしてと思ってOSのバージョンを調べたら、Ubuntu 18(一段目の更新先)になっていた。どうしてかは分からないし、それが正しいのかも分からないが、正しいとすればapt-get upgradeでOSが更新されたようだ。。。

更に調べてみたら、do-release-upgradeの前に、インストールされているパッケージの更新をするために、"sudo apt dist-upgrade"が必要とのことだった("sudo aptitude upgrade"ではなかった)。そんなのリリースノートに書いてなかったはずだが・・・ 確かに前回(Ubuntu 16にした時)はそうしたが、今回は書いてなかったので しなくていいと思ったのだ。

それで、とりあえず、二段目のUbuntu 20に更新しようと、"sudo apt dist-upgrade"と"do-release-upgrade -d"を実行したら、今度は妙にスムーズに終わってしまった。ここまでで7時間くらい掛かった。。。 さすがに疲労困憊だ。

それから動作確認と修正をしようとしたら、sshで繋がらなかった。また仮想コンソールで調べたら、ネットが動いていなかった。どうやら、パケットフィルタリングに使っている、iptablesコマンドの場所が/sbinから/usr/sbinに変わって、それを使っているスクリプトがエラーになったためのようだ。聞いてないんですが・・・ 理由は分からないが、ネット周りの標準が従来のifupからnetplan.ioとかいうシステムになったせいだろうか(最初は、このせいでネットが有効にならないのかと思った)。ちなみに、なぜかnetplan.ioの設定やコマンドではなく、従来の設定が有効だった。謎とイライラは多い。

それからは、概ね細かい修正ばかりだった。例によってmysqlもphp-fpmも起動しなかった。前者はバージョンが上がったらなぜかクエリーキャッシュという機能が減って(マジでクソだと思う)※、その関連の設定がエラーになったため(余計な設定だったら警告でいいと思うのに、全くセンスが悪い)、後者はwebサーバと通信するためのソケットのファイル名が変わったためだった。

※確証はないが、デスクトップのdigiKam(mysqlを使っている)が近頃遅いのは このためのせいの気がする。

それから、更新で上書きされた設定ファイルを探して自分の変更した設定とマージして ようやく更新工程が終わり、動作確認・修正してようやく終了となった。ここまでで11時間くらい掛かった。

やれやれ。

だったのだが、今朝、更に思わぬ問題も発覚した。DNS関係のdigやhostやnslookupコマンドが動かないのである(それでよくOSが起動したものだ・・・)。SSL証明書の更新スクリプトがエラーになっていて気付いた。検索しても余り出て来ないので全然分からなかったが、それらのコマンドが参照している、問題のコマンドやその参照しているライブラリが参照しているライブラリの場所を調べたら、驚くべきことが分かった。

libuv.so.1というライブラリが、標準のものでなく、(おそらく何かのために自分で入れたであろう、)古い版になっていた。標準のライブラリは正しい位置にあるのだが、古いものが/usr/local/libにあって それらしく動いていたので、気付かなった。それで、その古いライブラリを削除したらdigなどが動くようになったので、/usr/local関係を綺麗にしてOSを再起動した。

これは自分が忘れた、かつ、事前準備を怠ったせい(/usr/local/binはチェックしたが、libは関係ないと思い込んでいた)だが、まったく溜息しか出ない。そしてきっと、これ以外にもこれからもちょこちょこ出そうだ。まあ、仕方ない。

そして、前にも書いたが、OSの更新を溜めると変更点が増えて失敗の確率が高まるうえに、更新にまつわる作業が増えて良くない。※ かといって、こんな、つまらないうえに疲れることなんて毎年やってられないし・・・

※溜めると言っても、(LTSなので)元のバージョンだってサポート期間内なので、こんなに問題が起こる方がおかしいと思うのだが、それは甘いのだろうか? 甘いとして、それはどうしてだろう。甘いのは作っている方じゃないか? こんなんだったら"LTS"なんて言うなって思うわ!

 

僕の印象では、OSの更新で一番安心そうなのはmacOSだ。いかにも堅そうだ。(もちろん、使う気は1000%なしw) でもまあ、あれだけ自由(カスタマイズ)を制限していれば、ユーザ側のバリエーションが減るから、更新が失敗する確率は随分下がって当然と思う。

 

それにしても、毎回書いているが、更新でこんなに苦労するようでは、ユーザーが増えるどころか どんどん減って、マニアしか残らなくなるように思う(もう既にそうか)。それでいいのだろうか? 今はいいけど、明るい未来はないと思う(これって、日本の出生率が低下し続けていて未来がないのと近いものがあるのでは?) Linux開発者は、自分たち(お友達?)の世界に閉じこもって好き勝手なことをしていて(一方、バグも要望も長年放置ばかり)いいのだろうか?? 特別、みんなに使ってもらいたいとは思っていないのだろうか?

とは言え、有料のWindowsも似たようなものだから それよりはいいとは言えるか。でも、ものすごく低レベルな比較だ。

(11/13 7:27) 昨夜、書いたあとで"snap s*cks"や"snap f*cking"とか"Ubuntu fuc*ing"で検索したらw、Hackner newsのなかなか深いスレッド"Ubuntu 20.04 LTS’ snap obsession has snapped me off of it (jatan.blog)"が出て来た。2/3くらいまでしか読まなかったが、「(もちろん)snapはクソ。押し付けるな!」、「(だから・そして)Ubuntuもクソ。なにを考えている・どこに進もうとしているんだろうか?」、「UbuntuはWindowsに近付いている」、「Debianはまとも」、「Appleは更新でがらっと変えてしまうから、ユーザは対応するのが大変」といった意見(僕の意見で色付けしてまとめたw)があって、なるほどと思った。

あと、何人かが"Pop! OS"という(僕が嫌いな系統の名前の)なんか怪しいOS(ディストリビューション)がいいと言っていたが、賛同する人がほとんど居なかったのが妙で笑えた。でも、Ubuntuよりはましかも知れない。

(11/13 15:20) 詳しくは分からないが、近頃、macOSは更に自由がなくなったようで、ここまで来ると個人用コンピュータと言えるのか疑問だ。信心が試されるってことだろうが、僕には関係のないシロモノであることは確かだ。

 

いろいろ嫌になり、また、考えさせられた一日だった。

 

PS. この前はLinux Mintはイマイチだと思ったが、Ubuntuもかなりクソだと思った(寄付したのは無駄だったと思うくらい)。近頃はレベルが落ちているのかも知れないな。

そういう点で、Mintが嫌になったからディストリビューションを変えようと思っている件は、変化は大きいものの、Ubuntu系以外のカッチリしたものを選びたい気がしている。そういうものがあるとしてだが・・・ 全然分からないが、Arch系や(気乗りはしないが)CentOSとかなのだろうか。あとは全然気乗りしないが、BSD系??

  •  1
  •  0

数日前には「やらない」と書いたのだが、やっぱり、できそうなことはやってみたいので、WriteNoteの代わりを作ってみた。

最初は、書いた内容をオープンなフォーマットのファイル(例: プレーンテキスト)に保存できるチャットとかメモアプリがあればいいと思ったが、そういう都合のいいものはなかった。チャットだと受け側のログをコピー・ペーストすればいいが、書き始める時に相手(= 受け専用の自分)を指定するのが面倒だし、間違って他の人を指定する可能性もあるので止めた。メモアプリは内部データの場所が分からないのと、わざわざ「エクスポート」しなければ外部フォーマットのファイルには書き出せないものばかりだった。

それで、Automagicで作った。処理は簡単で、以下のようなものだ。

  1. [僕] アイコンをタップして起動する。
  2. [僕] ノートのテキストを入力する
    • "CANCEL"を押すと書き込まれない。
  3. (GPSで)現在の位置を取得する。
    • 新しく位置を取得するのに時間が掛かるので、通常はそれ以前に得られた位置を使うようにした。
    • ただ、移動中など、特別に正確な位置を取得したい場合に備えて、位置の取得を待てるようにもした。
  4. 入力されたテキストに現在時刻(※)を前置し、位置を追加して、毎日分のファイルに追記する。

※書いていて誤りを見つけた。前置するのは時刻だけでいいのに、日付も入れている。まあ、その方がJoplinに転記する時に日の間違いが起こりにくいからいいか。あとは、その日の一番最初に日付を書くのも良さそうだ。 → そうした。

更に、PC側は既存の自作の画像自動取り込みプログラムでノート取り込めるようにした。そうすれば、外から帰宅したら、撮影した画像(あれば)と一緒に自動で取り込まれる。まだやっていないが、取り込んだノートの有無や更新を調べて通知すれば、Joplinに取り込み忘れることもない。

この方式の欠点は、ノートを書くたびにクラウドサーバに送られる訳ではない(帰宅してPCに転送するまでスマフォの中にある)ので、何かのトラブル(スマフォの故障・紛失、プログラムの誤動作※)でノートが消える心配があることだ。その代わり、ずっと通信できなくても問題ないので一長一短だろう。

※誤動作に関しては、追記する前にノートのバックアップを作るようにした。

あと、テキストの入力欄が小さくてちょっと不便かも知れないが、使って試してみたい。

(11/12 16:16) その後、ノートをDropboxに送信するようにして、ローカルだけでなくクラウドへの保存も可能にした。まあ、単なる興味からで、オーバースペックであるw

それから、Automagicの入力欄をカスタマイズできないか調べていたら、この夏にAutomagicが提供終了してしまったことを知った。便利に使っていたのに残念だが、仕方ないので代わりを探すことにした。すると、早くもAutomateというのが良さそうな感じだ。外観や機能がAutomagicより整理されているのがいい。もう一個、Taskerというのがあるが、多くの人が使いにくいと言っているので余り使いたくない。

ただ、今度はなるべくこういうツールを使わず実現できる方法を探したい。PCではいろいろ作り込むとしても、スマフォ側はなるべく標準機能だけで実現したい。今回のノート記録は(散々探してなかったので)難しそうだが、もう一つの用途の、画像のPCへの自動転送では、Automagicは基本的にはPCに転送できる(Wi-Fiで通信可能な)ことを通知しているだけなので、できそうな気がする。

 

(23:50 わずかに加筆・修正)

  •  0
  •  1

下記のOS更新作業が どうにかこうにか、大変つつがありながらもw終わりましたので、運用を再開します。

あとで書きたいですが、いつもながら、思わぬことがいくつも出て来て大変でした(これをすんなりできる人が、世界中に何人居るのかと思います)。しかし、今は検索すれば大抵分かるので助かります。

それにしても、公式のリリースノートに書いてある手順のとおりにしてもエラーになるって、一体どういうトラップかと思います・・・

 

2020/11/11 16:20

れんと@これで安心して年越しができます^^(ってことはないw)


本サーバのOSを更新するため、以下の日程で一時停止します。

2020年11月11日 早朝から夜まで (完了後、ここに記載)

※一日で終わるはずですが、手間取ったりして伸びるかも知れません。今のところ、大きな問題はなさそうですが、大体いつも多少の問題は起こります。

 

変更がありましたら更新します。

れんと

 

PS. 早くやりたくて うずうずなんて全然してませんwww

(11/9 20:38 日程を記載)

  •  1
  •  2

マークダウン(MD)を使うクラウドノートツール(≒ Evernoteの代替) Joplin。もちろん名前が大嫌いな系統だけどw※、中身はなかなかいい。検索すると、近頃Evernoteの代わりに使い出した人が多い印象だ。

※どういう由来か知りたくもないから調べてないが、なんか名前がフランス的なので、直感で作者はフランス人だと思っていたが、どうもそんな感じだ。フランスにJoplinという有名な人が居た・居るのかも知れないが、全然知らない。 → 調べたが、2人居てどちらもUSの音楽関係の人(Scott- (c.1867-1917), Janis- (1943-1970)のようだ。作者が好きなのだろうか。だとしたら後者かな。

まだ一週間も使っていないが、日記や買い物リストなど、毎日使うものを移行して実際に使っているが、まだ大きな問題(「こりゃ駄目だ!」ってもの)はない。

また、Evernoteからの乗り換えがほとんどできた。もちろん全部のノートを移した訳ではなく、各種ツールを作って、やろうと思えばできる状況になった。あと、懸案だったWriteNoteの代替については、無理に代わりを用意するのでなく、WriteNoteを使って書いたノートを容易にJoplinに転載(インポート)できるようにした(詳しくは後述)。

以下に、使った感想とtipsなどを書く。

  • 試し始めた時にも書いたが、MDは面倒だけど、ショートカットやボタンやメニューである程度のフォーマットができてプレビューが横に出るので、それほど大きな手間ではない(そういう使い方はWordPressに近いので馴染みがある)。
    • ただ、ショートカットなどのない書式(例: 取り消し線 → <s>..</s>または~~で囲む)には難儀する。近頃は結構覚えてしまい、まんまと はまった感があるw
  • Evernoteのweb版(Evernote web)と違って、見たり書いたりしている時にノートやアプリがおかしくなることがまずないので、ストレスは少ない。
    • ノートの表示が簡素なのもいい。
  • 大きいノート(例: サイズが3MBなど)の操作性はEvernoteのwebやそのAndroidアプリよりいい。「かなりいい」とは言えないが、見ているだけなのに気付くとノートがおかしくなってしまうことがあるEvernote webやAndroidアプリのようなイライラはなく、安定感・安心感がある。
  • MD特有の癖はあるが、Evernoteよりは論理的で好ましい気がしている。
    • 昔のLaTeXのような感じ。
    • 例えば、空白や空行の扱いがEvernoteよりずっと「まとも」(プログラマー?に親和的とかTeX的)。
      • 例: HTMLと同様に、空白や空行を何個入れても1個の扱いになって不便なことはあるが、それはそれで理解できる。
    • MDはフォーマット(書式)の機能が少なくて不便な点はある(MDはプログラムなどの資料を書くにはいいが、普通のドキュメント・ノートを書くには不充分なので失うものが少なくなく、ダウングレードだと思うから、決して満足していない)が、オープンなフォーマットなので、「つぶしが利く」し自動化しやすいのもいい。ENEXでは全然駄目だ。しかも、web版ではそのエクスポートすらできない。
  • Linuxデスクトップアプリについて
    • "(“などを入れると自動的に閉じ”)"が出るのが便利。(こういうのを書いている時のように、)不便なこともあるが、ほとんどの時は便利。
      • もちろん、日本語の「」などには対応していないw
    • Evernote webは、ノートが大きい場合、表示が文字入力に追いつかなくて入力が激遅になったり、ブラウザの状態が変になってイライラすることが多いが、そういう問題は今までのところない。
      • ただし、プレビューを表示している時や、同期が開始した場合は若干遅くなる。
        • プレビューしながら大きいノート(の途中)を変更していると、表示のリフレッシュとリンクするせいか、勝手にスクロールして今書いているところが見えなくなるのが惜しい。
        • それでも、Evernote webのもたつきよりはいい。
    • プレビュー表示をコピーして、フォーマットを維持したままWorPressにペーストできるのが便利。
      • Evernote webは変なタグ(<div>がやたらに多い)が大量に付いてしまって書式がおかしくなるため、プレーンテキストでペーストして再度書式を付けるのが不便だった。
      • また、ブラウザからのペーストもフォント情報(サイズ、使用フォント)が無視されるので気楽・便利(MDにはそういう属性がないため)。
        • 例えば、タイトルのような大きな文字をそのままペーストしても全く問題ないw
    • 他のノートの参照がEvernoteのようにはできない? できるとして、どうやってする? HTMLのリンクにようにする? → 左側のノート一覧ペインのノート名で右クリック → "Copy Markdown link"で可能。 (11/7 6:41)
      • もう少し調べれば分かるかも知れない。
    • 変更したノートは、文字入力が終わってから30秒くらいで自動的にサーバに同期されるようだ。
      • この点はEvernote webと同様だが、同期の状態が分かるのがいい。
      • Evernote webは、「同期が終わりました」などと出ても まだサーバにないことがある(数分遅れる)。
    • ローカルに保存されたノートや設定はDB(sqlite3)に入っているので、Joplinのコマンドになくても手軽に閲覧・操作できる。
    • 正しい使い方かは分からないが、デスクトップ版とコマンドライン版のDBを(sym-linkで)同じものにすると、コマンドライン版でデスクトップ版にノートをインポートしたり(DBが別々でも、サーバ経由で双方は同期される)、コマンドライン版でデスクトップ版の情報が取得できるので便利だし、ディスク使用量を節約できる。
      • また、画像ファイルなどを置くリソースディレクトリも同じものにすれば、ディスク使用量を節約できる。ただ、何らかの競合が起こる可能性はある。
      • DB: $HOME/.config/joplinとjoplin-desktopのdatabase.sqlite
      • リソースディレクトリ: $HOME/.config/joplinとjoplin-desktopのresources
    • まだまだ不足な点やバグがあるが、かなり熱心に開発している感じ。毎日のように(仮)リリースがある。
      • この状態がずっと続くとありがたい。
    • 今までに気付いたバグ・問題など
      • タグでのノートのフィルタリングができないことが多い。 → 一旦別のタグを選択すると直る(= タグが2個以上ないとフィルタリングできない)。
        • そのタグを持つノートが表示されている時が駄目?
      • 取り消し線(~~)がうまく動かない場合がある。なぜか<s>はOK。
      • メモリリークしているのか、使っていると使用量が大きくなる。
        • 簡単に1GBを超え、大きく減ることはなさそう。
      • DBにノート保存先サーバ(クラウド)のパスワードが平文で入っている。
        • 最新では直したようだが、Linux版では対応していないのか、新たに登録する必要があるのか。
      • インポート直後などに書式を設定できなくなる(ボタンなどが無効になる)。 → 一旦ノートを変えると直る。
      • フォーマットのショートカットやボタンを増やして欲しい・増やせるようにして欲しい。
        • 特に取り消し線。
      • 日本語(と英語の混じったテキスト)の処理には対応していないようで、例えば、英単語を選択するつもりでダブルクリックすると、それを含む1行全体が選択されてしまう。まあ、無理もないと思う。
        • もしかして、僕が英語(+一部日本語)環境で使っているせいか?
  • Androidアプリについて
    • 電池消費はそれほど大きくない。
      • 長時間スリープ時に動作が停まって同期しないためか。
        • 電池の「最適化」を無効にしても、長時間スリープ中は全然同期しないが、電池消費が少ない方がいいので、僕は気にしない。
    • (Evernoteと違い、)ノートを見ている時に間違って編集にならないのが すごくいい。
      • 編集ボタンを押さないと編集にならないため。
    • 大きいノートも待てば表示されるようなので、(永遠に出ない)Evernoteよりもずっといい。
      • ただ、メモリは食うようで、最大で1GB近くまで使っていた。
    • 一度、アプリを開いても暗いままのことがあったが、他のアプリもそうだったので、OS全体がおかしくなっていたようだ(それで、スマフォを再起動した)。
      • その原因がJoplinかは不明。
    • 時々、ノートが同期しないことがある。
      • データ量が多い場合に途中で止めているのかも知れない。
      • 試しに省電力(最適化)をoffにしてみたが、消費電力は増えなかったものの、長時間スリープ中に同期していなかったので、意味がないようだ。
    • アプリにはデスクトップ版のようなフォーマット(書式設定)のボタンやメニューがないので、MDを手で入れるのだろうか。今はスマフォでは見るのが主だし、書くのはWriteNoteが主だし、Joplinで書くとしてもプレーンテキストが主だからまず問題ないが、仮にフォーマットを付けたい場合は面倒だ。
      • そのうちフォーマットボタンが付くのを期待する。
    • AndroidでのWriteNote(Evernoteに手軽にメモするアプリ)の代わりが要る。 → なんとかした。下を参照のこと。
      • 例えば、ノートの編集時にノートの一番上に行くのが面倒。
      • あと、現在時刻を自分で入れるのも面倒だし、Mazec(手書き文字入力)では「いま」を変換して現在時刻が出ないのも不便。
  • Joplinではないが、pandoc(ドキュメントフォーマット変換プログラム)はすごく大きい。コマンド1個で80MB近くもある・・・
    • あと、いろいろな癖があって、使う時に苦労した。
  • EvernoteからJoplinに移行する場合にノートのデータ量が気になる(大き過ぎるとサーバが容量不足になる)が、Evernoteのバックアップディレクトリは約600MB、約800ノートなので、まあ大丈夫そうだ。
    • ただ、手で一個ずつインポートするのは現実的でないので、いつかは一括処理する必要がある。

という訳で、Joplin(とMD)にはいろいろ癖などがある(だから、誰にでも勧められる訳ではない)が、Evernoteのクソさに比べれば充分我慢できる(それどころか3倍くらいいい※)っていうのが、今の感想である。

※例えば、書くことに集中できる度合いとかイライラの少なさはそのくらい上に感じる。あと、コマンドライン版があってフォーマットがオープンなので、プログラムとの親和性(→ 自動処理の可能性)や将来Joplin後の何かに移る場合の楽さは、100倍いいと言えよう。

それから、僕はブラウザ(= JavaScript)で まともに文書作成をするのはすごく無理があるし※、使い勝手が良くないと思う。Firefoxで使っているとメモリ使用量は10GB近くに膨れ上がり、上に書いたように大きなノートの操作性は最悪だし、しばらく使っていると動かなくなってしまってウインドウを一旦閉じなければならない。そんなのものは実用には程遠い。

※書いたあとで調べたら、デスクトップ版のJoplinもJavaScript(正確にはTypeScript)で書かれているので、JavaScriptかどうかは大きな問題ではないのかも知れない。あと、大量のメモリを消費するのはそのせいかも知れない・・・

 

以下、僕の考えた作業手順や作ったプログラムなどについて書く。

EvernoteからJopplinへの移行方法

JoplinはEvernoteのエクスポートファイル(ENEX)をインポートできるが、そもそもWindowsを起動して今の全ノートを同期するのは面倒だし、ENEXからだとMDでなくHTMLになってしまって※、(外見では分からないが、)ソースが汚くて あとあと不便なので、MDで取り込むことにした。

※実はENEXからMDにインポートできることに今気付いたがw、(ノートを更新・インポートするたびに)Windowsを起動したくないし、既にLinuxにバックアップが揃っていて自動更新されるのでなかったことに良しとする。

そのため、自作のEvernoteバックアッププログラム(en-backup)の作成したENMLもどき(EvernoteのHTMLもどき)をMDに変換し、それをJoplinにインポートするようにした。以下に手順の概要を書く。なお、Joplin(デスクトップ)は1.3.15、pandocは2.11.1を使った。

  1. バックアップしたEvernoteのノート(ENMLもどき)をHTMLに変換する。
    • バックアップしたノートをブラウザに表示するビューア(enb_viewer: 自作)を改造し、ファイルに出力できるようにした。
    • EvernoteのインデントとチェックボックスのMDへの変換のために特別な処理をするようにした。
      • インデントはMDに丁度いいものがなさそうだったので、">"(Block quote)を使うことにした。
        • Evernoteはインデントを"<div style="padding-left: Xpx>"のように書くので、インデント量(px)を">"の個数に変換した。
        • ただし、HTMLとして見た時(実際にはそんな機会はまったくないが・・・)もおかしくしたくなかったので、この段階では特別な目立たない記号("﹎﹍﹎"にした)に変換し、MDへの変換後(pandocの後)に">"に変換することにした。
      • インデントと同様に、チェックボックス(実際には不便なので全然使っていないが・・・)は、HTMLでは特別な記号("☐"と"☑"にした)に変換し、MDへの変換後(pandocの後)にMDのチェックボックス([ ], [X])に変換することにした。
  2. そのHTMLをpandocでMDに変換する。
    • 使用可能なMDのフォーマットはいくつかあるが、markdown_mmdやgfmがいいようだ(最新版の場合。古い版ではmarkdown_mmdが良かった)。
      • 少し比較したところ、gfmだと、Linuxのコマンドなどアルファベット・記号が羅列している時に文字が斜体になってしまうことがあるので、markdown_mmdを使っている。
      • それに、自動改行を止める--wrap=preserveオプションを指定した。
    • pandocはHTMLのチェックボックス(<input type="checkbox" ...>)をMDに変換できないようなので、上述のとおり、pandocの前後に処理を追加して、うまくMDに変換できるようにした。
    • Evernoteは空の<div>を大量に付けているので削除する。
    • 画像(<img src=...>)のパスを修正する。
      • pandocはimgタグにwidth(heightも?)が指定されているとMDの画像("![]()")に変換せずにそのまま出すようなので、変換前にwidthまたはheightを削除するようにした。
      • 画像の指定を絶対パスから相対パスに直す。
        • pandocでMDへの変換後にMDの記述を修正するようにした。
        • 画像をMDと同じディレクトリに置き、[](image.png)のように書けばいい。
        • ただし、Joplinは画像はsym-linkでなく実体でないと駄目なようなので、バックアップディレクトリから作業ディレクトリにコピーするようにした。
        • また、Joplinはインポートする画像にsuffix(".png"など)がないと駄目なようなので、追加した。追加すべきsuffixはHTML(ENML)中のimgタグに書かれているもの(例: "type=image/png")を抽出して設定した。
          • ただ、MIMEタイプがsuffixにならない特別な場合(例: svg: ただし、Evernoteでは使われていないと思う)は、別途、テーブルで定義した。
    • Evernoteとpandocの相性なのかどちらかが悪いのか、HTMLのネストした箇条書き・リスト(ulやol)の最上位がなくなってしまうので、暫定的に"</li>"(リストの項目の終わり)を削除して対応した。
      • HTML的には全然正しくなく、構造を正しく修正すべきだが、中間的なものなので良しとした。
      • 調べた感じでは、Evernoteが入れる"</li>"の位置が正しくないようで、子のリストの<ul><ol>が始まる前に入っているのが良くないようだ。
        • EvernoteはENMLであってHTMLでないと言うことは可能だが、であれば、「そんな変な物を作るのはセンスがないし無駄だし迷惑だから止めろ!」と言いたい。。
  3. できたMDをJoplinにインポートする。
    • メニューのFile → Import → MD - Markdown (file)に上でできたMDを指定する。
    • コマンドライン版では"joplin import -f --format md MD-path"でインポートできるはずだが、未確認。

オーバースペック・やり過ぎなところ、逆に間抜けなところはいろいろあるが、趣味とMD(、そしてsedも!)の勉強には丁度良かった。こういうのを作っておけば、今後もいろいろできそうな気がする。

それから、ENMLからMDへの変換を手軽にするため、Evernoteのバックアップの一覧・プレビューページに変換ボタンを追加し、それを押せば自動的に上の1と2の作業が行えるようにした。3のインポートもやれば可能だが、変換処理に誤りや問題があるかも知れないので、今のところは手で行うようにしている。

 

JoplinでのWriteNoteの代わりについて

Evernoteを完全に止めること自体に大きな意味はない(使えるところ・使える間は使えばいい)ので、外出時などに手軽にメモするのにはWriteNote(とEvernote)を使うことにした。そして、帰宅後に、外で書いたノートを忘れずにJopplinに取り込めるような仕組み(以下に概要を書く)を作った。

  • 定期的(今は1時間に1回)にEvernote中のWriteNoteで作ったノートを検索し、見付かったらそのノート名(タイトル)やGUIDなどをメールで通知する
  • 同じノートが何度も通知されるのは嫌なので、検索した日時を記録しておき、次回はそのあとに作成されたノートだけを検索する。
    • なお、上にも書いたが、ノートの作成・更新がEvernoteに反映されるのに数分間の遅れがあるため、今回検索した時刻の数分(今は5分)前を次の検索開始時刻として記録している。
  • この仕組みはclinote(3rdパーティ製コマンドライン版Evernote)とcrontabで(結構な力技でw)実現した。
  • 通知があったノートは、上述の手順でJoplinに取り込む。
    • ノートが既にバックアップされていたら、一覧からMDに変換できる。
    • 自動でJoplinに取り込むようにもできるが、いつノートの編集を終えたかの判定が難しいので、通知だけにした。
      • WriteNoteのノートができるのは高々1日1個で多くないので、通知だけで充分だと考えた。

 

(11/8 21:20, 11/9 11:35 [画像] WriteNoteの通知メールのコマンド列にバグがある件を追記, その内容を本文に更新)

  •  0
  •  0

僕が学生の頃に流行った「よろしくメカドック」という漫画(アニメもあったらしいが)は、どういう訳か名前は知っていたが全然読む・観る気がしなかった。おそらく、画とか雰囲気が嫌いだったからだと思う。※ 実際、今調べて画を見ると やっぱり嫌いだ。あと、当時はバイクが好きで車には興味がなかったこともありそうだ。だから仕方ない。

※書く時に思い付いた表現は、「画(特に人物)とか雰囲気が『いかにも当時らしい』から嫌い」なのだが、当時の作品なんだから当時らしくて当たり前だ。でも、なんかそう言いたくなるのだ。僕は へそ曲がりなのでw、もっと「らしくない」、「変なの」、「先進的なもの」?が好きなんだろう。当時の作品だと「ストップ!! ひばりくん!」は大好きだが、本当に「らしくなかった」かは分からない。

と 長々と書きつつも、本題は全く違う話であるw

 

先日ちょっと書いたが、結構前から止めたいと思って居たEvernoteの代わりを再び探した。決定版はなかったのだが、今回は少し条件を緩和して、2つの有望な候補、一つの次点、そしてもう一つの期待の星?が残った。条件を緩めた結果、嫌いで全然使いたいと思って居なかったMD(マークダウン)を使うシステム・アプリが最有力候補となった。

僕の条件は以下のとおりだ(上が一番優先度が高い)。全部「必須」としたいが、今回は総合的な評価(特に使い勝手)を重視した。

  • 使うのが容易(例: 書く時に余計なことを考える必要なく、神経を遣わずに済む)。
    • MDの書式を思い出しながら書くのはまっぴら。
    • Evernoteだって、web版が頻繁にハングしたり(これがすごくイライラする!!)、ちょっと間違うとノートがなくなったり、変なタイミングで同期して(web版はいつも同期しているから無駄もいいところだし、重い)、ひどいと競合するのが気に入らない。あと、端末数やアップロードデータ量の制限とか余計なことが多い。
  • WYSIWYGエディタがある。
    • Evernote同様、見たままに手軽に書けるのがいい。
  • LinuxとAndroidのアプリがある。
    • ブラウザのものが多いが、やっぱり使いにくいところがあるので、アプリが望ましい。
    • 特に、Androidのアプリは必須。
  • 大きいノートの編集が遅くならない。
    • Evernoteではいつも苦労・イライラしている。
  • ノートのバックアップ・エクスポート・インポートが容易。
    • オープンなフォーマットに対応していることが望ましい。
  • Evernoteからの移行が容易。
  • Androidアプリの電池消費が多くないこと。
  • なるべく無料。有料の場合、安いこと: USD 3-4/月以下
  • 自サイトで運用できる。
    • 今は無料でもそのうち有料になったり、勝手にサービスが終わったりするのは嫌なので、なるべく自分で運用できるものがいい。

以下に、今回探して検討・試したものと評価などを書く(長い)。

  • △ Joplin: MDだが、全体的に使いやすい。スクリプトでいろいろできそう。
    • Linux, Androidアプリあり。: Androidアプリがイマイチ(大きいノート)
    • エディタ
      • MDだが比較的使いやすい。
        • メニュー(ボタン)やショートカットでフォーマット(例: 太字)でき、リアルタイムでプレビューが表示される。
      • WYSIWYGエディタも"experimental"であり。 → 将来は正式版が期待できる。
      • ファイルマネージャからの画像のドロップ可, ペースト不可 (ファイル名が表示される)
      • Evernote webからのノートのペースト → ペーストよりインポートした方がいい。
        • フォーマットの維持: NG (リストなどの構造は維持されるが、太字などの文字装飾がなくなる)
        • 画像: NG (表示されない)
      • 大きなノート(Evernote webから約3MB, 約26万文字のノートをペーストして作ったノート)の編集: Androidが駄目
        • [Linux] 文字を挿入後、プレビューが出るのが若干遅い。
        • [Android] ノートが表示されるまでかなり時間が掛かる。なぜかノートがTODOに変わってしまった(その後直った)。挿入もかなり遅くて実用的でない。
      • Page downキーが正しく動くか: OK
    • Androidアプリ
      • 電池消費: 多い? (設定の「電池」の上位には出ないが、減りが速い気がする): 確認中
      • ノート作成時の位置情報を記録できる。
    • さまざまな形式でインポート・エクスポート可能
      • JEX(独自形式), RAW(Joplinのディレクトリ), MD, ENEX(Evernote: インポートのみ), JSON(エクスポートのみ), HTML(エクスポートのみ), PDF(エクスポートのみ)
    • 自サイトで運用可能 → 定期的な認証やブラウザによる不具合は起こらない。
    • 無料
  • △ Zoho Notebook: サービスや無料の継続性に不安あり。Linuxアプリはイマイチ(webならOK)
    • Linux, Androidアプリあり。: Linuxアプリはイマイチ
      • Linux版のDLが遅かった(一度失敗した)。
    • エディタ
      • WYSIWYGエディタ
      • 画像のドロップ可, ペースト不可 (ファイル名が表示される)
      • Evernote webからのペースト: フォーマットの維持: OK, 画像: OK
      • ただし、(webで)ペーストした画像はLinuxアプリでは表示されない。
      • 大きなノートの編集: Androidが駄目
        • [Linux] 挿入が若干遅い。
        • [Web] 表示されるまでかなり時間が掛かるが、挿入は速い。
        • [Android] 表示も挿入もかなり遅くて実用的でない。
      • Linuxアプリ
        • スクロールバーが出ないのでジャンプできない。(Androidも)
        • ノート情報の内容がおかしい。
      • Page downキー: Webは一番下に行ってしまう。
    • インポート・エクスポート可能
      • Evernoteからのインポート可能
      • 独自形式かHTMLでのエクスポートが可能 (以前はできなかった)
    • Androidアプリ
      • 電池消費: 未確認
    • 無料 (継続性に不安)
  • △- Carnet: フォーマット・エディタ・アプリがイマイチ。
    • Linux, Androidアプリあり。: どちらも少々問題あり。動作もなんか変な感じ。
      • Linuxアプリはイマイチ。
      • Androidアプリは別の同期アプリ経由でないとサーバに繋がらない。
    • インポート・エクスポート: 機能なし。自分でできそうではあるが・・・
    • エディタ: 貧弱
      • WYSIWYGエディタだが、箇条書きなどの機能がない。
      • PC: Evernote webからのペースト: フォーマットの維持: NG(変になる), 画像: NG
      • 大きなノートの編集: AndroidがNG
        • PC: 速い。
        • Android: 表示されない(ハングはしない)。
    • 自サイトで運用可能
  • △- Cryptee: ブラウザのみ。Androidでの操作性に難あり。大きいノートには弱い。サービスの継続性に不安あり。
    • ブラウザのみ: Androidでの操作に難あり。
    • 毎回暗号化キーを入れるのが面倒。(何とかなるとは思うが)
    • エディタ
      • WYSIWYGエディタ
      • Evernote webからのペースト: フォーマットの維持: OK, 画像: OK(Androidでは出ない)
      • 大きなノートの編集: ペーストを中断したら成功したように見えたが、その後の操作がおかしい。→ 待つしかない。
        • Linux:
          • ペーストがかなり遅い。ブラウザの警告が出る。
          • 挿入は遅いがZohoよりは速いかも。
        • Android: 読み込みが終わらない。
      • Android: ブラウザで「戻る」してしまうと、再度暗号化キーを入れるのが面倒。
    • インポート・エクスポート
      • インポート: ENEX, MD, HTML, 独自
      • エクスポート: PDF, MD(beta), Word(beta), HTML, 独自
    • 有料: USD 3/月 (10GB)
    • 問い合わせへの返事が遅い。(週末は休み?)
    • おもしろい会社だとは思うが、継続性に不安あり。
  • × Dynalist: エディタが駄目。高い。
    • Linux, Androidアプリなし。
    • エディタ: Web: 日本語入力で誤動作する。(例: 「あああああ」と入れると途中までしか表示されない)
    • 有料は高い: 無料, 有料: USD 9.99/月
  • × SimpleNote: エディタが面倒。
    • Linux, Androidアプリあり。
    • エディタ(MD)
      • フォーマットのメニューなし。 → MDを手で打ち込む。。。
      • プレビューなし?
    • 無料?
  • × Laverna: Androidで使えない。
    • Linuxアプリあり, Androidアプリなし。
  • × Turtl: プレビューが別画面で面倒。
    • Linux, Androidアプリあり。
    • エディタ(MD)
      • フォーマットのメニューなし。 → MDを手で打ち込む。。。
      • プレビューは別画面
    • 有料: USD 3/月  (10GB)
  • ×(△-) SilentNotes: Linuxアプリやweb版が出れば有望
    • Linuxアプリなし(ブラウザも不可), Androidアプリあり。
    • 無料(自分でストレージを用意する) → 自サイトで運用可能
  • × QOwnNotes: Androidで使えない。
    • Androidアプリなし。
    • 自サイトで運用可能
    • 無料
  • × Notion: エディタがコマンド式で面倒。高い。
    • Linuxアプリなし, Androidアプリあり。
    • コマンド式エディタ(コマンドを打ち込む)
    • 無料と有料: USD 4/月
  • × Nimbus note: 高い
    • Linuxアプリなし, Androidアプリあり。
    • WYSIWYGエディタ
    • Web
      • 画像のドロップ・ペースト不可
      • Evernote webのペースト: OK (画像も)
      • Page downキー: OK
      • 大きなノートの編集: NG
        • ペーストがかなり遅い。ブラウザの警告が出る。
    • 高い: 無料(100MB/月)と有料: USD 5/月  (5GB/月)
    • 以前試したが、バグ(日本語?)があって直らなかったので止めた。
  • × Notejoy: 高い
    • 有料: 高い: USD 4/月  (5GB)
  • × Box Notes: 高い
    • Linux, Androidアプリなし。
    • 無料と有料: 1200円/月 (仕様・違い不明)
  • × Amplenote: 高い
    • 有料: 高い: Basic: USD 5.84/月  (10GB)
  • × Quip: 高い
    • 有料: Starter: USD 12/月
  • × DEVONthink, Keep it, UpNote: Appleのみ
    • いずれもLinuxアプリなし, Androidアプリなし。
  • × Zotero: Androidで使えない。
    • Linuxアプリあり, Androidアプリ: まともなものがない
    • 本来は文献管理システムだが、そのノート機能が使える。
    • 以前試したが、問題があって直らなかったので止めた。

全体的は評価結果は ほぼ上のリスト順となり、以下が残った。

  • 有望なもの
    1. Joplin
    2. Zoho Notebook
  • 次点: Carnet
  • 将来有望: SilentNotes (Linuxアプリかweb版が出れば)

試した中では、(特にAndroidでは)大きいノートはどれも駄目だったので、諦める・我慢することにした。あと、MDには文字に色を付ける機能がない(HTMLを書けばできる)が、そもそも灰色くらいしか使っていないので、大きな問題ではないと思う。

それから、Evernote webからのペーストで画像が出ないのは、Evernote中の画像へのURLになっているためのようだ。ペーストされたURLにアクセスして画像を取得しようとしても、Evernoteの認証が通らないのでDLできず、表示できないためのようだ。ただ、Nimbus noteのように表示できるものがあるのが不思議だ。クリップボードの別のプロパティを使っているのだろうか?

そして今は、いくつかのノートをJoplinに移して、実際に使ってみ始めたところだ。これで問題がなければ、他のノートも順次移そうと思っている。

EvernoteからJoplinにノートを移す(インポートする)場合は、EvernoteでエクスポートしてENEXにする必要がある。それはWeb版Evernoteではできないが、Windowsを起動してエクスポートするのは面倒なので、自作のEvernoteバックアッププログラムが生成したバックアップファイル(ENML準拠?)をJoplinのRAW形式(ノートディレクトリ)に変換して使おうと考えている。実際に手で変換してみたら、試行錯誤はしたが それなりにインポートできた。

今のところ大きな問題はないが、気付いたのは、Evernoteで便利に使っていたWriteNote相当のアプリがないことだ。そもそもWriteNoteはEvernoteでは大きなノートが全然使えない(表示も追記もほぼ不可能)から使っていたので、とりあえずは、外出時にそれ用のノートを新たに作ってそこに書けばいいかと思っている。あと、実際にやるかどうかは分からないが、Automagic(Androidのグラフィカルプログラミング言語)でWriteNote相当のアプリを作れるかも知れない。

もう一つ気になったのは、外出前などにノートを同期しないままPCをスリープすると、スマフォでは更新されたノートが取得できないことがあることだ。それで、Joplinのコマンドライン版を使ってPCのスリープ前にノートを同期するようにした。※ コマンドライン版があると いろいろな自動処理ができるから便利だ。

※その後、Joplinの挙動やDBの内容を見ているうちに、ノートを更新してから1分以内(約30秒?)に自動的に同期(サーバに送信)されるようだ。ただ、念のため、最後の同期の後にノートが更新されていたら同期するようにした。これなら無駄な同期が行われず、スリープが遅くなることもほとんどない。 (11/2 7:13)

それから、そもそもMDを書くのは面倒だけど、Joplinだとボタンやメニューやショートカットでフォーマットできる(→ Evernoteと同様の感覚で使える)し、良く使うノート(例: 日記、買い物リスト)ではフォーマットはほとんど設定しないから、普通に書けばそれで普通に見える(→ プレビュー不要)ので、結構何とかなりそうだ。

なお、いくつか「本当の」(プレビュー表示でない)WYSIWYGのMDエディタがあるので、見たままで直接書きたい場合にはそれが使えそうだ。無料のものをいくつか試した中では、Typora(オープンソースではない)が一番、次はAbricotineが良さそうだ。ただ、上述のように まだ必要な場面がないので、実際に使っては居ない。

 

(11/2 7:13, 7:23 若干加筆・修正)

  •  1
  •  0

Linux Mint 20への更新では、すべてそれに起因する訳ではなく、僕がいろいろ いじっているせいもあるだろうが、さまざまな問題が起こっている。

昨日、あるページの表示がおかしいのに気付いた。9が"—"になっているのだ。そういえば、同様なことが少し前にも起こったが、ページ側の誤りやバグ(プログラムで月の数字を出していて、たまたま"9"で桁溢れのようになった?)だと思って済ませて居た。でも、そうではないようなので、調べてみた。

まず、Linuxの言語設定を英語にしているせいかと思って、環境変数LC_CTYPEなどを日本語に設定してブラウザを起動して試したが、直らなかった。※ そこで、何かの間違いでブラウザ内で変わっている可能性もあるので、(ブラウザを使わずに)wgetコマンドで ページのファイルを取得してソースを見てみたが、ちゃんと"9"と書かれていた。

※それはそうで、いくら言語が違っても、(特別な文字でなく)特定の数字を別の文字に変える必要は全くないだろう。そんなことをしたら、世の中の基本的なことが成り立たない。 → もしかして、数字が0-8までの、9進数の世界(異世界?)のフォントが紛れ込んだ??www

それで、フォントが悪いのかと思って、ブラウザの設定でページの指定するフォントを使わないようにしたら正しく表示されたので、そこが関係していることが分かった。次に、開発者ツールでそのページのフォント指定を調べたら、先頭は"Lucida Grande"というもので、調べたらPCに(自分でインストールして)入っていた。なお、そのあとに指定されているフォントはWindows・Mac用で、最後のsans-serifを除いて入っていない。

もしやと思ってLucida Grandeの字形一覧を見てみたら、確かに9が"—"になっていた(その他に、9の隣の":"が空白になっていた)。もしかしたら、元々そういう(何に使うのだ?)フォントなのかも知れないので、念のためダウンロードサイトで本物の字形を調べたら、普通に9と : が入っていた。それで、試しに(Font Managerで)Lucida Grandeを別のフォントに代替する設定をしたら、ちゃんと9が表示されるようになった

僕のPCのLucida Grandeがおかしい(壊れている)ことが確定したので、他の使わなそうなフォントと一緒に削除して対処が終わった。

検索してみたら、他にも同様の問題が起こっている人が結構居り(→ )、しかも、僕と同じLucida Grandeで起こっている人も居た(→ )。だから、僕のPCでだけ壊れているのでなく、元々おかしかったようだ。いつ・どういう理由か記憶にないのだが、これは自分でダウンロードしてインストールしたものだ。今まで分からなかったということは、Mint 20に更新したあとに、ダウンロードしたままでインストールはしていないものを見つけて、「折角だからついでに」インストールしたのか、以前から入っていたけど問題が起こらなかったか気付かなかったかである。

それにしても、なぜ、こんな変なフォントが出回ったのだろうか。全く不思議だ。調べると、少し(結構?)前まではLucida GrandeはMacのアルファベット用に指定することが当たり前だったようだ(それで、上のソースのようなフォント指定が多いようだ)。そして、このフォントは売り物のようなので、無料でダウンロードできたのがおかしかったのではないか。僕のPCに入っていたものの著作権表示を見ると、1997年と かなり古い。どこかから「パクった」中途半端なものや「パチモン」を出していたのだろうか? 確かに、本物と字形を比べると違うところがある(例: "@")。ただ、今でも無料でダウンロードできるサイトはあり、そこのはちゃんとしているから、そんなことをする必要もないように思える。

真相は謎だが、僕を含めて結構多くの人が「壊れたLucida Grande」の"9"で困って居たようだ。そしてちょっと思い付いたのは、これはある種のマルウェアで、有名なフォントを改変して流通させることで、システムを誤動作させたり使っている人(主にLinuxユーザ?)の判断を誤らせて社会を混乱させることを目的にしていたのではないか。あるいは、一種の社会実験とか長期的なハッキングの準備※だったのか。あとは愉快犯??

※フォントを改変して流通させると、どのくらいの速度でどのくらい広まり、どのくらいの人が気付いて、どのくらいの影響が出るか調べていたとか? "Font poisoning"とでも言うのだろうか。

まあ、いくら追っても本当のことは分からないし、「おや、誰か−」になるのも嫌なのでw、ここら辺で止めておく。

それにしても近頃は謎が多い。

 

いやいやいや。それ以前に、良く言われていることだが、無料だからって良く考えずに安易にインストールしちゃいかんね^^ 最初に、「使わないから入れない」と判断していれば、そもそも こんな問題も謎も起こらなかったのだ。やっぱり、

ただより高いものはない。

 

PS. 本題とは関係ないが、webページ(CSS)でデフォルトフォントを細かく指定するのはどうなのかと思う。特に、上に挙げた参照ページのように、「Macの(特定)フォント(の特定字種)が汚いから代わりを指定する」ってのは本末転倒ではないか。

まあ、web(ブラウザ)から各ユーザの標準フォントを変更できる訳ではないから、多くの人に綺麗なページを見てもらいたいのは分かるが、特別な表現上の意図なしで指定するのはおかしいと思う。更に、そこまで気を遣っても、MacとWindows(Linuxは蚊帳の外らしいw)で別のフォントを使う(= 見え方が異なる)のは許せるのだろうか? (→ そこを突き詰めるとwebフォントになっちゃうんだろうが、今見たら激遅だ。。。) でも、そんな努力もブラウザの設定で解除されれば水の泡なのだ。

とはいえ、このページだってWordPressのテーマがフォントを指定しているはずで(どうだったか忘れたw)、まず自分でそれを確認・解除してからでなければ、偉そうなことは言えない。

PS2. 書いてから気付いた。題は"#9 dream"※でも良かったなとw

※YouTubeにあるこの曲(1974)は、どれも音が綺麗になり過ぎていて(だけど、少し聴くだけで耳が痛くなる)、手持ちのCDからのとはかなり印象が違う(特に高域)。なんとも妙だ・・・ 近年の、Ono様による新しいミックスだのリマスターのせいか? 上はオリジナルと思われるものにした。

  •  1
  •  0

近頃は謎が多いのだがw、また二つ湧いた。

一つ目は、(文句はありつつも)愛用しているEvernoteだ。利用条件が変わったそうで、10月からweb版も「端末」としてカウントされるようになったそうだ。ただ、早速チェックしてみたら、端末にはAndroidアプリしか出てない。Web版以外にWriteNote(手軽にEvernoteにメモできるAndroidアプリ)や自作のEvernoteバックアッププログラム(clinoteを利用)も使っているはずなのだが(それらは「アプリケーション」には出ている)・・・

気になって調べたら、どうやらサードパーティー製アプリは対象外だそうだ(ただ、公式ページでないので、本当かは不明)。それでもweb版がカウントされていないのが謎だ。推測だが、次のログイン(前回ログイン時に指定した期限(= 30日後))まではカウントが増えないのではないか。

あと、web版を同じPCの複数のブラウザで使ったらどうなるのかも不明だ。まあ、それは調べれば分かるかも知れないが、いずれにしても おいおい分かってムカつくことになりそうだw そして将来は、web版どころかサードパーティー製アプリも「端末」としてカウントされるようになって、更にムカつき、また別のサービスを探して放浪しそうな悪寒がする。まあ、仕方ない。

いつの間にかなくなってしまった「プラス」なら値段が手頃だった気がするので入ってもいい気がしたが、プレミアムはちょっと高いから入れない。

ところで、今年の頭に偉い人が「作っている」と言っていたLinux版Evernoteアプリはどうなったんでしょうか??? 新しいアプリはweb版をベースにしているらしいので、web版が完成してから移植するのかな(希望)。

 

もう一つの謎は、Thunderbirdの代わりにスケジュールアプリとして使っているSeaMonkeyである。これをXfce4の起動(デスクトップへのログイン)時に自動起動すると、Todayペインが表示されない。メニュー(「表示」)で表示させようとすると、有効な(表示されている)状態でグレイアウトされていて操作できない。エラーなどは出ない。いろいろ調べたところ、ログイン処理中はSeaMonkeyが必要なサービスが起動していないためにそうなるようだ。具体的には、以下の全部またはどれかのようだ。

  • gnome-keyring-daemon --daemonize
  • gnome-keyring-daemon --start
  • dconf-service
  • gconfd

gconfdの可能性が高い(後述のサービス待ちに追加したら表示されるようになったので)が、調べるのにいちいちログインし直すのが面倒なので、完全には分かっていない。それで、起動スクリプト(SeaMonkeyの起動後にマウスを操作してカレンダーとToDoタブを表示する)に、上記サービスが起動するまで待つ機能を追加して※、なんとかTodayペインが表示されるようになった。

※最初はログイン開始から30秒くらい待ってから起動するようにしていた。調べてみたら、なぜかgconfdだけは起動が他より随分遅いようで、それが20秒くらいだった。 ← 後述の起動が遅いことも合わせて、ログインしてからSeaMonkeyのウインドウが表示されるまでにかなり時間が掛かるので、その間待つように通知を出す機能も追加した。全く手の掛かる奴である。

不思議なのは、SeaMonkeyはgconfもdconf※も使っていない(それらの設定プログラムに出てこない)し、おそらくgnome-keyringも使っていないのに、なぜ必要なのかだ。もしかすると、SeaMonkeyはそれらを使っているサービスか何かに依存しているのだろうか?

※この二つはどちらもGNOME系の設定サービスなのだが、なぜか別になっており、それらの片方だけに出るものもあれば両方に出るものもあって、これも謎(というか、「いい加減にしろ!」)ではある。

 

あと、SeaMonkeyもThunderbirdも、カレンダー(Lightning)を使っていると起動がやたらに遅い(僕の場合、SeaMonkeyの起動まで約20秒掛かる)問題もあるが、これは既知(原因不明かつ長年放置状態。最新のThunderbirdでは直った?)のようで、呆れつつも我慢している。

  •  0
  •  0

(僕も含めてw、)コンピュータ界にはオレサマ(「自分の考えが正しい・当たり前」)的な奴が多い・・・

Linux Mint 20に更新した直後に気付いたのだが、lsコマンドの仕様・デフォルトの動作が変わっていた。以下に気付いた(嫌な)点を書く。

  • 空白などを含むファイル名を ' で囲む(クォートする)。
  • -fオプション(元々は「ソートせずに表示する」だった)は-aオプションの機能(. で始まるもの、いわゆる「隠しファイル」も表示する)も含む。
    • 書いたあとで調べたら、FreeBSDやOpenBSDのlsでもこの動作になっていた。だから、僕の記憶違いか、大昔はそうだったけどいつか変わったようだ。
    • 良く考えると、下に書いたソート順の変更(これも誤解かも知れないが・・・)のために、 . で始まるファイルが目立って誤解したのかも知れない。 (→ 調べて解決した。下のソート順の項に書いた。)

それから、-aオプションのソート順も変わった(「隠しファイル」の最初の . を無視している)気がするが、まだOSを更新していない このサーバでも同じだったので、もっと以前からか気のせいか(あるいは、BSD系では僕の記憶どおり(最初に . で始まるファイルがまとまる)なのかも知れない)。

更に調べたら、lsのマニュアルやGNU Coreutilsのマニュアル(2019)のlsの項脚注で謎が解けた。

    • いつからかは不明だが、lsやsortは環境変数LC_ALLまたはLC_COLLATEとLC_CTYPEの設定に従ってソートするようになった。
    • 僕のシステムでは、LC_ALLもLC_COLLATEもLC_CTYPEも設定していないので、LANGかシステムの設定(= "en_US.UTF-8")が参照されて変なソート順になってしまったようだ。 → LC_ALLかLC_COLLATEを"C"や"POSIX"や"ja_JP.UTF-8"にしたら直った。
      • それにしても、USはこんな変なソートを許容しているのだろうか? まあ、USのことはどうでもいいかw
      • ただ不思議なのは、LC_COLLATEが"en_US"(エンコーディング指定なし)なら まともにソートされることだ。ここは謎の領域なのかも知れない。

勝手なクォートはすっっっごく嫌らしい(これ、bashが、頼んでも居ないのにファイル名補完で特殊文字の前に \ を入れるのと同じ考えか)なんか小賢しい。言ってみれば「日本人的なきめ細かさ」wだが、意外にも外国の人がやったのだろうか。以下に実行例を示す(適宜整形した)。

元(ver. 8.25):

$ /bin/ls Music
My Waves Waves

$ /bin/ls -lL Music
total 76
drwxr-xr-x  33 abcde abcde  4096 Nov 12  2019 My Waves
drwxr-xr-x 599 abcde abcde 40960 Oct 21 21:05 Waves

今(ver. 8.30):

$ /bin/ls Music
'My Waves' Waves

$ /bin/ls -lL Music
total 76
drwxr-xr-x  33 abcde abcde  4096 Nov 12  2019 'My Waves'
drwxr-xr-x 599 abcde abcde 40960 Oct 21 21:05  Waves

上はファイルが少ないからまだいいが、多いと ' がちらちらして汚く見にくい。更に小賢しいのは、' はファイル名の前の余白に表示される(だから、最初は本当に、ディスプレイにゴミが付いているのかと思った)ことだ。全く間違っている!

お前はいつからそんな小賢しいやつになっちまったんだ?

と言いたい。

ただ、元の仕様にも問題はあって、上の例の場合、ファイルは"My Waves"と"Waves"なのか"My"と"Waves Waves"なのか すぐには分からない(下に載せているが、これを改善したいというのが変更の一因のようだ)。ただ、普通はもっとファイルが多いので、列の余白の幅で判別できる。

それから、そもそもlsコマンドには(小賢しい)オプションが多過ぎて余りUNIX的でないから、正常進化したとも言えるw だから、これからもどんどん変わっていくのかも知れない。

検索してみると ほとんど出て来ず、意外に文句を言っている人が少ないようだ。ただ、唯一見付かったページによれば2016年には変更されていたようで随分経っているから、みんな慣れてしまって、文句は淘汰されてしまったのかも知れない。

読むと、やっぱり当時は問題になったようで、Debianは ' を付ける変更を戻すパッチ(no_ls_quoting.patch)を出している(それが今はどうなっているかや、パッチ版が手に入るかはまだ調べていない)。変更理由も載っているが、やっぱり小賢しい。以下に引用する。

The reasons we changed the default was:

  • It only happens when outputting to terminals
  • It disambiguates the output for users
  • Output can be pasted back in the shell for further processing
  • Users can get back to the old format by adding -N to their ls alias

最後は盗人猛々しいとか日本の政治家的な感じすらする。普通は新しい動作は新しいオプションにする(この場合、例えば-Nにする)か、デフォルトでoffにする(この場合、環境変数QUOTING_STYLEが設定されていたら、新しい動作にする)だろうが・・・

それに、-fオプションの動作は戻せない(オプションを-Uに変えるしかない)のはどうすればいいのだろう。目で見るならまだいいが、スクリプトで使っている場合、結構大惨事になりそうだが・・・ (上記のように、これは以前からの仕様のようなので取り消した)

例: いわゆる「隠しファイル」(. で始まるファイル・ディレクトリ)を処理対象外にしているスクリプトが、lsの-fオプションに従来の . で始まるものを出さない動作を想定して、ファイル・ディレクトリ一覧を出していたら・・・

それで、"bsdls"のようなコマンドがないか探したがなさそうだったので、仕方ないので(暇だったせいもあるがw)、元のlsの動作に戻す(直す)スクリプトを作り、それをlsのaliasにした。以下に動作を書く。

  • デフォルトではクォートしない。 → -Nオプションを追加する。
    • ただし、環境変数QUOTING_STYLEを"literal"に設定する方が良さそうなので、QUOTING_STYLEが設定されていない場合だけする。
  • -fオプションが指定されていたら-Uに変える。
    • --形式のオプションの単語中にfが含まれることもあるので、それも考慮した。

書いたあとで調べた(上述)結果、実はこのスクリプトは不要で、環境変数QUOTING_STYLEを"literal"に、LC_COLLATEとLC_CTYPEを"C"または"POSIX"(←日本語が化けるので良くない) "ja_JP.UTF-8"に設定すれば大きな問題(違和感)がなくなることが分かった(ただ、それに伴う副作用が出て来るかも知れない)。

まあ、本当に昔のままのlsを使いたいならBSDのを動かした方が良さそうだが、できるのか?

それにしても、ちょっと前からGNUの嫌らしさにも辟易しつつあったが、"GANG is Absolutely Not GNU."※なんて出ないだろうか? もちろん、LinuxはGNUがなければ にっちもさっちも行かないからすぐには無理だろうが。結局、それはBSD系なのか?

※"GNU is Not UNIX"への反抗w

でも、(Linux登場前の大昔は大好きだったものの、)今のBSD系はなんか違うんだよな。コマンドだけならいいかも知れないが、僕には何か合わない。その「何か」は気分とか好みとかで、特に詳しく調べた訳ではないから、どちらの機能・性能がいいとか言っている訳ではない。ただ、BSD系もGNU同様に、彼らの思想で凝り固まっている感じはしている。それが嫌なのかも知れない。

あと、以前の会社の大嫌いなジジイが使っていたのは大きい(爆)

 

PS. 書いたあとで、元々のlsコマンド(BSD版)のマニュアルを探していたら、おもしろい本「オープンソースソフトウェア - 彼らはいかにしてビジネススタンダードになったのか」(1999)のオンライン版が見付かった。いろいろな意味で、そうそうたるメンバーが書いている。付録AのTanenbaumとLinusの論争もおもしろそうだ。

なかなか大変そうなのでw、あとで読もう。

論争は最初の1往復(ここまでしか読んでない)で「勝負あり」って感じだ。僕は(偉そうなジジイに真っ向から反論した)Linusの側だ。

  •  0
  •  0

大嫌いになりつつあるLinux Mintの次のディストリビューションを探そうと ちょっと検索していたら、日本のもあったのだが(もちろん、僕にとっては、日本だからというだけでは何のアドバンテージもない。逆に、だらだら日本語を出されると邪魔なのでハンディになる)、しょうもないものばっかりで呆れた。

歴史はあるが、十年一日のごとく進歩がなく、古いソフトしか入ってなくて終わっているかのようなもの(いや、そんなんだったら止めた方がいいと思う)、新しいものでは、なぜか開発者・元が名乗らず、自分のサイトどころかドメインもなく(検索しても、レビューページしか出てこない)、他者のダウンロードサイトからダウンロードさせるものばかりだった。

僕は、そういうのは実はCとかRとか「北」国製で、情報を抜き取るとかマルウェアの拡散などが目的ではと心配する・疑うが、使っている人(が居るとして)はそうは考えないのか? 「日本製」とあれば(といっても、大抵は他人が書いているだけなのだが・・・)信用するのか? そもそも開発者・元が不明なのに、どうやって日本製と分かるのか?

そもそも(続くが)、自分のサイトすら作れ・らない人・人たちに、果たしてまともなLinuxのディストリビューションが作れるのか、大変疑問だ。

更に、サイトがないから、そのディストリビューションの主張とか意図とか考えとかメリット・長所・得意なことなど、そして、出所が何も分からないのに、他人のレビューを信じて のこのこ使う連中が居ること(居るとすればの話)がすごく不思議だ。平和ボケの典型だ。

不思議なのは、そういうのは最初はどうやって存在を広めたのだろうか? 昔の2ちゃんねるみたいなところに「作ってみた」とか出したのだろうか?

そして、その一つに、どういう訳かオーディオの音質にこだわっているものがあったが、その いい音質をどうやって実現しているか書いてなくて、ひたすら、マニア向けオーディオ製品のポエムようなもの(+ 設定の羅列)が書いてあるものもあった。もちろん、見た限り、特性の数値なんてなかった。

もちろん、そういうのは試すまでもない。

そして、「やっぱり日本は駄目だ」と実感した。

 

PS. エゴサされると面倒だし(でも、議論するのはおもしろそうだ)、そもそも枝葉末節とか泡沫候補みたいなのはどうでもいいので、それぞれの名前は出さない。

PS2. 日本だけじゃないが、なぜ、ただでさえディストリビューションが多過ぎるのに、新たに出すのだろうか? みんなそんなに馬鹿で暇で自己中心的なのかと思う。僕に言わせれば、まったくの無駄だ。止めとけ。

  •  0
  •  0

性根の悪いMozilla※製品から脱却しようと、先日からメールとカレンダーをEvolutionにして試していた。メールは悪くないが、カレンダーは今一つだった。最初に感じたように、未完成で実用には向かない感じだ。一番気に入らないのは、予定の時刻や通知の有無を変更しても、変更前の通知も出ることだ。どこかに変更前の予定が残っていて消えない感じだ。折角変更したのに、のこのこ古い通知が出るのは鬱陶しいし頭に来るので、断然やっつけたくなった。

※こいつらは、林檎や窓と違って碌にシェアもないくせに自己満足をやりたい放題しているが、どういう了見なんだろうか? 本当に先は長くないよ。

そこで、更に探してみたら、SeaMonkeyというのが候補に上がった。

正確には、最初はブラウザ(Firefox)の代わりを探していて、SeaMonkeyが見付かり、それがメールやカレンダーも含んでいた。

"SeaMonkey"という名前からしていかにも古臭そうだが、実際、これは「いにしえのFirefox+Thunderbird」とでも言えるものだ。外見もそんな感じだ。

実は、SeaMonkeyより「古い」ものがある。Pale Moonというブラウザ(やっぱり古いFirefox)は、サイトを見るだけで敬遠するほど古めかしい。それでも一応試そうとしたら、ダウンロードがすごく遅かったので(一度失敗すらした)、試してすらいない。

使ってみると、ほとんど、僕の好きだった(許せていた)頃のThunderbirdでまあ悪くなかったのだが、起動する時に、終了時に開いていたタブ(例: カレンダー)が開かれないのが気に入らなかった。調べてみると十年近く放置されている問題のようで、なかなか心証が悪い(作った人たちは本当に使っているのか???)。この調子では、もちろん改良なんてされないどころか いつ「無事死亡」してもおかしくない気がした。

それでThunderbirdに戻ったのだが、ちょっとひらめいて再びSeaMonkeyを試す気になった。それは、X11の自動処理プログラム(xdotool)で、SeaMonkeyの起動直後に(マウスを自動操作して)カレンダーとToDoのタブを開くことだ。やってみたら、随分試行錯誤したけどうまく行った。それで、SeaMonkeyを試すことにした。

のだが、良く考えれば、そこまでしてSeaMonkeyを使う価値はない(結局、「劣化版Thunderbird」なので)気がしたので、やっぱりThunderbirdに戻ったのだが、使ってみると、さっそく、頭に来た問題の一つ(Todayペインに今日の予定が表示されなくなる)が起こってやっぱり不便なので、再びSeaMonkeyを使ってみることにした。

ただ、上記のように特にSeaMonkeyが好きな訳ではなく(CardDAVに対応していないなど中途半端なメールはともかく、カレンダーは最新のThunderbirdと同じ外見なので)、Thunderbirdの問題が直ればそっちを使いたいから、バージョンアップされるたびに直ったかチェックしようと思い、定期的に、(webページのスクレーピングで)サイトからダウンロードできるThunderbirdのバージョンをチェックする処理を作った。 ← 今ここw

参考までに、そのThunderbirdの更新チェックの処理(crontabに書いたもの)を載せる。メンテ困難な判じ物、やっつけ仕事である。

tb_lverf=$HOME/tmp/tb-latest-ver; ver_pat='/^.*product=thunderbird-([0-9\\.]+)(-[^&]+)?&.*$/'; lver=`wget -q -O - https://www.thunderbird.net/ja/ | sed -nr "$ver_pat {s$ver_pat\\1/p; q}"` 2>/dev/null; echo "Thunderbird's latest ver.=$lver" > /dev/null; if [ -f "$tb_lverf" ]; then prev_ver=`cat "$tb_lverf"`; if [ "$prev_ver" != "$lver" ]; then echo "Thunderbird has been updated from $prev_ver to $lver."; echo -n "$lver" > $tb_lverf; fi; else echo -n "$lver" > $tb_lverf; fi

余談: 僕はまだまだsedにはひ弱な坊やでw、「一度だけ置換して終わる」ってのが難しかった。同じパターンを2回書くのがどうしても許せなかった。最初は、sedよりはずっと親しみ深いawkを使いたかったのだが、特殊文字をcrontabに書くのが難しくて、sedに逃げた。

 

それから、少し書いたように、ブラウザもいろいろ試したが、やっぱり「昔のFirefox」が多いが、まともなアドオンが少ない(Mozillaが古いものをダウンロードできなくしている! そのため、過去のアドオンのアーカイブ("ca-archive")からインストールするようになっている)など結構面倒で馬鹿らしいし、保守の点でも心配がある。

どこかのフォーラムに、Firefoxアドオンがなくなってしまった問題を"apocalypse"と表現している投稿があった。言葉のイメージ(語感)は分からないが、「地獄の黙示録」("Apocalypse Now"(1979), 特に、あの怖いおっちゃんw)を連想し、みんなひどいと思っていそうな気がした。いやマジで正気の沙汰じゃないよ。

古いせいか ある種独自(を主張している)なせいか、webサービスとの互換性も悪いようで、SeaMonkeyやBasiliskではEvernote webは開けなかった。User Agentを普通のFirefoxに変更したら開けたが、古いEvernote webしか使えなかったので、いつか使えなくなってしまうだろうから、それでは乗り換えられない。

他はOperaは機能的には結構いいのだが、勝手なUIを押し付ける(しかも直せない)のが気に入らない(多くの人が文句を言っているのに無視しているようだ)。あとは、Chrome系だが、メモリを大食いする以外に、(ページによるが)Linuxだと日本語入力が今一つなことが多い(例: Evernote, Twitter)ので、難しそうだ。

もし仮に、今すぐ乗り換える必要があるとしたら、・・・・・、Chromeしかないだろう。

もちろんGoogleは好きじゃないが、他と違って阿呆じゃない。むしろスマートだ。だから、限られた選択肢の中では選ばざるを得ない。。。

(10/19 13:28) と思って居たのだが、「モバイルサイトのないサイトは来春インデックスから消える? Googleアナリストが明言」などと、彼らも随分押し付けがましいから大嫌いだw あー面倒くせえ・・・

 

PS. ついでにデスクトップのテーマについて。: Linux Mint 20にしたら いろいろな箇所の色がおかしくなってしまった件は、大分対処出来た。どうやら、それまで使っていたテーマのMint-X-Sandの系統(Mint-X)は棄てられてしまった感じで、今はMint-Y系が「推し」のようだ。※ ただ、試してみると、アイコンはモダンだが、パネル(タスクバーに相当)の背景がほとんど黒で目立って・目障りで嫌だ(僕にはそれがいいと言う感覚が理解できない。最初もそれで選ばなかった気がする)。それで、パネルの色を明るく(ウインドウのタイトルバーや枠に近い灰色に)した。そうすると、パネルの一部のアイコン(黒い背景を前提にしている)が見えなくなったりして、なかなか調整に手間が掛かった。

※中身(CSS)の話だが、作者が違うようで、Mint-Xは綺麗に整理されていたのに、Mint-Yの中身はひどい。全部押し込まれて、定数も使ってなくて、ぐちゃぐちゃ・書きっぱなしって感じだった。これだと保守が大変そうだ。

更に、自分の好みが変わったのか、Mint-Y-Sandだとベージュ・茶系が多いせいか、なんとなくドン臭いとかもっさりしている気がして来たので、Mint-Y-Grayにして基本は灰色にし、それだとちょっと味気ないので、アイコンはMint-Y-Sandの茶系にしてみた。

Mint-Yの場合、Firefoxの要素(例: ラジオボタン)はちゃんとテーマの色になった。はずだったのだが、今見たら青に戻っていて がっかりだ。。。 (← Firefoxを再起動したら直ったが、もう信じられないな) 更に、Chromeの要素は相変わらず青の一方で、お気に入りはテーマの色(灰)なのが謎だ。それから、Mlhiで使っているrange要素のスライダーの背景が見えなくなってしまい、そこも調整を余儀なくされた。

他にも調整できない箇所がいろいろあってGTKの謎は深いが、ちょっと付き合い切れないな・・・

  •  0
  •  0

大大大(数十回繰り返し)大っ嫌いになったのでwww、ThunderbirdからEvolutionに乗り換えようとして、ほぼ完全に(正確には7/8くらいw)できた。この前試した時、カレンダーにいくつか気に入らない点があったのでメールだけ使って実感したのだが、「当たり前の感覚」で使える点でEvolutionのカレンダーの方がずっと筋が良さそうなことに気付いた。※ だから、多少の欠点はなんとかしたいと思った。

※例えば、Evolutionは基本的にプラグイン(またはアドオン)はない(あることはあるが、両手で数えられるくらいしかなく、ないに等しいうえに、ほとんど使ってない)けど、Thunderbirdと違い、それで大きな不満も問題もない。つまり、基本がしっかりしている、「分かってる」のだ。

Evolutionで一番気に入らないというか不便なのは、メールモードでウインドウの右端に縦に出せるTo Do Bar(ThunderbirdのTodayペインを意識していると思われる)が残念にも

  • 現在時刻でスクロールしない。
  • 時刻が小さくて読めない。
    • こちらは、おそらく、前回のようにGTK3のCSS(gtk.css)で変えられると思う。

ために、「今」はリスト中のどこかや今後の予定が分からないことなのだが、それは今までのように、(Evolutionの下にThunderbirdを出し、)Evolutionの脇にThunderbirdのTodayペインを表示することでしのごうと思う。

それ以外の下記の問題は、使い方や我慢でカバーできる。

  • デフォルトの通知はダイアログだけで、音を出さない。出したい時は、予定を作るたびに音のファイルを指定する必要がある。
    • → 基本的に、音はうるさいから要らないと思って居た(だったら、この文句は何だったんだ・・・w)。あと、机上にスマフォがあるので、画面を見ていない時でもそのバイブの音で分かる(可能性が高い)。
  • 色遣いがイマイチな場合・箇所がある。
    • → 一番(かつ、おそらく唯一)イマイチなのはカレンダーのTasksだが、カレンダーの色を薄くしたら、まあまあになった。
      • 色の濃度を交互に変えるのを止めるとか濃度の変化を少なくできればいいのだが、残念ながらできないようだ。
      • これもGTK3のCSS(gtk.css)で変えられればいいが、プログラムで固定かも知れない。

なお、検索したらたまたま出たEvolution関係の掲示板をいくつか見てみたが、(欧米らしくなく?)なかなか頑固でフレンドリーでもオープンマインドでもない(ぶっきらぼう? ホリ○モン的??w)方が多い感じで(GNOMEってそういう文化なのだろうか? いや、UNIX・Linux系は大抵そういう気がする)、要望を出してもサラっと(あるいは、鼻で笑われて)却下されている感じなので、期待できない。それよりは自分で何とかした方が良さそうだ。

それから、次の問題は再発しなくなった。おそらく、Evolutionの前に試したRainlender2がおかしくしていたのだろう。全くひどいソフトだ。

  • 予定の編集後のサーバへの保存に失敗することがある。繰り返すものが駄目な感じ。

そして、Thunderbirdから完全に脱却するために、Todayペイン相当を自作したくなった。やり方は分かった(下に概要を書く)ので作るだけなのだが、やっぱりそれなりに手間が掛かるので、ちょっと保留している(サボり先輩ーーーw)。

Todayペイン代替プログラムの基本機能・動作

  • 直近の予定を一覧表示する。
    • 予定のデータは、Evolutionのキャッシュ(sqlite3)から読める。また、evolution-data-server(EDS)からDbusで取ることもできそうだし、SyncEvolutionというソフトを使えばサーバからも取れる。
      • キャッシュが一番手軽そうだが、問題も起こりやすい。
      • なぜか、キャッシュ中のカラムsummaryなどの日本語の濁点がない(例: 「資源み」)のだが、バグなのだろうか? だとしたら器用だw
        • でも、本物(カラムECacheObj, VEVENT)は正しいので問題ない。
  • 現在時刻に合わせてスクロールする。
  • 予定が追加・更新されたら、それを反映する。
  • 下にTODO一覧も表示したい。
  • 予定やTODOの項目にマウスオーバーすると内容を表示し、ダブルクリックするとその編集画面を出したい。 (後者はすごく難しい)

 

Thunderbird(Mozilla)もEvolutionも独りよがりなのは変わらないのだが、Mozillaは頼んでも居ないことをして(しかも頻繁に!)ユーザーを困らせる点が一番クソ(f*cking)だ。ある時点で気に入って(というか、他になかったから)使っていても、突然大きく(不便に、でも、もともと使いにくいところはそのまま・・・)変えてしまって、ドヤ顔で「今度の最高でしょ? これからももっと良くするよ」って言うような感じだ。まるで劣化版林檎だ。

「そんなんだったら何もしなくていいよ!」と思うが、それ(何もしない)がEvolutionなのだ。いいのか悪いのか・・・。 (まあ、クソじゃないだけいいと思う。)

そんな訳で、同様のことをしているブラウザFirefoxも捨てたい気分なのだが、なかなか代わりが難しい・・・ ChromeかOperaかなぁ。

つくづくMozillaは馬鹿だと思う今日この頃。このままなら長くないね。

 

参考: 森高千里 「これっきりバイバイ」 (1989)

 

PS. こ、これは・・・ 好きだけど、一体どうして??

そして、こっちも強烈だwww

  •  0
  •  1