mieki256's diary



2023/12/01(金) [n年前の日記]

#1 [prog][windows] FreeImageライブラリをMinGWで使ってみたい

C/C++から利用できる、画像読み込みをしてくれる FreeImage というライブラリがある。

_The FreeImage Project

Windows10 x64 22H2 + MSYS2 + MinGW64 上であれば、FreeImage のパッケージが用意されているので、該当パッケージをインストールするだけで利用できるようになる。そのことについては以前試した。

_mieki256's diary - FreeImageとDevILライブラリを試用

これを、MinGW (g++ 9.2.0) から利用してみたいと思い立った。環境は Windows10 x64 22H2。

ファイルを入手 :

_The FreeImage Project

公式サイトから、以下の2つを入手。バージョンは FreeImage 3.18.0。2018/08/01頃に公開された版らしい。
  • FreeImage3180.zip : ソースファイル群
  • FreeImage3180Win32Win64.zip : VisualC++用のライブラリファイル(バイナリ)

MinGW用ライブラリファイルに変換 :

FreeImage3180Win32Win64.zip を解凍してみたところ、README.minGW というテキストファイルがあった。その中で、MinGW用ライブラリファイル、libfreeimage.a への変換方法が書いてあった。FreeImage.dll の中にある関数名をリストアップして、その関数を呼ぶライブラリファイルになるらしい。いわゆる動的リンク、というヤツだろうか。

解凍して得られたフォルダ内の、Dist\x32\ に移動して作業。
pexports FreeImage.dll | sed "s/^_//" > libfreeimage.def
dlltool --add-underscore -d libfreeimage.def -l libfreeimage.a
  • pexports を使って、dll内の関数名の一覧を libfreeimage.def に書き込む。
  • dlltool を使って、ライブラリファイル libfreeimage.a を作成する。
  • pexports は、自分の環境では、何故か Strawberry Perl 5.32.0.1 x64 のインストールフォルダの中にあった。調べてみたら、本来は MinGW Installer 経由でインストールできるようだなと…。パッケージが用意されてた。
  • dlltool は、Mingwインストールフォルダ\bin\ の中にあった。

とりあえず、これで、libfreeimage.a が生成できた。各ファイルを以下の場所にコピーしておく。
  • libfreeimage.a を、MinGWインストールフォルダ\lib\ にコピー。
  • FreeImage.dll を、MinGWインストールフォルダ\bin\ にコピー。
加えて、 FreeImage.h を、以下のフォルダにコピー。
  • MinGWインストールフォルダ\include\
  • MinGWインストールフォルダ\lib\gcc\mingw32\9.2.0\include\c++\

余談。ググってたら、pexports について、この日記にもメモしてあった…。完全に記憶の中から無くなっていた…。

_mieki256's diary - dllからMinGW用のライブラリファイルを作成

FreeImageを使うファイルをビルド :

FreeImage を使うプログラムをビルドしたい時は、以下のように -lfreeimage を指定すればいいらしい。
g++ -static 01_load_png01.cpp -o 01_load_png01.exe -lfreeimage

ちなみに、上記の指定では、-static を付けているので、極力静的リンクをしてくれるらしい。ただ、前述のように、FreeImage.dll は動的リンクなので、出来上がった exe を実行するには、別途 FreeImage.dll が必要になる。

stdlib.h が見つからないというエラーが出た :

以前、 _MSYS2 + MinGW64用に書いたサンプル を MinGW でビルドしようとしたら、fatal error: stdlib.h: No such file or directory というエラーが出た。

includeパス(ヘッダーファイル群が入ってる場所)を指定する環境変数がおかしかったらしい…。以下のように環境変数を設定したらエラーが出ずにビルドが通るようになった。
CPLUS_INCLUDE_PATH=(MinGWインストールフォルダ)\lib\gcc\mingw32\9.2.0\include\c++

ちなみに、元々は以下のように指定していた。
CPLUS_INCLUDE_PATH=(MinGWインストールフォルダ)\include

関連情報を調べたところ、CPATH という環境変数で、C/C++共通のヘッダファイルの場所を指定できるらしい。合ってるのかどうかわからんけど、とりあえず以下のような指定をしておいた。
set MINGW_PATH=(MinGWインストールフォルダ)

set CPATH=%MINGW_PATH%\include
set C_INCLUDE_PATH=%MINGW_PATH%\include
set CPLUS_INCLUDE_PATH=%MINGW_PATH%\lib\gcc\mingw32\9.2.0\include\c++

FreeImage を静的リンクできない :

生成されたexeファイルが要求してくる dll を調べたら以下のようになった。
> objdump -p 01_load_png01.exe | grep -e "DLL Name"
        DLL Name: FreeImage.dll
        DLL Name: KERNEL32.dll
        DLL Name: msvcrt.dll
        DLL Name: msvcrt.dll

.exe とは別に、FreeImage.dll が必要な状態。いわゆる動的リンク。コンパイル済みの FreeImage バイナリを利用する分には、こういう状態になる。

どうせなら静的リンクをしたい。README.minGW を眺めたら、「静的リンクができる FreeImage (libfreeimage.a) は、環境変数 FREEIMAGE_LIBRARY_TYPE を STATIC に変更してビルドすれば作れる」と書いてあった。試しにビルドしてみる。

FreeImage3180.zip を解凍。

Makefile.mingw の、18行目のコメントアウトを外すように修正。
#FREEIMAGE_LIBRARY_TYPE = STATIC
↓
FREEIMAGE_LIBRARY_TYPE = STATIC

以下を実行。
make -f Makefile.mingw

あるいは、Makefile の最初のあたりの、MAKEFILE = gnu という指定を、mingw に書き変えて、その状態で make とだけ打っても良い。
MAKEFILE = gnu
↓
MAKEFILE = mingw

Dist\ の中に以下の2ファイルが生成された。
  • FreeImage.h
  • libFreeImage.a

それぞれ、以下の場所にコピーする。
  • libfreeimage.a を、(MinGWインストールフォルダ)\lib\ にコピー。
  • FreeImage.h を、(MinGWインストールフォルダ)\include\ にコピー。
  • FreeImage.h を、(MinGWインストールフォルダ)\lib\gcc\mingw32\9.2.0\include\c++\ にコピー。

しかし、このファイルを使ってビルドすると、ld.exe (リンカ)がエラーを出してしまう…。
> g++ 01_load_png01.cpp -o 01_load_png01.exe -lfreeimage -static
d:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\xxxxxxxxx\AppData\Local\Temp\ccmw2cGP.o:01_load_png01.cpp:(.text+0x3e): undefined reference to `_imp__FreeImage_Initialise@4'
d:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\xxxxxxxxx\AppData\Local\Temp\ccmw2cGP.o:01_load_png01.cpp:(.text+0x48): undefined reference to `_imp__FreeImage_GetVersion@0'
d:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\xxxxxxxxx\AppData\Local\Temp\ccmw2cGP.o:01_load_png01.cpp:(.text+0x5f): undefined reference to `_imp__FreeImage_GetCopyrightMessage@0'
...

_c++ - Fail to static linking FreeImage 3.15.4 on MingW - Stack Overflow

以前は FreeImage 3.15.4 で成功したという話を見かけたので、3.15.4 や 3.17.0 (FreeImage3154.zip, FreeImage3170.zip) を入手して試してみたけれど、3.15.4 も 3.17.0 もビルドの途中でエラーが出てしまう…。3.18.0 ならビルドだけは通るのだけど…。


_FreeImage / Discussion / Help: MinGW compiling errors
_FAQ - The FreeImage Project

FAQページに、静的リンクは難しいぞ、と書いてあるように見える…。基本的に、dll が別にあることを前提に作られているっぽい。
  • 最初に FreeImage_Initialise() を呼んで、最後に FreeImage_DeInitialise() を呼べ、とか。
  • #define FREEIMAGE_LIB を追加せよ、とか。
  • あるいはリンカに、-DFREEIMAGE_LIB を追加したり、-lwsock32 -lws2_32 も追加せよ、とか。

色々試してたら、静的リンクができた、かもしれない。以下の指定でリンカがエラーを出さなくなったし、生成された .exe もそれらしく動いてくれた。
g++ 01_load_png01.cpp -DFREEIMAGE_LIB -static -lfreeimage -lwsock32 -lws2_32 -o 01_load_png01.exe

要求される dll を調べてみる。
> objdump -p 01_load_png01.exe | grep -e "DLL Name"
        DLL Name: KERNEL32.dll
        DLL Name: msvcrt.dll
        DLL Name: msvcrt.dll
        DLL Name: WSOCK32.DLL

freeimage.dll の名前が出てこなくなった。

生成された .exe も、freeimage.dll を使う版は 2.2MBだったけど、静的リンクをしたら 8.9MB になった。今までよりサイズが大きくなったので、静的リンクされているのだろう。たぶん。

でもまあ、dll を使って動作するようにしておくか…。元々、動的リンクで使うことを前提にしてあるライブラリのようだし…。

#2 [windows][prog] 今現在MinGWを入手するにはどうすればいいのだろう

MinGW は OSDN で配布されていたけれど、その OSDN は現在死にかけてしまっているわけで…。今後 MinGW が欲しくなったら、一体どこから入手すればいいのだろう…?

バージョンが古くてもいいなら、Sourceforge にまだありそうだけど…。とりあえず、pexports 0.47 は置いてあった。mingw-utils-0.3 の中にも pexports は入ってた。

_MinGW - Minimalist GNU for Windows download | SourceForge.net
_MinGW - Minimalist GNU for Windows - Browse /Installer at SourceForge.net
_MinGW - Minimalist GNU for Windows - Browse /MinGW/Extension/pexports at SourceForge.net
_MinGW - Minimalist GNU for Windows - Browse /MinGW/Extension/mingw-utils at SourceForge.net

「今時 MinGW なんか使ってんじゃねえよ。MSYS2 使え」って言われそうだけど、 MSYS2 ではスクリーンセーバを作れないのだよな…。

_mieki256's diary - msys2 + MinGW-w64でスクリーンセーバをビルドしようとしてハマった

ローカルに少しキャッシュが残ってた :

(MinGWインストールフォルダ)\var\cache\mingw-get\packages\ の中に、*.lzma や *.tar.xz が結構残ってた。このあたりをバックアップしておけばどうにかなるのだろうか…?

#3 [windows] IISの構成のバックアップをしておいた

Windows上で動作するWebサーバ、IIS の構成ファイルのバックアップをしておいた。以下を参考に作業。環境は Windows10 x64 22H2。

_Windows - IISの設定のバックアップ・リストア作業
_IISの標準バックアップ appcmd add backupは自サーバのみ実行可の注意点 - ITよろづや
_IIS の構成のバックアップ - IIS 徹底解説 - Web/DB プログラミング徹底解説

管理者権限でDOS窓を開いて以下を実行。
cd C:\Windows\\system32\inetsrv
C:\Windows\\system32\inetsrv\appcmd add backup
 >C:\Windows\System32\inetsrv\appcmd.exe add backup
 BACKUP オブジェクト "20231201T190044" を追加しました
C:\Windows\System32\inetsrv\backup\ 内に、日付を元にしたフォルダが追加されているので、どこかにコピーしてバックアップしておく。

リストア(復元)したい時は、C:\Windows\system32\inetsrv\backup\ 内に、バックアップしておいたフォルダをコピーしておいて以下を実行するらしい。試してないけど…。
C:\Windows\system32\inetsrv\appcmd restore backup フォルダ名

2023/12/02() [n年前の日記]

#1 [pc] 親父さんのプリンタの調子が悪い

親父さんが使ってる複合機、Canon MG3630 の調子が悪い模様。文書をコピーしようとしても動かない、と相談を受けた。

本体表面のLEDが橙色で3回点滅しているので、用紙切れエラー状態らしい。もちろん用紙はセットしてある。

電源投入してから印刷をせずに、スキャナだけ利用する分には一応使える。そこから印刷しようとすると、用紙を読み込もうとして、しかし紙送りがされず、用紙切れとしてエラーが出るっぽい。

関連情報をググってみたけれど、おそらく給紙ローラーだか搬送ローラーだかがダメになってる気配がする…。一応、PC側から操作して、給紙ローラークリーニングをしてみたけれど、効果は無かった。

ただ、紙を飲み込むタイミングで指で軽く紙を押し込んでやると紙送りがされる時もあるっぽい。

修理方法を調べてみたけれど…。とにかくローラーを掃除するか、ローラーの表面(ゴムの表面)を紙やすり等で軽く削る方法があるようで。要は、ゴム部分がゴムらしくなるように復活できればいいのだろうけど。

_インクジェットプリンターMG3630で紙が送られない | kのガジェット調査簿
_プリンタ修理3分で完了!Canon MG6360で給紙できない(用紙なしエラー)の対処法 - ウェブノコエ
_Canon MG3530 の修理: jh4utp 備忘録
_Canonプリンタ(MG5430)の紙送りが故障 | 鉄道模型を楽しもう
_CANON PIXUS MG5530 給紙エラー、意外と簡単に直せました - レンズを絵筆に、光を絵具に
_【給紙できない】Canonプリンターを自力で修理する方法-MG5530
_翼付きのクワッドコプター | おびやまロボット研究所 〜マイコン電子工作と自作ドローン〜 - 楽天ブログ
_MG3230
_Canon MG3230 が給紙不良となったため、原因を調べてみました。 - 私のPC自作部屋
_プリンター「キャノンMG3630」の紙送りができなくなった。 | あっきゃblog
_「キャノンMG3630」のローラーをクリーニングしてみた。 | あっきゃblog


プリンタ本体の裏側から給紙ローラーが見えれば掃除できそうな気もするけど、MG3630 はそのあたりどうなってるんだろう。

クリーニングシートを ―― 粘着する何かを表面に塗布してある用紙を使って、ゴミを取ったら改善したという事例も見かけた。近所の電器店で売ってるだろうか…。

#2 [prog][windows] OpenGLをC言語で使う方法を少し調べてた

Windows10 x64 22H2上で、MinGW (gcc, g++) を使って、OpenGL を使ったプログラムを作る方法について調べていた。

ググったところ、GLUT、freeglut、glfw 等を利用して、main() の中に記述していく事例ばかりで…。そういう書き方でいいのであれば、自分も以前試したことがあるのだけど…。

_mieki256's diary - MinGWでfreeglutを使ってみた
_mieki256's diary - MinGWでGLFWを使えるように環境を整えた
_mieki256's diary - C言語とOpenGLでボールが跳ね回るプログラムを作成

一般的に Windows のGUIプログラムは、WinMain() の中に色々書いていくはずだけど、main() で書いちゃっていいのだろうか。それってコンソールプログラムになってしまうのでは…?

GLUT等を使わずに OpenGL を使う事例も見かけた。

_算譜記録帳: 遠回りで学ぶWin32 APIでOpenGL 001
_算譜記録帳: 遠回りで学ぶWin32 APIでOpenGL 002
_算譜記録帳: 遠回りで学ぶWin32 APIでOpenGL 003
_算譜記録帳: 遠回りで学ぶWin32 APIでOpenGL 004

たしかに記述がめちゃくちゃ増える…。なるほど、こうなるのでは、猫も杓子も GLUT等を使うわけだなと…。

やりたいことは、MinGW の C/C++ (gcc/g++) で OpenGL を使って画像描画をしつつ、その画像を exeファイルの中に埋め込みたい。その程度の実験であれば、GLUT等を使ってしまってもいいのだろうか。

GDIで画像描画しつつ、exeファイルに画像を埋め込む方法は、以前試したことがあるので、画像の埋め込み自体は似た感じでできるのではないかと想像しているのだけど…。

_mieki256's diary - MinGWとWindows APIで画像を描画
_mieki256's diary - GDI+でpng画像を読み込んで描画
_mieki256's diary - GDIでダブルバッファ描画
_mieki256's diary - ビットマップ画像を描画するスクリーンセーバを書いてみた
_mieki256's diary - Windows用スクリーンセーバの作り方をまだもうちょっと調べてる
_mieki256's diary - OpenGLを使ったWindows用スクリーンセーバをMinGWでコンパイル
_mieki256's diary - C言語とOpenGLでボールが跳ね回るプログラムを作成
_mieki256's diary - OpenGLを使ったWindows用スクリーンセーバをC++で書いてみた

2023/12/03() [n年前の日記]

#1 [pc][windows] EvernoteからObsidianに移行できないか試してみた

Evernoteの無料プランの制限が厳しくなったらしいので、今まで溜めていたメモを別の何かに逃がしてみることにした。

_「Evernote」無料プランの上限変更が正式決定、導入は12月4日から - 窓の杜
_Evernote、無料プランを大幅制限 ノートの上限数が10万→50に - ITmedia NEWS


ひとまず、ローカルで動作して、クラウドにデータをアップロードしたりしない、Obsidian というMarkdownエディタにインポートできないか試してみた。

_Obsidian - Sharpen your thinking

環境は、Windows10 x64 22H2。

Evernoteからエクスポート :

Evernoteに溜めこんだメモ(ノートブック、ノート)を、何かしらのファイルとしてエクスポートしたい。デスクトップ上で動作する Evernote Legacy で、エクスポートしたいノートブックを右クリックして、エクスポートを選んだ。.enex を選択。

ちなみに、Evernote Legacy ではなく、現行版Evernoteでも同じことをしたのだけど、現行版でエクスポートした .enex を他の変換ツールに渡すと、 「無題のノート」なるファイルが500ファイル以上出来上がってしまってよろしくなかった。何故かは分からないけど、自分の環境の場合は、Legacy 版でエクスポートしたほうが良さそうだなと…。

ついでに、単一htmlや複数htmlでもエクスポートしておいた。これで万が一、Evernote が利用できなくなっても、メモを参照することぐらいはできるだろう…。

Obsidianにインポート :

最初は、importer というプラグインをインストールして利用したのだけど、ノートが955ほどあるはずなのに、600前後しか .md ファイルになってない。どう見ても大量にノートを取りこぼしている…。

ググっていたら、Yarle という変換ツールが良さそうに見えた。

_akosbalasko/yarle: Yarle - The ultimate converter of Evernote notes to Markdown
_[Obsidian] Evernoteからの移行ツール - 端くれプログラマの備忘録
_EvernoteからObsidianへの移行 | 備忘録とか、買ったものとか
_Yarle のコマンドを使ってEvernoteのノート(ENEX形式)をMarkdownファイルに変換する - ラボラジアン

yarle-evernote-to-md_win_x64.exe を入手して実行。以下にインストールされて、かつ、自動起動した。
C:\Users\(USERNAME)\AppData\Local\Programs\yarle-evernote-to-md\

保存しておいた .enex を指定して、保存場所を指定。途中で変換オプションを尋ねてくるけれど、デフォルトのまま試した。

数分ほど変換処理にかかって、出力フォルダに大量の .md が保存された。

Obsidian で管理してるフォルダの中に、Evernote というフォルダを作成して、その中に今回変換した .md ファイル群をフォルダごと移動。

Obsidian を起動すると、.mdファイル群を読み込んでくれたようで、検索すると Evernote から持ってきたメモもリストアップされた。

ただ、ノートが955あるはずなのに、951ファイルの .md しかない…。4ファイルというか、4ノートほど消滅している…。さて、一体どれが変換できなかったのか…。

Yarle の変換オプションで、タグのネストのあたりを Yes にしたり等色々試してたら、955ファイルが出力された。どのあたりのオプションを弄ったのかよく覚えてないのがなんともアレだけど、とりあえずそのあたりを色々変えて処理すれば改善する場合もあるようだなと…。

また、Evernote側で、複数のhtmlとしてノート群をエクスポートしておけば、各ノートのタイトルとノート数を確認できるだろうから、それと照らし合わせてどのノートが変換されなかったのか絞り込むこともできるかもしれない。

タグが反映されない :

Obsidian で Evernoteから持ってきた .md を確認したところ、Evernote上でつけていたタグが反映されてないことに気づいた。

.md の中を覗くと、例えば以下のような記述があったので、タグ情報を取り出すことはできているようだけど…。
Tags: #Aterm #Router

以下のページを目にして理由が分かった。

_Tags - Obsidian Help

通常、Obsidian上でタグを指定する時は、「#タグ名」で記述するけれど、「tags:」を使ってタグを記述する時は、フォーマットが違ってくるらしい。例えば前述のタグ情報は、以下のように書かないといけない。
tags:
  - Aterm
  - Router

950ファイルも手作業で修正するのは厳しいので、簡単なRubyスクリプトを書いて修正することにした。

ただ、元の .md は、最初のあたりの改行コードが CRLF、本文の改行コードが LF になっていて、Rubyスクリプトで元の改行コードの混在ぶりを反映させる方法が分からない…。解決策が思いつかなかったので、仕方なく今回は、全部CRLFで出力し直してしまうことにした。

__conv_tag.rb
# Yarle が出力した md ファイルの Tags: 行を変更。
# Source URL の行も削除する。
# カレントフォルダ内の *.md 全てを対象にして処理をする。

require "fileutils"

write_enable = true
# write_enable = false

Dir.glob("./*.md").each do |fn|
  puts fn

  # backup file
  if write_enable
    FileUtils.cp(fn, fn + ".bak")
  end

  # read file
  # f = File.open(fn, "rb:utf-8")
  f = File.open(fn, "r:utf-8")
  buf = f.read()
  f.close

  # lines = buf.split(/\r\n/)
  # lines = buf.split(/\r/)
  lines = buf.split(/\R/)

  lines_new = []
  lines.each { |s|
    if s =~ /Source URL: \[\]\(.+\)/
      puts s
      next
    end

    if s =~ /^Tags:/
      tags = s.split(" ")
      tags_new = []
      tags.each do |t|
        if t == "Tags:"
          tags_new.push("tags:")
        elsif t =~ /^#(.+)/
          tags_new.push("  - #{$1}")
        end
      end
      tags_new.each { |t| puts t }
      tags_new.each { |t| lines_new.push(t) }
      next
    end

    lines_new.push(s)
  }

  # write file
  if write_enable

    # LF
    # f = File.open(fn, mode = "wb")

    # CRLF
    f = File.open(fn, mode = "w")

    # f.write(lines_new.join("\r\n"))
    f.write(lines_new.join("\n"))

    f.close
  end
end

.md が入ってるディレクトリの中で、以下を実行。
ruby _conv_tag.rb

"Source URL"の行がエラーになる :

.md の最初のあたりに、以下のような記述の行があると、タグ等が反映されない状態になってしまう。

Source URL: [](http://yoshidastyle.net/Blogs/2013/05/27/microsoft-office-excel-2000-2003-err)

ざっと見た感じ、メモの本文中にも該当URLがメモしてあることが多かったので、行ごと削除してしまうことにした。前述の _conv_tag.rb の中で一緒に処理してしまった。

暗号化部分の確認 :

Evernote上では「選択したテキストを暗号化」を使って、パスワードを入力しないと内容が見れない箇所をいくつか設定していた。変換後の .md内では、該当部分は謎の文字列になっていた。これでは何が書いてあったのか分らない…。

ただ、どうも規則性と言うか、最初の部分だけはどれも同じ文字列に見えたので、変換後の .md の中から特定文字列を検索することで、暗号化が使われていたノートを絞り込めた。自分の場合、「RU5DM」で検索すると、利用されている場所がリストアップされた。このあたりは環境やパスワードによって違う文字列になるのかもしれない。

後は以下の作業をコツコツと。
  1. Obsidian上で、特定文字列で検索して、使われている .md を開いた。
  2. Evernote上で、該当するノートを探して、暗号化を解除して、元の文字列をコピー。
  3. Obsidian上で、元文字列を追加していった。

スクリプトの類を書いて自動化できそうな気もするけれど…。

#2 [pc][windows] EvernoteからOneNoteに移行できないか試してみた

Evernote から Microsoft OneNote にメモを持っていけないか試してみた。OneNote というのは…要するに Microsoft版 Evernote と言ってしまったほうが分かりやすいのだろうか…?

環境は Windows10 x64 22H2。

ググった感じでは evernote2onenote というツールが使えるとの評判らしい。

_Evernote2Onenote - Stefans Tools

ちなみに、昔は公式の移行ツールがあったらしいけど、今ではなくなってしまったそうで…。

とりあえず、Evernote2Onenote-1.3.6.zip を入手して解凍。中には Evernote2Onenote.exe が入っていた。実行すると、起動する。

Evernote Legacy からエクスポートしておいた .enex を開いたら、即座に変換処理が走り始めて、数分後に変換が終わった。

OneNote 2016 を起動。OneNote for Windows10 ではないことに注意。

今まであったノートブックとは別のノートブックとして、まるっと追加された。

たしかに取り込むことはできたけど、ちょっと問題が…。

問題点 :

Evernote上の各タグは、OneNote上ではセクションという単位に ―― 複数のページがまとめられてる状態に変換されたのだけど。Evernote上でタグが複数設定されていたノートは、OneNote上では複数のセクションの中に、同じ内容のページとして作られてしまうようで…。

例えば、Evernote上の1つのノートに、「gimp」「cg_tools」「g'mic」「linux」と4つのタグがつけられていると、OneNote上では、同じ内容のページが、「gimp」「cg_tools」「g'mic」「linux」の4つのセクションの中に作られてしまう。結果、ページ数が何倍にもなってしまった。

このあたり、OneNote にはタグという概念が無いから、こうするしかないということなのかな…。

また、Web上のどこかしら(OneDrive?)と同期させるのも難しそう。Evernoteから取り込んだノート群は、ひとまずローカル上にファイルとして作られているけれど、ファイル → 情報、から、取り込まれたノートブックを「同期」しようとしたところ、同期処理がいつまで経っても終わらない状態になった。どうやら、一気にWebと同期させるのは難しいようだなと…。別のノートブックを作成して、少しずつセクションやノートを移動しつつ、チマチマと同期しないといかんのかもしれない。

色々試してたら、各セクションの中に、何故か同じページが2つ作られている状態になってしまった。どうしてこんなことに…。

一部、画像が移行できてないノート(ページ)もあった。空のページだけがあって悩んだけれど、Evernote上で確認したら画像が一枚だけ貼ってあるノートだった。

#3 [movie] 「アルキメデスの大戦」を視聴

BS12で放送されていたので視聴してみた。漫画を原作としているらしい、2019年公開の邦画。VFXに強い山崎貴監督の作品。もしかすると今回の放送は、「ゴジラ-1.0」の援護射撃的な放送なのだろうか。

基本設定としては、太平洋戦争が始まる前、戦艦大和を建造するかどうかを決める会議の場で、数学を武器にして孤軍奮闘する主人公の姿を描く、みたいな感じの内容。

恥ずかしながら、そういう原作があったことも知らなかった上に、こういう映画があったことすら知らなかったのだけど。見てみたら、かなり面白かった…。特に最後のあたりの展開が…。いやー、そうきたかー、と唸ってしまった。敵対する人物の台詞が良い…。全然違う土俵で戦ってたのだなあ、と…。

それにしても、2010年に実写版宇宙戦艦ヤマトを作った山崎監督が、10年後にこういう内容の映画を作って、しかもその後、ゴジラに繋がっていくわけで。この流れと言うか、どんどんバージョンアップしていく様子がなんだか面白いなと…。各映画を作るにあたって、「"ヤマト"って一体何なんだろう?」「日本人って何なんだろ?」的なことを少なからず考えていたはずだし…。結果的に、何か1本繋がってきたように思えるわけで、そこがまた興味深いというか…。

2023/12/04(月) [n年前の日記]

#1 [pc][windows] OneNote上でEvernoteのノートを整理中

Windows10 x64 22H2 + Microsoft OneNote上で、Evernoteから取り込んだノート群(OneNote上ではページと呼ばれる)を整理中。

OneNoteというのは、メモを取るツールというか。メモをWeb経由で同期できるので、他のPCからも参照したり修正することができるのが売りだろうか。

evernote2onenote を使えば、Evernoteからエクスポートした .enex を OneNoteに取り込めるけれど。Evernote上で複数のタグを付けたノートは、OneNote上で、複数のセレクションに、同じ内容のページとして配置されてしまう。ページ数が何倍にもなる…。

この状態で、例えばどこかしらのページに変更を加えた場合、他のページには修正内容が反映されないだろうから、最新の内容と、昔の内容が、混在した状態になってしまうはず。マズい。それはよろしくない。だから、同じページがあるようなら、1つのページにしておかないと。

ということで、ダブっているページを目視と手作業で削除しているのだけど…。シンドイ…。作業のどこかしらを自動化できないものか…。

また、もしかすると取りこぼしているノートがありそうな気もするのだけど、OneNote上では全部で何ページあるのか確認する方法が見当たらなくて。これでは変換が上手くいったのか失敗してるのかも分らない。

同期もやたらと時間がかかる。Evernote なら数秒で終わる同期処理が、OneNote は下手すると数分かかる…。何か実装を間違えてないか…?

そんな感じなので、この OneNote、ページ数が少ない分には使えるのかもしれんけど、数百ページになってきたら全然使えないサービスかもしれないなと思えてきた。Evernoteのノート参照用としては残しておくけれど、おそらく Obsidian を常用したほうが良さそうだなと…。いやまあ、Obsidian は画像の貼り付けや取り扱いが面倒そうな予感もあるのだけど。

2023/12/05(火) [n年前の日記]

#1 [pc][windows] OneNoteやObsidianについて調べてる

Evernote からの移行を検討して、OneNote や Obsidian について、アレコレ調べてる。環境は Windows10 x64 22H2。

OneNoteについて :

OneNote上のページ数を取得したくてググっていたのだけど、なかなか難しいようだなと…。

_onenote のセクションにページがいくつあるか確認する方法 - Microsoft コミュニティ

セクション内のページ数に関しては、印刷プレビュー(ファイル → 印刷 → 印刷プレビュー) を選ぶことで、印刷ページ数が何ページになるかで調べることができるらしい。でも、セクション数が多かったら、そんなの手作業で一々やってられないよなと…。


あるいは、有料ツールの Onetastic を使えばある程度自動化できるようで、ページ数取得のマクロも存在しているらしい。

_Number of Pages - Onetastic
_OneNote のマクロを作成する


Microsoft Access を持っているなら、VBA でどうにかできる可能性もあるらしい。

_OneNoteをVBAでいじる - 動作環境(VBA) - msaf BLOG
_OneNoteをVBAでいじる - VBAの参照設定 - msaf BLOG
_OneNoteをVBAでいじる - すべてのページの名前を取得 - msaf BLOG
_VBA で OneNote のセクション内のページのフォントを変更する #VBA - Qiita

ただ、自分が持っているのは Microsoft Office 2007 (Excel 2007) なので、これも難しそう。

いっそ、OneNote から別の何かの形式でエクスポートして、その別形式になったファイルでページ数を確認できないかと思ったけれど。ググってみたら、OneNote から別形式にエクスポートする機能としては、ノート1つを PDF にできるかどうか、程度しかないそうで…。

これはかなり危ない。こんな状態では、OneNote はブラックホールでは…。サービス終了したら、溜めてたメモを他の何かに持っていけなくて、そこで詰みそう。これは危ないなあ…。

Obsidianについて :

Obsidian で画像を扱えるのか調べてみたけれど。エクスプローラ等から画像ファイルをドラッグアンドドロップするだけで、管理してるフォルダ内にファイルをコピーしてくれて、かつ、ノート内にも埋め込みリンクを貼ってくれると知った。

どうやら、画像を表示するぐらいなら、あっさりとできてしまうようだなと…。しかも、ファイル名の後ろに「| 128x128」等を付けると表示サイズも変更してくれる。「![[hoge.png | 128x128]]」みたいな感じ。素晴らしい。

ページの両脇に、空白と言うかスペースが結構な面積で表示されてしまう点が気になったけれど、設定を変えれば無くすことができると分かった。設定ウインドウ → エディタ → 表示 → 読みやすい行の長さ、を無効にすればスペースが無くなる。

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

#1 [windows] Windows10の再インストールをした

メインPCのシステムドライブにしていたSSDを、弟から貰った中古のSSDと交換した上で、Windows10をクリーンインストールすることにした。


中古のSSDではあるけれど、今では珍しいMLCなので、今まで使ってたSSDより耐久性はありそう。今まで使ってたSSDは、既に健康状態が85%だけど、交換後のSSDは99%だったりするし…。

Windows10のセットアップディスク(ISO)は、32GBのUSBメモリに入れておいた。ISOの入手と、USBメモリに入れる作業は、サブPCの Ubuntu Linux 22.04 LTS上で行った。

「インストール用に選択されたディスクのパーティションが、推奨される順序になっていません」エラー :

USBメモリから起動してインストール作業を進めていったのだけど、インストールするパーティションを選ぶ際に、「インストール用に選択されたディスクのパーティションが、推奨される順序になっていません」という警告が出た。

ググって、以下のページに辿り着いた。

_【修正】選択されたディスのパーティションが、推奨される順序になっていません - MiniTool Partition Wizard

Sfift+F10 を叩くとDOS窓が起動するので、そこで diskpart を使って、SSD/HDDのパーティションを初期化すればどうにかなるらしいので、その通りに試してみた。もちろん、間違って他のディスクを初期化してしまうと大変なことになるので、注意しながら作業。そもそも他のディスクは外した状態で作業したほうが良かったのかもしれない。
diskpart
list disk
select disk=0 (OSインストールをするディスクの番号を指定)
list partition
clean
list partition
exit
exit

これで、対象のSSDのパーティションが未使用(?)状態になって、パーティションは1つだけ表示される状態になり、件の警告が出てこなくなった。

インストール後にディスクの管理で確認してみたけれど、SSDは以下のような構成になっていた。
  • 100MB : EFI システムパーティション
  • 476.27GB : ブート、ページファイル、クラッシュダンプ、ベーシックデータパーティション
  • 564MB : 回復パーティション
Windows10にとって都合がいい複数のパーティションに分割してインストールしてくれたようだなと…。ただ、回復パーティションのサイズって、今時コレでは少なかったような…? 昔はコレでも足りたと聞いた記憶もあるけど…。

余談。SSDの固定 :

自分の環境では、SSD x 2個を、TAMIYAユニバーサルプレートの欠片にネジ止めして、PCケースの底面に貼り付けてあるのだけど。

_タミヤ 楽しい工作シリーズ ユニバーサルプレートセット | タミヤ

前面12cmファンの風を当てて多少は冷却されるように、わざわざこんなことをしている。

それはともかく。底面に貼り付ける際に「魔法のテープ」なる両面テープを使ってしまったものだから、剥がす時に一苦労。完全に失敗した。このテープは粘着力があり過ぎた。

どうせそのうち、容量の大きいSSDに交換しようとして、また剥がさないといけない気もするので、今回はダイソーで購入してあった耐震マット(防振粘着マット)で固定しておいた。PCケースが横倒しになったら取れそうな気もするけれど、本来の向きで立っている分には大丈夫だろう…。 *1

また別の話。作業が終わって電源を入れたら、前面12cmファンに何かがぶつかっているような「バリバリバリ」という音が…。電源LEDケーブルがファンと接触していた。次回作業をする時は気を付けないと。そもそもケースの側面に、ケーブルを養生テープかマスキングテープで貼り付けておいて、変なところに飛び出ないようにしたほうがいいのかもしれない。

*1: ちなみに、東日本大震災の時は、PCケースが横倒しになった。液晶ディスプレイがPCデスクから落下して、液晶ディスプレイがあったはずの場所にPCケースが倒れこんだ形になった。

2023/12/07(木) [n年前の日記]

#1 [windows] Windows10の環境整備中

昨日、メインPCにWindows10 x64 22H2を再インストールしたので、アレコレをインストール中。

最低限のドライバをインストール :

あらかじめ HDD に残してあった、M/B GIGABYTE B450M S2H rev.1.0用のドライバと、ビデオカード NVIDIA GeForce GTX 1060 6GB用のドライバをインストールしていった。
  1. Chipsetドライバ mb_driver_597_chipset_3.10.22.706.zip をインストール。
  2. LANドライバ mb_driver_542_w10_10.056.0119.2022.zip をインストール。
  3. ビデオカードドライバ 546.17-desktop-win10-win11-64bit-international-dch-whql.exe をインストール。
  4. オーディオドライバ mb_driver_audio_realtek_6.0.9373.1.zip をインストール。

以前は、Realtek のオーディオドライバをインストールしようとした際、問題が起きた記憶があるのだけど…。

Realtekのオーディオドライバのインストーラは、既に入っているオーディオドライバをアンインストールしてからOSの再起動をして、そこでようやく新しいドライバをインストールしようとするのだけれど。OSを再起動すると、OSが持っているオーディオドライバが次回また読み込まれてしまって、Realtekのインストーラは「おや? オーディオドライバがあるぞ? これはアンインストールせねば」と、また古いドライバのアンインストール処理を始めて…。延々と、オーディオドライバのアンインストール、OS再起動、ドライバアンインストール、OS再起動、を繰り返していた記憶が…。

ただ、今回は、そういった変な状態にはならず、再起動後にすんなり処理が終わってくれた。

ドキュメントフォルダ等の移動 :

自分の環境は、ドキュメントフォルダやダウンロードフォルダ等を、C:\Users\ACCOUNTNAME\ 以下ではなく、D:\ 以下にしているので、そのあたり移動しないといけない。ただ、今まで使っていた D:\ の中でも、ドキュメントフォルダがドキュメントフォルダらしく認識されてしまっていて…。

とりあえず、別フォルダを作成して、今まで使ってた D:\ 内のドキュメントフォルダの中身を全部移動させてから、削除しようと試みた。所有者を、今回Windows10をインストールした際に設定したユーザに変更しておかないと、そのあたりの作業ができなかった。エクスプローラで該当フォルダを右クリック → プロパティ → セキュリティ → 詳細設定 → 所有者を変更、だっただろうか…。たしかそんな感じ。

ドキュメントフォルダやダウンロードフォルダの移動は、今現在の各フォルダを右クリック → プロパティ → 場所、を選んで、任意のフォルダを指定して「移動」、で行った気がする。

アプリを色々インストール :

2020/12頃に、Windows10の再インストール作業をしていたので、その頃のメモを頼りにしつつアレコレをインストールする予定。

_mieki256's diary - Windows10が起動しなくなった。
_mieki256's diary - Windows10の復旧中
_mieki256's diary - Windows10が起動しなくなったのでPerlを再インストール
_mieki256's diary - Windows10復旧作業中
_mieki256's diary - Windows10の復旧作業中

今回は、仮想CDドライブ関連のソフト、Alcohol 52% FE(Free Edition) や ImgDrive はインストールしないことを自分の中で肝に銘じておきたい…。このあたりをインストールすると、sptd2.sys (sptd.sys) というドライバがインストールされるのだけど、このドライバがWindows10の動作を不安定にさせてしまうのではないかと疑っているので…。このドライバ、後からアンインストールできないのだよな…。アンインストールを試みると、OSが起動しない状態になってしまう…。

環境変数を設定 :

ファイラーあふと、xyzzy だけでも動くように、環境変数を設定しておいた。環境変数の変更には、Rapid Environment Editor 9.2 build 937 を使用。

この Rapid Environment Editor、何故か起動するとエラーが出てしまうのだけど。上のほうにある、「情報の表示/非表示」をクリックして、下のほうに情報が表示されないようにしておくとエラーが出ないことに気づいた。

また、インストールしたフォルダに、rapidee.ini というファイルを作っておくと、ポータブルアプリとして動作してくれるらしい。

Webブラウザをインストール :

Firefox 120.0.0、GoogleChrome、Vivaldi をインストールしておいた。

Firefox の Profilesフォルダは丸々バックアップをしておいたので、新規インストールした環境で中身を上書きしたら、以前と同じような設定状況で動作してくれた。

CapsLockをCtrlにした :

CapsLock を Ctrl にした。Change key 1.50 を使用。

_「Change Key」非常駐型でフリーのキー配置変更ソフト - 窓の杜

管理者権限で実行しないと反映されないので注意。

今回は以下の設定にしておいた。
  • CapsLock → Ctrl
  • ScrollLock → CapsLock
これはこれで、ScrollLockキーを使おうとする時に困るけれど…。 *1 ScrollLockキーをどうしても使いたいときはソフトウェアキーボード(スクリーンキーボード)でどうにか誤魔化すことにする。

ググってみたら、今時は PowerToys を使っても、この手の変更はできるらしい。

*1: 例えば FL Studio などは ScrollLock キーを使ったりする。あるいは何かのゲームでも使ってたような記憶があるけど、タイトルを忘れた…。

#2 [windows][perl] Windows10にPerlをインストール

再インストールしたばかりの Windows10 x64 22H2 に、Strawverry Perl と ActivePerl をインストールしておいた。以前のメモに従って作業。

_mieki256's diary - Windows10が起動しなくなったのでPerlを再インストール

Strawverry Perl は、現行版らしい 5.38.0.1 をインストール。かつ、ポータブル版もインストールしておいた。以下の版を、D:\Perls\ 以下にインストール。
D:\Perls\aperl5.28.1.0000-x64-61d1e9f2\
D:\Perls\aperl5.8.9.827-x86-291969\
D:\Perls\strawberry\5.18.4.1-x64-portable\
D:\Perls\strawberry\5.38.0.1-x64\
D:\Perls\strawberry\5.38.0.1-x64-portable\

Win32::Clipboard もインストールしておいた。
cpan install Win32::Clipboard

2023/12/08追記 :

strawberry-perl-5.38.0.1-64bit.msi をインストールしていたけれど、使ってみたら妙な警告が表示されることに気づいた。

_Locale 'Korean_Korea.949' is unsupported, and may crash the interpreter. with perl 5.38.0.1 - Issue #119 - StrawberryPerl/Perl-Dist-Strawberry

>perl -v
Locale 'Japanese_Japan.932' is unsupported, and may crash the interpreter.

This is perl 5, version 38, subversion 0 (v5.38.0) built for MSWin32-x64-multi-thread

解決策がよく分からないので、5.38.0.1 64bit をアンインストールして、今まで使っていた 5.32.1.1 64bit (strawberry-perl-5.32.1.1-64bit.msi) をインストールし直した。

後々、IISの動作確認のために、HTML::Template も必要になりそう。以下でインストール。
cpan install HTML::Template

#3 [windows][python] Windows10にPythonをインストール

再インストールしたばかりの Windows10 x64 22H2 に Python をインストールしておいた。今回は D:\Python\ 以下に複数のバージョンをインストールしておく。
D:\Python\Python24
D:\Python\Python25
D:\Python\Python26
D:\Python\Python27
D:\Python\Python39-64
D:\Python\Python310-64

切り替えは、py.exe でやれそうな気もするけれど…。
> py -2.4 -V
Python 2.4.4

> py -2.5 --version
Python 2.5.4

> py -2.6 --version
Python 2.6.6

> py -2.7 --version
Python 2.7.18

> py -3.9 --version
Python 3.9.13

> py -3.10 --version
Python 3.10.10

手元の環境では pych.bat という batファイルを作って、環境変数 PATH の最初に各バージョンの Python のインストールフォルダを追加することでどうにかする場面が多かったりする。

モジュールのインストール :

モジュール(ライブラリパッケージ)もインストールしないと…。

あらかじめ以前の環境で以下を打って、各バージョンごとに一覧ファイルは作っておいた。
python -m pip freeze > requirements.txt

これを以下のように指定してやれば、一気にインストールしてくれる。
python -m pip install -r requirements.txt

けれど、その前にいくつか作業しておかないといけない。pip をアップデートしておくこと。加えて、setupttols や wheel をインストールしておくこと。特に wheel をインストールしておかないと、前述の作業時に、大量に警告が出る…。
python -m pip install pip -U
python -m pip install setuptools
python -m pip install wheel


更に、自分の環境のみの注意点をメモ。

Python 2.6、Python 2.7 用の pycairo 等は、pygtk-all-in-one を事前にインストールすることでインストールしておくこと。pip 経由ではインストールできない。
pygtk-all-in-one-2.24.2.win32-py2.6.msi
pygtk-all-in-one-2.24.2.win32-py2.7.msi

pygtk-all-in-one は、以下から入手できる。そのままクリックするとブラウザで内容が開かれてしまうので、右クリックしてリンクを保存を選ぶこと。

_Index of /binaries/win32/pygtk/2.24/


また、Python 2.7 には pywin32 もインストールしたけれど、pywin32-228.win32-py2.7.exe を入手して、実行してインストールした。

_Release Release 228 - mhammond/pywin32


Python 2.7用の wxPython は、wxPython-4.1.0-cp27-cp27m-win32.whl を使ってインストールした。


更に、PyOpenGL、PyOpenGL_accelerate については、必要なDLLが同梱済みの非公式版を入手してインストールした。
PyOpenGL-3.1.5-cp27-cp27m-win32.whl
PyOpenGL-3.1.6-cp39-cp39-win_amd64.whl
PyOpenGL-3.1.6-cp310-cp310-win_amd64.whl
PyOpenGL_accelerate-3.1.5-cp27-cp27m-win32.whl
PyOpenGL_accelerate-3.1.6-cp39-cp39-win_amd64.whl
PyOpenGL_accelerate-3.1.6-cp310-cp310-win_amd64.whl

_Archived: Python Extension Packages for Windows - Christoph Gohlke

ビルドツールのインストール :

モジュールをインストールしていく際に「ビルドするにはVisual C++が必要だよ」的なメッセージが表示されたので、よく分からないまま、Pythonのモジュールをビルドするためのツールまでインストールしてしまった。まあ、実際にはビルドする必要はなくて、.whl や .exe を入手してインストールすれば済んだのだけど、一応インストールしたビルド関連ツールについてメモ。

今回は以下の2つをインストールした。
  • Build Tools for Visual Studio 2019 (Visual Studio Build Tools 2019)
  • Microsoft Visual C++ Compiler for Python2.7

前者は以下を参考にして作業。

_python pip実行時に「error: Microsoft Visual C++ 14.0 is required. Get it with “Build Tools for Visual Studio”」が発生した場合の対処法 | mebee
_【python】pip installの際に「Microsoft Visual C++ 14.0 is required」が発生した場合の対応方法|Python Tech
_pip installしようとしたら"exit code1"、"Microsoft Visual C++ 14.0 is required"と表示された(Annoyの場合) #Python - Qiita

vs_buildtools__b5639786a9604ed4b9eafce75841bcf1.exe を入手して実行すると、Visual Studio Installer がインストールされて、そこから更に「C++によるデスクトップ開発」と「MSVC v140」にチェックを入れてインストールすることになった。

後者、Microsoft Visual C++ Compiler for Python2.7 は、Python 2.7 時代にモジュールをビルドするためのツール群らしいのだけど…。Python 2.7 はもうサポート終了しているせいか、Microsoftサイトの入手先は404になっていた。ただ、以下のやり取りの中で、Web Archive に残っているという話を見かけたので、そこから入手。ファイル名は VCForPython27.msi だった。

_c++ - Microsoft Compilers for Python 2.7..can't download it, what higher version should I use? - Stack Overflow

2023/12/08(金) [n年前の日記]

#1 [windows][ruby] Windows10にRubyをインストールした

Windows10 x64 22H2を再インストールしたので、Ruby もインストールし直した。

以下のバージョンをインストールしていった。DXRuby を動かしたいので、全部 32bit版にした。
今回は以下のフォルダにインストールした。
D:\Ruby\Ruby187p330mswin32\
D:\Ruby\Ruby187p330mingw32\
D:\Ruby\Ruby193-x86\
D:\Ruby\Ruby23-x86\
D:\Ruby\Ruby26-x86\
D:\Ruby\Ruby30-x86\
D:\Ruby\Ruby32-x86\

各バージョンにインストールしていたパッケージを再インストールしないといけない。以前の環境で、gem list > list.txt といった感じで一覧だけは残しておいたので、手作業で一つ一つインストールしていったけど…。コレって一気に指定してインストールできないのだろうか? bundler なるものを使うのだろうか? でも、bundler ってカレントディレクトリにインストールされちゃうのでは…?

gemをアップデート :

Ruby 2.3.3 は gem のアップデートが必要。今回は rubygems-update-3.2.25.gem をインストールした気がする。

_mieki256's diary - Windows10上で Ruby 2.3.3 をインストールしようとして少しハマった

rubygems-3.2.25.zip は、以下のURLでもダウンロードできそう。

_https://rubygems.org/rubygems/rubygems-3.2.25.zip


Ruby 2.6 以降については、gem update --system で gem をアップデートできた。

作業した際の注意点 :

Ruby 1.9.3 x86-mingw32 に cairo や gtk2 関連のパッケージをインストールする時は、手元に特定バージョンの .gem をダウンロードしておいて、ローカルファイルからインストールするようにしないと、余計なビルドをしようとして失敗する。

_mieki256's diary - Ruby 1.9.3 x86 でruby-gtk2を動かしてみたい


Ruby 3.2.2 x86-mingw32 に DXRuby をインストールする時は、gem install dxruby だけでは dxruby.so が入ってなくて動かないので、gem install dxruby をした後、自分でビルドして作った dxruby.so を所定の場所 (Ruby 3.2.2インストールフォルダ/lib/ruby/site_ruby/3.2.0/i386-msvcrt/ ) にコピーする。

_mieki256's diary - Ruby 3.2.2 x86 上で DXRuby を動かせるか試してみた

DirectX 9.0をインストール :

DXRuby を Windows10 で動かすためには DirectX 9.0 が必要なので、DirectX 9.0 (DirectX Redist (June 2010), directx_Jun2010_redist.exe) をインストールする。

_Windows10では、DXRubyを動かすのに d3dx9_40.dllが必要 - Issue #3 - mirichi/dxruby

d3dx9_40.dll だけ抽出してコピーする方法が紹介されているけれど、今回はまるっとインストールしてしまうことにした。directx_Jun2010_redist.exe を実行すると解凍場所を尋ねてくるので、任意の場所を指定して解凍。その中の、DXSETUP.exe を実行してインストールした。

複数バージョンの切り替え :

Ruby の複数バージョンの切り替えについては、uru 0.8.5 か pik 0.2.8 を使う。

_jonforums / uru - Bitbucket
_jonforums / uru / wiki / Downloads - Bitbucket

_Releases - vertiginous/pik
_Downloads - vertiginous/pik - GitHub (WebArchive)

今回は以下にインストールした。
D:\Ruby\Tools\pik\
D:\Ruby\Tools\uru\


Ruby 1.8.7 (mingw32|mswin32) を uru に登録できなくてハマった。環境変数 RUBYOPT に -Eutf8 が指定されていたのが原因だった。Ruby 1.8.7 に -Eutf8 というオプションを渡して実行するとエラーになるので…。RUBYOPT を __RUBYOPT にして誤魔化したら uru に登録することができた。

#2 [windows] Windows10でIISを有効化した

Windows10 x64 22H2を再インストールしたので、IISを有効化した。この日記ページをローカル環境で表示して確認するために必要なので…。

以前の作業メモに従って作業。

_mieki256's diary - Windows10上のIISを設定していたり
_mieki256's diary - Windows10 + IIS上で日記ページのプレビューができるか試したり


IIS有効後、設定をしていかないといけないのだけど。IISの構成は、数日前にバックアップしてあったので、ソレを利用した。

_mieki256's diary - IISの構成のバックアップをしておいた

管理者権限でDOS窓を開いて、以下を実行。現在の構成をバックアップしておく。
cd C:\Windows\\system32\inetsrv
C:\Windows\\system32\inetsrv\appcmd add backup

C:\Windows\System32\inetsrv\ の中に backup というフォルダが作成された。先日バックアップしておいたフォルダを、backup の中にコピー。

以下を打って、設定を復元。
C:\Windows\system32\inetsrv\appcmd restore backup バックアップしていたフォルダ名

一応念のために、IISを再起動。以前のサイト構成が再現された。

Perlの場所が変わったので設定し直し :

サイト構成は復元されたし、html は表示できたけど、Perlを使った cgi が動かなかった。

Strawberry Perl のインストール場所が変わったので、Perl.exe の場所を変更しなおさないといけない。
  • IISマネージャーを起動。
  • 左側のペインで、コンピュータ名をクリックして選択。
  • 真ん中のペインで、「ハンドラー マッピング」をダブルクリック。
  • 一覧の中の 「CGI」や「PL」をダブルクリック。編集ダイアログが開く。
  • 要求パスに「*.cgi」、実行可能ファイルに「"(perl.exeの場所)" "%s" %s」を指定。
  • 要求パスに「*.pl」、実行可能ファイルに「"(perl.exeの場所)" "%s" %s」を指定。

動作確認用cgiが使うモジュールをインストール :

Strawberry Perlで、動作確認用 cgi が使うモジュール(ライブラリ?)をインストールした。何のモジュールを使っているのか完全に忘れていて、ソースを確認して把握した…。
cpan install HTML::Template

念のためにメモ。自分の環境の場合、D:\inetpub\wwwroot\ の中にトップページを入れてある。http://localhost/ でIISが提供しているサイトにアクセスできる。

2023/12/09() [n年前の日記]

#1 [pc][windows][nitijyou] USBメモリその他を購入

DCMホーマックで、USBメモリその他を購入してきた。

USBメモリ購入の経緯 :

Windows10 x64 22H2の回復ドライブをUSBメモリに作成したい。

一応、手持ちのUSB3.0接続USBメモリ(16GB)に作ってみたら、USB2.0ポートに差しても正常認識してくれなかった。これでは実際に使おうとした時に事故が起きそう。ここはUSB2.0接続のUSBメモリを入手して、そちらに回復ドライブを作っておいたほうがいいのかもしれない。

また、自分の環境では、32GBのUSBメモリで回復ドライブを作ろうとすると「このUSBメモリでは作れない」と文句を言われたことがあって。16GBのUSBメモリならフツーに作れる。何故そんなことになるのか分からないけど、自分の環境の場合は 16GB のUSBメモリに作っておいたほうがいいのだろうなと。

そんなわけで、先日ケーズデンキに寄って、USB2.0、16GB のUSBメモリを探したのだけど、運が悪いのか、それともずっと入荷してないのか分からないけど品切れ状態。それ以来あちこちの店を覗いて探してたのけど、DCMホーマックで見つけたので購入してみた次第。

一応、H2testw 1.4 を使って容量が偽装されてないか調べてみた。

_「H2testw」で容量偽装をチェック!あなたの使っているUSBメモリやSDカードは大丈夫?

Test finished without errors.
You can now delete the test files *.h2w or verify them again.
Writing speed: 6.99 MByte/s
Reading speed: 33.9 MByte/s
H2testw v1.4
「without errors」と言っているから問題無さそう。容量は偽装されてないっぽい。たぶん。

ボタンつけ糸購入の経緯 :

手持ちのソーイングセットに入ってた、ボタンつけ糸の残りがほとんど無くなって困っていた。100円ショップを覗いてみても、なかなかそれっぽいのが売ってなくて。

DCMホーマックの手芸コーナーを覗いてみたらようやく見つけたので購入。レシートには、七色巻きボタンつけ糸(ナナショクマキボタンツケイト)、と書いてある。ヤギコーポレーション(株)、日本製、ポリエステル100%、5m x 7色。

#2 [windows][pc] ThunderbirdからYahoo.comのメールにアクセス

Windows10のメールに Yahoo.com のメールアカウントを設定しようと思ったのだけど、何故か上手くいかなくて。Thunderbird ならどうかなと思えてきたので試してみた。

以下で設定方法が説明されてた。今回は imap で設定。

_Thunderbird and Yahoo | Thunderbird ヘルプ

設定する際、Yahoo.com のページが開いて、パスワードの入力を求められたけど、Webブラウザで Yahoo.com にログインしっぱなしだったせいか、認証に失敗した。Webブラウザ上で一旦サインアウトした状態で試したら、Thunderbird からもログイン(サインイン)することができた。

一応アクセスできているように見える。しばらくはこれで利用しよう…。

メールが届かない :

自宅サーバから Yahoo.com のメールアドレス宛に送信したメールが届かない。「届かなかったよ」的なメールすら、メールサーバから返ってこない。spamフォルダにも入ってない。こちらから送信したメールが、ただ虚空に消えていく。

逆方向で ―― Yahoo.com のメールアカウントから、自宅サーバのメールアドレス宛にメールを送信すると、それはちゃんと受信できる。しかし、その届いたメールに返信すると、これがまた届かない。やっぱりメールが虚空に消える。

Yaho.com から、Yahoo.com の自分のメールアドレスに送信すると、それは受信できた。

Yahoo.com から yahoo.co.jp のメールアドレスに送信すると、それも受信できた。そのメールに返信すると、Yahoo.com 側で受信もできた。

とにかく、自宅サーバ側から送ったメールが、Yahoo.com のメールアドレスに届かないようだなと…。

Googleが以前導入した迷惑メール対策(SPFレコード云々)と同じ何かを、 Yahoo.com も設定してあるのかもしれない。ただ、Google と違って、「そのメールサーバから送信されたメールは受信できないよ」と知らせることすらしない設定なのかも。

2023/12/10() [n年前の日記]

#1 [windows][cg_tools] rsvg-convertについて

Windows10 x64 22H2 + XnView Classic 2.51.5 (x86)で SVG を表示しようとした場合、CAD Image DLL (CADImage.dll) を使って描画しようとするけれど。このDLLは有償DLLなので、画面の真ん中に「ちゃんとした画像が見たければ買え」的なメッセージが表示されてしまう。

rsvg-convert という、SVG を png に変換できるコマンドラインツールを導入すれば、それらしい画像が表示されるので導入してみることにした。もっとも、毎回一々 SVG が png に変換されてしまうけれど…。

_The Best Windows Photo Viewer, Image Resizer and Batch Converter - XnView
_How do I open SVG files and convert to PNG - XnView Software
_SVG support via rsvg-convert.exe - XnView Software


ちなみに、XnView Classic ではなく、XnViewMP ならネイティブにSVGに対応してるらしいので、SVG を扱う時だけそちらを使ってもいい。ただし、デフォルトでは SVG の表示は除外されているので、ファイルリスト設定の中から、svg と svgz の記述を削除する必要がある。

_Powerful Image Viewer・ XnView MP | XnView.com

rsvg-convertの入手とインストール :

XnView Classic で使える rsvg-convert は、rsvg-convert-dll-2.40.16.7z。.exe と .dll が分かれているタイプ。以下から入手できる。

_The Moluccas - Browse Files at SourceForge.net
_Open Source Software and Windows 32-bit: RSVG-Convert SVG image conversion tool (WebArchive)

rsvg-convert-dll-2.40.16.7z を解凍すると、以下のファイルが入ってる。
etc/
fonts/
libcairo-gobject-2.dll
libffi-6.dll
libfontconfig-1.dll
libfreetype-6.dll
libgdk_pixbuf-2.0-0.dll
libgio-2.0-0.dll
libglib-2.0-0.dll
libgmodule-2.0-0.dll
libgobject-2.0-0.dll
libgthread-2.0-0.dll
libharfbuzz-0.dll
libintl-8.dll
libjasper-1.dll
libjpeg-8.dll
libpango-1.0-0.dll
libpangocairo-1.0-0.dll
libpangoft2-1.0-0.dll
libpangowin32-1.0-0.dll
libpng16-16.dll
librsvg-2-2.dll
libtiff-5.dll
libwebp-5.dll
libwinpthread-1.dll
libxmlxpat.dll
libzzz.dll
msvcr100.dll
rsvg-convert.exe

この全ファイルを、(XnView Classicインストールフォルダ)\PlugIns\ の中にコピーする。

もし、PlugIns\ の中に CADImage.dll が存在していたら、そちらが優先されて使われてしまうので、例えば CADImage.dll.orig にでもリネームしておく。

XnView Classic を起動したら、設定を変更。ツール → オプション → 全般 → 操作 → すべてのファイル形式を使用、にチェックを入れて有効化。

これで SVG が比較的真っ当に閲覧できるようになるはず。ただ、SVG を表示するために、毎回 rsvg-convert が呼び出されて png に変換されるので、一瞬DOS窓が開いてすぐ閉じるのがちょっと鬱陶しいかもしれない。

ちなみに、rsvg-convert-2.40.20.7z を入手すれば、中に rsvg-convert.exe が単体で入っているので、コマンドライン上で使って SVG から png に変換したいなら、そちらの版を使ったほうが楽かもしれない。

#2 [windows] Windows10の回復ドライブを作っておいた

昨日購入したUSBメモリ、KIOXIA TransMemory U202 KUC-2A016G (USB2.0、16GB。キャップ式) に、Windows10 x64 22H2 の回復ドライブを作っておいた。とメモ。1時間半ぐらいかかっただろうか。16GB(エクスプローラの表示では14GB)中、8GBぐらい使っている状態。残り6GBと表示されている。

メインPCのUSB2.0ポートに差して、BIOS起動時にメニューを出して、USBメモリの回復ドライブから起動できることも確認できた。 *1
*1: M/B, GIGABYTE B450M S2H rev. 1.x の場合、F12で起動デバイスを選ぶメニューが出る。

#3 [pc] USBメモリの速度を測定しておいた

CrystalDiskMark 8.0.4c を使って、昨日購入したUSBメモリ、KIOXIA TransMemory U202 KUC-2A016G (USB2.0、16GB。キャップ式) の速度を測定してみた。

------------------------------------------------------------------------------
CrystalDiskMark 8.0.4 x64 (C) 2007-2021 hiyohiyo
                                  Crystal Dew World: https://crystalmark.info/
------------------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

[Read]
  SEQ    1MiB (Q=  8, T= 1):    35.837 MB/s [     34.2 IOPS] <227855.83 us>
  SEQ    1MiB (Q=  1, T= 1):    35.615 MB/s [     34.0 IOPS] < 29274.84 us>
  RND    4KiB (Q= 32, T= 1):     8.294 MB/s [   2024.9 IOPS] < 15767.74 us>
  RND    4KiB (Q=  1, T= 1):     7.588 MB/s [   1852.5 IOPS] <   539.52 us>

[Write]
  SEQ    1MiB (Q=  8, T= 1):    14.881 MB/s [     14.2 IOPS] <528011.46 us>
  SEQ    1MiB (Q=  1, T= 1):    15.296 MB/s [     14.6 IOPS] < 68429.21 us>
  RND    4KiB (Q= 32, T= 1):     0.012 MB/s [      2.9 IOPS] <2502246.59 us>
  RND    4KiB (Q=  1, T= 1):     0.012 MB/s [      2.9 IOPS] <292273.72 us>

Profile: Default
   Test: 1 GiB (x5) [E: 57% (8/14GiB)]
   Mode: [Admin]
   Time: Measure 5 sec / Interval 5 sec 
   Date: 2023/12/10 6:47:05
     OS: Windows 10 Professional [10.0 Build 19045] (x64)
Comment: KIOXIA TransMemory U202 KUC-2A016GW (USB2.0,16GB)

kioxia_u202_kuc-2a016gw_usb2_0_16gb_20231210_02.png


ランダム書き込みがとんでもなく遅い気がする。でもまあ、KIOXIAのUSBメモリは、読み込みはフツーだけど、書き込みがめちゃくちゃ遅いとの評を見かけたので、これも妥当な結果だろうか。

そもそも、USB2.0接続をしている時点で、使う側も速度は求めてないだろうから、この程度の速度で十分な気もする。今の御時勢、速度が欲しかったらUSB接続のSSDを入手して使うだろうし。

2023/12/11(月) [n年前の日記]

#1 [windows] iP4600用プリンタドライバをWindows10にインストールした

Windows10 x64 22H2 を再インストールしたので、手持ちのプリンタ Canon iP4600用のプリンタドライバもインストールした。

注意点は以下。
共有プリンタ名は「iP4600」にしておいた。

作業を終えた後で、以前インストールした際にメモを残してあったことを思い出した…。メモを見ながら作業するべきだった…。

_mieki256's diary - Windows10にiP4600のプリンタドライバをインストール


Windows10のネットワークプロファイルを、「プライベート」にしておくことも忘れずに。「プライベート」=LAN内のPC、ということらしいので。

_mieki256's diary - LinuxからWindowsの共有プリンタを使いたかった

クライアントPCに共有プリンタとして登録できない :

サブPC(Windows10 x64 22H2、PC名: akatsudumi)から、メインPCにUSB接続されている iP4600 を共有プリンタとして利用しようとした。

サブPC上で、iP4600用ドライバ(Windows8.1 64bit版ドライバ)をインストール後、コントロールパネル → デバイスとプリンターの表示 → プリンターの追加、をして iP4600 を追加しようとしたところ、エラーが出た。

  • 本来、プリンターの追加、を選ぶと自動検索が始まるけれど、古いプリンタのせいか出てこない。
  • 「プリンターが一覧にない場合」をクリック。
  • 「共有プリンターを名前で選択する」にチェックを入れて、参照ボタンを押す。
  • メインPC名をクリック → メインPCが共有プリンタとして提供している「iP4600」を選ぶ。
これで、本来なら共有プリンタとして追加されるはずなのだけど、「操作が失敗しました(エラー 0x0000011b)」とエラーが表示されてしまう。

ちなみに、メインPC側(プリントサーバ機)で、SMB 1.0/CIFSクライアント、SMB 1.0/CIFSサーバー、は有効にしてある。

エラーコードでググったところ、どうやら Windows Update の影響がまだ残っているらしいなと…。一時期、Windows Update のせいで、共有プリンタが使えなくなる状況が半年以上続いていたので…。

_mieki256's diary - WindowsUpdateのせいで共有プリンタから印刷できなくなっていた
_mieki256's diary - 共有プリンタから印刷できない件についてまだ調べてる
_mieki256's diary - 某所に行ってきた
_KB5005565に印刷ができなくなる不具合。対処方法あり [Update 2: 脆弱性に影響しない恒久的解決策判明] | ニッチなPCゲーマーの環境構築Z
_CVE-2021-1678 に対するプリンター RPC バインド変更の展開の管理 (KB4599464) - Microsoft サポート
_How to fix the Windows 0x0000011b network printing error


プリントサーバ機(メインPC)上で、レジストリを修正して改善するか試してみた。regedit を起動。以下を探す。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print
  • 右側で、右クリック。新規 → DWORD (32ビット)値、を選ぶ。
  • 名前を、RpcAuthnLevelPrivacyEnabled にする。
  • 右クリックして「修正」。値を「0」にする。
  • 念のため、プリントサーバ機(メインPC)を再起動。

これで、クライアント側(サブPC側)で「プリンターの追加」ができた。テストプリントも成功した。

#2 [movie] 「妖怪大戦争」を視聴

昨日視聴していたことをメモするのを忘れていたのでメモ。BS12で放送されてた。

2005年の実写映画。三池崇史監督作品。子役時代の神木隆之介さんが主演。日本の妖怪が大挙して登場する映画。という説明でいいのだろうか。

日記を検索したら、 _2006/08/11 に、途中から視聴していたらしい。今回は最初から全部見ることができた。

感想は…。うーん。これはどうなんだろうなあ…。みたいな。まあ、色んな芸能人が妖怪になってワラワラと出てくるし、水木しげる先生や荒俣宏先生達を拝むこともできるから、お祭り映画みたいなものと思えば…。ただ、それにしては随分とテンポが悪い感じもした。全てのシーンがだらだらしていてメリハリが全然無いというか…。編集でどんどん切っていけば30分ぐらい短くできるんじゃないか、などと素人ながら思ってしまった。

関連情報をググっていて知ったのだけど、「CASSHERN」が2004年の作品で、製作費6億円。この「妖怪大戦争」が2005年の作品で、製作費13〜15億円。どちらも実写の邦画でありながら、まるでアニメ並みの別世界を描いていたという共通点があるわけで…。大体このあたりの時期から、邦画においてもCGを武器にして、異界の映像をガンガン作れるようになってきたということなのかなと…。

それはそれとして。川姫の太ももがヤバイなと。あのエロさはヤバイ。

2023/12/12(火) [n年前の日記]

#1 [windows] wingetを試用

Windows10 x64 22H2を再インストールしたのでアプリを再インストール中なのだけど。最近の Windows10 には、winget というツールが最初から入っているらしいと知った。これを使うと、DOS窓上からアプリをインストールできる。要は Debian Linux 系の apt みたいなものだろうか。

以下でインストールできるアプリの種類を確認できる。Firefox, GoogleChrome などのWebブラウザも登録されているし、Visual Studio, MobaXterm なども列挙されていた。

_Apps - winstall

これを使って復旧作業をすれば良かったのではなかろうか…。

さておき。今回は、PowerShell 現行版をインストールするのに使ってみた。

_「最新版をインストールせよ」とPowerShell起動時に叱られたときの対処法:Tech TIPS - @IT

winget search Microsoft.PowerShell

winget install --id Microsoft.Powershell --source winget

たしかに、PowerShell 7.4.0.0 がインストールされた。

#2 [windows][pc] Windows10がブルースクリーンになった

Windows10 x64 22H2を再インストールしてから、ブルースクリーンを見ることがなくて、やはり仮想CD/DVDツール(Alcohol 52% Free Edition, ImgDrive)についてきた sptd2.sys が悪さをしていたのかなと思っていたのだけど。

デフラグソフト、Auslogics Disk Defrag 8.0.24.0 インストール版(Portable版ではない)をインストールして、Cドライブ(SSD)をデフラグ。その後しばらく Windows10 を使っていたら、ブルースクリーン(BSOD)になった…。

もしかして、このデフラグソフトでデフラグをかけると、SSDの中身がおかしくなってしまうのでは…。特に今回、わざわざ「SSD最適化」を選んでしまったのだけど、ソレがマズいのでは…。あるいは、このインストーラ版が何かの .sys をインストールしてるのではないか…。それとも、設定で、「VSS互換モード」にチェックを入れて使ったのがマズかったのだろうか…。

とりあえず、アンインストールして、Auslogics Disk Defrag 8.0.24.0 Portable版だけを入れておくことにした。基本的にはHDDのDドライブだけをデフラグする方向で…。

そもそも、SSDはデフラグをかけなくても良い、無駄に寿命を縮める、という話もあるわけで。

2023/12/13(水) [n年前の日記]

#1 [windows][cg_tools] Stable Diffusion web UIを再インストール

Windows10 x64 22H2 上で、Stable Diffusion web UI 1.6.1 を再インストール。github から git を使って入手した。

以前は、SSDに置くと空き容量が無くなりそうで不安だったので、HDDのDドライブにインストールしていたけれど。今回は Windows10 x64 22H2 を再インストールしたばかりだから、Cドライブ(SSD)にまだちょっと空き容量がありそうなので、試しにSSD上に、NVIDIA CUDA toolkit (10.8, 10.6, 10.2, 計10GB) と Stable Diffusion web UI (30GB) をインストールしてみた。

ただ、今まで入手してきた Stable Diffusion web UI のモデルデータだけでも、HDD上では300GB以上あったので、全部SSDには置けない…。必要最小限のモデルデータだけをSSDにコピーして、それ以外はシンボリックリンクでHDD上のファイルがSSD上にもあるように見せかけてる状態。例えば ControlNet用のモデルデータは、全部HDDに置いてあって、フォルダをシンボリックリンクでSSDに置いたりしている。

HDDから読み込んでいた場合と比べると、目に見えて起動が速くなった。この速さを知ってしまうとHDD上に戻せないかもしれない…。でも容量が…。

余談。以前HDDにインストールしたソレは、実行すると妙なメッセージを表示するようになってしまった。

自動でブラウザが起動するのを無効にしたい :

Stable Diffusion web UI を起動すると、自動でデフォルトWebブラウザが ―― 自分の環境の場合 Firefox が起動してしまうのだけど。Firefox で操作すると何か妙な動作をするので、Google Chrome で起動したい。Webブラウザの種類が指定できないなら、せめてWebブラウザの自動起動だけでも無効化したい。

ググってみたら、Stable Diffusion web UI の設定項目を変更することで、ブラウザの自動起動を無効化できるらしい。

Settings → System → Automatically open webui in browser on startup の Disable にチェックを入れる。デフォルトは Local になっている。

_How to auto launch webui in preferred browser - AUTOMATIC1111/stable-diffusion-webui - Discussion #12287

顔の修復機能が見当たらない :

気づいたら、顔の修復機能が見当たらなくなっていた。以前は txt2img に項目があった気がするのだけど。

v1.6.0になって Restore faces の設定方法が変わったらしい。デフォルトでは有効になっていない。

settings → User interface → Quicksettings list → 「face_restoration」「face_restoration_model」「code_former_weight」を追加。これで上のほうに項目が出てくる。

以下、参考ページ。ありがたや。

_【Stable Diffusion】Restore facesで顔を綺麗に修正する方法 | AIイラスト攻略

#2 [pc] Obsidianを使ってみた感想

作業メモを取る際に、今までは Evernote を使っていたけれど、無料ユーザの制限が厳しくなってしまったので、ここ最近は Obsidian という Markdownエディタを試用しながらメモを取っている。環境は Windows10 x64 22H2。Obsidian のバージョンは、1.4.16。

基本的にはイイ感じで使えているのだけど…。Markdown エディタなので、Markdown に起因する問題がちょっとあって…。

例えば、「_」 _(アンダースコア, アンダーバー) を含んだ文字列を貼り付けると、「\_」という記述になって、そのままコピーして別の何かに貼り付けようとした際に面倒なことになる。

これは、Markdown が、「_」を強調のマークに使ってしまっているからなのだけど…。

_Markdown の強調構文で使う「アスタリスク」と「アンダースコア」の違い - Neo's World
_markdown記法で「_」(アンダースコア)を表示させる方法 | たゆまかニュース

一応、Obsidian の右上のほうにある、編集/閲覧の切り替えアイコンをクリックして、閲覧モードにしてからコピーすれば、「\_」は「_」になってコピーされるのだけど。一々切り替えるのがちょっと面倒。何かもうちょっといい手はないものか。

_【メモアプリ】Obsidianのプレビューと編集モード【効率の良い切り替え】 | コトバ日報
_プレビューモードと編集モード - Obsidian 日本語ヘルプ - Obsidian Publish

Ctrl + E で、編集モードと閲覧モードの切り替えができるのだな…。であれば、Ctrl + E を押してモードを切り替えてからテキストを選択して Ctrl + C でコピーして、また Ctrl + E でモードを元に戻す、という操作をすれば、少しは楽になるんだろうか。もっとも、閲覧モードではマウスを使ってテキスト選択するしかないから、そこでショートカットキーを使うのもアレかな…。

#3 [windows] Copilot in Windowsをインストールしてみた

Windows10 x64 22H2上で、Copilot in Windows なるものをインストールしてみた。Windows Update (KB5033372 or KB5032278) でインストールされるから自動でインストールされるも同然ではあるけど。

少し触ってみたものの、画面の右端からウインドウが出てくる時に、それまでデスクトップ上で表示されていたウインドウを押しのけるというか、位置を勝手にずらしてしまうあたりがちょっとアレだなと…。今まで画面の右端に表示していたウインドウ群の表示位置がおかしくなったので、何が起きたのかと悩んでしまった。

これなら Microsoft Edge を起動して、そちらから使ったほうがまだマシな感じがする。タスクバー上のアイコンは消しておいた。タスクバーを右クリックして、チェックを外せば消える。ただ、消した後、項目が消滅して、二度と表示できなくなってしまった…。いいのかなコレ。

2023/12/14(木) [n年前の日記]

#1 [cg_tools] Stable Diffusion web UI + LCM LoRAの動作確認中

せっかく Stable Diffusion web UI を再インストールしたので、高速に画像生成ができるようになるという LCM LoRA を試用してみた。以下の記事でパラメータをどのくらいにすればいいのかが紹介されていたので、それに従って動作確認した。

_【西川和久の不定期コラム】Stable Diffusion高速化の決定版登場!?品質落とさず制限もほぼなしで2〜3倍速に - PC Watch

たしかにそれっぽい画像が、少ない Steps で出力された。凄いな…。

ただ、モデルデータによって状態が違ってくるようで、汎用性が高いと言われる Deliberate をベースにした lyriel_v16.safetensors ではそれっぽい画像が生成されたけれど、美少女が生成されやすいと言われる chilloutmix_.safetensors では、ぼんやりのっぺりとした画像が生成されてしまった。全てのモデルデータで利用できるわけではないのね…。

2023/12/15(金) [n年前の日記]

#1 [cg_tools] Stable Diffusion web UI + LCM LoRAの動作確認中その2

Stable Diffusion web UI + LCM LoRA を試用したけれど、chilloutmix系のモデルデータではそれらしく動かなかったのが残念で、なんとかならないものかなと調べているところ。

chilloutmix_.safetensors、chilloutmix_Ni.safetensors で試してみたけれど、やはり上手く行かないなと…。LoRA のパラメータを 0.3 から 1.0 にしてみたり、steps を 10以上にしてみたり、CFG Scale を3以上にしてみたけれど、やはり妙な結果になってしまう。

別のモデルデータを使ってみたほうがいいのかもしれないな…。

blazingrealdrive_V02h.safetensors というモデルデータを使ったら、結構それっぽい結果が得られた。やはりモデルデータによって使えたり使えなかったりするっぽい。

2023/12/16() [n年前の日記]

#1 [anime][tv] 「プロフェッショナル 仕事の流儀 ジブリと宮崎駿の2399日」を視聴

ブラタモリを見ようとしてNHKをつけたら宮崎駿監督が映っていてビックリした。

高畑宮崎コンビの関係についてがっつり説明してくれる内容で、大変興味深かった。まあ、おじさん世代のアニメオタクなら常識レベルの話ではあるのだけど、おそらく一般の方々は二人の関係についてほぼ知らないんじゃないかと思うので、高畑勲監督の存在って宮崎駿監督にとってはとても大きかったのですよと知ってもらえるだけでも良い感じの構成だったのではないかと思えたわけで。

ナウシカのプロデューサーを高畑監督にお願いした際のあのエピソードを、本田師匠の絵で描いてもらえたのは実に美味しいなと。なんと贅沢な…。

それはそれとして、高畑勲監督も、人としてそれはどうなのよ的エピソードがゴロゴロしてるので、そのあたりをまとめた番組もアリかもしれないなと。あんな顔つきだったけど、修羅とか鬼とかそういうワードがよく似合う監督…。

薪割りカットの意味 :

時折、宮崎監督が薪割りをするカットが挿入されていたけれど、ネットで見かけた言説(?)が面白かったのでメモ。

宮崎駿監督は東映動画に入手したことでアニメーター人生を始めたわけだけど、その東映動画の入社試験で描かされるのが薪割りの動作だったそうで。正確には薪割りじゃなくて杭を打つ動作で、宮崎駿監督の先輩にあたる、故・大塚康生さんが書いた「作画汗まみれ」という本の中でそのあたりが紹介されているのだけど。

何にせよ、薪割りの動作≒アニメーター宮崎駿に最初に与えられたアニメ制作の試練、と捉えると、なかなか興味深い編集をしていたような気がするなと…。時々初心を思い出しながらアニメ制作を続けてきた監督の姿を暗喩しているカット、などと邪推したりできそう。まあ、監督のことだから「ずっと机の前に座って仕事してるから単に体を動かそうと心がけてるだけ」とか言いそうではあるけど。

2023/12/17() [n年前の日記]

#1 [cg_tools] Stable Diffusion web UIを触ってる

Stable Diffusion web UI を使って、年賀状用の画像として龍の画像を生成できないものかなとプロンプトをアレコレ試しているところ。モデルデータは lyriel_v16.safetensors。Deliberateをベースにしたモデルデータなので、汎用性があるらしい。

lyriel モデルデータなら LCM LoRA がそれらしく効いてくれて、GeForec GTX 1060 6GB という、今となっては非力なGPUでも、1枚を10秒ぐらいで生成してくれるので、なんだかんだで300枚以上は生成できたのだけど、どれも何かこう…。入れてほしいものが入ってなかったり、入れなくてもいいものが入っていたりで…。

富士山も入れたいのだけど、何故か2つ以上富士山が出てくるのだよな…。LCM LoRA を使っているせいか、プロンプトの内容に忠実な画像が出てこない感じもあって…。

Bing Image Createrも試用してみた :

Microsoft Bing Image Creater でも画像生成を試してみたけれど、こちらのほうがちゃんとした画像を ―― 何をもって「ちゃんとしてる」と判断すればいいのか分からんけど、比較的こちらの意図を汲んでくれた画像を生成してくれる、ような気がした。Bing Image Creater は DALL-E 3 を使ってるらしいけど、DALL-E 3 って凄いんだな…。

Stable Diffusion web UI はプロンプトに英語しか入力できないけれど、Bing Image Creater は日本語を入力してもそれらしい画像が生成されるので、その点もありがたい。まあ、一旦英語に自動翻訳してから渡してるのかなと想像もするのだけど。

もっとも、例えば「爆発」みたいな単語を入れると生成を拒否されたりする…。おそらくはフェイク画像の類を生成しにくいように色々なNGワードが設定されてるのだろうなと。どんなプロンプトを入れても処理してくれるわけではないので、そういう不自由さはある…。その代わり、結構イイ感じの画像を生成してくれる印象。

2023/12/18(月) [n年前の日記]

#1 [cg_tools] Stable Diffusion web UIをまだ触ってる

Stable Diffusion web UI を使って、年賀状用の画像を生成できないかまだ試してる。どうにもイイ感じの画像が出てこない…。まさしくガチャ…。

#2 [nitijyou] 雪がちょっと積もった

庭に停めてある車の屋根に、そこそこ雪が積もってた。そういう時期か…。

家の裏のバケツにも氷が張っていた。中にメダカを2匹入れてたのだけど、先日一匹死んでいたのを確認済み。さすがにもう一匹もダメだろうなと…。

2023/12/19(火) [n年前の日記]

#1 [cg_tools] Stable Diffusion web UIをまだしつこく触ってる

画像生成AI、Stable Diffusion web UI を触ってる。年賀状用の画像を生成できないか試してたのだけど、同じネタの画像ばかりずっと見ているうちに飽きてきたので、全然別の画像を生成したり、別のモデルデータを試用し始めたりしてしまった。ただ、人体を出そうとすると奇形が出てきてしまうわけで…。

2023/12/20(水) [n年前の日記]

#1 [windows] SyncToyをインストール

Windows10 x64 22H2 に、ファイル同期ツール SyncTot 2.1 x64 をインストールした。SyncToySetupPackage_v21_x64.exe をHDDから発掘して実行。インストール。C:\Program Files\SyncToy 2.1\ にインストールされた。

以前使っていたSSDをUSB接続して、設定ファイルをコピーしてきた。設定ファイルは、C:\Users\(USERNAME)\AppData\Local\Microsoft\SyncToy\ の中にあるらしい。.bin がそれらしいけど、とりあえず他のファイルも一緒にまるまるコピー。

2023/12/21(木) [n年前の日記]

#1 [cg_tools] Stable Diffusion web UIをずるずると触ってる

画像生成AI、Stable Diffusion web UI を使って年賀状用の画像を作れないかまだ試してる。

LCM LoRA を導入したことで、GeForce 1060 6GB という古くてショボいGPUでも、1枚を12秒前後で生成できるようになったので、100枚単位で生成して良さそうな画像がないか眺めてる。生成された画像を IrFanView で見て、良さそうなら次の画像に、ダメそうならDeleteキーを叩く、みたいな感じで選別している。

背景に富士山+朝日が入ってる画像を生成しようとしてるけれど、何故か富士山が2つ3つ出てきたり、朝日の上、空中に富士山があったり…。感覚的に8割ぐらいは、富士山が複数あるか、もしくは入ってないか、変な位置にある画像なので、そこだけを基準に削除していくだけでも画像がほとんど残らない状態になってしまう。

さすがに富士山が複数あるのはどうにかしたい。ググってみたら、ネガティブプロンプトに「multiple xxx」と指定することで複数出さないように指示できる(かもしれない)と知った。

_Stable Diffusionで一人だけを表示する。二人になる、複数人になる場合の対処法について解説 - 禁断のAI

試したところ、たしかにある程度は効果があるようで、100%効くわけではないけれど、今までと比べたら随分とマシになった。

2023/12/22(金) [n年前の日記]

#1 [cg_tools] Stable Diffusion web UIを触ってる

画像生成AI、Stable Diffusion web UI を使って年賀状用の画像を作れないかまだ試してる。

プロンプトを少し変えたら目的のものが出てこなくなって、また出てくる状態にするのに苦労した。並び順を変えてみたり、強さを変えてみたり、文章や単語を変えてみたり。

富士山がまたしても複数出てくるようになってしまった。ネガティブプロンプトが効いてない…。

2023/12/23() [n年前の日記]

#1 [cg_tools] Bing Image Creatorを試用

画像生成AI、Stable Diffusion web UI で画像生成をしていたけれど、どうも欲しい感じの画像が出てこなくて、DALL-E 3 を使っているらしい Bing Image Creator を試しに使ってみているところ。この Bing Image Creator、こちらが期待した画像をかなり的確に汲み取って生成してくれるのが凄いなと…。同じプロンプトを Stable Diffusion web UI に入れても「違う。そうじゃない」的画像しか生成されないわけで…。

2023/12/24() [n年前の日記]

#1 [cg_tools] LibreOfficeで年賀状の裏面を作成中

使えそうな年賀画像が用意できたので、LibreOffice 7.6.4.1 Writer で年賀状の裏面を作成中。

画像を一つ配置するだけではなんだか寂しいので背景に色を付けてみたけど、テスト印刷してみたら端の部分が印刷されなくて、これはなんだか違うなと…。かといって、余白を0cmにすると「印刷範囲外です」と言われてしまうし…。使っている Canon iP4600 は、本来フチ無し印刷も可能なはずなのだけど。

何か装飾を入れたほうがいいかなと、色のついた矩形その他を複数重ねてみたけど、これもなんだか違う…。結局、画像を一つだけ配置した感じに戻してしまった。せめて画像の枠だけでもギザギザさせたり丸みを持たせようか…。いや、それもなんか違うな…。

Stable Diffusion web UI を使って1,000枚以上画像生成して、良さそうな画像を選んでみたつもりだったけど。今頃になって、年賀画像としては合ってない気がしてきた。単体のイラストとしてはそれっぽいのだけど、正月感が欠片も無いというか、おめでたい感じがどこにも無いというか…。まだ Bing Image Creator で生成した画像のほうが、この人頭の中がおめでたいですな感が僅かに混ざっているような気がする。そっちにしておこうかな…。

2023/12/25(月) [n年前の日記]

#1 [nitijyou] 録画用PCのHDDが空き容量が無くなってた

PT1を積んでいる録画用PCのHDDをチェックしたら空き容量が完全に無くなっていて、予約していた番組のいくつかが録画できてなかった…。

悔やんでみたところで今から録画できるわけでもないので、録画に失敗したシリーズは、未見のファイルも含めて全削除して空き容量を確保することにした。

どうせ今後、視聴する時間を捻出できるとも思えないし…。次から次へと新作アニメが放送されて、それらを消化 ―― 見て消しするだけで精一杯。1クールも溜め込んでしまったアニメを今から見てる暇なんて、たぶんもう無いだろう…。そう思うことにして諦めていこうかと。

2023/12/26(火) [n年前の日記]

#1 [windows] comctl32.ocxをインストール

Windows10 x64 22H2上で、HiRuler 1.35 という定規ソフトをインストールしたところ、オプション画面を表示しようとした際に、「comctl32.ocxが無いぞ」と言われてしまった。

どうやら、Visual Basic 5.0 or 6.0 で作られたアプリを動かす際に必要になるファイルのようだなと…。

Vector から、Visual Basic 6.0 SP6 ランタイムファイル 3.40 というファイルをDLしてインストールしてみたのだけど、相変わらず「comctl32.ocxが無い」と言われてしまう。

_Visual Basic 6.0 SP6 ランタイムファイルの詳細情報 : Vector ソフトを探す!


XTRM Runtime 10.1 という、ランタイムファイルをごっそりインストールしてくれるソレをインストールしたら、ようやくエラーが出ない状態になった。

_「XTRM Runtime」VB/VCの各種ランタイムを一括導入 - 窓の杜


ただ、このあたりのプログラムは、どこに何をインストールしてるのか、ちょっと不安なところもあるなと…。C:\Windows\SysWOW64\ ではなくて C:\Windows\System32\ に入れてたりしないか…?

確認してみたら、どっちも入ってるな…。32bit版と64bit版の両方が入ってるのだろうか。ただ、ファイルのタイムスタンプが、2023/12/07。Windows10を再インストールした際に、既に入っていたのだろうか。

#2 [nitijyou] フウン

年賀状の印刷ができたので、犬の散歩のついでに郵便局本局まで行って年賀状を出してこようとしたのだけど。せっかく本局の近くまで行ったところで、不慮の事故により、素手に犬のうんこがついてしまった…。

この状態で年賀状を扱って、万が一年賀状に犬のうんこがついてしまった状態で送ってしまっては大変なことになる。仕方なく引き返すことにした。何のためにあんなところまで行ったのやら…。しかも、素手にうんこがついてる状態で手袋をつけるわけにもいかず。寒空の中、素手を露出した状態で帰ることに。

帰宅して手を洗ってから、再度郵便局に行こうと思ったけれど、もう窓口が閉まっている時間帯になってしまって…。入口に年賀状の投函コーナーがあればいいのだけど、お袋さんの話ではその手のコーナーは窓口があるフロアに設置されているとのこと。悪戯防止でそうなっているのではないか、との話だったけど…。何にせよ、投函コーナーは閉まってしまったシャッターの向こう側にあるはずで…。もういいや、明日にしよう…。

そういえば、今朝は自分のお腹の調子も悪かったし。親父さんも下の事故を起こすしで。偶然ではあろうけど、何故か今日は朝からフウンが重なってる…。なんだかな。

余談。手洗いについて :

余談。手洗い云々で思い出したのでメモ。前にメモした気もするけど…。

コロナウイルスが流行してからというもの、「石鹸つけて15秒+水洗い15秒」の手洗いを心掛けてたりする。これは新聞に載っていた話だけれど…。
  • 水洗いだけを30秒 → 1/100まで菌やウイルスが落ちる。
  • 石鹸をつけて15秒+水洗い15秒 → 1/10000まで菌やウイルスが落ちる。
  • アルコールをつけて5秒 → 1/10000まで菌やウイルスが落ちる。
ホンマかいなとググってみたら、たしかにどこかの大学の研究室で、そういう研究・調査結果が、PDFで公開されていた記憶がある。細かい数値は違うけれど、ざっくり大体そのくらいと言ってしまってもいいだろうと思える数値が列挙されているレポートだった。

一時期、コロナウイルス流行のせいで、アルコールの類が店頭で売り切れになっていたけれど。「アルコールが手に入らなくても大丈夫だよ。石鹸つけて15秒+水洗い15秒でもアルコールと同じ効果が得られるよ」という話として新聞に載っていたわけで。

まあ、今はアルコールの入手も難しくないはずなので、「石鹸15秒+水洗い15秒なんてやってられるかよ」と、アルコールをつけて5秒ほど手をパンパンパンでいいんじゃないかな、という気もする。もっとも、コスト的には石鹸+水洗いのほうが安いだろうけど。

ちなみに、その記事を読んで以来、手洗いだけではなく、風呂に入って頭や体を洗う際も、大体その時間を意識しながら洗ってたりもする。臭いの原因はえてして菌の繁殖だったりするわけだけど、その菌を1/10000まで減らせれば、臭いだって多少は減ってくれるのではないかと期待するわけで…。まあ、どのくらい体の臭いが違ってきたのか、自分ではさっぱり分からないので、実は全然効果がなかったりするのかもしれないけれど。

2023/12/27(水) [n年前の日記]

#1 [linux] Linux Mint機のHDD空き容量が0%になった

手持ちのノートPC(Gateway M-2408j)に入ってる Linux Mint 21.1 x64 のメンテナンスをしていたら、HDDの空き容量が0%になってしまった。

原因を調べたら、バクアップツール timeshift のせいだった。

この timeshift、システムのバックアップを取ってくれるツールなのだけど、Linux Mint が入ってるパーティションは60GBしかないのに、40GBも timeshift が食い潰していた…。これではOS自体がまともに動かない。バックアップ云々どころの話ではない。

仕方ないので、timeshift をアンインストールすることにした。
sudo apt purge timeshift

/timeshift の中にもまだ色々入っていたので、そのあたりも削除しておいた。
cd /timeshift
sudo rm -rf snapshot*

timeshift をアンインストールして、かつ、関連ディレクトリを削除したら、Linux Mint が入ってるパーティションは、60GB中、20GB程度しか使っていない状態になった。

この timeshift、前々から鬱陶しかったのだよな…。PCの動作が異様に遅いなと思ったら、この timeshift がいつの間にか動いていて、ずっとHDDにアクセスしっぱなしだったりしたわけで。

SSDを積んでいて、かつ、空き容量がたっぷりあるPCなら便利なのかもしれんけど、非力なPC、ストレージがHDD、割り当てられたパーティションの容量が少ない場合は、使えないなと…。

ふと気になったけど、HDDとSDカード、どちらのほうがまだ快適なのだろうか。ノートPCの類はSDカードスロットが用意されてる場合も多いので、SDカードのほうがアクセスが速いのであれば、SDカードを差してそこをバックアップ保存先とするのもアリだろうか。いや、どのみちHDDにアクセスしっぱなしになるから、使っていてストレスになるだろうな…。結局、HDDをSSDに換装しないと改善はされないだろう…。

#2 [pc] 親父さんのPCにマイクを追加した

ここ最近、遅まきながら、Google検索、Bing検索、Bingチャット(Copilot?)、Google Bard などで音声入力を使うと結構便利ということが分かってきたので、親父さんが使っているデスクトップPCにもマイクを追加してみることにした。

ちなみに、親父さん用PCはデスクトップPCだから、マイクなんてついてないけれど、お袋さん用PCはノートPCなので、Webカメラとマイクがあらかじめついていて、そちらでは各サービスで音声入力が使えることは確認済み。ノートPCのこういうところは良いよなと。その代わり、カメラの画質は悪いし、マイクの性能もそんなに良くない気もするけれど…。

部屋の中を探したら、使ってないPC用マイクを2つ発見した。

_mieki256's diary - ノートPCにマイクをつけて録音テスト
_mieki256's diary - 目当てのICレコーダを探しに自転車で
_mieki256's diary - 昨日買ってきたマイクは最悪な製品だったらしい


1つは、2010/09頃に購入した ELECOM MS-STM87SV のようだなと…。もう一つは、東京に居た頃、秋葉原のお店で安売りされてたマイク。

親父さんにどちらがいいかと尋ねたら、ELECOMのほうが見た目が良い、とのこと。ELECOM製マイクを使うことになった。

一応、PCに繋いで、Google検索、Bing検索、Bingチャット、Google Bard で音声入力ができることを確認した。ただ、誤認識が多い…。やはりマイクの性能が悪いのかもしれない…。

それにしても、スマホと比べてしまうと、PCは目(カメラ)と耳(マイク)が良くないなと…。そもそもついてなかったり、ついていても性能が悪かったりで…。

#3 [nitijyou] 年賀状を出してきた

郵便局本局まで行って年賀状を出してきた。

お袋さんが言っていたように、窓口のあるフロア(?)に年賀状を入れる箱があった。窓口業務が終わってシャッターが閉まると投函できないのだな…。いやまあ、郵便局の前にあるポストに投函すれば済むのかもしれないけど、回収時刻が不安で…。

箱は、県内と県外で分けて入れるようになっていた。市内と市外じゃないのだな…。市内外なら、本局の中だけで、市内宛の年賀状を割り振りできそうな気もするけれど、県内外で分けたほうが都合がいい仕組みになっているのだろう…。

ロキソニンSを購入 :

帰りにツルハドラッグによって、痛み止めのロキソニンSが売ってないか店員さんに尋ねてみたけれど。「調剤師が居る店舗じゃないと売ってない」「須賀川市内の店舗では売ってない」「郡山の安積店じゃないと買えない」との返事。さすがにそれは遠い…。結局、調剤師さんが居る、国道4号線沿いのカワチまで足を延ばして、そこでロキソニンSを購入してきた。

2023/12/28(木) [n年前の日記]

#1 [prog] MinGWを再インストールした

Windows10 x64 22H2を再インストールしたので、MinGW も再インストールしてみた。

MinGW というのは、Windows上で gcc/g++ というCコンパイラ/C++コンパイラを動かせるようにするツール群。これを使えば C/C++でプログラムを書いて、Windowsの実行形式の exeファイルを作れる。

もっとも、MinGW は32bit版までの対応なので、今時は64bit版にも対応している MSYS2 が使われることが多い。また、Microsoft も Visual Studio Community を配布してくれているので、個人が学習用にC/C++コンパイラを入手したいならそちらを使うのもアリだけど。

さておき。MinGW は OSDN というサイトからパッケージ群をダウンロードしてインストールしていくのだけど、OSDN はとある企業に買収されてからずっと不安定な状態なので、インストールできるかどうか不安だった。ただ、今回試したところ、何度も接続エラーは出たものの、一応パッケージをダウンロードできたし、インストールもできたように見えた。

もっとも、SourceForge からダウンロードしてインストールするほうが確実かもしれない。各パッケージの日付は SourceForge のほうが古いけど…。

_MinGW - Minimalist GNU for Windows download | SourceForge.net
_MinGW - Minimalist GNU for Windows - Browse /Installer at SourceForge.net

mingw-get-setup.exe をDLして実行すれば、どこにインストールするか尋ねてくる。

ライブラリを追加 :

MinGW を使って、OpenGLを使ったプログラムも作ってみたい。OpenGL関係のライブラリ、freeglut, GLFW, GLEW も追加しておいた。

_The freeglut Project :: About
_freeglut Windows Development Libraries
_Download | GLFW
_GLEW: The OpenGL Extension Wrangler Library

以下のファイルを入手。
  • freeglut-MinGW-3.0.0-1.mp.zip
  • glfw-3.3.9.bin.WIN32.zip
  • glew-2.1.0-win32.zip

インストール方法は、以前メモしてあったので、メモに従って作業。

_mieki256's diary - MinGWでfreeglutを使ってみた
_mieki256's diary - MinGWでGLFWを使えるように環境を整えた

画像ファイルを読み込めるようにするライブラリ、FreeImage もインストールしておく。これは、以前 MinGW をインストールしていたフォルダの中を漁ってコピーしてきた。

_mieki256's diary - FreeImageライブラリをMinGWで使ってみたい

#2 [prog] MSYS2を再インストールした

Windows10 x64 22H2を再インストールしたので、MSYS2 も再インストールすることにした。

_MSYS2

msys2-x86_64-20231026.exe を入手して実行。D:\msys64\ にインストールしておいた。

pacman -Syuu を何度か実行してから、加えて以下をインストール。
pacman -S base-devel
pacman -S msys2-devel
pacman -S mingw-w64-x86_64-toolchain
pacman -S mingw-w64-i686-toolchain
pacman -S git
pacman -S vim
pacman -S mingw-w64-x86_64-autotools
pacman -S mingw-w64-i686-autotools

pacman -S python3 python3-pip
pip install ranger-fm

toolchain をインストールすると、「どれをインストールする?」と尋ねてきて、色々なプログラミング言語をインストールすることができる。その中には ada や fortran や Objective-C も含まれている。以前は除外してインストールしていたのだけれど、面倒臭くなってきて、今回は全部入れてしまうことにした。

以前は MSYS2 32bit版もインストールしていた記憶があるけれど、ググったところ、今現在32bit版は提供されなくなって、64bit版のみになったらしい。

_MSYS2/MinGW-w64 (64bit/32bit) インストール手順 メモ
_News - MSYS2
2020-05-17 - 32-bit MSYS2 no longer actively supported

32-bit mingw-w64 packages are still supported, this is about the POSIX emulation layer, i.e. the runtime, Bash, MinTTY...

After this date, we don't plan on building updated msys-i686 packages nor releasing i686 installers anymore. This is due to increasingly frustrating difficulties with limited 32-bit address space, high penetration of 64-bit systems and Cygwin (our upstream) starting their way to drop 32-bit support as well.
2020/05/07の時点で、「32bit版MSYS2はアクティブにサポートされなくなった」とのこと。

OpenGL関係のライブラリ、freeglut, GLFW, GLEW もインストールしておくことにした。64bit版(x86_64) と 32bit版(i686) の両方をインストールしておいた。
# 64bit版
pacman -S mingw-w64-x86_64-freeglut mingw-w64-x86_64-glfw mingw-w64-x86_64-glew

# 32bit版
pacman -S mingw-w64-i686-freeglut mingw-w64-i686-glfw mingw-w64-i686-glew

2023/12/29(金) [n年前の日記]

#1 [prog] Visual Studio 2019 で GLFW が使えそうか試してみた

Windows10 x64 22H2 + Visual Studio 2019 Community で、NuGet とやらを使って GLFW を利用できる状態にできるのか試してみた。

GLFW というのは、OpenGL を利用しやすくするライブラリ、という説明でいいのだろうか。

_An OpenGL library | GLFW
_床井研究室 - (1) GLFW で OpenGL を使う

参考ページ :

プロジェクト作成手順 :

参考ページの通りに作業していけば GLFW の導入はできるのだけど…。せっかく手元で作業してみたので、自分も手順をメモしておく。

まずは、プロジェクトを新規作成。Visual Studio 2019 Community を起動。「新しいプロジェクトの作成」を選ぶ。

glfw_vs2019_ss01.png


「コンソールアプリ」を選択して、「次へ」。

glfw_vs2019_ss02.png


プロジェクト名と保存場所を指定して、「作成」。

glfw_vs2019_ss03.png


プロジェクトが作成された。

glfw_vs2019_ss04.png


一応、ソリューションの構成を「Release」にしておく。GLFW や GLEW 関連のバイナリファイルは「Debug」用ではなく「Release」用でビルドされているという話をどこかで見かけたので、念のために…。その横の「x86」「x64」は、「x64」(64bit版をビルド)にしておいた。

glfw_vs2019_ss05.png


一旦、この状態で、単なるコンソールアプリとしてビルドできそうなのか試しておく。ビルド → ソリューションのビルド、を選択。もしくは、Ctrl + Shift + B を叩いても良い。

glfw_vs2019_ss06.png


ビルドが始まって、.exe が生成された旨が表示された。

glfw_vs2019_ss07.png


実行は、デバッグ → デバッグなしで開始。もしくは、Ctrl + F5 を叩いてもいいし、F5 だけを叩いてもいい。

glfw_vs2019_ss08.png


DOS窓が開いて、「Hello World!」が表示された。ビルドは成功しているらしい。

glfw_vs2019_ss09.png

出来上がった .exe は、(プロジェクト保存場所)\x64\Release\ の中に保存されている。

NuGetでGLFWをインストール :

NuGet とやらを使って、GLFW をインストールしてみる。

プロジェクト → NuGetパッケージの管理、を選択。ちなみに、何かしらのプロジェクトを開いている状態じゃないと、この項目は選択できないと思う。この NuGetパッケージとやらは、プロジェクトの保存場所にインストールされるので…。

glfw_vs2019_ss10.png


NuGetパッケージマネージャーの画面が開くので、「参照」をクリックしてから、「glfw」と打って検索する。glfw がリストアップされるのでクリックして選択。右側の「インストール」ボタンをクリック。

glfw_vs2019_ss11.png


「インストールしていいか?」的なダイアログが開くので、「OK」をクリック。

glfw_vs2019_ss12.png

これで、glfw関連ファイルが ―― 今回は glfw 3.3.9 が、プロジェクトフォルダ内にインストールされた。(プロジェクトフォルダ)\packages\glfw.3.3.9\ に入っている。

GLFWを使ったソースを書く :

GLFWを使ったソースを書く。今回は以下のページで紹介されてるソースをコピペさせてもらって動作確認してみた。

_GLFW メモ

ビルドする :

Ctrl + Shift + B を叩いてビルドしてみると、以下のようなエラー(リンクエラー)が出てしまった…。

glfw_vs2019_ss13.png


利用するライブラリファイルとして opengl32.lib を追加しないと、こういうエラーが出てしまうらしい。

ソリューションエクスプローラ上で、プロパティのボタンをクリックして、プロパティを表示する。

glfw_vs2019_ss14.png


構成プロパティ → リンカー → 入力、と辿って、追加の依存ファイル、を編集する。右側の小さい下向きのボタンをクリックすると「<編集...>」という項目があるので、ソレをクリック。

glfw_vs2019_ss15.png


「追加の依存ファイル」に、opengl32.lib を追加記入してやる。

glfw_vs2019_ss16.png


あるいは、ソースコードの最初のほうに、「#pragma comment(lib, "opengl32.lib")」と書いてしまってもいい。この記述をすることで、リンカに、「opengl32.lib というライブラリファイルも利用せよ」と指示を出せるらしい。

glfw_vs2019_ss17.png


この状態でビルド(Ctrl + Shift + B)したところ、ビルドが成功した。実行(Ctrl + F5)すると、三角形が描かれた。

glfw_vs2019_ss18.png

余談。glew_static について :

当初、リンカがエラーを出すあたりがよく分からなくて、アレコレ試していたのだけど。NuGet 経由で glfw と glew_static の2つをインストールしたら何故かビルドが通るようになったりしたので、一応そのこともメモしておく。

glfw_vs2019_ss19.png

おそらく、glew_static の中に、glfw をリンクするための関連ファイルも含まれているのかなと想像しているけれど…。

でもまあ、glfw を使うだけなら、前述のとおり、opengl32.lib を追加指定してやるだけで済むので…。

2023/12/30() [n年前の日記]

#1 [prog] MinGWのSourceForge版を再インストールした

先日、Windows10 x64 22H2上で、OSDN配布版の MinGW をインストールしたのだけど。その後やっぱり OSDN が不安定過ぎて必要なパッケージがDLできない状態に遭遇してしまった。さすがにコレは厳しい。

そんなわけで、SourceForge で配布されてる MinGW をインストールし直すことにした。

SourceForge配布版の MinGW はサクサクとDLできて、スンナリとインストールできた。ただ、OSDN版に比べると、各パッケージのバージョンが古い。例えば、Cコンパイラの gcc も以下のような違いがある。
もっとも、フツーに使うなら今時は MSYS2 を選択するだろうし…。自分の場合、スクリーンセーバ用ライブラリを使いたいから MinGW を選んでる感じなので…。MSYS2 でもスクリーンセーバ用ライブラリ (libscrnsave.a, libscrnsavw.a) が使えるなら助かるのだけど…。

#2 [prog] MinGW上でzlibやlibpngをビルドしてみた

Windows10 x64 22H2 + MnGW (gcc 6.3.0) 上で、zlib と libpng をビルドしてみた。

OpenGL には画像ファイルを読み込む機能が無い。だから、png画像ファイルをテクスチャとして利用したい際は、何かしらの画像読み込みライブラリを持ってきてどうにかすることになる。そこで libpng を使って読み込む事例が多いように見えたので、そのあたりを使えるようにしておこうかなと…。

以下のページを参考にして作業させてもらった。ありがたや。

_zlib-1.2.7をMinGWでビルドする - 新・日々録 by TRASH BOX@Eel
_libpng-1.2.49、libpng-1.5.10をMinGWでビルドする - 新・日々録 by TRASH BOX@Eel

zlib のソースと libpng のソースを、以下から入手。

_zlib Home Site
_Index of /fossils
_libpng Home Page
_LIBPNG: PNG reference library - Browse Files at SourceForge.net

今回は、以下の2つのファイルを入手した。それぞれ解凍。
zlib13.zip
libpng-1.6.40.tar.xz

zlibをビルド :

libpng は zlib を使って処理をするので、まず最初に zlib をビルドする必要がある。

解凍したフォルダ内をカレントディレクトリにして、make を実行。MinGW用の Makefile は無いけれど、gcc 用のソレが利用できるらしい。
make -f win32/Makefile.gcc

以下のファイルができるので、MinGW をインストールしたフォルダにコピーする。
zlib1.dll
zconf.h
zlib.h
libz.a
libz.dll.a

それぞれを以下のディレクトリにコピーすればいい。たぶん。
  • .dll は bin/ に。
  • .h は include/ に。
  • .a は lib/ に。

libz.dll.a があるとそちらを優先して使われて動的リンクになるという話を見かけたので、libz.dll.a を libz.dll.a.esc にリネームしておいた。

libpngをビルド :

これも解凍したフォルダの中で make を走らせる。
make -f scripts/makefile.gcc

以下のファイルができるので、MinGW のフォルダにコピー。.h は include/ に。.a は lib/ に。
png.h
pngconf.h
pngdebug.h
pnginfo.h
pnglibconf.h
pngpriv.h
pngstruct.h
libpng.a

ちなみに、gcc で libpng を使ったプログラムをビルドしたい時は、オプションとして -lpng -lz をつけてリンカに指示してやるらしい。-lxxxx と指定すると、自動で頭に lib をつけて、libxxxx をリンクしてくれるそうで。つまり、-lpng -lz は、libpng、libz をリンクせよという指示になる。

zlib自体はパッケージがある :

MinGW の場合、libpng は無いけれど、zlib 自体はパッケージが存在しているっぽい。libz、もしくは zlib という名前で、dev がついているのがソレ。
libz-1.2.11-1-mingw32-dev.tar.xz
zlib-1.2.8-1-mingw32-dev.tar.lzma

ただ、バージョンが古い。一応セキュリティホール云々の話もありそうなので、MinGWインストールフォルダ内の、公式パッケージ版の各ファイルをリネームして、今回ビルドしたファイルをコピーして使うことにした。

libpngを使ったプログラムをビルドできるかテスト :

以下で紹介されているプログラムをコピペさせてもらって、MinGW (gcc 6.3.0)上で libpng を使ったプログラムをビルドできるのか試してみた。

_【C言語】libpngのインストールと使用方法・使用例 | だえうホームページ

_main.c
_input.png

Makefile は以下のような感じ。

_Makefile
png.exe: main.c
    gcc main.c -o png.exe -static -lpng -lz

.PHONY: clean
clean:
    rm -f png.exe
  • main.c から png.exe を作ってる。
  • -lpng -lz を指定して、libpng と libz をリンクせよと指定している。
  • -static をつけて、静的リンク(static link)をしている。
ちなみに Makefile は、行頭のスペースがTAB文字じゃないと動作しないので注意。

make と打ってビルド。png.exe が生成された。

png.exe input.png と打ち込んだら、グレー画像になった _output.png が得られた。今回ビルドした libpng は、それらしく動作してるっぽい。

余談。MSYS2でlibpngをインストール :

MSYS2なら、zlib も libpng もパッケージとして用意されているので、pacman でインストールできる。
pacman -S mingw-w64-x86_64-zlib
pacman -S mingw-w64-i686-zlib

pacman -S mingw-w64-x86_64-libpng
pacman -S mingw-w64-i686-libpng

2023/12/30時点では以下がインストールされた。
mingw64/mingw-w64-x86_64-zlib 1.3-1
mingw32/mingw-w64-i686-zlib 1.3-1 

mingw64/mingw-w64-x86_64-libpng 1.6.40-1
mingw32/mingw-w64-i686-libpng 1.6.40-1

#3 [prog] libpngを使ってOpenGLのテクスチャを用意できるか試した

Windows10 x64 22H2 + MinGW (gcc 6.3.0) 上で、OpenGL を使ってテクスチャを表示したい。OpenGL には画像を読み込む機能が無いので、libpng を使ってpng画像を読み込んで、OpenGL のテクスチャにできるのか試してみた。

以下のページがとても参考になった。ありがたや。

_PNGファイルをOpenGLで扱う話

紹介されてるサンプルプログラムをほとんどそのままコピペさせてもらって、MinGW (gcc 6.3.0) 上でもビルドして動かせるか試してみた。

必要なライブラリ :

今回試すプログラムのビルドには、freeglut、zlib、libpng が必要。

MinGW に freeglut を導入する手順は、以前メモしてあった。

_mieki256's diary - MinGWでfreeglutを使ってみた


zlib と libpng の導入手順は以下。

_mieki256's diary - MinGW上でzlibやlibpngをビルドしてみた

ソース :

ソースと利用画像は以下。前述の参考ページで紹介されてるサンプルとほとんど同じだけど…。

_01_loadpng_draw.c
_texture.png

Makefile の内容は以下。

_Makefile
01_loadpng_draw.exe: 01_loadpng_draw.c Makefile
    gcc 01_loadpng_draw.c -o 01_loadpng_draw.exe -D FREEGLUT_STATIC -lfreeglut_static -lopengl32 -lwinmm -lgdi32 -lpng -lz

.PHONY: clean
clean:
    rm -f *.exe
    rm -f *.o
  • 01_loadpng_draw.c から 01_loadpng_draw.exe を作る。
  • -D FREEGLUT_STATIC -lfreeglut_static と指定して、freeglut を静的リンクする。
  • -lopengl32 -lwinmm -lgdi32 を指定して、opengl32、winmm、gdi32 をリンク。
  • -lpng -lz を指定して、libpng を利用。

実行結果は以下。

ss_01_loadpng_draw.png

ポリゴン(GL_QUADS)にテクスチャ画像を貼り付けることができている。

たしかに、libpng を使って、png画像を読み込んで OpenGL用のテクスチャに変換することができると分かった。

課題 :

ストレージ上に存在するpng画像ファイルを読み込んで、OpenGL でテクスチャ画像として利用することはできる、と分かったけれど。exeファイルにpng画像をバイナリとして含めておいて、それを OpenGL のテクスチャとして利用する、その方法が分からない…。

リソースファイルなるものにpng画像を含めるように記述しておいて、exeファイル中のリソース(png画像)のポインタ(メモリアドレス?)とバイナリサイズを得ることはできそうなのだけど…。libpng は、メモリ上に置いてあるpng画像のバイナリを読み込むことができるのだろうか…?

2023/12/31() [n年前の日記]

#1 [prog] glpngをMinGWでビルドできるか試してみた

OpenGLを利用する際に、テクスチャ画像を読み込むためのライブラリが必要になるけれど、昔は glpng というライブラリがあって、ソレを使うと png画像を読み込めた、という話を見かけたので気になってきた。

_glpng

Windows10 x64 22H2 + MiNGW (gcc 6.3.0)で、その glpng を利用できないか試してみた。

ソースの入手 :

glpng のソースは、まだかろうじて、以下から入手できる模様。昔は他の場所でも配布されていたらしいのだけど…。

_森北出版株式会社刊 「Springs of C」サポートwebページ
_ Stunt Course (WebArchive)
_Index of /pub/OpenBSD/distfiles/glpng-1.45/

glpng.zip を入手して解凍。中に入ってた html を見る限り、バージョンは 1.45 (2000/07/10)らしい。2000年頃のライブラリなのか…。たしかに古い…。

ビルド :

src/ の中に入って、Makefile.LINUX を使ってビルドするのだけど、その前に、.c や .h の改行コードを統一しておいたほうがいいのかもしれない。

MinGW には dos2unix という、改行コードを CRLF から LF に変換するツールがパッケージとして用意されているので、それをインストールして、各フォルダで以下を実行したほうがいいのかも。
dos2unix *.c
dos2unix *.h

make でビルド。
make -f Makefile.LINUX

../lib/ の中に、libglpng.a が作られる。これを MinGW で使える。

必要なのは以下のファイルだろうか。これらを、MinGW インストールフォルダの、include/ や lib/ にコピーする。
GL/glpng.h
libglpng.a

サンプルプログラムをビルド :

Example/ の中にはサンプル Test.c があるので、ビルドして .exe が作れるか試してみた。ビルドには、glut か freeglut が必要。

ただ、Test.c は若干修正が必要らしい。diff の結果を貼っておく。
> diff -u Test.c.orig Test.c
--- Test.c.orig 2023-12-31 01:53:10 +0900
+++ Test.c      2023-12-31 02:17:00 +0900
@@ -6,8 +6,8 @@
  * http://www.wyatt100.freeserve.co.uk/download.htm
  */

-#include <gl/glpng.h>
-#include <gl/glut.h>
+#include <GL/glut.h>
+#include <GL/glpng.h>
 #include <stdlib.h>

 int angle = 0;
@@ -64,10 +64,11 @@

 /***** Main function *****/

-void main() {
+int main(int argc, char** argv) {
        pngInfo info;
        GLuint  texture;

+       glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
        glutInitWindowSize(300, 300);
        glutCreateWindow("glpng test");
@@ -107,4 +108,6 @@
        glutReshapeFunc(Reshape);

        glutMainLoop();
+
+       return EXIT_SUCCESS;
 }

行頭に「-」がついているのが元の記述。「+」がついているのが変更後の記述。
  • 「gl/」は「GL/」に変更。
  • glpng.h, glut.h の順ではなく、glut.h, glpng.h の順で include。
  • void main() は int main(int argc, char** argv) に。
  • glutInit(&argc, argv); を追加。
  • main() の最後で返り値を戻すようにする。

一応、修正後の test.c も置いておく。

_test.c
_stunt.png


Makefile は以下。

_Makefile
Test.exe: Test.c Makefile
    gcc Test.c -o Test.exe -lglpng -DFREEGLUT_STATIC -lfreeglut_static -lglu32 -lopengl32 -lwinmm -lgdi32

.PHONY: clean
clean:
    rm -f *.exe
    rm -f *.o
-lglpng のほうが、glut 関係より先に記述されてないといかんらしい。

make を実行。Test.exe が作られた。

Test.exe を実行すると、png画像の Stunt.png を読み込んで、OpenGL のポリゴンにテクスチャとして貼り付けた状態で表示された。

ss_glpng_test.png

たしかに、png画像を読み込んで、OpenGL のテクスチャとして利用できた。

libpng を使う事例と比べると、圧倒的に記述が少なくて済む。もっとも、glpng も実際の処理は zlib と libpng を使ってるらしいけど…。

glpng [Ben Wyatt] (Win32, etc.) - all versions; read-only;

requires libpng and zlib; freeware (zlib license) with source.

(This is a utility library to load PNG images and bind them to OpenGL textures.
Reportedly it is also a good general-purpose example of how to use textures in OpenGL.
As of early 2000, it still includes the source code for libpng 1.0.2 and zlib 1.1.3, plus a static Win32 library [glpng.lib].)

PNG-supporting Libraries and Toolkits より

参考ページ :

#2 [nitijyou] 弟が帰省

夕方の犬の散歩から帰ってきたら到着してた。たぶん 16:30頃に着いてたのかな…。

#3 [nitijyou] 日記をアップロード

2023/12/04を最後に日記をアップロードしてなかったのでアップロード。

以上、31 日分です。

過去ログ表示

Prev - 2023/12 - 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
31

カテゴリで表示

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


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

Powered by hns-2.19.6, HyperNikkiSystem Project