Archive for the ‘Linux’ Category

先日、画像管理アプリをXnViewMPに変えた。digiKam5(以下、digiKam)は重い(起動が遅いことがある、メモリを食う(メモリリーク)、いろいろな処理(特にDB関係)が重い)のと、UIの使い勝手が微妙にイライラするうえに変更できないからだ。移行先のXnViewMPは、以前試した時に比べて大分良くなったので、移行しても問題ないと考えた。とはいえ、いくつか問題があったので対処したら(→ 投稿1, 投稿2)かなり良くなったのだが、digiKamとコメント・カテゴリの格納場所(タグ)に違いがあってちょっと不便なので、その対応をした。なかなか手間が掛かったので書く。

そもそもの問題は、digiKamとXnViewMPがコメントとカテゴリを格納・取得するタグが違うため、digiKamで付けたコメントやカテゴリがそのままではXnViewMPでは表示・書き込みできないことだ。それらの違いを以下に示す。なお、digiKamのタグは、それ以前にWindowsで使っていたACDSeeが使用する(ACDSeeで設定したか、digiKamに移行する時に設定したか)タグも含んでいる可能性が高い。

コメントのタグ

  • digiKam: UserComment, Notes, Caption-Abstract, Descriptionの全部またはいずれか
  • XnViewMP: Comment, Description(補助?)

カテゴリのタグ

  • digiKam: Keywords, Subject, Categories(階層化して格納)の全部またはいずれか
  • XnViewMP: Keywords, HierarchicalSubject(階層化して格納)

コメントについては、XnViewMPではIPTC/XMPの編集機能を使えばdigiKamと同様に書き込むことができるが、標準的な扱い(例: サムネイルの下に表示する、コメントの編集で表示・編集する)ができないので不便だ。カテゴリも、カテゴリを付けるペーンでは表示されるのだが、標準的な扱い(例: サムネイルの下に表示する)ができないので不便だ。おそらく、将来のXnViewMPではできるようになると期待する(が、いつになるかは分からない)。

digiKamは結構柔軟に使用するタグを設定できるのだが、XnViewMPはそうではないので、標準的な扱いをしようとしたら、XnViewMPが使うタグに値を入れる必要がある。そこで、digiKamのコメント・カテゴリをXnViewMPにコピーすることにした。まず、XnViewMPの機能でやろうとしたのだが、変更ができないタグが多くて無理だった。今にして思えばdigiKamでやればできたかも知れないが、そうはしなかった。というのは、既にXnViewMPに乗り換えた後だったので、「もう使いたくない」という気持ちが大きかったからだと思う(digiKamが重いのが大きな理由だ)。それに、以下に書くように、単純なコピーでは済まなかったので、digiKamでやったら手作業で間違いが多くなっただろうし、対象の画像の数が多くてかなりの時間が掛かっただろうから、使わなくて正解だったと思う。

作業の前にいろいろな画像のコメントを調べたら、digiKamの前に使っていたACDSeeのせいなのか、UserComment, Notes, Caption-Abstract, Descriptionの全部に入っている訳ではなく、どれか3つ(確か前の3者)とか1つだけ(Description)の場合があった(おそらく、DescriptionはACDSeeが付けたのではないか)。更に、元々のコメントに気付かずに(コメントがないと思って)XnViewMPでコメントを付けてしまった画像が数十枚あり、そういう画像は2つの異なるコメントが付いている状態になっていた(この移行作業をしようと思った大きな切っ掛けだ)。

そこで、以下のような処理をした(試行錯誤したので、最初から一気に分かった・した訳ではない)。

コメントの移行処理

  1. 画像にCommentがなかったら、
    • それにUserComment, Notes, Caption-Abstract, Descriptionのいずれか(digiKamのコメント)が付いていたら、最初に見付かったものをCommentにコピーする。
  2. 画像にComment(XnViewMPで付けたコメント)とdigiKamのコメントが両方付いていて、双方が異なっていたら、
    • 後者(digiKam)の後にセパレータを挟んで前者(XnViewMP)を追加(digiKamのコメントを先に付けたため)したものをCommentにする。
    • 以下に処理の例を示す(時間的順序とは逆だが、その画像の元々のCommentタグはXnViewMPのものだったので、そのようなセパレータにした)。
      • digiKamのコメント
      • --- Orig. Comment ---
      • XnViewMPのコメント

カテゴリの移行処理

  1. 画像にKeywordsがなかったら、
    • Subjectが付いていたら、Keywordsにコピーする。

カテゴリは、上記の処理以外にCategoriesに従ってHierarchicalSubjectを設定しないと完全ではないのだが、書式の変換が要るから間違う可能性があるのと、数が多い(約1.5万個)ため諦めた(数が多くても時間を掛ければ処理できるが、クラウドバックアップの変更データ量が数十GBにも及ぶため、バックアップ時間が長くなるのとしばらく料金が増えるのが嫌だった。とは言え、1か月50セント未満でしかないが)。HierarchicalSubjectを設定しなくても、カテゴリ設定ペーンやマウスオーバーでは表示できるので、(画像の下に表示するのは諦めて、)それで代替することにした。

マウスオーバーでは表示できるけど画像の下に出せないのは、単純にXnViewMPの未実装な点なので、将来はできるようになりそうな気がする。

書いたあとで、ちょっと確認しようとしてexiftoolでCategoriesを出したら、"(none)"になってしまった。いろいろ試したら、exiftoolのオプションとして、普通に"-Categories"でなく、"-XMP:Categories"や"-All:Categories"のようにグループを指定しないと駄目なようだ。理由は不明だが、仮に階層化カテゴリのコピーもやったら、多くが"(none)"になって、とんでもない処理をするところだった。危ない危ない。。。

タグの操作には主にexiftoolを使った。基本的な処理はexiftool単体(コマンド1行)でできた(ただ、上述のように処理が複雑なためにコマンド文字列がかなり長くなったので、スクリプト中で一時的なスクリプトを作り、それでexiftoolを実行するようにした)※。なお、exiftoolはsymblic linkの実体(リンク先)を処理せず、通常のファイルに変更してしまうため、あらかじめ除外した(多くの場合には、-overwrite_original_in_placeを指定すれば問題ないと思う)。

※exiftoolの機能の豊富さには驚くし便利だとは思うが、進む方向がなんか違うと思う。

処理後に、exiftoolを使う別のスクリプトで、全画像に対して移行処理ができているかの確認をした。こちらは、上記処理に不足や問題がないかの確認もしたかったので、exiftoolでタグの値を取り出して判定する別のスクリプトで行った。

※今回作ったスクリプトやexiftoolのコマンド文字列は有用ではあるが、機能が特殊なうえに、そもそもユーザー(使いたいであろう人)がほとんど居なさそうなので、例によって公開はしない。要る方がいらっしゃいましたら、お知らせ下さい。

 

PS. それにしても、なぜ同じ意味を格納するタグがこんなにあるのかと思う。ACDSeeも合わせて調べたら、以下のよう仕様になっているようだ。

コメント

  • ACDSee: Description ← digiKamへの移行時にexiftoolで書き込んだ。
  • digiKam: UserComment, Notes, Caption-Abstract, Description, ImageDescription(文字化け): ImageDescription以外は、どれかあれば使われるようだ。
  • XnViewMP: Comment, Description: Comment以外は表示できない局面がある。

カテゴリ

  • ACDSee: Categories(階層化) ← digiKamへの移行時にexiftoolで書き込んだ。
  • digiKam: Keywords, Subject, TagsList, Categories(階層化), CatalogSets(階層化)など: どれかあれば使われるようだ。
  • XnViewMP: Keywords, Subject, HierarchicalSubject(階層化): Keywords以外は表示できない局面があり、HierarchicalSubjectがないと階層が保存されない。

ACDSeeは「マイルール」でやっており(実際にはexiftoolで書き込んだのでタグは関係ないが、exiftoolを使わなくてはいけないほど、汎用性がなかった)、digiKamは節操がない感じ(設定可能なので、実際には互換性を広げるための機能だ)で、XnViewMPはちょっとズレているうえに一貫性や柔軟性がない。こういうのは不便なので、アプリごとにタグをバラバラにせずに統一して欲しい。

まあ、それでも、EXIFでタグの記録フォーマットが統一されているので、exiftoolのようなツールを使えばいくらでも変換できるから助かる。これがもし、独自フォーマットのDBだったら、どうにもならない(コメントなどを移行できない → 打ち込み直し?)事態に陥ることになる。実際、ACDSeeは基本はDBだが、各ファイルのタグに書き込むことも可能で(これがあって助かった)、digiKamに移る時に全部に書き込んだ覚えがある。 ← すっかり忘れていたが、実際にはexiftoolで書き込んでいた

  •   0
  •   0

以前からやっている、PHPを最新版に更新する件。デスクトップPCは問題なくできたのだが、サーバが結構面倒なことになった。

PHP自体は、PPAを使えば比較的容易に更新できるのだが、PHPを使っているソフトの互換性も確認する必要がある。それで、仕様などを調べて、大体は問題なさそうだったのだが、一つ、カレンダーや住所録の共有・同期に使っているサーバソフトBが怪しいことが分かった。検索すると、少し前のPHPのバージョンからいろいろな問題が出ていたようだし、そもそも開発が終わってしまっていて、ずっと更新されていなかった。それでも使い続けたい人がパッチを出しては居るのだが、さすがにもう「騙し騙し」でも使えない、誤魔化しが効かない状態になった。

仕方ないので、別のサーバソフトを調べていくつか試したのだが、なかなかいいものがなかった。以前使っていたOなら実績があるのだが、どうも下火なようだし、その分家(クーデター版?)Nはあるが、O同様にインストールや保守がちょっと面倒そうなので、もうちょっと楽なのを探したのだが、やっぱりない感じだ。インストールがやけに面倒だったり、インストールしてもうまく動かなかったりするものばかりだった。

仕方ないのでNを使うことにした。やっぱりいろいろ面倒だったが(この中で、前に書いたSnapの問題が発覚した)、デスクトップPCでうまく動くようになったので、今朝からサーバに入れて実際に使って試している。ところが、スマフォ(Android)側同期アプリCとの相性が今ひとつで、スケジュールがうまく同期できないことが多い。確かにそのアプリは、以前から最初はうまく同期できないのだが、時間が経つとなぜかできるようになっていた。これももう駄目と考えて、別のを探すことにした。

同期アプリもなかなかいいものがなく、以前試して止めたソフトの後継のDしかまともに動かなかった。これは同期はちゃんとできるからいいのだが、なぜか、スマフォのアラームを停めても1分後に再度出ることがあるのが嫌だ。どうも、PC側でもアラームを停める場合、停める順序やタイミングが関係しているようだ。気に入らないのだが、ないものは仕方ないので我慢することにした。

影響の連鎖

サーバ [PHP → カレンダー・住所録サーバ*] → スマフォ [カレンダー・住所録同期アプリ*]

※PHPの更新のために、*を取っ替え引っ替えする羽目に。

ただ、どうにも諦められないので、また元のCを試したい気もしている。理由は分からないが、気長に一晩くらい置くといいのかも知れない。

(1/25 6:24) なんとか、アプリCで同期出来るようになった感じだ。どうも、最初は予定(データ)の量が多くて全部同期できていなかったようなので(バッファサイズに制限があるのか、1回の転送量や処理量を制限しているのかと推測した)、1度に同期する期間を短くし(例: 過去は1週間、先は4週間)、短い間隔(10分など)で同期するようにして30分くらい待ったら、遠い過去・将来はいざ知らず、直近の予定は全部同期できた(その後、設定を普通に戻した)。これで様子を見てみたい。

 

最後にちょっと意見を書くと、世の中に良くある、古いソフトが更新・刷新できないというのは、こういう風に、そのソフトが使っているソフト(多くはプログラミング言語、あるいはOS)のバージョン間の互換性のなさが原因になっていることが多い。ソフトを作った人が居なくなり、仕様書・設計書などがなかったりすると、動くかどうかも、どう確認すればいいかも、どうやって直していいかも分からない。もちろん、お金(作業時間)だってない。

だから、「動いているからそのままにしよう」という気持ちは分かるが、重要な用途で、サポートが終わったものを使い続けるのは無責任だ。例えば、過去のバージョンに不具合があって、それが原因で間違った結果になることがあるからだ(でも、その不具合も含めて仕様として作っている場合もあるので、話は単純ではない)。一方、作る方にも責任はあって、バージョンを上げる時に、従来のプログラムが可能な限りそのまま使える(動く)ようにするべきなのだ。

個人的な印象だが、PHPは随分いい方だが、Pythonのように、2つのバージョン(2.*と3.*)がずっと混在して使われている(Ubuntuですらそうだ)のは、(僕は何が違うかは知らないが)余りにも醜悪だと思う。実際、Pythonのプログラムで、「これは(2と3の)どっちで動かすのか?」と疑問に思うけど分からないので、両方試さざるを得ないことが結構ある(両方とも別の原因で動かないことも多い)。そして、Ubuntuのように重要なところでPythonを使っている場合は、片方を削除するとシステムがまともに動かなくなってしまうことすらある。時間もストレージも無駄だ。まったく、「何考えて作ったの?」と言いたい。まあ、「使う方はちゃんと更新しろよ。こっちはお前らのために良くしてるんだからさあ」って論理だろうが、使う方は作る側と違って、その言語を使うこと自体が仕事ではないので、それは全然通らない。

 

※個人情報を扱うサーバに関することで、興味本意で攻撃される可能性を減らしたいので、具体的なプロトコルやソフトの名前などは記載していません。読んでも余り役に立たないかも知れませんが、僕のメモとか、問題の原因の推測・対処の例としたいと思います。

  •   0
  •   0

あるソフトをインストールしようとして調べたら、通常の手順でするもの以外にSnap版(必要なものが全部まとまっているパッケージ)もあった。そのソフトはいくつかの別なソフトを使うため、インストールと設定がなかなか面倒なので、Snapなら全部一括してインストールできて、ほとんど設定しなくて済むうえに更新も自動でされて便利なので、試してみたのだが、最終的には止めた。Snapのセンスの悪さ・将来性のなさを実感したからだ。

まず、Snap版アプリをいくつか使っている際の、Snapのものだけを抽出したマウント(OSへのファイルシステムの登録)状態を見て欲しい。

$ df | grep snap | sort
/dev/loop0 91648 91648 0 100% /snap/core/6034
/dev/loop1 91648 91648 0 100% /snap/core/6130
/dev/loop2 90368 90368 0 100% /snap/core/5897
/dev/loop3 177536 177536 0 100% /snap/spotify/26
/dev/loop4 177792 177792 0 100% /snap/spotify/28
/dev/loop5 55040 55040 0 100% /snap/core18/536
/dev/loop6 35456 35456 0 100% /snap/gtk-common-themes/818
/dev/loop7 173568 173568 0 100% /snap/gimp/94
/dev/loop8 178688 178688 0 100% /snap/spotify/30
/dev/loop9 173568 173568 0 100% /snap/gimp/101

Snapは、基本部分とアプリごとにそのパッケージのファイルを仮想的なファイルシステムとしてマウントするようなのだが、アプリをたった2つ(Spotifyとgimp)しか入れてないのに、10個もマウントされている。。。それぞれのソフトが更新されるたびに、これらは増えるようだ(ディレクトリの最後の数字が増えるようだ)。普通はアプリなんて山ほど入れるが、それが全部Snapになって、それぞれが何度も更新されたら、一体どうなるのだろうか。OSは問題なく動くだろうけど、人が見た時に状態が把握できなくなってしまうだろう。Snapのマウントポイントだけならいいけど、他のものが埋もれてしまって不便になるだろう(上とは反対に、Snapのものを除外して表示すればいいが、今まではいらなかったのに毎回指定すのは手間だ)。どうして、Snapのマウントポイントは1個だけ見えるように(あるいは見えないように)しようとしなかったのだろうか?

見た目だけならまだいいが、もっと深刻なのは、それぞれのSnapパッケージは、各々のアプリが自分に必要なモジュールを全部入れていることだ。仮にアプリ間で同じモジュールがあっても共有しないようなので(共有することにすると、依存性が生まれてSnapの目指すところに反するだろう)、同じライブラリが何個も格納され、同じソフト(例: HTTPサーバ, PHP)が複数動く事態になる*。そうすると、ディスクやメモリの使用量が無駄に増えるし※(Windowsと似たような事態ではないか)、CPUの負荷だって無駄に上がるだろう。

* 日常生活に例えれば、お米だけが欲しいのに、なぜか、専用の炊飯器や米びつまで一緒に買わされるようなものだ。当然、そんなの持っているのに、「持ってないかも・合わないかも知れないから」とか言って手持ちのを使わせてくれないのだ。

※ディスク使用量については、上の一覧(3列目がサイズ(KB))を見ても分かるように、各アプリの量は少なくない。Spotifyもgimpも170MBくらいのがバージョンごとに複数あるようだ(普通のパッケージなら共通のモジュールは共有されるから、全体としてはそんなに大きくならないはずだ)。いくらストレージが大きく安くなったとはいえ、アプリを入れるたび・更新のたびに浪費するなんて止めて欲しい。そして、ディスクを多く使うってことは、使用メモリだって増えるのだ。論外もいいところだ。

更に、重複したモジュールはバージョンや設定が少しずつ違うだろうから、間違いなく悪夢を生み出すだろう。確かに、手っ取り早く使い始められて楽なのだが、使っているうちに、同じモジュールを使っているはずのアプリの動作が微妙に違っていて(例えば、Snapと同様の目的のシステムのAppImage版アプリの日本語入力はそういうことがある)、困って検索して調整する羽目になるのだ。そうでなくても、何かあって設定を調整するにしても、普通の場所にはないから、いちいち調べるのが面倒だ。その設定ファイルも、同じ名前のモジュールであっても、それを含むアプリごとに別だから、それぞれを調整する羽目になって、面倒臭いとしか言いようがない。。。 要は、Linuxの良さをぶち壊しにして、Windowsへの道を進んでいるのだが、それでいいのか??

先のことを考えず無駄ばかりの(「腐った」)システムなんて、全く許容できない。だから、通常のパッケージがあるなら、多少面倒でもなるべくSnap版は使わないことにした。

それにしても、そもそも、Linuxに派生が多過ぎるからSnapのような「全部入り」パッケージができたのだが、それすらAppImageとかFlatpakなどのような別物ができてしまっていて、まとまりのなさには全くがっかりだ。本来、OSの派生を減らせばこんな無駄なものは要らないのに、なぜ、そこに目をつぶるのだろうか。

Linuxにもクソなところはある(でも、クソなのは物じゃなくて人だ※)。

※クソなのは人だけど、クソな考えややり方で作られた物は、やっぱりクソになってしまう。結果は作者の属性には無関係と思うが、当然ながら、作者の考えには大きく影響される。

  •   0
  •   0

僕にしては珍しく、一週間くらい書かずにいた。ある方が入院されているので、(自分の禁を犯してw)twitterでやり取りしている。その流れで細かい投稿をそっちにしていたら、こっちに書かなくても満足できていたようだ。何もしていなかった訳ではなく、以下のようなことをやっていたので、詳しくは追って書きたい。

  • 画像管理アプリのdigiKam5からXnViewMPへの移行
    • digiKamに移った時と同様、コメントとカテゴリ(メタデータ)を引き継ぐ(普通に表示できるようにする)のがかなりの手間と苦労だった。 (→ 投稿)
    • ちょっとした(でも面倒な)残件と謎があるものの、概ね終わった。
    • XnViewMPは軽くていい。が、将来もまた何かに移りそうだw
    • それでも、データ仕様(EXIF)がオープンなので、(Linuxなら)ツールを使ったりスクリプトを作ったりすれば、いくらでも移行できるのがいい。
    • ついでに、過去にし忘れていた画像のカテゴリ分け(タグ付け)もした。そのために更新ファイルが増えて、オンラインバックアップのデータ量が半端ないw
    • ただ、オンラインバックアップの履歴保存のおかげで、XnViewMPで気づかずに上書きしてしまって失われたコメントを復活できたのは良かった。ちゃんと過去の版がリストアできることが分かった。
      • 履歴は頻繁に使うものではないが、いざという時には便利だ。今は3か月までにしているが、1年くらい残すといいかも知れない(お金次第ではある)。
      • ただ、復活させたコメントはどれも大したものではなく、「そこまで頑張る意味あった?」というオチではあったw
  • スマフォの地図アプリのデータ量と電池消費率の最適探し (→ 投稿)
    • 概ね結論が出た。「いつもNAVI」がいい感じだ。ただ、電池消費率はもう少し詰めたい。
  • 生活費の削減方法の検討 (→ 投稿)
    • とりあえず、10-12万円/年(約1万円/月)の削減が目標。手段は分かり、意外に簡単そうだが、実行は難しそう。
    • 更に、年間数十万円減らす策もあるのだが、結構な手間が掛かる。
  • 大掃除 (まだ残りありw)
    • TODOの作成日を見たら、随分長ーーく掃除してなかったのだが、本当なのか? 確かに、あの埃の量はそうだったかも・・・
  • (昔の写真を整理していて思い出した)白黒画像のカラー化手法がすごい。
    • 以前にも書いたが、画像によってはすごく自然にできる。
    • どうやっているのか興味はあるが、(論文を読んで)調べる気は起こらないw
  • 地図アプリの評価にヨドバシへ散歩して
    • 有機ELテレビが紙のように薄くて感動した。「買いますか?」→「まさか!」だけどねw
      • 技術バカの極地と言えよう。気持ちは分かるけど、ほとんど意味がない。
    • (naokiさんに教えて頂いた、)無制限Wi-Fi(ポケットルータ)は大体約5千円/月で手頃だが、3日で10GBの制限が惜しい。あと、電話が使えなさそうなのも惜しい。光回線をなくせるのはもう少し先だ。
    • (モバイルデータ量をケチるために試した、)ヨドバシの無料Wi-Fiが使えなかった。いくらやっても、認証だの証明書だのの文句を言われてwebが見られなかった。プロキシのせい? 全く惜しい。

並べてみると大したことではなく、先進性も生産性のかけらもないが、いろいろおもしろくやって、いい暇つぶしではあった。この調子で50年くらい一気に過ぎると、いいかも知れないw

  •   0
  •   0

先日書いたように、XnViewMPでは日本語入力ができず、OSやlibsslのバージョンによってはウインドウ内のGoogle mapsの地図表示もできない場合があるので、それぞれできるようにしたので書く。なお、XnViewMPのバージョンは0.92を、OSはLinux Mint 18.3 (x86 64bit)を想定する(Ubuntu 16.04 LTSでも同様と思われる)。

日本語入力

現象: コメントなどの入力フィールドで日本語(全/半)キーを押しても、Mozcなどの日本語変換モジュールが起動しない。

原因: XnViewMP添付のライブラリ(/opt/XnView/lib)にQt5の日本語入力関連のプラグイン(例えば/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts下にあるもの)が不足しているため。

対処: XnViewMPが不足するライブラリを参照できるようにする。

詳細

  • 基本的には、環境変数QT_PLUGIN_PATHにQt5の日本語入力関連のプラグインのディレクトリを追加すればいい。
  • しかし、/usr/bin/xnview(シェルスクリプト)の中でQT_PLUGIN_PATHに/opt/XnView/libを指定(上書き)しているので、単に設定するだけでは有効にならない。
  • そのため、QT_PLUGIN_PATHにOS本来のディレクトリとXnViewMPのディレクトリを設定するようなスクリプトを作るか、xnviewを修正すれば良い。
  • XnViewMPを起動するスクリプト例:

#!/bin/sh

export LD_LIBRARY_PATH=/opt/XnView/lib

export QT_PLUGIN_PATH="/usr/lib/x86_64-linux-gnu/qt5/plugins:\
/opt/XnView/lib"

/opt/XnView/XnView $*

  • 未確認だが、使われていないスクリプト/opt/XnView/xnview.shは設定済みのQT_PLUGIN_PATHを参照するので、それを使えばいいかも知れない(XnViewMPのディレクトリが前に来るので、駄目かも知れない)。

地図表示

現象: 位置(GPS)情報付き画像を選択し、GPSのペーンを開いても、空白のまま地図が出ない(出ることもある)。

原因: XnViewMP添付のライブラリ(/opt/XnView/lib)のQt5は古いSSLライブラリ(libssl1.0.0)を参照しているようで(→ 参照)、新しいOSやPHP 7.3をインストールしたシステムなどでは、libssl1.1がインストールされているためにlibssl1.0.0を参照できないことが多いために、地図表示が不安定になる。なお、システムにはlibssl1.0.0もインストールされているのだが、参照できない(できることもある)理由は分からない。

対処: XnViewMPがlibssl1.0.0を参照できるようにする。

詳細

  • 基本的には、環境変数LD_LIBRARY_PATHに、libssl1.0.0のライブラリのあるディレクトリを追加すればいい。libssl1.0.0のライブラリは以下である。
    • /lib/x86_64-linux-gnu/libssl.so.1.0.0
    • /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
    • /usr/lib/x86_64-linux-gnu/openssl-1.0.0/engines/*
  • libssl1.0.0だけのディレクトリになっている訳ではないため、親ディレクトリ(/lib/x86_64-linux-gnuなど)をそのまま指定するのでは指定する意味がなさそうだし、XnViewMP添付のライブラリと競合するかも知れないと考え、XnViewMPの追加ライブラリ用ディレクトリを作って、その下に参照させたいライブラリへのsym-linkを作り、そのディレクトリをLD_LIBRARY_PATHに設定した。また、上述の日本語入力用に追加するQt5のプラグインも同様にsym-linkした。
  • その他は日本語入力と同様である。
  • XnViewMP用追加ライブラリディレクトリディレクトリの準備(場所は$HOME/.local/lib/XnViewとした):

cd
mkdir -p .local/lib/XnView
cd .local/lib/XnView
ln -s /lib/x86_64-linux-gnu/lib{ssl,crypto}.so.1.0.0 .
ln -s /usr/lib/x86_64-linux-gnu/openssl-1.0.0/engines/* .
mkdir qt5-plugins
cd qt5-plugins
ln -s /usr/lib/x86_64-linux-gnu/qt5/\
plugins/platforminputcontexts .
cd

  • XnViewMPを起動するスクリプト例(日本語入力対応も含む):

#!/bin/sh

export LD_LIBRARY_PATH="$HOME/.local/lib/XnView:\
/opt/XnView/lib"

export QT_PLUGIN_PATH="$LD_LIBRARY_PATH"

/opt/XnView/XnView $*

※32ビット版ではライブラリのディレクトリ名が異なる(上のx86_64i386)ので、適宜読み替えること。

動作例

(1/8 9:25 わずかに修正)

 

PS. 本題とは関係ないが、XnViewMPはかなり柔軟にレイアウトをカスタマイズできるのだが、結構惜しいところがある。例えば、ファイル・画像情報のペーンの名前と値のカラム幅が変更できないので、見やすくするには幅を広くする必要がある(そうしないと、左右のスクロールが頻発する)。試行錯誤して、情報ペーンなどをまとめて下部に置いた。本当は左右どちらかの端に置きたいが、使いにくくなってしまうので仕方ない。

筆者のXnViewMPのレイアウト

とはいえ、どうも使い勝手が悪いので、やっぱり情報ペーンなどを左右に置いてみた。結局、ありきたりなレイアウトに落ち着いた感じだ。これはdigiKamにも似ている気がするから、要は馴染みのUIを変えたくないのだろう。 (1/8 9:27)

筆者のXnViewMPのレイアウト (出戻り?版)

PS2. これはもう全くの余談だが、上の2つのキャプチャ画像、幅は同じなのに大きさが全然違って見える。錯覚なんだろうか。全く不思議だ。 (1/8 20:36)

  •   0
  •   1

PCを使っていて、気付いたら空きが半分くらい(= 約16GB使用)になっており、ブラウザをFirefoxに換えたにも関わらず、想像以上に空きメモリが減るので調べたら、Spotifyやブラウザ(Vivaldi)の他にもメモリを大量に使っているアプリがあった。昨夜に分かったのは、NixNote2とdigiKam5である。まとめるため、以前から分かっていたものも合わせて、以下に示す。

  • ChromeとVivaldi: メモリをふんだんに使う作り。
  • Spotify: メモリリーク: 長時間動かすと数GBに増え続け、全く減らない。
  • NixNote2: メモリリーク: データベースのバックアップをすると1GB以上に増えて、減らない。
  • digiKam5: メモリリーク: タグでの検索(例: タグのタブを開いて、あるタグを選択する)をすると数GB程度に増えて、減らない。

対処の方針としては、別のアプリを使うか回避策を見つけるかである。

ブラウザについては、Firefoxに移ることで緩和・軽減した。Spotifyは使用量が一定以上になったら自動で再起動するようにした。

新しく見付かったNixNote2については、データベースのバックアップは頻繁には行わない(定期的なバックアップ時のみ)ので、バックアップ後に再起動するか、(NixNote2ではバックアップせず)Windows版のEvernoteでバックアップ(エクスポート)することを考えている。

同じくdigiKam5(以下、digiKam)については、(自動で再起動するために)外部からプロセスを停めると画像やDBが壊れる可能性があるので、別のアプリとして、以前検討して止めたXnViewMPを再度試した。あれから改良されたのか、今回は結構いい感じだったのだが、いくつか問題があったので以下に示す。

XnViewMPの問題(不満な点)

  1. [済] コメントなどに日本語が入力できない。
    • Qtのライブラリの問題だったので、AppImage版digiKamと同様に追加して入力できるようにした。
    • これは、今まで採用を見送っていた最大の理由である。
  2. [TODO] 画像の日付でのフィルタリングができない(日付などでの検索は可能)。
    • 元々、画像の格納ディレクトリを年月日で分けているので、この機能はほとんど使っていなかったので、大きな問題ではない。
    • 追って、改良できるか検討したい。
  3. [済] 画像内に設定されたカテゴリの反映が自動でない。
    • 新規追加したファイルのカテゴリは、それらのファイルをXnViewMPで読み込まないと反映されない。そのため、ファイルの格納場所が分からないと、カテゴリで検索できない。
    • アプリの作りの問題なので、どうするか検討中。 → 以下のようにして対応した。 (1/7 9:17) → 問題なく動作している。 (2019/1/26 15:40記)
      • 問題となっている、「格納場所が分からない新規追加したファイル」は、自作の取り込みプログラムでカメラなどから取り込んで日付のディレクトリに振り分けたものなので、取り込んだファイル一覧を作成し、それをXnViewMPに指定して起動することで反映されるようにした。なお、既存のファイルを外部プログラムでカテゴリを変更した場合の更新は、この方法ではできない。
      • 以下のような処理のスクリプトを作成し、XnViewMPのツールバーのコマンドに登録して、そのボタンを押せば自動で取り込んだ画像を反映できるようにした。その時使っているものとは別のXnViewMPのプロセスで画像DBを更新しても、ちゃんと反映された。
        1. (画像取り込みプログラム: 取り込んだファイル一覧を作成する。 → img-list.txt)
        2. XnViewMPに一覧を指定して起動する。: xnview -filelist img-list.txt
        3. 少し待ち(0.5秒程度)、XnViewMPを最小化する。
        4. XnViewMPのDBへの反映が終わるまで待ち(余裕をみて3秒程度)、XnViewMPを終了させる。
        5. ファイル一覧を削除する。
  4. [TODO] ファイル・ディレクトリ名での除外ができない。
    • 余計なファイルやディレクトリが表示されて使い勝手が悪いので、どうするか検討中。
    • なお、ファイル名の拡張子では除外可能。
  5. [済] コメントの格納フィールド(タグ)がdigiKamと違う。
    • digiKamで書いたコメントはXnViewMPの"Edit comment"では出ず、"Edit IPTC/XMP"の"Caption"に出る。
    • ただし、サムネイル一覧のラベル("Comment")には出せる。
    • 場所は違うが見られるので大きな問題ではないが、追ってどうするか検討する。
    • → XnViewMPの認識するタグにコピーして対応した。カテゴリも同様にした。 (→ 投稿: 2019/1/26 15:40記)
  6. [済] 画像内に格納された位置情報(GPS情報)で地図が表示されない(地図ペーンが空白になる)。
    • ライブラリのバージョンの問題だったので、対応した。
      • 新しいライブラリ(libssl1.1)では廃止されたと思われる、SSL2やSSL3を使っているようだ。(このままだと、将来はGoogle mapsに接続できなくなりそうだ)
      • なお、libssl1.1はPHPの7.3への更新時にインストールした。
    • なお、外部サイト(GeoHack)での表示機能は問題なく動作する。
  7. [済] 画像回転の処理・結果がdigiKamと違う?
    • (EXIF情報だけで回転させるモードの場合、)画像を(論理的に)回転させても埋め込みサムネイルは回転しないために誤解していた。 → 埋め込みサムネイルを使わない設定にして回避した。 (1/8 9:10追記) それでも駄目な場合があるので、EXIF情報だけで回転させるのは止めた。
  8. [保留] 類似画像検索や顔認識機能がない。
    • これらの機能は使っていなかったので、大きな問題ではない。
    • なお、若干機能が違うものの、類似画像検索はあった。

探すと結構多かったのだが、重要なものについては対処できた。そして、確かに問題は多いものの、XnViewMPには以下のようなメリットがあり、それがdigiKamでは実現できずずっと不満だったので、対処に手間を掛けても移行する価値は大きいと感じた。

  • 起動が高速で操作も軽い。
  • メモリ使用量がとても小さく(起動直後は300MB以下)、使用量の増加速度が小さい。
    • なお、増える場合も減る場合もあり、増減の条件はまだ分かっていない。
    • (1/8 9:10) サムネイルをキャッシュすると、表示した画像(サムネイル)数に応じてメモリ使用量が増え続けて減ることがないようだ。そのため、キャッシュを行わないようにした。
  • 良く使うディレクトリをFavorites(お気に入り)に登録できるのが、とても便利。
  • ESCキーで画像表示が閉じるなど、使い勝手がいい。
  • ウインドウのレイアウトを柔軟にカスタマイズできる。
  • マウスホイール加速への追従性はdigiKamより良い。

なお、日本語入力とGPSの地図表示の対応方法については別途投稿する予定である。

PS. XnViewMPの一番の問題は、ドキュメントやサポートがすごく貧弱なことだ。コマンドラインオプション一覧すら出ない・存在しないし、マニュアルもヘルプもなく、使い方は、想像するかwebやwikiの少ない記述やフォーラムを見るか検索するしかない。フォーラムのlibsslの件を見る限り、不具合を報告しても直ることは少なそうだ(言ってみれば、「悪魔対応」だw)。。。 まあ、それでも他のアプリ同様、自分で何とかできるから良しとしている。

ただ、これでは本当に、物好きとかプロしか使いこなせない。基本的にはいいアプリなのだから、サポートをちゃんとすればユーザーがもっと増えると思うのに、全くもったない。 (1/7 9:33)

(19:54 わずかに加筆; 1/7 9:34 加筆・修正, 15:55 わずかに加筆, 16:03 題に追加; 1/8 9:10加筆)

  •   0
  •   1

今日は、トイレの他にもう一つうまく行った。先日、思わぬ問題が見付かって仕切り直しにした、PHPのバージョンアップである。問題は、最新版PHPをインストールするためのPPA(公式パッケージ以外のソフトを手軽にインストールできる非公式パッケージ)に、PHP以外の余計なパッケージ(→ PPAのページ下部の一覧を参照)が沢山入っていたことだった※。そのPPA(以下、ondrejのPPA)を使うのは一般的なようだが、セキュリティ上のリスクが高いように思えるので避けたかった。

※今考えると、余計に思えたものはいずれかのPHPのモジュールが依存するものなのかも知れない(だから、全部のPHPモジュールをインストールした時には余計なものがなくなるのではないか)。そうならなおさら、自分が使うモジュールに必要なものだけをインストール・更新対象にしたい。

それで、今日までは、OS(Linux Mint)を更新してそれ(公式パッケージ)に含まれるPHPに更新することを考えていたのだが、良く考えたら、最新のOSに含まれるPHPは最新ではないため、すぐにサポート期間が切れてしまうことに気付いた。以下にその関係を示す。

Linux MintとPHPのサポート期間の関係

  • Linux Mint (→ 参照)
    • 18.3(現在使っている版): 2021/4まで
    • 19.1(最新版): 2023/4まで
  • PHP (→ 参照)
    • 7.2(Linux Mint 19.1(Ubuntu 16 LTS)のパッケージで入るもの): 2020/11末まで
    • 7.3(最新版): 2021/12頭まで

OSをLinux Mint 19.1に更新するとPHPは(最新の1つ前の)7.2にできるが、それは来年終わり頃にサポート期間切れになってしまうので、また今回のような状況になる。しかも、それがOSの期限切れまでに何度も起こるので、そのたびに必要もないのにOSを更新することになって無駄だ。それで、代わりの案を考えたら、以下の2とおりになった。

  1. ondrejのPPAの中のPHPだけを抜き出して使う。
  2. 自分でPHPをビルドしてインストールする。

2の自分でビルドするのはさまざまな問題や手間がありそうなので、却下した。1の、PPAからPHPだけを抜き出して使う方法を考えたところ、以下のいくつかの方法が浮かんだ。

  1. OSの設定を調整して、ondrejのPPA中のPHP以外のものを無効にして、PHPだけがインストールできるようにする。 (→ 参考1, 参考2)
  2. ondrejのPPAからPHPだけを抜き出した、「自分のPPA」を作る。 (→ 参考1, 参考2)
  3. ondrejのPPAのサイトからPHPのパッケージファイル(deb)だけをダウンロードして、インストールする。その処理を自動化する。

1番目はPinning(aptの設定ファイル中にPinという設定を記述する)でできそうだが、間違えると、前回のように厄介なことになりそうだ。2番目は、抜き出すだけでなく、抜き出したものをパッケージにするための情報を再度作成する必要があって面倒そうだ。3番目は一見簡単で、やればできるのだが、自動処理するにはOSのパッケージのインストールの仕組みを自分で作るようなものなので、間違いやトラブルのリスクが増えそうだ。

結局、1番目(Pinning)を採用することにした。試行錯誤でシステムを壊さないように、仮想環境で試した。すると、意外にうまく行った。以下のような手順で設定すれば良い。

  1. ondrejのPPAをOSに追加する。
  2. aptの設定ファイルを修正する。(→ /etc/apt/preferences.d/ondrej-php.pref)
  3. PHP 7.3のインストールに必要な依存モジュールを調べて、上記設定ファイルに追加する。
  4. 余計なパッケージがインストール対象になっていないか確認する。

1は、検索するとすぐに出て来る方法で、例えば以下である。

sudo sh -c "export LC_ALL=C.UTF-8; \
add-apt-repository ppa:ondrej/php"

2は、参考ページを参考にして、以下のようにした。

/etc/apt/preferences.d/ondrej-php.pref:

# ondrejのPPA中の全パッケージを無効にする。
Package: *
Pin: release o=LP-PPA-ondrej-php
Pin-Priority: -1

# ondrejのPPAのPHP7.3のパッケージを有効にする。
Package: php7.3*
Pin: release o=LP-PPA-ondrej-php
# 公式パッケージがない時だけ、ondrejのPPAのパッケージを使う。

Pin-Priority: 400

# ondrejのPPAのPHP7.3が依存するパッケージだけを有効にする(下線部は自分が使うPHPのモジュールによって変わる)。
Package: libargon2* libpcre2* libsodium2* libssl1*
Pin: release o=LP-PPA-ondrej-php
# 他にパッケージがない時だけ、ondrejのPPAのパッケージを使う。

Pin-Priority: 50

なお、上のPin指定の"o="に指定する名前(提供者名)は、1の後に以下のコマンドを実行すれば確認できる。

apt-cache policy | grep -i php | grep "o="

3の追加パッケージを調べるには、必要なPHPのモジュールをaptitudeに指定して、インストールをシミュレートするモード(-sを指定)で実行する。以下にコマンドの例を示す。

sudo aptitude -s install php7.3 \
php7.3-{common,cli,cgi,curl,mbstring,wddx,\
xml,xmlreader,xmlwriter,xsl,opcache,json,\
readline,exif,posix}

上のコマンドを実行すると、依存するパッケージlibargon2-0, libpcre2-8-0, libsodium23, libssl1.1が不足していると出るので、ondrej-php.prefの3番目のPackage指定に追加する(下線部。指定にはワイルドカードが使用可能)。

4の、余計なパッケージがインストール対象でないか確認するには、apt-cacheコマンドやアップデートマネージャーを用いる。以下にapt-cacheコマンドでの確認の例を示す。

apt-cache policy | grep -i php | grep -v sury
apt-cache policy | grep -vi php | grep sury

1番目はPPAの説明が出ればOK、2番目は追加した依存パッケージのみ出ればOKである。

実際のPHPのインストールは、3のコマンドに-sを指定せずに実行すれば良い(私はインストールの前に現在のPHPをアンインストールした)。インストール後に、PHPのバージョン(php -v)やモジュール(php -m)を調べて、想定どおりならOKである。その後、既存のプログラムの動作確認や調整などを行う。

書くと長くなったが、意外に簡単にPHP 7.3に更新することができた。作業時間(事前検討などは含まず)は30分程度だった。これで、再来年の頭までは(大きな問題がない限り、)今のOSでも行けそうだ。

PS. OSをバージョンアップする際は、設定ファイルのPackageで追加したモジュール(libargon2など)はおそらくOSに含まれているだろうから、バージョンアップの前に設定を調整(php7.3*だけにする)した方が良さそうだ(バージョンアップ後でも大丈夫だと思う)。 ← その後、PHP7.3や依存モジュールのPin-Priorityを下げることで、仮に公式パッケージが出た場合やOSのバージョンアップ後には公式のものを優先させる設定にした。

(1/5 6:21 ondrej-php.prefの設定を改良)

  •   0
  •   0

先日、Firefoxに移行しようとした時に見つかった問題を解決(正確には暫定対処)できた。

現象

  • ChromeやVivaldi(以下、Chrome)を起動すると、Firefoxが一時(十秒程度)ハングする。
  • Firefoxの子プロセス(-contentprocの付いているもの)のプロセス(複数)の負荷が高くなり、その間、Firefoxの操作ができなくなる。

試したこと・原因調査など

対処

僕がChromeを使うのは、Authyのアプリを使う時だけなので、その時だけ通常の~/.fontsを無効にする起動スクリプトを作った。以下に、ブラウザがVivaldiの場合の例を示す。

  • 準備
    1. Authyアプリ用の仮のHOMEを作る。 → ~/.gca-authy-home
    2. そこでAuthy用のVivaldiとAuthyを初期設定する。
      1. Authy用Vivaldiの起動: (export HOME=$HOME/.gca-authy-home; vivaldi)
      2. 以下、Authy用Vivaldiでの作業
        1. Authyのアドオンをインストールする。
        2. Authyのアプリをインストールする。
        3. Authyアプリを起動して初期設定する。
    3. AuthyアプリのIDを調べる。
      • $HOME/.gca-authy-home/.config/vivaldi/Default/Extensions下のいずれか(おそらく最新のもの)がAuthyアプリのディレクトリのはず(その下のmanifest.jsonの中のapp_nameやdescriptionを調べれば確実)なので、その名前がID。
      • IDはスクリプトで調べると便利である(例は次を参照のこと)。
  • Authy用VivaldiでAuthyアプリを起動する。以下のようなスクリプトを作った(エラー処理は非記載)。

tmp_home=$HOME/.gca-authy-home # 仮のHOME
app_name_pat="\"app_name\":\s+\"authy\"" # Authyアプリの検索パターン

# AuthyアプリのIDを調べる。 → $app_id
app_fname=`find $tmp_home/.config/vivaldi/ -type f -name "manifest.json" -exec egrep -m 1 -l "$app_name_pat" {} \;`
app_id=`echo "$app_fname" | sed -r -n 's@.+Default/Extensions/([^/]+)/.+@\1@p'`

# VivaldiでAuthyアプリを起動する(太字部分はAuthyアプリのID)。
export HOME=$tmp_home
exec /usr/bin/vivaldi --app --app-id=$app_id

備考

  • パッケージfontconfigを更新すれば直るという情報もあるが、解決しない(ハングする時間が短くなるだけ)という情報もあった。
  • Authyアプリだけなら、Vivaldiのメモリ使用量は600MB以下と少ない(良く考えると、大きいw)。仮のHOMEのサイズも40MB程度と小さい(今後、キャッシュで増えるかも)。

 

Authyが手軽に使えるようになったので、Firefoxへの移行は問題なさそうだ。ただ、将来、Chromeアプリはなくなるようなので、その時はどうなるか心配はある。が、それはAuthyの問題で、Firefoxとは関係ないので、その時に考えれば良い。

  •   0
  •   0

ブラウザはVivaldiを使っているのだが、どうにもメモリを馬鹿食いするので辟易して来た。ベースにしているChromeの作りのせいではあるのだが、普通に使っていても、気付くと全体(32GB)の半分以上のメモリを消費していることがあって(Vivaldiがほとんどを消費しているようだ)、さすがにそれは許せないと思ってきた。更に、近頃は起動後に段々重くなって、サスペンドしたタブを開く処理が遅くてイライラする。

そこで、起死回生というのか、そろそろ「古き良きFirefox」はいかがなものかと試してみた。今までに何度も試して来たのだが、そのたびにケチが付いて見送って来た。バージョンはもう60を超えており(64)、前回(2017年夏)の55から10近く上がっているので、ものすごく改良されたのではないかと期待したw

今までの主な問題は以下であった。

  • アプリの構造が変わって、必要なアドオンがほぼ全滅した。
    • そのため、縦のタブバーができない。
  • アイドル時のCPU負荷が高い。

試してみると、必要なアドオンは復活(別のものになったものもある)しており、縦のタブバーのアドオンもあって(Tree Tabsにした)、使えそうだった。CPU負荷については直っていないようで、アイドル時でも15%前後と高目ではある。ただ、良く考えてみたら、今まで見ていたCPU使用率(ps uxコマンドでの"%CPU")は、1コア(Hyper threading(以下HT)の1スレッド)当たりの値のようだ。一方、CPUはHTによって仮想8コアなので、psコマンドで出るプログラムのCPU使用率はPC全体では1/8になる。すると、例えばアイドル時に16%だったとしても、全体への寄与(増加分)は(16/8=)2%程度(HTなので、実際の負荷はもう少し大きくなりそうだ)の負荷なので、大きな問題はなさそうだ。実際、topコマンドの"%Cpu(s)"の表示にも合っている。

負荷について少し考えてみた。: 僕のPCは古いので、CPU(Sandy Bridge)の能力は高くない。一方、今のアプリは近頃のCPUを想定して作っているので、僕のPCのような古いCPUで動かすと、重くなってしまうのではないか。そして、HTで見掛け上は8個ものコアがあるように見えるが、1個の仮想コアで処理するには軽くないのだろう。とは言え、1仮想コアの負荷は100%にはなっていない(通常使用時は30%前後)ので、実行に無理がある訳ではなさそうだ。

ただ、Vivaldiでは重くならないのが何とも不思議ではある。メモリを使う代わりにCPU負荷を軽くしようという方針なのだろうか。あるいは、Firefoxにはいろいろな(古い?)CPUに最適化できていない箇所があるのかも知れない。VivaldiのコアはChromeなので、それを作ったGoogleなら、いろいろ知っているだろうしリソースもあるから、さまざまなことができている可能性はある。

他には、前にも書いたかも知れないが、Firefoxは(プロセス数を減らすためなのか、)各タブのイベントを処理をするためにCPUを動かし続けるような作りになっていて、(そのため、特にタブが多くなると、)負荷が高くなる可能性も考えられる。ただ、個人的には、必ずしもそうなってしまうとは思わず、ちゃんと作れば(あるいは、最適化を行えば、)負荷を低くできると思う(コードを見ていないので、あくまでも想像である)。

負荷が小さいに越したことはないが、10GB以上もメモリを馬鹿食いされるのに比べたらずっといいので、しばらく試して問題なければ移ることにする。なお、負荷が大きくなり過ぎるのが防げることを期待して、設定の"Content process limit"を2に減らした。また、メモリ使用量を更に減らすため、Auto Tab Discardというアドオンで、一定時間アイドルのタブをサスペンドするようにした(ただ、元々使用量が少ないので、効果は余り感じられない)。

なお、Firefoxの使用メモリ使用量は、前回同様、Vivaldiの1/3程度だった。以下に測定結果の例を示す。

VivaldiとFirefoxの使用メモリ量の比較

  • 測定条件
    • それぞれのブラウザで、概ね同じページ(3ウインドウ、約46タブ)を開いた。
    • ps uxコマンドを用いて各ブラウザのプロセスのRSSを合計した。
    • どちらも最新版
  • 測定コマンドの例: ps ux | grep firefox | awk '{sum+= $6;} END {print sum/1024;}'
  • 結果
    • Vivaldi: 約10GB
    • Firefox: 約3.2GB

現時点で分かっている問題(不満な点)は以下である。致命的なものはなく、アドオンや設定によって、基本的な使い勝手をVivaldiとほぼ同等にできた。

  • [済] 縦のタブバーにしても、ウインドウ上部のタブバーは消せない。 → CSS(userChrome.css)を修正して消せた。 (→ 参考1, 参考2)
  • [保留] Authy(2要素認証用トークン生成アプリ)が対応していない。 → Chromeアプリを使う。
    • Authyの起動直後はシステムがすごく重くなって、なぜかFirefoxも動かなくなる。
      • 数十秒待てば直る。
      • Firefoxの設定を初期化しても直らず。 → 諦める。
  • [済] ズームに"105%"がなく、ズームのデフォルト値が変えられない。 → アドオン(Fixed Zoom)でできた。
  • [保留] デザインが今一つごちゃついている。 → 我慢する。
  • [保留] ページの表示がおかしいことがある(例: じゃがさんのブログで上が妙に空いたり、下に白い部分が出ることがある)。 → 我慢する。
  • [TODO] スタイル(CSSの反映のされ方)が微妙にVivaldiと違う(例: 「いいね!」ボタンが大きい)。ブログのCSSが良くない? → 暫定的にボタンの文字を少し小さくした。

他に、僕のデスクトップ設定との絡みなのだが、Firefoxには右上にメニューボタンがあるので、ウインドウの位置によってはボタンが時計と干渉することがあるという、思わぬ落とし穴があった。メニューボタンは動かせないようなので、なかなか悩ましい。まあ、クラシックなメニューバーもあるので、大きな問題ではない。それに、アドオンで何とかなるかも知れない(上のタブ一覧を消したのと同様に、CSSの改造で動かせそうな気がする)。

CSSを変更してメニューボタンを左に移せた(→ 参考: "Show CSS Code"の内容をuserChrome.cssに追加する)。

今の懸念(心配)は、MSもChrome系に移ったため、Firefoxがとても少数派になり、将来、開発元のMozillaもろともなくなってしまう可能性があることだ。ただ、メモリ量の少ない小型機器でChromeを使うのは現実的ではないから、Firefoxも残る期待はある。嫌なのは、Red Hatのように変なところに買収されてしまうことだ。例えば、OracleやIBMやMSなんてところは避けたい。もちろん、Googleだってマズい。ここは是非、UbuntuのCanonicalと一緒になって歯を食いしばって頑張って欲しい。

特にその気はなかったのだが、いろいろと「移行」の多い年末だ。IT大掃除のようなものか。他に、OSのバージョンアップもしたいのだが、さすがに、スマフォの回線移行が重なって電話が使えない可能性がある状態で行うと、メールすら使えなくなってドツボに嵌まる可能性があるので、来年にしようと思っている。

 

PS. 少し前にスマフォでもFirefoxを試したが、まだ遅いままだったので止めた。以前と同様、最初はそうでもなかったのだが、何回か動かすと遅くなってしまう感じだ。何かのアドオンが悪いのだろうか。

  •   0
  •   0

最新のAppImage版のdigiKam(5.9.0)では、Googleマップが暗くなり、ちゃんと表示されなくなってしまっている。OpenStreetMapにすれば問題ないが、Googleマップの方が表示が綺麗なので、できればそちらを使いたい。それで検索したら、想像どおりAPIキーの問題だそうで、6(まだベータ)では直っているとのこと。そこに5での暫定対処の方法(Googleマップに関係するファイルを入れ替える)も出ていた。

ただ、AppImage版はOSのディレクトリ(/usr/share/digikam)を使わず、アプリ一式が1つのファイルになっているので、そのままでは対処ができない。そこで、以前見つけたAppRunを修正する方法でできないか試したら、できた。

AppImage中のスクリプトAppRunの頭で環境変数XDG_DATA_DIRSを設定しているので、その先頭に、優先させたい(入れ換えたい)ファイルのあるディレクトリを追加すれば良い(どんなディレクトリでも入れ換え可能な訳ではなく、ライブラリなどから$XDG_DATA_DIRS経由で参照される、/usr/shareのようなものが有効なのだろう)。

今回は/usr/share/digikam/geoiface/backend-googlemaps.htmlを入れ換えるので、以下のようにした。

  1. 入れ換え用ディレクトリ(例: $HOME/bin/digikam5-ai-ext/share/digikam/geoiface)を作成する。
  2. その下に/usr/share/digikam/geoiface/*をsym-linkする。
  3. backend-googlemaps.htmlだけをdigikam6のもの(tarファイルをダウンロード・展開して取り出す)に交換する。
  4. AppRunの中のXDG_DATA_DIRSの設定する行で、以下のように、先頭に入れ換え用ディレクトリ($HOME/bin/digikam5-ai-ext/share/)を追加する(太字部)。
    • export XDG_DATA_DIRS=$HOME/bin/digikam5-ai-ext/share/:$DIR/usr/share/:$XDG_DATA_DIRS

そのAppRunを使うdigikamを起動したら、再び地図が出るようになった

 

PS. それにしてもAppImageだのFlatpakだのSnapだの、似たようなのがいっぱいあって面倒だし効率が悪いし間違えやすいから一つにして欲しい! ここにもLinux内の抗争があるのか? 馬鹿らしい。

  •   1
  •   1