月: 2023年12月 Page 3 of 4

起き抜けのソロゲー。(『グラスロード』)

  • パパッとできて
  • 悩ましい資源管理があり
  • やり応えがある

ゲームと言うことで、『グラスロード』は最近のお気に入りです。

起きてすぐ、セットアップして軽く一ゲームです。

結果:16点

ただ、今回は16点とクリア基準から大きく下回る計算となりました。盤面は比較的に豊かだったにもかかわらずです。

反省点

  • 森林(2タイル分スペース)を取り除いて炭を得るタイルの効率が極めて低かったこと。
  • それによって職業カードが空打ちになってしまったこと。
  • 「生産」に気を取られすぎて得点行動が取れなかったこと。

が特に目立った点。また、資源(特に粘土)が足りず、目に見えた建物タイルのほとんどが置けないという致命的な点もありました。

過日の『アグリコラ』と全く異なったプレイスタイルが要求されるだけに、少しずつ練度を上げていきたいものです。

統率者メモ18:軽微な修正。

購入して、ようやく、差し替える機会に恵まれました。

とはいえ、

  • オーラで強化するコンセプト
  • 強力な統率者能力と
  • それをバックアップする構成

が見事だったので、ほとんど変える場所がありませんでした。

以下、リストです。(差し替えた箇所は太字)

統率者

  1. 僻境宮廷のエリヴェア

デッキ

クリーチャー

  • 星原の神秘家
  • コーの精霊の踊り手
  • 陰影の神秘家
  • 模範となる者、ダニサ・キャパシェン
  • 万戦の幻霊
  • 豊潤の声、シャライ
  • アジャニに選ばれし者
  • 太陽の恵みの執政官
  • 天界の執政官
  • 解放された家畜
  • 太陽のタイタン
  • 王国まといの巨人
  • 小間物のアウフ
  • 聖域の織り手
  • 運命を紡ぐ者
  • 楽園のドルイド
  • 森のレインジャー
  • 木製の聖騎士
  • オーラのナーリッド
  • 辛み掛かりの見張り
  • セテッサの勇者
  • 加護のサテュロス
  • 開花の幻霊
  • 樹海の自然主義者
  • ピレアス号の艦長、レオーナ
  • 配役の監督、ギルウェイン
  • 救世主、アーモント卿

インスタント

  • 剣を鍬に
  • 過大な贈り物
  • ドロモカの命令

ソーサリー

  • 再拘束
  • ラースの風
  • やり遺したこと
  • 質素な命令
  • リシュカーの巧技

エンチャント

  • 天上の鎧
  • 霊体の鋼
  • 隔離の場
  • 夜明けの宝冠
  • 機を見た護法
  • 歌鳥の祝福
  • 賢人の夢想
  • 天使の運命
  • 古き者のまとい身
  • 怨恨
  • 楽園の拡散
  • 肥沃な大地
  • 成長の季節
  • 入念な栽培
  • 蛇の陰影
  • 女魔術師の存在
  • 祖先の仮面
  • 大力無双
  • 熊の陰影
  • 巨人の遺伝
  • 新緑の抱擁
  • 花粉光の羽
  • 制圧の輝き

アーティファクト

  • 太陽の指輪
  • 秘儀の印鑑

土地

  • 10 平地
  • 10 森
  • アーデンベイル城
  • 先祖の院、翁神社
  • サングラスの大草原
  • 梢の眺望
  • 豊潤の神殿
  • 要塞化した村
  • 陽花弁の木立ち
  • 剃刀境の茂み
  • 活発な野生林
  • 地平線の梢
  • ヘリオッドの高潔の聖堂
  • クローサの境界
  • 無限地帯
  • ガヴォニーの居住区
  • 都市の樹、ヴィトゥ=ガジー
  • コーの安息所
  • 統率の塔
  • 風変わりな果樹園
  • 吹きさらしの果樹園

土地もお高いものは入らず。でも、気がつけば圧倒しているというデッキというのが実際に対戦しての感想でした。

金曜夜のボドゲソロ。(アグリコラ)

今週、とかく頭がフル回転。その回転の「余力」を使って、ボドゲソロに興じました。

プレイ結果:53点

項目得点計算法
540~1:-1点 / 2:1点 / 3:2点 / 4:3点 5~:4点
33四角で囲われている柵1つごとに1点(最大4)
520:-1点 / 1~3:1点 / 4~5:2点 / 6~7:3点 / 8~:4点
野菜440:-1点 / 1:1点 2:2点 / 3:3点 / 4~:4点
未開拓地001つごとに-1点
家畜:羊520:-1点 / 1~3:1点 / 4~5:2点 / 6~7:3点 / 8~:4点
家畜:猪630:-1点 / 1~2:1点 / 3~4:2点 / 5~6:3点 / 7~:4点
家畜:牛530:-1点 / 1:1点 / 2~3:2点 / 4~5:3点 / 6~:4点
柵内の厩331つごとに1点
木の部屋000点
レンガの部屋001つごとに1点
石の部屋481つごとに2点
家族5151人ごとに3点
カード66カードに書かれている点数合計
ボーナス00進歩や職業に書かれているボーナス合計
物乞い001つごとに-3点
合計-53-

主なプレイ記録

強い職業

  • 大鎌使い
  • 日雇い農夫
  • 子なし
  • 夢遊病者

が引けたので、全部使ってみようと思った次第です。無駄なアクションが多いにもかかわらず、しっかり50点突破できたのは良かった点です。

この、ソロプレイのおかげで、ずいぶんなクールダウンができました。

スリーブ新調、リストの移行。(MtG統率者戦)

少し離れていたMtG統率者戦のデッキをいじる機会がありました。

スリーブ入れ替え

そのきっかけとなったのはこちら。アニメ版『ライザのアトリエ』のキャラクタースリーブを手に入れたことです。

発売されていると聞いていたものの、店には売られておらず入手を諦めていたところに、公式サイト(Aniplex Plus)にて販売を確認。

即座に注文して届いたという次第です。

スリーブも入れ替えて、デッキもより愛着がわいてきました。

デッキリストの移行

スリーブ入れの合間、デッキリストをRedmineでの公開からBookStackへと移行。

https://barrel.reisalin.com/shelves/ac1dd

それっぽいイメージをBing Image Creatorにて抽出。

https://barrel.reisalin.com/books/7380a

この、BookStackならば、一つの統率者をテーマに

  • デッキリストの変遷
  • 対戦メモ

等を記すことができますし、「いつ記録したか」の履歴を追うこともできます。

Redmineより視認性が高いのもまたナイスです。

コマンドラインでの視覚化。(lstopoとhtop)

概要

Linuxの運用で、ちょっと役立ったコマンド2つを最近知りました。

確認した環境

Ubuntu 20.04で試しています。

lstop

サーバ内のCPU情報や構造を知るためのコマンドです。

導入

sudo apt-get install hwloc

実行結果

lstopo --of ascii

こちらはAWS Lightsail上で示した結果。コア数やディスクなども確認できます。

デスクトップの据え置き。メモリもディスクも潤沢です。

htop

topコマンドを可視化できるという存在。(というよりもtopの上位種です)

導入

sudo apt-get install htop

実行結果

htop

上部のゲージで

  • CPU使用
  • メモリ使用
  • スワップ

が変動しているのがわかります。また、タスク数なども目の当たりにできます。

F5でツリー表示できるのもポイント。

これは後々の運用に役立つので、ちょっと使い込んでみます。

ChatGPTによるシェルスクリプト。(Linuxユーザアカウント削除)

概要

先だってはオプションを忘れがちなものを自動化するを元にスクリプト&コマンド化。

今度は、「慎重な操作を要する作業」を一気通貫で行うようにします。

要件

こんな要件のスクリプトを出力です。

  1. 削除するユーザ名を対話式で聞く
     → ない場合はExit
  2. /etc/passwd /etc/shadow /etc/group のバックアップを、 /etc/old/ファイル名.$(date +%Y%m%d)でバックアップ
     → それぞれファイル:○○をバックアップしましたの表示を出す
  3. ユーザのディレクトリも消すかを聞く y/n
  4. 削除前に以下の確認
     ユーザ名:○○を削除
     ユーザのホームディレクトを消す:y or no
    これでよろしいですか?
    → n : Exit
  5. y: ユーザデータを削除する
    ディレクトリを消すでy → userdel -r を実行してメッセージ出力、Exit
    ディレクトリを消すでn → userdel を実行してメッセージ出力、Exit

ここから更に

  • ホームディレクトリのバックアップを取るかどうかを聞く
  • 差分を表示するようにする

などを加えてできたスクリプトがこちらです。

免責

意図通りに動くかは一応、確認しましたが、
本番運用の前に、検証環境で、テストアカウントで実施してください。

準備

以下のディレクトリを作ります。

  • 設定ファイルのバックアップ先
sudo mkdir /etc/old
  • ホームディレクトリのバックアップ先
sudo mkdir /home/deleted_users

スクリプト内容

  • account_delete.sh
#!/bin/bash

# 1. ユーザ名を対話的に聞く
read -p "削除するユーザ名を入力してください: " username

# ユーザが存在しない場合は終了
if ! id "$username" &>/dev/null; then
    echo "ユーザ '$username' は存在しません。終了します。"
    exit 1
fi

# 2. バックアップを作成
backup_dir="/etc/old"
backup_date=$(date +%Y%m%d)
backup_passwd="$backup_dir/passwd.$backup_date"
backup_shadow="$backup_dir/shadow.$backup_date"
backup_group="$backup_dir/group.$backup_date"

cp /etc/passwd "$backup_passwd"
cp /etc/shadow "$backup_shadow"
cp /etc/group "$backup_group"

echo "ファイル:$backup_passwd をバックアップしました。"
echo "ファイル:$backup_shadow をバックアップしました。"
echo "ファイル:$backup_group をバックアップしました。"

# 3. ユーザのディレクトリを消すかどうかを確認
read -p "ユーザのディレクトリも削除しますか? (y/n): " delete_home

# 4. ユーザディレクトリのバックアップを取るかどうかを確認
backup_home=""
if [ "$delete_home" == "y" ]; then
    read -p "ユーザのホームディレクトリのバックアップを取りますか? (y/n): " backup_home_choice
    if [ "$backup_home_choice" == "y" ]; then
        backup_home="/home/deleted_users/$username.$backup_date"
        cp -r /home/$username "$backup_home"
        echo "ユーザ '$username' のホームディレクトリをバックアップしました。"
    fi
fi

# 5. 削除前に確認
echo -e "\nユーザ名: $username を削除"
echo -e "ユーザのホームディレクトリを消す: $delete_home"
echo -e "ユーザのホームディレクトリのバックアップを取る: $backup_home\n"

read -p "これでよろしいですか? (y/n): " confirm

if [ "$confirm" == "n" ]; then
    echo "終了します。"
    exit 0
fi

# 6. ユーザデータを削除
if [ "$delete_home" == "y" ]; then
    userdel -r "$username"
    echo "ユーザ '$username' のデータとディレクトリを削除しました。"
else
    userdel "$username"
    echo "ユーザ '$username' のデータを削除しました。"
fi

# 7. バックアップと現在の差分を表示するかどうかを尋ねる
read -p "アカウント削除後、バックアップと現在の差分を表示しますか? (y/n): " show_diff

if [ "$show_diff" == "y" ]; then
    diff_passwd=$(diff /etc/passwd "$backup_passwd")
    diff_shadow=$(diff /etc/shadow "$backup_shadow")
    diff_group=$(diff /etc/group "$backup_group")

    echo -e "\n--- ファイル:$backup_passwd との差分 ---\n$diff_passwd"
    echo -e "\n--- ファイル:$backup_shadow との差分 ---\n$diff_shadow"
    echo -e "\n--- ファイル:$backup_group との差分 ---\n$diff_group"
fi

echo "終了します。"

実行権付与

  • 所有者変更
sudo chown root:root account_delete.sh

root権限でしか触れないコマンドなので、所有者もrootにします。

  • 権限変更
sudo chmod 700 account_delete.sh

通常アカウントは閲覧もできないようにします。

これで、操作時に確認をしつついざというときの切り戻しもできるようになります。

ChatGPTによるシェルスクリプトとコマンド化。(Zipアーカイブ)

概要

使うときはあるけど、オプションや順番を考えるのが面倒。

そんな悩みをChatGPTの力を借りて解決です。

やったこと

  1. 対話式で圧縮するファイルやディレクトリを指定
  2. 圧縮先のディレクトリを対話で指定(何も指定しない場合はカレントディレクトリ)
  3. アーカイブファイルを対話で指定(何も指定しない場合はファイル/ディレクトリ名.$(date +%Y%m%d).zip)
  4. zipコマンドで圧縮。ディレクトリかを判別し、ディレクトリなら-rオプションをつける

という処理を行います。

スクリプト

  • autozip
#!/bin/bash

# ユーザにファイル/ディレクトリの指定を求める関数
get_input() {
    read -p "$1: " input
    echo "$input"
}

# 対話式でファイル/ディレクトリの指定を取得
source_path=$(get_input "圧縮するファイルやディレクトリのパス")

# 対話式で圧縮先ディレクトリの指定を取得
destination_dir=$(get_input "圧縮先のディレクトリ(何も指定しない場合はカレントディレクトリ)")
destination_dir=${destination_dir:-"."}

# 対話式でアーカイブファイルの指定を取得
archive_name=$(get_input "アーカイブファイルの名前(何も指定しない場合はファイル/ディレクトリ名.\$(date +%Y%m%d).zip)")
archive_name=${archive_name:-"$(basename $source_path).$(date +%Y%m%d).zip"}

# ソースディレクトリに移動
cd "$(dirname "$source_path")" || exit

# zipコマンドで圧縮
if [ -d "$(basename "$source_path")" ]; then
    # ディレクトリの場合は-rオプションを付けて圧縮
    zip -r "$destination_dir/$archive_name" "$(basename "$source_path")"
else
    # ファイルの場合は-rオプションなしで圧縮
    zip "$destination_dir/$archive_name" "$(basename "$source_path")"
fi

echo "圧縮が完了しました。"

# カレントディレクトリに戻る
cd - || exit

作成後の処理

  • 実行権付与
chmod +x autozip
  • コマンド化
sudo chown root:root autozip && sudo mv autozip /usr/local/bin/autozip

実行結果

  • パスが通っていることを確認
which autozip

→ /usr/local/bin/autozip

に表示されます。

  • 実行確認

任意のディレクトリに移動し、

autozip

を実行。

これで、

  1. 対話式で圧縮するファイルやディレクトリを指定
  2. 圧縮先のディレクトリを対話で指定(何も指定しない場合はカレントディレクトリ)
  3. アーカイブファイルを対話で指定(何も指定しない場合はファイル/ディレクトリ名.$(date +%Y%m%d).zip)
  4. zipコマンドで圧縮。ディレクトリかを判別し、ディレクトリなら-rオプションをつける

が実行できました。

差しボードゲーム記録。(2023年12月)

機会があったので、ボードゲームを2人で行いました。

Otaru -1899-

初の対人戦。

  • 「少々難しいかな?」思っていたルールも、回すことで動きはなんとなく理解いただいた
  • ゲーム終了のトリガーが「決算と収穫が計5回発生する」可変式なので、それらを見越しての立ち回りもナイス。
  • 再セットアップもかなり楽な部類に入った。

今回は経験差により2回勝利(うち1回は開拓トラックを3つ最大値まで上げる)しましたが、割と回数をこなせそうです。

ジャイプル

第3Rまでもつれこみ、最終ラウンドはラクダトークンの差にて敗北。

運と戦略、駆け引きが絡む好みの作品です。

ワーリング・ウイッチクラフト

  • ドラフト
  • バースト
  • 資源管理
  • カードコンボ

が見事に重なった中量級。処理が終わった後に釜をドラフト(2人のため交換)するという挙動に驚き。

最初こそ混乱しましたが、「材料をあぶれさせる」を念頭に置きながら勝利しました。

  • コンポーネントのインパクト
  • 「押しつける」アイディア
  • 終わるときはあっさり終わるプレイ感

等、「白眉」と言えるゲームでした。これは入手したいゲームです。

肉と魚。(連日の外食)

ちょっと事情があり、外で食事を取る機会が連続でありました。

グリル定食

注文を受けてから作ると謳っているだけあって、どれも熱々。特に揚げ物の勘所は素晴らしかったです。

刺身定食

お気に入りの定食屋に行ける機会がありました。肉とのカウンターを取るために、刺身です。

丁寧に捌かれた魚に濃厚な味噌汁と豊かな味わいのご飯がこれらを引き立ててくれます。

新規開拓と馴染みの店という発見がありました。

ChromebookでNextcloudのファイルを参照。

使う機会があったので調べてみました。

背景

出先(宿泊先)にChromebookしか持っていない状態でNextcloudのファイルを参照したい状況が発生しました。

Chrome拡張Nextcloud (unofficial)

https://chrome.google.com/webstore/detail/nextcloud-unofficial/kkbmcejbjlhkmljcafiaofajcbgkobcd/related

こちらをChromebookに入れてみます。

導入後、Chromebookのファイルの縦メニューを開くと

Nextcloud(unofficial)というリンクが出てきます。

接続

※予めNextcloudにログインします。

  • Name:任意の名前
  • Server domain:Nextcloudのドメイン名

を入れて「Login」をクリックします。そうすると、Nextcloudにログインしているブラウザが表示され、アクセス権の確認が出ます。

その後、接続。

接続後の挙動

エクスプローラーのように、ファイルが表示されます。プレビューはでないものの、ファイルをダウンロードすることなく閲覧が可能になりました。

ブラウザからファイルを保存する際、このNextcloudのディレクトリを指定することはできませんが、

  1. 一度ダウンロードディレクトリに保存
  2. その後、ファイルアプリからNextcloudの任意のディレクトリに保存

の手順でOKとなりました。

Page 3 of 4

Powered by WordPress & Theme by Anders Norén