NextCloudのWebDAV URLはNextCloudのドキュメントで見よう(Joplin連携)

また備忘録。

ずっと探してたEvernoteの代替としてJoplinを使い始めた。オープンソースEvernoteの置き換えを目指したという、まさに探してた方向性のアプリ。

https://joplinapp.org/

https://joplinapp.org/

Markdownでメモが書けるだけでなく、ウェブクリッパーがちゃんとあるし、Evernoteからの移行ツールも完備。すばらしい。

ただし、クラウド型アプリの常として、どこからでもアクセスできるファイルの保存先が必要。有料ユーザー/無料ユーザーというのは無いので(Joplin Cloudという有料クラウドは提供されている)、自分で用意しなければならない。Amazon S3とかOneDriveとかは対応しているのだが、使い勝手のいいGoogle Driveは使えない。しかしウチにはNextCloudがあるので盤石。

と思ったんだけど、ウチのNextCloudをsync先として設定しようとしたところ、"Check synchronization configuration" が通らない。

設定はJoplinのFAQの "Nextcloud sync is not working" にある通り、NextCloudファイルのルート直下にJoplinフォルダを作った上で、NextCloudのWebDAV URLとして

[NextcloudURL]/remote.php/webdav/Joplin

と設定した。ユーザー名もパスワードも何度も試した。が、通らない。こういう時はなんかポカをやってるのがオレのデフォルトなので慎重に調べたが、問題なく見える。

それでまあ、結論は表題の通りでした。NextCloudのドキュメントにありました。

docs.nextcloud.com

NextCloudのファイルサーバにWebDAVでアクセスするときのURLは

[NextcloudURL]/remote.php/dav/files/NextCloudのユーザー名/

だった。

つまり、NextCloudのファイルサーバの一番上の階層にJoplinディレクトリを作った場合は、

[NextcloudURL]/remote.php/dav/files/NextCloudのユーザー名/Joplin

となる。

WebDAVから使ったことがなくてわからなかったけど、考えてみたらマルチユーザーのファイルサーバなんだから当たり前だ。

ハマった人もきっといるかなー、と思って書きました。

 

追記2022/05/20

肝心のNextCloud WebDAVのURLが間違ってたので、ちょっと書き直した。

Nextcloudのアップデータが途中で504 Gateway Timeout。さらにコマンドラインのアップデートツールが見つからない

備忘録。

バックアップやダウンロードに時間がかかることがあるので、NextCloudのウェブアップデータは失敗することが多いです。ウチの場合、バックアップが成功したりしなかったり、ダウンロードは確実に止まってしまいます。

ダウンロードは事前に落としたのをすばやくコピーとかしても(よくないけど)いいんですが、バックアップが不安定なのはストレス。

これにハマる人は多いようで、ぐぐってみると、みんなコマンドラインから updater.phar を実行しています。なんかダサい。

しかも手元のNextCloud 22.0にはupdater.pharがありませんでした。どういうこと?

というわけで、根本的に解決することにした。プロセスをタイムアウトさせないようにする。

うちはNginxなので、

    location ~ \.php(?:$|/) {

(中略)

        fastcgi_read_timeout 600;

としました。10分w

そして

sudo service nginx relstart

これで解決。ウェブからのアップデートが確実に成功するようになりました。

ただ、タイムアウト10分は他のトラブルのときには長すぎるので、アップデートが終わったらコメントアウト&リスタートしとくべし。

Ubuntu (Pop!_OS) で ls -l の出力を sort に食わせたらアルファベットの間に記号が来た。壊れてるのは誰だ。

学生に sort コマンドを教えた日の講義録を作っていて妙な現象にぶち当たった。

kmf@pop-os:~$ ls -l /var/log/ | sort 

drwx------  2 root              root                4096  2月 19 16:27 private

drwx------  2 speech-dispatcher root         4096  1月  9 09:53 speech-dispa

(中略)

-rw-rw-r--  1 root              utmp               11520  5月 13 23:02 wtmp

-rw-rw-r--  1 root              utmp              292292  5月 13 23:02 lastlog

total 91028

kmf@pop-os:~$ 

「あれー? ヘンな並びになってますね〜」とかやってみせるための例だ。

この例ではsortコマンドがlsの出力を受けて最初のパーミッション表示を使ってソートするのだが、肝心のソート内容がおかしい。dで始まるディレクトリが最初に、続いて -rw なファイル群が続き、最後に「total 91028」が表示されているのだ。

すなわち、

d → ハイフン → t

という並びになっている。

記号はアルファベットより前だか後だかに来るはずが、間に入っている。えっ?

なにかヘマでもしてるのかと思い、何度やってみても、また他のディレクトリでやっても同じ現象が起きる。

調査

はじめは、totalの部分が標準エラー出力で後から出てきたりするということなのか? などと思ったけど、2> /dev/null しても出てくるし、なによりファイルに出力を保存して sort しても同じ結果になる。

困り果てて色々やっていたところ、同じマシンにMacからsshで入った端末では再現しない、という現象が出た。

 

kmf@pop-os:~$ export LANG=ja_JP.UTF-8

kmf@pop-os:~$ LANG=C ls -l /var/log/ | sort

(中略)

-rw-rw-r--  1 root              utmp              292292  5月 15 14:20 lastlog

drwx------  2 root              root                4096  2月 19 16:27 private

(中略)

drwxr-xr-x  2 root              root                4096  5月 15 14:08 apt

total 91684

kmf@pop-os:~$

安心の「記号→アルファベット順」である。

現象が安定しないということは、もしや原因は1つではない? などと思ったが、これが緒になった。

実はこのUbuntuマシンでは、日本語manページのインストール確認作業も同時にやっており、Macから入った端末は、その一環で LANG=ja_JP.UTF-8 した環境だったのだ。

そしてこの、日本語環境にすると再現しない、というところがポイントで、UbuntuMac の違いはターミナルのロケール設定にあった。

Pop!_OS で英語設定+日本語単位系とすると、ロケール設定はこのようになる:

kmf@pop-os:~$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=ja_JP.UTF-8
LC_TIME=ja_JP.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=ja_JP.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=ja_JP.UTF-8
LC_NAME=ja_JP.UTF-8
LC_ADDRESS=ja_JP.UTF-8
LC_TELEPHONE=ja_JP.UTF-8
LC_MEASUREMENT=ja_JP.UTF-8
LC_IDENTIFICATION=ja_JP.UTF-8
LC_ALL=
kmf@pop-os:~$ 

Macからsshで入ってexport LANG=ja_JP.UTF-8 した環境ではこうなる:

kmf@pop-os:~$ locale

LANG=ja_JP.UTF-8
LANGUAGE=
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC=ja_JP.UTF-8
LC_TIME=ja_JP.UTF-8
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY=ja_JP.UTF-8
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER=ja_JP.UTF-8
LC_NAME=ja_JP.UTF-8
LC_ADDRESS=ja_JP.UTF-8
LC_TELEPHONE=ja_JP.UTF-8
LC_MEASUREMENT=ja_JP.UTF-8
LC_IDENTIFICATION=ja_JP.UTF-8
LC_ALL=
kmf@pop-os:~$

そしてsortコマンドのソート順は、強調表示した LC_COLLATE に規定されるのだ。

結論

ながながした調査の経緯は省くが(一緒に調査してくださったずけらんさん、ありがとうございました)、「壊れてるのはUnicodeコンソーシアム」が結論だ。

上記の現象は:

  • UTF-8の英語でのソート順はスペース記号とハイフン(-)を無視する
  • これはUnicodeコンソーシアムの決定であり、バグではない

ためであった。

このソート順だと、「-r」で始まる列は「r」としてソートされる。なるほどそれならd→r→tでアルファベット順になっているでないか。

まとめとしては:

  • ソート順は環境変数 LC_COLLATE で制御される
  • 西欧言語のUTF-8設定では空白とハイフンは無視される。英語ではイギリス英語(en_GB.UTF-8)はおろかシンガポール英語(en_SG.UTF-8)でも漏れなく起きる。
  • ハイフンを記号として扱いたければ LC_COLLATE=C にすれば「伝統的」なソート順(ハイフンを含む記号→アルファベット)になる
  • LC_COLLATE=ja_JP.UTF-8 とした場合も、LC_COLLATE=C と同じくハイフンが記号扱いになる

である。

実用的にはLC_COLLATE=C や LC_COLLATE=ja_JP.UTF-8 を使うのが驚き最小だと思うけど、用途によっては空白やハイフンが無視されることを選ぶべきかもしれない。

余談

この現象、日本語や英語を扱っている場合は選択の余地があるけど、フランス語やドイツ語を扱う大変だと思う。

なぜなら、フランス語やドイツ語では単語にアクサンやセディーユ、ウムラウトの付いた文字が入ってくるから。

これらの文字は、LC_COLLATE=C では、素のアルファベットの後ろに回されてしまう。LC_COLLATE=Unicode なら正しく「素の文字→記号付き文字」の順でソートされるのだが、こんどはハイフンが無視されてしまう。

kmf@pop-os:~$ echo 'a á b c f -c d é e' | tr ' ' '\n' | LANG=fr_CA.UTF-8 sort
a
á
b
-c
c
d
e
é
f
kmf@pop-os:~$ echo 'a á b c f -c d é e' | tr ' ' '\n' | LANG=C sort
-c
a
b
c
d
e
f
á
é
kmf@pop-os:~$ 

オレなら泣く。

とはいえ困るのはハイフンの扱いを選択できないことだけなので、これはsortコマンドの方で(より根本的にはロケール情報を処理するlibcに)選択オプションを設けるべきであろう。

参考

わかってる人が怒りながら返事してて示唆に富んでた。

LC_COLLATEの違いによる記号と文字、.と_の優先順位の問題。もっと良いページあると思うけど、とりあえず。

totalを消して解決するなら「ls -ld *」でいいじゃんという誘惑

 

どこでもCtrl-M as Enter (Mac, Karabiner-Elements)

表題の通りです。Karabiner-ElementsでUSキーボードのMac親指シフトにするためにいろいろいじってるときに、やってみたらできました。

ブラウザのアドレスバーやテキストボックスなどを含め、ほぼすべてのテキスト入力時にCtrl-MがEnterになってくれたので、ウットリするほど快適です。

手順は以下の通り:

  1. Karabiner Elementsをインストール
  2. 設定ファイル置き場( ~/.config/karabiner/assets/complex_modifications)に以下をコピー

ctrlm_to_enter.json:

{

  "title": "ctrl-m_to_enter",

  "rules": [ 

    {

      "description": "Ctrl-M を Enter に変換",

      "manipulators": [

        { "type": "basic",

          "from": { "key_code": "m",

            "modifiers": { "mandatory": [ "control" ] }

                  },

           "to": [

             { "key_code": "return_or_enter" }

                 ]

        }

       ]

     }

  ]

}

  1. Karabiner Elementsの <Misc> タブの <Restart Karabiner-Elements> ボタンを押す
  2. <Preferences> → <Complex modifications> タブの <Add rule> ボタンを押す
  3. <ctrl-m_to_enter>に<Ctrl-M を Enter に変換>が出ているので<+ Enable>を押す
  4. <Misc>タブの<Restart Karabiner-Elements>ボタンを押す(不要かも?)

Aの横のCaps LockをCtrlにするには、

  • <システム環境設定> → <キーボード> → <修飾キー...>

でもできますが、オレは不具合が出たときに

  • Karabiner-Elementsの<Preferences> → <Simple modifications> タブ → <Add item> → <From key> を caps_lock に → <To key> を left_control に

という方法に切り替えました。

karabiner-elements.pqrs.org



戦略級、作戦級、戦術級

むかしの紙のウォーゲームは、戦略級、作戦級、戦術級という分類がなされていた。戦略級なら一国の運命を担う立場を、作戦級なら作戦を統括する立場で、戦術級なら、建物を攻略する戦隊指揮官とか、戦闘機を操縦するパイロット視点をシミュレートする。

テスラの信じられない発表「コントローラーを半導体に合わせる」

という話を読んで、この尺度のことを思い出した。

「我々の開発チームは、半導体不足から引き起こされる製造の問題について対応するために、これまでにない取り組みを開始している。我々のエレキとファームウエアのチームは、19もの新たなコントローラーを用意し半導体不足に対応するために鋭意、設計や検証に取り組んでいる」

日本標準からすると、クルマ業界はむしろかなり戦略的に動く方だ。サプライチェーンの停止に備え、複数調達先の確保なんかは当然やっている。整備マニュアルを見てもわかるのだが、ラジエーターなど3社くらいから調達してることがあるし、トランスミッションみたいなクリティカルな部品も2種類あったりする。

しかし、テスラのこのストーリーが示すのは、「彼らは社内でインターフェイスを統一し、コントローラをプラガブルにしているのではないか」ということである。要するに、パソコンのマザーボードみたいに個別に置き換え可能な部品として扱うようにしたのではないか、ということ。

これは実現すればゲームチェンジャーだ。クルマの開発サイクルとコントローラの開発サイクルを分離することができるからだ。これを推し進めると、車種の違いはモーターと電池、シャーシの性能だけの違いになり、コントローラは同じものをパラメータ変更だけで使えるようになる。管理すべき部品の種類は減る。コントローラについては(PCと比べて相当ハードルは高いものの)「互換機メーカー」が現れる余地すらある。

日本のというか、テスラ以外のクルマは全部ガラケー的に開発されている。コンピュータは専用設計で、ベアメタル開発的な手法で部品の性能を出し切るようにする。

テスラはクルマをiPhoneにしようとしている。

コントローラの性能が次第に上がっていくのであれば、こうした設計思想への転換は経済学的に自然な動きである。標準化して独立性を上げることは、規格作成のコストが吸収できるのであれば、以後の設計費用を減少させ、見積もりを楽にし、製造上のボトルネックを解消する。

この視点を見てしまうと、一般自動車メーカーの「戦略級」に見えていた複数調達手法が、実は「作戦級」にすぎなかったことがわかる。複数調達は対処の方法であり、ゲームのルールを変えないから。

テスラの方は、拡張を実現するために全力を尽くす、というのが実にアメリカンであり、「知の自由競争」的であると感じる。

以前の通りの開発手法を変えず、感覚に対してこういうとこで無理をせずに個々の開発で無理したがる日本式とは、ものすごく違う。

つまり、知の自由競争(サイエンスやデモクラシー)が戦略級になってるのが西欧文明、作戦級なのが東欧&中国、戦術級なのがアジアと南米、個人レベルなのが日本かなー、と。

おそらくは、仕組みを作るということに関して、われわれはまだ文化的にはるかに後方に居るということをちゃんと認識すべきなのだろう。世界中で「知の自由競争を基盤哲学に置く」が発見できたのは西欧文明だけなので、アジアが劣後するのは、まあまあしょうがない。

しかし中国みたいなシステム志向の国では、「作戦級」におけるサイエンス的手法がたくさん導入されるようになった。根っこの哲学はあくまで、中国中原がすべての中心、かつ、その都合でなんでもやるという主義(中華思想)なんだけど、実地にはかなりサイエンティフィック。

対して、日本はなんでも手動でやりたがるんだよね。サイエンスとはなにか、みたいなことをちゃんと知ってる人はいっぱい居るけど、それは仕組みに反映されない。個人レベルにとどまる。

というわけで、小学校の教育を直さんといかんし、そのためには自民党独裁体制をどうにかせんといかんのですよ。(つながった

そういえば、梅棹忠夫の『文明の生態史観』には、日本は絶対的な中央集権ではなくfeudal lordsの割拠する国だから西欧に近いとか書いてあったけど、けっきょく「知の自由競争」がまったくわからないのだから、ぜんぜん違うと思う。「そういうのもわかる」人がいっぱいいるだけ。

そして、「そういうのもわかる」人の数の多さと範囲の広さが日本文化の強みかなと思う。システムは変わらず、個人がそれぞれ勝手に実装する。

めちゃめちゃ効率悪いけどね。

"野尻抱介の「ぱられる・シンギュラリティ」"

SF作家の野尻抱介さんが昨秋から書いてる新連載、『野尻抱介の「ぱられる・シンギュラリティ」』。苦手な動画によるシリーズだとなぜか思いこんでいたので、まったく見ていなかったんだけど、文章だとわかったので一気に読んだ。

1回ずつがしっかりした体験に基づく科学エッセイになっており、アナログな遊び(といっても非常に高度な、大人が本気でやるようなもの。火起こしとかハンドランチグライダーとか狩猟とか手回し計算機とか)を素晴らしいイントロで紹介しつつ、それを通じて人類を考える野尻節が読める。オレの書くもので言うとバイオリンの話に近いけど、もっとだいぶ巧みなやつ。

野尻さんは何も勧めない。これをやるとこんなお得なことが、みたいなことはぜんぜん言わない。でも、自分が人類のこの部分を理解するにはこれが役に立ったと言って、手順を示してやって見せ、思考の経路が理解できるようにしてある。

オレには計算尺の回(第4回)が興味深かった。計算尺の操作がようやくわかってスッキリしたというのもあるし、ネイピアの話もよい。

計算尺とはこれまで縁がなく、操作を知らなかったのだけど、昔の科学エッセイなどには出てくるもので、出てくるたびに自分の無知に目をつぶる必要があって気になっていた。ようやく今回一応使えるようになったと思う。使えるようになったからと言って使うかといえば怪しいけど、アシモフ自伝で、このとき計算尺の基本を教えてくれていれば!、などと怒っていた記述の解像度は確実に上がった。

野尻さんのこうした「いまや受け継ぐ人の少ない伝統的なスキルをまじめに習得する」という姿勢は、それらが担っていたものを現代の我々に翻訳してくれる。現代人が現代の言葉と技術を使いつつ、古来の技術を現役で使い、現代人の価値感と言葉で書いた文章になっているからだ。

こういうものは知識体系の積み上げとして非常に正しいと思うが、ずいぶん稀だ。特に日本では他で見たことがない。

そしてその先に人類を洞察する部分が来るのだ。読み応えあるよ。

掲載サイトに目次がないので、各回へのリンクを張っておきます:

第1回 石と火とシンギュラリティ 
第2回 焼肉の連鎖とバズる人類 
第3回 狩猟採集民、シンギュラリティに向かう
第4回 未来をひらいたネイピアの魔術
第5回 宇宙は木片と歯車で作れるか
第6回 戦争にまつわる三つの引き出し

アノニマス殿ごっこ! - 3DプリンタでTPUマスクを作る

3Dプリンタで「アノニマス殿のマスク」こと、ガイ・フォークス・マスクをプリントしました。

モデルはThingiverseにあるものを使用。

www.thingiverse.com

プリント

モデルの説明に、倒立ならサポートレスでプリントできるはず!とあったので倒立で行きます。

  • 薄いのでブリムを1cm幅で付ける
  • ここはさすがにサポート無しじゃ無理があるだろうと思った瞼のところだけ手動でサポートを入れる

その他の設定はPrusa Slicerの0.2QualityからTPU用にちょっといじった感じです。

デフォルトからの変更点は:

  • 外周4層、かつ最外周以外は吐出幅0.6mmとし、ほとんど中実に
  • snug supportを使用
  • Avoid crossing perimetersをオンにして糸引きを抑止
  • Fill Gapをオフにして余計な動きを抑制

というのと、TPUの設定で

  • Max volumetric speed(吐出体積による速度制限)を1.5→10に

これはいま使ってるショア硬さ95AのTPUがほとんどPLAのようにプリントできるので速度制限を解除するため。

時間は12時間半ほど。

f:id:kamosawa:20220312150528j:plain

トラブル回避

プリントしながらスライス結果を見直していたところ、鼻の穴の底が空中に吐出するようになっているのを発見。

f:id:kamosawa:20220320121609p:plain

鼻の穴の底がこのレイヤーで唐突に出現する

もう既に、そこそこプリントが進んでいたので、スライスをからやり直すのは回避したいです。手動でサポートをつけてみましょう。

マスキングテープを糊面を表にして巻いてベトベトの塊を作り、この部分のプリントが始まるレイヤーになった時に、そっと置いてみました。

f:id:kamosawa:20220312171007j:plain

f:id:kamosawa:20220312171641j:plain

↑あんまりうまくいってないけど成立した↓

f:id:kamosawa:20220312175024j:plain

決して完璧とは言い難いんですが、なんとか事故は回避という感じ。

f:id:kamosawa:20220312220921j:plain

どうにか完成〜。

掃除

サポートの剥離はTPUだとちょっと大変ですが、まあなんとかなりました。Prusa Slicer2.4の新機能、snug supportを使ったので、目の部分より外にははみ出てません。しかしこういうのだと、やっぱりツリーサポートがいいですね。

お試し

f:id:kamosawa:20220312230624j:plain

f:id:kamosawa:20220312230915j:plain

f:id:kamosawa:20220312230551j:plainf:id:kamosawa:20220312224222j:plain

塗装

最後は塗装です。ヒゲや眉、目の周りのシワのスミ入れはダイソーの水性黒ペンキを使いました。こいつはアクリル絵の具の一種で、つまり3Dプリンタで出力したPLAやTPUに塗れます。

f:id:kamosawa:20220320122713j:plainf:id:kamosawa:20220320122737j:plain

筆は眉やヒゲには幅1cmほどの平筆、目の周りのシワのスミ入れには面相筆的なものを使いました。

ペンキの蓋の裏に付いてる濃い部分を使うことで、積層跡の細い溝に塗料が入り込まないようにしましたが、特に細い部分では難しかったです。

---

ボカシの入った赤い頬は「ガンダムマーカーエアブラシシステム」を使いました。

これはエア缶、レギュレータ、ホース、ブラシがセットになってて、ガンダムマーカーを逆さに差すだけで使えます。掃除が一切不要の卓上エアブラシで、メチャメチャ便利です。

頬の色は「シャアピンク」を使いました。キャップの見本色よりちょっと白っぽく、モノアイなんかもこれで塗れるという色。

フチをぼかして塗るときは、テンプレートを対象物から少し離してスプレーします。今回はいらないビニールを8つに折って角のところをハサミで落とすことで穴を開け、ちょっと離れたところに保持しました。

このエアブラシシステムは初期吐出が多めで粒が飛び散ることがあるので、穴の外を狙ってボタンを押し、それから中を塗るようにします。

f:id:kamosawa:20220320123107j:plain

写真はイメージです。実際にはビニールは左手で持ちます。

完成

f:id:kamosawa:20220320002149j:plain

適当な帽子がないので沖縄のクバ笠をかぶってみたところ、どうみてもチョンダラーに…。いやー、前から似てるとは思ってたんだけど…。

チョンダラー - Google 検索

https://www.google.co.jp/search?q=%E3%83%81%E3%83%A7%E3%83%B3%E3%83%80%E3%83%A9%E3%83%BC&hl=ja&tbm=isch

まあよし。

まとめ

  • 3Dプリンタでお面を作るのはけっこう実用的!厚さ3mmのTPU製マスクが半日で作れる
  • 使用フィラメントは200g程度。1kg4000円なので800円見当だけど今なら500円かな。
  • ガンダムマーカーエアブラシシステムまじ便利
  • アノニマス殿はチョンダラー