カテゴリー: 未分類 Page 1 of 16

年越しの組み立て。

「これをやらないとこの年は終わらない」と思った結果です。

2025年、プライムデーでしれっと手に入れていた『スリザリンの紋章/談話室レゴ』。

「巳の年の締めくくり」にこれ以上のものはない

思いつつ組み立て。

パーツの割に分厚いインストラクション。これは相当かかりそうだと思いながら

完成。映画1本分を消費する程度の組み立て時間でした。

展開することで、あの映画の談話室をイメージできるようになっているのが高ポイント。

きちんと壁掛けの強度もあるのも良かったです。

2025年12月の差しボド記録。

今回は軽めのボードゲーム。

ひらがじゃん

やはりこれは面白い。単語の使い道や語彙力が囚われます。

また、新たなゲームとしてロストシティタイルゲーム」を実施。

初戦、敗北。2ゲーム目は勝利。三戦目、マイナスが発生しての敗北。

二戦のゲームではありましたが、三戦目に自分がマイナス点を取っての敗北という。言いゲームである以上に、友人との近況報告で盛り上がりました。。

mermaid.jsによる料理の手順。

以前も作った天かす入りのポテトサラダ。

今回、新たにツナも足しました。いい出来だったのでメモを残します。

材料

  • ジャガイモ4個
  • ツナ缶1個
  • 長ネギ、白いところ1本分
  • カニカマ
  • 天かす
  • マヨネーズ
  • 塩こしょう

使った器具

  • レンジ対応の耐熱ガラスボウル
  • ジャガイモピーラー
  • しゃもじ
  • 包丁 / まな板
  • 木のへら / 芋潰し

手順

ジャガイモの下ごしらえをします

  1. ジャガイモは皮をむき、新芽を取ります
  2. 二つ切りにして薄いくし切りにします
  3. 切ったジャガイモは耐熱ガラスボウルに入れてラップをかけ、9分ほどレンジに入れます。

待っている間に準備をします

  1. ネギをみじん切りにしておきます
  2. 各種材料を用意しておきます

混ぜていきます

ジャガイモにじゅうぶん火が通ったら調理開始。

ここからは「粗熱を取る必要はありません」。混ぜるさなかで冷えていくからです。
また、耐熱ガラスボウルに入れることで、他の器に入れることなくダイレクトに混ぜあわせが可能です。

  1. みじん切りしたネギを入れ、潰していきます。
  2. あらかた潰し終えたら、ツナ缶(油ごと)とマヨネーズを入れます。
  3. マヨネーズとツナを更に潰しながら混ぜ合わせます。
  4. 色が馴染んできたらカニカマを入れて混ぜ合わせます。
  5. 天かすを入れて混ぜ合わせます。
  6. 最後に味を調えます。

mermaid.jsによる手順

今回の流れはこちら。

sequenceDiagram autonumber participant 料理人 participant ボウル participant レンジ rect rgb(240, 240, 240) Note over 料理人, ボウル: 下ごしらえ 料理人->>料理人: 芋の皮むき・芽取り・カット 料理人->>ボウル: 芋を入れラップをする end par 加熱と準備 ボウル->>レンジ: 加熱(9分) and 料理人->>料理人: ネギをみじん切りにする 料理人->>料理人: 他の材料を準備する end レンジ-->>ボウル: 加熱完了 rect rgb(255, 245, 230) Note over 料理人, ボウル: 仕上げ(ボウル内で直接調理) 料理人->>ボウル: ネギを加え、芋を潰す 料理人->>ボウル: ツナ(油ごと)・マヨを入れ混ぜる 料理人->>ボウル: カニカマを入れ混ぜる 料理人->>ボウル: 天かすを入れ混ぜる 料理人->>ボウル: 塩こしょうで味を調える end

こういうちょっとした手順確認でも使えるので便利です

文具と飾り。

ちょっとしたプレゼントをもらいました。

『ハリー・ポッターとアズカバンの囚人』タイムターナー。

早速の取り付け、既に取り付けてあるグリフィンドールの紋章ともピッタリ。

こういう飾りのために各所にハードポイントをつけてくれた母には感謝です

手間の簡略化。

iPhoneAIRに買い換えた際についでに買った充電器。

「安いから」「置くだけだし」思いながら買ったのはいいのですが

  • 固定しないとずれる
  • 確実に充電されない

などの問題点があり、それなら普通にUSBに挿すだけでいいのではという根源的な疑問にたどり着きました。

ニトリにて見つけた充電器つきの置き時計。

見た目はインテリアにも映えるモダンでシンプルなデジタル時計ですが

この置くだけ充電は、ずれようがないのが魅力。

「運用が大変ならば設計から変える」

のシンプルな答えでした。

Gemini Nanobanana 3.0の性勢力の威力。

制度や画面性勢力が向上したNanobanana 3.0。その検証です。

Flash (高速モード)での描画

臨場感はこの時点でもかなりあります。

Pro(思考モード)での描画

なんと、基本が横長画像。

見てお分かりのように、よりリアルなライブ感が足され、魔法のエフェクトもたされています。

画像合成

では、この4つのGeminiで

生成された4人のライブシーン。これを「1つのライブ会場で演奏させる」というのを指示してみます。

  • ドラムが前向きに修正され
  • それぞれにスポットライトが当てられ
  • 観客も足されている

と、恐るべき制度での合成がありました。

ここまで進化したGoogleAIの力に改めて驚嘆です。

シェルスクリプト:top-proc.shの改修。

以前のシェルスクリプト、メモリとCPU使用率を見るスクリプトを改修しました。

改修後のスクリプト

#!/bin/bash

# スクリプト名: top_procs.sh
# 説明: システム全体の負荷状況と、CPU/メモリ使用率が高い上位プロセスを表示します。

# 表示するプロセス数の設定
TOP_N=5

# ヘルプ表示関数
show_help() {
    echo "--- プロセス監視スクリプト ---"
    echo "このスクリプトは、システム全体の負荷状況(CPU/メモリ/LoadAvg)と、"
    echo "リソース消費が多い上位${TOP_N}つのプロセスを表示します。"
    echo ""
    echo "使用方法: $0 [オプション]"
    echo ""
    echo "オプション:"
    echo "  -c          : CPU使用率 (%\$CPU) の高い上位${TOP_N}つのプロセスを表示します。"
    echo "  -m          : メモリ使用率 (%\$MEM) の高い上位${TOP_N}つのプロセスを表示します。"
    echo "  -a          : CPUとメモリの両方の上位${TOP_N}つのプロセスを表示します。(引数なしと同じ)"
    echo "  -h          : このヘルプを表示します。"
    echo ""
    echo "出力形式: 割合(%) PID COMMAND"
    echo "-----------------------------------------"
}

# システム全体のリソース状況表示関数
show_system_summary() {
    echo "--- システム稼働状況 ---"

    # 1. Load Average (uptimeコマンドから抽出)
    # 出力例: 16:45:23 up 10 days, ... load average: 0.05, 0.03, 0.01
    local load_avg=$(uptime | awk -F'load average:' '{ print $2 }' | xargs)
    echo "Load Average : $load_avg"

    # 2. CPU使用率 (vmstatコマンドから直近1秒の状態を取得)
    # vmstat 1 2 の2行目(最新の状態)を取得し、アイドル率($15)を100から引く
    if command -v vmstat >/dev/null 2>&1; then
        local cpu_idle=$(vmstat 1 2 | tail -1 | awk '{print $15}')
        local cpu_usage=$((100 - cpu_idle))
        echo "CPU Usage    : ${cpu_usage}%"
    else
        echo "CPU Usage    : (vmstatコマンドが見つかりません)"
    fi

    # 3. メモリ使用率 (freeコマンドから計算)
    # free -m の出力を解析
    if command -v free >/dev/null 2>&1; then
        local mem_info=$(free -m | grep Mem:)
        local mem_total=$(echo "$mem_info" | awk '{print $2}')
        local mem_used=$(echo "$mem_info" | awk '{print $3}')
        # awkで浮動小数点計算
        local mem_pct=$(awk "BEGIN {printf \"%.1f\", ${mem_used}/${mem_total}*100}")
        echo "Memory Usage : ${mem_pct}% (${mem_used}MB / ${mem_total}MB)"
    else
        echo "Memory Usage : (freeコマンドが見つかりません)"
    fi
    echo "------------------------"
}

# プロセス情報表示関数
# 引数1: ソート対象 (CPU/MEM)
# 引数2: ソートフィールド番号 (ps auxの3番目か4番目)
# 引数3: タイトル
show_top_procs() {
    local type=$1
    local field=$2
    local title=$3

    echo ""
    echo "--- ${title} (上位 ${TOP_N} プロセス) ---"
    echo " %${type}    PID  COMMAND"
    echo "-----------------------------------------"

    ps aux |
        # ヘッダー行をスキップ
        tail -n +2 |
        # 指定フィールド (CPU:%3, MEM:%4) で降順ソート
        sort -k ${field} -r |
        # 上位N行を抽出
        head -n ${TOP_N} |
        # PID ($2)、割合 ($field)、COMMAND ($11以降) を整形して表示
        awk -v field="${field}" '{
            cmd="";
            for(i=11;i<=NF;i++){
                cmd=cmd" "$i
            };
            # $fieldには$3(%CPU)または$4(%MEM)の値が入る
            printf "%6.2f%% %6s %s\n", $field, $2, cmd
        }'
}

# メインロジック

# まずシステム全体のサマリーを表示 (ヘルプ以外の場合)
if [ "$1" != "-h" ]; then
    show_system_summary
fi

if [ "$#" -eq 0 ] || [ "$1" == "-a" ]; then
    # 引数なし、または -a の場合 (全て表示)
    show_top_procs "CPU" 3 "CPU使用率"
    show_top_procs "MEM" 4 "メモリ使用率"
elif [ "$1" == "-c" ]; then
    # -c の場合 (CPUのみ)
    show_top_procs "CPU" 3 "CPU使用率"
elif [ "$1" == "-m" ]; then
    # -m の場合 (メモリのみ)
    show_top_procs "MEM" 4 "メモリ使用率"
elif [ "$1" == "-h" ]; then
    # -h の場合 (ヘルプ)
    show_help
else
    # 不正な引数の場合
    echo "不正なオプションです: $1" >&2
    show_help
    exit 1
fi

あとはこれに

chmod +x top-proc.sh

で実行権を付与します。

使用例

./top-proc.sh
--- システム稼働状況 ---
Load Average : 1.30, 1.40, 1.32
CPU Usage    : 23%
Memory Usage : 60.5% (3583MB / 5920MB)
------------------------
--- CPU使用率 (上位 5 プロセス) ---
 %CPU    PID  COMMAND
-----------------------------------------
 52.10%  12345  ruby_app_server: /var/www/webapp1 (production)
  9.40%   1086  /usr/sbin/database_server [...]
  3.80%  42162  /usr/sbin/web_server -k start
  1.50%  42161  /usr/sbin/web_server -k start
  0.90%   7978  nodejs_process /path/to/nodejs_app/server.js

--- メモリ使用率 (上位 5 プロセス) ---
 %MEM    PID  COMMAND
-----------------------------------------
 13.10%   1984  /usr/bin/java -Xms256m -Xmx256m [...] search_engine -Des.path.home=/usr/share/search_engine [...]
 10.00%   1086  /usr/sbin/database_server [...]
  7.50%  12345  ruby_app_server: /var/www/webapp1 (production)
  3.90%  78630  ruby_app_server: /var/www/webapp2 (production)
  3.80%  76583  ruby_app_server: /var/www/webapp3 (production)

と出てきます。

  • ロードアベレージ:uptimeコマンドから
  • CPU使用率:vmstatコマンドから直近1秒

として、より現実値に近づけています。

sudo ln -sf /path/to/script/top-procs.sh /usr/local/bin/top-procs

として、どこからでもコマンドを呼び出せるようにしておくといいでしょう。(スクリプトの場所は自分がこれを保存した絶対パスを指定してください)

既にコマンド化している場合は、このスクリプトを差し替えるだけでOKです。

10月の食事ピックアップ。

連休時の話。

お世話になっている肩にご馳走になりました。

伊勢エビ

予想外にも程があった伊勢エビ。過去に数回食べたことがありましたが

この量が出るのは驚きでした。しかし、それ以上に驚きだったのが「これは半身です」と言われたこと。

残りの半身は天ぷら。確かに海老は天ぷらの種としての定番ですが、伊勢エビというのも予想外でした。上品な甘味と歯触り、いずれも素晴らしいものでした。

しかし、話はそれだけでは終わらず。

刺身で出てきた尾頭は具足煮。しかも、前身をこんがりあぶった鬼殻焼きスタイルです。

頭の味噌から出る出汁がたっぷり出ていて、残っていた頭の肉も食べ応え十分。

その他食事

これをその他と言っていいのかは不明ですが:

兜煮。全体は崩れず、味がしっかり染みている当最高の出来。目玉のゼラチン質も最高です。

ご飯は伝統的な塩むすびと

ネギトロ&トロタク。

ここまで贅沢でいいのかという形の、非常に充実した食事でした。

『Elasticsearchを利用しているGrowiでのアップデート注意点(Growi特有のプラグインに起因するサービス停止)』

概要

GrowiでElasticsearchによる全文検索を利用している中でのアップデートの注意点です。なお、Growiをオンプレ運用していてサーバリソースの関係上などでElasticsearchを用いていないという方はここから下は参考程度にとどめてください。

環境

  • Grwoi v7.3.3
  • Elasticsearch v9.2.0
  • Apacheによるリバースプロキシ

パッケージアップデート時の注意

sudo aptitude upgrade

(※筆者は好みでaptitudeを使っています)

とした中で、

以下のパッケージが更新されます:          
  elasticsearch 

と、elasticsearchを含むアップデートがあったときの注意点です。

注意1:設定ファイルの維持

(データベースを読み込んでいます ... 現在 170063 個のファイルとディレクトリがインストールされています。)
.../elasticsearch_9.2.0_amd64.deb を展開する準備をしています ...
elasticsearch (9.2.0) で (9.1.5 に) 上書き展開しています ...
elasticsearch (9.2.0) を設定しています ...

設定ファイル '/etc/elasticsearch/jvm.options'
 ==> これはインストールしてから (あなたかスクリプトによって) 変更されています。
 ==> パッケージ配布元が更新版を提供しています。
   どうしますか? 以下の選択肢があります:
    Y か I  : パッケージメンテナのバージョンをインストールする
    N か O  : 現在インストールされている自分のバージョンを残す
      D     : 両バージョンの差異を表示する
      Z     : 状況を調査するためにシェルを開始する
 デフォルトでは現在使っている自分のバージョンを残します。
*** jvm.options (Y/I/N/O/D/Z) [デフォルト=N] ? 

の質問が来た場合、N を確実に選んでください。手なりでのyは厳禁です。なぜなら、Growi設定時に

-Xms256m
-Xmx256m

の2行を追記しているからです。(※数値は環境によって異なりますが、Growi推奨値が256MBです)

この -Xms256m および -Xmx256m の2行は、Elasticsearch の JVMヒープメモリの初期サイズ(Xms)と最大サイズ(Xmx) を指定しています。これが削除される、つまりデフォルト設定に戻ると、Growi の安定性やパフォーマンスに以下のリスクがあります。

削除された場合のリスク

  1. メモリ不足によるクラッシュ
  • デフォルトではJVMが自動でヒープサイズを決定しますが、サーバのメモリ量や他プロセスの使用状況によっては、必要なメモリが確保されず、ElasticsearchがOutOfMemoryErrorで落ちる可能性があります。
  1. パフォーマンスの低下
  • 初期サイズが小さいと、ヒープの拡張が頻繁に発生し、GC(ガベージコレクション)による停止時間が増加します。これにより、Growiの検索やデータ取得が遅くなることがあります。

間違えてY/Iを選択してしまったら?

/etc/elasticsearch/jvm.options.dpkg-old

または

/etc/elasticsearch/jvm.options.dpkg-dist

にオリジナルが残されています。

sudo cp -pi /etc/elasticsearch/jvm.options.dpkg-old /etc/elasticsearch/jvm.options

または

sudo cp -pi /etc/elasticsearch/jvm.options.dpkg-dist /etc/elasticsearch/jvm.options

として復旧させましょう。

注意2:Growi依存プラグインによるサービス起動不可

そうして、アップデートが完了後、

Restarting services...
 systemctl restart elasticsearch.service
Warning: The unit file, source configuration file or drop-ins of elasticsearch.service changed on disk. Run 'systemctl daemon-reload' to reload units.


Job for elasticsearch.service failed because the control process exited with error code.
See "systemctl status elasticsearch.service" and "journalctl -xeu elasticsearch.service" for details.


systemctl status elasticsearch.service
failed (Result: exit-code)

と、failed (Result: exit-code)が出てサービスの再起動に失敗することがあります。この場合、Growiの全文検索は使うことができません。

原因:Growi固有のプラグイン

Growiインストール時、Elasticsearch用の

  • analysis-icu
  • analysis-kuromoji

のプラグインをインストールしています。これはパッケージと同時にアップグレードされません。Elasticsearchのコマンドで導入したパッケージのためです。

対処:再インストール

  • パッケージアンインストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin remove analysis-icu
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin remove analysis-kuromoji
  • パッケージ再インストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji

2つの注意点を対処後

まず、Run 'systemctl daemon-reload'と言われているので、

sudo systemctl daemon-reload

で更新されたデーモン設定ファイルを読み込みます。

次いで、

systemctl status elasticsearch.service

で、Elasticsearchが依然としてfailed (Result: exit-code)となっていることを確認。その後、

sudo systemctl restart elasticsearch.service

としてサービスを再起動。今度はエラーが起きないと思います。

systemctl status elasticsearch.service

でもactive/runningを確認しましょう。

Growi上での最終確認

  1. Growiに管理者権限でアクセスします。
  2. 設定>全文検索管理に進みます。

接続の状態 接続されていますと表示されていることを確認し、

トップページに戻って検索を開始。想定通りの検索結果が出れば対処完了です。

RedmineViewCustomizeプラグインを利用して、ナレッジベースのキャッチ画像を別画面で出す。

プロジェクトのナレッジベースプラグインのアイキャッチをクリックした際、添付画像に直接飛ぶView Customizeの設定です。

ここの画像をクリックすることで、

この添付ファイル画像へと飛びます。

前提

  • ReddmineにViewCustomizeプラグインがはいっていること。
  • これを触ることができる権限を持っていること。
  • knowledgebaseプラグインが入っていること。

ViewCustomizeで新たな表示設定を追加

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

以下のようにして新しい表示を追加します。

  • パスのパターン
    • /projects/[^/]+/knowledgebase/articlesと、ナレッジベースの機器一覧を設定
  • プロジェクトパターン
    • 空白
  • 挿入ページ
    • 全ページのヘッダ
  • 種別
    • JavaScript
  • コード

以下のように入力。

$(function() {
  // Knowledgebase記事一覧内のサムネイルのコンテナを対象とする
  $('.article-list-thumbnail').each(function() {
    var $container = $(this);
    var $img = $container.find('img');
    var originalSrc = $img.attr('src');

    // サムネイルのURLをフルサイズ画像のURLに変換
    // 例: /attachments/thumbnail/946  ->  /attachments/946
    if (originalSrc && originalSrc.includes('/attachments/thumbnail/')) {
      var fullSizeSrc = originalSrc.replace('/attachments/thumbnail/', '/attachments/');

      // <a>タグを作成し、サムネイル画像を囲む
      var $link = $('<a>')
        .attr('href', fullSizeSrc)
        .attr('target', '_blank') // 新しいタブで開く
        .addClass('knowledgebase-zoom-link'); // 独自のクラスを追加 (後でLightboxプラグインと連携する際などに便利)

      // 画像をリンクで置き換える
      $img.wrap($link);

      // (オプション) カーソルをポインターに変更し、クリック可能であることを示す
      $img.css('cursor', 'pointer');
    }
  });
});
  • コメント
    • knowlegebaseのアイコンをクリック時に添付を表示するなど

これを有効にして保存。

設定確認

設定したRedmineサイトの任意のナレッジベースにアクセス。
上記のように、一覧の画像をクリックして添付ファイルが開けば設定完了です。

Page 1 of 16

Powered by WordPress & Theme by Anders Norén