投稿者: manualmaton Page 117 of 289

お茶道具、刷新。(割れないティーポット感想)

従来の環境を変えうる力がありました。

やってみたかったこと

業務中に「ティーポットを使った本格的なお茶」を飲みたいという希望は漠然と抱えていたものの、次の問題点がありました。

やってみたかったことの問題点

「何かがあって壊したくない」に尽きます。

陶器やガラス製ではお茶を入れるときに人や物にぶつかって割れたときの被害が甚大。金属の場合は錆や変形などの恐れがあります。この解決策が最近見つかったという感じです。

問題点に対する解決策

こちらの「割れない」ティーポット。強化プラスチックでできているため、給湯室などで衝撃があっても割れる心配は無用です。また、細かいステンレスメッシュはお茶袋を使うことなくお茶を入れることができるだろうという判断です。

使ってみての感想

家での使い勝手が上々だったので職場でも使いました。

耐衝撃性の安心感

これは予想通りです。紹介動画でもあるように、この「割れない」と謳われているとおりの頑丈さによる安心感。
破片が飛散することによる被害を減らす(というかなくす)ことができました。

保温性とレンジによる再加熱

これは予想外のことでした。思った以上に入れたお茶の温度を保ってくれます。また、作業や打ち合わせで長時間席を離れたとしても、「茶こしを外してティーポットごとレンジにかける」という力業が可能。これによって冷めたお茶の温め直しが気軽にできるのは思わぬ収穫でした。

注意した方がいいこと

細かすぎる茶葉

ステンレスの茶こしは小さめの茶葉でも受け止めてくれましたが、例外がありました。

  • CTCの茶葉
  • ルイボスティー

です。特に後者はたわしで数回こする必要があったので、こればかりはお茶パックに詰める運用が出てきます。

注ぎ口の変色

茶渋が溜まるところの宿命と言えそうです。洗いにくいので漂白剤や重曹による定期クリーニングが必要だと感じました。

総じて

  • 比較的安価であり
  • 大量のお茶を作ることができて
  • 軽く
  • 壊れず
  • 保温性が高い

と、オフィスワークでの喫茶の条件を満たす品でした。

ボードゲーム『タッジーマッジー』感想。

18枚のカード、2回のドラフトでひりつく勝負が楽しめる「花束」をモチーフにしたカードゲームです。

概要

プレイヤーはロンドンでお茶を楽しむ人たち。合間合間に花束を贈り、その(行間ならぬ)花間にメッセージを込めようとしています。限られた時間の中で、誰が一番メッセージをうまく伝えることができるでしょうか?

ゲームシステム

いわゆるドラフトとセットコレクション。流れは以下の通りです。

  1. 各プレイヤーには2枚のカード(花)が配られます。
  2. 1枚を表(花束)、もう1枚を裏(思い出)として隣接するプレイヤーに公開します。
  3. 隣のプレイヤーはそれらの中から向きを変えずに受け取ります。選ばれなかったカードは保持します。(裏のカードは受け取るまで見られません)
  4. これを2回繰り返し4枚の花からなるアレンジを作ります。このとき、「披露の準備」と書かれてればそれに従います。
  5. カード(花)に従った得点計算を行います。

これを3ラウンドに渡って繰り返し、一番高い得点を獲得したプレイヤーが勝利となります。

良かったと思った点

コンボの多彩さ

18枚のオールユニークなカードはいずれも組み合わせれば得点の相乗効果が見込まれます。運と戦略が合致して大量得点を出したときの喜びはかなり得がたいものがあります。

虚々実々のブラフ

上述したように「一枚は表/一枚は裏」で隣のプレイヤーに選択を任せるため、

「表に弱めのカードがあるけど裏はいいカードなのか?」
「相手、既にこちらが取ったカードとコンボするカード見せてるけど……」

と、裏をかいたりしてやられたりの駆け引きが最大の魅力です。

シンプルで美麗なイラストに込められたメッセージ

「カード」というより「タイル」と言った方がいい大きく厚いカード(日本版)に描かれた美麗なイラストは並べるだけで花束という形。
いずれもカード効果と合った花言葉が書かれているのもまた魅力の一つです。

やや残念だと思ったところ

経験者有利となるテキスト量

TCG慣れしていない人にはちょっと手間取るテキストがカード上にいくつかあります。(特に思い出と花束の位相を参照するカードなど)そして、そのテキスト慣れがそのままゲーム上の得点行動につながります。

  1. 最初に全てのカードを全プレイヤーに見せる
  2. インスト時に実際の流れを説明すると共に得点を披露する

の処理は必要です。

“徒花”マリーゴールドの使いどころ

これは一項目を使うべき問題。

このカードは披露の準備(得点計算の前)として他の花を捨て札にする強烈なデメリットがあります。
これによってコンボの邪魔となるカードを払うことができるのもまた事実ではありますが、引いた(引かれた)時に顔に出るほどです。

まとめ

最初に言ったように、たった18枚、2回のドラフト。4枚のカードで駆け引きやコンボを楽しめるのは、さすが『ウイングスパン』のデザイナーによる作品。
15分~30分と手短に終わるので言語依存に抵抗がないプレイヤーがいる中でのスターターやアイスブレイクにぴったりでした。

ボードゲーム『キャンバス』感想。

ようやく崩す機会がありました。話題になっていただけあって、

  • とにかく映える盤面
  • 比較的シンプルでわかりやすいルール
  • 高いリプレイ性
  • 楽しい感想戦

などが秀逸なゲームとなっていました。

概要

プレイヤーは芸術祭に参加する画家。コントラストや強調、余白などを意識しながら主催者の意向に沿うように定められた条件に沿った絵を出品していきます。

良かったと思った点

視覚に訴えるコンポーネント群

3枚のクリアなカードを背景のカードと組み合わせて一対の絵にするアイディアはとかく壮観。ゲームが進むごとに盤面が華やかになり、「絵を出品する」気分を高めてくれます。

インストしやすいルール

プレイヤーのアクションは2つのみ。

  1. カードを取る
  2. カード3枚を組み合わせてリボン(得点)を得る

右に行けば行くほど資源(パレット)を消費する制限がカードを取るアクションで発生するものの直感的で分かりやすいです。絵を組み合わせることによって発生する細かい得点計算も裏に書かれている親切設計なのもポイントです。

上記のリボン(得点_を成す条件も毎回のように組み合わせが変わりますし、一定数存在する特別ボーナス(銀リボン)もあるので「ああでもないこうでもない」とのジレンマに悩まされるでしょう。

今風の脱落しないゲーム進行

サドンデスもなければ失点要素もありません。また、各プレイヤーには「3枚の絵」が確実に残るので最後までゲームに参加できます。

やや残念だと思ったところ

ダウンタイムの長さ

「組み合わせによって効率的な得点を重ねられる」が弱みになる形。高得点を目指すプレイヤーがいると手番が遅くなりがちです。(特に条件が複雑な場合)

写真撮影の悪条件

これは「映え」のお話。

アクリル板+スリーブと光が乱反射する悪条件が揃います。進行中や感想戦で写真をアップしたい方がいる場合は、その旨を伝える方がベターです。

まとめ

  • インパクトも見栄えも十二分なコンポーネント
  • 分かりやすいルール
  • 程よく終わるプレイ時間

はライト層を引きつける要素に満ちあふれています。特に、「どのカードをどの順番で重ねていくか」はアナログゲームの強みと言えるでしょう。

個人的には壁掛け用の穴まで箱にあり、パッケージそのものが一枚の絵になるのが特にお気に入り。
(インテリアとして機能するためにずっと部屋に飾られて崩す機会が失われていたほどです)

そのため、飾りにすることなく普通に遊んでいきたいと思った一本でした。

続・MySQLの自動バックアップ。(パスワードによる暗号化付与)

こちらの記事で挙げたRedmineなどのMySQLを実行するスクリプト。

この問題点を修正します。

問題点

  • むきだしのSQLファイルが平文で格納されてしまうのはセキュリティ的によろしくありません。
  • MySQLのバックアップ時に使うアカウントファイルが誰でも読み取れるのも問題です。

そこで、バックアップされたファイルにパスワードをかけることで簡単な防波堤を作ることにします。

前提

上記URLに併せます。

  1. MySQL dumpを行うDBにRELOAD権限があること。
  2. 次の環境で動作を確認しています。
  • Ubuntu 20.04
  • MySQL 8.0.32

実施した手順

さっくりとした手順

  1. バックアップディレクトリを作成します。
  2. DBにアクセスするためのアカウント情報を記したファイルを作成します。
  3. 開封パスワードを格納するディレクトリを作成します。
  4. バックアップスクリプトを作成します。
  5. crontabに登録します。

バックアップディレクトリを作成します。

sudo mkdir -p /home/backup/mysql
# 運用に合わせて指定ください。ファイルサーバや別パーティションにマウントしている方がサーバ事態の障害発生でも冗長化を持たせられます。

sudo chown -R hoge:hoge /home/backup/mysql
# ディレクトリの所有者をログインユーザに修正します

cd /home/backup/mysql && pwd
# 指定したディレクトリに移動します

DBにアクセスするためのアカウントファイルを作成します。

Cronによる自動実行を前提としているため、スクリプト実行時にDBユーザとパスワードを記したファイルを読み込むことでセキュリティのリスクを抑えます。

sudo mkdir -p /home/hoge/db_password
# 運用に合わせて指定ください。

cd /home/hoge/db_password && pwd
# 指定したディレクトリに移動します

以下の内容を教義・信仰に沿ったエディタで作成します。(【】内は取り除き、自分の設定に合わせます)

  • アカウントファイル内容
    • ファイル名:account.txt
[client]
user = 【RedmineのDBユーザ】
password = "【RedmineのDBユーザ用パスワード】"

その後、このファイルの読み取り権限を変更します。

chmod 400 account.txt

ls -l account.txt
# パーミッションが400であることを確認します

アカウントファイルでアクセスできることを確認

mysql --defaults-extra-file=【アカウントファイルを格納したディレクトリ】/account.txt

#MySQLのプロンプトが出れば成功です。exitで抜けます。

スクリプト作成

以下の内容を教義・信仰に沿ったエディタで作成します。

  • スクリプト内容
    • スクリプト名:pw_mysql_daily_backup.sh
#!/bin/bash

## 変数ここから ##
# SQLをバックアップするディレクトリ(保管先)を指定します。運用に合わせて指定ください。
backup_dir="/home/backup/mysql"
# 保持するバックアップの世代を日数で指定します。
keep_days=7
# ファイルに付与する日付/作業ディレクトリ名/バックアップファイル名を指定します。
current_date=$(date +%Y%m%d)
backup_name="redmine_mysql_${current_date}"
zip_file="redmine_mysql.${current_date}.zip"
# アカウントファイルを指定します。運用に合わせて指定ください。
credentials_file="$HOME/redmine/account.txt"
# パスワードを記録するファイル名を指定します。運用に併せてして指定ください。
password_dir="$HOME/restore_redmine"
password_file="${password_dir}/mysql-restore.$current_date.txt"
# redmineのデータベース名を指定します。
database_name=redmine
# バックアップ時に指定するオプションを指定します。
options="--defaults-extra-file=$credentials_file --no-tablespaces --single-transaction"
## 変数ここまで ##

## 処理ここから ##

# 1.アカウントファイルのパーミッションが400かどうかチェックします。
# 400以外は処理そのものを終了します。
permissions=$(stat -c "%a" "$credentials_file")
if [ "$permissions" != "400" ]; then
    echo "アカウントファイルのパーミッションは400である必要があります。"
    exit 1
fi

# 2.一時的なバックアップディレクトリを作成します。
mkdir "${backup_dir}/${backup_name}"

# 3. mysqldumpを実行してデータベースのバックアップを取ります。
mysqldump $options -h localhost $database_name > "${backup_dir}/${backup_name}/${backup_name}.sql"

# 4. パスワードによる暗号化を実施します。
password=$(openssl rand -base64 12)
cd "${backup_dir}/${backup_name}"
zip -r "${backup_dir}/${zip_file}" -P "$password" .
cd -

# 5. 一時的なバックアップディレクトリを削除します。
rm -rf "${backup_dir}/${backup_name}"

# 6. 解凍パスワードを指定ディレクトリに保存します。
echo $password > $password_file

# 7.パスワードの読み取り権限を600に変更します。
chmod 600 $password_file

# 8. 保持期間より古いバックアップファイルを削除します。
find "$backup_dir" -name "redmine_mysql.*.zip"  ! -type f -newermt "${keep_days} days ago" -delete
find "$password_dir" -name "*restore*.txt" ! -type f -newermt "${keep_days} days ago" -delete

## 処理ここまで

前回との修正点

  1. 変数と処理のセクションを明確化しています。
  2. アカウントファイルのパーミッションチェックを行い、400以外は処理を中止します。
  3. opensslで生成したパスワードで暗号化します。(このパスワードはランダムで生成されるので運用者は覚える必要がありません)
  4. 圧縮と同時に暗号化を行うので、gz形式からzip形式に変更しています。
  5. このパスワードを任意のディレクトリに転送します。
  • 実行権限の付与
chmod +x pw_mysql_daily_backup.sh

動作確認

cd 【スクリプトを格納したディレクトリ】 && pwd
bash pw_mysql_daily_backup.sh

以下を確認します。

  1. エラーなく実行できること
  2. バックアップ格納ディレクトリにredmine.sql.実行日付.zip形式でファイルが作成されること
  3. パスワードファイル格納ディレクトリにファイル名.実行日付.txt形式でファイルが作成されること
  4. unzip redmine.sql.実行日付.zipでファイル解凍時にパスワードを確認されること
  5. パスワードファイルで暗号化されたファイルを解凍することができること

Crontab設定

Cron登録

crontab -e

登録内容例

0 0 * * * /home/backup/mysql/pw_mysql_daily_backup.sh
# 実行時刻、頻度などは自分の運用形態に合わせます。
# また、既に平文でのバックアップスクリプトを設定している場合はコメントアウトして処理を外します。

Cron登録確認

sudo tail -20 /var/log/cron.log

操作時刻に

  • BEGIN EDIT
  • REPLACE
  • END EDIT

が表示されれば設定は完了です。

動作確認日

2023/02/18

特撮風背景。(特撮爆破アクリルスタンド感想)

ニュース記事を見て一目惚れした商品が届きました。

特撮爆破アクリルスタンド

この、特撮でよく見る爆破シーンを再現できるというアイテム。「これは万能感ある」と即座に注文。

作例

まずはアクリルスタンドと併せてみます。

爆炎と爆煙。これだけでもインパクト十分。

次はフィギュアの背景にします。

これまた爆破オチが漂う風景となりました。

1/7の立像との撮影

商品の高さは20cmほど。ソフビやねんどろいどなどには十分な高さであるものの、1/7以上の立像には高さが足りません。

そこで、背景をリフトアップして被写体をアップにします。

結果は上々です。今後の撮影シーンの選択肢が更に増えました。

ChatGPTによるスクリプト変換。(bash → Ruby)

ことのあらまし

手なりで作ったシェルスクリプトを発展させたり可読性を高めるために利用しているChatGPT。

考えを発展させて「スクリプトの変換はできるのではないか」と考えました。

元となったスクリプト

こちらにある

cat error.log | awk 'match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) { print  substr($0, RSTART, RLENGTH) }' | sort | uniq > /var/lib/redmine/log/suspicious_ip/suspicious_ip.`date +%Y%m%d`
  • error.logを読み込み
  • IPアドレスにマッチする正規表現を取り出し
  • ソートした上で重複を排除
  • 指定のディレクトリに書き出す

という一文のシェルスクリプトをRubyで動かすにはとChatGPTに質問しました。

出来上がったRubyスクリプト

require 'date'

## 変数指定ここから
# error.log の格納ディレクトリ
log_dir = '/path/to/log_dir'
# error.log の名前
log_file = 'error.log'
# 別ファイルの出力ディレクトリ
output_dir = '/path/to/output_dir'
# 重複を排除する場合は 1、しない場合は 0 を指定
remove_duplicates = 1
# 別ファイルの名前
output_file = 'output.txt'
# IPアドレスを抜き出すための正規表現パターン
ip_regex = /client (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/
# error.log ファイルのフルパス
log_path = File.join(log_dir, log_file)
## 変数指定ここまで

# error.log ファイルを開く
File.open(log_path) do |file|
  # IPアドレスのみを格納する配列
  ips = []

  # 各行をチェックする
  file.each_line do |line|
    # 正規表現パターンに一致するか確認する
    match = line.match(ip_regex)
    if match
      # 一致した場合、IPアドレスを配列に格納する
      ips << match[1]
    end
  end

  # 重複を排除する場合
  if remove_duplicates == 1
    ips.uniq!
  end

  # 昇順にソートする
  ips.sort!

  # 結果を出力するファイルのパス
  output_path = File.join(output_dir, "error_#{Date.today.strftime('%Y%m%d')}_#{output_file}")

  # 結果を出力する
  File.open(output_path, 'w') do |file|
    ips.each do |ip|
      file.puts ip
    end
  end
end

スクリプトは長くなりましたが、以下の利点があります。

  • 読み込むディレクトリや正規表現のパターンを変数化しているため、他のログにも転用可能
  • 重複を排除するかしないかを決められる

また、可読性も高くなっています。

何より、シェルスクリプトの動きをRubyで動かすための文法を学べるのも素晴らしく。

今後の作業の大きな力になります。

光る文字盤、照らす床面。-百均グッズの撮影用小物(その42)-

「百均」とは言えない価格だけあって、かなりの大物です。

LED ライトボックス

買ってみたのはこちらのライトボックス。「1,000円」だけあって、かなりの大きさです。

厚みのある板と透明プラ板の文字。隙間のスリットに差し込むことで、パッケージ絵にあるように文字を光らせることができるという仕掛け。

屋内撮影での検証

見た感じでは屋外での利用が想定されているよう。屋内でも同じことができないかと検証です。

わかっていたことですが、背面において光らせると逆光になります。それはそれで面白いのですが、別の可能性を見出しました。

すなわち:「これだけの面積を光らせることができる」特性です。

下からの光

試しに「光る床板」として使ってみたら、1/6サイズのフィギュアでも光が届くようになりました。ここに少し工夫。

クリアファイルを敷いた上で光らせると、その模様がほのかに光ります。

こういったクリアオブジェクトを於けば更に反射が増します。

これはかなり楽しめるグッズと言うか「ステージ」になります。

「檸檬」と「ローズ」。(丸善コラボLAMY 入手-3-)

このシリーズも揃ってきました。

今回入手した丸善コラボのLAMY。色はローズです。

この淡いのに目立つ色は視認性も抜群ですし、こういう撮影にも映えます。

  • 比較的入手しやすい価格
  • デザインに統一感があり
  • コラボや限定などの豊富なバリエーション
  • 勝手知ったる書き心地
  • スクリュー式でないためにさっと書ける

のはLAMYの強みです。

洗浄と、再詰め替え。(プレピー with コンバータ)

作業を実施した背景

とても安価なのに書き味がよく、コンバータと組み合わせることで様々なインクを入れることができる万年筆「プレピー」。

シールキャップによりインクの持ちが良かったのが(自分にとって)徒となりました。

インク、何を入れたのか問題

調子に乗って本数を増やし、その場のノリでインクを詰めていたので、いざ、インクを補充する時に

「これ、何色を詰めたっけ」

という疑問が湧き起こります。特に、青系のインクは似通っていたので更に迷いました。

解決策

そこで、ほとんどのプレピーのインクが尽きたタイミングを見計らって

  1. 全てのプレピーを分解洗浄し
  2. 乾燥し
  3. インクを再詰め替え
  4. その際にしっかりと記録を行う

でした。

作業開始に当たって

分解洗浄後、1週間ほど乾燥させるので作業忘れを懸念。そこで、Redmineでチケットを発行。早速の作業を開始です。

インクを抜きつつ水洗い

水を入れた容器に浸しつつ、インクを抜いては水をコンバータ内に入れて洗っていきます。定期的に水を交換し、インクの水色がなくなるまで繰り返します。

超音波洗浄

全てのパーツを分解。
更に超音波洗浄器に入れてこびりついたインクを抜きます。全部で9本あったのでここが一番時間がかかりました。

乾燥

入念に乾燥。ほぼ1週間をかけました。これで、ようやく準備が整います。

インクの再定義

同じ轍を踏まないように、以下、何を詰めたかの記録を行ってからインクを詰めます。

万年筆ボディインク色備考
プレピー黒(0.3mm)霧雨蜂のシール
プレピー黒(0.2mm)竹炭
プレピー黒(0.2mm)LAMY黒インクマステ
プレピー黄色(0.3mm)蛍火
プレピー紫(0.3mm)写楽黒茶
プレピー緑(0.3mm)竹林
プレピー赤(0.3mm)歌麿梅紫
プレピーピンク(0.3mm)秋桜
プレピー青(0.3mm)深海

こうしてできあがったのがこちら。

こういう洗浄は他にも定期的に行いたいものです。

また、こういう風にいくつかのステップがある作業をRedmineのチケットに残すことの重要さを改めて思い知りました。

https://atelier.reisalin.com/issues/13

Redmineの細かな用語を変更。(message_customizeプラグイン導入)

概要

細かな用語を変更してくれるプラグインを導入します。

プラグイン名

動作を確認した環境

Redmine 4.2

導入時

Gem追加:不要
DBマイグレーション:不要

手順

さっくりとした手順

  1. SSHログイン後、Redmineプラグインに移動
  2. gitでレポジトリをダウンロード
  3. Webサービス再起動

ディレクトリに移動します。

cd /home/www-data/redmine/plugins
# 自分の環境に合わせます。

プラグインを配置します。

sudo -u www-data git clone https://github.com/farend/redmine_message_customize

ls -ld redmine_message_customize
# このディレクトリがあることを確認します

Webサービスを再起動します。

sudo systemctl restart apache2

設定後の動作

  1. Redmineに管理者アカウントでログインします。
  2. 管理>メッセージのカスタマイズが表示されればインストールできています。

設定例

例として、additional_tagsプラグインに表示されている誤訳を変更しようと思います。

  1. Redmineに管理者アカウントでログインします。
  2. メッセージのカスタマイズをクリックします。

ここから、「金額」と入力します。

「label_amount_tags」を選択します。

「金額 tags」と表示されるので、「タグ総数」と変更してみます。

変更後に保存をクリックします。

保存後、該当箇所を表示します。

表示が変更されることを確認しました。

他の項目も同様に修正します。

動作確認日

2023/02/10

Page 117 of 289

Powered by WordPress & Theme by Anders Norén