Archive for the ‘Android’ 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

少し前の話だが、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

(題は微妙に違うかも。題と「毒を喰らわば−」と「背に腹は−」を足して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

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

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

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

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

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

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

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

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

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

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

AQUOS sense liteで撮影

 

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

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

 

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

  •  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

マークダウン(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

さすがに誇張があるが、例によってなんとかした^^

電池が寿命になったNexus 4。互換電池は粗悪品だったようで復活せず、仕方なくiPhoneを使ったが、とんでもなくどうしようもないシロモノで、Nexusを蘇らせたくなった。が、まともな電池が(手頃な価格で)手に入らないことにはどうしようもない。と思って居たのだが、今日の午後に思い付いた:

電池を使わなければいいのだ。

問題は、どうしてかスマフォは(PCなどとは違い、)外部電源だけでは起動せず、電池が必要なことだ。が、そこは「ダミー電池」をでっち上げればいいのだw 検索してみると、別の機種ではあるが実際にやられている方が居て(例1, 例2)、可能性はありそうだった。Nexus 4も海外の方がしていた

ダミー電池とは、簡単に言えば、外部電源を電池の端子から出してスマフォ本体に入れるだけのものだ。とても単純なものだが、実際には いろいろな問題がある。

  • 電圧を電池(例: 3.8V)に合わせる必要がある。
    • → 実際には、3.8Vの電池の端子に5Vを直結しても問題ないようだが、一応、ダミー電池の端子の手前に手持ちのダイオードを1-2個入れて、適宜電圧を下げることにした。
  • 電池の温度センサ(サーミスタ)もダミーを作る必要がある。
    • → 10kΩ程度の抵抗を繋げばいいようだ。
  •  外部電源(USB)を繋いだ場合、電池に充電しようとするので、電流の逆流対策が要りそう。 (これが書いてあるページはなさそうだった。)
    • → ダミー電池の端子の手前にダイオードを入れれば回避できそうな気がする。
  • スマフォを使用中は、絶対にダミー電池の電源を落とせない。つまり、普通のスマフォらしい使い方は全くできなくて、かなり不便になりそう。 (これが書いてあるページもなかった気がする。)
    • → ACアダプタと一体になったモバイルバッテリー(例: Anker PowerCore Fusion)を使えば、結構「普通」に使えそうだと思った。ただ、何か落とし穴がありそうだ。
  • Nexus 4の場合、電流と使用時間から電池残量を計算しているようで、長時間使うと電池が「空」になったとみなされて落ちてしまう。(上記の海外の方のページを参照)
    • → 電池だけでなく、外部電源も接続して、スマフォは電池を充電していると思わせて使う必要がある。
      • この場合、電池に使う電源を外部電源(USB)にも繋げば良さそうだが、何か落とし穴がありそうだ。例えば、上記の逆流防止のダイオードが逆効果にならなければいいが・・・

気になることはあるが、上記のように、問題への対処を概ね考え付いたので、ちょっと試してみることにした。

まず、スマフォの電池の端子に接続するため、壊れた電池(廃棄する予定だったが、まだ残っていた)を分解して端子を取り外した。端子は電池とは別の基板に載っていたので、その基板ごと取り外した。基板は結構広い金属箔で電池本体に繋がっており、過電流防止用チップとサーミスタが載っていた。なお、その本物のサーミスタがそのまま使えたので、ダミー電池の温度センサ用抵抗は不要だった。

最初は金属箔に電源(ACアダプタ)を繋げて試したのだが、電流制限用チップが間に入るせいか うまく動かなかったので(実際には、接触が悪くて電流が良く流れなかったからのように思う)、チップを外して+端子の根本に電源を接続した(-端子は金属箔がそのまま使えた)。試してみると、結構大電流が流れるらしく、細い線を使ったり、ワニ口クリップで接続したのでは うまく起動しなかったり、不安定だった。それで、太目の配線を基板や箔に半田付けしたら、何とか安定して起動し始めるようになり、設定やGoogleのログインをしたら、再び、使える状態になった。なお、ダイオードは ない方が動作が安定する感じだったが、1本接続した。

試して分かった大きな問題は、電池から流れる電流が結構大きいようで、普通のUSB電源アダプタ(約1A)では足りなくて(ダイオードを入れなければ大丈夫だった)、使用中に落ちてしまうことがあった。それで2Aのに換えたら落ちなくなった。どうも、スマフォは外部電源(USBは基本的には最大0.5A)だけでは消費電力を賄い切れないようで、メインの電源は電池で、外部電源は主に電池の充電に使っているのではないか。

良く考えると、これはおかしい。というのは、スマフォに添付のACアダプタだって1Aしか出ないが、例えば、電池の容量を2000mAhとし、残量50%の場合に充電が2時間で終わるとすれば、充電に使われているのは平均0.5Aで、その時に本体は残りの0.5Aを使える。充電に1A全部を使うとしても、充電しながら電池から本体の電力を取るという芸当ができるとしても、結局、その分充電電流を減らすことに相当するので、やっぱり、外部電源だけでも消費電力は賄えるのではないか? 負荷が高い時に不足するのかも知れないが。

それを除けば、とりあえず復活できることが分かった。以下に細かい問題などを書く。
  • Nexus 4は背面パネルにWi-Fiのアンテナが付いているようで、裏蓋(背面パネル)を付けないと(Wi-Fi接続はできても)通信がうまくできず、Googleへのログインに失敗した。
  • 意外なことに、Nexus 4の電池周りのフレームは金属で、ケーブルを通す穴が容易に開けられない(当然ながら、ニッパの刃が立たなかった)・・・
    • 今は、無理やりパネルの隙間を通している。
  • なぜか、アプリや細かい設定がリストアされなかった。。。 (Googleにバックアップされているはずだったのだが。スマフォの名前が違うせいだろうか?)
    • 互換電池が動かない時に工場出荷状態に戻してしまったため、再度設定やアプリのインストールをし直す必要がある。
  • システムとしては電源に繋がっていない(電池だけ)と思い込んでいるので、電力を食う作業をする時に電源接続を促されることがある。
  • やはり、使っていると「電池」が減る
    • 対策をしないと数時間で切れるようだ。
    • 設定や開発者モードを探したが、「電池が空でも動き続ける」とか「電池なしで動かす」のような都合のいい設定はなかった。
  • ダイオードは意外に熱くなる。流れる電流が大きいのだろう。
  • Androidが古くてDropboxが非対応・・・ → CX file explorerで繋がった。

あとは、上記のように、ダミー電池用の外部電源をUSBにも繋げて常時「充電状態」にすれば、基本的には「できあがり」なのだが、果たしてうまく行くだろうか? どうも悪い予感がするのだが・・・

(7/26 4:56) 外部電源をNexusのUSBにも繋ぐ前に、どうなるか考えてみた。Nexusはダミー電池を充電しようとするが、ダイオードがあるので、充電電流は流れない。すると、以下のいずれかになるのではないか。

  • 謎の原理で残量が増えてウマーw
    • 例えば、下記の「「満充電」と判断」であろうか。
  • 永遠に電池残量が増えず、いつか落ちる。
  • ただし、空になる前から繋いでおけば、電池からは電流が流れず(負の向き)、かといって充電電流も流れず(正の向き)、増えも減りもしないので、空になることはない?
    • 充放電の仕組み(アルゴリズム)上、いつかは空になる?
    • ずっと充電電流が0だと充放電アルゴリズムが「異常」と判断して、いつか使えなくなる?
    • ずっと充電電流が0だと充放電アルゴリズムが「満充電」と判断して、OK?
  • 充放電回路が壊れて、いつか使えなくなる。

なお、USBをPCなど別の電源に繋ぐ場合に備えて、ダイオードは必要だと思う。逆に、繋いだPCなどが壊れる可能性もあって怖いが、さすがにそうならない回路が入っているのではないか。

それから、(Androidを停止してから)ダミー電池の電源を切ると、次回の起動時に電池が抜かれたと判断し(実際にはスリープ中のシステム制御処理が再起動するので)、残量100%から始まると思われる(→ その後試したら そうなっていた。下のグラフの8時頃以降)。ただ、一旦停めないといけないので連続稼働には効果がない。

(7/26 9:24) 実際に試してみたところ、USB(外部電源)を繋いでいても、アプリ: 3C Battey Managerで見ると電池の状態は「放電中」(設定では「ACで充電しています」)になり、電池残量は減り続けた。上の予想の中では「永遠に電池残量が増えず」や「充放電の仕組み(アルゴリズム)上、いつかは空になる」に近い。消費電流は常に500mAを超えている訳ではない(一時的に超えることはある)から、(アプリの表示が正しいとすれば)USBで足りていない訳ではないはずだが。謎は多い。

(7/26 20:15) その後更に試してみたが、ダミーバッテリーが減るのは解消できなかった。分かったのは、Nexusが意外に電流を食うようで、2Aの電源アダプタでは足らず、別の電源アダプタをUSBに接続したら、電池消費率が最低になったことだ。試しに定期撮影をして電池消費率を測ったところ、2Aの電源アダプタだと約1.7%/hだったが、電源アダプタを2つ使ったら、約1%/hになった。

いくら消費率が低くても最後に停まってしまうのでは意味がないので、この方法は保留にし、いい案が出るまではiPhoneを使うことにした。

 

(7/26 5:29, 7:14 若干加筆; 7/26 9:24, 9:43 外部電源を接続して試した結果を追記、修正, 20:15 追加の試行を追記)

  •  1
  •  0

近頃二つの物を買い、どちらも返品する羽目になった。一つは換気扇で、もう一つはNexus 4の交換電池である。

換気扇は、居間の常時換気をすることで、臭い原因物質が溜まるのを防げるかと思って付けてみることにした。塞いだ吸気口(パイプ)にうまく合う物があれば、それほど苦労せずに付く目論見だった。三菱の、口径10cmで、パネルが自動開閉するから停止している時も風が入らなそうな物を買った。Amazonで約5600円だった。

が、例によって、全然簡単に付かなかった。問題は、吸気口のパイプ(運良く径は合っていた)の開口部が壁より数cm奥まっていたので、換気扇の取り付け部がパイプまで届かず、固定できないことだった。それで、取り付け部の固定・気密用スポンジを剥がしてクリアフォルダーを巻いて延長し、それに(丁度、窓の隙間を塞ぐために買った)ゴムスポンジを巻くなどの手直しをした※。スポンジの位置や厚さの調整が大変で、四苦八苦して何とか付いたが、動かしてみると今一つなことが多かった。

※他の手直しとして、なぜか、電源コードが上から出るクソ仕様ようになっていたので、下から出すようにした。本体の肉薄部をカットすれば横から出すことはできるが、基本は上ってのは余りにも場当たり的で(おそらく、基本は速結端子を使い、外にコードを出さない考えなのだろう)、実際に使うことを考えていない設計だと思う。やってみると、下部中央には通すのに丁度いい穴(凹部)があるし、内部ではコードはモーターから上に出たあと一旦下に向かい、それをわざわざ再び上に持ち上げているのは全く意図不明だ。

まず、換気能力が低かった。仕様の数値は悪くなかった(ただ、今となっては「悪くない」と判断した根拠がなく、迂闊だった。もう一つの候補だったパナのの1.5倍あるから「いい」と思い込んでしまった)のだが、風やパイプの状態などの外部要因に弱いようで、運転中のCO2の減少率を風呂場の換気扇と比較したら、仕様では風呂場のの1/2程度で、確かに状態がいい時は約1/2.4になったが、悪い時は約1/9に過ぎなかった。そればかりでなく、逆流したのか、増えることもあった。全体をとおしてみると、CO2がほとんど減らなかった(= 0倍?)期間が大半だったので、人間一人が安静にしていて発生するCO2(約0.0132 m3/hとのこと: 参照)に見合う程度の能力(左のページによれば30 m3/h程度で、実質的な能力は仕様の1/2.5程度と考えられる)はあるものの、それが限界で、全く期待外れだった。一方、風呂場の換気扇に切り替えると気持ちいいくらいに減るので、能力の差は一目瞭然だった。

おもしろいのは、この風呂場の換気扇も(少し昔の)三菱製で、物によるのか年代によるのか・・・

それから、気密性が低いようで(スポンジの材質・量・付け方や電源コードの部分が取り付け部から突出していて(→ 写真手前の部分)、そこから外気が容易に漏れそうなのを見ると、余り気を遣っていないように思われた)、向かい風が強い場合には外気が漏れ出して、室内のHCHOなどの値が上昇した。ムカつくのは、パネルが自動開閉なのにも関わらず、メーカーサイトにある仕様書には、風が当たる場合には風圧で閉まるシャッター付きのものを選ぶように書いてあったことで、それでは この自動開閉は何のためなのかと思った。

三菱電機は昔はそれほど悪くない印象だったが、近頃は劣化したのだろうか。ただ、結構前から何度か三菱の製品を買っているのに、全部返品か手放す羽目になったところを見ると、やっぱり、某頓挫しつつある旅客機のように「うーん」な会社なのかなと思う。ただ、そういうトラブル時に来たサービスの人はいつも親切だった。だからもったいない気はする。

運転音についても、仕様では23.5dBと小さいものの、実際には結構気になる音量だった(音質が関係しているのかも知れない)。

結局、換気能力が低いうえに漏れるのでは意味がなく、風呂場のを回す方がずっといいので、止めることにした。可能なら返品しようと思って調べたらできることが分かったので、手続きをした。ちょっとわがままかも知れないが、Amazonは散々使っているし、迷惑も掛けられているからいいだろう。それに、返品理由に「製品の機能が悪いため」のようなものがあって、まさにそれに合致しているからズルではない。

次に、先日壊れたNexus 4の代わりにiPhoneを使うのがどうにも苦痛だし全く容易にできないので、Nexusの(互換)電池が売っていたら交換して復活させようと思った。調べたら売っていたので、偽物が結構心配ではあったが、他にないので注文した※。Amazonで1700円くらいだった。届くまでに、Nexus 4の剥がれた背面パネルを接着して修理した。使い込んだので、かなり傷だらけだ。

※注文のあとで、やっぱりこれは(例えばPCのオーバークロック同様、)危険過ぎる(リスクが高過ぎて割に合わない)賭けであることに気付いた。下手すれば発火・爆発するので・・・ だがまあ、使える可能性もあるから、充分注意して使おうと思って居た。

届いた電池には交換用工具や接着用の両面テープまで付いていて なかなかちゃんとしていたので、感心し期待させられた。しかし・・・交換したら、やっぱり駄目だったwww どういう理由なのかは分からないが、Androidが起動する時に勝手に電源が切れてしまう。数時間充電しても全然残量が増えなかったので、元々駄目な物だった気がする(充電中に電池もACアダプタも温まらなかったので、充電できないようだった)。

ただ、目隠しシールの下にはLGのロゴが入っていたので、本物なのかも知れない。確かに、LGの型番が書いてある(= 本物か偽物)。それでもちゃんと使えないところを見ると、下請けメーカーが検査に通らなかったものを有効利用wしているのかなと想像した。そういうのでも、中には使えるものもあるのだろうから、何度も交換すれば使える物に当たるのかも知れない(とても付き合ってられないし、危険すらあるが)。

それから、添付の工具(特に、プラのヘラ)は「ありがたい、これが欲しかったんだよ!」と思ったのだが、一回使っただけで先端がぐちゃぐちゃになり、全然実用にならなかった。使ってないが、電池を外すためと思われる吸盤なんて、きっと、何の役にも立たないだろうw

それで、これも返品することにした。正確にはこちらが先で、そのついでに(?)換気扇も返品する気になった。

他に互換電池はないか探したが、Amazonで評判の悪いものや、今回のと同様の物(LGロゴ入りw)が得体の知れない会社(住所非公開)から高く売られている程度だったので、諦めることにした。

結局、Nexusは復活せず臭いセンサの定期撮影ができなくなってしまった。が、まだ部屋の調整箇所(特に窓)が残っていて測定したいから、仕方なくiPhoneでやることにした。が、まあ、例によって、林檎社のクソぶりには大変苦労させられ、その、上から目線((自分たちは頭空っぽなくせして)「下々の者は何も考えなくていいから」的な日本政府を想起させる)には殺意を覚えた。が、さまざまな手を駆使して、さっき(いろいろな制限・問題はあるものの)どうにか できるようにした(その話は別の稿に書きたい)。

 

PS. 題の歌は、小学校で市の合唱コンクールか中学校でクラス対抗の合唱会で歌った覚えがあるのだが、当時から随分暗い歌だと思って居た。選んだ先生(多分、小学校)が暗かったようだ・・・

そして、Wikipediaにおもしろい記述を見付けた:

また、園庭のない保育園等でカートに詰め込まれて児童が近隣の空き地、公園等へ放牧される移動風景、もしくはカートを指して「ドナドナ」と言う。

そうだったか・・・ あの、保育士さんが手押し車を押す光景は微笑ましいし、なんか暖かい感じがして好きだったが、そういう捉え方をされていたのか・・・ 世間は深い。

PS2. (全く横道に逸れるが、他に書くところもなさそうなので書く) 「ドナドナ」は救いようがない暗さで大嫌いだが、モーツァルトの短調の曲は何か(それが何かは、今は分からない)が違うと思って、ピアノ協奏曲 第20番が聴きたくなって、いろいろ選んで聴いている。

  •  0
  •  0

外の臭いがどういうふうに変化し、室内の状況(僕の症状)とどういう関係があるのかなどを知りたくなって、臭い測定セットベランダに設置して2日目の今日の夕方。なぜか、画像が転送されなくなった。少し前からそういうことがあったけど次の回に転送されていたので待ったが、一時間待っても転送されなかったので、きっと暑さでスマフォ(Nexus 4)が落ちたのだろうと思って見たら、なんと・・・

電池が膨らんで、背面がぱっかり開いてしまった

確かに、昨日は涼しかったが、今日は日中は30℃くらいになったので、無茶だった。一応、直射日光や雨が当たらないように押入れケースに入れていたのだが、年代物(約7年目)の電池にはキツかったようだ。

電池の中身が吹き出すとか発火とか爆発しなかったのは良かった。さすがGoogle監修? 単に運が良かっただけ? まだ怖いので、密閉袋(ジップロックの類似品)に入れた。

そういえば、近頃は頻繁に勝手に再起動していたのは、これの前兆だったのか・・・

それから、幸いなことに、買ったばかりのセンサは全く(と言っても、電池しか分からないがw)大丈夫だった。最近のC国はちゃんとしているものも多そうで、何よりだ。

だから、普通なら30℃くらいは全然問題なかったのだが、いかんせん電池が古かったということだろう。

まあ、壊れたものは仕方ない。

ちょっと中をみたところ、アンテナと思われる配線が背面に繋がっているため簡単には開けられず、電池交換は容易ではなさそうだ(調べれば出てくるかも知れないが)。

代わりにiPhone 6s(だったか、超大嫌いだしクソのように使いにくいので名前すら分からないw)で定期撮影できないか考えている。今は純正の「ショートカット」とかいうアプリでオートメーションができるようだが、それを入れるにはOSの更新が必要で、そうすると他の問題が出そうだから悩ましい。

さっきiPhoneを起動したら、「電話番号の変更」とかいう通知が出ていて、それをしたことや、新しい番号が全然記憶にないのだが、ハッキングでもされ掛けたのだろうか? 謎だ。

↑ 何となく思い当たって調べたら、原因が分かった。iVideoを試した最初の頃に、SIMを一時的にiPhoneに入れたためのようだ。新しい電話番号はそのSIMのものだった。 (2020/7/21 4:15)

iPhoneはどうにも不便で使いたくないので、Nexusの電池を交換できるか検索したら、随分簡単に分解・電池交換できそうだったので(→ 参照)、やってみた。道具(プラ製の分解用ヘラ)がないのと電池が両面テープで結構しっかり接着されていたのでちょっと神経を遣ったが、なんとか外せた。電池の外装は全体的に柔らかく、特に裏側はアルミ箔なので、外す時に破ったりしないように注意した。電池はAmazonで1700円くらいで売っていたので、注文した。

なお、背面パネルは電池が膨らんで持ち上がった薄い板だけでなく、その下部の つばのような、側面を構成する部品も一体だった。だから、板だけを剥がそうとしたら壊れてしまっただろう。

驚いたことに、この膨らんだ状態でもまだ電池の能力は残っていたようで、分解する時にたまたまボタンを押してしまったら、画面が点灯して起動し始めたことだ(ただし、そのまま起動できたかは不明)。なお、電池を外した状態では、USBで電源を供給しても電源は入らなかった。 (7/21 8:50, 10:46, 21:39)

 

(7/21 6:16 Nexusの国を訂正 ← 8:17 Nexusでなくセンサの国だったので取り消した。)

  •  1
  •  0

前回、「(センサの値を)自動測定したくなった」と書いたが、半分くらいできるようになった。とりあえず、定期的にスマフォ(Nexus 4)で においセンサ(JSM-131SC)の画面を自動撮影し、その画像をPCに転送するようにした。通常は1時間に1-2回の測定なので、一日分でも画像は24-48枚にしかならず、自分で画面を読んで、手で測定値をスプレッドシートに入力するのでも苦にならない。

スマフォからセンサを常に同じ画角で撮影できるようにするため、それらを載せるスタンド(段ボール製)と自動撮影・画像転送プログラム(Automagic利用)を作った。

試行錯誤はしたが、丁度良さそうな箱があったので、それをベースにすることにした。ただ、スマフォのカメラは隅にあるため、普通にセンサの正面に載せたのでは画面が撮影できず、横にずらさないといけないのが落とし穴だった。使った箱が細かったので、スマフォを横置きにしてちゃんと写るようにすると、スマフォの重心が箱の外になって落ちてしまう。それで、最初は、スマフォをセンサに対して斜めに置いた画面は傾くが実用にはなるからいいと思ったが、やっぱり気に入らなかった。

次に、センサも斜めに置いてスマフォとセンサが平行になるようにしてみた。それなりに画面はちゃんとするが、斜めだと位置決めが難しく、完全には調整できず、やっぱり満足できなかった。

こういう本末転倒エキセントリックなこと、家電なら昔のS社、車だとH社がよくやって自爆するのかな?w 僕は好きだけどね。

結局、両方とも(普通に)箱に対して直角に置くことにし、そのためにスマフォが落ちないように横に台を追加して、ようやく満足できる画像が撮影できるようになった。ちょっとした欠点は、段ボールが結構弱く、何度もスマフォを抜き差しすると、微妙に撮影角度が変わってしまうことだが、まあ、それほど大きな問題ではない。それから、見栄えが悪いが、いつものことだw

定期撮影するプログラムは、もちろんそういうアプリは いくつかあったのだが、機能や使い勝手が今一つだったり制限があって不便だったので、Automagic(Android用グラフィカル言語)で即席に作った。指定の間隔でカメラで撮影して、90°回転して保存するという、猫でも作れそうなwとても簡単なものだ。

PCへの画像の自動転送は、以前作ってAQUOSで使っているもの(これもAutomagicで作った)がほとんどそのまま使えた。ただ、撮影したら(何分も待たずに)すぐに転送したかったので、指定のディレクトリにファイルが増えたら(= センサを撮影したら)転送するように、開始条件を追加した。

今はACアダプタで電源を供給しているので、どちらのプログラムも特に省電力の考慮は不要なので、作るのは楽だった(とはいえ、調整には結構手間が掛かった)。

自画自賛だけど、使ってみるとなかなか便利だ。何も考えなくても勝手に撮影されるので、写す手間がないし、うっかりしたり寝ている間のデータが抜けなくていい。欲を言えば、今は手で記録している、測定時の室温、湿度、外気温や天候なども同時に記録(撮影)したいが、まあ、すべての要望は満たせない(それに、今は、それらの情報は臭いには関係ないことが分かった)。あと、これだと、読む位置を決め打ち(固定)にすればOCRで測定値の抽出もできそうだが、まあ、測定が目的でないので多分しないだろう。

あと、このセットを自分に対して斜めに置いておけば、臭いなどが気になった時に測定値が(スマフォに隠れずに)見られるのもいい。

それから、作る前は気付かなかったのだが、これだとセンサとスマフォの距離が近いために画面が大きく写るので、サムネイルでも測定値が読めるから、スプレッドシートへの転記が楽でいい。あと、同じく距離が近いから画像の画素数を減らせるので、ファイルサイズが小さくて済む(1280x960画素、約500KB: 以前は約2500x3300画素で2MB前後になっていた)のもいい。

 

なお、臭いに関しては別途書きたいが、エアコンダクトを開けると駄目なようなので閉じ、換気扇を常に回して換気扇からの逆流を防ぐことを考えた。それで今は机の脇の本棚で定点観測している。ただ、エアコンに溜まった臭いを防ぐのが難しい(臭いを出さないようにすると、寒くなる)・・・

 

PS. 定期撮影機能は鳩の監視にも使えるかも知れない。鳩は短時間しか居ないから撮影間隔を短くするので、画像データが大きくなりそうだが、撮影期間を朝だけとかに限定すれば大丈夫か。まあ、鳩の場合は動体検知して動画を撮影した方が良さそうだ(できるか不明だし、既存のアプリがあればそっちが良さそうだ)。それでも、いわゆるタイムラプス動画はできるし、いろいろ使えそうな気がして来た。いずれにしても、設置・調整が一番面倒だ。 (6/21 8:00)

 

(6/22 16:36 Automagicで定期撮影するプログラムの画像を追加)

  •  0
  •  0

随分長引いていた、スマフォ(AQUOS sense lite)のCPU使用率がアイドル時でも100%のままになり、消費電力率が増える※問題が解決した。

※増えるといっても、良く書かれている「電池が激減」のようなものではなく、「なんか(前より)多いなあ」程度で、アイドル時は2%/h未満だったと思う。

この前も書いたように、最後まで分からなかった問題は、消費電力測定アプリのGsam Battery Monitor(以下、Gsam)だった。これを実行していると(= 一度でも画面を開くと)、CPU使用率が100%になったままで消費電力が増えるのだ。ただ、最初はGsamは使っていなかったので、切っ掛け(最初の問題)は、(良く書かれているように、)Google Play開発者サービスだったと推測する。去年の夏だったか、Android 9に更新した直後に消費電力率が増えた。

それで、どうしてか気になって調べているうちに、その時使っていた消費電力測定アプリ(シンプル バッテリー グラフだったと思う)が電池を食っていることが分かったのでGsamに換えたのだが*、それ以降、いろいろ原因を推測しては試し続けていたが全然直らなかった。なお、Google Play開発者サービスはいつの間にか直ったようだ(以前使っていた機種でもそういうことはあった)※。

*もう一個、My Battery Monitorも使っているが、こちらは問題ない。ただ、グラフが描けないので少し不便だ。

※キャッシュのクリアなどが効いたのかも知れない。ただ、その後でGsamを起動したので、効果が分からなかったのではないか。

今は元の消費電力率に戻って、一安心だ。例えば、昨夜から今朝に掛けてのアイドル時は0.32%/hで、「これだよこれ!」って感じだ。

 

(5/20 0:51 わずかに加筆)

  •  1
  •  0

GMBのトラックIDが変わる問題に対処しオーディオの配置が一段落し、また、先週 鳩よけを改良したら効果があったようで※、TODO・懸案が減って来たと安心していたら、またもや謎・懸案が増えた。

  • オーディオ: イコライザ設定を少し変えただけで耳閉感が再発・・・
  • ブログサーバーが突然落ちた・・・
  • スマフォの電池消費率が増えて全然直らなかった原因は、電池消費率測定アプリだった??

イコライザは、設置や設定を確定しようと特性を再度測定して確認していたら、それまで見落としていた左の156Hzの山に気付い(てしまっ)た。(参考: グラフの水色線) それで、その山を下げるためにフィルタ1個の設定を本当にほんの少し変えた(中心周波数を5Hz下げ、幅を0.02広げ、減衰量を1dB増やした)だけで、途端に耳閉感が起こるようになってしまった。時間をおいて何度か試したが、その設定にすると30分くらいで起こる。

特性は良くなったのに駄目な理由が全く分からない。変更したことで歪や位相ずれが増えたのかと思って調べてみたが、顕著な違いは見られなかった。もちろん、超低域や高域にも変化はない*。以前から気付いていた、イコライザの種類や設定に関係するものなのだろうが、今回はその経験則から外れていないし、こんなに微妙だとは思わなかった。全くお手上げなので、直す前の設定にしている。

*今、イコライザ変更後の特性(下に載せる)を確認したら、左だけ超低域(33Hz辺り)が7dBくらい増えていた。その時は、近所の工事やエアコンの騒音がたまたま入ったのだと思って居たが、これが原因なのかも知れない。全く関係ないフィルタの変更の影響が出たのだろうか? パワーがある時に確かめたい。もしかしたら、イコライザの経験則は こういうことに関連しているのだろうか。

イコライザ変更前後の特性: L: 水色(前), 紫(後); R: ピンク(前), オレンジ(後); LR: 黄緑(前), ベージュ(後)

ブログサーバーは、今朝、PCからカレンダーの予定を変更した時に落ちた感じだ。カーネルがパニック(例えでなく、こういう用語がある。要するに、「想定外の問題が起こったので落ちまーす」みたいなもの)になったようだが、パニックのためログには何も記録されておらず、仮想コンソールに出ていた断末魔の叫び(パニックのメッセージ)しかないので、全く原因不明だ。

先日のメンテ(物理サーバの移動)で仮想HWが変わったことが関係している気はするが、変わったといってもx86(64bit)機に変わりはなく、特にハードに依存させていないので、まともに動かないのがおかしい。カーネルが随分古いので、更新すれば直るかかも知れない。ただ、それなら、もう少しあとを予定していたが、OSのバージョンを上げたい。が、それはそれでかなり神経を遣うので、頻発するなら、とりあえずはカーネルかな。

スマフォの電池消費率は、去年の夏頃に気付いてずっーと試行錯誤して来たものの、どうにもならなかったのだが、先日、再起動後に現象が起こらないのに気付き、もしかして、電池消費率を測るために入れていたアプリ(GSam Battery Monitor, 以下GSam)を起動しなければ(正確には、開かなければ)、問題(電池消費率が増え、CPU使用率が100%のままになる)が起こらないのかと思って、数日間GSamを開かずに試しているが、今のところは再現していない。アイドル時の電池消費率は、以前のように0.5%/h以下(例: 昨夜から今朝の値: 0.35%/h)になっていて、満足だ。

最初に問題に気付いた時はGSamは入れていなかったので、これだけが原因ではなく、きっと、(当時の)Google Play開発者サービスが悪かったのだと思うが、実はGSamも極悪だったようだ。もしそうなら、こいつのために、ずっと試行錯誤させられて来たので損害賠償請求したいくらいだw まあ、これで直れば、懸案も謎も減るからいい。それにしても、GSamに限らず、電池消費率測定アプリは電池を食うことが多く、ミイラ取りがミイラになるようなもので、しっかりしろと言いたい。今使っているMy Battery Monitorは大丈夫そうだ。ただ、グラフが出ないのでちょっと不便ではある。

 

※鳩よけについては書こうと思っていたが、別件があって面倒だった。簡単に書くと、その前に改良した時に室外機の上用のワイヤーに隙間ができていて(下から見ても分からない)、先月の終わり頃から鳩が入り込むようになった。それで、ワイヤーを均等にし(デジカメで撮影して確認した)、余っていたステンレスワイヤーをそれらのワイヤーに緩く巻いて隙間を塞いだら、今のところは大丈夫だ。ただ、どうも、鳩はこっちが何かしてから少し経ってから来るようなので、油断はできない。

  •  0
  •  0

9:30頃出た。行きはのどかで、のんびり気持ち良く走れた。車内などは暑くて春の感じだった。そういえば、帰宅してから目が痒いので、花粉が飛び始めたのかも知れない。

道の駅きたかわべ には2時間くらいで着いた。Google地図の予想はいつも速目で、カーナビの予想時間はもっと長いので、経路を設定したあとで慌てた(実際、待ち合わせに遅れた)。久し振りに生姜焼き定食を食べた(学生時代を思い出す)。おいしかったけど、ちょっとぬるかったのが残念だった。他にも、カツカレーとか蕎麦とかいろいろ食べたいものがあったので、次に行ったら試したい。

いつものように、なおきさんと話が弾んだ。それにしても、「会食」というと堅苦しいし、「談笑」と書くと政治家みたいだし、「遊んだ」というのもおかしいので、なかなかいい表現が浮かばない。もしかして「男子会」??www

帰路はなぜか遅い車が多かった。行きと違ってちょっとイライラしたので横に逸れたら、別の車も遅く、それが居なくなったあとでスピードを出したせいで本来とは逆に曲がってしまったりして、却って遠回りになってしまったw (地図の下の方の凹部)

実は、おそらくそういう車のスピードは行きと同じくらいだったのだろうが、疲れがイライラを増したのだろう。他には、走りのペースやタイミングが微妙に僕(あるいは「普通」の車)とずれていたのかも知れない。とんでもなく遅い訳ではなかったから悪くはないけど、意図せず煽られたり事故の原因になったりするかも知れないので、周囲を良く見て運転した方がいいように思う。とはいえ、自分の安全な範囲を超えたスピードを出せというのも無茶な話だ・・・

反時計周り、139km、約8時間。

以下、今日の細かい話題いろいろ。

iVideoのモバイルルーターiV501の電池残量の謎

先日7.5時間くらい外に持ち出して帰宅したらスマフォのWi-Fiが切れていたので、電池が切れたのかと思った。ただ、iV501の電池残量は、本体の電池ランプはどういう表示になるか不明だし、webも4種類程度のアイコンだけで%では出ないので、確かめようがない。それで、今日、定期的にランプとwebのアイコンの変化を見ていたのだが、約6.5時間経過してもランプに変化はなく(電源ボタンを押すと点いて、しばらく点灯したまま)、アイコンも段階3(残量75%前後と推定)から変化がなかった。帰宅後(約8時間経過)にweb APIで残量を見たが、アイコンと同じ3だった。

実際、充電も速く、2時間以内に満充電になったので、それほど電池は減っていなかったと思われる(まあ、すべての情報がおかしい可能性もなきにしもあらずではあるが・・・)。

なので、通信状態にもよるのだろうが、8時間くらいは余裕で持つのだろう。先日Wi-Fiが切れたのは、頻繁に通信して電池がなくなったか、何かのトラブルでたまたまWi-Fiが切れたと推測する。

以上は全部推測ではあるが、昨日までは、次のレンタルでは正確な残量が分かる501HWに換えてみようかと思っていたが、そっちは2倍くらいの重さだし、結局、どちらの連続使用可能時間も8時間程度なので、長時間外に居たら外部電池が要ることに代わりはないし、iV501の電池の持ちは意外にいいので、このまま使い続けるのも悪くないと思っている。

それから、偶然の一致だとは思うが、満充電になったあとしばらく電波強度が-100dBmくらいに下がるという謎もある。いろいろバグのようなものがあるのかも知れない。

なかなか優秀なGPSロガーアプリ: Geo-Log - GPS Logger & Notebook

スマフォ(AQUOS sense lite)の電池消費率が大きくなる問題はまだ原因が分からないのだが、もしかしたら、GPSロガーアプリ(GPS Logger)が古い(新しいAndroidの前に出た版を最後に、Google Playからなくなっている)ためかと思い、近頃は別のアプリ(Geo-Log)を試している※。それがなかなか優秀で、3分間隔で記録するようにしたところ、今日8時間使っても電池は12%(他のアプリも込み)しか減っておらず、電池消費率は約1.5%/hと随分少なかった。もちろん、記録結果は上の図のように全く問題ない(記録間隔が比較的長いので、徒歩の場合には経路がショートカットになることはあるが、僕には問題ない。もちろん間隔を短くすることもできるし、移動距離での記録も設定可能だ)。

※Geo-Logは有料なのだが、なぜか、Googleからアプリ購入などに使えるクーポン(500円だったか)が来ていたので、それで安く買えた。なお、無料版(LD-Log FREE)もある。

  • 今日ガソリンを入れたら、燃費は13.4km/lだった。前回は14km/lだったので、少し落ちた。引越し関係や通院などで近場が多かったせいか。
  • 先日オイルとフィルタを交換した。オイル会員なのと他の店を探すのが面倒だったので、先日切る決心をしたいつものディーラーを許してしまったw そこは事務を除いては問題ないから、まあ妥当だろう。なぜか、担当のおじさんが居なくてちょっと寂しかったw
  • ついでに先日の不調を調べてもらったが、問題は記録されていないとのことだった。バッテリーは、寿命まであと少しあるようで(「駄目」まで1目盛り残っていた)、「この冬を越せば、もう少し使えるでしょう」とのことだった。いつもそうだが、なんとも商売気のない店で好感が持てる。
  • 累計走行距離は約56000kmになった。去年の今頃から3000kmも増えていない。

引越しとスーパー

引越したというのに、旧居の時に良く行っていたスーパーに良く行っている。そこは僕にはいろいろ(例: 価格、品揃え、味、雰囲気)「丁度いい」(= 最高ではない)のを再発見したのである。僕だけでなく、他の人もそういう良さを評価して行くために、決して安くはないその店が潰れないのかも知れない。今度は徒歩では辛いので、車で行っている。まあ、重いもの(例: ホッピーの瓶)が持てるので、それも悪くない。今日もドライブ帰りに寄った。

ひらがなの氾濫を憂う。

いつからか、(今日の目的地のような)固有名詞のひらがな書きが偏重されるようになったが、文章に書いた時に読みにくい。僕としては、本当にひらがなの効果を狙う場合やネタ以外では、ひらがなだけで表記するのは止めた方がいいと思う。例えば、題の「道の駅きたかわべ へ−」だって、普通に空白を入れずに「道の駅きたかわべへ−」ではどこで切るのか即座に分からず、見た目も何かおかしいではないか。

(稿を別にするのが面倒で、少しずついろいろな話題を盛り込んだので、カテゴリが多くなった。)

  •  0
  •  0

注意 3か月くらいiVideoを使って何度かトラブルがあったが、SIM・ルーターの管理や障害対応が全く適切でないと感じた。更に、通信障害が起こっても、通信に関してはキャリア任せなのでトラブルシューティングができず、機材(SIM・ルーター)の交換しかできず、それも「様子見しろ」と言って渋るし、交換されるにしても届くのが数日後で、その間は障害はそのままなので、iVideoをメインに使うのはリスクが高過ぎることが分かった。その経験から、iVideoを重要な用途(例: 光回線の代わり)に使うことは全く推奨しない。

具体例については、「[悲報] 完全無線は時期尚早でござった。」を参照のこと。(2020/3/25 6:34)


信じられないことに、1/10に届いてから今のところ何も問題ない。正確には問題はあるが、iVideoでなく こっちの問題だw

今までの通信データ量は測定する箇所やソフトによって異なるが、概ね5-8GBである。これなら、SIMの上限の900GB/月にはまず達しないだろう。良くある通信量による速度制限は3日で10GBなので(そういう制限があるとは書いてなかった)、それには掛かっていないから、隠れた制限の有無はまだ分からないが、少なくとも、説明にあった、他の人に迷惑を掛けるほどは使っていないようだ。参考までに、PCでの通信データ量と通信速度のグラフを載せる。

Spotifyを聴いている時は ほぼ一定の傾きでデータ量が増加している感じだ。たまにデータ量が急増する(速度のグラフが尖っている時)のはオンラインストレージに自動バックアップしているか、サーバをローカルにバックアップしている時である。なお、時々データ量が減るのは測定プログラムのバグである(テザリングのoff/onがうまく処理できていない)。

たまに通信速度を測ってみるが、安定の10Mbps程度だw 今日一回だけ、PCからのアクセスがすごく遅かったことがあったが、間違ってテザリングを断続させたせいかも知れない。また、動画はほとんど観ないが、特に問題なさそうだ。それから、突然通信が途切れることもない(ちょっと前に、PCのネットワークインタフェースが一瞬落ちて、すぐに繋がるということがあったが、頻発はしていないし、自動的に回復するから大きな問題はなさそうだ)。

そういう訳で、今までのところ、iVideoのSIMは、僕の日常的な使用に関しては何も問題がない。まあ、無線通信自体は大手キャリアのものだから当たり前なのかも知れないが、ここまで問題がないのには感心する。あと、ルータ代わりに使っている古いスマフォ(Nexus 4)も、過酷な使用に良く耐えているものだw

今までに見付かった問題を以下に挙げる。いずれも、iVideoには関係ないことである。

  • LTE通信用スマフォ(Nexus)の電池が切れる可能性
    • USBテザリングしているデスクトップPCをスリープさせると、USBに電源電圧は掛かっていてテザリングは切れないものの、なぜかNexusが充電しなくなってしまう。
    • Wi-Fiテザリングをしているせいか減る速度は速く(約12%/hだった)、約8時間で切れる計算だ。 → (1/13 3:14) その後、アプリを減らしてみたら約8%/hになって、約12時間まで伸びた。これくらいなら、切れる心配は少なそうだ。
    • いろいろ試したが対処できなかったので、何らかの理由でLTEルータを買わない時に改めて考えることにした。
    • 仮に電池が切れても、スリープ中なのでデスクトップPCは使っていないので、Wi-Fiテザリングをしているスマフォ(AQUOS sense lite)がモバイル通信になる程度で大きな問題はない。
  • スマフォ(AQUOS)からPCへのLAN経由の画像転送ができない。
    • (前回書いたもの) 対処は可能だが面倒なので、これも何らかの理由でLTEルータを買わない時に考えることにした。
  • 耳閉感や耳鳴りが再発
    • (これも前回書いたもの) どうも、中継用に使っていたPC(Vision-HT)のファンではなく、疲れや寝不足によるようだ。なかなか厄介だ。
  • 突然、PC(Linux)から通信ができなくなった。 (1/16 5:11追記)
    • Googleなどへのpingも通らない。一旦、LANを切断しても変わらなかった。
    • 「いよいよ速度制限が掛かってしまったか・・・」と思ったが、スマフォ(AQUOS)からは問題なかった。
      • → LTE接続用スマフォ(Nexus)のUSBテザリングをoff/onしたら直った。
      • やっぱり、スマフォをモバイルルータにするのは無理があるようで、ちゃんと使うならルータが必要だ。ちなみに、現時点でNexusでのモバイルの通信データ量は約20GBになっていた。

ルータの候補を探したが、余り高いものは買いたくないので、以下の2つしかない。

  • au Speed Wi-Fi HOME WHITE L01s HWS32SWA: 約8千円-1.2万円
  • NEC Aterm PA-HT100LN: 約1.2万円

通信速度と消費電力と小ささでNECが良さそうだ。速度はHWS32SWAのカタログ値は大きいが、WiMAXも合わせてCA(carrier aggregation)した場合なので、実際にはそれほど出ないと思う。そもそも、このSIMにすごい速さを期待するのは、八百屋で魚を求めるようなものだw あと、本当にあるとは思えないのだが、HWS32SWAのメーカーH社はスパイウェアが気になる。

モバイルルータも考えたが、Ethernetがないので不便だ。まあ、PCにWi-Fiの子機を付ければいいのだが、Linuxでちゃんと動く子機がなかなか少ないようで、失敗するのが嫌なのだ。それに、モバイルルータは内蔵電池の消耗が気になるので避けたい。

ルータを検討していて気付いてしまったのだが、固定ルータにすると、前回書いたようには外出時に簡単に持っていけない問題が発覚した。スマフォをルータにするのは安定性や耐久性(特に電池)や管理・保守の点で難点があるので、通常は固定ルータを使い、外に持ち出す時にはSIMを抜いてスマフォ(Nexus)に挿すのが良さそうだ。が、SIMのサイズが違うこともあるので、面倒でやらなそうだな・・・ 早くも夢は破れたw

てな訳で、来週末辺りまで問題がなければ、OCNを解約してそのまま光回線は終了にして、LTEルータを注文したい。今度は、届いてから「あっ!」ってことがないようにしたいwww

  •  0
  •  1

実家で聴いたスマフォ(AQUOS sense lite)の音が大変悪くて、以前設定したイコライザを使ったり、再度耳で調整したのだが、どうも今ひとつだった。それで、もちろんスマフォに多くは求めないながらも、興味が湧いたので、どういう周波数特性なのか測り、その結果でイコライザを調整してみようと思った。

実は、そもそもは年末に修理から返って来たオーディオインタフェース(Focusrite Scarlett Solo)の動作確認に、PC(オーディオ)のスピーカーの特性を測定しようと思っていたのだが、スマフォの特性が気になったので、そっちをすることにした。なお、スピーカーの特性も測定したが、問題なかった。

手で持って聴く場合を想定して、(いつものように段ボールで)簡単なホルダーを作って測定してみた。すると、耳は全然あてにならないことが改めて分かって、毎度のことながら愕然としたw

なお、スマフォの特性を測定するには、PCの出すテスト信号をスマフォから出す必要があるが、PCのスピーカーと違って普通には出力できない。僕のスマフォでは(ネットのテザリングとは違って)AndroidがUSBのサウンドデバイスになることはなさそうなので、マイク端子に音を入れてスピーカーから出すアプリを使おうかと思って探したのだが、どうも直接的でなくて気に入らなかったので更に検索したら、すごく丁度いい方法があって助かった(→ 参照)。

それは、LinuxのPulseAudio(サウンド系)が出す音をネットでスマフォに送ってスピーカーから出すという、最も直接的な方法である。PulseAudioはなかなか高機能で、音をネットに出すこともできるようだ(JACK Audioでもできるようだが、やったことがないし、やるのは怖いし面倒だw)。スマフォ側は、それを受けるアプリ(Simple Protocol Player)をインストールして動かしたら、無事に音が出た。

ただし、使うイコライザ(例: Equalizer Pie(後述))によってはSimple Protocol Playerの音に効かないので、その時にはSoundWire (free)というのを使った。どうしてか、PulseAudioと違ってかなり(数秒)遅延があるのだが、特性を測定するソフト(REW)でトリガー音で測定開始するようにしたら、うまく測定できた。

SoundWireと同様の方法にVLCを使うのもあったが、やっぱり遅延が大きく、トリガー音で測定開始できることに気付く前だったので諦めた(トリガー音を使うなら、SoundWireよりも手軽でいいと思う)。エンコード用バッファの関係で遅延するのだろうか?

(1/4 4:50) スマフォの通信データ量をチェックして驚いたのだが、PulseAudioの転送はデータ量がとんでもない(測定のために1-数時間使っていただけで、1GB近くに達していた)ので、間違ってモバイル回線を使わないように注意が必要だ。圧縮していないせいはあるにしても、随分多い。また、SoundWireもPulseAudioの1/3程度と多かった。

耳で調整した時には、2kHzや4kHz辺りに山があるように感じた(その辺りを下げたら、感じが良くなった気がしたため)のだが、実際には山は7.5kHz付近にあった。。。

特性を見たら、2kHzや4kHz辺りなんて平らもいいところで、僕の耳は節穴かと言いたいが、聴覚特性に関係しているのかも知れない。等ラウドネス曲線では500Hz-4kHz辺り(特に4kHz)の感度がいいから大きく聞こえることや、錯覚のようなものがあるのかも知れない。

あと、うすうす感じては居たが、このスマフォは中低音が全く出ず、700Hz以下は期待できない。ここまではっきり出ないと、その割り切りに却って感心するw (某●ニー社とかだと、「何とかベース」とか言って、重低音を無理やりして出して宣伝しそうじゃないですか) 逆に、超高域(15kHz辺りまでは余裕だし、20kHz辺りまでも何とか)が出ているのが意外だし不思議だ。

それで、中低域は諦めるとして、イコライザアプリ(Equalizer Pro)で補正してみた。まあまあ山が下がったのだが、Equalizer Proは7.5kHz付近の調整ができないので、今ひとつ納得できなかった。それで他のイコライザを探したら、7.5kHzの近くの6.3kHzや10kHzが調整できる、Equalizer Pieというのが見付かって試してみたら、かなりいい感じに補正できた

ただ、どういう訳か、Equalizer Pieはイコライジングできるアプリが少ないようで、Spotifyには使えるのだが、YouTubeアプリやOperaには使えない。まあ、Spotifyに使えれば問題ないのだが、なんか気に入らないので、Equalizer Proを再調整してみたら、許せるくらいになった

最後に、実際にYouTubeにアップロードされていた曲(Sugar 「ウエディング・ベル」(1981))の冒頭に対して適用した例を示す(あらかじめ済みません(どうでもいいけど"Apology in advance."ってあるのだろうか?)。フリー音源を見付けるのが面倒だったので、好きな曲を使いました。権利者の方からクレームを頂いたら取り下げて入れ替えます)。

補正によって、高域のギラギラした感じ・うるささが大分改善された(でも、音量の違いやオーディオのスピーカーで聴くせいか、今聴くと余りうるさくない?)。ただ、オーディオのスピーカーでは中低域がちゃんと出ているので、そっちを聴くと「ああ、やっぱりこれだよなー」ってなってしまう。

てな訳で、このくらいの測定・調整なら、手軽にできて楽しいものだw

書いたあとで思ったが、楽器の音(調律ではない)は耳で作るのだと思うが(これはこれで、すごくおもしろそうだ!)、オーディオ機器・装置は耳では無理だろう。もちろん、後者は、あくまでも無色透明な音、平坦な特性を目指す僕の指向での話である。

 

PS. 測定中にスマフォがホルダから落ちてしまって、コネクタから着地して割れちゃったかなとか慌てたが、運良く無傷だった。

  •  0
  •  0

「一体何なんだ」と言いたいが、前回の投稿の後、昨日から今日に掛けて更にトラブルが重なって起こった。

  • スマフォ(AQUOS sense lite)のアイドル時の消費電力率が増える現象が再発した。: 原因不明
  • 自宅とサーバのオンラインバックアップのエラー: 原因不明(「たまに起こる」としか言えない)・・・
  • サーバからの上記のエラーやその他の通知が、Gmailの迷惑メール判定で何通か届いていなかった。: 近頃、誤判定が増えた感じ。

スマフォの消費電力率の問題は今までにも起こっていて、何度も試行錯誤して直ったと思ったのに解決していなくてがっかりした。増えるといっても、長時間アイドル時に平均0.6%/h以下のものが1%/h近くになる程度なのだが、アプリ(My battery monitorなど)で見ると、アイドル状態なのにアクティブ率が100%のままで(= スリープしていない)下がらず、どうも気分が悪い。どうしても直らないようなら、定期的に再起動させようかと思う。が、再起動も電力を食うのでどっちが得だろうか?

オンラインバックアップの問題も今までにも何度か起こっていて、主な直接的な原因は、たまにバックアップソフト(duplicacy)の内部状態とストレージ(Backblaze B2)の状態が合わなくなることのようだ。起こる都度、暫定対処や様子見(再実行で直ることがある)をして来た。それで大きな問題はなさそうなのだが、本当に問題ないかが分からないのが怖い。

本当の原因はネットワークかバックアップソフト(自作+duplicacy)かストレージのどれかなのだろうが、どれかは不明だ。おそらくduplicacy(通信エラーに対するロバスト性が足りない)だとは思うが、サポート依頼を出すにも説明が困難ではある(でも、出せばスパっと分かってくれることもある)。エラーはサーバのバックアップで起こることが多いので、とりあえず、ネットワークへの送信速度を下げてみた。

Gmailの問題は初めて気付いた。今までにも迷惑判定で落とされたものがあるかも知れないが、仕方ない(「なんかおかしい」ということはあった)。たちが悪いのは、Gmailの迷惑メールはThunderbirdの迷惑メールフォルダには出ないことが多くて(出ることもある)気付かないことだ。Googleの商売のせいか、G Suite(有料版)でないと迷惑メール判定の強度調整(そういうのがあればの話)ができないようなので、落とすと困る差出人からのは迷惑メールにしないフィルタを登録してその場しのぎをし、更に、サーバからの通知メールはGmailに送らないようにした。

根本的な対処には、可能な限りGmailを使わない方がいいのだろうが、(アカウントの生成や破棄が)手軽で容量はふんだんだし、Androidには必須なので、根絶はなかなか難しい。。。 とりあえずは、重要な用途には使わない方が良さそうだw

あんなの飾りです。普通の人にはそれが分からんのですよ??

 

題は見直し中にSpotifyで掛かったより。(9:52)

PS. 更に、ついさっきはUbuntuの更新リポジトリの国内サーバにも接続できなかった。一時的なものだろうが、随分重なるものだ。 (8:42)

  •  0
  •  0

毎月の血圧での通院時に、医師が過去の血圧を見る可能性があるが、毎回は見ないようで、(使われない可能性が高いのに)渡された紙のノートに転記するのは面倒だから、スプレッドシートをスマフォにコピーしておいて、言われたら見せようと思った。そして、LibreOfficeのファイルをスマフォにコピーしてクリックすれば楽勝で開けると思っていたのだが、全然そんなことはなかった。

信じられないことに、Androidにまともなオフィスビューアがない。入っていた(昔自分で入れたのかも)のは すぐに有料版に誘導する鬱陶しいもので、全然使いものにならなかった。他のも同様だったし、多くはシートが重くて開けなかった(1年分とかで数値が多いうえに平均処理とかいろいろやっているせいだろう。スプレッドシートはセルごとに式が入れられるので、最適化しないと重くなりそうだ)。グラフだってまともに出るものはなかった。

OpenOfficeのAndroid版はさすがに他よりはマシだったが、ほとんど単に移植しただけのもので、やっぱり実用にはならなかった。例えば、なぜか書式がおかしくなって、肝心の血圧が"###"と出たりした(3桁はちゃんと出るのに、2桁の時だけおかしいから謎だ。LibreOfficeとOpenOfficeの違い?)。

結局、グラフは画像(PNG)で保存、数値はPDFでエクスポート(どっかの省も数千ページとかやってたなw)という、もし誰かに見られたら情弱の烙印wを押されてしまいかねない、大変原始的な方法で切り抜けることになった。

Googleは、Androidでも何でも、「(僕らの誇る)Google docsを使え!」というスタンスなのだろうか。ただ、そこにインポートしたってまともに表示できなかった気がする(確か、グラフが駄目だった)が、最初からデータを入れて使えってことなのか・・・

まあ、ずっと行くだろうから、しばらく試行錯誤してみよう。

(10/21 11:45) 結局、今日は血圧を聞かれもしなかったw 休み明け(かつ、知らなかったが明日は祝日、)で混んでいたせいか、問題があれば言えってスタンスか。まあ、僕は自分で管理するつもりだし、何かあれば言うからいいけど。が、何か損した気がするので、とりあえず、次回は月曜などは避けようと思う。ただ、別件だが、今日はインフルエンザの予防接種もしたのだが、まさに一瞬のうちに終わった(「は?」と思ったw)。だから、腕はいいのだろう。

  •  0
  •  0

(技術的な詳細を書くのは大変だし、セキュリティ面の心配もあるので簡略化した)

僕はPC(Linux)とスマフォ(Android)でカレンダーを共有している(Googleなどは使わず、自分のサーバで実現している)のだが、ずっと、些細だけどムカつく「アラーム重複問題」に悩まされて来た。その現象を以下に書く。

  1. カレンダーの予定の通知時刻になると、LinuxのLightningとAndroidのカレンダーアプリ(DigiCal)から、同時または順次アラームが出る(省電力機能のためか、Androidは少し遅れることが多い)。
  2. 部屋に居る場合、Lightningのアラームを先に停め、遅れて出たAndroidのを停める。
  3. これで終わりならいいのだが、1分くらいすると、Androidのアラームが再び出る。 → イラっとする。

まったく鬱陶しいこの問題を、なかなか解決出来ずに居た。

まあ、部屋に居なければ問題は起こらないし、Androidのアラームを無視して停めなければいいのだが、今は勤めていないので部屋に居ることが多いし、性格上、アラームを停めないとLEDが点滅し続ける※のを見過ごす訳にはいかないw

※カレンダーアプリによっては、通知時刻からある程度時間が経つとアラームやLEDが自動で(勝手に)消えるものもあるが、それだと予定に気付かずに過ごしてしまう可能性があるので、消えないものを選んで使っている。

今まで何度も試したり調べたりしたのだが、その原因が昨日ようやく分かった。一言で書けば、LightningとAndroidのカレンダーアプリ・同期プログラムの相性だ。そして、どのプログラムも他に換えることができない。Lightningは僕にしてみれば最低レベルで使えるLinuxのカレンダーアプリで、それよりまともなものを探したがない。一方、Androidのアプリも同期プログラムも他にいいものがない。それでもいろいろ試したのだが、使い勝手、機能、性能、消費電力や通信データ量などが「許せる」もので問題が解決するものはなかった。

そういう訳で、昨日は随分試行錯誤したものの、結局、「解決不能」という結論になってしまった。

以下に、昨日の調査の結果推定した問題の起こる流れと、(その流れを前提として)問題を解決するために試したことを書く。

問題の起こる流れ

  1. 予定の通知の時刻になる。
  2. Lightningがアラームを出す。
  3. 僕がアラームを停める。
  4. Lightningは、なぜか、その予定をサーバに更新する(書き込む)。: おそらく、「アラームを停めた」という状態を保存するためだろう。
  5. DigiCalがアラームを出す。
  6. 僕がアラームを停める。
  7. DigiCalとカレンダー同期プログラムは、なぜか、サーバに更新を問い合わせる。: おそらく、省電力機能のために同期間隔が設定より長くなっていて、「起きたついでに」するのだろう。
  8. カレンダー同期プログラムは、サーバにLightningが更新した予定(アラームを停めたもの)があるので、それを取得する。
  9. 更新された予定がDigiCalに伝わり、予定の通知の時刻を少し過ぎているだけなので、DigiCalは(再度)アラームを出す。: 通知の時刻を大幅に過ぎている場合は出ないはず。

試したこと

  • Lightningが更新する処理に割り込んで、更新したように見せかけて、実は(サーバ内の情報を)更新しないようにした。 → Lightningは、更新後、御丁寧にも再度その予定を取得して確認し、更新されていないことに気付くのか(パニックになるのか)、アラームを停めてもダイアログが消えない。: 失敗
  • 同じく、Lightningが更新する処理に割り込んで、サーバ内の情報を更新する時に、Lightningが使いそうな部分だけ変更する(残りは元のままにする)ようにしてみた。 → Androidのカレンダー同期プログラムは、更新内容に関わらず書き込まれただけで変更されたとみなすようで、やっぱり、DigiCalはアラームを出す。: 失敗
  • 同じく、中身を何も変更せずに更新しても、上記の理由で駄目だった。: 失敗

LightningもDigiCalとカレンダー同期プログラムも、押し付けがましい余計なお世話をしてくれるので手こずっている(しかも、そういうのを解除できる設定などない)。もっとテキトーでいいのだがw

他には、Lightningがサーバへの書き込み後に行なう、本当に書き込まれたかの確認の処理に割り込んで、アラーム停止後はLightningが期待するように見せ掛けるようにし※、実際にはサーバには書き込まないようにすることが考えられるが、結局、カレンダーサーバの処理の一部を作るようなもので、大変だし、いつまで動くか分からない(いずれかの要素の動作が変わったら、駄目になる可能性が高い)など馬鹿らしいので、止めた。あとは、サーバのプログラムを改造することも考えられるが、上と同様の理由で止めた。

※今朝はこの処理の準備として、Lightningとサーバ間の通信パケットを見て、Lightningはアラーム停止後にどんな処理をしている(どんな情報を取得している)のか詳しく調べようかとも思ったのだが、勝算はないし面倒なので止めた。

まあ、気にしないのが一番なんだろうな。それができれば苦労しないんだがw

 

(10/7 13:20 わずかに修正)

  •  2
  •  1

辞めた会社の面接の時、仕事でSkypeを使うとの話だったので、てっきり、ビデオ通話でスマフォのフロントカメラを使うのだろうと思ってカバーを注文した(最初はPCのwebカメラも要るかと思ったが、とりあえずスマフォで済ませようとした。実はそれが大正解だったw)。それまでは、セキュリティ向上(例: 盗撮アプリ対策)のためにカメラの前に紙のシールを貼って、たまに撮影する時だけ剥がしていたのだが、仕事で使うようになって頻繁に剥がしていたら駄目になってしまうと思ったからだ。

カバーを選ぶ時、なるべく小さく(特に高さ)薄い物を探した。というのは、僕のスマフォは、シャープの機能(Clip Now)により、画面上縁を水平になぞると画面キャプチャできるのだが、カバーが大きいと(指が離れたとみなされて)できなくなってしまうからだ。最初は手軽に100円ショップを探したのだが、なぜかなかった。余りリスクが知られていないために、そういう需要はないのか。それで、Amazonで「FIRST2SAVVV 3 X ウェブカメラカバー」という3枚組のにした。高さは1cm弱、厚さは0.7mm程度だ(今気付いたが、高さを7mmと勘違いして、それなら他より小さいからキャプチャに干渉しないかもと思って注文したのかも知れない。ボケてるなあ・・・)。250円くらいだった。中国からなので、届くのは遅かった。

その後、仕事の最初の日に分かったのだが、Skypeは主に音声だけ※でするそうで、届く前にカバーはほぼ不要なことが分かってしまった・・・

※要は、電話代わりなのだろう。あと、電話と違って数人で会議ができるのもいいのだろう。前の前の会社で(会社の電話が支給されていなかったので、)みんなが電話代わりに使っていた、iPhoneのFaceTimeオーディオと同様だ。当時は、Skypeはビデオだけで(SkypeOutでない)音声通話ができるなんて知らなかったので、自分のスマフォをAndroidに換えた時に、FaceTimeの代わりにGoogle Duoが使えることを調べて連絡したのだが、田舎だけあってか、誰も試しすらせず普通の電話をして来たw その時にSkypeを知っていれば、もう少し手軽に(特定ベンダーに依存しないという意味)使えたかも知れないが、SkypeはMSのアカウントが要る(しかも、気軽に退会できない)ので、やっぱりDuoと同じ(いや、それ以下)だっただろう。

更にタイミングのいいことに、退職の連絡をした日に届いたw もう必要ではないけど一応試してみたのだが、やっぱり画面キャプチャはできなかった(しかも、指をスライドするとカバーが動いてしまう)ので、諦めて仕舞った。ただ、紙のシールを貼り直したら、見た目が悪いし駄目になった時に作り直すのが面倒なので、プラスティック製の不透明なシール(紙製のものが良くある丸い物)にしようと思ったが、近くのスーパーなどにはなく、あとで100円ショップを探そうと思っていた。

ところが! 昨夜、何の気なしにスマフォの「システムアップデート」(「OS更新」とは一言も書いてなかった)をしたら、期待も覚悟もwしていなかったのにAndorid 9に更新され、それとともにClip Nowが改良されて、左右縁の縦スライドでもキャプチャできるようになった。それで、諦めていたカバーを再度試すことにした。

画面キャプチャは依然として横スライドでは駄目だが、縦ならちゃんとできた。当然ながら、カバーを閉じればカメラには何も写らず開ければカメラには干渉せず、撮影には問題ない。難点は、安いだけあって脆弱なことだ。カバーにはノッチのような固定機能がないので不意に動きそうだし、粘着力も弱そうなのですぐに剥がれそうだ。あと、取り付ける時に可動部が外れたので、そういうこともあるかも知れない。

まあ、それでも、諦めていたものが僥倖で使えるようになりw、見た目も悪くないので、しばらく試してみたい。

別件の確認のために1時間程度散歩したが、その程度ならカバーは動かないことが分かった。 (10:42)

 

PS. ところで、この製品の呼び方は、(「スマフォ」=「スマホ」として)「スマフォカメラカバー」なのか、「スマフォカメラ用カバー」なのか、「スマフォ用カメラカバー」なのか、「スマフォ用カメラ用カバー」なのか、考えると夜も眠れない。どうも、名前からして数奇な運命のようだw (15:22)

PS2. 上の問題を少し真面目に考えてみると、名前を構成する可能性のあるいずれかの単語が広く知られていれば、それを区切らずに使うのが良さそうだ。そこで、「スマフォカメラ」や「カメラカバー」(本当は「レンズカバー」が良さそうではある)は広く知られているだろうかを考える。後者は良さそうだが、前者は今ひとつ不自然な感じで、「スマフォのカメラ」と呼ばれていそうだから、「カメラカバー」を単語として使うのが良さそうだ。とすると、「スマフォ用カメラカバー」が適切な気がする。実際、パッケージには"Webcam cover"とあって、「カメラカバー」に相当する。

よって、この人の名前は、「スマフォ用カメラカバー」と思われる。

あ、題が駄目になっちゃった・・・w (15:28)

  •  0
  •  1