もぐてっく

人は1つ歳をとるたび、1ビットづつ大きくなれると信じてた。

写真のバックアップ先を変えて焼き肉代を捻出した話と、rcloneの謎のエラーDuplicate object found in source - ignoring

この度、撮りためた写真のバックアップ先をGoogle OneからOffice 365 Business EssentialのOneDriveに乗り換えました。

Google One: 2TB \13,000/年
OneDrive: 1TB \7,128/年

現状の写真データのサイズは300GB強なのでこれで約\6,000の節約です。
焼肉食べに行こう。

早速愛用のrcloneの接続先をOneDriveに変更してバックアップ。
謎のエラーが出てコピーできないファイルが出ました。

rclone sync /media/fileserver OneDrive:/バックアップ/
2020/01/17 23:00:22 NOTICE: /写真/2016/20160310/20160310_102127_50753e729751ef106e3f66312ecb8fd1.mp4: Duplicate object found in source - ignoring
2020/01/17 23:00:22 NOTICE: /写真/2016/20160310/20160310_102403_e82903f2712db3d1d0d6cf3686ace851.mp4: Duplicate object found in source - ignoring

色々試行錯誤した後に言われたとおりにコピー元を見てみると、拡張子の大文字/小文字違いで同じファイルがありました。

 md5sum /media/fileserver/写真/2016/20160310/*
50753e729751ef106e3f66312ecb8fd1  /media/fileserver/写真/2016/20160310/20160310_102127_50753e729751ef106e3f66312ecb8fd1.MP4
50753e729751ef106e3f66312ecb8fd1  /media/fileserver/写真/2016/20160310/20160310_102127_50753e729751ef106e3f66312ecb8fd1.mp4
e82903f2712db3d1d0d6cf3686ace851  /media/fileserver/写真/2016/20160310/20160310_102403_e82903f2712db3d1d0d6cf3686ace851.MP4
e82903f2712db3d1d0d6cf3686ace851  /media/fileserver/写真/2016/20160310/20160310_102403_e82903f2712db3d1d0d6cf3686ace851.mp4

削除。

Ubuntu19.10にResourceSpace 9.1をインストールしようとしてハマった話

大量の写真をタグ付けして管理できるResourceSpaceってWebアプリがすごくよさそうだったので、lxdでUbuntu19.10を立ち上げてインストールすることにしました。

https://www.resourcespace.com/

しかしながら公式サイトに載ってる手順ではインストールが出来ず、試行錯誤の末なんとかインストールにこぎつけました。しんどかった。

この苦労、数か月後には絶対忘れてる自身があるので備忘録がてら差分を書いておこうと思います。

基本的には

公式サイトのインストール手順の「Ubuntu 18.04 and above(Ubuntu 18.04以降)」の要領で進めます。
恐らく18.04から何らか事情が変わったんだろうなぁ。

https://www.resourcespace.com/knowledge-base/systemadmin/install_ubuntu

ImageMagickのインストール

これがないと、ResourceSpaceのインストールは成功するものの、画像一覧にサムネイルが出ません。意味ないね。

apt-get install imagemagick

Apache2のドキュメントルートの変更

インストール手順では/var/www/resourcespaceにResourceSpaceを展開することになっていますが、Apache2のドキュメントルートは/var/www/htmlなので、このままではブラウザでアクセスすることができません。

/etc/apache2/sites-enabled/000-default.confのDocumentRootを/var/wwwに書き換える必要がありました。

MySQLに一般ユーザを作る

インストール手順はMySQLにrootユーザでアクセスすることを想定しているようですが、なんかうまくいきませんでした。
専用のユーザー"resourcespace"を作ることでなんとかなりました。

MySQLに接続する

mysql -u root

ユーザーを作成する

CREATE USER resourcespace@localhost IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'resourcespace';

MYSQL_NATIVE_PASSWORDを指定するのがキモです。
Ubuntu 19.10でインストールされるMySQL8ではデフォルトのパスワード認証方式が従来のMYSQL_NATIVE_PASSWORDからCACHEING_SHA2_PASSWORDに変更されています。
しかしながらResourceSpace側のMySQLにアクセスするPHPライブラリはそれをサポートしていないので、従来のMYSQL_NATIVE_PASSWORDを使って認証を行うようにMySQLに指示する必要があります。

権限を付与する

生まれたてのユーザーに自分の立場を分からせてやります。

GRANT ALL PRIVILEGES ON resourcespace.* TO 'resourcespace'@'localhost';

セットアップ画面のMySQLのユーザー名とパスワードに"resourcespace"と入力する

これで、ResourceSpaceがインストールできるはずです。

写真管理Webアプリ Lycheeのプラグインを書こうとした話

盆休みに溜まりに溜まったデジカメ画像を整理するソリューションを探したところ、Lycheeって言う良い感じのWebアプリを見つけました。

f:id:moguno:20190817160221p:plain:w500

  • 画像を複数選択してタグを打てる。
  • 画像の他に動画も管理できる。
  • サーバが低スペックでもサクサク動く。(Celeron J1900 1コア + メモリ1GB)

非常にいい感じ。

後は、既にアップロードしている画像を再アップロードしたときに重複を検知して除外してくれればなぁ・・・。

おっと。プラグイン機能があるじゃないですか。じゃあ書くか。

と、1日頑張ったのですが、色々調べてみると重複画像排除オプションが既に実装されていました。。。

f:id:moguno:20190817155926p:plain:w500

そんなこんなでプラグイン作成のモチベーションが急激に下がった今日この頃なのですが、せっかくなので得られた知見を書き残しておこうと思います。

Lychee本体のクラスを使うには

"\Lychee\Modules\使いたいクラス"をuseします。

use \Lychee\Modules\Log;
use \Lychee\Modules\Database;

PHPって15年ぶりくらいに書いたんですが、\を演算子(?)に使う言語って珍しいですね。

ログを出力するには

Logクラスの各種メソッドが使えます。

Log::error(Database::get(), __METHOD__, __LINE__, 'エラー');

ログはLycheeの[Show Logs]から確認できます。

f:id:moguno:20190817153450p:plain:w500

ちなみにログデータはファイルではなく、DBのlychee_logテーブルに格納されています。

プラグインは登録が必要

[Settings]を選択して設定一覧の最下部にある[More]を選択。

f:id:moguno:20190817153529p:plain:w500

Full Settings画面が出てくるので、[plugins]に名前空間\クラス名を記載します。

f:id:moguno:20190817153639p:plain:w500

セミコロン区切りで複数のプラグインを記載できます。

プラグインディレクトリ名・ファイル名と名前空間・クラス名は同名にする。

プラグインのパスがExamplePlugin/Example.phpの場合、名前空間はExamplePlugin。ファイル名はExample.phpとしないといけません。

namespase ExamplePlugin;

class Example implements SplObserver {
}

まとめ

そのうちEXIFの撮影日時をみて勝手にアルバム分けしてくれるプラグインを作りたいですね。