投稿者: manualmaton Page 53 of 252

PHPモジュール一覧を表示するスクリプト。

Webアプリをサーバに設置する際、有効、無効になっているモジュールの一覧が欲しいときがあります。

そういうときはphp.infoを使うのが手っ取り早いとは思いますが、セキュリティ上、それらをWebサイトに設置するのは好ましくありません。

そこで、以下のスクリプトをChatGPTに指示しながら出力しました。

スクリプト

  • php_modules.sh
#!/bin/bash

echo "PHP モジュール一覧を表示します。以下のオプションを選択してください。"
echo "0(またはエンターのみ): 全ての一覧を表示"
echo "1: 有効なモジュールのみを表示"
echo "2: 無効なモジュールのみを表示"

read -p "選択: " choice

case "$choice" in
  1)
    echo -e "\n有効なモジュールのみ表示:"
    enabled_modules=$(php -r '$count=0; $modules = get_loaded_extensions(); sort($modules); foreach ($modules as $extension) { if (extension_loaded($extension)) { echo $extension . ": Enabled\n"; $count++; } } echo $count;')
    echo "有効なものは${enabled_modules}件です"
    ;;
  2)
    echo -e "\n無効なモジュールのみ表示:"
    disabled_modules=$(php -r '$count=0; $modules = get_loaded_extensions(); sort($modules); foreach ($modules as $extension) { if (!extension_loaded($extension)) { echo $extension . ": Disabled\n"; $count++; } } echo $count;')
    echo "無効なものは${disabled_modules}件です"
    ;;
  *)
    echo -e "\n全てのモジュールを昇順で表示:"
    php -r '$modules = get_loaded_extensions(); sort($modules); foreach ($modules as $extension) { echo $extension . ": " . (extension_loaded($extension) ? "Enabled" : "Disabled") . "\n"; }'
    ;;
esac
  • スクリプトに実行権限付与
chmod +x php_modules.sh

スクリプトの動き

  • 実行
./php_modules.sh
  • 実行結果抜粋
PHP モジュール一覧を表示します。以下のオプションを選択してください。
0(またはエンターのみ): 全ての一覧を表示
1: 有効なモジュールのみを表示
2: 無効なモジュールのみを表示
選択: 

全てのモジュールを昇順で表示:
Core: Enabled
FFI: Enabled
(略)

と、これでモジュールのチェックを事前に行うことが可能になりました。

Tips:apacheバーチャルサイトのオフオン(切り替え)

ちょっとした小技が役立ったのでメモに残しておきます。

環境

  • Ubuntu 20.04系
  • Apache 2.4系

で、バーチャルサイトでサイトを検証していました。

背景

検証で動かしているWebアプリAがaaa.hoge.comで動いていました。

そこに、同じ環境でWebアプリBを動かす需要がありました。

本来なら、DNSで

  • aaa.hoge.com
  • bbb.hoge.com

とするところ、

  • DNS登録が間に合わない
  • 2つ同時に動かせるようなスペックではない

という背景がありました。そこで、「一度WebアプリAを無効にしつつ、WebアプリBをaaa.hoge.com」として動かすようなすり抜けを使いました。

さっくりとした手順

  1. WebアプリAの設定ファイルを無効化します。
  2. WebアプリBの設定ファイルを作成します。
  3. WebアプリBを有効にします。

前に動いているサイトの無効化

sudo a2dissite app_a.conf

sudo systemctl restart apache2.service

WebアプリB用の設定ファイル作成

  • /etc/apache2/sites-available/app_b.conf

に以下のように作っていきます。

略
<VirtualHost *:443>
    # ドメイン名を指定します
    ServerName aaa.hoge.com
    # アプリB用のログディレクトリを指定します。
    CustomLog /var/log/nextcloud/nextcloud_access.log combined
    ErrorLog /var/log/nextcloud/nextcloud_error.log

    # アプリB用のドキュメントルートディレクトリを指定します。
  # アプリAno参照ドキュメントとは違うディレクトリにします
    DocumentRoot /home/www-data/nextcloud
    <Directory /home/www-data/nextcloud>
        Options -MultiViews
        AllowOverride All
        Require all granted
    </Directory>
略

サイトBを有効化します。

sudo a2ensite app_b.conf

sudo apache2ctl configtest

sudo systemctl restart apache2.service

動作を確認します。

aaa.hoge.com(など、今までアプリAが動いていたサイトのドメインで)アプリBのサイトが動くようになれば成功。

一時的な手段ではありますが、効果はありました。

合間のソロゲー。

週末、様々な作業の裏でやっていたソロのボードゲームです。

ダイスセトラーズ

「思いっきりダイスを振りたい」ということでセレクト。

久しぶりにプレイして勘が取り戻せなかった&ボットに高得点の土地を取られて敗北。

クランズ・オブ・カレドニア

こちらの記事を書いているさなか、「キッチリと文書通りに動くか」の検証のためにプレイしました。

最初は176点取れたと思っていましたが、ラウンドごとの栄光点に誤り。「1つごとに2点/3点」ではなく、「2つごとに」だったため、147点と、ギリギリ熟練者でした。

ただ、これに関しては戦略のコツがつかみかけてきたのでまだ余地はあります。

ヌースフィヨルド

船を造らず漁獲量を増やしていくコンボのお陰で19金を得られたのですが、いかんせん、船の点数が取れなかったのが足を引っ張りました。

まだまだ楽しめるソロゲーはあるので、新作は余り手を出さずに既存策で遊んでいるという形です。

本と教室。

このスタジオツアーに訪れたことがきっかけで、「もう一度『ハリー・ポッター』シリーズを履修したい」って気概が生まれました。

そのさなか、「室内の撮影にも使える」と思って手に入れたのがこちらです。

レゴ:『魔法薬学』

レゴブロックと『ハリー・ポッター』シリーズのコラボ品。劇中に出て来た魔法薬学の教室を組み立てるというものです。

開封

中はざっとこんな感じ。これを組み立てていきます。

組み立て

教室の壁となる本の表紙を組み立て

壁や仕切りもできあがっています。薬品ボトルの一部はブロックで表現です。

完成

完成にそれほど時間は掛かりませんでした。

劇中での雰囲気をそのままにレゴに落とし込まれたという形です。

変形収納

最大の特徴はこのように全てが本の一部として収納できること。

普段はコンパクトで、展開も簡単というギミックは気に入りました。

背景としての転用

そして、「魔法薬学」を最初に選んだのはこの錬金術としての背景に使えるという目論見からでした。

その目論見は当たったのが嬉しいところです。

ボードゲーム『クランズ・オブ・カレドニア』ソロプレイのルール確認。

ソロプレイ時にルールブックを参照しすぎたため、紙の劣化が激しくなってきました。そのため、ここに記します。

ソロプレイ時のセットアップ

ソロゲームの違い

  • ソロ専用の特殊ダイスを2つ用います。
  • 交易ボーナスは発生しません。
  • 特殊ダイスによって相場が変わります。
  • ソロ専用のスコアがあります。
ソロゲームで用いる特殊ダイス

準備

  1. マップは2人用に準拠します。霧がかかったエリアを使うことはできません。
  2. 市場ボード/輸出ボードは2人用を用います。
  3. ソロプレイ用の輸出ボックスタイルを使います。
  4. 氏族とスタートタイルの組み合わせは2つ用意して、どちらか1つを決めます。
  5. 配置コスト「£1」の部分に、別の色の駒を置きます。その駒にプレイヤーは駒を置くことはできません。
  6. プレイヤーは、別の色の駒が置かれたエリア以外のところに配置してゲームスタートです。
£1で置ける安いエリアは塞がれます。ただでさえ厳しい資金繰りが更に辛くなります。

ゲーム進行

ラウンドは通常通り行います。改良を2つ連続で行うといったアクションを連続で行うことが可能です。売買を行った場合に、市場価格を変動させるのを忘れないようにしましょう。

パスを行った場合、ボーナスとして£16を得ます。

パスのあと、通常通り生産とラウンドごとの得点計算を行います。

追加フェイズ-1- 市場フェイズ

2〜5ラウンドの開始時、「市場フェイズ」が追加されます。特殊ダイスを2つ振ります。

商品が書かれたダイスの分、+3〜-3まで書かれたダイス:その値分だけ、以下のルールに従って上下します。

  • ダイスで出た商品が市場ボードの中間価格(〔〕でくくられたエリア)にある場合:
    • もう一つのダイスの出目に従い、価格を上下させます。(+2が出たら2上昇、-1だったら1下降)
  • ダイスで出た商品が市場ボードの高価格帯(〔〕でくくられたエリアより上)にある場合:
    • + / - の値は無視し、出た数だけ商品価格を下げます。
  • ダイスで出た商品が市場ボードの低価格帯(〔〕でくくられたエリアより下)にある場合:
    • + / - の値は無視し、出た数だけ商品価格を上げます。
この例の場合、羊毛の価格が-3されます。

この手順を3回繰り返します。このフェイズ中、この方法で価格の変動があった商品があった場合、もう一度商品ダイスのみを振り直します。

追加フェイズ-2- 輸出契約の補充フェイズ

まず、輸出ボードのすべてのマスに輸出契約タイルを補充します。

次に追加フェイズ1で最後に振った+ / - のダイスの出目を確認し、その目に対応するタイルを取り除きます。(例:+2の場合、中断の右のタイルが取り除かれます)

得点計算

5ラウンドが終了したら、上記の追加フェイズは行わず、最終得点フェイズに入ります。

以下の独自ルールがあります。

輸出の追加得点

達成した契約の数に応じて追加の勝利点を得ます。

  • 輸出契約を7つ以上履行した:12勝利点
  • 輸出契約を6つ履行した:8勝利点
  • 輸出契約を5つ履行した:4勝利点

4つ以下の場合の追加勝利点はありません。

入植地の追加得点

2〜4人時と異なり、「船舶輸送力でつながっている入植地のひとかたまり」を参照します。(つまり、川や湖で離れた箇所でも、ゲーム中に得た輸送能力が繋がっていれば“つながっている”とみなします)

  • 14以上の入植地:18勝利点
  • 11〜13の入植地:12勝利点
  • 8〜10の入植地:6勝利点

7以下の場合の追加勝利点はありません。

得点ごとに得られる称号

上記の追加得点を考慮した上で、以下の称号を得ます。

獲得勝利点得られる称号
0〜115初心者
116〜130新人
131〜145平均的
146〜160熟練者
161以上天才!

スコアテンプレート

https://barrel.reisalin.com/books/1ff8a/page/ea5d2

こちらにスコア用のテンプレートを用意しています。マークダウン形式でエクスポート可能です。

古地図と背景。-百均グッズの撮影用小物(その51)-

シンプルに使い出のいいものが手に入ったという形です。

古地図風ペーパー

インテリアペーパーなるもの。古紙風の紙で作られていて、質感があります。

これはフィギュア撮影用の風景に使えそうだと思いました。

位置調整

サイズ的にもぴったりだとわかったので、撮影してみます。

1/7での撮影

落ち着いた色合いが被写体を引き立ててくれました。

他スケール

1/6やねんどろいどにも併せられました。

今後のシンプル背景に新たな選択肢が加わりました。

ボードゲーム『アグリコラ』ソロキャンペーンルール確認。

体に染みついているルールではありますが、改めてメモに残しておきます。

準備

  • ボードは1~2用に基づきセットアップを行います。
  • そのため、以下のアクションスペースは用いません。
    • 小さな森/林
    • 資材市場
    • 窪地
    • 授業(2つめ)
    • 小劇場
  • 大進歩カードを所定の場所に置きます。
  • アクションスペースカードを用意します。
  • 資源を分かりやすい場所に置いておきます。(自分の資源と混ざらないようにしましょう)
  • 農場ボードに家族(ワーカー)を2人、木の部屋に配置します。
  • それ以外のワーカー/柵/厩は脇に置いておきます。
  • 職業カードのうち、「3+」及び「4+」と書かれたものは予め箱にしまっておきます。
  • アクションスペース「森」には、木は3つではなく2つ置かれます。\
  • プレイヤーは、食料を持たずにスタートします。

初期カードについて

以下のどちらかを選びます。

  1. 職業カードと小進歩カードをシャッフル後、7枚ずつ引く。
  2. 職業カードと小進歩カードをシャッフル後、10枚引いた後に3枚を取り除く。

ゲーム進行

  1. 手番の交代は(当然)行われません。ラウンド中にワーカーを設置したら次ラウンドのアクションスペースカードが置かれます。
  2. 累積資源スペース「森」に木を置くとき、3個ではなく2個置きます。
  3. 収穫フェイズ中、家族(ワーカー)1人につき、3食料を支払います。
  4. 次のプレイヤーに「移動する」小進歩カードは、使った後にゲームから取り除かれます。
  5. 14ラウンド終了後、ゲームは終了します。

スコア

2人以上と同じように計算します。

オプションルール

  • 職業カードや小さい進歩カードは自由に選ぶこともできます。
  • ステージごとのアクションスペースカードの順番は予め決めることができます。

ソロキャンペーンモード

全8ゲームにわたるソロキャンペーンモードが用意されています。

キャンペーン基本ルール(最初のプレイ)

  1. 全8ゲームに渡ってゲームを行います。
  2. ソロプレイと同じく、食料は0からスタートします。
  3. 職業と少進歩7枚ずつをランダムに手元に置いておきます。(3+ / 4+の職業カードは使えません。
  4. 最初のゲームは50点を超えないと「クリア」と見なされません。

キャンペーン基本ルール(2ゲーム目以降)

  1. ゲームごとに、後述する「目標点」を超えた点数を2で割った数(余りは切り捨て)の数に等しい食料を受け取ることができます。(例えば1ゲーム目で55点取った場合、5÷2(余り切り捨て)で2食料が渡されます)
  2. 前ゲームで出した職業カードのうち、1枚をゲーム開始時に出すことができます。この効果は残りのゲーム中永続します。

ゲームごとの目標点

  • 1ゲーム目:50点
  • 2ゲーム目:55点
  • 3ゲーム目:59点
  • 4ゲーム目:62点
  • 5ゲーム目:64点
  • 6ゲーム目:65点
  • 7ゲーム目:66点
  • 8ゲーム目:67点

キャンペーンルール備考

  • 資源を受け取ることができる職業を「引き継ぎボーナス」で出した場合、ゲーム開始時にそれらを受け取ります。(例:《大鎌使い》は即座に小麦1を受け取ります)
  • 逆に、資源を支払う必要がある職業を「引き継ぎボーナス」で出した場合、それらを支払わなければ効果は発揮しません。(例:《屋根付け》で食料が支払えない場合)
  • 職業を順番を参照するカード(《家庭教師》など)は、永続しているゲームの順番通りに置かれます。
  • そのため、各ゲームが終了するたびに、得点だけでなく出した職業の順番を記録しておきましょう。

Redmineにヘッダ画像を付与。(Redmine View Customizeを利用したCSS編集)

RedmineのView Customize Pluginを利用して、ちょっとだけサイトを装飾してみました。

やったこと

このように、Redmineサイトのヘッダに画像を入れました。

https://atelier.reisalin.com/

前提

画像ロゴを用意します。

個人/私的利用のため、Bing Image Creatorにて生成しています。

用意した後、適切な箇所にアップロードします。(筆者はDMSFプラグインでアップロードしています)

表示を変更していきます。

画面遷移

  1. Redmineサイトに管理者権限でログインします。
  2. 管理>表示のカスタマイズに進みます。
  3. 「新しい表示のカスタマイズ」をクリックします。

設定

以下の通り設定します。

  • パスのパターン:
  • 空白
  • プロジェクトのパターン:
  • 空白
  • 挿入位置:
  • 全ページのヘッダ
  • 種別
  • CSS
  • コード
#header {
background-image: url("画像への適切なパス");
background-repeat: no-repeat;
background-size: contain;
background-position: 80% center;
height: 100px; 
/* 位置・高さはサイトやテーマに合わせてください */
}

設定後、「有効」にチェックを入れて「作成」をクリックします。

表示を確認します。

ヘッダに設定した画像が出てくれば成功です。

規格化と拡張化。(情報カードの改良)

アナログツールとして非常に気に入ってしまった情報カード。それをもっと効率的に使おうということで手に入れたのがこちらです。

B6用クリップボード

取り寄せたのはB6のクリップボード。

情報カードは元々B6サイズに規格化されているため、サイズは完璧です。

収納

既にある布のケースにもしっかりフィットしました。

壁に掛けるリングにキーリングを着けることで、さらに取り出しやすくしています。

「既存のもので改良する余地がある」のは、規格化された文具の利点で美点です。

BookStack、テンプレートとアクセス権。

この合わせ技によって、効率的な記入ができるようになります。

BookStackのテンプレート機能

  • 議事録
  • 報告書
  • 購入記録

など、書くフォーマットが決まっている文書はかなりあります。そのテンプレートの使い方が以下の通り。

テンプレート機能の設定方法

  • 任意の文章を作成します。
  1. 右のボタン「テンプレート」をクリックします。
  2. テンプレートに設定するにチェックを入れて保存します。

一度保存してしまえば、どのブックのどのページでも参照できます。

閲覧権限の設定

非常に便利な機能ですが、一般公開しているURLに設定していると、このテンプレートが閲覧されます。

そこで使うのが「権限設定」です。

  1. テンプレートを設定したページに移動します。
  2. 「権限」をクリックします。

権限を設定します。(以下、設定例)

  1. 権限を上書きする役割:Viewer(ログインしなくても閲覧できる役割)
  2. 権限:なし(全てのチェックを外す)
  3. その他の全員:「デフォルトを継承」のチェックを外します。

設定後、保存をします。

設定確認

ブラウザのゲスト機能などを用いて、ログインしていない状態で、先ほど権限を設定したURLにアクセスします。

閲覧できないことを確認します。

これで、管理者だけがテンプレートを参照できる環境ができます。

Page 53 of 252

Powered by WordPress & Theme by Anders Norén