投稿者: manualmaton Page 2 of 262

『ライザのアトリエ2』超高難易度DLC「陽炎の島」仕様の回復アイテム『エリキシル剤』調合。

一年ぐらい前に紹介したこちらのアイテムを、陽炎の島仕様として更に効果を上げます。

調合例

カテゴリ項目説明
効果HP回復・極HPを極めて大きく回復する
復調の薬効HP継続回復状態を付与し、ブレイク値を回復する
平癒の薬効全ての状態異常を治療し、全ての悪性異常を消し去る
起死回生の薬効戦闘不能状態を解除し、HPを大きく回復する
特性エコノミーコアアイテムの消費CCが1減少する
回復力上昇++ 50【特性レベルで強化:最大レベル50】アイテムの回復力が最大で50%増加する
空間を繋ぐ対象のWTを短縮する
EV効果福旨の祝福【以下の効果を対象に付与】・究極の味わい: HPをわずかに回復し、ブレイク値を全回復する

特筆すべきは消費CC1,アイテムレベル1。つまり、どのキャラクターがどのレベルにいても威力を発揮します。

特性・EV例

調合に関しては先のものとおなじですが、付与する特性は

  • エコノミーコア(威力の減衰がなく、消費CCを減らせる上位互換)
  • 回復力上昇++ (ただでさえ高威力の回復力を上げます)
  • 空間を繋ぐ(自分や相手のWT短縮)

数あるEV効果から選んだのは福旨の祝福。

クーアミルク(アスラミルク+ネクスフュリア)で得られるEVアイテムです。

これの効果1を最大まで発現させた効果で、

究極の味わい: HPをわずかに回復し、ブレイク値を全回復する

を付与します。この、ブレイク値を全回復するというのが高難易度ではとても重要。数発攻撃があたっただけでブレイク→追撃を喰らって戦闘不能になるため、屋上屋を架す能力が必要です。

威力検証

陽炎の島、難易度LEGENDで検証です。

戦闘開始後、特に何もしないまま立たせておくと、このように後衛にいたパトリツィア以外は戦闘不能という状況が発生。

そんな中でも、先のエリキシル剤を用います。

あっという間に全員が戦線に立ちました。

回復アイテムは数あれど

  • 低消費
  • 戦闘不能も状態異常もカバー
  • 対象が全体

と、錬金術の粋の一つたる「エリキシル」の名は伊達ではありません。

公開用Redmineの整備。

別サイトとして運営している

(上記マルチドメインのため、どちらのサイトでも同じ内容です)

こちら、『ライザのアトリエ トリロジーDX』のリリースにより整備する必要が出てきました。

プロジェクトの追加とキャッチ画像の追加

プロジェクト - クーケン島観光ガイド

それぞれにBing Image Creatorで生成したアイコンを指定。

更に、今まで作っていなかったプロジェクトとして

概要 - 02_arライザのアトリエ1 - クーケン島観光ガイド

『ライザのアトリエ』を追加です。DX版に伴い、もう一度、最初からやっていき言語化していきたいなと思った次第です。

ただ、それまでの間に今止まっている

  • 『ユミアのアトリエ』のクエストなどの整理
  • 『ライザのアトリエ2』陽炎の島の装備の解説

など、やることは多いです。

モバイルバッテリー・流用。

中古で購入したThinkPad。

状態がよいとはいえ、5年も前の機体なのでバッテリーの損耗はどうしても発生します。

現状、稼働時間に不満はありませんが、外出時のバッテリー切れに対応できるものはということで

MSI Claw用のモバイルバッテリー導入。 – Manualmaton's Laboratory

こちらをそのまま使うことにしました。AnkerのPowerbank。

ノートPCと比してもその存在感は相当なもの。

昨今のPCモデルらしく、PD給電に対応しているのが幸いしていました。

無事にUSB-Cケーブルと接続して、

充電されていることを確認です。これなら、いざというときにも使えると判明したので助かりました。

出先での記録環境・確立。

先だって購入したThinkPad。

これを様々な場で使ってみます。

しかし、その前にアナログ環境の整備です。

まず、確固たるアナログ環境を整備。(オリジナルは林檎を収められますが、この暑さや湿気などで手が広がっているのが残念ですが、代わりに、大きな檸檬を持たせられるようになっています。

そして、出先ではThinkPad X13を使います。

訪れた場所は葛西臨海水族園。

やや天気が落ち着いた中での作業。屋外でも液晶は明るいまま。ちょっとした入力のみならず、本格的なアイディア出しにも威力を発揮です。

それ以上に、ここでの楽しみが食事。特にフィッシュカクテルのジャガイモはとても美味しく、パスタのトマトソースとの相性も抜群。

そして、記録を進めつつ魚も撮影。

こちら、どこでも記録ができるようになったことで、お気に入りの場所を「カフェ」のような使い方ができるようになっています。

2025年7月の統率者メモ。

ブラケット2~3程度のカジュアル逃走津者会を行いました。

青赤のドラゴン(使嗾)以外はコラボの統率者。

コンスタントtにトークンを整備していったまでは良かったのですが、押し切れず。

ミシュラは一気に構築物が大量展開を押しつけたものの、一気にヘイトを喰らい瓦解。

何にせよ

  • 新しいデッキのコンセプトに間違いはなく
  • それほど入れ替えていないデッキでも活躍の場が

あったというのが半目3位です。

Redmine_View_Customizeでチケットのステータスにラジオボタンを追加する

やりたいこと

Redmineのステータス一覧のドロップダウンリストにラジオボタンを追加し、ステータスの遷移を行いやすくします。

前提

  • Redmine View Customize がインストールされていること。
  • Redmine 5.1で動作を確認しています。

手順

画面移動

  1. Redmineに管理者権限でログインします。
  2. 管理>表示のカスタマイズに移動します。

カスタマイズ作成:JavaScript

表示のカスタマイズに移動後、「新しい表示のカスタマイズ」をクリックします。

以下の通りに入力します。

  • パスのパターン
  • /issues/[0-9]+
  • プロジェクトのパターン
  • 空白
  • 挿入位置
  • 全ページのヘッダ
  • 種別
  • JavaScript

コード

$(function() {
  const $select = $('#issue_status_id');
  if ($select.length === 0) return;

  const currentVal = $select.val();

  // ラジオボタンを入れるコンテナ
  const $radioContainer = $('<div class="status-radio-container"></div>');

  $select.find('option').each(function() {
    const val = $(this).val();
    const label = $(this).text();

    if (!val) return; // 空value(プレースホルダなど)はスキップ

    const id = 'status_radio_' + val;

    const $radio = $('<input type="radio">').attr({
      id,
      name: 'issue_status_radio',
      value: val
    });

    if (val === currentVal) {
      $radio.prop('checked', true);
    }

    const $label = $('<label>').attr('for', id).text(label);
    const $wrapper = $('<div class="radio-wrapper"></div>').append($radio, $label);

    $radioContainer.append($wrapper);
  });

  // ドロップダウンを非表示にし、ラジオボタンを挿入
  $select.hide().after($radioContainer);

  // ラジオ選択時に元のselectを更新
  $radioContainer.on('change', 'input[type=radio]', function() {
    $select.val($(this).val());
  });
});
  • コメント
  • 任意「チケットステータスにラジオボタンを追加する-JavaScript-」など
  • 有効
  • チェック
  • プライベート
  • チェックを外す

設定後、保存をクリックします。

カスタマイズ作成:CSS

表示のカスタマイズに移動後、「新しい表示のカスタマイズ」をクリックします。

以下の通りに入力します。

  • パスのパターン
  • /issues/[0-9]+
  • プロジェクトのパターン
  • 空白
  • 挿入位置
  • 全ページのヘッダ
  • 種別
  • CSS

コード

.status-radio-container {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 20px;
  margin-top: 5px;
}

.radio-wrapper {
  display: flex;
  align-items: center;
  width: 220px; /* カラム幅は調整可能 */
}

.radio-wrapper label {
  margin-left: 6px;
  cursor: pointer;
}
  • コメント
  • 任意「チケットステータスにラジオボタンを追加する-CSS-」など
  • 有効
  • チェック
  • プライベート
  • チェックを外す

設定後、保存をクリックします。

動作を確認します。

任意のチケット編集画面をクリックします。

ステータス変更画面がドロップダウンリストからラジオボタンに変わっていれば成功です。

Thinkpad X 13 2020年モデルのキーバインド変更。(FnとCtrl)

使っていて違和感があったので修正しました。

中古で購入したThinkapd X13。左にあるFnとCtrlが使っているうちに違和感。その2つが逆であれば自分での混乱は少ないと思い、対処しました。

手順

BIOSに入ります。

このモデルでは、電源を投入後に「Enter」連打です。F2やDelではないことに注意。

BIOS画面からConfigに遷移します。

左のメニューからConfigをクリック。

Keyboard / Mouseをクリック。

FnとCtrlを入れ替えます。

“Fn and Ctrl key swap”をOnにして保存します。

設定を保存します。

設定後、それぞれの動作が逆になっていれば設定完了です。

2025年6月の統率者。

人がそろわなかったとはいえ、3人での統率車線を行ってみました。

リスの将軍、サワギバ

無情な無頼漢→アシュノッドの供犠台→歩行バリスタによる無限が決まり勝利。

13代目ドクター / ヤズミン・カーン

こちらに関しては《暴動の先導者、チャンドラ》の紋章(呪文を唱えるたび1つに5点)で勝利するという実績を解除。

  • 《過去に帰還せよ》(自ターン中、自分の墓地にあるインスタントとそーサリーはフラッシュバックを持つ)
  • 《運任せ》(アップキープ開始時にライブラリートップを追放。ターン終了時まで)それをプレイしてもよい

も活躍し、途切れることなく焼き切りました。

「好きではあるけどアドバンテージを得るためだけのデッキ」のため低ブラケット。(《ジェスカの意志》があるため3)

なので、勝ち負けはこだわらず回していこうという感じでしたので勝てたのは予想外でした。

Thinkpad X 13 2020年モデル数日使っての感想。  

Windows用ノートPC購入。(Thinkpad X 13 2020年モデル) – Manualmaton's Laboratory

こちらの記事の続き。5年前の中古PCとはいえ5万円弱と結構な値段でしたが「その価値はあった」というのが現時点での結論です。

よかった点

キーボードの打ちやすさ

見た目以上にキーストロークが深く、また、キーピッチも十分なので手が大きめの筆者でも打ちやすい感覚です。

思った以上に便利なトラックポイント

いわゆる赤ポチ。Thinkapdの代名詞的な存在であるトラックポイント、これを使ってみて「ファンが多いのも納得」と思った次第です。

  • ホームポジションから手を離すことなくカーソルの移動ができる
  • クリックボタンも手の届く場所にある
  • スクロールボタンによりトラックポイントでページのスクロールも可能

と、モバイル環境で追加のマウスを買う必要がないというのは非常に便利です。

Windowsならではのソフトの多さ

日本語入力ソフトATOKはもちろんのこと、

  • Teraterm
  • Putty
  • RLogin

など、逆に、CLIユーザーへの配慮がなされたターミナルソフトが使えるというのはWindowsの利点の一つです。

現時点での不満点

SDカードスロットがない

カメラと一緒に持ち運ぶケースを考えると、これは不満点ではありますが、カメラケースに小型のカードリーダーを携えればいいので運用でカバーできます。

今のところ

  • 軽さ
  • スペック
  • 金属製の筐体による高級感と放熱性

など、いい買い物ができたという感じです。

早速、天板も自分好みのステッカーを貼ることにしました。

Google Geminiによるコード修正。(SSL証明書の有効期限確認)

このスクリプトの改善案をGoogle Geminiに言ったところ、更に完成度が上がりました。

概要

Web運用において、「サーバのSSL証明書更新」をチェックすることは大切です。

適切に更新されていない/更新が遅れたまま放置すると

  • ブラウザで「危険なサイト」と認識される
  • それによるレピュテーションリスク
  • HSTSを厳密に設定した場合はサイトそのものへのアクセス不可

など、リスクは甚大です。

そこで、

  • OpenSSLコマンドでドメインに設定されている証明書の期限
  • 並びに残り何日か

を表示するRubyスクリプトを準備しました。

スクリプト内容

  • ssl_checker.rb
#!/usr/bin/env ruby

require 'openssl'
require 'socket'
require 'date'
require 'uri'
require 'timeout'

# 色付け用の定数
COLOR_RED = "\e[31m"
COLOR_YELLOW = "\e[33m"
COLOR_GREEN = "\e[32m"
COLOR_RESET = "\e[0m"

# URLの最終的な到達先を取得するメソッド
def get_effective_url(url)
  # curlを使ってリダイレクトを追いかけ、最終的なURLを取得する
  # -s: サイレント, -L: リダイレクト追従, -I: ヘッダのみ, -o /dev/null: ボディ破棄, -w '%{url_effective}': 最終URLを出力
  effective_url = `curl -sLI -o /dev/null -w '%{url_effective}' "#{url}"`
  effective_url.empty? ? nil : effective_url
end

# 証明書の有効期限を取得するメソッド
def get_certificate_expiry_date(url)
  uri = URI.parse(url)
  hostname = uri.host
  port = uri.port || 443 # ポートがなければ443を使う
  ssl_socket = nil
  tcp_client = nil

  begin
    Timeout.timeout(5) do
      tcp_client = TCPSocket.new(hostname, port)
      ssl_context = OpenSSL::SSL::SSLContext.new
      ssl_socket = OpenSSL::SSL::SSLSocket.new(tcp_client, ssl_context)
      ssl_socket.hostname = hostname
      ssl_socket.connect

      cert = ssl_socket.peer_cert
      expiration_date = DateTime.parse(cert.not_after.to_s)
      days_remaining = (expiration_date - DateTime.now).to_i

      return expiration_date, days_remaining
    end
  rescue Timeout::Error
    return nil, "サーバーへの接続がタイムアウトしました。"
  rescue => e
    return nil, e.to_s
  ensure
    ssl_socket&.close
    tcp_client&.close
  end
end

# 結果を表示するメソッド
def print_result(url, expiration_date, days_remaining)
  if expiration_date
    formatted_date = expiration_date.strftime("%Y/%m/%d")
    
    # 残り日数に応じて色を選択
    color = if days_remaining < 14
              COLOR_RED
            elsif days_remaining < 30
              COLOR_YELLOW
            else
              COLOR_GREEN
            end

    puts "サイト #{url} の有効期限は #{formatted_date} です。#{color}残り #{days_remaining} 日です。#{COLOR_RESET}"
  else
    puts "#{COLOR_RED}サイト #{url} の証明書取得に失敗しました: #{days_remaining}#{COLOR_RESET}"
  end
end

# メイン処理
def main
  # コマンドライン引数があるかどうかで処理を分岐
  domains_to_check = if ARGV.empty?
                       # 引数がない場合は、対話式で入力を受け付ける
                       print "チェックしたいサイトのドメインを入力してください(例: example.com): "
                       [gets.chomp]
                     else
                       # 引数がある場合は、それらを全てチェック対象とする
                       ARGV
                     end

  # 各ドメインをチェック
  domains_to_check.each do |domain|
    # 対話モードで空エンターされた場合などをスキップ
    next if domain.nil? || domain.strip.empty?
    
    # http/httpsから始まらない場合はhttpsを付与
    initial_url = domain.start_with?('http') ? domain : "https://#{domain}"
    
    puts "Checking: #{initial_url} ..."
    final_url = get_effective_url(initial_url)

    if final_url.nil?
      puts "#{COLOR_RED}サイト #{initial_url} にアクセスできませんでした。#{COLOR_RESET}"
      next
    end
    
    expiration_date, days_remaining = get_certificate_expiry_date(final_url)
    print_result(final_url, expiration_date, days_remaining)
  end
end

# メイン処理を呼び出し
main

スクリプト実行例

ruby ssl_checker.rb

※Rubyで動かすためスクリプトに実行権は持たせる必要はありません

  1. 対話式でドメインを入力する
  2. 証明書の有効期限と残り期日を表示する
  3. ruby script.rb www.hoge.comなど、ドメインを引数にしても同様の効果が得られる
  4. 更新が近づくと
    • 30日以内:黄色
    • 15日以内:赤

とアラートも出してくれるようにしています。

  • 対話式
ruby ssl_checker.rb 
チェックしたいサイトのドメインを入力してください(例: example.com): www.yahoo.co.jp
Checking: https://www.yahoo.co.jp ...
サイト https://www.yahoo.co.jp/ の有効期限は 2026/05/14 です。残り 310 日です。
  • 引数にした場合
ruby ssl_checker.rb yahoo.co.jp www.msn.com
Checking: https://yahoo.co.jp ...
サイト https://www.yahoo.co.jp:443/ の有効期限は 2026/05/14 です。残り 310 日です。
Checking: https://www.msn.com ...
サイト https://www.msn.com/ の有効期限は 2025/10/05 です。残り 89 日です。

スクリプト使用例

筆者は/etc/update-motd配下に

ruby /path/to/script/ruby/ssl_checker.rb ryza.jp

と記入することで、ログインのたびに

Checking: https://atelier.reisalin.com ...
サイト https://atelier.reisalin.com/ の有効期限は 2025/08/15 です。残り 37 日です。

と次の更新のタイミングを読みやすくしています。

Page 2 of 262

Powered by WordPress & Theme by Anders Norén