セリアで見つけたこのミニチュア屏風、金と黒の背景がとてもいいアクセントです。
畳と組み合わせてこの通り。
設置も簡単なのでちょっとした小物の撮影での活躍が期待されます。
セリアで見つけたこのミニチュア屏風、金と黒の背景がとてもいいアクセントです。
畳と組み合わせてこの通り。
設置も簡単なのでちょっとした小物の撮影での活躍が期待されます。
Nextcloudを動かしている自宅サーバでPHPをアップグレード。
ちょっとだけハマったのでメモを残します。
以下の環境でNextcloudを動かしています。
sudo apt-get --purge autoremove php*
sudo aptitude install php8.1
sudo aptitude install php8.1-{opcache,pdo,bcmath,calendar,ctype,fileinfo,ftp,gd,intl,json,ldap,mbstring,mysql,posix,readline,sockets,bz2,tokenizer,zip,curl,iconv,phar,xml}
sudo aptitude install php8.1-apcu
sudo aptitude install php8.1-memcached
php -v
# PHP 8.1.14 (cli)を確認しました。(2023/01/19)
sudo systemctl restart apache2.service
PHPアップグレード後、Nextcloudにアクセスするとこうなりました。
前の設定が全て消えたので、エラーが発生しました。
こちらを解消していきます。
cd /var/www/html/nextcloud/
# Nextcloudの格納ディレクトリに移動します。自分の環境に置き換えてください。
sudo -u www-data php ./occ
# NextcloudのCLIインタフェースです
An unhandled exception has been thrown:
OCP\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache (Is the matching PHP module installed and enabled?)
memcacheとAPCuが読み込まれていないと怒られましたので、有効化していきます。
cd /etc/php/8.1/cli/conf.d
cat <<- __EOF__ | sudo tee -a /etc/php/8.1/cli/conf.d/10-opcache.ini
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
__EOF__
cat <<- __EOF__ | sudo tee -a /etc/php/8.1/cli/conf.d/20-apcu.ini
[apcu]
apc.enabled=1
apc.shm_size=32M
apc.ttl=7200
apc.enable_cli=1
apc.serializer=php
__EOF__
sudo systemctl restart apache2.service
cd /var/www/html/nextcloud/
# nextcloudの格納ディレクトリに移動します
sudo -u www-data php ./occ
# エラーが出ず、occのオプションが表示されることを確認しました。
この後、Nextcloudにアクセスし、画面が表示されることを確認しました。
Nextcloudに管理者アカウントでログインし、管理者設定を確認すると
が出てきました。これを修正していきます。
sudo cp -pi /etc/php/8.1/apache2/php.ini /etc/old/php.ini.$(date +%Y%m%d)
# /etc/oldがなければディレクトリを作成するか、任意のバックアップパスを指定してください
diff -u /etc/php/8.1/apache2/php.ini /etc/old/php.ini.$(date +%Y%m%d)
# 差分が存在しないことにより、バックアップが取れていることを確認します。
sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/8.1/apache2/php.ini
# memory_limitを推奨値の512Mに置き換えます。
diff -u /etc/old/php.ini.$(date +%Y%m%d) /etc/php/8.1/apache2/php.ini
# 取得したバックアップと置き換えたファイルの差分を確認します
-memory_limit = 128M
+memory_limit = 512M
sudo aptitude install php8.1-{imagick,gmp}
sudo systemctl restart apache2.service
Nextcloudに管理者アカウントでログインし、管理者設定を確認。
「すべてのチェックに合格しました」
と出たので設定完了です。
これで、Redmineでの記事やチケットの作成作業が更に捗ります。
こういうエクセルファイルのテーブルをredmineのMarkdownに書き写す場合、TyporaやGrowiのテーブル機能を経由して変換する必要がありました。
これをほぼコピペだけで完結させるプラグインです。
全て管理者権限で実施しています。
cd /var/lib/redmine/plugins
# 自分の環境に読み替えます
sudo -u www-data git clone https://github.com/taikii/redmine_tsv_macro.git
# Webサービスを実行するユーザに合わせます(apache,nginxなど)
systemctl restart apache2.service
# 自身の環境に合わせます
テーブルを作りたいところに{{tsv_h }}
と入力し、その間にエクセルのブックをコピーしてペーストするだけです。
{{tsv_h
日付 曜日 天気 朝 朝:場所 昼 昼:場所 夜 夜:場所 備考
2023/1/1 日 晴れ おせち 自宅 おせち 自宅 カレー 自宅
2023/1/2 月 晴れ 明太釜玉うどん 自宅 クリームパスタ 自宅 餃子雑煮 自宅
2023/1/3 火 晴れ 鳥オムレツ 自宅 ソーセージ定食 自宅 カツ丼 自宅
2023/1/4 水 晴れ ハンバーグ定食 自宅 春巻き弁当 自宅 雑煮 自宅
2023/1/5 木 晴れ ソーセージ定食 自宅 チャーシュー麺セット ぎょうざの満洲 プラウンマサラ 自宅
}}
Excelのみならず、Googleスプレッドシート経由でも他のアプリを利用することなく、ブラウザ間のみでシートの貼り付けが可能になります。
また、{{tsv_h }}
を{{tsv }}
とすることで、ヘッダを用いないテーブルが作成可能です。
2人用ボードゲーム『ジャイプル』に以下のソロバリアントがあったのでご紹介です。
対人戦よりも
が求められるシビアでタイトなバリアントとなっています。
参考:
https://thesoloboardgamer.com/jaipur-solo-variant/
このソロバリアントではボットとしのぎを削り合います。ボットは定められたアクションに従った行動を取ります。
以下が通常と異なります。
通常のゲームと全く同じです。
上記いずれかを行ったら必要に応じて市場のカードが5枚になるように補充しボットに手番を渡します。
※通常のゲームと同じく手札7枚制限を忘れないようにしてください。
基本動作に沿わない動きが時々出てくるので、それらを明確化します。
ボットの手番終了時にボットのアクションデッキが尽きた場合は順番を並び替えずに裏向きにして次のアクションデッキとします。
例)
ボットは
革 → レッドダイヤ → 家畜 → 銀 → スパイス → 絹 → 金
の順番でカードを公開しました。次以降のアクションも同じく「革」から始まって「金」で終わるよう、裏向きにしてアクションデッキを作ります。
この場合、後述する「ボットの好み」に合わせ、市場に存在する一番高い価値の商品カードを捨て札にします。
例)
ボットは市場にないレッドダイヤを公開したが、レッドダイヤのトークンは尽きた。
市場は 銀 / 革 / スパイス / スパイス / ラクダ が並んでいる。ボットの好みが一番高いのは銀なので、これを捨て札にした。
カードを破棄する場合の優先順位は次の通りです。
↑優先順位が高い↑
↓優先順位が低い↓
通常のゲームと同じです。各手番終了時、
のどちらかでラウンドは終了し得点計算に入ります。
を公開し、その合計点がボットの点数です。
プレイヤーの得点は通常のゲームと同じです。合計値が高い方がラウンドの勝者となり、威信トークンを受け取ります。
ボードゲームカフェの方にインストいただき、購入しました。
運/戦略/リスク判断がマッチし、テンポの良さも心地よい2人用ボードゲームです。
プレイヤーはインドの商人。手札や品数の残りなど、限られた資源をうまくやりくりして対戦相手よりも多くのお金を稼いでいきます。
ことで資金(ルピー)を稼いでいきます。商品チップが3種類尽きたか山札が尽きればラウンド終了のトリガー。ラウンドごとに得られた資金(ルピー)を計算し、2本先取したプレイヤーがマハラジャ専属商人としての栄光を得ます。
商品/家畜が書かれたカードと数字が記載された商品やボーナスチップのみ。そのため、簡単な計算ができる年齢から楽しめます。
の2つがうまくマッチしているため、「先に売却したいけど、もう1枚/2枚あれば」のチキンレースを味わえます。しかも、商品の数は限られている上にラウンド終了のトリガーにも直結。
この、GoとStayを常に秤にかけながらのやりとりがとても白熱です。
本作の最大のキーアイテムです。売却を行えば行うほど減る手札。これを補うのが市場にある家畜(ラクダ)カードを引き取るアクション。
これは擬似的な手札として機能し、持っていればいるほど有利な商品仕入れにつながります。
しかし、このアクションを採用することは「市場によりよい品物があふれる可能性」を対戦相手に与えます。これが先の「先行売却/まとめ売り」システムと合致しています。
この、「今見えている商品を仕入れる/交換する」か「この次に相手に有利な選択肢を与えてでも後の取引につなげるか」のインタラクションはこのゲームの醍醐味でした。
など、売却時に関する細かいルールを見逃しやすいので、インストの際には注意が必要です。
これもまた「古典/名作と呼ばれるには理由がある」と納得した一本でした。
カードとチップのみのシンプルなコンポーネントも初心者に優しく、運の要素があるために経験者が絶対有利にならないのが個人的な評価点。
余談ではありますが、サードパーティー製の商品アップグレードトークンがあります。
大型ボードゲームが(下手すれば格調込みで)買える値段のためおいそれとオススメはできませんが、『宝石の煌めき』と同じような質感で対戦ができるために本作が気に入った方はこちらへの差し替えを提案したいです。
ボードゲームカフェで遊んだ中で特に印象が残った『ジャイプル』。
「ラクダ」を媒介とした取引が優秀。ルールも単純なのに熱い駆け引きが楽しめます。
また、2人用にありがちなアプストラクトでないのでライト層にも届く秀逸さも。
そこで、これは手元においておきたいと入手しました。
すでにチップは抜かれた状態であり、インサートにカードがしっかり収まります。
ではありますが、
このチップの視認性が微妙に良くないのが難点です。そこで、
専用のアップグレードトークンも一緒に購入です。
『宝石の煌めき』と同じようなズシッとした重量感。縁も種類ごとに塗られているために視認性も完璧。
専用インサートを抜けばもとの箱にも収まるのも好感触です。
本作の入手で、二人用のボードゲームの選択肢に幅が広がりました。
apacheにmod_securityを導入後、以下を実施しました。
この方法はそこそこうまくいっています。ですが、「これら不審なアクセス元はWebだけでの攻撃だけか? メールやSSHへの攻撃もしているだろう」と思い立ち、不審なアクセスを元から絶つ方法を採りました。
AWS Lightsailで以下を動かしています。
以下が準備済みです。
192.168.0.1
192.168.1.123
のように、一行ずつIPアドレスだけが記述されているファイルです。
全て管理者権限で実施しています。
apt list ufw
# [インストール済み] となっていることを確認します。
ufw enable
ufw limit ssh
# 連続したSSHアクセスを遮断します
ufw allow http
ufw allow https
# その他の許可するサービスは必要に応じて指定してください
この段階で、以下を確認します。
ufw status
状態: アクティブ
To Action From
-- ------ ----
22 LIMIT Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
22 (v6) LIMIT Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
vi /hoge/add_ufw.sh
#!/bin/bash
# UFWを念のため事前に有効化します
ufw enable
# ファイルに書かれたIPアドレスを一行ずつ読み込みアクセスを遮断します。
while read line; do
ufw deny from $line
# 読み込むファイルを指定します
done < /path/to/negativelist.txt
chmod +x /hoge/add_ufw.sh
./hoge/add_ufw.sh
# 行数によっては相当な時間がかかります
ufw status
Anywhere DENY 192.168.0.1
Anywhere DENY 192.168.1.111
これで、「Webサイトに対して不審なアクセスを行ったIPをまるごと遮断する」ことが可能になりました。相当乱暴な方法ではあることにご注意ください。
かなりのヒヤリハットが起きました。
AWS Lightsailで動かしているUbuntu。その設定変更を終えたときです。
突然、SSH接続が切れました。Webブラウザ上からも接続できず。これは一体と思いながらAWSコンソールを確認するとインスタンスは停止状態。
取り急ぎ、再度起動してログインできることを確認し、「なぜ、こうなってしまったのか」を確認します。
さっそく、historyを追ってみます。その中に
systemctl exit
と入力していたことがわかりました。
が、このコマンドを発行した経緯だと推測。そこで、もう一つの仮説です。
「このコマンドを発行することでシャットダウンとなるのではないか」と推測し、物理環境のUbuntu 20系Linuxで試してみました。
systemctl exit
結果、ものの見事にシャットオフ。Webの記事などで乗っていない挙動だっただけに焦りましたけど、文脈としては腑に落ちます。
今後、systemctl系を触るときはもっと注意が必要だと改めて悟りました。
結論から言えば、Ubuntu 22.04系は普通にやったのではRuby 2.7はインストールできません。
なぜならRuby 2.7が必要とするOpenssl1.1.1系をUbuntu 22.04系がサポートしていないからです。
そんな中で、どうしてもこのバージョンを入れたいというケースがあったので対応を行いました。
参考
https://github.com/rbenv/ruby-build/discussions/1940#discussioncomment-2663209
sudo apt install git build-essential checkinstall zlib1g-dev
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
cd ~/Downloads
wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz
tar xf openssl-1.1.1q.tar.gz
cd ~/Downloads/openssl-1.1.1q
./config --prefix=/opt/openssl-1.1.1q --openssldir=/opt/openssl-1.1.1q shared zlib
make
make test
sudo make install
sudo rm -rf /opt/openssl-1.1.1q/certs
sudo ln -s /etc/ssl/certs /opt/openssl-1.1.1q
RUBY_CONFIGURE_OPTS=--with-openssl-dir=/opt/openssl-1.1.1q
RUBY_CONFIGURE_OPTS=--with-openssl-dir=/opt/openssl-1.1.1q rbenv install 2.7.6
rbenv global 2.7.6
ruby -v
ruby 2.7.6p219 (2022-04-12 revision c9c2245c0a) [x86_64-linux]
which ruby
# /home/user1/.rbenv/shims
# 結果を控えておきます
sudo su -
# ↓以下、rootでの作業↓
echo "export PATH=$PATH:/home/user1/.rbenv/shims" >> ~/.bashrc
source ~/.bashrc
which ruby
# /home/user1/.rbenv/shims
# 控えておいたパスであることを確認します
ruby -v
# ruby 2.7.6p219 (2022-04-12 revision c9c2245c0a) [x86_64-linux]
# 2.7系であることを確認します
と、ここまで書きましたがきっとDockerなどのコンテナを使ったほうが楽かと思います。
Powered by WordPress & Theme by Anders Norén