二度目のスタジオツアー。

再び、『ハリー・ポッター スタジオツアー』へと足を運びました。

ここを訪れてから原作の再履修を行っただけに、「答え合わせ」という気分です。

大講堂をイメージしたレストランや内部のセットは「このシーンに出て来たものか」と脳内での検証を一つ一つ行っていきました。

シリーズ全体で一番刺さったキャラクターであるギルデロイ・ロックハート先生(?)のコーナーが一区画だけだったのは残念。

『不死鳥の騎士団』でアンブリッジが出した教育令など、隅々まで映画の世界でした。

プリベッド通りのダーズリー家は家そのものが建てられているという念の入れようです。

  • 『賢者の石』で入学許可証が大量に送られた
  • 『アズカバンの囚人』でのワンシーン

なども再現。

非常に有意義で楽しい時間でした。

Redmine5.1に全文検索プラグインをインストール

Redmine 4.2では断念しましたが、5.1では有用なプラグインとなるので、こちらの手順化です。

概要

Redmineの検索機能を強化するプラグインを導入し、検索効率を上げます。

プラグイン名

動作を確認した環境

  • Redmine 5.1
  • mysql 8.0.3系
  • Ubuntu 22.04

前提

  • 筆者が用いているRedmineのDBはMySQLを用いているので、その環境での手順です。

導入時

  • パッケージ追加: 要
  • Gem追加:要
  • DBマイグレーション:要
  • 設定後のDBマイグレーション: 要

さっくりとした手順

  1. レポジトリ及び追加パッケージのインストール
  2. gitでレポジトリをダウンロード
  3. 新規ジェムをインストール
  4. DBマイグレーション
  5. Webサービス再起動
  6. Redmine管理画面での設定変更
  7. DB再マイグレーション(記事のインデックス化)
  8. 設定確認

レポジトリをインストールします。

sudo aptitude install-V software-properties-common lsb-release
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu $(lsb_release --short --codename)-security main restricted"
sudo add-apt-repository ppa:groonga/ppa

mroongaパッケージをインストールします。

  • レポジトリ追加後のアップデート
sudo aptitude update
  • パッケージのインストール
sudo aptitude install -V mysql-server-mroonga

MySQLの再起動を行います。

  • MySQL再起動
sudo systemctl restart mysql.service 
  • MySQL再起動確認
sudo systemctl status mysql.service 

全文検索プラグインインストール

  • Redmineのプラグインディレクトリに移動
cd /home/www-data/redmine/plugins && pwd

自分の環境に合わせます。

  • プラグインを配置
sudo -u www-data git clone  https://github.com/clear-code/redmine_full_text_search
  • プラグイン配置確認
ls -ld redmine_full_text_search

ディレクトリがあることを確認します。

  • Redmineのルートディレクトリに移動
cd /home/www-data/redmine && pwd

自分の環境に合わせます。

  • Bundle
sudo -u www-data bundle install
  • DBのマイグレーション
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
  • Apache再起動
sudo systemctl restart apache2

Redmine管理画面での設定変更

  1. Redmineに管理者アカウントでログインします。
  2. 管理>プラグインからFull Text Search pluginの設定をクリックします。
  3. スコアを表示と類似チケットを表示にチェックを入れて保存します。

既存文書のインデックス化

プラグインのGithubで以下の通り書かれているので、

You need to create index for existing data. You need to run full_text_search:synchronize task until no more synchronize target data.

これに対応します。

再びサーバでのコマンド操作です。

  • Redmineのルートディレクトリに移動
cd /home/www-data/redmine && pwd

自分の環境に合わせます。

  • インデックス化
sudo -u www-data RAILS_ENV=production bin/rails full_text_search:synchronize

容量によっては時間がかかります。

インデックス後、ブラウザでRedmineにアクセスし、検索できることを確認します。

備考

上記インデックス作成は既存データに対して用いるものであり、本プラグイン導入後は自動的に同期してくれるようです。

NextcloudのExternal StorageサービスでのArray to string conversionエラーに対処。

エラー概要

Nextcloud 28.x以降にバージョンアップしてから、ログで以下が大量に出力され続けていました。

Array to string conversion at /var/www/html/nextcloud/lib/private/Files/Cache/Scanner.php#224

こちらの対処を行います。

エラーが出る要件

  1. Nextcloud 28.x以降を利用している。
  2. External Storageプラグインを利用している。
  3. このプラグインで、S3(乃至はS3互換のオンラインストレージ)をマウントしている。
  4. マウントしたストレージにファイルやフォルダを保存した。

詳細:Nextcloud Hub 8, copying files to an External Storage configured as primary storage isn't reliable

環境

  • Ubuntu 20.04
  • Nextcloud 29.0.0
  • PHP 8.1
  • Apache 2.4
  • オンラインストレージサービスとしてwasabiを利用

解決策

上記issueに

Pretty sure this would be fixed by #43794. At least in my limited testing using the merge request as a patch: https://patch-diff.githubusercontent.com/raw/nextcloud/server/pull/43794.diff

とあったので、この通りに実施します。

さっくりとした手順

  1. rootに昇格します。
  2. パッチファイルを入手します。
  3. ファイルを適用します。
  4. Apacheを再起動します。

root昇格

sudo su -

Nextcloudはwww-dataユーザーのみアクセス可能と、厳しめのアクセス権が設定されているので、ここで昇格させます。

ディレクトリ移動

  • Nextcloudのルートディレクトリに移動
cd /var/www/html/nextcloud && pwd

自分の環境に合わせます。

cd lib/private/Files/Cache

ファイルバックアップ

  • Scanner.phpファイルのバックアップ
cp -pi Scanner.php /path/to/backup/directory/Scanner.php.$(date +%Y%m%d)

任意のバックアップディレクトリを指定します。

  • バックアップ確認
diff -u Scanner.php /path/to/backup/directory/Scanner.php.$(date +%Y%m%d)

差分がなければバックアップは成功です。

パッチ適用

  • wgetでパッチ入手
sudo -u www-data https://patch-diff.githubusercontent.com/raw/nextcloud/server/pull/43794.diff
  • パッチ適用
sudo -u www-data patch < 43794.diff 

patching file Scanner.phpと返ってくればOKです。

パッチ適用確認

  • 差分確認
diff -u /path/to/backup/directory/Scanner.php.$(date +%Y%m%d) Scanner.php
  • 差分結果
                                                }

                                                // Only update metadata that has changed
-                                               $newData = array_diff_assoc($data, $cacheData->getData());
-
+                                               // i.e. get all the values in $data that are not present in the cache already
+                                               // NOTE: we serialize then unserialize here because array_diff_assoc() doesn't 
+                                               // support multidimensional arrays on its own (and otherwise internally casts any 
+                                               // embedded array elements to attempt to compare them - not only generating warnings 
+                                               // like "Array to string conversion" but also, as a resut, overlooking real differences)
+                                               $newData = array_diff_assoc(
+                                                       array_map('serialize', $data), 
+                                                       array_map('serialize', $cacheData->getData())
+                                                       );
+                                               $newData = array_map('unserialize', $newData);
+                                        
                                                // make it known to the caller that etag has been changed and needs propagation
                                                if (isset($newData['etag'])) {
                                                        $data['etag_changed'] = true;
  • Apache再起動
systemctl restart apache2.service

既にrootに昇格しているので、sudoは不要のはずです。

  • パッチファイルを削除
rm 43794.diff 

エラー解消確認

  1. ブラウザでNextcloudサイトに管理者権限でログインします。
  2. 管理メニュー→ログへと進み、適用時刻以降に冒頭のログが出力されていないことを確認します。

同一サーバでのRedmineバージョンアップ。(5.1.x→5.1.y)

脆弱性などに対応するため、同一系統のRedmineのバージョンアップ手順、その5.1版での書き直しです。

環境

  • Ubuntu 22.04
  • 動かしていたRedmine:5.1.1
  • Apache 2.4 / mod-passangerでRubyアプリを使用(Ruby 3.0系)
  • MySQL 8.0.3

作業に備えての前提

  • 本手順では「使用するDBの削除」を伴います。作業の際には慎重に行って下さい。
  • Webサービスを止める/何も入っていないRedmineが途中でできるため、ユーザアクセスができない状況が発生します。

作業前のチェック

以下が必須です。

  • [ ] 作業影響について、利害関係者に周知している。
  • [ ] MySQLの管理者アカウントを所持している。
  • [ ] サーバに十分な空き容量がある。
  • [ ] 「一度DBを削除する」ことについて、作業者/確認者が重要度を理解している。

さっくりとはならない手順

  1. スナップショットのバックアップ (推奨)
  2. DBのバックアップ
  3. redmineのディレクトリを一度mvでリネームしてバックアップ。
  4. apache停止
  5. redmineのDBを消す。
  6. redmineのDBを新たに作る。(ユーザは全て権限があるので問題なし)
  7. apache再開
  8. ディレクトリを再作成し、マイナーバージョンが上がったRedmineを作る。
  9. themesとpluginを再配置。
  10. themesとpluginを再配置した状態でDBマイグレーション。
  11. DBリストア。
  12. 動作確認。

システム全体のバックアップ(推奨)

万一に備え、システム全体のバックアップを取ることを推奨します。AWSや仮想サーバ等の場合は、インスタンスをまるごとバックアップしておくと良いでしょう。

mysqldumpによるDBバックアップ

  • 保存ディレクトリに移動
cd /hoge

任意のバックアップディレクトリを指定します。

mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql

DB名やDBユーザは自分の環境に合わせます。

データ退避

  • Redmineのルートディレクトリの上に移動
cd /home/www-data && pwd

Redmineが格納されているディレクトリの親ディレクトリに移動します。筆者環境は/home/www-dataなので、自分の環境に合わせます。

  • ディレクトリがあることを確認
ls -ld redmine

退避対象のディレクトリがあることを確認します。

  • リネームして退避
sudo mv redmine redmine_$(date +%Y%m%d)
  • 退避確認
ls -ld redmine_$(date +%Y%m%d)

ファイルがあることを確認します。

apache停止

ここでWebサービスを停止するのは、DBを削除するためです。

  • apache停止前確認
systemctl status apache2.service

active(running)を確認します

  • apache停止
sudo systemctl stop apache2.service
  • apache停止後確認
systemctl status apache2.service

inactive(dead)を確認します

DB削除と再作成

この作業は慎重に行って下さい。

  • 管理者権限でmysqlにログイン
sudo mysql -u root -p
  • DB確認
SHOW DATABASES;

redmineのDBがあることを確認します。

  • RedmineのDBを削除
DROP DATABASE redmine;

DB名は再確認してください。

  • RedmineのDB削除確認
SHOW DATABASES;

RedmineのDBがないことを確認します。

  • 空のDB再作成
CREATE DATABASE redmine character set utf8mb4;

同じDBを作り直します。

  • 空のDB再作成確認
SHOW DATABASES;

作成したDBがあることを確認します。

EXIT

ソースダウンロード

  • ディレクトリ作成
sudo mkdir /home/www-data/redmine

自分の環境に合わせます。

  • ディレクトリの所有者変更
sudo chown -R www-data:www-data /home/www-data/redmine
  • svnダウンロード
sudo -u www-data svn co https://svn.redmine.org/redmine/branches/5.1-stable /home/www-data/redmine

5.1系の最新安定版をダウンロードします

退避させたディレクトリからconfigファイルコピー

  • 退避させたRedmine→ 新規に作成したRedmineにコンフィグをコピー
sudo cp -pi /home/www-data/redmine_$(date +%Y%m%d)/config/database.yml /home/www-data/redmine/config/database.yml

コピー元・コピー先は自分の環境に合わせます。

  • コンフィグの中身確認
cat /home/www-data/redmine/config/database.yml

コピーされていることを確認します。

  • 退避させたRedmine→ 新規に作成したRedmineにメール設定情報などをコピー
sudo cp -pi /home/www-data/redmine_$(date +%Y%m%d)/config/configuration.yml /home/www-data/redmine/config/configuration.yml

コピー元・コピー先は自分の環境に合わせます。

  • 設定情報の中身確認
cat /home/www-data/redmine/config/configuration.yml

Redmineインストール

  • ディレクトリ移動
cd /home/www-data/redmine
  • bundle
sudo -u www-data bundle install --without development test --path vendor/bundle
  • シークレットトークン発行
sudo -u www-data bundle exec rake generate_secret_token
  • DBマイグレーション
sudo -u www-data RAILS_ENV=production bundle exec rake db:migrate
  • 言語設定
sudo -u www-data RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data

apache再開

  • apache再開前確認
systemctl status apache2.service

inactive(dead)を確認します

  • apache再開
sudo systemctl start apache2.service
  • apache再開確認
systemctl status apache2.service

active(runnning)を確認します

再作成後の仮パスワード作成

対象のRedmineにアクセスします。

IDとパスワードがadmin / admin に戻っている状態のため、ログイン後、仮パスワードを発行します。

退避したディレクトリからデータを再配置

  • 退避したRedmineのプラグインディレクトリに移動
cd /home/www-data/redmine_$(date +%Y%m%d)/plugins
  • プラグイン一式のコピー
sudo cp -pir ./* /home/www-data/redmine/plugins/
  • 退避したRedmineのテーマディレクトリに移動
cd /home/www-data/redmine_$(date +%Y%m%d)/public/themes
  • テーマ一式のコピー
sudo cp -pir ./* /home/www-data/redmine/public/themes/

いくつかのファイルを上書きするか求められるので、yで返します。

  • 退避したRedmineの添付ファイル格納ディレクトリに移動
cd /home/www-data/redmine_$(date +%Y%m%d)/files
  • 添付ファイル一式のコピー
sudo cp -pir ./* /home/www-data/redmine/files/
  • 退避したRedmineのログディレクトリに移動
cd /home/www-data/redmine_$(date +%Y%m%d)/log
  • ログ一式のコピー
sudo cp -pir ./* /home/www-data/redmine/log/

プラグイン再マイグレーション

  • Redmineのルートディレクトリに移動
cd /home/www-data/redmine
  • bundle
sudo -u www-data bundle install
  • プラグインのDBマイグレーション
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production

apacheリスタート

  • apache再開前確認
systemctl status apache2.service

active(running)を確認します

  • apache再開
sudo systemctl restart apache2.service
  • apache再開確認
systemctl status apache2.service

active(runnning)を確認します

DBリストア

  • mysqldumpを行ったディレクトリに移動
cd /hoge && pwd
  • DBリストア
mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql

パスワードはredmineインストール時に設定したDBユーザのパスワードです。

apacheリスタート

  • apache再開前確認
systemctl status apache2.service

active(running)を確認します

  • apache再開
sudo systemctl restart apache2.service
  • apache再開確認
systemctl status apache2.service

active(runnning)を確認します

動作確認

この状態でRedmineに管理者権限でログインします。手順通りなら

  • テーマ
  • 添付ファイル
  • プラグイン
  • チケット一覧

などが有効に動いています。

また、管理>情報へと進み、バージョンが上がっていることを確認します。

作業後-退避前のディレクトリ一式を削除-

  • 退避させたディレクトリの直上に移動
cd /home/www-data

自分の環境に合わせます。

  • 退避ディレクトリ確認
ls -ld redmine_$(date +%Y%m%d)

ディレクトリがあることを確認します。

  • 退避ディレクトリ削除
sudo rm -rf redmine_$(date +%Y%m%d)
  • 退避ディレクトリ確認
ls -ld redmine_$(date +%Y%m%d)

ディレクトリが無いことを確認します。

作業後-MySQLのダンプファイルを削除-

  • mysqldumpを行ったディレクトリに移動
cd /hoge && pwd
  • ダンプファイル確認
ls -l redmine_backup.$(date +%Y%m%d).sql

ファイルがあることを確認します。

  • ダンプファイル削除
rm redmine_backup.$(date +%Y%m%d).sql
  • ダンプファイル削除確認
ls -l redmine_backup.$(date +%Y%m%d).sql

ファイルが無いことを確認します。

備考

Redmineはバージョンさえ合っていれば

  • DB
  • 設定ファイル
  • 添付ファイル
  • プラグイン
  • テーマ
  • ログ

を移行することで、別のサーバへの引っ越しが可能になります。

redmine5.1にインストールされているAdditilonals/Addtional_tagsプラグインをアップデート

概要

Redmineに強力なマクロをもたらすAdditonal Pluginsとタグ付けでチケット間の横断検索を可能にするAdditional_tagsプラグインをアップデートします。

環境

  • Ubuntu 22.04
  • Redmine 5.1
  • Apache2
  • MySQL
  • Ruby 3.0

で稼働しています。

※このプラグインの2024/04/30現在の最新バージョンは、Redmine 4.2には非対応です※

さっくりとした手順

  1. DBのバックアップを取ります。
  2. additonalsのバージョンアップを行います。
  3. additonal_tagsのバージョンアップを行います。
  4. 動作を確認します。

DBバックアップ

影響範囲が大きいので、DBのバックアップは取っておきます。

  • バックアップディレクトリに移動
cd /path/to/backup/directory && pwd

任意のディレクトリを指定します。

  • DBバックアップ
mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql
  • u redmineのDBユーザー
  • --no-tablespaces --single-transaction DB名

です。自分の環境に合わせます。

  • DBバックアップ確認
less redmine_backup.$(date +%Y%m%d).sql

内容が閲覧できることを確認します。

Additonalsアップデート

  • プラグインディレクトリに移動
cd /home/www-data/redmine/plugins/additonals && pwd

Redmineのプラグインディレクトリは自分の環境に合わせます。

  • git pull
sudo -u www-data git pull
  • Redmineのルートディレクトリに移動
cd ../../ && pwd
  • bundle
sudo -u www-data bundle install
  • マイグレーション
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
  • Redmine(apache)サービス再起動
sudo systemctl restart apache2.service

Additonal_tagsアップデート

  • プラグインディレクトリに移動
cd /home/www-data/redmine/plugins/additional_tags && pwd

Redmineのプラグインディレクトリは自分の環境に合わせます。

  • git pull
sudo -u www-data git pull
  • Redmineのルートディレクトリに移動
cd ../../ && pwd
  • bundle
sudo -u www-data bundle install
  • マイグレーション
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
  • Redmine(apache)サービス再起動
sudo systemctl restart apache2.service

additonal_tagsがadditonalsに依存しているプラグインのため、安全策として1回ずつ再起動しています。

動作確認

Redmineに管理者権限でログインし、正常に動作することを確認できれば動作完了です。

弁当箱の更なる新調。

このお弁当箱

激しく洗うとパッキンが外れやすく、元に戻すのも面倒だったということが判明し、結局はあらたな弁当箱を買い直しです。

最近の流行であるドーム型の蓋が決め手です。また、箸の収納スペースがないだけ洗いやすいこと

しっかり、食べ終わった後に低くできる収納性もありました。

「このお弁当箱に何を盛れるのか、どのぐらい詰められるのか」

を考えるより先に試作品を作っていました。

この容量と幅広なサイズは好きな感じです。

広さと深さがちょうどいいので麺類も詰められました。

連休のソロゲー。

恒例の、まとまった時間の中でのボードゲームです。

カルカソンヌ

山を3つに分け、捲ったタイルにミープルが置けるならば必ず置かなくてはならないというバーストルール。

ある程度リソースを見ながら行っていたものの、29点止まりでした。

アルルの丘

寝る前にセットアップをしておいたアルルの丘。朝起きてすぐにプレイです。

建物の組み合わせと、「それをどのタイミングで発動させていくか」が決まりました。

最終ラウンドで15点の建物を2つ同時に建てるという豪快なコンボも決まりました。

『ライザのアトリエ3』クーケン島でのインゴット素材採取。

周回プレイ時のメモです。

武器や防具の原料となるインゴット素材。

  • インゴット
  • スタルチウム
  • クリミネア
  • ゴルドテリオン
  • グランツオルゲン

は、実はクーケン島だけで調合は可能です。

インゴット

これに関しては隠れ家周辺でアマタイト鉱を採取できるので問題ないです。

スタルチウム-火山ヴァイスヴェルク-

ランドマーク『古い吊り橋』のやや北、

魔石の傀儡がスタルチウムに必要な

  • アークナイト
  • ペントナイト

をドロップします。クレリア地方でのノーマルクエスト/ワールドクエストで必要になります。

クリミネア- リーゼ峡谷-

リーゼ峡谷の土塊の使役者が

  • 創世の逆さ石
  • 白霊岩

をドロップします。

このクリミネアはクーケン島のワールドクエストで必要になります。

ゴルドテリオン-リーゼ峡谷-

同じクリーゼ峡谷の緑のゴーレム、メテオライトドールがゴルディナイトをドロップします。

クリミネアからのレシピ変化(品質指定あり)なので、旅人の水珠などで品質を上げてから調合します。

グランツオルゲン-火山ヴァイスヴェルクorリーゼ峡谷-

ひとつは

ノーマルクエスト『ライザの手も借りたい』達成後、見聞録で現れる巨岩の兵士からのドロップ。

そしてもう一つは、クーケン島のワールドクエストを達成後にランダムクエストとして出てくる

リーゼ峡谷に時々出てくる巨岩の兵士からのドロップ。

  • 七煌原石
  • セプトリエン

が入手可能です。また、ここから賢者の石に必要なエーテルコアも持っています。

百均グッズの弁当箱とフィードバック。

ふと思うことがあって弁当箱を新しくする機会があり、

  • ある程度の容量があること
  • レンジ対応であること
  • ロック機構が備わっていること
  • スリムな二段

という要件で探していたところ

百均(キャンドゥ)にて発見。さすがに500円弁当ですが、指定した要件通りです。

こちらを一週間ほど使ってみて

想像以上に入る。

鮭の切り身が丸々入り、副菜を入れてもなお余裕があります。底に卵焼きを追加したほどです。

開け閉めがやや大変。

ロック機構が少し不安定です。

パーツが少なめですっきりとしたデザイン。

  • 上段
  • 下段
  • 内蓋
  • 外蓋

の4種類なので、割と洗いやすいのも好感が持てます。

残る検証は耐久性や液漏れがないか。これを少し検証してから、このまま使うか他のに変えるかを確かめます。

Nextcloud 29.0アップグレード後の処理。(テーブルインデックス追加)

概要

Nextcloudを29.0にアップデート後、管理画面で以下のエラーが出てきました。

データベースにいくつかのインデックスがありません。 大きなテーブルにインデックスを追加すると、自動的に追加されないまでに時間がかかる可能性があるためです。 "occ db:add-missing-indices"を実行することによって、インスタンスが実行し続けている間にそれらの欠けているインデックスを手動で追加することができます。 インデックスが追加されると、それらのテーブルへのクエリは通常はるかに速くなります。 オプションのインデックス "oc_npushhash_di" がテーブル "notifications_pushhash"にありません

この問題に対処していきます。

Nextcloudが実行されているサーバにSSHログインして作業を行います。

環境

  • Ubuntu 20.04 または Ubuntu 22.04
  • PHP 8.1
  • Apache 2.4
  • MySQL
  • Nextcloud 28.x→29.0にアップグレード

ディレクトリ移動

cd /var/www/html/nextcloud/ && pwd

自分の環境に合わせます。

occ実行

  • 管理画面で出てきたコマンドを実行
sudo -u www-data php occ db:add-missing-indices
  • 実行結果
Adding additional oc_npushhash_di index to the oc_notifications_pushhash table, this can take some time...
oc_notifications_pushhash table updated successfully.

エラー解消確認

  1. 上記対処を行ったNextcloudサイトに管理者権限でログインします。
  2. 管理画面で、このエラーが解消されていれば完了です。

Page 1 of 217

Powered by WordPress & Theme by Anders Norén