mieki256's diary



2024/06/01() [n年前の日記]

#1 [prog] OpenGLの最大テクスチャサイズを少し調べてみた

手持ちの色々なPC/GPUで、OpenGL の最大テクスチャサイズを ―― GL_MAX_TEXTURE_SIZE の値を調べてみた。GL_MAX_TEXTURE_SIZE の値は、利用できるテクスチャの最大サイズ(横幅と縦幅)を示してる、らしい。

CPU/GPUOSGL_MAX_TEXTURE_SIZE
NVIDIA GeForce GTX 1060 6GBWindows10 x64 22H232768
AMD Athlon 5350 (Radeon R3 (GCN))Windows10 x64 22H216384
Intel i3-6100T (Intel HD Graphics 530)Ubuntu Linux 22.04 LTS16384
AMD A8-3850 (Radeon HD 6550D)Ubuntu Linux 20.04 LTS16384
AMD A6-3500 (Radeon HD 6530D)Linux Mint 21.116384
Intel i5-2500 (Intel HD Graphics 2000)Ubuntu Linux 20.04 LTS8192
Lenovo IdeaPad S10-2 (Intel Atom N270, Mobile Intel 945GSE Express)Debian Linux 11 bullseye i6862048


もっとも、今時こんな古いスペックのPCを使ってる人は少ないのではという気もする…。

調査に使ったソース :

調査に使ったC言語のソースは以下。GLFW3 を使ってる。

_get_max_texsize.c
#include <stdlib.h>
#include <stdio.h>
#include <GL/gl.h>
#include <GLFW/glfw3.h>

#define SCRW 512
#define SCRH 288
#define TITLE "Max texture size"

int main(void)
{
  if (!glfwInit())
  {
    fprintf(stderr, "Failed to initialize GLFW\n");
    exit(EXIT_FAILURE);
  }

  glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 1); // set OpenGL 1.1
  glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1);

  GLFWwindow *window = glfwCreateWindow(SCRW, SCRH, TITLE, NULL, NULL);
  if (!window)
  {
    fprintf(stderr, "Failed to open GLFW window\n");
    glfwTerminate();
    exit(EXIT_FAILURE);
  }

  glfwMakeContextCurrent(window);

  // get max texture size
  GLint maxTextureSize;
  glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize);
  printf("Max Texture Size (width/height): %d\n", maxTextureSize);

  // save max texture size to log.txt
  FILE *fp;
  fp = fopen("log.txt", "w");
  if (fp != NULL)
  {
    fprintf(fp, "Max Texture Size (width/height): %d\n", maxTextureSize);
    fclose(fp);
  }

  // main loop
  while (!glfwWindowShouldClose(window))
  {
    // render
    glClearColor(0.2, 0.4, 0.8, 0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    glfwSwapBuffers(window);
    glfwPollEvents();
  }

  glfwDestroyWindow(window);
  glfwTerminate();
  exit(EXIT_SUCCESS);
}


Makefile は以下。GNU Make + gcc 用。

_Makefile
SRCS = get_max_texsize.c

ifeq ($(OS),Windows_NT)
# Windows
TARGET = get_max_texsize.exe
GCC_VERSION=$(shell gcc -dumpversion)

ifeq ($(GCC_VERSION),6.3.0)
# MinGW gcc 6.3.0
LIBS = -static -lopengl32 -lglu32 -lwinmm -lgdi32 -lglfw3dll -mwindows
else
# MinGW gcc 9.2.0, MSYS2
LIBS = -static -lopengl32 -lglu32 -lwinmm -lgdi32 -lglfw3 -mwindows
endif

else
# Linux (Ubuntu Linux 22.04 LTS, gcc 11.4.0)
TARGET = get_max_texsize
LIBS = -lGL -lGLU -lglfw -lm
endif

all: $(TARGET)

$(TARGET): $(SRCS) Makefile
    gcc $< -o $@ $(LIBS)

.PHONY: clean
clean:
    rm -f $(TARGET) *.o


以下のバージョンでビルドできることを確認した。
  • MinGW gcc 6.3.0 + GNU Make 3.81
  • MSYS2 gcc 14.1.0 + GNU Make 4.4.1
  • Linux gcc 9.4.0 + GNU Make 4.2.1


以下でビルド。get_max_texsize.exe か get_max_texsize が生成される。
make clean
make


以下で実行。
# Windows
get_max_texsize.exe

# Linux
./get_max_texsize

実行するとウインドウが開くので、そのまま閉じる。log.txt というテキストファイルに、以下のような結果が出力される。
Max Texture Size (width/height): 32768

注意点。Linxu機の場合、実機のデスクトップ上で仮想端末を開いて実行しないと正確な値が得られない。当初面倒臭がって、Windows10 x64 22H2 + MobaXterm からLinux機にsshでアクセスして ./get_max_texsize を実行したら、MobaXtermが持ってるXサーバで実行することになってしまったようで、アクセス先のPCスペックとは違う値を返してきてしまった…。実機上で動かさないとダメ。

2024/06/02() [n年前の日記]

#1 [cg_tools] 画像の透明部分の境界の色を調整したくて試行錯誤中

png画像の透明部分と不透明部分の境界の色を調整する方法がないか、GIMP 2.10.34 Portable を使って試行錯誤中。

OpenGLでテクスチャを描画した際、アルファチャンネルの値が255(不透明)のところと、0(完全に透明)のところの境界で、妙な線が入ってしまう。OpenGLのテクスチャのフィルタ設定で、GL_NEAREST を指定した時はそういう状態にならないのだけど、GL_LINEAR を指定した時はそういう状態になる。

おそらくだけど、不透明部分のRGB値と、透明部分のRGB値を持ってきて、補間して描画色を決めてるから、妙な線が入るのだろうと思っているけれど…。おそらく透明部分のRGB値は(0.0, 0.0, 0.0) になっているのではないか…。だからうっすらと黒い線(灰色の線)が描画されてしまうのではないかと…。

だとしたら、テクスチャ画像のアルファチャンネルが0のところにも、何かしらのRGB値を入れてやれば改善しそう。ただ、どんなツールを使って作業すればそんなことができるのかが分からない…。

GIMP とレイヤーマスクを使って色々試していたら、アルファチャンネルが0のところにもRGB値を指定できそう、ということは分かった。ピクセル情報タブを表示しておけば、マウスカーソルの位置のRGBA値を確認することができる。A=0でも、RGBにそれらしい値が入ってることは確認できた。

ただ、これをpngで保存すると、そのRGB値が消えてしまう。別のツールを使うしかないのかな…。それとも自分で画像処理をするスクリプトを書くしかないのだろうか…。

2024/06/03追記 :

GIMPでpng保存すると透明部分のRGB値が消えてしまう件は、png保存時のオプション指定で状態を変えることができると分かった。pngで保存(エクスポート)時、オプションの中に、「透明ピクセルの色の値を保存」と言う項目がある。ここにチェックを入れて保存すれば、透明部分のRGB値も残した状態で保存してくれる。たぶん。

2024/06/03(月) [n年前の日記]

#1 [nitijyou] 自宅サーバ止めてました

雷が鳴ったので、16:30-18:30の間、自宅サーバ止めてました。申し訳ないです。

夕方、かなりの豪雨になって…。滝のような雨で怖かった…。

#2 [cg_tools] GIMPで透明部分のRGB値を残したい

OpenGLでテクスチャを描画すると、透明部分と不透明部分の境界に ―― アルファチャンネル値が0の部分と、255の部分の境界に、変な線が描画されてしまう。テクスチャのフィルタを GL_LINEAR にしているときに、透明部分のRGB値と不透明部分のRGB値で補間して、妙な色が出現してしまうのだろう。たぶん。

その問題を解決するために、透明部分のRGB値に、不透明部分のRGB値も入ってる状態にしたい。GIMP でそういう作業ができそうなのか調べてた。

環境は、Windows10 x64 22H2 + GIMP 2.10.34 Portable。

透明部分に不透明部分の色を引き延ばす :

まずは以下のような画像があるとして。

gimp_alpha_delete_ss01.png


この画像の透明部分に、不透明部分のRGB値を引き延ばし(?)たい。

元レイヤーは後で重ねたりアルファチャンネルを利用したりするので、まずはレイヤーを複製しておく。レイヤーウインドウで、レイヤーの複製ボタンをクリック。処理したいレイヤーは元レイヤーの下に移動しておく。

gimp_alpha_delete_ss02.png


続いて、不透明部分のRGB値を引き延ばす。複製したレイヤーを選択して、フィルタ → ぼかし → ガウスぼかし。

gimp_alpha_delete_ss03.png


オプション値はデフォルト値でもいいかな…。うっすらと周囲に色が伸びてるのが分かるかと。

gimp_alpha_delete_ss04.png


うっすらとした色に見えるのは、その部分のアルファチャンネルに 0 - 255 の間の値が置かれて半透明になっているからなので、アルファチャンネル値を0か255にしてしまう。レイヤー → 透明部分 → アルファチャンネルのしきい値、を選ぶ。

gimp_alpha_delete_ss05.png


しきい値の値をグンと小さくしてしまう。半透明だった部分が不透明になって、元々の不透明部分が引き延ばされてるような見た目になってくれる。

gimp_alpha_delete_ss06.png

アルファチャンネルを削除する方法 :

前述の手順では、「アルファチャンネルのしきい値」を使ってアルファチャンネルの値を変化させたけれど、そもそもアルファチャンネルを削除して対応する方法もある。

ただ、レイヤー名を右クリックしたときに表示される、「アルファチャンネルの削除」を選んでしまうと、透明部分が背景色で塗り潰されてしまって、元々透明部分に置いてあったRGB値が消滅してしまう…。以下の画像を見れば分かるかと。透明部分のRGB値が背景色のグレーで塗り潰されてしまっている。

gimp_alpha_delete_ss20.png

gimp_alpha_delete_ss21.png


そこで、レイヤーマスクを使って、そのあたりの処理をする。

レイヤーを右クリックして、レイヤーマスクの追加、を選ぶ。

gimp_alpha_delete_ss07.png


レイヤーのアルファチャンネルを移転、を選んでから、「追加」。

gimp_alpha_delete_ss08.png


レイヤーマスクが追加される。レイヤーマスクは 0 - 255 の値を取るグレースケールになってる。

gimp_alpha_delete_ss09.png


ここでおもむろに(?)、レイヤーマスクを削除してしまう。レイヤーを右クリックして、レイヤーマスクの削除、を選ぶ。

gimp_alpha_delete_ss10.png


レイヤーマスクが削除されて ―― つまりは元々あったアルファチャンネル"だけ"が削除された状態になって、透明部分に置かれていたRGB値が目視できるようになる。

gimp_alpha_delete_ss11.png


以下、参考ページ。

_透過png画像のアルファ値だけを消す方法を教えてください! - 題名の通り... - Yahoo!知恵袋

元々の透明部分を反映させる :

元画像が持っていた透明部分を反映させる。レイヤーを複製しておいたので、元画像のレイヤーは残ってるはず。右クリックして、不透明部分を選択範囲に、を選ぶ。

gimp_alpha_delete_ss12.png


この選択範囲でアルファチャンネルを作る。もう一枚のレイヤーを右クリックして、レイヤーマスクの追加、を選ぶ。

gimp_alpha_delete_ss13.png


選択範囲、を選んで、「追加」。

gimp_alpha_delete_ss14.png


元々の透明部分を反映した状態の見た目になった。

gimp_alpha_delete_ss15.png


この段階では、透明部分 = アルファチャンネルの値が0ではあっても、そこにRGB値がちゃんと残ってる。ピクセル情報、のタブを表示して、マウスカーソル位置のRGBA値を確認すれば、Aが0だけど、RGB値はちゃんと値が入ってることが分かる。

gimp_alpha_delete_ss16.png

RGB値を残したままpng画像としてエクスポート :

透明部分のRGB値を残したまま、png画像として保存(エクスポート)する。ファイル → 名前を付けてエクスポート、を選ぶ。

gimp_alpha_delete_ss17.png


保存ファイル名の最後に「.png」をつけておく。GIMPはファイル名の拡張子を見て保存する画像フォーマットを選んでくれるので。

gimp_alpha_delete_ss18.png


PNGエクスポート時のオプションで、「背景色を保存」「透明ピクセルの色の値を保存」にチェックを入れておく。特に後者は重要。ここにチェックを入れておかないと、透明部分のRGB値が変更された状態で保存されてしまう。

gimp_alpha_delete_ss19.png

2024/06/04(火) [n年前の日記]

#1 [cg_tools] 画像処理の膨張、収縮、dilate、erodeについて調べてた

_昨日、 画像の透明部分に、不透明部分のRGB値を引き延ばす処理をGIMPでできそうかどうかを調べてたけど、ガウスぼかしを使って処理するのは何か違うのではないかと思えてきて、引き延ばす(?)感じのフィルタ処理は他にないのか、そういった画像処理は何と呼ばれているのか、そのあたりを調べてた。

おそらくだけど、膨張、収縮(または侵食)と呼ばれる処理がソレなのかなと…。

膨張、収縮 :

一般的に画像処理の世界では、背景は黒(=0)、前景は白(=1)として扱う場合が多いらしい。

そして…。
  • 白い部分を大きくする/面積を増やす処理を「膨張」「dilate」「Dilation」と呼ぶ。
  • 白い部分を小さくする/面積を減らす処理を「収縮」「侵食」「erode」「Erosion」と呼ぶ。

処理内容日本語英語
白い部分を大きくする/面積を増やす膨張dilate、Dilation
白い部分を小さくする/面積を減らす収縮、侵食erode、Erosion

_モルフォロジー変換 - OpenCV-Python Tutorials 1 documentation
_【画像処理】膨張・収縮処理の原理・特徴・計算式 | 西住工房
_2値画像の膨張・収縮 1 | 画像認識の技術ブログ | マクセルフロンティア株式会社
_【画像処理ノウハウ】膨張とは - Pixelup
_2値画像処理

GIMPの場合 :

フリーで使える画像編集ソフト GIMP にも、同様の処理を行うフィルタがあると知った。
  • フィルター (Filters) → 汎用 (Generic) → 明るさの最小値 (Dilate)
  • フィルター (Filters) → 汎用 (Generic) → 明るさの最大値 (Erode)

GIMP 2.10.34 Portable Windows版で試してみた。たしかに、白い部分が膨張したり、収縮したりしている。

gimp210_dilateerode_ss01.png

その昔、争いがあった。らしい :

ただ、この Dilate と Erode については、今から20年前、GIMP 2.4 より前のバージョンでは処理が逆だったらしくて…。

_Bug 156545 - dilate/erode mis-named (refer to opposite operations)
_Bug 768741 - Filter -> Generic -> erode / dilate are reversed

「eordeは黒を増やして、dilateは白を増やすのに、GIMPでは逆になってる。これはバグやろ」
「そうかもしれんけど、関数名を変更すると今まで書かれたスクリプトの動作がおかしくなる。修正したくない」
「ErosionとDilationの言葉の定義を考えたら、この動作はやはり逆だ」
「背景を黒、前景を白と捉えるとそう見えるが、背景を白、前景を黒と捉えればこの動作は正しい。お前の捉え方がおかしいんじゃね?」
「あのなあ…。自分は画像処理の博士号を取得してるんだよ。あらゆる画像処理の文献と照らし合わせてもGIMPの動作は逆だ。これはさすがにおかしい」
「俺は後方互換性を重視して変えないほうがいいと思うけど、一応パッチは書いてみたよ」
「GIMP 2.4でそのパッチを取り込んでみようか…」

(この議論をしている間も「dilate/erodeは逆じゃね?」「またソレかよ! 既出なんだよ。このスレ見ろよ」というやり取りが何度も何度も…)
(そしてGIMP 2.4でDilateとErodeの動作が逆になった)
(そこから数年後)

「おい! この Dilate と Erode は動作が逆だろ。これはバグだ!」
「俺もバグだと思うんだけど『これが正しい』と言い張る連中が居るんよ…。この過去スレを眺めてくれ…」

みたいな。

これは想像だけど…。画像処理の世界では、背景=黒=0、前景=白=1が前提条件になっているけれど、一般人の間では Dilate と Erode から連想される処理内容が真逆なのかもしれないなと…。

この混乱は、結構長い間続いていた(続いている?)っぽい。例えば、GIMPのヘルプドキュメントを眺めると…。

_https://docs.gimp.org/2.8/en/plug-in-dilate.html (GIMP 2.8)
_https://docs.gimp.org/2.10/en/gimp-filter-dilate.html (GIMP 2.10)

_https://docs.gimp.org/2.8/en/plug-in-erode.html (GIMP 2.8)
_https://docs.gimp.org/2.10/en/gimp-filter-erode.html (GIMP 2.10)

_https://docs.gimp.org/2.10/ja/gimp-filter-dilate.html (GIMP 2.10 日本語版)
_https://docs.gimp.org/2.10/ja/gimp-filter-erode.html (GIMP 2.10 日本語版)

お分かりいただけるだろうか? GIMP 2.8 と GIMP 2.10 で、Dilate/Erode の動作が真逆になって説明されてる。更に日本語版に至っては、ページの見出しが「明るさの最小値」なのに、ページ内で「明るさの最大値フィルタは〜」と記述されちゃってる。君は一体どっちのフィルタについて説明してるのだ…?

まあ、そのぐらい、この2つのフィルタについては、扱いが混乱してるのだろうなと…。自分もこうしてメモしてまとめてみるまでは、どっちがどっちなのかちょっと分からなくなってたし…。

「明るさの最小値」「明るさの最大値」ってなんやねん :

それはともかく、GIMPのフィルタ名の「明るさの最小値」「明るさの最大値」って意味不明だよなと…。どんな処理をしてくれそうなのか全く分からない。どうして、画像処理の世界で普及しているワードに ―― 「膨張」「収縮」、あるいは「膨張」「侵食」にしなかったのだろう。何か理由があるんだろうか。

そのあたりググってみているうちに、なんとなく理由が分かってきた。そもそも、Photoshopが「明るさの最小値」「明るさの最大値」という訳をしていたのだな…。おそらくGIMPは、Photoshopのソレに倣って、そういうフィルタ名を選んだのではなかろうか。たぶん。

しかし、この珍妙(?)な訳のおかげで、功を奏した面もありそうだなと…。「一体なんだろう、このフィルタ…。何ができるフィルタなのか名前から想像できないから、とりあえず触らないでおこう…」という状態になって、結果的には、「このフィルタは動作が逆だろ?」「いや、これで正しいんだ」「いやいや、やっぱりおかしいって。逆だって。バグだよコレ」というバトル(?)が日本国内では起きずに、我々は平穏な日々を過ごせてこれたのかもしれない…。なんちてぽっくん。

余談。不透明部分のRGB値を引き延ばせるかどうか :

さておき。GIMPの「明るさの最小値」を使って、「膨張」「Dilate」を ―― 透明部分に、不透明部分のRGB値を引き延ばせるかどうか試してみたけれど…。

元々のRGB値をそっくりそのまま膨張してくれる点はいいけれど、数回実行してみると、妙なところまで色が回り込んだ見た目になってしまう時があるなと…。例えば以下の事例では、右下のあたりに不自然な緑色が回り込んでしまっている。

gimp_dilate_ss01.gif

まだ、ガウスぼかしを使って引き延ばしたほうが、自然な見た目になりそうな気もしてきた…。

2024/06/05(水) [n年前の日記]

#1 [prog] 自作スクリーンセーバを修正した

以前作ったOpenGLを使うスクリーンセーバと同様の描画処理をするデモプログラムを、Lenovo IdePad S10-2上でも動くように修正した。

_mieki256/ssp3droadgl

元のプログラムは、4096x4096のテクスチャ画像を使っていたけれど、IdeaPad S10-2 (Intel Atom N270, Mobile Intel 945GSE Express)の最大テクスチャサイズは2048x2048だったので、テクスチャが読み込めなくて正常な描画にならなかった。今回、1024x1024のテクスチャ画像も用意して、GL_MAX_TEXTURE_SIZE が 4096 より小さい場合はそちらのテクスチャ画像を読み込むように修正してみた。

動作確認したところ、小さいテクスチャを拡大しながら描画してるせいか、カメラに近いビルボードや路面はボケボケになってしまった。でもまあ、描画されないよりはマシかなと…。

ちなみに、30 - 50FPSぐらいで動いてくれた。結構善戦している。20FPS に固定すれば処理落ちせずに済む感じ。

1024x1024以下しか使えないGPUはあるのだろうか :

GL_MAX_TEXTURE_SIZE が 2048 どころか 1024 を返してくるハードウェアはあるのだろうか。以下のページを眺めてみたけれど…。

_OpenGL capabilities report: GL_MAX_TEXTURE_SIZE

大半のGPUは最低でも2048を返してくるように見える。1024を返してくるGPUは数えるほどしかない。

ただ、VIA/S3G UniChrome Pro が1024を返すようではある。ググったところ、VIA K8M800チップセットに統合されていたGPUらしい。

_S3 Chrome - Wikipedia

一応、MSI K8MM-V という、VIA K8M800 + VT8237R が載ってるM/Bを持ってるから、テストしてみようか…。

でも、あのM/Bは Linuxのデスクトップ環境すら真っ当に表示できないほどに動作が遅かったはず。ウインドウを移動するだけでも、ベロンベロンと書き換えてる様子が分かるぐらいに遅かった。あのハードウェアでOpenGLを動かそうと思う人はもう居ないんじゃないか…? そもそも今の時代に使ってる人はどれほど居るのか…。いや、それを言ったら、今の御時勢、スクリーンセーバ自体を動かす人が一体どれだけ居るのかと言う話にもなりそうだけど。

#2 [nitijyou] ヤマダ電機に行ってきた

夕食を食べ終えてから、ヤマダ電機まで電動自転車で行ってきた。一番近いルートを選んで走ったので片道20分ぐらいで到着。

ここ最近、親父さんがホイールの壊れたマウスをずっと使っている点が近気になっていて…。PC操作を教えるときに自分もちょっと触ったりするのだけど、ホイールを回したらスクロールがめちゃくちゃになって、コレを使い続けるのはもう無理だろうと。代替品を購入したいけど、親父さんが使っている BUFFALO BSMBW500LWH (ワイヤレス, Lサイズ, 色は白, 5ボタン)は、もうどこにも売ってない。

_BSMBW500LWH : マウス : Premium Fit | バッファロー

LサイズじゃなくてMサイズでもいいからどこかに売ってないものか、各店舗の店頭で探すしかないかなと…。

幸い、ヤマダ電機の店頭に、同じシリーズの製品が少しだけ残ってた。BUFFALO BSMBW300MBK。ワイヤレス。Mサイズ。色は黒。3ボタン。

_BSMBW300MBK : マウス | バッファロー

LサイズとMサイズの違いがあるので若干小さくなるけれど、形状はほぼ同じだから、そこまで違和感は無いだろう…。色は白から黒になってしまうけど、親父さんは色にこだわりがあるわけでもなさそうだし…。親父さんは4-5ボタンを全く利用していないので3ボタンのほうがありがたいはず。そんなわけで、購入。税込2,164円。

帰宅後調べてみたところ、ヨドバシなら 1,290円だった…。失敗したかな…。というかヤマダウェブコムですら1,278円だし。いやまあ、後者は送料がかかるけど…。

2024/06/06(木) [n年前の日記]

#1 [perl][prog] Perlを再勉強中

ふと思い立って、Perlスクリプトを書こうとしてるところ。言語仕様をすっかり忘れているのでググりながら再勉強中。

この日記ページの各記事にはカテゴリ名を付けられるけれど、cat.txt というファイルにカテゴリ名を書いておかないとページ左下のカテゴリ一覧に出てこない。cat.txt に手作業でカテゴリ名を追加してアップロードするのが面倒なので、この日記ページの元ファイル、*.hnf 群をスキャンして cat.txt を作るスクリプトを書けないものかなと…。

何の言語で作ろうか悩んだけれど、この日記ページを見せているWeb日記システム hns が Perl で動いてるので、Perlで書いておけば、ひとまず動くことは動くだろう、と。まあ、処理が遅いかもしれないけれど。

Perl Navigatorをインストール :


2024/06/07(金) [n年前の日記]

#1 [hns][perl] hnsのカテゴリ一覧を作成するスクリプトを書いた

この日記ページを表示してるWeb日記システム hns のカテゴリ一覧ファイル(cat.txt)を作成するPerlスクリプトを書いた。

ソースと使い方 :

スクリプトソースは以下。

_update_hnf_cat_pl.txt (update_hnf_cat.pl)

※ 2024/06/08追記。少しだけソースをリファクタリング(?)してアップロードし直した。追記終わり。

利用する前に、スクリプト内の一部を環境に合わせて修正する必要がある。
  • $hnfdir に、hnfファイルが入ってるディレクトリを指定。(例: ~/diary/)
  • $cattxtdpath に、cat.txt が入ってるディレクトリを指定。(例: ~/.public_html/diary/cat/)
  • $lock_dir に、処理中のロックディレクトリのパスを指定。(例: ~/diary/log/update_hnf_cat_lock)

以下を打てば、hnfファイル群をスキャンして、「CAT hoge fuga piyo」と書かれた部分を読み取り、cat.txt を更新する。
perl update_hnf_cat.pl
or
./update_hnf_cat.pl

デフォルトでは、既に存在していた cat.txt の内容に、新規カテゴリ名を追加するように処理をしていくけれど、全部作り直したい時は以下のオプションをつけて実行すれば、既にある cat.txt の内容を無視して処理をする。
perl update_hnf_cat.pl --clean
or
./update_hnf_cat.pl --clean

日本語のカテゴリ名には対応してない。英数字のカテゴリ名にのみ対応。

動作確認環境は以下。
  • Windows10 x64 22H2 + Strawberry Perl 5.32.1.1-x64
  • Debian Linux 10 buster + Perl 5.28.1 i686

Perlで書いたから処理が遅いだろうかと不安だったけど、Intel Atom N270 + HDD + RAM 2GB + Debian Linux 10 buster の環境でも数分で処理を終えるので、これでもまあいいかなと…。

タイプミスがやたらと多かった :

このスクリプトを使って、カテゴリ名を自動で抽出してみたら、今までカテゴリ名をかなりタイプミスしていたことに気づいた。例えば、「windows」を、「windos」「wndows」「window」「windwos」と打ち込んでいたり、等々…。

この際だから、過去に書いた日記ページ内で打ち間違えていたところを修正しておいた。

#2 [perl] Perlのアレコレについてメモ

今回 Perl のスクリプトを書いた際にググって調べた点についてメモ。

OS判別 :

「$^O」という特殊変数を見れば、何のOS上でPerlが動いているかが分かるらしい。

_OS名を取得する $^O - Perlゼミ|Perlの基礎をインストールからサンプルで丁寧に解説
_[perlメモ]OSの判別方法 ≫ KUMA TYPE

テキストファイルに出力する時に改行コードをLFにしたい :

Windowsの改行コードはCRLFだけど、UNIX/Linuxの改行コードはLFなので、Windows上でPerlスクリプトを動かしてテキストファイルに出力する時に、改行コードをLinuxのLFにしておきたい。

open() でファイルを開いた直後に、binmode でバイナリモードにすればいいらしい。テキストモードでは "\n" を各OSに合わせて自動変換するので、Windows上では "\n" が CRLF になってしまうけれど、バイナリモードなら自動変換が働かなくなるので、"\n" はLFのみになる。

_Windows上のPerlで改行コードをLF(0x0a)にするには - 小池啓仁 ヒロヒト応援ブログ By はてな
_Perlを使い、思い通りの文字コードと改行コードでファイルを作成する方法 - pikio公式ブログ

エポック秒を日付と時刻にしたい :

エポック秒、UNIX秒と言う時間の扱い方がある。1970/01/01 00:00:00 から何秒経過したか、という扱いなのだろうか。

このUNIX秒から、日付と時刻の情報に変換したい時は、localtime() が使える。配列を返してきて、それぞれに年月日、曜日、時分秒が入ってる。

_localtime 関数 - UNIX 秒をローカル時間に変換する | Perl 組み込み関数 | futomi's CGI Cafe
_Perlで日付・時刻を扱う - Perlゼミ|Perlの基礎をインストールからサンプルで丁寧に解説

open()の書き方は昔と今では違ってる :

モダンな書き方とやらがあるらしい。

_ファイル入出力関連 - プログラミング雑ネタ集

パスの結合 :


2024/06/08() [n年前の日記]

#1 [pc] HDDの中身をチェック中

メインPCのHDDの中身をチェック中。画像生成AI関係のプログラムやデータをSSDに移動するとして、どのくらいの容量が必要になるのかなと…。

今の段階で400GBぐらい使ってるっぽい。500GBのSSDを入手して、と考えていたけど、データ置き場用の250GBのSSDの中身も移動したいと思っているので、500GBでは足りなくなりそう…。1TBのSSDじゃないと厳しいか…。

#2 [windows][pc] SSDの内容をHDDにバックアップしておいた

以前使っていた 500GB のSSD、Crucial MX500 CT500MX500SSD1JP (500GB, SATA, 2.5インチSSD) の中身を、外付けHDD、CENTURY CLS35EU3BF (USB3.0/eSATA) + HGST 0S03361 (4TB) に、イメージファイルとしてバックアップしておいた。とメモ。

バックアップには、EaseUS Todo Backup Free 2024 を使ってみた。

_EaseUS Todo Backup Free - 無料のバックアップソフト - Windows向け

TB_Free_Installer_20240607.6550.exe を入手して実行すると、セットアップファイルがダウンロードされて、インストールが先に進む。

ただ、インストール後に起動してみたら、Dドライブの空き容量が0バイトと表示されてしまって…。Windows10 x64 22H2を再起動したらDドライブの空き容量も正常に表示されるようになったけれど、どうやらこのツールをインストールしたら、Windows を再起動しないといけないようだなと…。

SSD内のシステムドライブをイメージファイルとしてバックアップしてみたけれど、1時間ぐらいで処理は終わってくれた。

2024/06/09() [n年前の日記]

#1 [hns][perl] Ore Power Goldの不具合を修正中

この日記ページは、HNS(Hyper Nikki System)というWeb日記システムで表示しているけれど。この HNS の日記ファイル *.hnf を読み込んで、文章量をグラフで表示してくれる、Ore Power Gold というCGIがある。

昔は動作していた気がするのだけど、ふと確認してみたら、正常に表示されない状態になっていた。ページは出るのだけど、集計が全く行われない。

Perlのバージョンが上がったことで、動作がおかしくなったのだろうか…? 何が原因なのか調べ始めているところ。

後方互換性はあったほうがいいのかそうでもないのか :

余談。HNSが入ってるディレクトリの中にweight.cgi というCGIも入っていたけれど、これも動作してくれない。関連情報を検索したものの、これが全く出てこない。HNSは2003年頃が開発のピークだったらしいので、さすがに当時の関連ページはほとんど残ってない、ということなのだろうな…。

ふと気になって、当時 HNS と似た感じのWeb日記システムとして扱われていた tDiary についてググってみたら、2024/02/29 に最新版が公開されていた。HNSがこんな状態になってることを考えると、tDiary、スゴイな…。

もっとも、tDiary はRubyで書かれていたから、Rubyがバージョンアップすると tDiary も動かなくなって、アップデートを強要されてきた面もあるのかなと気づいた。Rubyは後方互換性を無視してガンガン仕様を変えちゃう言語と聞いているので、そういった言語を使って開発すると対応し続けるのが大変だろうなと…。でも、結果的には、今でも生き残ってる。後方互換性を大事にする言語と、大事にしない言語、どっちがいいのかよく分からなくなってきた…。

#2 [digital] 新しい無線LANルータが届いた

親父さんがヨドバシカメラに注文していた、新しい無線LANルータが届いた。NEC Aterm WG1200HS4。

_Aterm WG1200HS4 | 製品一覧 | AtermStation

NEC製の無線LANルータは軒並み脆弱性が見つかったのだけど、古いルータはもうファームウェアを更新しない、対策したければ新しいルータを買え、と宣言されてしまったので…。

_NECのWi-FiルーターAtermに脆弱性。サポート終了品は買い替えを - PC Watch
_Aterm製品におけるLAN側からの不正アクセスの脆弱性への対処方法について[2024年4月16日更新]|サポート技術情報|目的別で探す|Aterm(エーターム),A サポートデスク
_Atermのサポート期間について|Aterm(エーターム),A サポートデスク

現行製品はえてして Wi-Fi 6 対応を謳っているものだけど、この製品は Wi-Fi 5 (11ac) までの対応なので、お値段は4,000円台だった。Wi-Fi 6 対応の WX1500HP にするかどうかで悩んだけれど、今まで使ってたルータと比べたら 5GHz帯が使えるだけでもスペックアップだろうから、と…。

さて、今まで使ってた、Aterm WR8300N の設定をメモしておかないと…。DHCP固定割り当てとか、ポートマッピング設定とか、やり直しになるし…。

2024/06/10(月) [n年前の日記]

#1 [digital] 無線LANルータの設定を確認中

今まで使ってた無線LANルータ NEC Aterm WR8300N の設定項目を把握しようとしているところ。

そもそもプロバイダと接続するための情報が把握できてない…。手元のメモを眺めても古いアカウント情報ばかり。どれが最新の情報なんだか…。

2024/06/11(火) [n年前の日記]

#1 [digital] 無線LANルータを交換した

今まで使っていた無線LANルータ、NEC Aterm WR8300N (PA-WR8300N) を、NEC Aterm WG1200HS4 (PA-WG1200HS4) と交換した。

プロバイダとの接続は以下を設定。
自動判別をONにしておいたら、transixモードとやらになったけれど、これはどういうモードなんだろう…。不安になったので、今までと同様、PPPoEルータを選んでおいた。

設定を変更した機器 :

以下の機器について、無線LAN(Wi-Fi)の設定を変更した。

  • 自分のスマホ HUAWEI P9 lite
  • 自分のスマホ iPhone 5
  • 親父さんPCの無線LAN子機 IO-DATA WN-G300UA
  • 親父さんのスマホ
  • 親父さんPC用のプリンタ Canon MG3630
  • お袋さんのスマホ
  • お袋さんのノートPC DELL Vostro 15.3558 の無線LAN設定
  • 茶の間のREGZAに繋いでるAterm WR9500N(コンバータモード)の設定
  • 自分のサブPC Intel Core i5-2500機の無線LAN子機 ELECOM WDC-150SU2MBK
  • 自分のサブPC AMD A8-3850機の無線LAN子機 ELECOM WDC-300SU2SWH
  • 自分のサブPC AMD A6-3500機の無線LAN子機 BUFFALO WLI-UC-GNM
  • 自分のサブPC AMD Athlon 5350機の無線LAN子機 ELECOM WDC-150SU2MBK
  • 自分のノートPC Lenovo IdeaPad S10-2 + BUFFALO BUFFALO WLI-UC-GNM2
  • 家族用ノートPC Gateway M-2408j
  • Raspberry Pi Zero W

妹が所有してる機器は妹自身が設定作業をするからここにはメモしてないけれど、それでも多い…。まだ、Raspberry Pi 3 と Lenovo製Androidタブレットが残ってる…。

今頃になって気づいたけれど、もしかして、新無線LANルータ側の設定を変更して、旧無線LANルータのSSIDとKeyをコピペしてやれば、各機器の設定を弄らなくても良かったのだろうか…?

※ 2024/06/12追記。Lenovo IdeaPad Tablet A1 も一応再設定しておいた。

WR9500Nの設定 :

WR9500N(コンバータモード)の設定は、WR9500N と Core i5-2500機 だけをLANケーブルで接続して作業した。
  • PC側で、IPv4 を 192.168.0.51 に固定。ゲートウェイを 192.168.0.1 に設定。
  • その後、http://192.168.0.245/ にアクセスして、SSIDを選択して設定。

複合機のWi-Fi再設定 :

プリンタ(複合機) Canon MG3630 の、Wi-Fi接続の再設定で少しハマった。PCからプリンタに対して、無線LANルータのSSID等を再設定する方法が見つからなくて…。

仕方ないので、プリンタ本体のボタン操作+無線LANルータのボタン操作で接続設定をした。NEC Atermシリーズには「らくらく無線スタートボタン」なるものがついているので、ソレを利用した。

_【インクジェットプリンター】プリンターと無線LANルーターをらくらく無線スタート設定で接続する (PIXUS MG3630)

  1. プリンタの電源を入れる。
  2. もし、Wi-Fiランプ(LED。青色)が点滅しているときはストップボタンを押す。
  3. 電源LED(緑色)が点滅するまでWi-Fiボタンを長押し。
  4. モノクロボタン → Wi-Fiボタンの順で押す。ここは長押ししなくていい。カチッ、カチッと押していく。
  5. 電源LED(緑)は点灯(点きっぱなし)、Wi-Fi LED(青)は点滅の状態になる。
  6. ここからは時間との勝負(?)なので作業を急ぐ。1分とか30秒以内に作業を終えないといけない。
  7. Aterm WG1200HS4 の「らくらく無線スタート」ボタンを6秒長押し。一度ボタンから指を離す。
  8. Aterm WG1200HS4 の電源LED(緑色)が点滅を始める。
  9. プリンタの電源LED(緑)とWi-Fi LED(青)の両方が、点滅を始める。
  10. Aterm WG1200HS4 の「らくらく無線スタート」ボタンを再度長押し。
  11. Aterm WG1200HS4 の電源LEDが橙色に変わる。
  12. プリンタ側の電源LEDとWi-Fi LEDが点灯状態になる。
  13. Aterm WG1200HS4 の電源LEDが緑色の点灯状態になる。

一応これで再設定ができた。PC側からプリンタのプロパティを確認できたし、スキャナ部分を利用してみたところ動いてくれたので、まあ、大丈夫だろう…。たぶん。

DHCP固定割当機能が怪しい :

設定作業中、 DHCP固定割当機能が働いてくれなくて悩んでしまったけれど、マニュアルを眺めてみたら原因が分かった。

DHCPで割り当てるIPアドレスの範囲の中に、固定割当のIPアドレスも入ってないと、DHCP固定割当機能は、動作してくれないらしい。デフォルトでは、192.168.10.101 - 192.168.10.200 になっているけれど、今回固定割当したかったIPアドレスは 192.168.1.20 - 192.168.1.32 のどれかだったので、設定が無視されてしまったらしい。

「IPv4LAN側設定」で、DHCP割当アドレスを、192.168.1.2 - 192.168.1.100 にしてみたところ、2台ほどは指定したIPアドレスがたしかに割り当てられた。ただ、1台はIPアドレスが割り当てられない。MACアドレスの入力を間違えてるのだろうか…。

不安なのは、通常のDHCP割り当てIPアドレス範囲から、固定割当に使うIPアドレスを本当に除外・特別扱いしてくれるのかどうか…。同じIPアドレスが二重に割り当てられたりはしないのだろうか…? まあ、そのあたりが不安なら、DHCPで使わない範囲のIPアドレスを各PC側で固定IPとして設定しまうのが確実なのかも…。

2024/06/12(水) [n年前の日記]

#1 [digital] 無線LAN関係を再設定中

_昨日、 無線LANルータを交換したので、各機器の無線LANを再設定中。

Lenovo IdeaPad Tablet A1 はバッテリーが切れていたので充電してみたのだけど、100%になるまで半日近くかかった。でもまあ、一応充電できたし、無線LANの設定もできた。ただ、Android 2.3機なので、色々なアプリが動かず…。Googleカレンダーとの同期ができない、と必ずエラーが表示されるし…。使い道も思いつかない…。

Raspbery Pi3 も発掘して再設定。これはメンテナンス作業が大変だったので別記事でメモしておく。

#2 [raspberrypi] Raspberry Pi3のメンテナンス作業をした

無線LANルータが、Aterm WR8300N から Aterm WG1200HS4 に置き換わったので、Raspberry Pi3 の無線LAN設定も変更しないといけない。久々に電源を入れて、メンテナンス作業をした。

sudo apt update が通らない :

sudo apt update が通らない。エラーが出る。Raspberry Pi3 には raspbian stretch をインストールしてあったけれど、古いバージョンのOSだから、パッケージ更新サイトのURLが既に消滅していた。

_Raspbian Stretch apt server gone? - Raspberry Pi Forums
_legacy materials moving from archive.raspbian.org to legacy.raspbian.org - Raspberry Pi Forums

URL を書き換える。/etc/apt/sources.list に以下を追加。
deb http://legacy.raspbian.org/raspbian/ stretch main contrib non-free rpi

nano というテキストエディタが入っているだろうから、sudo nano /etc/apt/sources.list を実行すれば編集できる。

以下のような内容になった。
#deb http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi
#deb http://ftp.jaist.ac.jp/raspbian/ stretch main contrib non-free rpi
#deb http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian/ stretch main contrib non-free rpi
deb http://legacy.raspbian.org/raspbian/ stretch main contrib non-free rpi

DHCPが自動取得になってなかった :

Raspberry Pi3側で、Aterm WG1200HS4 のSSIDを選んで、キーを入力して、無線LAN接続できるようにはなったけれど、割り当てられたIPアドレスが、昔のIPアドレスになっている。

どうやら、昔の自分は、固定IPアドレスになるようにわざわざ設定してたらしい。

DHCP については、/etc/dhcpcd.conf で設定変更できる。

今までの内容は以下。
...

# Example static IP configuration:
#interface eth0
interface wlan0
static ip_address=192.168.1.27/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8

# It is possible to fall back to a static IP if DHCP fails:
# define static profile
#profile static_eth0
#static ip_address=192.168.1.23/24
#static routers=192.168.1.1
#static domain_name_servers=192.168.1.1

# fallback to static profile on eth0
#interface eth0
#fallback static_eth0

noipv6rs
noipv6

以下のように書き換え。

...

# Example static IP configuration:
#interface eth0
#interface wlan0
#static ip_address=192.168.1.27/24
#static routers=192.168.1.1
#static domain_name_servers=192.168.1.1 8.8.8.8

# It is possible to fall back to a static IP if DHCP fails:
# define static profile
#profile static_eth0
#static ip_address=192.168.1.23/24
#static routers=192.168.1.1
#static domain_name_servers=192.168.1.1

# fallback to static profile on eth0
#interface eth0
#fallback static_eth0

#noipv6rs
#noipv6

自動起動スクリプトを無効化しておいた :

これはウチの環境固有の話。モータ関係を制御するためプログラムをOS起動時に呼び出していたけれど、もうその手の実験はしばらくやらないだろうから、無効化しておいた。

/etc/rc.local を編集。
$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

# RTC
/sbin/hwclock --hctosys

# python /home/mieki256/prg/gpio/digicame_daemon.py &

#sleep 10
#/usr/sbin/ntpdate -b ntp.nict.jp && /sbin/hwclock --systohc

exit 0

以下の行をコメントアウトしておいた。
python /home/mieki256/prg/gpio/digicame_daemon.py &

stretchからbusterにアップグレード :

raspbian stretch (Debian 9ベース)から、raspbian buster (Debian 10ベース)にアップグレードしようと試みた。Debian stretch は、既にサポート期間が終了しているので。

まあ、Debian 10 buster も 2024/06 でサポート期間が切れるらしいのだけど…。現行バージョンは Debian 12 bookworm らしい…。

以下のページに従って作業。

_いるかのボックス: Raspberry Pi OSをStretchからBusterにアップグレードする

/etc/apt/sources.list と /etc/apt/sources.list.d/raspi.list の中の、stretch を buster に変更。
$ cat /etc/apt/sources.list
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
#deb http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi
#deb http://ftp.jaist.ac.jp/raspbian/ stretch main contrib non-free rpi
#deb http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian/ stretch main contrib non-free rpi
#deb http://legacy.raspbian.org/raspbian/ stretch main contrib non-free rpi
$ cat /etc/apt/sources.list.d/raspi.list
deb http://archive.raspberrypi.org/debian/ buster main ui
#deb http://archive.raspberrypi.org/debian/ stretch main ui
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspberrypi.org/debian/ stretch main ui

aptで更新。
sudo apt autoremove -y
sudo apt autoclean
sudo apt update
sudo apt dist-upgrade -y -d
sudo apt dist-upgrade -y

最初は容量が足りないと言われたけれど、sudo apt autoclean でキャッシュを消去してから試してみたら容量不足と言われなくなった。

1400ファイル以上を更新すると言ってきた。明日までかかりそうな気配。空き容量、大丈夫かな…。

※ 2024/06/13追記。途中で問題発生。アップグレードに失敗した。Raspberry Pi OS Desktop bookworm (Debian 12ベース)をクリーンインストールすることにした。

2024/06/13(木) [n年前の日記]

#1 [raspberrypi] Raspbian stretchからbusterにアップグレード失敗

Raspberry Pi3 にインストールしていた Raspbian stretch (Debian 9ベース) を buster (Debian 10ベース) にアップグレードしようとしたのだけど失敗した。

デスクトップ画面上で LXTerminal を開いて、その上で作業してたのだけど、アップグレード中にデスクトップ画面が消えて真っ黒になって、処理がどの程度進んだのか見えなくなってしまった…。Ctrl + Alt + F1 や Ctrl + Alt + F2 でコンソール画面を開いて、そちらで作業すべきだったかもしれない…。

コンソール画面から ps aux | grep apt と打ったら、アップグレード処理はまだ進んでいたっぽいのだけど、df -h と打ったら /dev/root が0%になっていた。アップグレード失敗かな…。16GB の microSDHC を使っていたけれど、これでは足りないらしい…?

HDMI接続してると妙な症状が出るという話も見かけたのでメモ。クリーンインストールなら出ないらしい…。

_Raspbian Stretch 9からBuster 10へのアップグレード webzoit.net

Raspberry Pi OS with desktop bookwormをクリーンインストール :

面倒臭くなってきたので、Raspberry Pi OS with desktop 64bit bookworm をクリーンインストールしてしまうことにした。ちなみに、Raspberry Pi 用のOSを昔は Raspbian と呼んでいたけれど、今は Raspberry Pi OS という名前に変わったらしい。

Windows10 x64 22H2上で Raspberry Pi Imager を入手。

_Raspberry Pi OS - Raspberry Pi

コレを使うと Windows10上からmicroSDに Raspberry Pi OS をインストールできる。imager_1.8.5.exe をダウンロード。

実行すると、C:\Program Files (x86)\Raspberry Pi Imager\ にインストールされる。rpi-imager.exe を実行すれば起動する。

今回は 16GB の microSDHCにインストール。

microSDHC に書き込む前に、設定をカスタマイズできる。ユーザ名、パスワード、無線LANのSSID、Key、等を入力してカスタマイズ。

こうして用意した microSDHC を Raspberry Pi3 に突っ込んで利用したところ、何度か再起動がかかった後、一応起動してくれた。

ただ、設定を弄ってたら無反応になって電源を強制的に切ったり、OS起動途中で何度もカーネルパニックを起こしてフリーズしてしまうトラブルもあったけど…。

RTCを利用しようとしてミスをした :

この Raspberry Pi3 にはRTC(DS3231)をつけているので利用しようとしたのだけど、実にしょーもない作業ミスをしてしまった。

RTC を使うためには、sudo raspi-config を実行して、I2Cを有効にして、I2C 関係の設定をする1行を、/boot/firmware/config.txt に書き込まないといけないのだけど。自分、何を考えていたのか、 /boot/firmware/cmdline.txt に書き込んでしまって、OSが起動しない状態になった。「(initramfs)」というメッセージしか出てこない…。ここからどうやって復旧させたらいいのか…。

解決方法が分からなかったので、また Windows10 x64 22H2上で microSDHC にOSを書き込みし直し。

その後は以前と同様の作業をして、RTCが利用できる状態になった。

_mieki256's diary - Raspberry Pi3にRTCモジュールを追加してみた
_mieki256's diary - HiLetgoから品が届いた

chkconfig は今回使わなかった。

LEDを点滅させるようにした :

Raspberry Pi は、シャットダウン後、どのタイミングで電源を切っていいのかが分からない。OS起動中はアクセスLEDを点滅させることで、そのあたりを改善したい。以前の日記を眺めながら作業。

_mieki256's diary - Raspberry Pi3本体のLED設定を変更

#2 [digital] Aterm WR8300NをLAN HUB代わりに利用できないか試してみた

先日、無線LANルータを交換したので、今まで使ってた NEC Aterm WR8300N が浮いてしまった。有線LANが1000BASE-Tなあたりがもったいないので LAN HUB代わりに使えないかと少し試してみた。

WR8300N には、RTモード(ルータモード)とAPモード(アクセスポイントモード)がある。前者は無線LANルータとして動作するモードだけど、後者はルータ機能をごっそり無効化して、無線LANのアクセスポイント機能のみを提供するモードらしい。


今回は無線LAN関係は利用しないので、無線LANの「使用」のチェックボックスをオフにしておいた。

サブPC i5-2500機(Ubuntu Linux)を有線LANケーブルで繋いでみたけれど、メインPCからサブPCにフツーにアクセスできた。これなら LAN HUBとして使えそう。

脆弱性云々が気になるけれど、サブPCをメンテナンスする時だけ電源を入れる感じの使い方になるだろうから、これでもいいかなと…。

2024/06/14(金) [n年前の日記]

#1 [obsidian] Obsidianが「\」を消してしまう

ここ最近、手元でメモを取る時は Obsidian という Markdownエディタを使っているのだけど。

ある時期から、「`C:\Prog\`」と記述しても。「C: Prog」と表示される状態になってしまって…。「`」で囲んだ部分はコードとして扱ってくれて、「\」もそのまま表示してくれるはずでは…? 以前はちゃんと「\」を表示していたはずなのだけど。

ググってみたら、バグらしい。

_Backslash not shown in inline code blocks - Bug reports - Obsidian Forum

V1.6.1以降で発生してるとのこと。手元のバージョンは 1.6.3 だった。

v1.7 で修正する予定、と書いてある…。

#2 [nitijyou] USB扇風機を購入

100円ショップ ダイソーで、USB扇風機とUSBスイッチを購入。

USB扇風機について :

外付けHDDや外付けSSDを冷却するために購入。写真を撮ってみた。

daiso_usb_fan_ss01.jpg

daiso_usb_fan_ss02.jpg

daiso_usb_fan_ss03.jpg

結構大きい…。

「動作音がそれほど大きくない」というレビューを目にして、期待して購入したのだけど、やっぱり「フォォーーン」的な音はするなと…。ただ、以前ダイソーで購入した以下のUSB扇風機に比べたら…。

daiso_usb_fan_ss04.jpg

このクリップタイプのUSB扇風機は、比較的小さい割に風量はかなりあるのだけど、動かすと「ギュイーン」「ビビビビ」「ババババ」という音がする。PCの横にミニチュアのチェンソーでも置いてるのですか、ってぐらいの騒音。とてもじゃないけど常用できない。

それと比べると、今回購入したUSB扇風機はまだ静か。ではあるけれど、自作PCで使う8cmFANや12cmFANに比べると、ちょっとうるさい印象。素直に(?)、USBケーブルを加工して、余ってるFANを回すケーブルでも作ってしまったほうが良かったのかもしれない…。

USBスイッチについて :

USBスイッチも店頭で見かけたので購入してみた。

daiso_usb_switch_ss01.jpg

daiso_usb_switch_ss02.jpg

5V/1Aまでは流せると書いてある。「データ通信には使えない」と書いてあるので、おそらく信号線は持ってないのだろう…。+5VとGNDだけを持ってる状態で、USB端子から電源だけを取って動く何かであればコレを使ってもOK、ということかも。

スイッチを入れるとLEDが点くのは分かりやすいけれど、その分ちょっとだけ電流を食ってそうな気も…。もっとも、例えば USB2.0の規格では最大500mAまで流せることを考えると、LEDは最大でも20mAとかそんなもんだから、さほどたいしたことはないかな…。

2024/06/15() [n年前の日記]

#1 [prog][perl] Strawberry Perl 5.8 をインストールした

2003年頃に書かれたPerlスクリプトの動作を確認したくて、Stareberry Perl 5.8.9.5 zip版を、Windows10 x64 22H2上でインストールした。

strawberry-perl-5.8.9.5.zip を入手して解凍。今回は D:\Perls\strawberry\5.8.9.5\ にコピーしてインストール。

当時の Srawberry Perl zip版は、Portable版ではない点に注意。Portable版はどの場所に置いても動くけれど、当時の zip版は C:\strawberry にインストールされている前提で作られてしまっている。例えば Strawberry Perl 5.8 の全ファイルに対して grep で C:\strawberry を検索すると、膨大なファイルがインストール場所を決め打ちしつつ作られていることが感じられる。.exeファイルの中にすら、件の場所が埋め込まれている。

仕方ないので、シンボリックリンクを張った。C:\strawberry に D:\Perls\strawberry\5.8.9.5 があるように見せかけることにする。

バージョン切替 :

Perlのバージョンの切替は、plch.bat というバッチファイルを作って行うようにした。やっていることは、環境変数PATHの最初のほうに、選んだ Perl のインストール場所を追加しているだけ。

_plch.bat
@echo off
@rem Change Perl version
@rem
@rem Required. Environment variables must be set in advance.
@rem
@rem APERL_DIR=Active Perl Directory
@rem BPERL_DIR=Strawberry Perl Directory

set PERLNAME1=ActivePerl 5.28.1
set PERLPATH1=D:\Perls\aperl5.28.1.0000-x64-61d1e9f2
set PERLNUMB1=5281

set PERLNAME2=ActivePerl 5.8.9.827
set PERLPATH2=D:\Perls\aperl5.8.9.827-x86-291969
set PERLNUMB2=589

set PERLNAME3=Strawberry Perl 5.32.1.1
set PERLPATH3=D:\Perls\strawberry\5.32.1.1-x64
set PERLNUMB3=532

set PERLNAME4=Strawberry Perl 5.8.9.5
set PERLPATH4=D:\Perls\strawberry\5.8.9.5
set PERLNUMB4=5895

set PPATH=
if "%1"=="/h" goto USAGE
if "%1"=="-h" goto USAGE
if "%1"=="--help" goto USAGE
if "%1"=="%PERLNUMB4%" set PPATH=%PERLPATH4%
if "%1"=="%PERLNUMB3%" set PPATH=%PERLPATH3%
if "%1"=="%PERLNUMB2%" set PPATH=%PERLPATH2%
if "%1"=="%PERLNUMB1%" set PPATH=%PERLPATH1%
if not "%PPATH%"=="" goto SETPERLDIR

echo Change Perl version.
echo.
echo   1 : %PERLNAME1%
echo   2 : %PERLNAME2%
echo   3 : %PERLNAME3%
echo   4 : %PERLNAME4%
echo.
set SELNUM=
set /P SELNUM="Select number : "
if "%SELNUM%"=="1" set PPATH=%PERLPATH1%
if "%SELNUM%"=="2" set PPATH=%PERLPATH2%
if "%SELNUM%"=="3" set PPATH=%PERLPATH3%
if "%SELNUM%"=="4" set PPATH=%PERLPATH4%
if not "%PPATH%"=="" goto SETPERLDIR

:USAGE
echo.
echo ----------------------------------------
echo Usage:
echo     plch %PERLNUMB1%
echo     plch %PERLNUMB2%
echo     plch %PERLNUMB3%
echo     plch %PERLNUMB4%
echo.
echo  %PERLNUMB1% : %PERLNAME1%
echo  %PERLNUMB2% : %PERLNAME2%
echo  %PERLNUMB3% : %PERLNAME3%
echo  %PERLNUMB4% : %PERLNAME4%
goto END

:SETPERLDIR
if "%PPATH%"=="%PERLPATH3%" goto SETSTRAWBERRY
if "%PPATH%"=="%PERLPATH4%" goto SETSTRAWBERRY

:SETACTIVEPERL
echo Select ActivePerl
set APERL_DIR=%PPATH%
set ADD_PATH=%APERL_DIR%\bin
set PATH=%ADD_PATH%;%PATH%
goto SETEND

:SETSTRAWBERRY
echo Select Strawberry Perl
set BPERL_DIR=%PPATH%
set ADD_PATH=%BPERL_DIR%\c\bin;%BPERL_DIR%\perl\site\bin;%BPERL_DIR%\perl\bin
set PATH=%ADD_PATH%;%PATH%
goto SETEND

:SETEND
echo Change Perl PATH : %PPATH%

:END

#2 [perl][hns] Ore Power Goldが動くように修正

この日記ページを表示しているHNS(Hyper Nikki System)の日記ファイル *.hnf を読み込んで、どの日の文章量が多いのかをテキストでグラフ表示する Ore Power Gold というCGIがある。

_Ore Power Home Page (WebArchive)

しかし、今現在の環境では何故か動かなくなっていたので、原因を調べてた。

一応、動くようになった版を置いておく。以下の環境で動作確認した。
_opg.cgi

せっかくだから、use strict; と use warnings; を書いて、警告が出ないようにあちこち修正しておいた。

動かなかった原因 :

おそらくだけど、sprintf() に指定しているフォーマット文字列(書式文字列)がおかしい気がする。YYYMMDD という文字列を取得するために、オリジナル版では以下のような指定になっていたけれど…。
sprintf("%0.4d%0.2d%02.d", 2024, 6, 8);


以下は動作確認用のスクリプト。

_01_sprintf.pl
use strict;
use warnings;

my ($s);

print sprintf("%0.4d%0.2d%02.d", 2024, 6, 8), "\n";

print sprintf("%04d%02d%02d", 2024, 6, 8), "\n";

Windows10 x64 22H2 + Strawberry Perl 5.32.1.1 64bit で実行すると以下の結果になる。
> perl 01_sprintf.pl
202406 8
20240608

昔は動いていた記憶があるのだけど…。Ore Power Gold (opg.cgi) は2003年頃に書かれたスクリプトらしいので、その頃の Perl のバージョンなら動くのだろうか。ググって確認してみたところ、当時は Perl 5.8 が一般的だったらしい。

Active Perl 5.8.9.827-x86-291969、及び、Strawberry Perl 5.8.9.5 で動作確認してみたけれど、同じ結果になる…。変だなあ…。
> perl 01_sprintf.pl
202406 8
20240608
> perl 01_sprintf.pl
202406 8
20240608

年月日の日が1桁だとおかしくなるけれど、2桁なら動きそうな気もする…。自分、もしかして、以前はそういうタイミングで実行してしまって、動いてると思い込んでしまったのだろうか…。

2024/06/16() [n年前の日記]

#1 [nitijyou] ネズミ対策について検討中

家の床下の空気取り入れ口からネズミが侵入しているような気がする…。なんでも、1.5cm程の穴さえあればネズミは入ってくるらしいので、今現在の床下の空気穴についてる金属の板ではスカスカで出入り自由状態だろうなと。どうにか改善したい。

防鼠金網について :

ググってみたら、防鼠金網(ボウソカナアミ)という商品があるらしい。

_防鼠金網ソフト | イカリ消毒 害虫と商品の情報サイト
_防鼠金網ハード | イカリ消毒 害虫と商品の情報サイト

これを床下の空気穴に貼り付ければ改善されるのではないか…。幸い、ヨドバシカメラでも扱ってるようなので、親父さんと相談しつつ試しに一つ注文してみた。

ちなみに、DCMのサイトで探してみたらそちらでも扱ってるようなので、ひょっとすると近所のホーマック(DCM須賀川店)の店頭にもあるのかもしれない。ただ、ヨドバシと比べるとお値段は2.5倍。

※ 2024/06/17追記。DCMオンラインで店頭在庫を確認してみたら、そもそも近所のホーマックどころかケイヨーデーツー安積店ですら取扱無しと表示された。DCMオンラインだけで扱ってる商品なのか…。

固定方法で悩む :

しかし、この金網をどうやって固定するか…。ググっていたら、シリコンシーラント+コーキングガンとやらで貼り付けてしまう方法もあると知った。シリコン製のボンドのようなものらしい。

YouTubeで、シリコンシーラント+コーキングガンの使い方について説明している動画を眺めてみたけれど、綺麗に仕上げられそうな予感がしない…。お袋さんから見た目について苦情が出てきそう…。

枠の材料で悩む :

空気穴に何かをハメ込むような形でどうにかできないか。そういう仕組みなら見た目も多少綺麗になりそうだし、問題や苦情があった時は外してしまえば元通りになる。

しかしそのためには、空気穴にスポンとハマる枠のようなものを作らないといけない。その枠を一体何で作ればいいのか…。
  • 段ボールなら工作しやすいだろうけど、屋外に段ボールを置いたら雨ですぐにフニャフニャになるだろう…。
  • 木で作るのはどうか。ネズミに齧られてしまうか…。
やはり金属系で作ったほうがいいだろうけど、切断や結合の加工が大変そう。材料の値段も高いし。

アルミ工作の紹介動画を眺めてみたけれど、やはり大変そう。ノコギリで切断できそうな点は助かるけれど…。

空気穴の大きさを調べてみた :

ひとまず、空気穴の大きさが分からないと色々検討できないだろうと、いくつか測ってみた。思っていたよりサイズがバラバラで困惑。39.5 x 14cm、30 x 9cm、25 x 8cm、とにかく全部サイズが違う。同じサイズで複数作ってポンポンとハメ込んでいく、というわけにはいかないなと…。

とりあえず、本当にそのサイズでハマりそうなのか、段ボールで各サイズを切り出してみて、各穴に実際に当てて確認してみよう…。

2024/06/17(月) [n年前の日記]

#1 [nitijyou] ネズミ対策について検討中。その2

家の床下の空気取り入れ口のサイズを昨日測ったので、段ボールをそのサイズで切り出して、穴に入るのか確認してみた。それぞれ1cmぐらいサイズが違っていたので、メモしたサイズを微修正。

とりあえず、枠のようなものを作ってしまえば、穴にハメ込んでいくことはできそうだと分かってきた。ただ、何を使って枠を作るべきか…。悩む…。

いっそ木で作ってしまうのもアリだろうか。ネズミに齧られるだろうけど、齧られたらそこにネズミが出没してることが判明するだろうし…。そもそも大昔はネズミ対策する際に木を使うしかなかったはずで。ネズミ返しも木製だったよな…。

_ねずみ返し - Wikipedia
_登呂遺跡人物伝 - 用途不明の木製品を「ネズミ返し」と推定 | 静岡市立登呂博物館

2024/06/18(火) [n年前の日記]

#1 [nitijyou] 防鼠金網が届いた

ヨドバシカメラに注文していた防鼠金網が届いた。

_防鼠金網ソフト | イカリ消毒 害虫と商品の情報サイト

イカリ消毒 防鼠金網ソフト。0.5mmの太さの針金で編んである金網。40x45cmのサイズ。636円。

予想より、網目が大きかった…。ただ、1.5cmの大きさがあればネズミが通ってしまうと言われてるけれど、この商品は1cmぐらいの網目に見えるので、たぶん大丈夫かなと…。

どうやって取り付けよう…。コストを考えると、やはりシリコンシーラント+コーキングガンだろうか…。

2024/06/19(水) [n年前の日記]

#1 [nitijyou] シリコンシーライトとコーキングガンを購入

DCMホーマックで、シリコンシーライトとコーキングガンを購入。防鼠金網を床下の空気取り入れ口に貼り付ける作業に使ってみる予定。


シリコンシーラントには、フツーのシリコンシーラントと、変成シリコンシーラントがあるらしい。前者のほうが耐久性はあるが、後者は後から塗装可能。また、変成シリコンは、シリコンといいつつ、実際はポリエーテル樹脂らしい。

色について、クリア、ホワイト、ライトグレーのどれにするか、店頭でかなり悩んだけれど、コンクリートに塗っていくのだから、ライトグレーでいいかなと…。実際塗ってみたら失敗したと感じそうな予感もあるけれど。

コーキングガンは一番安いものを選んだ。レバーを後ろに引く際の留め具っぽい板がついてなかったりするので、ひょっとするとほとんど使い捨て同然の製品なのかもしれないけれど、この一本分だけ使えればいいか、ぐらいの感覚で購入。

防鼠金網として使えそうな商品が無いか眺めてきた :

昨日ヨドバシカメラから届いた防鼠金網の代わりになりそうな金網が無いか、DCMホーマックで探してみた。

一応、ほとんどそっくり同じ金網を見かけた。コレを一定間隔で切断したものを防鼠金網として売ってるのではないかと思えるぐらいに見た目がそっくり。ただ、先日購入した品は、40x45cmで636円。DCMホーマックで見かけたソレは、40x100cm(40cm x 1m)で1,580円。DCMのほうがビミョーに高い…。

2024/06/20(木) [n年前の日記]

#1 [nitijyou] ネズミ対策用のアレコレをダイソーで購入

先日購入した防鼠金網についてググっていたら、「1.5cmほどの穴があればネズミは入ってくるのに、この金網はそのくらいの目の大きさになってる。これでは効果が期待できない」という話を見かけた。

たしかに、パッケージには「2重3重に重ねたらより効果的」と書いてあるので、実際に使う時は少しずらして重ねて目を小さくて利用してくれ、ということかもしれない。つまり、40 x 45cmのサイズだけれど、実質的には 20 x 25cm or 40 x 22.5cm の大きさしかない、ということになるのかも。

さすがにそのサイズでは、家の床下の空気取り入れ口を、1つ2つしか防げない。別のアイテムが必要だなと思えてきたので、ホームセンターサンデーに行って良さそうなものがないか探してみた。一応、目の細かい金網はあったけれど、1mで税込1,400円とか、3,000円とか…。ちょっと高い…。

考えてみたら、網戸用の網とか、鉢植えの下に引くメッシュでもいいのではないかと思えてきた。もちろんそれらは金属製ではないからネズミに齧られてしまうだろうけど。一旦取り付けてみて、定期的に穴が開いてないかチェックして、穴が開いてたらネズミが齧ってそこから出入りしてることが判明するから、その時点で金網に交換するのもアリかもしれない、と…。

そんなわけで、ダイソーで以下を購入。

2024/06/21(金) [n年前の日記]

#1 [web] サポート詐欺広告を初めて目にした

親父さんからPC相談。Windows10の画面一杯に、セキュリティがどうこうと書いてある画面が出てきたけど、消し方が分からないとのこと。

確認してみた。これが噂の詐欺広告か…。初めて見た。たしかに消し方が分からない。

とりあえず、Ctrl + Alt + Delete を押して、サインアウトして、またサインインしてみた。普段のWindowsデスクトップ画面が表示された。

ググってみたら以下で詳しく(?)説明されてた。

_偽セキュリティ警告(サポート詐欺)対策特集ページ | 情報セキュリティ | IPA 独立行政法人 情報処理推進機構

ESCの長押しでどうにかできたらしい。

親父さんの使ってる Google Chrome の履歴を確認したところ、どうやら facebook のページを開いていたタイミングで表示されたっぽい。ググってみたら、facebook はずっと詐欺広告を放置しているようで…。法的に責任を追及される欧州ではちゃんと対策してるという話もあって、日本は随分と舐められてるんだなあと…。日本の国会議員達がちゃんと仕事をしてないんだな…。

#2 [digital] AQUOSかんたんホームのウィジェット設定についてメモ

親父さんのスマホ、SHARP AQUOSで、ホーム画面からGoogle検索ウィジェットをうっかり削除してしまった。復活させる方法が分からない。一般的にはホーム画面のどこかを長押しすれば設定できるものだろうけど、その操作をしても無反応。

検索してみたら、アプリ一覧のアイコンを長押しすると、メニューが出てきて、そこから設定できるらしい。そんなの分かるわけねえ…。

_ホーム画面にウィジェットを追加する | 自分好みの設定|AQUOS:シャープ

とりあえず、アプリ一覧を長押し → ウィジェット → Google の検索欄を長押し、で追加することができた。とメモ。

#3 [web] URL置換ができるGoogle Chromeの拡張機能を少し探してみた

無線LANルータを NEC Aterm WR8300N から Aterm WG1200HS4 に変更したことで、この日記ページを公開してるURLにLAN内からアクセスするのが難しくなった。

今までは、WAN側用のURLを開くと即座に404ページ(?)が出てきたので、その状態からブックマークレットを呼んでURLをLAN内用ホスト名に変更すればアクセスできたけれど、ルータ交換後は、「アクセスできない」と表示されるまでかなり待たされるし、アクセスできないことが確定してからブックマークレットでURLを変更することもできなくなった。

そこで、Google Chromeで利用できそうな、URL置換を行う拡張機能を少し探してみた。

WAN側のURLを http://source/、LAN側のURLを http://dist/ とする前提でメモしておく。

The Switcher :

_The Switcher ドメイン切り替え

現在開いているページのURLを変更できる拡張機能。あくまで、現在開いてるページのURLを変更するだけで、ページ内のリンク先URLを変更できるわけではない。一応、「このサイトにアクセスできません。〜からの応答時間が長すぎます。」と表示されてる状態で、The Switcherのアイコンをクリックすれば、URLが変更される。

設定は以下。
  • 拡張機能のオプションページを開く。
  • プロジェクトを追加 → Project Name を入力。例: 「source->dist」
  • 「ドキュメントルートを追加」をクリック。
  • 変換元URLと変換先URLの2つを入力。例: 「http://source/」「http://dist/」
  • 右上のほうの「保存」ボタンをクリック。

今回は、ページ内のリンク先URLを置換してからリンク先を開きたいので、この拡張はちょっと違うなと…。

LinkRedirector :

_LinkRedirector

ページを読み込んだタイミングや、リンク上にマウスオーバーしたタイミング、ショートカットキーを押したタイミングで、ページ内のリンク先URLを変更することができる拡張。

設定は以下。
  • 「安全な」に、右側から「参照ページ」を追加。
  • 下のほうの「+」をクリックして、「source->dist」の名前で設定を追加。
  • 実行ページに、そのページを開いた際に動作してほしいURLを入力。例: http://hoge/fuga/piyo.html
  • リンク先アドレスを、 `http://source/` に。
  • 置換を、`http://dist/` に。
  • 左上のほうの「変更を保存」をクリックして設定を保存。

Requestly :

_Requestly - Intercept, Modify & Mock HTTP Requests

リンク先URLを変更できる拡張機能。

設定は以下。
  • HTTP Rules → My Rules → New Rules → Redirect Request。
  • If request : URL : Wildcard : http://source/*
  • Redirects to : URL : http://dist/$1
  • 「Save rule」をクリックして保存。

hostsファイルを書き換えてしまう手もありそう :

拡張機能ではないけれど、OSのhostsファイルを書き換えてしまう手もあるかなと…。http://source/ を開こうとした際に、http://192.168.1.x/ にアクセスするようにしてしまうことができる。アクセス先のIPアドレスが固定の場合は利用できそう。

C:\Windows\System32\drivers\etc\hosts

管理者権限でメモ帳(notepad.exe)を起動して、上記のファイルを開いて、最後に以下のような感じの記述を追加する。
192.168.1.40   source
この場合、http://source/ にアクセスすると、http://192.168.1.40/ にアクセスすることになる。

2024/06/22追記 :

他の拡張も見かけたのでメモしておく。

_Link url replacer

リンクを右クリックしたときに、指定文字列を置換したリンクを表示できる。設定方法は以下。
  • アイコンをクリックすると、置換元、置換先の入力欄が出てくる。
  • `source` , `dist` と入力して、「Save」をクリックして保存。
  • リンクを右クリックすると、`source -> dits` と表示されるので選択。http://source/* が、http://dist/* になって開かれる。

2024/06/22() [n年前の日記]

#1 [nitijyou] ダイユーエイトに行って金網を眺めてきた

ダイユーエイトに行ってネズミ対策に使えそうな金網が無いか確認してきた。

一応、細かい目の金網を切り売りしていて、10cmで128円、178円といったお値段だった。他のホームセンターでは1m単位で丸めた状態で売っていて、1,280円とかそんな感じだったので、あらかじめ必要な長さを調べておけば、切り売りで買ったほうが安くなるかもしれないなと…。

帰宅してから必要になりそうな長さを計算してみたけれど、99cmと出てきた…。ということは、1mの商品を買っても、切り売りで買っても、どっちも同じなのだな…。

2024/06/23() [n年前の日記]

#1 [windows] Windowsメールがとうとう消滅したっぽい

Windows10 x64 22H2上で、Windowsメールのアイコンをクリックしてみたら、Outlook for Windows (Outlook for Desktop?)が起動してしまった。

いつもは、右上にある、Windowsメールに戻すためのスライダー? チェックボックス? ON/OFFを切り替えるアレを操作してWindowsメールに戻すのだけど。今回はその切替部分が表示されていない。これではWindowsメールに戻せない…。いよいよ Windwosメールを殺しにかかってきたか…。強制以降は2024年末と聞いてた記憶もあるんだけどなあ…。

結局最後まで、yahoo.co.jp のメールアカウントを扱えない仕様は放置されたまま、Outlook for Windows を強制してくる状態になったのだな…。何度も「yahoo.co.jp と yahoo.com は別のサービスですよ。なんで問答無用で一緒くたにするの?」と報告はしておいたのだけど、一体どこでその手の報告が握りつぶされているのか…。ひょっとして英語で書かないと全部無視されるんだろうか。でも入力フォームは日本語で表示されてるし…。

Outlook for Windowsをアンインストールした :

なんだかちょっと徒労感が湧いてきたので、この際だから Windowsメールも Outlook for Windows も両方共アンインストールすることにした。付き合ってられん。アプリアイコンを右クリックして、「アンインストール」を選択。

こうなることを予想して、Thunderbird で各メールサービスにアクセスできるようにしておいて良かった。常時 Thunderbird を起動してあるわけではないから、メールチェックのタイミングは遅くなるけれど、読み書きできないわけではないし。

元々、PC相談を受けた際に回答できないのはアレだからと Windowsメールを使える状態にしていただけなので、その手の相談を受ける機会が無いなら触る必要も無いのだよな…。

#2 [web] hotmailにメールが届かなくて悩んだ

Outlook for Windowsをアンインストールしたので、動作確認として Thunderbird上 で、自宅サーバから hotmail の自分のメールアドレスにメールをテスト送信してみたけれど、何故かメールが届かないことに気づいた。変だな…。先日テストした際は ―― 2024/06/11 の時点ではメールが届いていたのに…。


つまり、hotmail / outlook.com が、一部、あるいは大多数のメールを受信できない状態になってる、ということだろうな…。

ググってみたところ、hotmail / outlook.com は、何の反応も返さずにメールを受信拒否することがチラホラあると知った。色んな企業や組織が、「hotmail/outlook.com は使うな。メールが届かないから」と注意するページをわざわざ用意していたりするようで…。

受信拒否するなら送信元にエラーメッセージをちゃんと送り返してほしいのだけどな…。少なくとも Gmail なら「お前のメールはこういう問題があるから受け取れない」とエラーメッセージを送り返してくるわけで…。Microsoftは、今後 Microsoftアカウントの使用を色々な面で強制してくる予定らしいけど、こんな怪しい状態でそういうことしないでほしいなあ…。せめてエラーメッセージぐらいは返してくれ…。

などとメモしていたのだけど。数時間後にメールチェックしてみたら、hotmail に届いてた。

どうやら hotmail は、即座にメールが届くわけではないけれど、そのうちいつかは届くときもあるかもしれない、という感じなのかな…。相手が送信してから、数十分後に届くのか、数時間後に届くのかは分からんけど…。

#3 [comic] 「からかい上手の高木さん」(山本崇一朗著) 1〜9巻を読んだ

弟が帰省した際に置いていってくれた漫画単行本を消化。主人公の男子中学生が同じクラスの女の子からからかわれる様子を延々見せ続ける内容。アニメ化、ドラマ化もされて、最近は実写劇場版も公開されたらしい。

ググってみたら20巻ぐらいあるようで。しかし弟は途中で買い揃えるのを止めたっぽい。記憶が怪しいけれど、「ずっと同じことをしてるように思えてきて飽きてしまった」と言っていたような…。もちろんファンにとっては「おいおい。そこがいいんじゃねえか」「永遠にこのやり取りを見ていたいんだが?」という感じじゃないかと想像するのだけど。

さておき。同じクラスの女の子にからかわれるというただそれだけのシチュで、よくまあこんなにエピソードを作れるものだなと感心してしまった。自分だったら2つ3つ思いついたところでネタ切れになる…。こんな縛りプレイ(?)でこれだけヒットさせちゃうのだから、漫画家さんってスゴイ…。

巻末の、外伝だかスピンオフ作品の広告を目にして、それらの作品は原作者とは別の方が担当してることを今頃になって知った。最近はそういう作り方もアリなのか…。いや、昔からそういう作品はあったか。石ノ森章太郎先生、、藤子不二雄先生の作品も、別の方が漫画を描いて連載してたことがあったような気がする。原作者しか描いちゃいけない、ということはないのだよな…。色んな展開のさせ方があることを今更ながら再認識。

2024/06/24(月) [n年前の日記]

#1 [comic] 「応天の門」(灰原薬著) 1〜3巻を読んだ

弟が帰省した際に置いていってくれた漫画単行本を消化中。平安京を舞台にして、在原業平と菅原道真がコンビを組んで色々な事件を解決していく内容。

基本設定からして面白そうだなと…。キャラの性格設定もイイ感じ。平安時代のアレコレを監修してる方が本編の合間に解説文を書いていて勉強にもなる。色んな面で充実した漫画作品だなと…。

ググってみたら、宝塚で舞台化されてたと知った。たしかに宝塚に合いそうな作品かも…。

2024/06/25(火) [n年前の日記]

#1 [comic] 漫画単行本を何冊か読み終えた

弟が帰省した際に置いていった漫画単行本を消化。

「応天の門」(灰原薬著) 4〜10巻を読んだ :

平安京を舞台に、在原業平と菅原道真のコンビが様々な事件を解決していく内容。ググったら18巻ぐらいあるらしい。

和風シャーロックホームズというか、平安名探偵コナンというか…。そういえば菅原道真のジト目がコナン君のジト目に似ている気もしてきた。この漫画家さんの絵柄そのままで名探偵コナンが描かれたら面白そう、などと妄想を。イケオジなコゴローのおっさんになる…。

「超音速の魔女」(あさりよしとお著) 1感を読んだ :

飛行機が発明されてない時代に、少年発明家が魔女の飛行能力を使って云々、という内容。

相変わらず面白そうな設定を考えるものだなと…。ただ、話は…。まあ、そういう作風の作家さんだし…。

「エリオと電気人形」(原作:島崎無印,作画:黒イ森) 1巻を読んだ :

電気を使えなくなったスチームパンク的世界で、人間の少女と少女型ロボットが旅をしていく内容。

紹介文にはイラストレーターさんが作画担当、と書いてあったのだけど、そのせいか雰囲気がイイ感じ。

「夢印」(浦沢直樹著) 全1巻を読んだ :

昔有名だったあの漫画キャラを浦沢直樹先生がリメイク、みたいな企画だろうか。ググってみたらルーブル美術館とのコラボと書いてあった。

こんな作品があったとは…。フツーに面白い…。しかもこのキャラ出しといてこんなオシャレな…。上手い…。単行本1巻で話が終わるから手も出しやすいのでは…。

「ポンコツ風紀委員とスカート丈が不適切なJKの話」(横田卓馬著) 1巻を読んだ :

学園ラブコメ漫画、だろうか。堅物ポンコツ男子高校生とツンツン系コギャル女子の交流を、みたいな。ググってみたら14巻ぐらい出てるらしい。人気作なのだな…。

早い段階で新キャラが続々と出てきて、「ギャグ漫画はキャラが増えてからが本番」という言葉を思い出した。

「BULLET BALLET BAD GIRLS」(伊賀智輝著) 1巻を読んだ :

女子高生が銃を撃ちまくって悪人達を処分していく系。たぶんジャンル名があったりするんだろうけど…。

「レッドサン・インク」(スズキ唯知著) 1〜2巻を読んだ :

武装した企業が銃を撃ちまくって無双する系。これもジャンル名があるんだろうけど…。ひたすら銃撃戦を見せるアレ。

考証として白土晴一さんの名前があって、こういった作品まで手掛けていたのかと…。銃器や軍事関係の考証だろうか…。

2024/06/26(水) [n年前の日記]

#1 [javascript] HTML5のcanvasについて勉強中

HTML5のcanvasについて勉強中。数日分 x 24時間のグリッドを描画して、その上に、作業時間帯のようなものを描画したい。

大昔、CGIで画像を表示しようとしたら、サーバ側で画像を生成してソレをWebブラウザに表示させるのが一般的だったと思うのだけど。今時はWebブラウザ上で、HTML5 + JavaScript を使えばグラフィック描画ができるわけで、だったらサーバ側で画像を生成せずに、Webブラウザ上で描画させたほうがいいんじゃないかなと思い立った。そのためには、canvas の使い方を勉強しないと…。

ひとまず、文字描画と直線描画を試しているところ。以下が参考になった。

_【canvas入門】canvas要素にテキストを描画しよう!スタイル設定方法も紹介! : ビジネスとIT活用に役立つ情報(株式会社アーティス)
_HTML5 Canvas でテキストを描画する - まくまくJavaScriptノート
_Canvasで色々な直線を引いてみよう!【おまけつきだ・・・っ!】 #JavaScript - Qiita
_canvas要素にパス(直線)を描画する | JavaScript逆引き | Webサイト制作支援 | ShanaBrian Website

日付も描画しないといけない。「2024/06/26」みたいな感じで描画したい。

_【JavaScript入門】日付の加算・減算方法まとめ(月またぎ/うるう年) | 侍エンジニアブログ
_【JavaScript】日付処理 #JavaScript - Qiita
_【JavaScript】toLocaleDateStringで日付フォーマット - #JavaScript - Qiita
_ホームページ - EY-Office

new Date()、getDate()、setDate()、toLocaleDateString() を使えばいいのかな。

#2 [comic] 「将国のアルタイル」(カトウコトノ著)1〜7巻を読んだ

弟が帰省した際に置いていった漫画単行本を消化中。中世・中東風の国を舞台にしたファンタジー戦記モノ、だろうか。鷹を操る美少年の元将軍が各地を旅して国家レベルの事件に巻き込まれていく感じの内容。

たしかアニメ化されてたような記憶もあるのだけど…。見ていたはずなのに覚えてない…。

絵が上手い漫画家さんが描く漫画は、えてして読みにくいなと…。漫画のコマ割り/レイアウトについて学ぶことより、綺麗な一枚絵を描くことに意識が行ってしまって、習得するテクニックに偏りが出てくるのだろうと想像しているけれど。しかし、パッと見で絵が上手くないと、興味を持ってくれるお客さんも少なくなりそうだし…。若い読者さんは、絵の上手さ=漫画の上手さと勘違いしてることが多いから…。なかなか難しい。

2024/06/27(木) [n年前の日記]

#1 [nitijyou] ネズミ対策として床下の穴を塞いでみた

ネズミ対策として、床下の空気取り入れ口に、鉢底ネットを貼り付けてみた。接着には、シリコンシーラントを使った。

20240620_0724.jpg

20240627_0825.jpg

見た目がちょっとアレだけど…。それでも一応、コレでネズミが入りづらくなったはず…。10ヶ所のうち、6ヶ所はこんな感じで塞いだ。

材料 :

使った材料や器具は以下。
  • 鉢底ネット。角型ロールタイプ。30cm x 1m。材質はポリエチレン。200円商品。ダイソーで購入。
  • シリコンシーラント。DCMブランド商品。色はライトグレー。300ml。製造元はコニシ株式会社。税込492円。DCMホーマックで購入。
  • コーキングガン。DCMブランド商品。税込250円。DCMホーマックで購入。
  • コーキングヘラ。15mm。税込250円。DCMホーマックで購入。

問題点 :

一応こうして対策してみたけれど、問題点がいくつかあるなと…。
  • 鉢底ネットはポリエチレン製なので、ネズミが齧って穴を開けることが全然可能。
  • 耐光性を謳ってない材質なので、太陽の紫外線ですぐにボロボロになる可能性が高い。
  • ネットの上の部分に隙間がありそうな気がする。ネズミがよじ登ってそこから入ってしまうのではないか。

でもまあ…。
  • ネズミが齧って穴が開いたら、そこからネズミが出入りしていることが確定するし。
  • 紫外線でボロボロになったら、この材質では対策にならないことが分かるし。
その時は、費用はもうちょっとかかるけれど金属製の網を購入してきてやり直さないとダメだと、家族全員で認識できるだろう…。

隙間から侵入されるのが一番マズイ気がする。対策できてるのかできてないのか、それすら分からないまま被害に合ってしまう…。

課題 :

残り4ヶ所のうち、縁側の下の空気取り入れ口は、どうしたもんか…。縁側が邪魔になって、こういう作業ができない…。

何か枠のようなものを作って、そこにこんな感じで網っぽいものを貼って、その枠を、マジックハンドのようなもので押し込めるというのはどうか…。

まあ、とりあえず、まだ対策できてない場所にはネズミ捕りシートを置いておこう…。他が塞がってたら、未対策のところから出てくるしかないはずだし。

ただ、全然違うところから出入りしてる可能性もありそうで…。家の外壁の隙間とか…。想定外の場所から出入りしてそうな気もするのだよな…。

#2 [nitijyou] 帽子を購入

メモしておかないとどこで購入したのか忘れてしまうのでメモしておく。DCMホーマックで帽子(野球帽?)を購入。税込1,097円。税抜き998円。色は薄い茶色。

犬の散歩中に、帽子にカメムシが張り付いて臭くなってしまったので、お袋さんに洗濯をお願いしたところ、タワシでゴシゴシやってしまったそうで布がボロボロに…。使い続けるのはどう考えても無理と判断して新しい帽子を購入することにした。

ただ、今時のその手の帽子は、大きさを変更するためのバンド部分がプラスチック製? ゴム製?で、穴にパチリとハメるタイプがほとんどで…。それはちょっと嫌なのだよな…。帽子の後ろがメッシュ、かつ、バンド部分がカチカチとスライドできるものをずっと探していたのだけど、これが全く見かけなくて。今回ようやくDCMホーマックで発見。もっとも、次回購入時は、このタイプは売ってないかもしれない。

2024/06/28(金) [n年前の日記]

#1 [cg_tools][gimp] Lama Cleanerを少し試用

画像の一部を綺麗に消してくれる Lama Cleaner というツールがあるらしい。

_【Stable Diffusion】画像の一部を消すLama Cleanerの使い方
_邪魔な部分を簡単除去 - Lama Cleaner|るぺったん
_SdWebUiTutorial/_/doc/LamaCleaner/LamaCleaner.md at main - Zuntan03/SdWebUiTutorial
_SdWebUiTutorial/LamaCleaner.bat at main - Zuntan03/SdWebUiTutorial
_Windows 1click Installer - Lama Cleaner
_画像に含まれる不要物を違和感なく完全削除できる無料ツール「Lama Cleaner」のインストール手順&使い方まとめ - GIGAZINE

PC上に単体でインストールして使う版の他に、Stable Diffusion web UI に拡張機能としてインストールする版があるみたいだけど…。とりあえず、Webサーバ上で動く版があるらしいので、少し試用させてもらった。以下のURLをブラウザで開くと、試用できるページが開く。

https://huggingface.co/spaces/Sanster/Lama-Cleaner-lama

ロゴが入った画像をドラッグアンドドロップして、ロゴの部分だけ消してみたりしたけれど、かなりイイ感じに消してくれた。

GIMPのプラグインについてもメモしておく :


2024/06/29() [n年前の日記]

#1 [cg_tools] Lama CleanerをWindows10にインストールしてみた

画像の一部を消去/除去できるツール、Lama Cleaner を、Windows10 x64 22H2にインストールしてみた。

Webブラウザ上で、以下のような画面が表示される。エクスプローラ等から画像をドラッグアンドドロップすれば画像を操作できる状態になる。

lamacleaner_ss01.png


以下のような感じで、画像の一部を除去/消去できる。

lamacleaner_ss02.gif

lamacleaner_ss03.gif


動作確認環境は以下。

スタンドアローン版をインストール :

以下を参考にして、単体で動作する版をインストールしてみた。

_邪魔な部分を簡単除去 - Lama Cleaner|るぺったん

git と Python 3.10 が必要らしい。自分の環境は以下を入れていた。
> git --version
git version 2.45.1.windows.1

> python --version
Python 3.10.10

インストールと起動を容易にするためのbatファイルが公開されていたので利用させてもらうことにした。ありがたや。

_SdWebUiTutorial/LamaCleaner.bat at main - Zuntan03/SdWebUiTutorial

LamaCleaner.bat を入手。DOS窓を開いて、LamaCleaner.bat を実行。今回は、C:\aiwork\lama-cleaner\ を作成して、その中に入れた。

やってることは、カレントディレクトリ内にToolディレクトリを作成して、中に Python の仮想環境を作成して、そこに色々インストールしていくらしい。最終的には 4.7GB ぐらいになった。

NumPyでエラーが出る :

インストールできたように見えたのだけど、LamaCleaner.bat を実行すると、以下のエラーが出て使えない。
A module that was compiled using NumPy 1.x cannot be run in NumPy 2.0.0 as it may crash.
To support both 1.x and 2.x versions of NumPy, modules must be compiled with NumPy 2.0.
Some module may need to rebuild instead e.g. with 'pybind11>=2.12'.
If you are a user of the module, the easiest solution will be to downgrade to 'numpy<2' or try to upgrade the affected module.
We expect that some modules will need time to support NumPy 2.

NumPy 1.x用のモジュールは、2.x で使えない、と言ってきてるっぽい。ググってみたら、2024/06 に NumPy 2.0.0 が公開されたようで…。

解決策をググったら、以下のページに遭遇。

_Python で numpy を使おうとして使えない場合の対処策(Windows 上)

Python の仮想環境に入って、NumPy を一度アンインストールしてから、バージョンを指定して再インストールすればいいのかな。2024/06/029現在の、NumPy 1.x の最終バージョンは 1.26.4 らしいので、ひとまずそのバージョンをインストールしてみることにする。

仮想環境に入る。
cd Tool\lama-cleaner
venv\Scripts\activate

pipでアンインストールと再インストールをする。
python -m pip list
python -m pip uninstall numpy
python -m pip install numpy==1.26.4

仮想環境から抜ける。
deactivate

これでエラーが出ないようになった。

実行してみる :

LamaCleaner.bat を実行すると、以下のメッセージが表示される。
http://localhost:7859/
- Platform: Windows-10-10.0.19045-SP0
- Python version: 3.10.10
- torch: 1.13.1+cu117
- torchvision: 0.14.1+cu117
- Pillow: 10.3.0
- diffusers: 0.16.1
- transformers: 4.27.4
- opencv-python: 4.10.0.84
- xformers: N/A
- accelerate: N/A
- lama-cleaner: 1.2.5
- rembg: N/A
- realesrgan: N/A
- gfpgan: N/A

2024-06-29 03:13:06.485 | INFO     | lama_cleaner.helper:load_jit_model:102 - Loading model from: C:\Users\USERNAME\.cache\torch\hub\checkpoints\big-lama.pt
Running on http://127.0.0.1:7859
Press CTRL+C to quit
  • Webブラウザで、http://localhost:7859/ にアクセスすれば、Lama-Cleanerを利用できる画面が表示される。
  • 終了は、DOS窓上で Ctrl + C でいいらしい。

デフォルトで、ブラウザを起動して件のURLを開いてくれるようではあるけれど、最初のアクセス時は、まだ色々準備ができてないのにブラウザがアクセスしてしまうようで、「アクセスできない」と言ってくる。DOS窓上で「Press CTRL+C to quit」が表示された後、ブラウザの更新ボタンを押して再読み込みすればアクセスできる。

適当な画像をドラッグアンドドロップして、ロゴを消す処理をしてみたけれど、AMD Ryzen 5 5600X + NVIDIA GeForce GTX 1060 6GB の環境では、数秒で処理が終わってくれた。

Stable Diffusion web UIのファイルを使う方法もあるらしい :

Stable Diffusion web UIのPython仮想環境に、lama-cleaner をインストールしてしまうことで、ファイルを重複させずに済む方法もあるらしい。以下で解説されていた。

_Lama-CleanerをSD A1111に統合してインストールする方法について - Qiita

Stable Diffusion web UIの拡張としてインストールしてみた :

Stable Diffusion web UIの拡張機能として、Lama Cleaner をインストールする方法もあるらしい。試してみた。

_Lama-cleanerをWebUIの機能拡張タブに追加する|juno
_aka7774/sd_lama_cleaner: Lama Cleaner 1111 Extension for Windows

Extensions タブの、Install from URL を選んで、以下を入力してインストール。
https://github.com/aka7774/sd_lama_cleaner.git

インストール後、Stable Diffusion web UI を再起動すると、「LamaCleaner」というタブが増えている。クリックして選択。

初回時は、「Install / Update」をクリックして、仮想環境のPythonに対して lama-cleaner モジュールをインストールしないといけない。失敗する時があるらしいので、何度か挑戦。Stable Diffusion web UI を再起動。

次回からは、「Start」を押せばDOS窓が開いて、Lama Cleaner が待ち受け状態になるはずなのだけど、「venv/Scripts/lama-cleanerが見つからない」とエラーを出してきた。

自分の環境では、以下の場所に Stable Diffusion web UI をインストールしてあるので…。
C:\aiwork\stable-diffusion-webui-forge\webui_forge_cu121_torch21\

lama-cleaner.exe は以下の場所にあった。
C:\aiwork\stable-diffusion-webui-forge\webui_forge_cu121_torch21\system\python\Scripts\lama-cleaner.exe

Stable Diffusion web UI の画面の、LamaCleanerタブの中に、「Start Command」という欄があるので、前述のパスで一部修正。
# CPUを使う場合。--device=cpu を指定。

start C:/aiwork/stable-diffusion-webui-forge/webui_forge_cu121_torch21/system/python/Scripts/lama-cleaner.exe --model=lama --device=cpu --port=7870

# NVIDIA製GPUを使う場合。--device=cuda を指定。

start C:/aiwork/stable-diffusion-webui-forge/webui_forge_cu121_torch21/system/python/Scripts/lama-cleaner.exe --model=lama --device=cuda --port=7870

これで、「Start」をクリックするとDOS窓が開いて、Lama Cleaner が待ち受け状態になった。下の「Open」をクリックすれば、Lama Cleaner を操作するための領域がWebブラウザ上で表示される。

さて、この Start Command の指定を永続化したいのだけど…。以下のファイルに、設定した内容は残っているようではある。
(Stable Diffusion web UIインストールフォルダ)\webui\extensions\sd_lama_cleaner\start_cmd.txt

webui\extensions\sd_lama_cleaner\scripts\lama_cleaner_tab.py を眺めた感じでは、start_cmd.txt がある場合は、そちらを参照してコマンド文字列を取得しているように見えるのだけど…。関数 get_start_command() 内で読み込んでるように見える。

しかし、いくら試しても、Webブラウザ(Google Chrome, Firefox)上では反映されない…。おかしい。

lama_cleaner_tab.py を書き換えて、Webブラウザ上でのウィジェット(?)の並びが変化することは確認できたし、print() を入れまくって、こちらが指定したい文字列を読み込んでいることも確認できた。しかし、Start Command の入力欄の文字列は、ずっと変わらない…。何故。

何度も何度も、lama_cleaner_tab.py を書き換えて動作確認してみたり、Webブラウザ上のUIを再起動してみたりしているうちに、何かの拍子に件の入力欄が書き換わってくれた。ただ、何が絡んでいて更新されたのか分からない…。

2024/06/30() [n年前の日記]

#1 [cg_tools] IC-Lightを試用してみた

画像内の照明状態を変更できる、IC-Lightというツールがあるらしい。

_lllyasviel/IC-Light: More relighting!
_光源を指定して画像の背景を違和感なく変更できる生成AIツール「IC-Light」をControlNetの作者が公開したので使ってみた - GIGAZINE
_「IC-Light」画像の照明効果を自在に変更できる生成AI | Technology | KLablog | KLab株式会社

Windows10 x64 22H2上でインストールしてみた。

動作確認環境は以下。

スタンドアローン版をインストール :

単体で動作する版をまず試してみた。HDD/SSDを10GBほど使うけど…。

以下の解説を参考にして作業。

_IC-Light導入手順書|BD

今回は、`C:\aiwork\IC-Light\` というディレクトリを作成して、その中で作業してみた。DOS窓を開いて以下を打ちこんでいった。
git clone https://github.com/lllyasviel/IC-Light.git
cd IC-Light

python -m venv venv
venv\Scripts\activate

python -m pip list
python -m pip install --upgrade pip

python -m pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
python -m pip install -r requirements.txt

初回起動 :

以下を実行。
python gradio_demo.py

初回起動時はモデルデータがダウンロードされる。フォルダ内の容量は、全部で 7.14GB になった。

Webブラウザで以下のURLを開けば操作画面が表示される。
http://localhost:7860

終了はDOS窓上で Ctrl + C でいいのだろうか。

自分のメインPC上では、512x512の画像に対して処理をするのに、1分15秒ほどかかった。

2回目以降の起動 :

参考記事に従って、start_IC-Light.bat というbatファイルを新規作成して以下を記述した。
@echo off
cd /d "%~dp0"
call venv\Scripts\activate
python gradio_demo.py
pause

start_IC-Light.bat を実行すれば、DOS窓が開く。Webブラウザで以下のURLにアクセス。
http://localhost:7860

BG画像を指定できる版もあるっぽいので、そちらのbatファイルも作成しておいた。start_IC-Light_bg.bat を新規作成して以下を記述。
@echo off
cd /d "%~dp0"
call venv\Scripts\activate
python gradio_demo_bg.py
pause

Stable Diffusion web UI拡張機能版をインストール :

せっかくだから、Stable Diffusion web UI forge版の拡張機能版もインストールしてみた。

_huchenlei/sd-forge-ic-light: A1111/SD Forge extension for IC-Light
_IC-Lightを使用して人物画像のリライティングを行う | パソコンニキ
_【Stable Diffusion】Forgeの拡張機能「sd-forge-ic-light」の使い方 | イクログ

Stable Diffusion web UI forge の、Extensions → Install from URL で、以下を指定してインストール。
https://github.com/huchenlei/sd-forge-ic-light.git


モデルデータが必要になるので、以下から入手。

_Releases - Haoming02/sd-forge-ic-light

以下の2つのファイルを入手して、webui/models/ic-light/ に置く。
IC-Light.SD15.FBC.safetensors
IC-Light.SD15.FC.safetensors

巷の解説ページでは webui/models/unet/ に置くことになっているけれど、2024/06/30現在の版では、webui/models/ic-light/ に置くことになっているので注意。
(Stable Diffusion web UI foregインストールフォルダ)\webui\models\ic-light\

インストールできると、txt2img や img2img の画面に、IC-Light と言う項目が増える。

しかし、試してみてもそれらしい結果が出てこない…。指定の仕方がおかしいのだろうか? 特定の sampler を選ばないと上手くいかないとか…?

スタンドアローン版はそれらしい結果が返ってくるけれど、Stable Diffusion web UI forge 拡張版は結果が全く得られない状態になった。

以上、30 日分です。

過去ログ表示

Prev - 2024/06 - Next
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project