2026年4月20日月曜日

[Lua] イベント駆動型のサンプル

■EventBus.lua
local EventBus = {}
EventBus.__index = EventBus

function EventBus.new()
    return setmetatable({ listeners = {} }, EventBus)
end

-- 購読
function EventBus:on(event, callback)
    if not self.listeners[event] then
        self.listeners[event] = {}
    end
    table.insert(self.listeners[event], callback)

    -- 解除用関数を返す
    local removed = false
    return function()
        if removed then return end
        removed = true
        self:off(event, callback)
    end
end

-- 一度だけ実行
function EventBus:once(event, callback)
    local unsubscribe
    unsubscribe = self:on(event, function(...)
        unsubscribe()
        callback(...)
    end)
end

-- 購読解除
function EventBus:off(event, callback)
    local list = self.listeners[event]
    if not list then return end

    for i = #list, 1, -1 do
        if list[i] == callback then
            table.remove(list, i)
            break
        end
    end
end

-- 発行
function EventBus:emit(event, ...)
    local list = self.listeners[event]
    if not list then return end

    for _, callback in ipairs(list) do
        callback(...)
    end
end

return EventBus

--------------------------------------------------------------------
■使い方
local EventBus = require("EventBus")
local bus = EventBus.new()

-- 購読
local unsubscribe = bus:on("player_damage", function(amount)
    print("Player damaged:", amount)
end)

-- 発行
bus:emit("player_damage", 10)

-- 解除
unsubscribe()

--------------------------------------------------------------------
■一度だけ実行(once)が必要になる場面
1. ゲーム開始時に一度だけ処理したい
例:ロード完了イベントが来たら UI を表示する
→ 2回目以降は不要

2. 敵が死んだ瞬間に一度だけ演出を入れたい
例:ボスが死んだ瞬間にカットシーン再生
→ 何度も呼ばれたら困る

3. プレイヤーが初めてアイテムを拾った時だけチュートリアルを出す
→ 2回目以降はチュートリアル不要
■参考
https://github.com/ThomasKomarnicki/GameEventBus

2026年4月12日日曜日

AIの機嫌によってコードの質は左右されるのか?

結論から言うと、AI は“機嫌”ではなく “入力の質・文脈・プロンプトのトーン” によって出力が変わる。
でも、人間から見ると 「機嫌が良いときの方が良いコードを出す」ように感じる理由 はちゃんとある。

🎯 AI に“感情”はない。でも出力はトーンに影響される
AI は怒られたから拗ねる、褒められたから頑張る、みたいな感情は持っていない。
ただし、入力文のトーンや構造がモデル内部の確率分布に影響するので、結果的に出力が変わる。

✔ なぜ褒めると良いコードが出るように見えるのか
褒める=ポジティブで明確な指示になりやすい

「これ良いね、次はこうして」

→ 目的が明確で、改善点が具体的になる

→ モデルが最適化しやすい

罵倒=ノイズが多く、指示が曖昧になる

「なんでこんなクソコード出すんだよ」

→ 実際の指示が薄まり、モデルが意図を掴みにくい

→ 出力の質が落ちる

攻撃的な文体は“攻撃的な文脈”として扱われる  
モデルは文脈を重視するので、

攻撃的な文章 → 技術的な回答に集中しづらい


ポジティブな文章 → 技術的な回答に集中しやすい

あなた自身の読み取り方も変わる

褒めながら使う → 冷静にコードを評価できる

イラつきながら使う → 小さな欠点も大きく見える

🧠 つまり、“機嫌”ではなく “プロンプトの質” が変わっている
AI の内部ではこういう流れになっている:

入力文のトーン

文脈の構造

指示の明確さ

技術的要求の具体性

これらが変わると、生成されるコードの確率分布が変わる。
その結果、あなたには「褒めた方が良いコードが出る」と感じられる。

これは 心理的効果+モデルの特性 の両方が絡んでいる。

🔧 実際にコードの質を安定させるコツ
あなたのようにゲーム開発やアニメーション制作で AI を使うなら、
以下の 3 点を守ると出力の質が安定する。

目的を先に書く  
「○○を実現したい。そのために△△のコードを出して」

制約を書く  
「 Ruby で」「GC 負荷を抑えて」「可読性優先で」

改善点を具体的に伝える  
「この部分のロジックが冗長なので短くしてほしい」

これだけで“機嫌”とは関係なく、常に良いコードが出やすくなる。

🎬 まとめ
AI のコード品質は“機嫌”ではなく“入力の質と文脈”で変わる。
ただし、褒めると良い結果が出やすいのは事実。

あなたの感覚はかなり正しい。
  

2025年2月28日金曜日

android(arm64)用 libffi のビルド (static/shared) host mingw64

#!/bin/bash

# Android NDK のツールチェーンのパスを設定
#export TOOLCHAIN=/path/to/android-ndk/toolchains/llvm/prebuilt/linux-x86_64
export TOOLCHAIN=/c/Users/ebi/AppData/Local/Android/Sdk/ndk/28.0.13004108/toolchains/
llvm/prebuilt/windows-x86_64

# コンパイラ、リンカ、アーカイバなどのツールを設定
export CC="$TOOLCHAIN/bin/aarch64-linux-android28-clang"
export CXX="$TOOLCHAIN/bin/aarch64-linux-android28-clang++"
export AR="$TOOLCHAIN/bin/llvm-ar"
export RANLIB="$TOOLCHAIN/bin/llvm-ranlib"

# コンパイラオプションを設定
export CFLAGS="-fPIC -march=armv8-a -mcpu=cortex-a53+crypto -mthumb -fno-strict-aliasing 
-ffunction-sections -funwind-tables -fstack-protector-all"
export CXXFLAGS="$CFLAGS -frtti -fexceptions"

# configure スクリプトを実行
./configure \
    --host=aarch64-linux-android \
    --prefix=`pwd`/build/ \
    CC="$CC" \
    CXX="$CXX" \
    AR="$AR" \
    RANLIB="$RANLIB" \
    CFLAGS="$CFLAGS" \
    CXXFLAGS="$CXXFLAGS" \
    --enable-static \
    --enable-shared \
    --disable-tcl
  

2024年6月4日火曜日

0byteのファイルを削除する

mingwで
find . -size 0 -ok rm {} \; ←0バイトファイルを削除します
駄目な時はツールでwize force deleterとか
winrarで圧縮して削除とかもあるらしい

2023年11月10日金曜日

アークナイツ bot 封じ メモ

twitter自分の設定
アークナイツ -"トレカ" -"カード" -"ブースター" -"デッキ" -"UNION ARENA" -"#ユニアリ" -"ユニアリ" -"ユニオンアリーナ" -"#ユニオンアリーナ" -Original: -Source: -"石垢" -"プロフ" -"ぷろふ" -"プロフィール" -"裏アカ" -"裏アカ女子" -"オフぱこ" -"オフ ぱこ" -"jp.mercari.com" -"エンドフィールド"

これでもたまに抜けてくるのがいるのがむかつく。早く100円課金してbot駆逐したい。100円でホントに消えるかしらんが

※石垢販売→石垢に変更


2023年10月11日水曜日

Termux メモ

iPlay 50 mini proを買ったのでtermuxを入れて遊ぶコーナー


■始めに
google playにあるtermuxは古いので入れてはいけない。f-droidから落とすべし。
でないと必ずハマります←はまった人
https://f-droid.org/ja/



■make install しようとすると書き込みできないと出る
cmake で -DCMAKE_INSTALL_PREFIX=$PREFIX を付ける
参照:https://github.com/termux/termux-packages/issues/3099

./configure なら ./configure --prefix=$PREFIX



■configureしたらconfigure: error: no acceptable ld found in $PATHとでた
binutils を入れる



■pkgやaptで落とされるパッケージの場所
/data/data/com.termux/cache/apt/archives

ついでtermux-packagesの作業場所は ~/.termux-build



■シェルスクリプトが動かない
改行コードがCR+LFになってないか確認する。linuxなのでLFでないと動かない

Termux-execを使う。最初から入ってると思うけど。
https://wiki.termux.com/wiki/Termux-exec
https://unicorn.limited/jp/rd/linux/20221030-termux-config.html



■x11(gui画面)を出す
こちら
https://ivonblog.com/en-us/posts/termux-x11/



■visual studio code を動かす
ぐぐってみるとubuntuを起動してどうたらと出てきますが、今はそんなの必要ないです

pkg install code-oss です



■Xで signal 9 エラーが出る
こちら
https://ivonblog.com/en-us/posts/fix-termux-signal9-error/



■ちゃんと設定できてるはずなのにcmakeでstddef.hが無いと出る
cmakeのclangの設定が間違ってるポイ
/usr/lib/cmake/clang/ClangConfig.cmakeの先頭
# Compute the installation prefix from this LLVMConfig.cmake file location.
get_filename_component(CLANG_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
get_filename_component(CLANG_INSTALL_PREFIX "${CLANG_INSTALL_PREFIX}" PATH)
get_filename_component(CLANG_INSTALL_PREFIX "${CLANG_INSTALL_PREFIX}" PATH)
get_filename_component(CLANG_INSTALL_PREFIX "${CLANG_INSTALL_PREFIX}" PATH)



#get_filename_component(CLANG_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
#get_filename_component(CLANG_INSTALL_PREFIX "${CLANG_INSTALL_PREFIX}" PATH)
#get_filename_component(CLANG_INSTALL_PREFIX "${CLANG_INSTALL_PREFIX}" PATH)
#get_filename_component(CLANG_INSTALL_PREFIX "${CLANG_INSTALL_PREFIX}" PATH)
set(CLANG_INSTALL_PREFIX "ENV${PREFIX}/lib/clang/17" )
こうする



■openGLについて
えーとハードなのはないです。ソフトエミュ(mesa)の方ならありました。
しかしヘッダが入ってないので自分で落としてきます(こういうパターンが多い)。
手持ちのパーションではhttps://archive.mesa3d.org/mesa-23.2.1.tar.xzでした。
ここから足りないヘッダを/usr/lib/GL にコピーします。
で実行したところ






まぁそのまんまですな。一応動いたということで
------ソース----------------- #include "glut.h" int main(int argc, char *argv[]) { glutInit(&argc, argv); glutCreateWindow("Check OpenGL"); printf("Vendor :%s\n", glGetString(GL_VENDOR)); printf("GPU :%s\n", glGetString(GL_RENDERER)); printf("OpenGL ver.%s\n", glGetString(GL_VERSION)); } glut と EGL_mesa と GLX_mesa が必要です



■std::auto_ptr について
boostをビルドしようとしたらstd::auto_ptrは使用不可だと出た。
ぐぐってみるとclang-tidyというので変換させる方法があったが、めんどいなぁと思ったら
#define BOOST_NO_AUTO_PTR  を付ければいいというのがあったのでそうした
参考https://github.com/TRIQS/triqs/issues/523


・ちなみにclang-tydyを試した時はこんな感じ
clang-tidy -p=../compile_flags.txt,modernize-replace-auto-ptr -fix -fix-errors --checks=misc-use-override config.cpp

cmakeからcompile_flags.txtを作らなくてはいけなくてうだうだとやる。
この辺参考https://qiita.com/s_araki/items/32aded38dca734c0e02d

-vをつけてパスが反映されているか確認。

最後に-std=c++11をつけないとコンパイルが通らなかった



■modplug について

sinf()がclangのライブラリとぶつかると言われるので

cmake . -DCMAKE_CXX_FLAGS="-DHAVE_SINF" -DCMAKE_INSTALL_PREFIX=$PREFIX
make
make install



2023年7月15日土曜日

ps4 itarch v3 メモ

■更新履歴
2024/05/05 再インストしてみて、間違ってたとこや気づいたことを修正と書き込み
2024/08/26 久々に起動してupdate。keyが違うと言われたので↓にあるように更新してupdate。1.2G 約2時間。LLVMが18になって上書きされた以外特に問題はなかった。戻す方法は下の方に書いてます
2025/04/05 ps4linuxの動作が重いことについて を一番下に追加した。他気が付いたところをちょこちょこ修正





V2からV3になりあちこち細かく変更されています。
少しでも間違えれば、すぐ吹っ飛ぶ所は変わりませんが・・

■初めに
まずはkeyを最新に合わせます。これをしないと違う人が作ったパッケージが入ってしまい、取り除くのに苦労します。
sudo pacman-key --init && sudo pacman -Sy archlinux-keyring && pacman -Syu

※V3はpacman -Syuしてはいけないらしい
https://ps4linux.com/forums/d/84-opengl-glx-extension-not-supported-by-display-psxitarch-v3
(2024/05/05)出来るようになってました。少なくともkey更新して初めの1発目だけは。
更新しようとすると容量1.3G 約2時間くらいかかりました。




■sudoコマンドのパスワード要求を無効化する
/etc/sudoers を書き換えます。
sudo leafpad でrootでメモ帳が立ち上がります。

<ユーザ名> ALL=(ALL:ALL) NOPASSWD: ALL  なので
psxita ALL=(ALL:ALL) NOPASSWD: ALL と書き込みます

WinSCPなんかはパスワードを聞いてくる設定だとうまく動かないっぽいので
いちいちパスワード入れるのもめんどいし。



■何はともあれSSH
指定したユーザのみsshによるログイン
/etc/ssh/sshd_config AllowUsers ユーザアカウント

# sshdをスタートさせる
sudo systemctl start sshd
ポート変更とユーザー指定くらいはしておこう



■スワップファイルを調べる
htop

■スワップファイルを作る
sudo fallocate -l 2G /swapfile -x
2Gもあればいいだろう
結構時間かかる。5分くらい

設定します
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

自動的に有効にする
/etc/fstab  を書き換える
/swapfile none swap sw 0 0  ← 一番下の行にこれを追加する

一度ログアウトして、htopでスワップが出来ているか見る。



■タイムゾーンの設定
sudo timedatectl set-timezone Asia/Tokyo



** ***********************************
*************************************
  ここまで出来たら、一度再起動して、起動を確認してからPS4に戻ってFTPからLinuxイメージ(/user/home/にあります)をバックアップしておく事を強く勧めます。

  archはubuntuなんかと違いとにかく壊れやすいので
*************************************
*************************************


■IgnorePkgを使って書き換えては困るパッケ−ジを除外します https://ps4linux.com/forums/d/87-how-to-update-pop-os-without-breaking-drivers-and-ps4-specific-adaptions
↑を参考にしながらIgnorePkgを書き換えます

/etc/pacman.confの中 IgnorePkg に色々書いてありますが、これがpacman で変更してはいけないパッケージです。psxitachの人が変更した部分。
しかしこれでも足りないようなので、私が調べた分を追加します。

gtk3はwindow周りです。これが更新されるとコマンドラインのwindowすらでなくなります。危険度大。

opensshはTeraTermやWinSCPだと動くのですが、visualstudioでリモートしようとすると動かないです。
どうもkeyが信頼されてない方に分類されていることや、archlinuxのwebでもdropbearの方が上に来ていることから、
使わない方が良いと推測されます。危険度中。

SDL周りも更新されると困るので除外します。危険度中。

これらに付随するパッケージ、膨大にありますが除外対象です。

 ffmpeg dolphin-emu-git。なんかしようとすると真っ先に依存関係がおかしいと言ってくるのでこれも除外対象にします。

wine消して、入れ直しただけで動かなくなった。これも何かやってるのか。除外対象にします。
以下が最終的に出来た自分のIgnorePkgです。これらに引っかかるようなら更新はしない方がいいでしょう

linux linux-headers IgnorePkg = xorg*!(xorg-xmessage|xorg-xauth) qt5* qt6* webkit* gst* sdl2* wayland* vulkan* ncurses libpcap libjpeg-turbo libelf libcap alsa-lib gtk* glib* linux-* openssh vid* libvpx libvid* ffmpeg ffmpeg4.4 lib32-mesa libdrm lib32-libdrm xf86-video-amdgpu mesa* xserver-xorg-video-amdgpu* libdrm* dolphin* libavcodec libavformat libavutil libswscale wine

※!()は除外です。例えば xorg*!(xorg-xmessage)の場合、xorgと付くやつ全てを除外したいがxorg-xmessageのみ除外(除外の除外)したいというときに使います。除外が複数あるときは|を使います
(2024/05/05) 何もしなくても行けるようになってました。少なくとも最初の1回目だけは



■日本語入力
V3になってもIMEは入ってませんでした。
fcitxがfcitx5になっているので切り替えたい所ですが、gtk周りでエラーが出るので、V2の時と同じfcitxを使います
sudo pacman -S fcitx fcitx-mozc fcitx-configtool fcitx-gtk2 fcitx-gtk3 fcitx-qt5
なんかわらわらとwarningが出ますが無視。一応動きます。

左上のメニューからlangage -> keybordlayoutを選んでjpにします
systemlangageまで日本語にするとコンソールが横長になり使いにくくなるので、そちらはそのままにしておきます。
※但しその場合、wineのwindowタイトルが文字化けします。winetricksでfontを入れてもです。つまりwineでもwindowはXで書いてるんだなぁという事

fcitxの初期設定
左上のメニューから「jwm comfig」→「config menu」を開く

行末の&はいらなくなりました

デスクトップが英語モードの時はこれでいいのですが、日本語モードにした場合は 上手く行かないので /etc/environment に
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
を加えて下さい
ってJWMのバグじゃね?だからStartupCommandを消したのか

(2014/05/05)多分こいつがわるさしてたんじゃないかなぁ・・と。警告を無視したのがいけなかったか。
fcitx5が使えるようになってた。ひゃっほい
https://qiita.com/mnishiguchi/items/2a1a485a72ff6289b32f


■visual studio のリモートデバックでwindowが表示されない
起動前コマンドに、export DISPLAY=:0 を設定する

(2024/05/07)SDL2を使ったプログラムで出なくなりました。
どうもmesaドライバが古いllvm-14を呼んでいるからみたいです。
今はllvm-17なのですが、このmesaドライバはPS4用に書き換えたみたいでIgnorePkgに入ってるので更新したらまず動かなくなります。
普通ならここでハングアップですが、ちゃんとメッセージを出してくれるのがありがたい。
という訳でhttps://archlinux.org/packages/extra/x86_64/llvm14-libs/ から落としてきて入れます。
sudo pacman -U llvm14-libs-14.0.6-4-x86_64.pkg.tar.zst

また吹っ飛ばした時の為に置いておく
LLVM14セット

sudo ln -s /usr/lib/llvm14/bin/llvm-config /usr/bin/llvm-config

参考 https://ps4linux.com/forums/d/38-winesap-os-possible-solution-to-updating-the-os-without-breaking-the-system/13


■steam
steamのゲームをやろうとして古いランタイムが見つからないと出てくる場合があります。
例) find ~/.local/share/Steam -iname "*libselinux.so*"
でstemライブラリの中でlibselinux.soを検索します。

見つけたら起動用のスクリプトを書きます。
例) これはwaywardフリー版を起動する為のスクリプト
export LD_LIBRARY_PATH=/home/psxita/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/i386-linux-gnu/:/home/psxita/.local/share/Steam/ubuntu12_32/steam-runtime/lib/i386-linux-gnu/:$LD_LIBRARY_PATH
./wayward
こんな感じ




■steamで日本語にならない
setting --> interface --> languageを変更しようとしても無反応になる

同じインターフェース内の一番下の"enable context menu focus compatibilyty mode"をONにしてください




■wine
winecfg で初期化です。ホームに.wineを作ります。途中で回線が切れて初期化をやり直したいとかいうときは、.wineディレクトリを削除するとやり直せます。
初期化が終わったら何か適当なものを動かして、画像と音とパットが動くか確認しましょう。どれかがおかしい場合システムを破壊している可能性があります。



■ssh で sudo pacman -S 〇〇とすると エラー
こんな感じ。

参考https://ksk-log.com/posts/2023/06/10-ssh-matlab/
↑のようにsudo XAUTHORITY=~/.Xauthority pacman -S 〇〇とやってもダメです。
1回目は上手く行きますが、2回目から上手くいきません。大人しくsudoを使うときは 本体の方からやりましょう、えー。
これ1度失敗するとリモートデバックにも影響が出ます。リログしても戻らない。再起動なら復活しますが・・。うーむ・・流石謎すぎる。

参考https://askubuntu.com/questions/872792/what-is-xdg-runtime-dir
つまりsudo だとusrと同じ環境変数は使ってくれない・・と。セキュリティの為とはいえめんどいねぇ
sudo nano /usr/local/bin/update-jwm-menu.sh


■ps4 linuxが終了できない
USBメモリが刺さったままになってませんか?
コマンドラインでshutdownとやるとメッセージが出るが、左上のメニューからだと何も出ません。不親切だねぇ。



■blender
ビルド出来ました。blenderは必要なバイナリがすべて用意されているので楽でいいですな。
sqliteをupdateするだけでいけました。svnが重くてDLに1日、ビルドに3時間ほど掛かりました。コアの恩恵がかなりあるのでmake時に-j8 とするのを忘れないようにしましょう。
折角なのでメニューに登録。.jwm-gen-menuです。

こんな複雑なのも読めました。メモリ3G、スワップ800M使用。cyclesで時間2分ほど、一昔前と比べると十分早いが今のPCなら一瞬だろうなぁ。

こちらはEeveeクッソ重いですが、一応できてます













■godot

ビルドできた2時間半ほど。sconsをインストするだけで出来た。sshからビルドしようとすると途中でおかしくなるので本体から。









■krita
appimageを実行するだけ。すべてのソフトがこうなら楽だが。appimageイメージの作り方を見てみてたがやり方がよくわからん

※LuaAppMaker の AppImage を作る
https://d-alchemy.xyz/blog/article/211900136.html
あれ、前は見かけなかったぞこのページ。ちと試してみるか。









■ps4 の内臓HDDにアクセス出来ない
V2の時は自動で出来たような気がするがV3だと出来ていない。なぜ?と思ったら例のスクリプトはpython2用か? V3のシステムはpython3になっているので実行できない。とかそんな理由な気がする。 丁度V2の時に使っていた外付けHDDが残っていたので、そこからkeyをコピーしたら認識した。

※他の人はどうやってんだ?とぐぐってみると案の上発狂してる人がいた。FTPを使ってflash0イメージをwindowsにコピーしてpython2でスクリプトを実行してkeyを取るらしい。聞くだけでめんどいな。他の方法だとorbismanで行けるっぽい? あーV2の時はこれ使ったかも



■pacmanがロックしたら
sudo rm /var/lib/pacman/db.lck
https://www.archlinux.site/2019/12/arch-linuxunable-to-lock-database.html



■ruby
https://mazeltov7.hateblo.jp/entry/2013/11/18/%E3%81%95%E3%81%8F%E3%82%89VPS%EF%BC%88Debian%EF%BC%89%E3%81%ABrbenv%2Cruby%2Cmysql%2Crails%E3%82%92%E5%85%A5%E3%82%8C%E3%82%8B
この辺参考に。ただしgitの場所は変わってるのrbenv/のと、./bash_profileは./bashrcにあと最後くっついてるので 一度開いて確認する。
いつの間にか普通に入れられるようになってました。ホントいつの間に・・。
ついでにrustも入れてYJIT体験しよう。https://www.rust-lang.org/ja/tools/install
rustを入れ終わったら
sudo pacman -S rbenv ←なにはともあれ
sudo pacman -S ruby-build   ←ruby をビルドするのに必要
sudo pacman -S ruby      ←rubyをビルドするのにrubyがいるので仮初のruby
rbenv install (入れたいversion)



■cinderについて
cinder 0.9.2を入れようとしたところ変な現象が起きたので書いておく
これを使うためにはgstreamerがいるのだが、これを入れた後実行するとgstreamerでエラーが出る
どうも/usr/local/lib/にあるgstreamer関係のファイルが悪さするらしいので消しておく。
sudo rm /usr/local/lib/libgst*
同じ場所にgstreamerのディレクトリがあるがこっちが正解なので残しておく
参考 https://askubuntu.com/questions/1348145/gnome-control-center-symbol-lookup-error-lib-x86-64-linux-gnu-libgstvideo-1-0




■パズル&モナーク
https://github.com/tek-nishi/PuzzleAndMonarch
どうもaudioのデコードに失敗してるみたいでm4aをoggにして、難読化用のデータが入ってないので難読化ををoffにしたら動いた。cinderは0.9.1だとエラーが出るので0.9.2で








■ps4linuxの動作が重いことについて
  ps4linuxを動かすとなんかもっさりしていて、思ったより遅いと感じるかもしれません。市販のゲームはあんなにサクサク動いているのに。
  今まではほったらかしでしたが、気が向いたので調べてみた。
  htopを起動すると一目瞭然。CPU1番しか使われてなく100%になってる。そりゃ重いわけだ。
  んじゃ誰がそれをやってるかと調べていくと、どうも割込みが怪しいksoftir+は割り込み関係。
  更に詳しく見ていくと[irq/0-AMD-Vi] [irq/28-mmc0]の文字が・・。この2つだけでcpuの2/3以上も使ってる。
  最初のはIOMMU AIによると仮想化メモリを使うところらしい。スワップファイルとか? 
  ps4linuxは内臓HDDの場合、暗号化してあるHDDの中にlinuxイメージを置いてあるので二重に重いんだろぅなぁ。
  cryptして更にって感じだもんねぇ。本格的に使うならSSD必須。SSDに乗せ換えたい。
  2つ目はメモリーカード関係。ん、でもUSBメモリは外してるけどという事で最初のでぐぐると
  https://github.com/Ps3itaTeam/ps4-linux/blob/ps4-4.14.93/.config
  にたどり着いた。匂う、匂うぜこれは。
CONFIG_GART_IOMMU=y
# CONFIG_CALGARY_IOMMU is not set
CONFIG_SWIOTLB=y
CONFIG_IOMMU_HELPER=y
 この辺をいじって確かめたいところ。カーネルをコンパイルしないといけないとので今回はここまで。
    
で現状やれること。其の一、CPUスケジューラが入ってなかったのでインスコしてタスクを振り分ける。 sudo pacman -S irqbalance sudo systemctl enable irqbalance ←有効にするよ sudo systemctl start irqbalance  ←開始するよ sudo systemctl status irqbalance  ←動いているかチェック 赤くなってたらなんかおかしい 其の二。通信の受信割り込みも来ているようなのでこいつの許容量も上げとく。 sudo sysctl -w net.core.netdev_budget=600 1000でもいいくらい。ぐぐると4096の人もいた sudo sysctl -a でちゃんと変更されているか確認  これで結構変わった気がする ※追記 さらに調べると ip_tables カーネルモジュールが無いと出た。どうやらこれが根本の原因ポイ。 結局カーネルなのか。自分でビルドするのはめんどいので、これはupdateを待つしかないなぁ ※参考文献 https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/8/html/monitoring_and_managing_system_status_and_performance/tuning-irq-balancing_tuning-the-network-performance#increasing-the-time-softirqs-can-run-on-the-cpu_tuning-irq-balancing https://ac-as.net/kernel-parameter-performance-tuning/ https://wiki.archlinux.jp/index.php/%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E3%81%AE%E5%90%91%E4%B8%8A#CPU_.E3.82.B9.E3.82.B1.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.A9 https://archlinux.org/packages/extra/x86_64/irqbalance/ https://wiki.archlinux.jp/index.php/Iptables https://qiita.com/yoshuuua/items/daa9d04089d416afbf94




■SDL2のバージョンを元に戻したい
  今はSDL3だけど、SDL2を使いたい、だけど最近のSDL2はSDL2-compatとかいうのが出てて実質SDL3。
  SDL3はまだまだおかしい所があるので古いSDL2を使いたい、という事で最初のv3のイメージから持ってきて作りました
  https://mega.nz/file/RzoCDLja#wvEWScQ0BFtJRxdOtPn-6Zd_TatVlT-PMFCeu2fxOwI
  シンボリックリンクがハードリンクになっていたので修正、
  https://mega.nz/file/wvp0QZbB#oHkkMe-uiL1pkNnu16BatylIF-O4J9uJ7n5mpoftKeA
  
但しこれを使うときは必ずSDL3とSDL2とSDL2-compatiの痕跡を綺麗に消しておくこと!! でないと依存関係が壊れます
  versionは2.26です。これ以上だと内部的にSDL3を使います
  対応するSDL2_image SDL2_mixer SDL2_ttf も入れておきました
  



■CrystalMarkRetro






■systemctl statusすると反応が遅い
  ジャーナルが増えてくると遅くなるらしい、というかなった。
  sudo nano /etc/systemd/journald.conf で編集
  
  Storage=volatile    ←ジャーナルをディスクではなくメモリーに保管。なので再起動で消える
  SystemMaxUse=256M
 SystemKeepFree=512M
 MaxRetentionSec=1month
  にしてみた
  journalctl --disk-usage                   (任意)ジャーナルの使用量を確認
  sudo journalctl --vacuum-size=0           (任意)ジャーナルの削除
  sudo systemctl restart systemd-journald  でジャーナルの再起動
  sudo systemctl status sshd  で何か適当なジャーナルを見てみる。すぐ反応したら直ってる
  
  ※参考
  https://x.com/puhitaku/status/1913618097875165660
  https://wiki.archlinux.jp/index.php/Systemd/%E3%82%B8%E3%83%A3%E3%83%BC%E3%83%8A%E3%83%AB
  



■Subversion
ここがわかりやすかった
  http://svn.linux-dvr.biz/
  設定が終わったらいつもの
  sudo systemctl enable svnserve 
  sudo systemctl start svnserve 
  sudo systemctl status svnserve 
    

アドレスはフルパスで入れないと駄目なので注意



■AnimeEffects
  本家は開発終了したのか垢無くしたのか、次の人が開発を引き継いでる
  要QT6 と ffmpeg
  
  git clone https://github.com/AnimeEffectsDevs/AnimeEffects
  cd AnimeEffects
  cmake -S . -B build -G "Ninja Multi-Config"
  cmake --build build --config Release
  cd build/src/gui/Release 
  cp AnimeEffects ../../../    で/AnimeEffectsのルートに移動してやれば一応動きました
  
  
  
  ------以下はパッケージの作成だけどうまく動かないみたい--------------------------------------------
  mkdir -p appdir
  cp AnimeEffects appdir
  cp -R ../data appdir/data
  cp -R ../../../../dist appdir/dist
  cp ../../../../dist/AnimeEffects.png appdir
  find appdir/
  export APPIMAGE_EXTRACT_AND_RUN=1
  wget -c -nv "https://github.com/p-yukusai/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage"
  chmod a+x linuxdeployqt-continuous-x86_64.AppImage
    ./linuxdeployqt-continuous-x86_64.AppImage appdir/dist/AnimeEffects.desktop -extra-plugins=imageformats,multimedia,core5compat
  -appimage -verbose=2 -no-strip      
    chmod a+x AnimeEffects-x86_64.AppImage
  
  






■ecere-sdk
  久々に動かそうとしたら、わらわらとエラーが・・
  何ぞと思って調べてみると最近gcc14からgcc15になってそれが悪さしてるポイ
  仕方ないのでgccを戻す。
  
  sudo pacman -S gcc-14
  sudo cp /usr/bin/gcc-14 /usr/bin/gcc
  sudo cp /usr/bin/g++-14 /usr/bin/g++
  めんどいのでハードリンク
  
  んでecere-sdkのディレクトリで
  make CFLAGS="$(pkg-config libffi --cflags)"   DISABLE_SSL=y
  ※ ENABLE_SSL=n ではない。正確にはDISABLE_SSLに何か定義されていればオフ
  
  ecere-sdkはissueがないので報告できない。フォーラムもなくってるし、やれやれだぜ
  
  実行はecere-ide 
  SSHからなら export DISPLAY=:0;ecere-ide
  
  ついでにIgnorePkgにgccをいれとく。sudo nano /etc/pacman.conf
  自分は chromium とwineもIgnorePkgに入れてます。大して変わってないのに毎回更新かかるので
   






■VLCをupdateしたらmp4(h264)が再生されなくなった
どうも今回のupdateからプラグインは別になったポイ。
なのでプラグインセットを入れる必要がある
sudo pacman -S vlc-plugins-all
参考
https://forum.artixlinux.org/index.php/topic,8398.msg50484/topicseen.html






■gemini CLI
  ※この作業は途中でgoogleにログインする為ブラウザを開くのでSSHからはやらない方が良い
  
  最初にnpmを入れておく sudo pacman -S npm
  
  次にこれを入れる
  https://aur.archlinux.org/packages/gemini-cli
  makepkgすると?と出たまま止まるが、しばらく待つ最初は2分くらい、その後少し進んでまた止まるのでしばらく待つ5分くらい
  それで終わる
  
  パッケージが出来たらsudo pacman -U gemini-cli-0.1.12-1-x86_64.pkg.tar.zst でインスコ
  geminiでスタート
  
  始めにスタイルを聞いてくる
  

























次にgoogle垢でログインする