mieki256's diary



2021/07/01(木) [n年前の日記]

#1 [nitijyou] HDDレコーダで録画した番組を消化中

HDDレコーダの空き容量が厳しいので急いで番組を消化中。ファスト映画、でしたっけ。そりゃそういう動画も需要あるわな、という気分に…。視聴に使える時間が足りない…。

2021/07/02(金) [n年前の日記]

#1 [ubuntu] Ubuntuのデスクトップが妙な感じに

サブPCに入れている Ubuntu Linux 20.04 LTSのデスクトップ画面が ―― Xfce4 のタスクバー? パネル? の色が妙な感じになっていることに気づいた。アイコンのあるところは背景色が黒いのだけど、それ以外は真っ白になってしまって。以前は全部黒系だったはずなのだけど…。

仕方ないので、Xfce4のパネル関係の設定ファイルを全部消去。以下を参考に作業。

_xubuntuのパネルの初期化方法 - 路地裏牧場
_xfce4パネルの初期化方法 [あちあち情報局]

手元のメモを確認してみたら、2020/07/11頃にもおかしくなって初期化したらしい。

_mieki256's diary - Ubuntu 20.04上に Ubuntu MATE をインストールしてxrdpの動作確認

何故にこういうことが起きるんだろう…。

2021/07/03() [n年前の日記]

#1 [love2d] ffmpeg勉強中

RGBA動画(UtVideoフォーマットの.avi)の透明部分を、ffmpegだけを使って黒くしてRGB動画として出力できないか試しているところ。以前は AviUtl + 拡張編集プラグインを使って作業したけど、ffmpeg を使って同じことができれば自動化できそうだなと。

環境は、Windows10 x64 20H2 + ffmpeg version 4.4-full_build-www.gyan.dev。

以下の説明ページを参考にしながら作業中。

_透過部分だけに色を付ける | ニコラボ
_映像の上に映像をのせる overlay | ニコラボ

しかし、上手く行かない…。30フレームある動画が、31フレームの動画として出力されてしまったり、UtVideoで出力しようとすると RGB にならなかったりで。

以下のページを参考にしてフレームレートの指定を色々試してたら、それらしい動画が出力できた。

_ffmpeg でのフレームレート設定の違い | ニコラボ

ffmpeg -framerate 60 -i black.png -r 60 -i rgba.avi -filter_complex "overlay=x=0:y=0" -vcodec utvideo rgb.avi
おそらくだけど、-framerate 60 や -r 60 を入れる位置によって結果が変わるのだろうなと…。

ただ、RGB動画として出力したいのに、RGBA動画として出力される点は変わらず。

ダメな指定。 :

フレームレートだかフレーム数だかがおかしなことになってしまった際の指定は以下。
ffmpeg -i rgba.avi -filter_complex "color=000000,format=rgb24[c];[c][0]scale2ref[c][i];[c] [i]overlay=format=auto:shortest=1,setsar=1" -vcodec utvideo -r 60 -pix_fmt rgb24 rgb.avi

ffmpeg -i black.png -r 60 -i rgba.avi -filter_complex "overlay=x=0:y=0" -vcodec utvideo -r 60 rgb.avi

ffmpeg -i black.png -framerate 60 -i ..\render\%04d.png -filter_complex "overlay=x=0:y=0" -vcodec utvideo -r 60 rgb.avi
ちなみに、black.png は、1280x720、黒一色(RGB=0,0,0)のpng画像。

2021/07/04() [n年前の日記]

#1 [love2d] ffmpegの指定例のまとめ

ffmpegを使って、RGBA動画のアルファチャンネルと、RGB部分を、上下に並べた動画を作成する手順を、忘れないうちに再度メモ。

要するに、以下のような見た目の動画を作りたい。

comb_frame.png

どうしてこういう見た目の動画を作りたいのか。それは、アルファチャンネルを含めることができない動画フォーマット(.ogv等)を使いながら、アルファチャンネルを適用しているかのような見せ方をするため。例えば love2d は、ogvフォーマットしか扱えないので、こういう頓智(?)が必要になる。

draw_video_alpha2_about.png

環境は、Windows10 x64 20H2 + ffmpeg version 4.4-full_build-www.gyan.dev。

連番画像からRGBA動画を作成。 :

blender等で出力した、アルファチャンネルを含む連番画像(.png)を、RGBA動画に変換。
ffmpeg -framerate 60 -i ..\render\%04d.png -vcodec utvideo rgba.avi
  • -framerate 60 で、60fps を指定。
  • -i %04d.png で、0001.png - xxxx.png といった連番画像を指定。
  • -vcodec utvideo で、UtVideoフォーマット(可逆圧縮。アルファチャンネルも格納可能)を指定。
  • 最後に、出力するaviファイル名(rgba.avi)を指定。

アルファチャンネルを白黒動画として取り出し。 :

RGBA動画から、アルファチャンネルだけを白黒動画として取り出す。
ffmpeg -i rgba.avi -vcodec utvideo -vf alphaextract mask.avi
  • -i rgba.avi で、入力動画ファイル名を指定。
  • -vf alphaextract で、アルファチャンネルのみを取り出すことを指定。

RGBA動画の背景に黒一色の画像を合成。 :

事前に、動画サイズと同じサイズの、黒一色の背景画像(black.png)を用意して、RGBA動画をその上に合成する。
ffmpeg -framerate 60 -i black.png -r 60 -i rgba.avi -filter_complex "overlay=x=0:y=0" -vcodec utvideo rgb.avi
  • -framerate 60 や -r 60 でFPS(フレームレート)を指定。記述する位置に注意。
  • -filter_complex "overlay=x=0:y=0" で、(0,0)の位置に2番目の動画を合成する。

映像を上下に並べる。 :

アルファチャンネルを取り出して作った mask.avi と、背景に黒を合成した rgb.abi を、上下に並べた動画を作成。
ffmpeg -i mask.avi -i rgb.avi -filter_complex "vstack" -vcodec utvideo comb.avi
  • -filter_complex "vstack" で、2つの動画を上下に並べる。

ogv (Theora and Vorbis) に変換。 :

ffmpeg -i comb.avi -c:v libtheora -q:v 10 comb.ogv
  • -c:v libtheora -q:v 10 で、ogv (Theoraフォーマット)、クオリティ=10を指定。

ここまでの指定で、以下のような感じの動画が、ffmpegのみを使って作成できる。

_comb_60fps.ogv

love2d 上での利用の仕方は、以下を参照のこと。

_love2dで2つの動画を使って動画の一部を透明に見せかける

2021/07/05(月) [n年前の日記]

#1 [cg_tools] 比較的起動が早いWindows用の画像編集ソフトを試用

実験用画像として、1280x720の黒ベタ一色、青ベタ一色のpng画像を作りたくなったのだけど。普段使ってるGIMPを起動して作業するのが面倒臭いなと思えてきて…。自分の環境では GIMP 2.10 の起動に約2分かかるので、作業を始めるのがちと億劫だなと…。 *1

そんなわけで、比較的起動が早そうな画像編集ソフトを少し探してみようかなと。

環境は Windows10 x64 20H2。各ソフトはSSD上に置いてみた。

PictBearを試用。 :

開発停止しているけれど比較的軽快に動作すると評判の PictBear 2.04 を試用。pb204.exe をDLして実行してインストール。

_PictBear - 多機能ペイントアプリ | フェンリル

2秒で起動してしまった…。早い…。 SSD上に置いてみたことも効いているのかもしれんけど…。

基本的な描画機能は実装されているし、レイヤー機能もあるし、結構ヨサゲな選択肢のような気がする…。

LazPaintを試用。 :

LazPaint 7.1.6 を試用。たしか lazpaint7.1.6_win64_no_install.zip をDLしてインストールしたような気がする。

_Download LazPaint

これも起動時間は2秒。早い…。

レイヤー機能もついているし、矩形等を描画した後から位置やサイズを調整できるのはイイ感じかもしれない。

ただ、ペンやブラシの幅等を指定する際にちょっと戸惑いそうな気もする。でもまあ、基本的な機能自体は色々実装されているので、操作に慣れてしまえば全然使えそうな印象。

AzPainter2を試用。 :

AzPainter2 2.12 を試用。Linux版は現在も開発中だけど、Windows版は随分前に開発停止になっている。azpt212.zip をDLして解凍。AzPainter2.exe を実行。

_Windows Software

起動は1秒。ほぼ一瞬で起動した。

とにかく動作が軽快。レイヤー機能もついている。開発停止とは言っても、PictBear と似た感じで全然使えそうな印象。

JTrimを試用。 :

初心者でも使える画像編集ソフトと言えば真っ先に紹介される JTrim 1.53c を試用。2007年で開発は止まってるけど、Windows10上でも動作する模様。jt153c.zip をDLして解凍して JTrim.exe を実行。

_JTrim

これも起動は2〜3秒。

ただ、レイヤー機能は持ってないし、アルファチャンネルの扱いもよく分からない…。

もっとも、レイヤー機能が無いほうが、初心者には分かりやすいところもあるし。例えばウチの親父さんなどは、未だにレイヤー機能の類がよく分からなくて、画像に文字入れ等をする場合は JTrim を使うわけで。そういう面では、誰でも使えるという評判は間違ってないよなと。

PixBuilder Studioを試用。 :

PixBuilder Studio 2.2.0 を試用。pixbuilder_setup.exe をDLして実行してインストール。

_PixBuilder Studio - Free photo editor

これも起動は2秒程度。

レイヤー機能もついているし、基本機能は大体ついている印象。画像の新規作成時に、サイズ等をプリセットとして登録しておけるのは便利かも。登録プリセットの順番を変更できないっぽいのはアレだけど…。

ただ、起動時に、有償ソフトを薦めてくるウインドウが開く。表示しないようにチェックを入れれば、その後は表示してこなくなった。おそらく、古い版のソフトを有償ソフトの体験版のような扱いにして配布してる状態なのかなと…。ヘルプ → 情報を確認したら、2012年頃のバージョンだった。機能追加等はもうされてないのだろう。配布バイナリ/インストーラは2021年に作り直しているようだけど、現行版有償ソフトの宣伝部分が時期に合わせて差し替えられているのかもしれない。

RealWorld Paintを試用。 :

RealWorld Paint 2013.1 を試用。RWPaint32.msi をDLして実行してインストール。

_RealWorld Paint - portable image editor

起動は2〜3秒だった。

ラスタイメージ(ビットマップ)の他に、ベクターイメージも扱えるのがヨサゲかも。

線を引いた際に、中間地点をドラッグして画数(?)をどんどん増やしていける操作仕様がなんだか面白い。

iPhotoDrawを試用。 :

iPhotDraw 2.6 を試用。iPhotoDrawSetup.msi をDLして実行してインストール。

_iPhotoDraw

これは起動に7〜8秒ほどかかった。

このソフト、描いた図形のほとんどが後から調整可能だったりするので、そういう面では便利だろうなと。

ただ、英語表記なので、ちょっと戸惑うところもあるかなと…。いやまあ、この手の画像編集ソフトが持ってる機能は大体同じだから、各メニューの項目もぼんやり分かりそうな気もするけど。

全体的な感想。 :

単にベタ一色の画像を作成する程度なら、どれを使っても十分に目的は果たせそうだなと…。GIMPに比べたらどれも爆速で起動してくれるし、描画関連の基本機能も大体は実装されてるしで、これで少しは気楽(?)に実験用画像を作れそう。ありがたや。

余談。 :

ここまで書いてから気づいたけど。単にベタ塗り画像が欲しいだけなら、ドットエディタの類で作業しても良かったのでは…。既に導入済みの、EDGE2、GrafX2、Pixelorama あたりを使えば済んだのでは…。「画像を作成したいのだから画像編集ソフトを使わねば」と、ついうっかり思い込んでしまった…。

_高機能ドット絵エディタ EDGE2 | TAKABO SOFT
_GrafX2 - The ultimate 256-color painting program
_Pixelorama by Orama Interactive

*1: ストップウォッチで測ってみたら、GIMPの起動に1分55秒かかってた…。まあ、自分の環境は、ブラシ、フィルタプラグイン、スクリプトその他を大量に追加してあるし、わざわざHDD上に置いてあるからだろうけど…。GIMP本体だけをインストールした直後なら、起動時間はもっと短かった記憶が…。

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

2021/03/21を最後に日記をアップロードしてなかったのでアップロード。ちょっと溜め込み過ぎた…。

誤字脱字があるかもしれないけど、そのあたりをチェックしてたらずっとアップロードできなくなりそうなので…。

2021/07/06(火) [n年前の日記]

#1 [cg_tools][prog][gimp] パレットファイルの変換ツールを試用

画像編集ソフトで使うパレットファイルの変換ツールについて、探したり、試用したりしていた。とメモ。

パレットファイルの種類は色々あるけど、自分が主に使ってるのは以下の2つ。
GIMPのパレットファイル(.gpl)はテキストファイルなので、エディタで開いて編集すれば作成・変更できる。また、GIMP以外、例えば Inkscape でも使えたりする。

Photoshopのスウォッチファイル(.aco)は、読み込みに対応している画像編集ソフトが多い。例えば GIMP や CLIP STUDIO PAINT も .aco をインポートできるし、 先日試用した AzPainter も .aco をインポートすることができる。つまり、何かしらの画像編集ソフトにパレットデータを持ち込みたい場合、.aco を使えば目的が果たせることが多い。

ただ、.aco はバイナリファイルなので、基本的にはPhotoshopの類を持ってないと作成することができない…。

.gpl から .aco に変換できればいいのにな、ということで、変換ツールを探してみたわけで。

Cyotek Color Palette Editorを試用。 :

Windows環境の場合は、Cyotek Color Palette Editor というツールを利用することができる。

_Cyotek Color Palette Editor - Color palette editing made easy - Cyotek
_mieki256's diary - Photoshopのスウォッチファイル aco を GIMPのパレットファイル gpl に変換したい

Windows10 x64 20H2上で、Cyotek Color Palette Editor 1.7.0.411 を使ってみたけど、.gpl を開いて .aco でエクスポートすることができた。Windowsユーザなら、このツールを使わせてもらえば、話は終わる…。

SwatchBookerを試用。 :

パレットデータ管理ツールとして、SwatchBooker というものもある。

_olivierberten/SwatchBooker: Swatch book viewer/convertor/editor
_SwatchBooker
_SwatchBooker's PPA : “SwatchBooker” team

Python + PyQt で動作するツール。Windows10上では、lcmsなるライブラリのインストールができなくて、動作させることができなかった。

Linux上なら動かせるのかどうかが気になったので、Windows10 x64 20H2 + VMware Workstation Player 16.1.0 build-17198959 上で、以下のディストリを起動して試してみた。
  • Ubuntu Linux 20.04 LTTS
  • Debian Linux 10 buster

Ubuntu Linux 20.04 LTS上では、なかなか厳しいことになった。

まず、SwatchBooker の PPAは存在するらしいけど、リポジトリに追加してみると、どこかのURLが404になって sudo apt update すら満足に動かせなくなる。PPAをリポジトリから削除するしかなかった。

github から git clone でDLしたものの…。
git clone https://github.com/olivierberten/SwatchBooker.git

おそらくだけど、src/swatchbooker.pyw を実行すればいいのだろう…。

しかし、Ubuntu 20.04上では、Python 2.7用の PyQt5 パッケージが存在しておらず、当然インストールもできなくて手詰まりになった。なんでも、Ubuntu は Python 2 から Python3 に移行させるため、Python2用の各種パッケージを削除する方向で動いているらしい。

Python3用の PyQt5 なら apt でインストールできたものの、SwatchBooker が Python 2.7 を前提にして書かれているようで、エラーが出て動かなかった。ただ、Python3用に修正していけば、動きそうな気配は感じる…。

Debian Linux 10 buster上で試したところ、そちらは状況が違っていた。まず、Python 2.7用のPyQt5 (python-pyqt5) が用意されていた。よって、以下を打てば、必要なパッケージがインストールできる。
sudo apt install python-pyqt5 python-pil liblcms-dev
$ python --version
Python 2.7.16

実行は以下。
cd SwatchBooker
cd src
python swatchbooker.pyw

これで一応ウインドウ表示はされた。また、.aco を読み込んだり、.gpl を読み込むこともできた。

しかし、利用者数が比較的多そうな Ubuntu上で利用できないというのは、ちょっとアレだなと…。

gplファイルについて注意。 :

当初、SwatchBooker で .gpl を読み込もうとしたらエラーが出てしまって悩んだのだけど。.gpl の最後に改行が入ってしまっていたのが原因だった。もしかすると .gpl のフォーマットとしては、最後に改行は入らない、という仕様なのかもしれないなと…。

具体的には、以下はダメ。
GIMP Palette
...
220	245	255
[EOF]

以下なら読める。
GIMP Palette
...
220	245	255[EOF]

aco2gplがあるらしい。 :

ググっていたら、.aco を .gpl に変換できる、aco2gpl というプログラムがあると知った。C言語で書かれていて、コンパイルが必要。

_baskerville/aco2gpl: Converts a Photoshop palette to a GIMP palette

元々は、.aco を .html にする、aco2html を改造して作ったツールらしい。

_mindscratch/aco2html: http://www.hping.org/aco2html/

Windows10 x64 20H2上で、MinGW/MSYS を使ってコンパイルしてみた。
> gcc --version
gcc (MinGW.org GCC Build-2) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
...

> make --version
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
...
This program built for i686-pc-msys

git clone https://github.com/baskerville/aco2gpl.git
cd aco2gpl
make
aco2gpl.exe が出来上がった。

_DB32パレットファイル を渡して動作確認してみる。
aco2gpl.exe < db32.aco
> aco2gpl.exe < db32.aco
reading ACO stream version: 1 (photoshop < 7.0)
32 colors in this file
reading ACO stream version: 2 (photoshop >= 7.0)
32 colors in this file
Generating GPL...
GIMP Palette
Name: Untitled
Columns: 16
#
0 0 0 Black
34 32 52 Valhalla
69 40 60 Loulou
...
.gplらしいフォーマットでテキストが出力された。

出力結果を .gplファイルとして保存する。
aco2gpl.exe < db32.aco > db32.gpl
.gpl が得られた。イイ感じ。

ちなみに、ソースを眺めた感じでは、色名にASCII文字以外(UTF-16?)を使ってる場合、色名を読み飛ばす模様。でもまあ、RGB値が取り出せるだけでもありがたい。

ただ、考えてみたら、GIMP を起動して .aco をインポートすることでも、.aco から .gpl への変換はできるのだよな…。逆は ―― .gpl から .aco への変換は無理だけど…。

acoのフォーマット仕様について。 :

.aco のバイナリフォーマットについてググってみたら、そこそこ公開されているようで。

_Adobe Photoshop Color File Format
_Adobe Photoshop File Formats Specification

  • バージョン1と2がある。Photoshop 7.0未満と 7.0以後でバージョンが異なる。
  • バージョン2はバージョン1の後ろに結合する形で格納してある。
  • 2バイトのビッグエンディアンで各値を格納してある。
  • RGB以外にも、HSV等、異なる色データの持ち方をする可能性がある。

ちゃんと読めば、gpl2aco も作れそうではあるなと…。

gplのフォーマット仕様について。 :

GIMPパレットファイル(.gpl)のフォーマットについては、以下が参考になりそう。

_GIMP palette file (.gpl) format / syntax? - Stack Overflow
_gimppalette-load.c

ソース内の gimp_palette_load() を読めば一目瞭然に見える。例えば、RGB各値の区切り文字は、空白、もしくはタブ文字で扱ってることも、ソースを眺めれば分かる。

ていうか、本家のソースでは空行を無視する処理になってるな…。SwatchBooker の .gpl読み込み処理は間違ってるじゃん…。

acoを書き出せるソフトについて。 :

調べてみたら、CLIP STUDIO PAINTは .aco を書き出せる模様。書き出した .aco を Cyotek Color Palette Editor で読み込んだらそれらしい表示も得られた。

もしかすると、他にも .aco で書き出せる画像編集ソフトがあるのかもしれない。

パレット編集に強いドットエディタ EDGE2 を確認したところ、.aco ではなく .act で保存できるようで。これはインデックスカラーテーブルのファイルらしい。EDGE2は元々フルカラードットエディタではないので、そういうファイルフォーマットになったのだろう…。たぶん。

2021/07/07(水) [n年前の日記]

#1 [cg_tools][python] gplをacoに変換するツールを書いてる

Photoshop スウォッチファイル(色見本ファイル)、.aco のフォーマットがぼんやり分かってきたので、せっかくだから GIMPパレットファイル(.gpl) を .aco に変換するツールを Python で書いているところ。

大体できたような気がしたものの、変換して作った .aco と、オリジナルの .aco を比較すると、RGB値があちこち違う…。何故。

2021/07/08(木) [n年前の日記]

#1 [nitijyou] 過去の作業メモを探しているところ

某所から質問メールが届いたのだけど、当時の作業内容をすっかり忘れていて、日記ファイルだの、Evernoteのメモだの、そのあたりを半日ほど探しまくっていた。

どうやら、 _2020/08/21 に作業していたらしい…。GRPでメモしてあったので眺めているところ。

#2 [anime] 映像作品内のニュース映像は使えるなと

「SCARLET NEXUS」というTVアニメを見ていたら、ちょっと興味深い見せ方があった。

音声で「カイバツグン」という用語が発せられていたのだけど。本編内で流れるニュース映像のテロップで「怪伐軍」と表示されていて。なるほどこれは上手いなと感心してしまった。ちゃんと映像を見ている人なら「カイバツグン」が「怪伐軍」という単語であることを認識できるわけで。

アニメって、こういうところがちょっと面倒だよなと…。ライトノベルや漫画、あるいはゲームなら、テキスト情報をそのまま載せられるメディアなので、その作品の独自用語をいくらでも出せるのだけど、アニメはそういうわけにはいかなくて。説明台詞はあくまで音声情報でしかないので、例えば「怪伐軍」は「カイバツグン」としか聞こえない。これが「モビルスーツ」「スペースコロニー」みたいなカタカナ言葉ならなんとなく意味も分かるから特に困らないのだけど、ラノベや漫画は、えてして難しい漢字を並べて独自用語を作ることが多くて、そういった作品を原作としてアニメ化した場合、何の工夫も盛り込まないと世界設定を伝えるための用語すらよく分からない状態に陥ってしまう…。

ということで、娯楽映像作品内のニュース映像はそういう用途でも使えるのだなと今頃認識したというか。きっと他にも色々なテクニックがあるのだろう…。

でも、その手のテクニックを全然駆使してなくて、結果、基本設定すら分からないアニメって結構多いよなあ…。そういうのって、娯楽映像においては基礎部分だと思うのだけど…。

キャラ名とテロップ。 :

さておき。件のアニメはキャラが初登場する時にテロップでキャラ名と能力を表示していて、そういった部分でも感心してしまった。例えば「名探偵コナン」あたりでもやってる見せ方だけど、そういうアレコレを盛り込もうと考えるだけでも優秀なスタッフのように思える…。まあ、キャラがたくさん出てくる作品だから、何かしらそういう工夫を盛り込まないとアレかなという気もするのだけど。

そういえば、件のアニメと同様に、やたらとキャラが出てくる「僕のヒーローアカデミア」あたりは、キャラ紹介カットも作品のフォーマットとして確立している気がしてきた。キャラと名前をバーンと出して、あのナレーター(?)さんの声で説明が聞こえてくるだけでも、「ヒロアカ」って感じがする。キャラ名がテロップで出てくるところまでは、いくつかの作品でもやってるけれど、独特(?)なフォーマットに仕立て上げると更にグッド、だったりするのかもしれないなと。

その手のテクニックって、上手く使っている時はすんなりと情報が伝わってくるから、えてして視聴者側はテクニックが使われてることに気づかないし、気づかないから誉めてもくれないけれど、そういう細かい部分の積み重ねで全体の印象が違ってくるというか…。結構大事な部分だよなと…。

2021/07/09(金) [n年前の日記]

#1 [python][gimp][cg_tools] gpl2aco.pyを書いてみた

GIMPパレットファイル(.gpl)を、Photoshopスウォッチ(色見本)ファイル(.aco)に変換するツールを Python で書いてみたので一応アップロード。まあ…使う場面はほとんど無いのではないかと思うのだけど…。Windowsユーザなら、 _Cyotek Color Palette Editor を導入すれば変換できるし…。

ソースは以下。

_gpl2aco.py - Convert GIMP palette (.gpl) to Photoshop color swatch (.aco) - gist


一応、ヘルプ表示も載せておきます。
> python gpl2aco.py -h
usage: gpl2aco.py [-h] [--nonull] gpl_file aco_file

Convert GIMP palette (.gpl) to Photoshop color swatch (.aco)

positional arguments:
  gpl_file    Input GIMP palette file (.gpl)
  aco_file    Output Photoshop swatch file (.aco)

optional arguments:
  -h, --help  show this help message and exit
  --nonull    Exclude null from color name

問題点。 :

問題点その1。.aco を _aco2gpl を使って .gpl に変換して、その .gpl を、この gpl2aco.py で .aco に変換してみても、最初の .aco とは微妙にRGB値が違ってしまって元の内容には戻ってくれない。

これは、.aco が各RGB値を 0-65535 で記録していて、.gpl が各RGB値を 0-255 で記録しているから、ではないのかなと…。.aco から .gpl への変換は不可逆というか、情報が失われてしまうので、情報が失われてしまった .gpl から .aco を生成してみても元には戻らない、ということだと思う。

問題点その2。.aco にはバージョン1とバージョン2があって、バージョン2は各色の色名を含めることができるのだけど、色名の文字列の持ち方がツールによって異なるようで、どのフォーマットに合わせたらいいのかよく分からなかった。

_Adobe Photoshop File Formats Specification

上記の文書によると、各ファイルに格納される文字列は、最後に NULL (0x0000) がついて、文字数には NULL の分も含まれるらしいのだけど。ツールによっては、最後に NULL がつかず、文字数も NULL を含まない状態で出力されるものがあるようで。どちらのフォーマットのほうが正しいのか分からなかったので、オプション --nonull をつけると動作が変わるようにしておいた。
  • --nonull をつけなければ、文字列の最後に NULL がつく。デフォルトはこの動作。
  • --nonull をつけると、文字列の最後に NULL がつかない。

余談。 :

一応メモ。Python でバイナリデータを生成するなら struct モジュールを使うと楽、らしい。例えば、struct.pack(">H", value) で、ビッグエンディアンの unsigned short を生成できたりする。

_7.1. struct - バイト列をパックされたバイナリデータとして解釈する - Python 3.6.13 ドキュメント


コマンドラインオプションの解析は argparse モジュールを使うと楽。

_ArgumentParserの使い方を簡単にまとめた - Qiita


docopt というものもあるらしい。ヘルプメッセージを書くだけでコマンドラインオプション解析の指定ができてしまう。素晴らしい。

_Python のコマンドライン引数ライブラリまとめ - Qiita
_Pythonistaなら知ってるオプションパーサ - Qiita

ただ、docopt は標準で入ってるわけではなくて、pip でインストールしないといけないようで…。

#2 [python] PY_PYTHONを指定しておいたとメモ

Windows版Python には、Python3 から py.exe というランチャーがついていて。py -2 と打てば Python2系が、py -3 と打てば Python3系が実行できたりするのだけど。

手元の環境、Windows10 x64 20H2 + Python 3.9.5 x64 で、py hoge.py と打って実行しようとしたら、importエラーが出ることに気が付いた。 py -V と打つと、Python 3.9.5 と表示される。変だな…。だったら py hoge.py でも実行できるはずでは…。

とりあえず、バージョンを指定すると動くようになるっぽいので、ユーザ側の環境変数 PY_PYTHON に 3.9 を指定しておいた、とメモ。この状態なら py hoge.py も動作する…。なんでだろうなあ…。

関連付けを確認。 :

DOS窓で以下を打てば確認できるっぽい?

> assoc .py
.py=Python.File

> ftype Python.File
Python.File="C:\Windows\py.exe" "%L" %*

.py は、C:\Windows\py.exe に関連付けられているように見える。

#3 [windows] Windows10を21H1にアップグレードした

メインPCの Windows10 20H2 x64 を 21H1 にアップグレードした、とメモ。

更新時間は10分もかからなかったような気がする。

#4 [anime][neta] 女子中学生を失神させたらしいアニメについてなんだか考え込んでしまった

先日、「ゲッターロボアーク」というアニメを見ていたら、キャラデザが石川賢先生のソレに結構そっくりで感心してしまったのだけど。キャラデザを確認したら、本橋秀之さんだった。道理で…。あの方のキャラデザはスゴイから…。原作の絵柄の再現度がとんでもないわけで…。とある少女漫画の原作者がアニメ化された映像を見て、あまりに原作とそっくりだったから感動して泣き出してしまったという伝説があるほどで…。

さておき、本橋秀之さんのキャラデザと言えば、やはりゴッドマーズだよなと…。何せ劇場版を公開したら、映画館で女子中学生?が失神したという噂があるぐらいで。自分は未見なのだけど、たしかマーグの洗脳シーンで、という話だったっけか…。

ん? 洗脳シーン?

ちょっと待てよ。洗脳シーンというと、往々にして、なんだか画面がビカビカ光りそうなイメージがあるのだけど。まさか…。それって、ポケモンショック ―― 光過敏性発作で倒れたというオチだったりしないか…?

杞憂であればよいのだけど、万が一、ポケモンショックが原因で倒れていたのだとしたら、それはちょっと…マズイよな…。

自分達は、「女性ファンが会場で失神した」と聞くと、「ああ、感極まり過ぎて失神したのかなあ」などと迂闊にも決めつけて想像してしまうけど。もし、ポケモンショックが原因なら、それはちょっと…。いやまあ、その劇場版とやらは未見なので、洗脳シーンとやらが実際にどういう作りだったのか分からんのでアレだけど。

このあたり、アニメに限った話じゃないよなと。例えば、昭和の頃は、アイドルのコンサートで女性ファンが失神、なんて話もちょくちょく耳にした気もするのだけど。コンサート会場って、場合によっては照明がビカビカと激しく点滅しまくったりしていたのではないか、とも…。当時のアイドルが、「俺のコンサートでファンが失神しちゃったんだよねえ」なんて武勇伝のように思ってたら、それはちょっとマズイのかもしれない。倒れた原因がポケモンショックだとしたら、「ああ…それは…知らなかったとは言え、悪いことをしてしまった…」と反省すべき場面になってしまう…。

まあ、そのあたり、杞憂であってほしいのですけど。どうなんだろ。今となっては調べようもないよなあ…。

てなことを思ってしまったのでメモ。思考メモです。

2021/07/10() [n年前の日記]

#1 [python] Python + Click を勉強中

Pythonスクリプトでコマンドラインオプションの解析をするとなると、argparse だの docopt だのを使うものらしいけど、Click というモジュールもあるらしいので少し調べているところ。

pip でインストールできる。
pip install click
Windows10 x64 21H1 + Python 3.9.5 上で、click 8.0.1 がインストールされた。

以下の記事が参考になった。ありがたや。

_Python: コマンドラインパーサの Click が便利すぎた - CUBE SUGAR CONTAINER
_Pythonパッケージ: 便利なコマンドラインパーサClickを使ってみる - いろいろ試してみる

サブコマンドを指定できるあたりが便利なのかな…。

#2 [nitijyou] 部屋が暑い

なんだか暑いなと思ったら部屋の温度が30度だった。先日は23度とかそんな感じだったのに…。

気温のせいなのか分からんけど、右耳の調子も悪くて。トンネルに入った時のような、あんな感じで。横になると治るけど、起き上がるとまた同じ調子に。これは何なんだろう…。

2021/07/11() [n年前の日記]

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

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

それとは別に、08:43-10:23、18:33-19:34の間も、自宅サーバが止まってたっぽいのですが…。何故…。

#2 [moho] Mohoで煙を作れるか実験

Moho Pro 13.5.1 を使って煙っぽいアニメを作れそうか実験。環境は Windows10 x64 21H1 + Moho Pro 13.5.1。

余談。Moho は発売元が Smith Micro から Lost Marble LLC に変わったそうで。Moho の原作者?の手に戻ったのだとか。ただ、13.0 で追加された機能は作りに無理があって、Moho全体を不安定にしていた/動作が遅くなっていたので、13.5 では、13.0 の追加機能は一旦削除されたとかで…。

とりあえず、13.0のユーザに対しては、今のうちなら 13.5.1 のアップデータを提供してくれてるっぽいので、今回は 13.5.1 をDL・インストールして作業してみました。とメモ。アップデータのDLに、かなり時間がかかりましたが。2回もDLが中断した…。混んでるのかな…。

実験の動機。 :

以下の記事を目にしたのです。After Effects + 達人の技って凄いなと…。こんなのが作れちゃうのかと…。プロはスゴイ…。

_エフェクトは自分で | ezBlog

で、じっと眺めてるうちに、こういうのって Moho では作れないのかなーと疑問が湧いてきて。素人なりに実験してみたくなったわけで。

作業手順。 :

まずは参考記事に倣って、素材のアニメを作成。もわもわしてる感じの団子(?)のアニメを作る。



団子アニメは…。ベクターレイヤーを2枚用意して、それぞれでシェイプアニメーションを作成。その2枚のベクターレイヤーを、グループレイヤーに入れて、グループレイヤーのマスク設定を変更。グループ内で、一番下のレイヤーが、上のレイヤー(影担当のレイヤー)をマスクする(切り取る?)ような設定に。

シェイプアニメーションは、シェイプの制御点の位置が時間に応じて変化することでアニメになるわけだけど、そこは単に形がもわもわするだけにしておいて。そのシェイプを置いているベクターレイヤーのほうを回転させることで、見た感じ、もわもわぐるぐるするようなアニメにしてみたり。

これで素材ができたので、パーティクル機能を使って大量発生させる。パーティクルレイヤーを新規作成して、その中に先ほど作った素材をグループレイヤーごと放り込む。これで、パーティクルレイヤーの設定次第で、先ほどの素材がぶわぶわっと大量発生するようになる。

パーティクルレイヤーが1種類だけだと見た目が今一つだったので、パーティクルレイヤーごと複製して(右クリックして複製)、大、中、小のパーティクルレイヤーを並べてみたり。

moho_layers_ss.png

それぞれの素材を ―― グループレイヤーを、レイヤーの拡大縮小でサイズを変えて、大、中、小の見た目になるように調整。パーティクルの発生の仕方もビミョーに異なる感じに ―― 速度や加速度を変えたり、発生する向きを変えたり、発生個数を変えたり等、テキトーに調整。

で。こんな感じに。



参考にした記事のソレとは全然違う感じになってしまったけど、これはこれで…。少なくとも、自分は手描きでこんなアニメを描けないわけで…。結構満足。

ただ、セルルックなんだから、輪郭線が欲しい気分になってきた。

Moho で輪郭検出をする方法が分からなかったので、フリーソフトの AviUtl 1.10 + 拡張編集プラグインを使ってみる。

AviUtl で拡張編集ウインドウを表示して、新規プロジェクトを作って、先ほど作った動画を2つのレイヤーに配置。手前に表示されてるレイヤーに対して、輪郭検出(エッジ検出)フィルタをかけていく。

aviutl_filter_ss1.png

右上の「+」ボタンをクリックすればフィルタが選べるので、エッジ検出フィルタを追加。これで、黒地に白で線が描かれたような見た目になる。更に、反転フィルタ(基本 → 反転)を追加して、輝度反転。これで、「黒地に白」が「白地に黒」へと変わる。更に、合成モードを乗算に。これで、黒い線は残るけど、白い部分は奥のレイヤーの色が ―― 元の煙動画の塗り部分が、そのまま出るようになる。

aviutl_filter_ss2.png


そして、こんな感じに。



個人的にはイイ感じになったような気がする…。もちろん、手描きのちゃんとした煙アニメと比べたら「なんじゃこりゃ」だろうけど、ろくに絵が描けない自分のようなド素人でもこういうアニメを作れてしまうのは単純に嬉しい。CG万歳。

問題点。 :

作業していて思ったけれど、素材を作る段階が難しいなと…。もわもわ団子の形が、煙全体のシルエットや影のシルエットの形を決めてしまうので、見た感じがそれらしい素材じゃないと、煙全体もそれらしい見た目に全然なってくれない。おそらく、そういうところで絵描きさんの能力が要求されてしまうのだろうなと…。

もっとも、絵描きさんなら、数フレームのループ動画を描いて終わらせそうな気もする。たしか有名なFLASHアニメーターの方が、作例としてそういう煙動画を描いてた記憶もあるし…。フツーはこうやって処理するものです、みたいな感じで…。

ただ、今回作ったコレは、ループ動画で置き換えられるレベルだけど、参考記事に掲載されてる、ブワッブワワッと出てくる煙は、手描きじゃ大変だよなと…。どういう動きを作ろうとしているかで、これは手描きでもOK、これは手描きじゃ無理と別れてくるのだろうなと…。たぶん。分からんけど。

課題。 :

Moho を使っても、一応ちょっとはそれらしいアニメを作れそうだなと分ったけれど。これ、たぶん、blender でも作れるんじゃないかと…。まあ、そのあたりは課題ということで。

煙が広がるタイミングも、もうちょっと工夫したい。ボンバンボワッ、みたいな動きにできないかなと。おそらくパーティクルの動作開始をタイムラインで指定しないといかんのだろうけど、Moho の操作がまだ分かってなくて…。まあ、そのあたりも課題。

余談。パーティクルの速度指定。 :

パーティクルレイヤーの速度指定の単位が分からなくて英文マニュアルを眺めてみたのだけど。
The speed that particles start at (a value of 2 will cause a particle to cross the entire screen vertically in one second)
英語は分からんけど…。2を指定すると1秒間で画面を垂直に横切る、と書いてあるのかな…。どうやら、画面の縦半分の長さが1という扱いになってるっぽい。

このあたり、単位がドットだったりすると、例えばプロジェクトの出力画面サイズを変更した時に、全パラメータを変更しなきゃいけなくなるので、画面の縦幅に対して、みたいな指定をすることになっているのだろう。たぶん。

余談。ffmpegの指定。 :

今回、Moho から 1280x720のmp4を出力して、それを ffmpeg で 512x288 の mp4 に変換した。その際の指定をメモ。
ffmpeg -r 24 -i smoke_effect.mp4 -vf "scale=512:-1" -pix_fmt yuv420p -c:v libx264 -crf 20 smoke_effect_half.mp4
  • -r 24 -i input.mp4 で、24FPSの動画として入力。
  • -vf "scale=512:-1" で、アスペクト比は変えずに、横幅512ドットの動画に縮小。
  • -pix_fmt yuv420p をつけないと、Webブラウザで再生可能な mp4 にならないので注意。
  • -c:v libx264 で、mp4のビデオフォーマット(x264)を指定。
  • -crf 20 で、品質を指定。

以下、参考ページ。

_H.264でエンコード:tech.ckme.co.jp
_FFmpegで動画をリサイズする - Askthewind’s diary

2021/07/12(月) [n年前の日記]

#1 [blender] blenderで煙アニメを作れそうか勉強中

昨日、Moho を使って煙アニメっぽいものを作ってみたけれど、blender でも作れそうな気がしてきて少し調べ始めているところ。環境は Windows10 x64 21H1 + blender 2.83.16 LTS x64。

blender で作るとしたら、課題が2つありそうだなと…。
セルルック風は、以下の記事が参考になった。ありがたや。

_【Eevee】Blender2.8でトゥーンシェーダーを作る! - もろりんの3DCGブログ(改装中)

記事の通りに順々にやっていったら、ベースカラー、シャドウ、フレネル?(リムライト?)、ハイライト、アウトライン(輪郭線)の出し方を指定できた。ただ、今回、Moho で作ったソレに近づけるだけなら、ベースカラーとシャドウだけでも十分かもしれないなと…。

輪郭線については、以下の記事が参考になった。

_【Blender #32】輪郭線をつける3つのやり方 - 機械系エンジニアの備忘録

前述の記事では、フレネル、及び、ソリッド化モディファイア(背面法)を使って輪郭線を出していたけど、レンダリングした後から画像処理で輪郭線を加える方法もあるようで。まあ、Freestyle機能で線をつけるのが手っ取り早い気もするけれど…。と言っても Freestyle機能では思ったような線が得られない予感もあるけれど…。

パーティクルについては、まだ調査中。発生させたオブジェクトが必ず下に落ちていってしまう…。どうすりゃいいんだ…。みたいな。

そもそも今時の blender には、クイックエフェクトという機能があることも知った。

_Blender: クイックエフェクトで煙を作成してEeveeレンダラーでレンダリング | COREVALE コアベイル ただいまゲーム制作中
_Blender 2.9で煙と炎の物理シミュレーションを実行する - MRが楽しい

リアルっぽい煙なら、コレを使ってしまえば作れそう。ただ、今回は、アニメっぽい煙が作れないかと試しているわけで…。

2021/07/13(火) [n年前の日記]

#1 [nitijyou][linux] 自宅サーバがお亡くなりになりました

自宅サーバ機(VIA EPIA LN10000EG使用機)が、どうやら臨終のようでして…。電源を入れても起動しなかったり、起動してもBIOS画面がグチャグチャになって無反応になったりで。これはもうダメだなと…。

雷が鳴ったので、13:14-17:13の間、自宅サーバを止めていたのですが、電源投入したら起動せず。ケースを開けて掃除したり、M/B上のボタン型電池(CR2032)を交換してみたものの、前述のような症状が出てしまう。memtest86+を実行してみるも、途中で画面がグチャグチャになったり、ブラックアウトして無反応になってしまって…。

M/B を眺めた感じでは、大き目のコンデンサ3本が液漏れ・膨張しているようで。どうやらそのあたりが原因で壊れているのかなと…。

代替機にファイルが移せない。 :

Intel Atom CPU が載ってる代替機(M/B: Intel D945GSEJT)を引っ張り出したものの、旧サーバ機からファイルを移せなくて困っているところ。

旧サーバ機のHDDは、HITACHI HDS721616PLAT80。IDE接続。代替機のM/BにもIDEコネクタはついているから、ケーブルを差せばHDDのコピーはできるやろと思いきや、代替機側のIDEコネクタ幅が何故か狭くて、今まで使ってたIDEケーブルのコネクタが入るようには見えず。そんなコネクタ、あるの…? Mini-ITX M/B だから、レイアウトの問題で特殊なコネクタを使ったのだろうか…。

ググってみたら、Intel D945GSEJT 上のIDEコネクタは44ピンと書いてあった。ノートPC/2.5インチHDD用のIDEコネクタだったらしい…。デスクトップ機/3.5インチHDD用では無いのだな…。ということは、3.5インチHDDが接続できない…。

SATA/IDE-USB変換コネクタ 裸族の頭 IDE+SATA CRAISU2 を使って、IDE-HDD の中身をUSB経由で見れないかと思ったものの、裸族の頭の付属ACアダプタが弱まっているようで、IDE-HDDのスピンアップ(?)ができない…。キュルルン…、キュルルン…を延々と繰り返す。

200円PCケース機を引っ張り出して、そちらにIDE-HDDを繋いでみたところ、一応HDDは回ってくれた。USBメモリに入れた Knoppix から起動して、/media/sda1, /media/sda2 でIDE-HDD内の中身が覗けることも確認できた。

さて、どうやって代替機にファイルを転送したら…。LAN経由でどうにかするしかないのだろうけど…。scp? rcp? rsync? そのあたりを使えそうな予感。

2021/7/14追記。 :

液漏れしてるコンデンサは以下のような感じ。

via_epia_01.jpg

via_epia_02.jpg

via_epia_03.jpg

「Rubycon 10v 1500μF」と書いてあるように見える。

VIA EPIA M/B が出回っていた時期は、例の不良電解コンデンサが大量に市場に出てしまっていた時期だった、という話を見かけた。もしかすると、このM/Bも、その時期の個体だったのかもしれない…。

コンデンサだけ交換して修理できないものかとググってみたけど、「10V 1500μF」というスペックのコンデンサはメジャーではないので入手が若干難しいようで。更に、多層基板上でのコンデンサの取り外しにはコツが必要だそうで…。熱が基板上に逃げてしまう、とかなんとか…。なかなか難しそう。

#2 [blender] blenderで煙アニメを作成

blender でアニメっぽい煙アニメを作れないかと実験してたけど、おそらくそれっぽい感じで作成できた気がする。環境は Windows10 x64 21H1 + blender 2.83.16 LTS x64。

こんな感じになった。



結構それっぽいアニメになったように思うのだけど、どうだろう…。

作業中の画面は以下のような感じ。

smoke_test02_ss01.png

一応念のために .blend も zip にして置いときます。

_smoke_test02.blend.zip

手順をメモ。 :

blender のパーティクル機能を使って、オブジェクトを大量に発生させる。以下の記事がとても参考になった。ありがたや。

_[2.8]Blenderひとりもくもく会:パーティクル編|MITSUDA Tetsuo|note

パーティクル関係の設定は以下のような感じ。

smoke_test02_ss02.png

smoke_test02_ss03.png

smoke_test02_ss04.png

当初、パーティクルが下に落ちていって困ったけれど、フィールドの重み → 重力、を 0 にしたら落下しない状態になってくれた。

発生させるオブジェクトは、Cube(立方体) にした。Cube 追加してから、細分化。細分化の際に、スムーズを掛けて、丸い形にしていく。その後、頂点のランダム化で凸凹に。更に、サブディビジョンサーフェイスで滑らかに。

セルルック風のマテリアル指定は、以下のような感じに。

smoke_test02_ss05.png

マテリアル設定については、以下の記事がとても参考になった。ありがたや。

_【Eevee】Blender2.8でトゥーンシェーダーを作る! - もろりんの3DCGブログ(改装中)


レンダリング関係の設定は以下。

smoke_test02_ss06.png

  • レンダーエンジンは Eevee。
  • カラーマネジメント → ビュー変換、は、標準に。これにしないと色が正確に出ない。
  • フィルム → 透過、にチェックを入れて、背景を透明にした。

アニメーションをレンダリング。アルファチャンネルを含んだRGBAの連番画像(.png)として出力。

ffmpeg を使って、連番画像を .avi に変換。出力フォーマットは UtVideo。UtVideo は可逆圧縮なので画質劣化が無く、かつ、アルファチャンネルを含めることができる。

ffmpeg -framerate 24 -i render\%04d.png -vcodec utvideo smoke_test02.avi
  • -framerate 24 で、24FPSを指定。
  • -i render\%04d.png で、renderフォルダ内の 0001.png - xxxx.png を入力ファイルとして指定。
  • -vcodec utvideo で、UtVideoフォーマットを指定。
  • smoke_test02.avi が出力ファイル名。

これで、連番画像が .avi になった。以下のような動画ができる。




輪郭線を追加する。今回は AviUtl 1.10 + 拡張編集プラグインを使った。拡張編集ウインドウに .avi を追加して、縁取りフィルタを使って輪郭線を追加。ついでに背景も白くする。

smoke_test02_ss07.png

以下のような動画が出来上がった。




ということで、blender を使っても、Moho と同様に、煙アニメは作れそうだなと…。

余談。Freestyleで輪郭線。 :

当初、blender の Freestyle機能で輪郭線を追加しようとしたのだけど。パーティクルの数が増えていくにつれて、Freestyle の処理時間がどんどん伸びていって…。そのうち、1フレームのレンダリングで1分以上かかるようになってしまったので、使用は諦めた。

おそらくだけど、背面法とやらで輪郭線が出るようにすれば、短いレンダリング時間でも輪郭線が出せたのではないかなと。

あるいは、レンダリング後のノード設定?を工夫すれば、blender上でも AviUtl で行ったような処理ができたのかもしれない。そのあたりはまだ不勉強で、実際にできるかどうか分からんけど…。

余談。相対パスの指定。 :

レンダリング結果を出力するフォルダパスを、D:\hoge\fuga\render\ みたいな指定にしながら作業していたのだけど。この状態だと .blend ファイルを別の環境に持っていった際に不具合が出るわけで…。そのあたりのフォルダ指定については、.blendファイルのある場所を基準にして相対パスで指定できないのかなと。

ググってみたら、以下のページが見つかった。

_File Paths ・ Blender Manual
_Opening & Saving ・ Blender Manual

The default path // refers to the folder of the currently open blend-file (see Relative Paths for details).

File Paths ・ Blender Manual より


「//」をつければ .blendファイルのある場所を指定したことになるらしい。つまり、.blendファイルのある場所に render というフォルダが存在するなら、「//render\」という指定でOKということになるのだろう…。たぶん。

手元の環境で試してみたところ、たしかに render\ 以下に画像が出力された。

2021/07/14(水) [n年前の日記]

#1 [linux][debian] 旧自宅サーバ機のファイルを代替機に転送中

旧自宅サーバ機に積んでいた IDE-HDD、HITACHI HDS721616PLAT80 (UATA133, 160GB, 7200rpm) を、200円PCケース機に接続して、USBメモリから起動した Knoppix 8.6.1 DVD を使って、自宅サーバ代替機に rsync で転送しようとしているところ。

200円PCケース機のスペックは以下。 ちなみに、どうして200円PCケースと呼んでいるかといえば、100円ショップで買ってきた書類ボックス2つで作ったPCケースだから…。

_100円ショップで買ってきたA4ラックでPCケースモドキを作った
_200円PCケースのその後

さておき、こんな感じの酷い状態で作業しているところ…。

rsync_ss.jpg

上の白いケースが代替機。下のアレなのが200円PCケース機。左下に、旧自宅サーバ機のHDD。その左横に、HDDを冷やすための12cm FAN。HDDを連続で回すと発熱するのだけど、60度を越えると転送エラーが出始めることを以前体験したので、念のために冷やしつつ作業してる。sudo hddtemp /dev/sda で HDDの温度を確認したけど、この状態で46度ぐらいだった。

rsyncについて。 :

rsync を使うと、LAN経由でファイルの同期転送ができるらしい。Knoppix 8.6.1 DVD にも rsync が同梱されていたので、これを利用する。

転送元は knoppix 8.6.1、転送先は Debian 10 buster、IPアドレス 192.168.1.22。

転送先の Debian 側で、root で sshログインできる設定にしておく。/etc/ssh/sshd_config で PermitRootLogin yes に変更。メンテナンス作業が終わったら no にする。一応、LAN内PCのみが ssh でログインできるように、/etc/hosts.deny に sshd : all を書いてから、/etc/hosts.allow に sshd : 192.168.0. 等を記述しておいた。

rsync を使って、以下のような指定で転送。この場合、/media/sda1 に、旧自宅サーバ機の「/」が、/media/sda2 に、旧自宅サーバ機の「/home」が入っている。転送先ディレクトリは /home/oldpcbak/ 以下。
sudo rsync -avuzP /media/sda1 root@192.168.1.22:/home/oldpcbak/sda1
sudo rsync -avuzP /media/sda2 root@192.168.1.22:/home/oldpcbak/home
  • rsync [オプション] 転送元 転送先、で指定する。
  • -a : アーカイブオプション。再帰、所有者情報の保持等。
  • -v : 情報出力
  • -u : 転送先にファイルが存在して、転送先のタイムスタンプが新しい場合は転送しない。
  • -z : 転送時に圧縮
  • -P|--progress : 進捗状態を表示
  • 転送先は、ユーザ名@ホスト名:/hoge/fuga/piyo、みたいな形で指定する。
実行すると転送先にログインするためのパスワードを聞いてくるので入力。

sudo をつけないとパーミッションの関係で転送されないファイルが出てきてしまう。途中で気がついて、慌てて付け始めた。ただ、後になって、Knoppix には Root Shell なるメニュー項目が用意されていると知った…。もしかしてそちらを立ち上げて作業すれば済んだのでは…。あるいは sudo -s で root になってから作業するのもアリだったかも…。

ちなみに、sudo du -h | sort -hr で、使用状況・ファイルサイズをソートした状態で確認できる。

以下、参考ページ。

_rsyncで進捗状況を表示する方法
_du -h などの結果を簡単にソートする - Qiita
_rsyncを使った熟練者レベルのバックアップ:Command Technica(1/3 ページ) - ITmedia エンタープライズ
_rsyncオプション - Qiita
_CD-ROM起動でハードディスクからファイルを救出@謎の処理系 SunOS 4.1.4 with Linux/FreeBSD

ファイルサイズが異なる謎。 :

一部のファイルはエラーが出て転送できなかったものの、それでもある程度は転送できたのだけど。du を使ってファイルサイズを調べたら、一部のフォルダに関して、転送元と転送先の総ファイルサイズが異なっていて…。

sudo du -b | sort > ~knoppix/Desktop/size.txt みたいな形でテキストファイルにして、diff size.txt sizenew.txt で比較してみても、どのファイルがおかしくなっているのか分からない…。ファイルが壊れた状態で転送されてしまったのか、それともファイルは正常に転送されているけど別の何かで総ファイルサイズが異なってしまうのか。

でもまあ、一切ファイルをコピーできない状況よりマシなのではないか、と思うことにする…。大半のフォルダは、サイズが同じになっているし…。

ちなみに、~knoppix/Desktop/size.txt は、rcp を使って代替機側に転送した。
sudo rcp ~knoppix/Desktop/size.txt username@192.168.1.22:/home/username/

所有者やパーミッションを変更。 :

旧自宅サーバ機は Vine Linux で動かしていて、代替機は Debian Linux 10 (buster) で動いているので、ユーザIDやグループID等が全然違ってしまっている。転送したファイルの所有者については、只の数値が表示されている状態。

sudo chown を使って、所有者を変更していかないといけない…。

とりあえず、samba の共有フォルダは、nobody:nogroup にしておけばいいので、sudo chown -R nobody:nogroup ./* で変更、したような気がする。メモするのを忘れたけど、たぶんそんな感じだったような。-R が、再帰的な変更。

パーミッションも変更したい。samba の共有フォルダ内は、ディレクトリが 777、ファイルは 666 にしておきたい。以下の記事が参考になった。

_ファイルやディレクトリのパーミッションを一括で置換したい - Qiita

sudo find . -type d -exec chmod 777 {} +
sudo find . -type f -exec chmod 666 {} +

さて。samba の共有フォルダはこれで済んだけど、こういった作業をユーザ別に行っていかないといかんわけで…。旧自宅サーバ機では、その時々のノリで、ユーザアカウントを安易に増やしていってしまったので、結構な数が…。

ちなみに、chown に「--from=ユーザ名」をつければ、特定の所有者ファイルを変更していけるらしい。

_ある特定の所有者ファイルを別ユーザへ変更する - Qiita

これを使って作業していかないと…。

2021/07/15(木) [n年前の日記]

#1 [linux][debian] 自宅サーバ代替機のセットアップ中

_昨日の作業 に引き続き、自宅サーバ代替機(キューブPCケース機、Intel D945GSEJT使用)のセットアップ中。自宅サーバ機の環境は、Debian Linux 10 buster 32bit版。

旧自宅サーバ機のHDDから、ファイルをある程度転送できたので、代替機上で root になって、各ユーザのホームディレクトリ内に、バックアップしたディレクトリ群・ファイル群を移動。

余談。Intel D945GSEJT というM/Bには、ネットブック用のCPU、Intel Atom N270 がオンボードで載っているのだけど、このCPUは64bitに非対応なので、64bit版OSは動かせない。Ubuntu や Red hat系は32bit版を切り捨てたので、今のところ 32bit版もサポートしている Debian Linux を使って動かすしかない。

一応、Debian をインストールした際の作業メモのリンクも残しておく。

_D945GSEJT機をメンテナンス
_D945GSEJT機のDebianを設定中
_D945GSEJT機のDebianを設定中その2
_D945GSEJT機のDebianを設定中その3

隠しファイルも移動の対象にしたい。 :

mv * /home/hoge でディレクトリやファイルの移動をしようとすると、隠しファイル(先頭が「.」になっているファイル)が移動できない。隠しファイルも対象にしたい。

ググった感じでは、shopt を使って、「*」の動作を変えればいいらしい。
  • shopt -s dotglob : *の指定時、隠しファイルも対象にする。
  • shopt -u dotglob : *の指定時、隠しファイルは対象にしない。

_mv等のコマンドでワイルドカード指定の際、隠しファイルを対象にする - Tdomy
_[Unix] mvなどのコマンドで”.”の付いた隠しファイルも一緒に移動させる方法 | 1 Day 1 Tip(s)

findでファイルを探す。 :

特定の所有者になっているファイルを探したい。find を使う。
find . -user root

逆に、特定の所有者になっていないファイルを探したい場合は以下。
find . ! -user root

_所有者を指定してファイルを探す方法 | LFI
_findコマンドの使い方 - Qiita

ディレクトリ or ファイルのみパーミッションを変更。 :

ディレクトリのみ、あるいは、ファイルのみ、パーミッションを変更。
find /path/to/dir -type d -exec chmod 755 {} +
find /path/to/dir -type f -exec chmod 644 {} +

_ファイルやディレクトリのパーミッションを一括で置換したい - Qiita

特定の所有者のファイルだけ所有者を変更。 :

特定の所有者のファイルだけを対象にして、所有者を変更したい。chown で行う。
sudo chown -R --from=UserName NewUserName:NewGroupName *
sudo chown -R --from=UserName:GroupName NewUserName:NewGroupName *
-R で再帰的に子ディレクトリ以下も処理。--from=xxx:xxx で、指定した所有者のファイルを対象にする。

_ある特定の所有者ファイルを別ユーザへ変更する - Qiita

特定ユーザはログインできないように指定したけど元に戻した。 :

特定のユーザがssh等でログインできないようにする際、shell設定に nologin を指定する時があるけれど、Debian の場合、nologin はどこにあるのだろう…。探したら以下の2つがあるっぽいけど…。
/sbin/nologin
/usr/sbin/nologin

/etc/passwd を眺めた感じでは、/usr/sbin/nologin が記述されてる場合が多いように見える。

つまり、以下で、ユーザがログインできない状態にできる。
usermod -s /usr/sbin/nologin USERNAME

しかし、この設定をしてしまうと、ftp を使って該当ユーザのホームディレクトリにアクセスできなくなった。vsftpd がそのあたり利用しているのだろうか。仕方ないので、フツーに /bin/bash を設定しておくことにした。
usermod -s /bin/bash USERNAME

_【 usermod 】コマンド――ユーザーアカウントの情報を変更する:Linux基本コマンドTips(73) - @IT
_ユーザーのログインシェル: nologin と false 指定時の違い - 寒月記

locateを使える状態にした。 :

Apache2の設定開始。 :

Webサーバ Apache2 の設定を始めた。作業が多いので別記事に分けよう…。

#2 [linux][debian] Debian buster + Apache2 の設定作業

自宅サーバ代替機(キューブPCケース機、Intel D945GSEJT使用)、Debian Linux 10 buster 32bit版 + Apache2 2.4.38-3+deb10u5 で、Apache2 の設定を始めた。

Apache2とPerlをインストール。 :

Apache2 と Perl をインストール。
apt install apache2
apt install perl

初期htmlフォルダは /var/www/html/。デフォルトでは、http://hoge/ にアクセスすると、/var/www/html/index.html が表示される。

設定ファイルは /etc/apache2/ 以下にある。/etc/apache2/apache2.conf がメインの設定ファイル。

_【2020年最新版】DebianにウェブサーバーApache2をセットアップ

ユーザのホームディレクトリを有効化。 :

以下を参考に作業。

_Debian 10 Buster : Apache2 : ユーザーのホームディレクトリを利用する : Server World

a2enmod userdir
systemctl restart apache2
初期設定では、~/public_html/ 以下が公開される。

cgiを有効化。 :

以下を参考に作業。

_Debian 10 Buster : Apache2 : Perlスクリプトを利用する : Server World

モジュール有効化。Apache2再起動。
a2enmod cgid
systemctl restart apache2

初期設定状態では、/usr/lib/cgi-bin/ 以下に cgi を入れておくと、http://hoge/cgi-bin/hoge.cgi で実行できる。

任意のフォルダ以下でも実行できるように設定してみる。例えば、/var/www/html/cgi-enabled/ 以下を対象にしてみる。
mkdir /var/www/html/cgi-enabled
vi /etc/apache2/conf-available/cgi-enabled.conf
以下を記述。指定フォルダ以下で .cgi や .pl を実行可能にしている。
<Directory "/var/www/html/cgi-enabled">
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl
</Directory>

設定ファイルの有効化。
a2enconf cgi-enabled
systemctl restart apache2

前述のページ内で紹介されているスクリプトで動作確認。

テストスクリプトの例。その1。

/usr/lib/cgi-bin/test_script.cgi
#!/usr/bin/perl

print "Content-type: text/html\n\n";
print "Hello CGI\n";

chmod 755 /usr/lib/cgi-bin/test_script.cgi

http://hoge/cgi-bin/test_script.cgi でアクセス。

テストスクリプトの例。その2。

/var/www/html/cgi-enabled/index.cgi
#!/usr/bin/perl

print "Content-type: text/html\n\n";
print "<html>\n<body>\n";
print "<div style=\"width: 100%; font-size: 40px; font-weight: bold; text-align: center;\">\n";
print "CGI Test Page";
print "\n</div>\n";
print "</body>\n</html>\n";

chmod 755 /var/www/html/cgi-enabled/index.cgi

http://hoge/cgi-enabled/index.cgi でアクセス。

Apache2を動かしているのは誰なのですか。 :

Vine Linux上では Apache を動かしていたのは apacheユーザだったけど、Debian は誰が動かすのだろう。例えば Apache2 がファイルを作成した場合、所有者は誰になるのか…?

_www-dataイズ誰? - やってみなくちゃわからない。わからなかったらやってみよう!@プリチャンを見て
_ubuntuのapacheユーザーとグループ - Qiita

Deian Linux 10 の場合、Apache2 を動かしているのは www-data というユーザらしい。

たしかに、/etc/apache2/envvars 内に記述があった。
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

旧自宅サーバ機から持ってきたファイルに対して、apacheユーザ所有だったファイル群を、www-data の所有に置き換えておいた。
sudo chown -R --from=xxxx www-data:www-data *

.htaccess を有効化。 :

ディレクトリ毎にサーバ設定を変更できる、.htaccess を有効化する。

_Apacheの「.htaccess」を有効にする方法 | ex1-lab
_Apache ウェブサーバーで .htaccess を有効にする │ TEAM T3A
_Debian Apache2の設定(1)

sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.orig
sudo vi /etc/apache2/apache2.conf

AccessFileName でファイル名を指定。
AccessFileName .htaccess
↓
AccessFileName .htaccess_custom

ディレクトリに対する設定内で AllowOverride ALL を指定すれば有効化できる。
<Directory />
  Allowoverride All
</Directory>

Apache2再起動。
sudo systemctl restart apache2

BASIC認証を利用。 :

BASIC認証を使えば、ユーザ名とパスワードを入力しないとアクセスできないディレクトリを作れる。

authz_groupfile を有効化すればいいらしい。
apt install apache2-utils
a2enmod authz_groupfile
systemctl restart apache2

_Debian 10 Buster : Apache2 : Basic認証を利用する : Server World
_[Apache] Invalid command ‘AuthGroupFile’ エラー対処法 - 端くれプログラマの備忘録

#3 [linux][debian][prog] imgboard.cgiが動かなくて悩んだ

Debian Linux 10 buster + Apache2 2.4.38-3+deb10u5 上で、Perl CGI の動作確認を兼ねて imgboard.cgi を動かそうとしたら、Internal Server Error が出て悩んだ。Vine Linux 上では動いていたスクリプトなのだけど…。

Perlのバージョンは以下。
$ perl --version
This is perl 5, version 28, subversion 1 (v5.28.1) built for i686-linux-gnu-thread-multi-64int

imgboard.cgi は以下から入手。

_imgboard.com CGIダウンロードセンター

今まで利用していた Rev.6.1v2 ではなく、imgboard Rev6.1 v4 をDLして試したけれど、結果は同じ。エラーになる。

perl imgboard.cgi を実行して出力結果を眺めたら、正規表現の記述でエラーが出ているようで。

ただ、Debian Linux は UTF-8 だけど、imgboard.cgi は SJIS で書かれているので、該当行が表示されても日本語文字列が全部文字化け(?)していて、どこが原因なのか分からない…。

以下を打つことで、エラー出力をファイルにすることができた。
perl imgboard.cgi 2> error.txt

error.txt を、エンコードを切り替えられるエディタで開いて確認したところ、原因が分かってきた。
Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/東京|区|市|郡|府 <-- HERE |県|北海道|字|町|番地/ at /home/www/blackwater/public_html/cgi-bin/imgboard.cgi line 7571.
Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/(東京都|大阪府 <-- HERE |京都府|[^\s\>\d]+県|北海道)([^\s\>\d]+)(市|区)([^\s\>\d]+)([0-90-9]+)(\-|−|丁目|の|ノ)([0-90-9]+)([\-|−|の|ノ]?)([0-90-9]?)/ at /home/www/blackwater/public_html/cgi-bin/imgboard.cgi line 7574.
Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/(東京都|大阪府|京都府 <-- HERE |[^\s\>\d]+県|北海道)([^\s\>\d]+)(市|区)([^\s\>\d]+)([0-90-9]+)(\-|−|丁目|の|ノ)([0-90-9]+)([\-|−|の|ノ]?)([0-90-9]?)/ at /home/www/blackwater/public_html/cgi-bin/imgboard.cgi line 7574.
Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/(東京都|大阪府 <-- HERE |京都府|[^\s\>\d]+県|北海道)([^\s\>\d]+)(市|区)([^\s\>\d]+)([0-90-9]+)(\-|−|丁目|の|ノ)([0-90-9]+)([\-|−|の|ノ]?)([0-90-9]?)/ at /home/www/blackwater/public_html/cgi-bin/imgboard.cgi line 7578.
Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/(東京都|大阪府|京都府 <-- HERE |[^\s\>\d]+県|北海道)([^\s\>\d]+)(市|区)([^\s\>\d]+)([0-90-9]+)(\-|−|丁目|の|ノ)([0-90-9]+)([\-|−|の|ノ]?)([0-90-9]?)/ at /home/www/blackwater/public_html/cgi-bin/imgboard.cgi line 7578.

「正規表現を指定する文字列の中に『{』が入っているぞ」と怒られてるようで。最近の Perl ではエラー扱いにするようになった模様。ただ、実際には「{」なんてどこにも書かれてない。

いわゆるダメ文字の問題だった。SJISで書かれた Perlスクリプトでよく発生するアレ。

_fudist - ダメ文字一覧表

「京都府」「大阪府」の「府」に、0x7b = 「{」が含まれてしまっている。「{」が直接記述されているなら「\{」と書くことで回避できるけど、漢字の中に含まれているとなると…対策が思いつかない…。

仕方ないので、「府」だけを削除してみた。「京都府」「大阪府」は「京都」「大阪」に。そもそも、自動住所リンクが有効設定になっている時に処理が走るようなので、該当設定を無効にしておいた。
#  <Google MAP 自動住所リンクのオンオフ> 
#
#  本文中にある住所らしき文字を拾って、Google Mapのリンク化する自動住所リンクは
#  デフォルトでONです。オフにしたい場合は、以下のフラグを変更してください。
#  (1=ON(推奨),0=OFF)
$PM{'auto_japanese_address_find'}=0;

この状態なら画面が表示…されなかった。まだエラーが出ている…。

今度は、require "$imgsize_prog" if(-e "$imgsize_prog"); でエラー。最近の Perl は、スクリプトの置いてあるディレクトリ内(「.」)を検索しないようになったので、imgboard.cgi と同階層に置いてある、$imgsize_prog = "imgsize.pl" が見つからない模様。

require "./$imgsize_prog" if(-e "./$imgsize_prog"); に書き換えたら動いてくれた。

古いスクリプトだから仕方ないけど、SJIS で書かれた Perlスクリプトはこういう罠があるなと…。UTF-8 ならこういう問題に遭遇しないのだろうか。

#4 [firefox] FirefoxのURL欄にhttp://を表示したい

Apache2の動作確認をするために、Windows10 x64 21H1 + Firefox 89.0.2 からサーバ機にアクセスして、ページを開いて確認しているのだけど。ちょっと困った仕様に遭遇。

FirefoxのURL欄・アドレスバーは、http:// を省略してしまう。URLの最後だけ書き換えてページ移動しようとすると、 http:// 抜きの文字列で検索サイトに飛んでしまって誤動作する。

例えば 「http://hoge/」にアクセスした後、最後のあたりだけ修正して「http://hoge/test.cgi」を開こうとしても、URL欄では「hoge/」になっているから「hoge/test.cgi」の文字列でWeb検索されてしまう。

省略表示をしないようにしたい。

about:config で以下を false にする。
どうしてこんな余計なことをするのかと思ったけれど、Google Chrome に比べたら設定変更できるだけマシらしい…。

_Firefox の アドレスバー で URLを省略しないようにする(「http://」を表示する) :Tips & FAQ | arbk-works Blog
_FirefoxやChromeでアドレスバーにhttp, httpsを表示させる方法 | PC好きの備忘録

2021/07/16(金) [n年前の日記]

#1 [debian][linux] Debian buster + Apache2 の設定作業その2

_昨日の作業 に引き続き、自宅サーバ代替機(キューブPCケース機、Intel D945GSEJT使用)、Debian Linux 10 buster 32bit版 + Apache2 2.4.38-3+deb10u5 で、Apache2 の設定を続行中。

mod_rewriteを有効化。 :

URLの書き換えやリダイレクトをしてくれる mod_rewrite を有効化する。コレを利用することで、本来は *.cgi?xxxx というURLで提供されている hns の各リンクを、xxxx.html に置き換えることができたりする。

a2enmod rewrite
systemctl restart apache2

記述例。
<IfModule mod_rewrite.c>
    RewriteEngine  On
    RewriteBase    /
    RewriteCond    %{REQUEST_FILENAME}  !-f
    RewriteRule    ^(.*)$               adiary.cgi/$1   [L]
</IfModule>

_[Debian/Apache2] mod_rewriteを有効にする - かえでのWebログ

mod_statusを有効化。 :

Apache2の状態を確認できる mod_status を有効化する。
a2enmod status
cd /etc/apache2/mods-available/
cp status.conf status.conf.orig
vi status.conf 
以下を追加・修正して、LAN内のみで確認できるようにする。Require ip 192.168.1.0/24 を追加することで、192.168.1.* のPCからアクセスできるように指定。
<IfModule mod_status.c>
        <Location /server-status>
                SetHandler server-status
                Require local
                Require ip 192.168.1.0/24
        </Location>

        ExtendedStatus On
        #SeeRequestTail On

        <IfModule mod_proxy.c>
                # Show Proxy LoadBalancer status in mod_status
                ProxyStatus On
        </IfModule>
</IfModule>

以前は以下のような指定だったみたいだけど…。
  Allow from 127.0.0.1
  Allow from 192.168.1.0/24
最近の Apache2 は、Require ip 192.168.1.0/24 みたいな記述に変わったようだなと…。

http://SERVERNAME/server-status にアクセスすれば状態が見れる。

_Ubuntuでmod_statusを使用してApacheのパフォーマンスを監視する方法
_Ubuntu 10.04 LTS - WEBサーバー - mod_statusを使う : Server World

hns関係の設定を始めた。 :

hns関係の設定メモは別記事に残しておこう…。

#2 [hns][debian][linux] Debian 10 buster上でhnsを動かすべく設定作業

Debian Linux 10 buster 32bit版 + Apache2 2.4.38-3+deb10u5 + Perl 5.28.1 で、hns を ―― この日記ページシステムを動かすべく作業中。

defined()を修正。 :

hns は昔のPerlで動かす作りなので、あちこちの記述が今のPerlと合ってない。修正しないといけない。

まず、defined( @... ) がエラーを出していた。昨今の Perl は defind() を省いて記述するらしい。

lib/ObjectTemplate.pm
    if (defined (@{"${pkg}::ISA"})) {
↓
    if ( @{"${pkg}::ISA"} ) {

defined( %... ) もエラーを出すけれど、そのあたり、手元のスクリプトでは、以前修正していた模様。

正規表現指定時に「{」があるとエラー。 :

昨今の Perl は、正規表現の指定時に 「{」が入っているとエラーになる。「\{」にする。

lib/HNS/Diary.pm
    $head =~ s/%user{([A-Z]+)}/$self->user_var->Eval($1)/ge; # user var
↓
    $head =~ s/%user\{([A-Z]+)}/$self->user_var->Eval($1)/ge; # user var
    $user_var =~ s/%user{([A-Z]+)}/$self->user_var->Eval($1)/ge; # user var
↓
    $user_var =~ s/%user\{([A-Z]+)}/$self->user_var->Eval($1)/ge; # user var

lib/HNS/Template.pm
    $template =~ s/%{?([A-Za-z0-9_]+)}?/$$params{$1}/g;
↓
    $template =~ s/%\{?([A-Za-z0-9_]+)}?/$$params{$1}/g;

lib/HNS/Hnf/Command.pm
    $$attr =~ /^#{.*#(\d{4})(\d{2})(\d{2})((\d+)(S(\d+))?)?}$/) {
↓
    $$attr =~ /^#\{.*#(\d{4})(\d{2})(\d{2})((\d+)(S(\d+))?)?}$/) {

lib/HNS/Hnf/UserVar.pm
        $template =~ s/%user{([A-Z]+)}/($1 eq $name) ? "'$name' FORMAT ERROR: self-reference" : $self->Eval($1)/ge; #call recursible
↓
        $template =~ s/%user\{([A-Z]+)}/($1 eq $name) ? "'$name' FORMAT ERROR: self-reference" : $self->Eval($1)/ge; #call recursible

theme.ph が見つからない。 :

index.cgi の中で、カスタムテーマファイル $theme_ph を require しようとして見つからないと言い出す。昨今の Perl は検索パスの中から「.」が除外されたのでそういうことが起きる。ひとまず、「./」を頭につけて誤魔化す。

index.cgi
    unless (-f "$theme_ph"){
    die "no theme file : $theme_ph";
    }
    require "$theme_ph";
↓
    unless (-f "./$theme_ph"){
    die "no theme file : ./$theme_ph";
    }
    require "./$theme_ph";

ここまで修正して、ようやく hns が Debina Linux 10 buster 上で動くようになった。数日ぶりに懐かしい(?)ページが表示された。

hns-index2を動かすべく作業。 :

hns は Namazu v2 for hns というプログラム群を動かすことで検索機能を持たせることができる。

_Namazu v2 for hns による日記の全文検索

~/diary/bin/hns-index2 を実行することで、検索用インデックスを作成する。この hns-index2 を動かせる状態にしないといけない。

今回は、Namazu v2 for hns をローカルアカウントに再インストールすることにする。

必要なパッケージをインストール。もしかすると不要なパッケージが混じっているかもしれないけど…。
sudo apt install nkf chasen kakasi mecab
sudo apt install jcodepl libunicode-maputf8-perl
sudo apt install libtext-kakasi-perl libtext-chasen-perl libtext-mecab-perl libmecab-perl
sudo apt install libnkf-perl libfile-mmagic-perl libfile-spec-perl libwww-perl libimage-size-perl
sudo apt install namazu

旧自宅サーバ機(Vine Linux機)から、既に、~/ は持ってきているので、~/namazuv2forhnssetup/ に関連ファイルが入っていた。それらファイルを使って再インストール作業をする。

namazu2 をインストール。
mkdir ~/lib

cd ~/namazuv2forhnssetup/namazu-2.0.21/
make clean
./configure --prefix=$HOME/diary/namazu2 --with-pmdir=$HOME/lib
make
make install
これで、~/diary/namazu2/ 以下に色々なファイルがインストールされた。

namazu_for_hns をインストール。
cd ../namazu_for_hns-2.0-pl5
./setup-filter.sh $HOME/diary/namazu2
./setup-u.sh $HOME/diary/namazu2
これで、~/diary/bin/ 以下に色々なファイルがインストールされた。

hns-index2 を実行してみる。
cd ~/diary/bin
./hns-index2

locale 関係のエラーが出た。hns-index2 は Perlスクリプトなので、テキストエディタ等で中を覗くことができる。hns-index2 内の LC_ALL を指定してるあたりを以下のようにしてみたらエラーが出なくなった。
LC_ALL="ja_JP.UTF8"
export LC_ALL

また、一部のPerlスクリプトがエラーを出している。「{」を「\{」にしないといけない。
Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/%{ <-- HERE ?([a-z]+)}?/ at /home/mieki256/diary/namazu2/share/namazu/filter/hnf.pl line 244.
Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/%{ <-- HERE ?([a-z]+)}?/ at /home/mieki256/diary/namazu2/share/namazu/filter/hnf.pl line 244.
Useless use of greediness modifier '?' in regex; marked by <-- HERE in m/^\w+:{1,1}? <-- HERE / at /home/mieki256/diary/namazu2/share/namazu/filter/mp3.pl line 155.
以下のファイルを修正。
  • ~/diary/namazu2/share/namazu/filter/hnf.pl の244行。
  • ~/diary/namazu2/share/namazu/filter/mp3.pl の155行。

これで hns-index2 が動いてくれるようになった。

hns-index2の文字化け対策。 :

hns-index2 の出力する文字コードは euc-jp なのだけど、Debian Linux の標準の文字コードは UTF-8 なので、何が出力されているのか分からない。

hns-index2_ss01.png

nkf を使って変換する。
$ ./hns-index2 | nkf -w
検索対象のファイルを調べています...
インデックスすべきファイルはありません

一応他の操作もメモ。ゴミファイルを削除するなら以下。
./hns-index2 -gc | nkf -w

インデックスを作り直すなら以下。
./hns-index2 clean | nkf -w
何か表示がおかしい場合、これを使ってインデックスを作り直せば解決することが多い。

mknmzrc を変更。 :

~/diary/namazu2/etc/mknmzrc を修正。以下に対応させる。
  • LAN内でも検索結果を使えるようにする。
  • mod_rewrite に対応させる。

$ADDRESS = 'hoge@fuga.com';

$hnf::diary_uri = "";

$hnf::author = 'hoge@fuga.com';

$hnf::link_templ = '%year%month%day.html#%year%month%day0';   # one day

crontabで指定。 :

一般的には hns-index2 を cron で定期的に実行するものだろうけど、hns-index2 だけを実行すると相変わらず結果が文字化けする。

「| nkf -w」をつければ文字化けしないが、crontab 内にパイプは書けない。別途スクリプトを書いて、そのスクリプトを crontab 内で指定する。

~/diary/bin/hns-index2-cron.sh を作成。中身は以下。
#!/bin/sh
/home/USERNAME/diary/bin/hns-index2 | nkf -w

パーミッションを変更。
chmod 755 ~/diary/bin/hns-index2-cron.sh

./hns-index2-cron.sh を実行してみて正常に動作するか確認。

crontab -e で、毎日処理するように指定。
30 6 * * * /bin/sh /home/mieki256/diary/bin/hns-index2-cron.sh
時、分、日、月、曜日、コマンド、の順で記述するらしい。

検索ページのカスタマイズ。 :

公式ドキュメントにも書いてあるけど一応メモ。

検索ページの表示テンプレートは以下にある。
~/diary/namazu2/template/

以下が、日本語表示のテンプレート。
NMZ.body.ja
NMZ.foot.ja
NMZ.head.ja
NMZ.result.normal.ja
NMZ.result.short.ja
NMZ.tips.ja

テンプレートは、基本的に HTML で記述されている。一部、<!-- FILE --> のような特別な意味のあるコメントや、{cgi} のように namazu.cgi で自動的に変換される文字列があるので、それらはそのままに。

既にインデックス作成済みの場合、テンプレート修正後に、~/diary/namazu2/index/ にある以下のファイルを削除してから、hns-index2 clean を実行してインデックスを更新する。
NMZ.body.ja
NMZ.foot.ja
NMZ.head.ja
NMZ.result.normal.ja
NMZ.result.short.ja
NMZ.tips.ja
インデックスが更新されないと NMZ.*.ja は作成されない。

とにかく、テンプレートファイルを修正したら、特定ファイルを削除してから hns-index2 clean を走らせる…と覚えておけば良さそう。

#3 [nitijyou] 雑貨を購入

ホーマックと100円ショップSeriaに寄って色々購入。

クッションを買い替えた :

PC作業時、椅子にクッションを載せて、その上に座っているけれど、そろそろ汚れが目立ち始めたので新しいクッションを購入。Seriaで、38x38cm のクッション、40x40cmのクッションカバーを購入。

しかし、帰宅後、椅子に載せてみたら、小さい…。どうやら 50x50cm以上の大きさじゃないとダメっぽい。またどこかで探してこないと。

台所の止水栓を購入。 :

台所の止水栓が壊れたとのことで、ちょうどホーマックに行く予定だったから買ってきた。流し台ゴミ受、とレシートには書いてある。直径 8.5cm、深さ2cm。税込1,078円。結構高い…。その分、ある程度は頑丈であることを期待。

100円ショップ Seria にも寄ってみたけど、そちらは10cm以上のサイズしかなく。どうやら直径8.5cmというのは昭和のチマチマした台所の規格っぽい気配がする。今となってはマイナーなサイズなのではないかと想像したけど、どうなんだろう。

ついでに、3m延長電源コードも購入。DCMブランド品。税込437円。3M製コード用フックSサイズ透明も購入。415円。延長コードは脱衣所に設置した扇風機を回すために使う。

2021/07/17() [n年前の日記]

#1 [linux][debian] PuTTY + Vim で選択した文字列をコピーしたい

Windows10 x64 21H1 + PuTTY + Vim で、選択した文字列を Windowsのクリップボードにコピーしたいのだけど…。PuTTY上で動かしている vim で文字列を選択してもコピーできない・Windowsのクリップボードに入らないわけで。

_vim over PuTTY でクリップボードを使う方法 - ほっしーの技術ネタ備忘録
コピー

設定/ウィンドウ/選択 にある「Shift がアプリケーションのマウス使用を無効にする」にチェックを入れておきます。後は、vim で表示されている文字列を Shift キーを押しながらドラッグすれば、その範囲が Windows のクリップボードにコピーされます。

ペースト

vim 上で挿入モードになって入ってから、PuTTY 上で Alt+右クリック。出てくるメニューから Paste を選択。

vim over PuTTY でクリップボードを使う方法 - ほっしーの技術ネタ備忘録 より


ペーストは試してないけど、コピーはたしかに動作した。助かった。ありがたや。

クリップボードの内容を表示して確認。 :

GhostBoard というツールを使って、Windowsのクリップボードにコピーされてるかどうかを確認。

_GhostBoard - k本的に無料ソフト・フリーソフト
_GhostBoardの詳細情報 : Vector ソフトを探す!

Windows 7/Vista/XP までの対応と書いてあるけれど、Windows10 x64 21H1 でも動作しているように見える。

2021/07/18() [n年前の日記]

#1 [anime] 「劇場版 夏目友人帳 〜うつせみに結ぶ〜」を視聴

BS12で放送されていたので視聴。初見。

これはよい。実にイイ感じのアニメ映画なのでは…。

ただ、あくまでTVアニメの劇場版なので、基本設定の説明が随分省略されてるのがちょっとアレではあったなと。それでも冒頭で主人公の能力ぐらいは説明してたからマシなのだろうか…。一応自分は原作漫画の初期のあたりを読んでたからまだアレなほうだけど、まったく知らない人がこの劇場版を見てもどこまで設定が分かることやら…。TV東京系のアニメなので、日本全国的には無料放送されてなくて、つまりは視聴できている人も少ないはずで…。 *1 内容はかなりイイ感じのアニメなのに、TV局側の扱いがアレなせいで、なんだかもったいない…。
*1: いやまあ、一時期、おそらくは映画の宣伝を兼ねて、BSでもセレクション放送はされたのだけど。あくまでセレクション放送なので…。

2021/07/19(月) [n年前の日記]

#1 [nitijyou] 暑い

朝の時点で部屋の温度が29度。これはヤバイなと…。

ベランダに寒冷紗を取り付けた。これでエアコンの室外機に直射日光が当たらなくなることを期待。

#2 [debian][linux] 自宅サーバ代替機の設定作業中

自宅サーバ代替機(キューブPCケース機、Intel D945GSEJT使用)の各種設定作業中。自宅サーバ機の環境は、Debian Linux 10 buster 32bit版。

DDNS更新ツールの導入。 :

DDNSサービス No-IP の Dynamic Update Client (DUC) を Debian Linux 10 buster に導入。一定時間毎に No-IP にアクセスして、こちら側のIPが変わっていたら反映させるツール。

公式サイトのアカウントページにログインして、noip-duc-linux.tar.gz を入手。root になってから、/usr/local/src/ にコピーして、以下を行う。
cd /usr/local/src
tar xzf noip-duc-linux.tar.gz
cd no-ip-2.1.9
make
make install
  • /usr/local/bin/noip2 として実行ファイルがインストールされる。
  • /usr/local/etc/no-ip2.conf が設定ファイル。

make install をすると、以下の必要な情報を尋ねてくるので入力する。
  • ログイン用メールアドレス
  • パスワード
  • 更新間隔(単位は分)
  • 更新した際に何か処理をするかどうか

  • 再設定したい場合は、/usr/local/bin/noip2 -C を実行。
  • /usr/local/bin/noip2 を実行すれば常駐してIPアドレスの更新を行う。
  • /usr/local/bin/noip2 -S で、動作状態や設定内容を確認できる。

noip2の自動実行。 :

OSが起動したら noip2 が自動実行されるようにしたい。

/usr/local/src/no-ip-2.1.9/ に debina.noip2.sh というファイルがある。これを /etc/init.d/noip2 としてコピー後、内容を修正すれば、自動実行の設定ができる…ような感じがする。
cp /usr/local/src/no-ip-2.1.9/debina.noip2.sh /etc/init.d/noip2
vi /etc/init.d/noip2

2行目に色々追加。最近の Debian の /etc/init.d/ 以下はこういうのを書いておくことになっている、ということなのかな…?
#! /bin/sh

### BEGIN INIT INFO
# Provides:          noip2
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Should-Start:      $syslog
# Should-Stop:       $syslog
# Short-Description: Start/stop noip2
### END INIT INFO
# /etc/init.d/noip2

/etc/init.d/xxx としてファイルを置けば、service で実行/停止/再起動ができる…?
service noip2 start
service noip2 stop
service noip2 restart
ps aux | grep noip2 でプロセスがあるか確認。

update-rc.d を使って自動実行するように登録するらしい。
update-rc.d noip2 defaults

しかし、OSを再起動しても noip2 が起動しているようには見えない。

sysv-rc-conf というツールで設定もできるらしい。
apt install sysv-rc-conf
sysv-rc-conf

sysv-rc-conf で確認したら、何故か noip2 が全ての runlevel で無効になっていた。2,3,4,5 を有効化してみた。
# sysv-rc-conf --list | grep noip2
noip2        0:off      1:off   2:on    3:on    4:on    5:on    6:off

この状態なら、OS起動時に自動実行してくれる模様。

参考ページ。

_Raspberry piにNo-IP DUCをインストールしてダイナミックDNSのIPを更新させる | 手間ひまかけて楽をする
_Raspberry Piでno-ipのDynamic DNSを使う | nogu.net
_Ubuntu で chkconfig の代わりに update-rc.d を使う | cloud.config Tech Blog
_Debian 系 Linux - サービス自動起動設定! - mk-mode BLOG
_Debian 9 (Stretch) - サービスの管理! - mk-mode BLOG
_Debian 10 (buster) - サービスの管理! - mk-mode BLOG

systemDを使って登録する場合。 :

前述の方法では /etc/init.d/ にスクリプトを置いて自動実行していたけど、今時の Linux は systemD なる仕組みで自動実行する場合がほとんどっぽい。一応その方法も調べてみた。

/etc/systemd/system/ 以下に、noip2.service を作成する。

例その1:
[Unit]
Description=No-ip.com dynamic IP address updater
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target
Alias=noip.service

[Service]
# Start main service
ExecStart=/usr/local/bin/noip2
Restart=always
Type=forking

例その2:
[Unit]
Description=noip2 service

[Install]
WantedBy=default.target

[Service]
ExecStart=/usr/local/bin/noip2
Restart=always
Type=forking

以下で登録。
systemctl daemon-reload
systemctl enable noip2
systemctl start noip2

参考ページ。

_Systemd Service file for no-ip.com dynamic ip updater
_How to install the noip2 on Ubuntu and run via systemd systemctl (noIP Dynamic Update Client) - blackMORE Ops
_NO-IPダイナミックドメインの再設定 - shinji629のブログ
_Linux の任意のスクリプトをサービス登録し OS 起動時に自動起動させる [init.d/SystemD 編] - Qiita
_No-IP+動的IPアドレスへの対応 - Linux / Server - FICUSONLINE FORUM

chkrootkitをインストール。 :

ルートキット検出ツールの chkrootkit をインストール。
apt install chkrootkit
chkrootkit

インストールしただけで、毎日実行するように設定してくれる…のかな。/etc/cron.daily/ 以下に chkrootkit というスクリプトがあるけれど…。でも、これって何時頃に実行されるのだろう…。

_Debian 9 (Stretch) - rootkit 検出ツール chkrootkit インストール! - mk-mode BLOG

vsftpdのアクセス制限。 :

hosts.allow、hosts.deny を使って vsftpd のアクセス制限をする。

_vftpdにIPのアクセス制限をかける - susan-styleの日記

/etc/vsftpd/vsftpd.conf 内に tcp_wrappers=YES を追記。これで、hosts.allow、hosts.deny を使ってアクセス制限ができるらしい。

hosts.deny 内の記述例。
vsftpd: 1.15.
vsftpd: 1.30.

Postfix+Dovecotのインストール。 :

メールサーバ Postfix + Dovecot をインストール。Postfix は送信サーバ。Dovecot は受信サーバ。

以下のページを参考にして作業した。/etc/postfix/main.cf や /etc/dovecot/ 以下を色々修正。

_Debian 10 Buster : Postfix : インストール : Server World
_Debian 10 (buster) - SMTP サーバ Postfix 構築! - mk-mode BLOG
_Debian 10 Buster : Dovecot : インストール : Server World
_Debian 10 (buster) - POP/IMAP サーバ Dovecot 構築! - mk-mode BLOG
_Debian 10 Buster : メールユーザーアカウント登録 : Server World

自分の環境の場合、プロバイダに plala を使っているので、/etc/postfix/main.cf 内で relayhost を設定した。
relayhost = mmr.plala.or.jp

当初、mail xxxx@localhost をしてもメールが送れない・届かなくて悩んだけれど、/etc/postfix/main.cf の中で header_check 云々の行を有効にしていたのが原因だった。Vine Linux で使ってた設定ファイルを眺めて有効にしてしまったけれど、ウイルス対策用の機能だったらしい…。該当行をコメントアウトしたらメールの送受信ができるようになった。

#3 [anime] 「きみの声をとどけたい」を視聴

BS12で放送されてたので視聴。アニメ映画。女子高生達が海辺の町のミニFM局を舞台にしてアレコレするお話。

恥ずかしながらこんなアニメがあったことすら全く知らなかったのだけど、これはなかなかイイ感じのアニメだなと…。

「ちなつのシュート!」の青木俊直さんのキャラデザ原案、「干物妹!うまるちゃん」「からかい上手の高木さん」の郄野綾さんのアニメ用キャラデザが、個人的には結構好み。

話のほうも、フツーにイイ感じのソレで。いやまあ、人によってはお約束だのテンプレだの言い出しそうだけど、こういうソレで奇を衒ってみてどうするのと思うし。

小さい子供さんからお爺ちゃんお婆ちゃんまで、安心して万人に見せることができる、イイ感じのアニメだったなと…。ただ、その分、尖った部分はほとんど無いので、刺激性を求めてる人には不評だったのかなと思ったりもして。

それはさておき。劇中においてラジオというメディアは使えるなー、と再認識。これがもし…。 そんな置換がされてたら色々台無しになりそうな予感。

#4 [nitijyou] クッションを購入

ホーマックでクッションを購入。レシートには、DCM ひんやり低反発、と書いてある。45x45cm。657円。PCの作業用の椅子で使う予定。

当初、クッション売り場で探したものの、何故か40x40cmのクッションばかりで。品質は別にして、そのサイズなら100円ショップでも売ってるわけで、45x45cm とか 60x60cm とかそういうサイズを置いておかないと差別化できないのではないかな…。

仕方なくカー用品売り場で探してみた。そちらは45x45cmの商品がたくさん置いてあった。消臭を謳う製品や、座り心地を謳う製品等々、機能面も色々な選択肢が用意されていた。ただ、シートに差し込む部分もついていたりして、ちょっと余計なモノもついてるけれど。

店頭の商品群を眺めていてなんとなく思ったけれど、カーシート(?)と、事務用の椅子関係は、相互に商品や部材を応用できそうな気がしてきた。利用時の姿勢はかなり違うけど、体重を預ける何かという点では一致しているから、一部のグッズに関しては商品ジャンルとして融合すらできてしまうのではないかと…。

いやまあ、実際、カーシートにしか見えないパソコン作業用の椅子が既にあるのだけど。ただ、あそこまで行くと…。作業時の姿勢が違うはずなのに、車側の形状をそのまま持ってくるのは、どうなんだろう…。

2021/07/20(火) [n年前の日記]

#1 [debian][linux] 自宅サーバ代替機を公開してみます

2021/07/13に、自宅サーバ機が壊れてしまったのですけど。

_mieki256's diary - 自宅サーバがお亡くなりになりました

代替機の設定が、そこそこある程度はできてきたような気がするので、一応試しに公開(?)してみます。

まだ設定面で不具合があるかもしれないので、しばらくの間は調整作業のために時々サーバが落ちているかもしれませんがどうか御容赦を…。

自宅サーバ止めてました。 :

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

#2 [debian][linux][hns] 自宅サーバ代替機の設定作業を続行中

自宅サーバ代替機の設定作業を続行中。

vsftpdでアップロード時のパーミッションを変更。 :

vsftpd 3.0.3-12 の利用時、アップロードしたファイルのパーミッションが 600 になっていた。そこは 644 にしてくれないと…。

/etc/vsftpd.conf を編集。
sudo vi /etc/vsftpd.conf

local_umask を指定することで、アップロード時のパーミッションを変更できるらしい。
local_umask=022

これで、ファイルは644、ディレクトリは 755 でアップロードされるようになった。

該当ファイルのコメントをよく読んだら、「デフォルトでは 077 だよ」と書いてあった…。

メールサーバが不正中継していないか確認。 :

メールサーバが不正中継をしていないか一応確認。

_メールリレーの第三者不正中継チェックサイト一覧 | りんか ネット
_open relay checker
_Anonymous Relay Test

試してみたけど大丈夫そう。たぶん。

hnsのファイルを一部修正。 :

hnsの一部のファイルが動かなかった。昨今の Perl の仕様と合ってない部分が残ってた模様。

title.cgi と headline.cgi 内の、require "$theme_ph"; を require "./$theme_ph"; に修正。

hnsのcacheが生成されない。 :

hnsのcacheが生成されてないことに気づいた。

以前も同じ問題が発生していたなと…。

_mieki256's diary - hnsのキャッシュが作成されない
_mieki256's diary - hnsのキャッシュが消去される問題

解決策は、~/diary/log/LM/ 以下のファイルを全削除すること。

動作確認のために ~/diary/log/cache_log にログを残してたけど、以下で内容をクリアしておいた。
truncate ~/diary/log/cache_log --size 0

_既存のファイルを空にするLinuxコマンド - Qiita

OS再起動時にメールを送る。 :

OS再起動時に、root に対してメールを送る。crontab に @reboot で登録するとできるらしい。

root になって crontab -e。以下を追加。
@reboot (echo "reboot!" ; date ; dmesg ; tail -800 /var/log/messages) | mail -s "`hostname` rebooted" root@localhost
@reboot を指定すると、再起動時に1度だけ呼ばれるらしい。mail はメール送信プログラム。-s で subject を指定。

_自動再起動時にはメール通知をさせたい - ITmedia エンタープライズ
_リブートしたらメール通知する方法 - webネタ

参考記事では「Mail」という何かを呼び出しているけれど、Debian Linux にはそれらしいものが見当たらず。試しに mail にしてみたら期待した動作になった。

mail を使う場合、おそらく以下のインストールが必要。
apt install mailutils

ユーザディレクトリ内でPHPが動かない。 :

ユーザディレクトリ内に置いた .php が動かないことに気づいた。

_【Ubuntu 16.04 LTS Server】apache2のユーザ公開WebフォルダでPHP実行を許可 | The modern stone age.

vi /etc/apache2/mods-available/php7.3.conf
<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>

↓

# <IfModule mod_userdir.c>
#     <Directory /home/*/public_html>
#         php_admin_flag engine Off
#     </Directory>
# </IfModule>

コメントで以下が書いてあった。
Running PHP scripts in user directories is disabled by default

To re-enable PHP in user directories comment the following lines (from <IfModule ...> to </IfModule>.)
Do NOT set it to On as it prevents .htaccess files from disabling it.
  • デフォルトでは、ユーザーディレクトリ内のPHPの実行は無効。
  • PHPを有効にするなら、<IfModule ...> から </IfModule> までコメントアウト。

ユーザディレクトリ内でも .php が実行できるようになった。

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

2021/07/05を最後に日記をアップロードしてなかったのでアップロード。

#4 [anime] 「ペンギン・ハイウェイ」を視聴

BS12で放送されてたので視聴。森見登美彦作品が原作のアニメ映画。監督は、「フミコの告白」の石田祐康監督。スタジオコロリド作品。

ジャンルとしては…いわゆるジュブナイル? になるのだろうか。フツーに面白かった。台詞回し(?)が独特なのは原作の力だったりするのかな。絵柄もスッキリ爽やかで実にイイ感じ。

2021/07/21(水) [n年前の日記]

#1 [debian][linux][prog] 自宅サーバ内の一部のCGIが動かなくなった

自宅サーバがハードウェア的に壊れて、代替機に変えたことで、OSも変わり、Apache2 のバージョンも上がり、Perlのバージョンも上がったわけだけど。そのせいで自宅サーバ内のCGIの一部が動かなくなっているようで、妹から「CGIが動いてない」と報告が…。

念のために、今現在の自宅サーバの環境をメモ。
調べてみたところ、動かない原因は、大抵2つが絡んでる模様。

jcode.plが古過ぎる。 :

まず、あちこちのCGIで使っている jcode.pl が古過ぎてエラーを出す。

昨今の Perl は defined() を使わないような記述を要求されるけど、jcode.pl は昔の Perl で動くように書かれているから defined() も使っていて…。

...
    &init_z2h_euc unless defined %z2h_euc;
...
    &init_z2h_sjis unless defined %z2h_sjis;
...

これは、以下のように修正しないといけない。
...
    &init_z2h_euc unless %z2h_euc;
...
    &init_z2h_sjis unless %z2h_sjis;
...

ググった感じだとPerl界隈では、

「jcode.pl なんて使ってんじゃねえ。古過ぎる」
「Jcode.pmも既に古い。それも使うな」
「今時の Perl は標準で Encode.pm が入ってるんだからソレを使うように書き直せ」

という風潮になってるようで。

ただ、WebからCGIスクリプトをDLして設置して動かしてるだけの人に、ソースを丸々書き直せと要求するのも…。いやまあ、今時、サーバにCGIを設置する人なんて開発者の類しか居ないだろうからアレではあるのだけど。CGIどころかhtmlを書いてアップロードする機会すらほぼ皆無だろうから、そりゃまあ「CGIを使いたい? するとお前はそういうスキルを持った人種だな。ソースを書き直せ」とか言い出すわな…。

さておき。せめて最新の jcode.pl を設置してみようと思っても、入手場所がよく分からず…。

ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/ というURLを見かけたけど、今時のブラウザは ftp:// を開けないじゃんよ…。

_jcode.pl - Wikipedia

require が動かない。 :

昔の Perl は、require "hoge.pl" と書けば、同じ階層に存在する hoge.pl を読み込んでくれたけど、今時の Perl は同階層を検索してくれない状態になっていて。場当たり的な解決策として、require "./hoge.pl" と書けば、一応読み込んでくれるけど…。

余談。シバン行が合ってない。 :

動かなかったCGIの最新版をDLして動作確認しようとしたらそれでも動いてくれなくて結構悩んでしまったのだけど。1行目のシバン行が合ってなかっただけだった。あるあるだ…。当時は当たり前だったアレコレを、もうすっかり忘れてる…。トホホ。

_シバン (Unix) - Wikipedia

「#!/usr/local/bin/perl」と書けば動く環境と、「#!/usr/bin/perl」と書けば動く環境があって、配布されてるCGIは前者だったけど、ウチの自宅サーバは後者だった…。

よく分かんない時は「#!/usr/bin/env perl」と書いとけば、ひとまず最低限動いたはず…。ただ、コレも、悪習だの何だの言われてた記憶があるけど…。動かないよりはマシじゃんよ、と言いたい気持ちも…。

_#!/usr/bin/env - どさにっき
_卜部昌平のあまりreblogしないtumblr - #!/usr/bin/env ...

#2 [linux] KNOPPIX 9.1 DVDをUSBメモリにインストールした

先日まで KNOPPIX 8.6.1 DVD を使って作業をしていたけれど、KNOPPIX 9.1 DVD が公開されていると知ったので、手持ちのUSBメモリにインストールしてみた。メンテナンス作業やファイルの救出作業をする際に、USBメモリからブートさせて作業したい。

USBメモリにインストール。 :

USBメモリの容量は8GB。DVD版を入れるので、4.7GBより容量が大きくないといけない…と思う。たぶん。作業は Windows10 x64 21H1上で行った。

使用したソフトは以下。
  • SD Card Formatter 5.0.1。USBメモリの初期化に使用。
  • VMware Workstation 16 Player 16.1.0 build-17198959。KNOPPIX 9.1 DVD を起動してUSBメモリにインストールするために使う。

USBメモリは、SD Card Formatter 5.0.1 を使って、事前に初期化しておいた。

_KNOPPIX - Live Linux Filesystem On CD

KNOPPIX_V9.1DVD-2021-01-25-EN.iso をDL。

Windows10 x64 21H1 + VMware Player上で、KNOPPIX_V9.1DVD-2021-01-25-EN.iso を使って起動する仮想PCを新規作成。かつ、仮想PCを起動。

KNOPPIXの起動時に以下を打ち込んで、日本語表示/日本語キーボード/3D描画無効化/日本時間で起動させる。
knoppix64 lang=ja xkeyboard=jp no3d tz=Asia/Tokyo

VMware Player 側からUSBメモリを扱えるようにする。VMware Player のウインドウの右上の、リムーバブルメディアっぽいアイコンを右クリックして「接続」。これで、USBメモリがホストOS(Windows10)から切断されて、ゲストOS(KNOPPIX)に接続される。

KNOPPIXデスクトップ画面の、左下のスタートボタン → Knoppix → Install KNOPPIX to flash disk、を選択。ウイザード形式でUSBメモリにインストールするための指定をする。

書き込み先のメディアの容量をよく見て、USBメモリ以外に書き込んでしまわないように気を付ける。

書き込みが終わったら、USBメモリからブートさせる際の起動オプションを、あらかじめUSBメモリ内で指定しておく。

USBメモリ内の \boot\syslinux\ 以下、3ファイルを修正。
syslinux.cfg
syslnx32.cfg
syslnx64.cfg

おおよそ、以下のような変更を行う。
DEFAULT auto
APPEND lang=en apm=power-off initrd=minirt.gz nomce hpsa.hpsa_allow_any=1 loglevel=1
↓
DEFAULT auto
APPEND lang=ja xkeyboard=jp no3d tz=Asia/Tokyo apm=power-off initrd=minirt.gz nomce hpsa.hpsa_allow_any=1 loglevel=1
エディタの置換機能で、「lang=en」を「lang=ja xkeyboard=jp no3d tz=Asia/Tokyo」に全置換。

これで、起動時にオプションを打ち込まなくても、日本語表示/日本語キーボード/3D表示機能無効化/日本時間でOSが立ち上がるように設定できる。

以下、参考ページ。

_Linux活用レシピ KNOPPIXの活用 最新版 KNOPPIX9.1 の日本語化
_KNOPPIX 9.1 DVD/CD 出てました - palm84.com
_KNOPPIX 9.1 CDで日本語版 Remaster USBメモリ作成 - palm84.com

KNOPPIXにsshでアクセス。 :

Windows機からKNOPPIX側にsshでアクセスしたい。

KNOPPIXのスタートボタン → Knoppix → Start SSH Server で、sshサーバを起動できる。初回起動時はパスワードを尋ねてくるので入力。Enterを押すと端末が閉じる。この状態で、既にsshサーバがバックグラウンドで動作している。

Windows機から、PuTTY等を使って ssh でログイン。ユーザ名は knoppix。パスワードは先ほど入力したパスワード。

KNOPPIX側のIPアドレスが分からないと ssh でアクセスできないかもしれない。ip a もしくは ip address でIPアドレスが確認できる。

KNOPPIXでsambaを起動。 :

KNOPPIXには、本来、sambaを起動するランチャー?があるけれど。8.6 や 9.1 はそのランチャーが正常に動作しないらしい。端末を開いて、手動で設定ファイル (etc/samba/smb.conf) を編集して、手動で nmbd と smbd を起動しないといかんらしい…。

_KNOPPIX 9.1 CDで日本語版 Remaster USBメモリ作成 - palm84.com
_KNOPPIX 9.1 DVD/CD 出てました - palm84.com

まず、ランチャーを起動して、設定ファイルを作成。スタートボタン → Knoppix → Samba Server。config を選択してOK。パスワードを入力。

終わったら、start と config の選択ウインドウが再度開くので、キャンセルして終了。

設定ファイルを編集。
sudo vi /etc/samba/smb.conf

# secutity = user の行の「#」を削除して有効化。

自分の環境の場合、以下も書き換えた。
   #workgroup = WORKGROUP
   workgroup = HOGEGROUP
   netbios name = MICROKNOPPIX

sambaを利用するユーザを追加。
sudo smbpasswd -a knoppix
パスワードも入力。

nmbd と smbd を起動。
sudo /etc/init.d/nmbd restart
sudo /etc/init.d/smbd restart

Windows機から、KNOPPIX側のIPアドレス、もしくはホスト名に、ping を打ってみる。ping が無反応なら、LAN内で KNOPPIX側にアクセスできる回線状況にはなってない。
ping 192.168.x.x
ping microknoppix

エクスプローラ等でアクセスしてみる。Win+Rキーを押して、以下を打ってみても良い。
\\192.168.x.x
\\microknoppix

開く際、ユーザ名(knoppix) とパスワードを尋ねてくるので入力。

#3 [anime] 「リズと青い鳥」を視聴

BS12で放送されてたので視聴。京都アニメーションが制作したアニメ映画。TVアニメ「響け! ユーフォニアム」の続編と言うか外伝と言うかスピンオフと言うかそんなポジションの作品だけど、眺めた感じではTVアニメ版を見ていない人でも全然理解できる映画になっていた印象。

感想としては…。スゴイ。何がどうスゴイのか、ちょっと自分如きでは言語化できない…。もしかして、映画をたくさん見ている人なら、「ああ、ハイハイ。あのジャンルね。ありがちありがち」と言い出すのかもしれないけれど、自分はほとんど映画を見てない人間なので、なんだか軽くカルチャーショックを受けてしまった。このアニメは…これは一体何なのだろう…。

まあ、とにかくスゴイ。さすが山田尚子監督作品…。さすが京都アニメーション…。これは一見の価値アリと思えるアニメだったなと…。いやはや、スゴイ。素晴らしい。

なんか自分、 _「ガルパンはいいぞ」 状態になってるな…。

2021/07/22(木) [n年前の日記]

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

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

PM04:00頃から豪雨と激しい雷で…。縁側のあたりまで池のようになるし、台所は酷い雨漏りをするしで…。蛍光灯の脇から水滴がボタボタ落ちていたのはゾッとしました…。

#2 [debian][linux] 電源LEDが眩しい

新自宅サーバ機を動かし始めたけど、電源LEDが眩しい…。寝ようとして横になった時に眩しい…。どうにかしたい…。

pccase_led_ss01.jpg

ちなみに、新自宅サーバ機のケースは、SilverStone SST-SG05W。色は白。Mini-ITX対応。

_mieki256's diary - 新自宅サーバにする予定のPCを組んでみた
_mieki256's diary - SofmapからMini-ITXケースが届いたことをメモするのを忘れてた

LED減光ステッカーが気になる。 :

ググったところ、Seria で「LED減光ステッカー」なるものを売っていた時期があるようで。

_【眩しいランプ対策】100均セリア「LED減光ステッカー」快眠・目の疲れ対策にも | 格安スマホマイスターぴざまん
_LEDライトの光量をへらすLED減光ステッカーを使って眩しさを低減させる! | 経験知
_セリア「LED減光ステッカー」もうまぶしくない! | 100円ショップの情報サイト - 100均 Like!

欲しい…。でも、近所の Seria は店舗が小さいので、おそらく置いて無さそうな予感。

それ以前に、件のケースの電源LEDは電源スイッチと一体化しているので、その手のシールだかステッカーだかを貼るのは難しいかもしれない…。貼ってしまったらスイッチを押せなくなりそう。

カードスタンドで誤魔化してみた。 :

とりあえず、部屋に転がってたカードスタンドを手前に置いてみたけれど、サイズ的にあまりよろしくない。

ただ、透明アクリル部分にLEDの光が回り込んで、ちょっとお洒落な見た目にはなったような気もする。

pccase_led_ss02.jpg

家電のLEDを演出に使えないか。 :

電源LEDの前に置いた透明アクリルのカードスタンドを眺めていて思ったけれど、LEDの光をイイ感じにぼやかしてくれる、すりガラスっぽい見た目の透明なオブジェとかないものかな…。

「家電の電源LEDを利用して部屋をオシャレに演出!」と謳う商品はどうだろう。せっかく電気を使って光り続けているのだから、日々の生活に潤いをもたらす何かしらとして流用できないものかと…。

ググってみたら、以下のような作例(?)も。

_nshdot: ビー玉でLEDの光を拡散
_アンビンバンコな4ストミニ : ストローでLEDの灯りを拡散
_ストローとLED懐中電灯工作 簡単ライトセーバー

こんな感じで何か工夫できないものか…。

#3 [hns] 日記ページのcssを少し修正

この日記ページの css を少し修正。

SUBコマンド部分に、左側が丸みを帯びた形の背景画像を指定していたけど、css でも表現できるんじゃないかと思えてきて。色々試していたら画像無しでもそういう見た目になってくれた。小さい画像とは言え、ページを表示するたびにWebサーバから画像をダウンロードするのはなんだかアレだなと思えていたわけで…。これで少しは改善されたかなと。

一応、該当部分のcss記述をメモ。
h4.sub {
    padding: 1px 0px 1px 16px;
    margin-left: 0.5em;
    margin-top: 2.5em;
    background: linear-gradient(to right, #ec8,#fff);
    border-bottom: 1px solid #ca4;
    background-size: 48px;
    background-repeat: no-repeat;
    border-radius: 16px 0px 0px 16px;
}

#4 [debian][linux] 新自宅サーバ機の設定作業中

新自宅サーバ機の設定作業中。環境は Debian Linux 10 buster + Apache2 2.4.38-3+deb10u5。

Apache2がエラーを残してる。 :

/var/log/apache2/error.log を眺めたら以下のエラーが残っていた。
Ignoring deprecated use of DefaultType in line 11 of /home/hoge/public_html/fuga/.htaccess

各ディレクトリ内に置いてあった、.htaccess 内の DefaultType text/html がエラーを出していた模様。行頭に「#」をつけてコメントアウトした。

また、以下のエラーも残っていた。
an unknown filter was not added: includes

mod_includes が無いのに指定されてる、というエラーらしい? mod_includes を有効化。
a2enmod include
systemctl restart apache2

_Apache2 SSI エラーで動かない

ImageMagickをインストール。 :

CGIがImageMagick関係を要求することに気づいたので、ImageMagick関連をインストールした。
apt install imagemagick libimage-magick-perl
libimage-magick-perl をインストールすることで、PerlMagick? Image::Magick? が使えるようになるのかな。たぶん。

#5 [anime] 「劇場版 弱虫ペダル」を視聴

BS12で放送されていたので視聴。おそらくはTVアニメから派生したアニメ映画。

自分、「弱虫ペダル」シリーズは完全に未見。TV東京系アニメのせいか、BSで放送されてないので…。東京在住者、もしくは有料放送加入者しか見れないアニメの一つという認識。

自転車レースをテーマにした作品らしいけど、さすがに今時は自転車をCGで描くのだなと…。なんとなくだけど、CGを活用することで戦車アニメという狂気の企画をTVアニメとして実現したガルパンを連想したりもして。CG万歳。

自転車レースと言えば、「茄子 アンダルシアの夏」というアニメを思い出すわけで…。アレは自転車が手描きだったような気がするけれど、ググってみたら 2003年の作品なのだな…。「弱虫ペダル」は2013年から放送開始されていたようだから、10年経って、CGが普及して、TVアニメとしての映像化も可能になったと捉えればいいのだろうか。

さておき、内容は…。基本設定もキャラ設定も全く知らないのでアレだけど、どうやら部活モノ、スポーツアニメ、らしいなと…。なので、よく分からないまま眺めてもそこそこ楽しめそうな内容だった印象。自転車レースは自転車レースですよね、みたいな。

ちなみに、シリーズ未見の人に対する気配りは一切感じられない作りだった。完全にファン向け映画なのだろう…。

何にせよ、こういう題材の作品も映像化できる時代になったのだなと、その点だけで目頭が熱く…。手描きしか無かった時代にこういうのを作ろうとしても厳しかったよな…。良い時代になった…。もっともその分クオリティも求められてしまって大変だろうけど、「作れるわけないだろ!」から「頑張ればどうにか作れる…かも?」になっただけでも、みたいな。

2021/07/23(金) [n年前の日記]

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

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

#2 [pc] Antec NSK1480に別のM/Bを入れた

旧自宅サーバ機で使っていた MicroATXケース Antec NSK1480 の中に壊れたM/Bを入れっぱなしにしておくのもなんだかもったいないなと思えてきたので、ダンボール箱の中に入れたままだった CPU + M/B を入れてみた。

_ASCII.jp:FAN×3装備のAntec製スリム型PCケースがデビュー!
_mieki256's diary - M-ATXケースNSK1480が届いた

入れた CPU + M/B は以下。
薄型PCケースなので、入れるのに一苦労。

ケース側の POWER LED が3ピンなのに、M/B側の POWER LED が2ピンで、ちょっと困ってしまった…。幸い(?)、Raspberry Pi3 で色々実験していた際に購入したジャンパー線(?)が ――ブレッドボードに差して使う例のケーブルがあったので、ソレを使って誤魔化した。フツーはどうやって解決するんだろう…。

本来8cm FANを3個つけられるケースだけど、縦置きにした際の上面に2個ほどつけて、HDD下の FAN は省略してみた。

KNOPPIX 9.1 DVD をUSBメモリから起動して、memtest を走らせているけれど、しばらく動かしていたら 8cm FAN 周辺から異音が…。どうやら寿命を迎えていた FAN をつけてしまったらしい…。

2021/07/24追記。 :

PCケース側のPOWER LEDが3ピンだったのは、古いPCケースだから、だそうで。今時の POWER LED は2ピンになっているのだとか。コネクタを抜いて配置を変えることで一応利用可能にしてしまう方法もあるらしい。

_旧3ピン仕様のPOWER LEDケーブルを新2ピン仕様のマザーボードに設置する際の注意(ECS)

#3 [movie] 「アクアマン」を視聴

結構前にTV放送されてたソレをHDDレコーダに録画してたので消化。アメコミヒーロー実写映画という分類でいいのだろうか。海で活躍する超人ヒーロー、なのかな。

VFXがスゴイなと…。どうやって作ってるんだろう…。

主人公の父親役、あるいは指導役の役者さんが、若い頃の見た目と年老いた頃の見た目を演じていて気になった。どうやってこんな映像を作ったんだろう…。ググってみたら、英語版の Wikipedia が充実していて。

_Aquaman (film) - Wikipedia

デジタルエイジング/デエイジングと呼ばれる技術らしい…。顔にマーカーを貼りまくって後から顔を差し替えるようだなと…。考えてみたらチコちゃんみたいな作業なのかな…。そういう技術を日本でも使えたら、例えば今時のイケメン若手ライダーに交じってライダー1号の中の人が当時の若々しい顔立ちで並ぶ、なんてこともできるようになるのだろうか。

水中の髪の毛はどうやってるのかと思ったら、シミュレーションしてCGで描いてたらしい…。水族館の魚は群体シミュレーションで動かしてたとか…。あちらのVFXは凄いな…。

2021/07/24() [n年前の日記]

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

雷が鳴ったので、13:05-17:15の間、自宅サーバを止めてました。申し訳ないです。

毎日雷が鳴り続けていて、なんというか…。

#2 [pc] Antec NSK1480機のメンテナンス中

Antec NSK1480 に AMD Athlon II X2 250 + ASRock M3A785GMH/128M を入れたので、メンテナンス中。

8cm FANを交換。 :

ケース上面(ケース縦置き時)の 8cm FANが異音を出していたので、別の FAN と交換。かなり静かになった。

一つは Ainex CFY-80S (80x80x25mm, 3ピン, 1200rpm, 14.61CFM, 11.9dB(A), 0.6W) なのだけど、もう一つのFANも、この製品に変えてしまったほうがいいのかもしれない…。風量は弱いけど回転音はほとんどしないし…。

_CFY-80S | Ainex

Vine Linuxは起動せず。 :

旧自宅サーバ機で使ってた IDE HDD を接続して、そのまま中身が ―― Vine Linux 6.5 が起動してくれないかと期待したけど、残念ながら起動せず。

M/Bが新し過ぎて Vine Linux が対応できないのか、それとも Vine Linux インストール時のハードウェア構成から変わってしまうとそれだけ(?)で起動しなくなるものなのか、はたまた KNOPPIX 9.1 でHDDの中身を覗いているうちに何か書き換えられてしまったのか…。 *1

KNOPPIXでセンサの値を読み取る。 :

USBメモリから起動した KNOPPIX 9.1 DVD で、各種センサの値を読み取りたい。以下の記事が参考になった。ありがたや。

_Debianでlm_sensorsを使用してCPUの温度やファンの回転数などを取得する -- ぺけみさお

sensors-detect を実行してセンサ値を読み取るために必要なカーネルモジュールを調べる。最後に「Do you want to add these lines automatically to /etc/modules?」と尋ねてくるので「yes」と打ち込む。これで次回から、必要なカーネルモジュールが自動で読み込まれる。

/etc/init.d/kmod start で、カーネルモジュールを読み込んでくれる。

sensors と打てばCPU電圧やFAN回転数等を表示してくれる。

次回起動時、カーネルモジュールは既に読み込まれているので、いきなり sensors と打っても値を読み取れる。

余談。HDDの温度は hddtemp で調べられる。
sudo hddtemp /dev/sda

*1: 例えば Ubuntu Linux 18.04 LTS、20.04 LTS が入ったHDDは、M/BやCPUが変わってもOSが起動するのだけど…。

2021/07/25() [n年前の日記]

#1 [anime] 「花とアリス殺人事件」を視聴

BSフジで放送されていたので視聴。岩井俊二監督作品。ロトスコープを活用したらしいアニメ映画。初見。

自分、恥ずかしながら、岩井監督作品を一つも見たことが無かったのだけど…。フツーに面白い映画だなと…。いや、アニメじゃなかったらたぶん見てないと思うけど…。

タイトルに「殺人事件」と入ってるから、もしかして「名探偵コナン」「金田一少年の事件簿」みたいなジャンルかな、だとしたらあまり見たくないな、などと勝手に思い込んでいたのだけど、視聴してみたら全然そういうジャンルではなかった…。どちらかというとコメディ映画なのだろうか。分からんけど。

また、てっきり全編ロトスコープなのかと思ってたけど、後から各種記事をググったら、メインが3DCG、補助的にロトスコープだったらしい。人物にも3DCGを使っていたのか…。ロトスコープだろうと思い込んだ状態で眺めていたせいか、全く区別がつかなかった…。一応録画をしていたので後から確認してみたら、たしかにCGっぽいカットも…。いや、ちょっと自信無いな…。服の皺まで描かれてるカットはCGだろうか…? シルエットのみで動かしてるカットがロトスコープ…?

実写映像を元にしてるせいかリアルな演技・動きがたくさん出てきて…。フツーの手描きアニメって、動きや演技に関しては結構貧しい状態が続いているのだなと再認識させられてしまった。本来はもっと動きにこだわれるはずなのだな…。

スタッフロールの中に、有名な手描きアニメーターの磯光雄さんの名前があって驚いてしまった。どういう役割を果たしていたんだろう…。

それにしても、CGと手描き(ロトスコープ)が入り乱れている映像らしいのに、パッと見で区別がつかなかったあたり、なんだか参ったなと…。手描きの強みって何だろうと考え込んでしまう…。

2021/07/26(月) [n年前の日記]

#1 [anime] 「君の膵臓を食べたい」を視聴

TV放送されたソレを録画してたので視聴。初見。だったはず。

こういう内容だったのか…。タイトルがタイトルなのでここまで爽やか(?)な感じで見せていく作品とは予想してなかった。

関連情報をググってみたら「小説家になろう」に投稿された作品だったと知り驚いた。こういうジャンルの作品も投稿されているサービスだったのですな…。もっとも、元々は何かの賞に応募したけど落ちてしまった作品とのことだけど。

2021/07/27(火) [n年前の日記]

#1 [linux] KNOPPIXでnmbd等を自動実行したい

USBメモリにインストールした KNOPPIX 9.1 DVD で、ssh、nmbd、smbd を自動実行するようにしたい。

ちなみに、ターミナルを起動して、それぞれ打ち込んで実行するなら以下。
sudo /etc/init.d/ssh start
sudo /etc/init.d/nmbd start
sudo /etc/init.d/smbd start

とりあえず、/etc/rc.local に書いて試してみた。
sudo vi /etc/rc.local

以下を、exit 0 の前に追加。
/etc/init.d/ssh start
/etc/init.d/nmbd start
/etc/init.d/smbd start

再起動後、ps aux | grep ssh 等で確認したら、一応自動実行できているように見えた。あるいは以下でも確認できる。
sudo /etc/init.d/ssh status
sudo /etc/init.d/nmbd status
sudo /etc/init.d/smbd status

他の方法。 :

本来は、というか一般的には、以下を打ち込んで設定すれば自動実行できるらしいのだけど…。
sudo update-rc.d ssh defaults
sudo update-rc.d nmbd defaults
sudo update-rc.d smbd defaults
コレをすることで、/etc/init.d/(ssh|nmbd|smbd) から、/etc/rc?.d/ 以下にリンクが張られて、runlevel に応じて自動実行される、という話を見かけた。

しかし、試してみたけれど、ダメだった。再起動後、各プロセスは立ち上がってないように見える。/etc/rc?.d/ 以下にはリンクが張られているように見えるのだけどな…。
# ls -alF /etc/rc5.d/*{ssh,nmbd,smbd}
lrwxrwxrwx 1 root root 14  2月  4 08:57 /etc/rc5.d/S01nmbd -> ../init.d/nmbd*
lrwxrwxrwx 1 root root 14  2月  4 08:57 /etc/rc5.d/S01smbd -> ../init.d/smbd*
lrwxrwxrwx 1 root root 13  8月 18  2016 /etc/rc5.d/S03ssh -> ../init.d/ssh*

そもそも KNOPPIX は、どの runlevel で起動するのだろう。ググってみたら、GUI画面が出てくるから runlevel 5 で起動しているらしい。ただ、runlevel というコマンドが入ってないっぽいのが気になるけれど…。

2021/07/28(水) [n年前の日記]

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

雷が鳴ったので、14:05-19:40の間、自宅サーバ止めてました。申し訳ないです。

明日も雷がガンガン落ちるという話がニュースで流れていて…。参ったな…。

#2 [debian][linux] swatchについて調べてる

旧自宅サーバ機では swatch というログ監視ツールを動かしていて、妙なアクセスが見つかった時は /etc/hosts.deny に追記するような仕組みにしていたのだけど、新自宅サーバ機でも回しておいたほうがいいのかなと。そんなわけで、設定方法等を調べ始めているところ。

新自宅サーバ機は Debian Linux 10 buster で動かしているけれど、swatch のインストール自体は apt でできる。
sudo apt install swatch

swatch は Perlスクリプトだけど、動作に必要な Perlのモジュールも apt がインストールしてくれる。
以下の追加パッケージがインストールされます:
  libbit-vector-perl libcarp-clan-perl libdate-calc-perl libdate-calc-xs-perl libdate-manip-perl
  libfile-tail-perl

/usr/bin/ に swatch 3.2.4-2 が入った。
# which swatchdog
/usr/bin/swatchdog
昔は swatch というコマンド名(スクリプト名)だったけど、某企業と名前が被ってしまうので、今現在は swatchdog にリネームされたらしい。

監視ルールの記述自体は、おそらく以前と変わらないだろうから、そこはなんとかなりそう。

ただ、旧自宅サーバ機で動かしてた Vine Linux は、色々なログを /var/log/messages に集中(?)して記録してくれていたので、該当ファイルだけを監視すれば良かったけれど、Debian Linux は色々なログに分散して記録するようで…。どのログが何と対応しているのか把握しないと設定できないなと…。おそらく、複数の swatch を動かさないといかんのだろう…。

また、OS再起動時に自動で立ち上がるようにするあたりがよく分からず。調べた感じでは、3つほど方法があるようで…。 せっかくだから、一番最後の方法で起動するようにしたい。そのためには、*.service の記述の仕方も勉強しないといけないなと…。

#3 [neta] 鬼退治シリーズが気になる

ネットのニュース記事を眺めていたら「鬼滅の刃」の便乗商品云々の話を見かけて。

_「鬼滅の刃」便乗商品を「鬼退治グッズ」などと称して販売、4人逮捕 - ねとらぼ
_「鬼退治シリーズ」と称し「鬼滅の刃」の偽グッズ販売 人気便乗16億円以上売り上げか 輸入販売会社の社長ら4人逮捕 愛知県警(中京テレビNEWS) - Yahoo!ニュース

「鬼滅の刃」という名前を使って売ってたら偽物扱いも妥当だろうけど、商品シリーズの名前が違っててもダメなのですか…。

何の罪に問われるのか気になったのだけど、「不正競争防止法違反(周知表示混同惹起行為)」なるソレのようで。

_コラム | 弁護士法人松本・永野法律事務所|福岡・久留米・朝倉・大牟田・長崎の法律相談
_テレビゲームの名称及びキャラクターに関する不正競争行為を認めた「マリカー」事件東京地裁判決について - イノベンティア

つまり、現代においては「モビルフォースガンガル」「ザ☆アニメージ」は大問題になるということかなと…。

_モビルフォース ガンガル - Wikipedia
_ザ★アニメージ - Wikipedia

もしかすると「月風魔伝」「餓狼伝説」あたりも現代ではアウトになったりするのだろうか…。どうなんだろう…。アウトとセーフの境界線がちょっとよく分からなくなってきた…。

バカ妄想。 :

ふと気になったのだけど。例えば鬼退治シリーズが、「鬼滅の刃」とは全然違う内容の漫画を各商品に添付して販売してたらどういう扱いになったのだろうかと…。その場合、これは別作品の関連商品という扱いになったのか、それともやはり逮捕されてしまうのか…。

例えば…。未来世界で、例の模様の服を着て、光るレーザー日本刀を振り回しながらONIと呼ばれる異星人を倒して回るサイボーグ少年の活躍空想図、みたいな漫画が各商品に1枚だけ入ってて、全商品集めると設定だけは無駄に壮大かつ支離滅裂なシリーズの全貌がぼんやりと、みたいな。それでもやっぱりアウトなんだろうか…。

パチモンを売るための言い訳としておまけでつけてた漫画が何故か人気が出ちゃって気づいたらそれなりの規模の商品シリーズに、みたいな展開になったら面白いのだけどな…。「聖闘士星矢」に対する「サムライトルーパー」「天空戦記シュラト」とか、「セーラームーン」に対する「ウェディングピーチ」「りりかSOS」とか、「エヴァンゲリオン」に対する「エウレカセブン」とか、ああいう…。いや、あのあたりの作品はパチモンじゃないけれど。全然別物になってるけど。

誰か勝手に、俺の妄想した鬼退治シリーズのエピソード、とか書き出したりしないものか…。「鬼退治の2巻のラストで妹ちゃんが巨大ロボットになって登場したのは驚いたけど考えてみたら進撃の巨人のパクリじゃん…」「5巻で異世界転生してたけど流行りモノのパクリしかしない漫画だなと当時子供心に思いました」てな感じのありもしないエピソードを勝手に捏造する遊び、みたいな。

タイトルが良くない。 :

ていうか、「鬼退治」という名前が安直過ぎないか…。もうちょっと、元ネタを連想させつつも、もしかしたら別作品が実在しているのではと不安になってくるようなタイトルを…。

例えば英語やカタカナで書くとか捻りようがあったのでは…。「ONI busters」とか。

あるいは鬼に似た漢字を使うとか…。

_鬼を含む漢字ってどれ位ありますか?(蒐・魃・媿など)読み方も教えて頂けると... - Yahoo!知恵袋

「魁」とか良さそうと思ったけど、それだと「魁!!男塾」の便乗商品扱いされちゃうかな…。

鬼に似た漢字を含みつつ、元ネタも連想させつつ、しかし明らかに別作品と思えてくるタイトルを考えなさい、みたいなお題はどうか。いや、コレ、結構難しいお題かも。ちょっと思いつかない…。面倒臭いから「鬼退治」でいいや、という気分に自分もなってきた…。

2021/07/29(木) [n年前の日記]

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

雷が鳴ったので、14:50-20:10の間、自宅サーバ止めてました。申し訳ないです。

ここのところ、ほぼ毎日、雷のせいで止めてるような…。繋がるほうが珍しいサーバに…。自宅サーバなんてやるもんじゃないですね…。

#2 [debian][linux] swatchを設定

_昨日、 swatch について調べていたけど、引き続き監視ルールを設定して実際に動かしてみた。環境は Debian Linux 10 buster。

監視ルールを設定。 :

監視ルールという呼び方で合ってるのかどうかわからんけど…。/etc/swatch/ ディレクトリを作って、その中にルールファイルを入れておく。

root になって作業。
mkdir /etc/swatch
vi /etc/swatch/swatch_vsftpd.conf

内容は以下。
watchfor /FAIL LOGIN\: Client \"(\d+\.\d+\.\d+\.\d+)\"/
        mail=root,subject=swatch(FAIL LOGIN)
        exec /usr/bin/echo vsftpd: $1 >> /etc/hosts.deny
  • 「FAIL LOGIN: Client "xxx.xxx.xxx.xxx"」という文字列が出現したら、
  • rootにメールを送りつつ、
  • /etc/hosts.deny に「vsftpd: xxx.xxx.xxx.xxx」を追記する。
という指定のはず。たぶん。

swatch の実行は以下。vsftpd のログファイル、/var/log/vsftpd.log を監視させてる。
/usr/bin/swatchdog -c /etc/swatch/swatch_vsftpd.conf -t /var/log/vsftpd.log --daemon
-c でルールファイル、-t で監視ログファイルを指定。--daemon でデーモンとして動かす。

自動実行するように設定。 :

OS再起動時に自動実行するように、systemd用のファイルを作成。
vi /etc/systemd/system/swatch_vsftpdlog.service

内容は以下にしてみた。
[Unit]
Description=Swatchdog Service fo vsftpd.log
After=network.target

[Service]
Type=forking
User=root
PIDFile=/run/swatch_vsftpdlog.pid
ExecStart=/usr/bin/swatchdog -c /etc/swatch/swatch_vsftpd.conf -t /var/log/vsftpd.log --pid-file /run/swatch_vsftpdlog.pid --daemon > /dev/null 2>&1

[Install]
WantedBy=multi-user.target

サービスとして有効化。起動。
systemctl daemon-reload
systemctl enable swatch_vsftpdlog
systemctl start swatch_vsftpdlog
systemctl status swatch_vsftpdlog

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

_swatch/CentOSの自動起動設定 - src256 wiki
_Swatchdog - Tail logs, match a pattern and triger actions | by Konstantinos Patronas | Medium
_Log Monitoring with Swatchdog - Log-Monitoring-With-Swatch.pdf

2021/07/30(金) [n年前の日記]

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

雷が鳴ったので、12:45-17:15の間、自宅サーバ止めてました。申し訳ないです。

毎日毎日、雷が…。コレ、いつまで続くの…。

#2 [ubuntu][cg_tools] AzPainter 3.0.x が Ubuntu 18.04 LTS上でビルドできない

Ubuntu Linux 18.04 LTS を動かしてるサブPCのメンテナンスをしていた際に、AzPainter 3.0.3 をビルドしようとしたらエラーが出てしまった。

_Azel / AzPainter - GitLab

3.0.3 だからエラーが出るのかなと 3.0.0 にしてビルドを試してみたものの、それでもエラーが出る。
$ git clone https://gitlab.com/azelpg/azpainter.git

$ git tag
v2.1.7
v3.0.0
v3.0.1
v3.0.2
v3.0.3

$ git checkout -b build300 v3.0.0
Switched to a new branch 'build300'

$ git branch
* build300
  master

$ ./configure

$ make
...
mlk/libmlk.a(mlk_font_freetype.o): 関数 `mFontFT_enumVariableStyle' 内:
mlk_font_freetype.c:(.text+0x11b2): `FT_Done_MM_Var' に対する定義されていない参照です
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Makefile:228: recipe for target 'azpainter' failed
make: *** [azpainter] Error 1

changelog を眺めたところ、AzPainter 3.0.0 から自作ライブラリを mlk を使って書き直した、と記述があった。おそらくその mlk が Ubuntu 18.04 LTS上でビルドできない作りなのだろう…。

AzPainter の PPA(?)でも、Ubuntu 18.04 (Bionic Beaver)用のバイナリは 2.1.7 止まりで、Ubuntu 20.04 (Focal Fossa)用のバイナリは 3.0.3 が提供されていたりするので、自分の環境だけがおかしいというわけではなさそう。

_AzPainter - 16bit RGB full color paint software : Alexander Pozdnyakov

まあ、今からあえて、デスクトップ用途で Ubuntu 18.04 LTS を使う人はほとんど居ないだろうし…。どうしても Ubuntu 18.04 LTS を使いたい場合でも、AzPainter 2.1.7 なら利用はできるし、てなところもありそうな。

この記事へのツッコミ

Re: AzPainter 3.0.x が Ubuntu 18.04 LTS上でビルドできない by はるかぜ    2021/12/19 14:26
はじめまして。私もAzPainterをWindows版の頃から使っておりまして、
今回Ver3.0.0からUbuntu18.04 LTSでインストールが出来ず、困っておりました。
こちらの日記を拝見して、同じ症状だと思い、諦めておりました。

ところが先程3.0.4になって試しにmakeしてみたところ、エラーが出なくなり、
インストール出来るようになりました。
ChangeLogを見ると、以下の変更があっており、これが効いているように思いました。
>- configure の変更。
>FreeType ライブラリにバリアブルフォント関連の関数がない場合、機能を無効にするようにした。
日記を拝見したところ、エラーもFreeType ライブラリ関連だったようです。
もしまだ3.0.4をインストールされていないようでしたら、
試してみてはいかがでしょうか。

2021/07/31() [n年前の日記]

#1 [pc] Haiku OS R1/beta3を試用

BeOSの系譜、Haiku OS の R1/beta3 が公開されたと知り、興味が湧いた。

_オープンソースOS「Haiku R1/ベータ3」が公開 | TECH+

BeOS というのは、大昔、Macの新OSとして採用されていたかもしれないOS、という説明でいいのだろうか。

VMware上でも動くらしいので試用してみた。環境は、Windows10 x64 21H1 + VMware Workstation 16 Player 16.1.0 build-17198959。CPU は AMD Ryzen 7 1700。

インストール作業。 :

公式サイトから iso を入手。

_Home | Haiku Project
_Get Haiku! | Haiku Project

64bit版の iso、haiku-r1beta3-x86_64-anyboot.iso をDLした。

VMware上で、新規仮想マシンを作成。
  • 先ほどDLした haiku-r1beta3-x86_64-anyboot.iso を指定。
  • ゲストOSは「その他」。バージョンは「他の64ビット」。
  • 仮想マシン名は「Haiku OS R1 beta3」にした。
  • ディスク最大サイズは 16GBを指定。
  • ハードウェア設定で、コア数は4コア、RAMは2GBを指定してみた。

インストーラの起動直後、最初に日本語を選べば、各種メッセージも日本語表示してくれるので、インストール作業はサクサク進めることができた。

ただ、途中で、VMwareが管理する仮想HDDのパーティションに対してフォーマットをする必要がある。パーティションを右クリック → フォーマット → Be File Systemを選択。ウインドウを閉じるときは左上のボタンをクリック。

数分でインストールが終わった。なんという速さ…。

再起動後、仮想HDDにインストールされた Haiku OS がすんなり起動してくれた。

各種アプリをインストール。 :

画面右上の青い羽がスタートボタン相当。

スタート → Applications → HaikuDepot で、パッケージをインストールできる。

mozc をインストールすれば日本語入力ができる状態になる。

vmware_addons をインストールすれば、VMware上で動かした際の利便性が向上する。クリップボード共有、マウス共有(ホスト・ゲストOS間のシームレスなマウスカーソル移動)ができる模様。

FuseSMB をインストールすれば samba が使えるようになるらしいが…設定方法も呼び出し方も分からない…。

とりあえず vim や ranger をインストールしてみた。スタート → Applications → ターミナル、を起動すれば、vi や ranger が利用できる。

qVim というのも入れてみたけど、これは何かの拍子に落ちてしまった…。OSが不安定なのか qVim が不安定なのか分からんけど…。

WebPositive というのがWebブラウザらしい。YouTube の動画が再生できるか試していたら、広告動画を再生し始めたところでうんともすんとも言わなくなった。HTML5 + JavaScript絡みだろうか…? 再生される時もあるのだけど…。

他に、NetSurf 3.10-3 というWebブラウザもインストールできる模様。ただ、NetSurf では YouTube を一切表示できなかった。

ペイントソフト Krita 4.4.2-2 や、3DCG制作ソフト blender 2.79b-23 も用意されていた。ただ、GIMP は見当たらなかった。

Krita 4.4.2-2 はインストールして実行できたけど、blender 2.79b-23 は要求されるパッケージが何かと衝突しているようで、インストールできなかった。リストに並んでるからと言ってインストールできるとは限らないのだな…。

サウンドが鳴らない。 :

サウンドが鳴らないことに気が付いた…。

ググったら、Open Sound というパッケージをインストールすれば鳴るかも、という話を見かけた。試しにインストールしてみたところ YouTube の動画の音が鳴ってくれた。

2Dゲームも一応作れそう。 :

2Dゲームフレームワークの love2d 11.2-3 も用意されてた。インストールして、ターミナル上で「love」と打ったら、例のウインドウが表示された。

試しに、以前自作した love2dのサンプルを git clone して動かしてみた。

_mieki256/love2d_stg_sample02




音が鳴るタイミングがちょっと遅れてるような気もするけど、一応動いてくれた。つまり、現状でも2Dゲームぐらいなら作れる状態になっていると言えそう。

3Dゲームは厳しい。 :

2D/3Dゲームを作成できる Godot Engine 2.1.6-2 も用意されていたのでインストールしてみたけれど。
  • Godotウインドウ上のマウスカーソルの周辺にゴミが残り続ける。
  • 新規プロジェクトを作成したらエラーを出して落ちる。
  • そもそもプロジェクト管理ウインドウ上でExitボタンを押しただけで落ちる。
開発中のOSらしい挙動だなと…。

また、Godot Engine の現行バージョンは 3.3.2 なので、2.1.6 というのはちょっと古過ぎる気もする…。

感想。 :

コレが当時憧れていたBeOS(の末裔)なのか…。などとしみじみしながら触っていたけど、まあ、たしかに、現状において実用性は…。素直(?)にLinux等を使ってしまったほうが、安定しているし、パッケージも比較的すんなりインストールできるしで…。

ただ、Haiku OS は、他のOSと比べてインストール時間は圧倒的に短いし、起動も比較的速い印象を受けたので、低スペックPCを復活させる用途で使えたら良さそうかもしれないなと…。もっとも、まだ開発中のOSらしいので本格的に使用するのはアレだろうけど。

参考ページ。 :

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

2021/07/20を最後に日記をアップロードしていなかったのでアップロード。

以上、31 日分です。

過去ログ表示

Prev - 2021/07 - 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