mieki256's diary



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

#1 [ubuntu][linux][icewm] IceWMの設定をまだ弄ってる

Ubuntu Linux 20.04 / 22.04 LTS + IceWM の設定ファイルを弄ってる。

toolbar設定 :

~/.icewm/toolbar というテキストファイルを作って記述すると、IceWM のタスクバー(?)の左のほうにアプリを登録することができる。/usr/share/icewm/toolbar がサンプルファイルなので、コピーしてきて中身を修正するのが良さそう。
cp /usr/share/icewm/toolbar ~/.icewm/
nano ~/.icewm/toolbar

以下は一例。ファイラーとして、ROX filer や PCManFM を追加したり、テキストエディタとして gedit を追加したりしている。
prog Terminal terminal.png x-terminal-emulator
# prog XTerm terminal.png x-terminal-emulator
# prog FTE fte fte
# prog Netscape netscape netscape
# prog    "Vim" vim /usr/bin/gvim -f
prog "WWW" web-browser.png x-www-browser
prog "ROX Filer" file-manager.png rox
prog PCManFM file-manager.png pcmanfm
prog gedit text-editor.png gedit

ubuntulinux_icewm_ss01.png

おそらく、「prog "アプリ名" "アイコン画像ファイルの名前かパス" "実行ファイルのパス"」を記述するのかなと…。


アイコン画像は、おそらく /usr/share/icons/gnome/ の中のどれかが使われてる気がする。自信無いけど。24x24 とか 32x32 のようにサイズ別にフォルダが作られていて、更にその中で apps や actions といった名前で分かれていた。

ubuntulinux_icons_ss01.png


IceWM のどこかの設定ファイルで、どのフォルダ内のアイコン画像を参照するのか指定されているのだろうけど、どこで指定されているのか分からない…。

programsファイルについて :

Ubuntu Linux + IceWM上では、スタートメニューの「プログラム」(programs)の中が空になってしまっている。本来、/etc/X11/icewm/programs に書かれた内容が表示されるはずなのだけど…。

/etc/X11/icewm/programs の最初に空白行があったので削除してみたところ、上記の項目も表示されるようになった。
sudo nano /etc/X11/icewm/programs

どうやら programs ファイルには空行を入れてはいけないらしい…。空行があると、そこで表示が終わってしまうのだろうな…。

キーリピート間隔を調整 :

キーリピートが始まるまでの時間が長過ぎる。調整したい。X11環境の場合、xset で設定できる模様。
xset r rate 200 30
  • リピート開始まで 200ms (デフォルトは 660ms)
  • リピート間隔は 30Hz (デフォルトは 25Hz)

~/.icewm/startup に前述の行を書いてみたら、IceWM起動時から設定が反映されるようになった。

_キーリピートを高速化する - Qiita
_Xorg/キーボード設定 - ArchWiki

IceWMのデフォルト仮想端末を変更 :

Ubuntu Linux 20.04 / 22.04 LTS の場合、RoxTermその他がデフォルトの仮想端末(x-terminal-emulator)として設定されてる感じがする。以下で変更した。
sudo update-alternatives --config x-terminal-emulator

利用できる仮想端末が一覧表示されるので、数字を打ち込んで選んでやれば設定される。

_Debian/Ubuntuでデフォルトのターミナルエミュレータを変更する -- ぺけみさお

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

#1 [nitijyou] コンセント収納ボックスのその後その2

ダイソーで購入した組立式コンセント収納ボックス(30 x 14 x 10 cm)を、親父さん用PCのテーブルタップを収納するために使ったところ、高さが微妙に足りなくて悩んでいた件について。

以前ダイソーで購入した木片詰め合わせ、60 x 30 x 15mm、90 x 30 x 15mm 等を部屋の中から発掘したので、コンセント収納ボックスの蓋の裏面に両面テープで貼り付けてちょっと対策してみた。蓋のサイズとピッタリ同じ位置に貼り付ければ、下の箱にもスポンと入ってくれるはず…。

daiso_cablebox_ss01.jpg

見た目は酷いし、隙間も増えてしまったけれど、一応高さを3cmほどプラスすることができて、各ケーブルを無理矢理曲げずに済むようになった。とりあえずこれでOKということでいいんじゃないかな…。一応、見た目に関しては、リメイクシートの類を購入して貼り付ければ多少は改善できるかもしれない。

とりあえず、ウチの環境の場合、コンセント収納ボックス/ケーブルボックスの高さに関しては、13cmは無いと困る、ということになるのかな…。ファイルボックスの類を改造してこの手のボックスを自作するとしても、高さ13cmは必須。昨日ググって見かけた、ダイソーのファイルボックスハーフ(高さ12cm)は、ほんのちょっと高さが足りない予感。

リメイクシートを購入して貼ってみた :

どうもこの見た目は個人的に我慢できない。もうちょっとどうにかしたい。ダイソーでリメイクシートを買ってきた。「組木風木目柄」と書いてある。45 x 90cm。100円。

12 x 3 cm のサイズで切ったモノを4枚用意して、今回追加した木片の周りに貼ってみた。色が白系から茶色系になっただけでも見た目が改善された気がする。

リメイクシート裏面の糊が弱いので、すぐ剥がれそうな気もするのだけど、その際は両面テープで再度貼り直せばいいかなと…。木工用ボンドの類でも良さそうな気もするけど。

2023/09/01追記 :

リメイクシートを貼った状態の写真を撮影してみた。こんな感じ。

daiso_cablebox_ss02.jpg

#2 [nitijyou] ダイソーでイヤホンその他を購入

ダイソーで、ステレオイヤホンその他を購入してきたのでメモ。
今まで手元には、カナル型ステレオイヤホン Panasonic RP-HJE150-K があったのだけど。

_mieki256's diary - カナル型ヘッドフォンを買ってきた

ずっと使わずに放置していたら、いつのまにか左側(L)の音が小さくなっていて…。とうとう自分の耳がおかしくなったかと疑ったけど、左右を入れ替えて聞いてみたら右耳に入れたL側の音が相変わらず小さかったし、あるいは途中に入れている延長コードやオーディオ切替器を疑ってみたけれど、別のイヤホンと差し替えたり差し込む端子を変えてみても、やはり件のイヤホンのLの音だけが小さい。たぶんイヤホンが壊れてしまったのだろう。

ということで、代わりになりそうなモノをとりあえず購入。声さえ聞き取れれば十分なので音質は気にしない方向で。音楽を聴く際はインナーイヤータイプの別のイヤホンを使うし。

リメイクシートは、先日購入した組立式コンセント収納ボックスの高さを追加した部位に貼るために購入。

タオルは、自分用のタオルと家族用のタオルが混ざらないよう、見た目で区別ができるように柄物をわざわざ選んだけれど、帰宅後、お袋さんに話したら、「柄物のタオルは余ってるからソレを使えば良かったのに」と言われてしまった。そんな状態だと知ってたらわざわざ買うのではなかった…。

シャーリングタオルって何だろうと思ったけれど、ググってみたら、タオルの表面のループ状になってる糸を切り揃えたものがシャーリングタオルと呼ばれている模様。印刷しやすくなるので、絵が描かれているタオル等でよく使われているのだとか。

小さい木片や、小さいMDF板は、あればあったでちょっとした時に便利なので補充しておいた。瞬間接着剤でペタペタつければそれっぽい立体物が作れるので、再利用ができないレゴのような感覚で使える気がする。

ステレオイヤホンを使ってみた :

今まで使っていたソレより音漏れが大きい気がする…。音を出す部分の口径が大きくなったからだろうか。あるいは、穴に被せてある部分の材質が違っていて、音が抜けやすくなっているのだろうか。

ただ、音は今まで使っていたものより、ちゃんと聞こえるようになった気もする。Lの音が小さいということもない。やはり今までのイヤホンは何かが壊れてしまっていたようだなと…。

2022/08/31(水) [n年前の日記]

#1 [prog][windows] MinGWでWindowsアプリがビルドできそうか実験中その3

Windows10 x64 21H2 + MinGW (gcc 9.2.0) で、Windowsアプリがビルドできそうか実験中。

以下のサイトで紹介されているサンプルを、MinGW (gcc) でビルドできるか試していた。

_図形の描画 | WINAPI入門〜bituse〜
_ペンとブラシの作成 | WINAPI入門〜bituse〜
_ビットマップ画像の表示 | WINAPI入門〜bituse〜
_WINAPI入門 〜bituse〜

Windows APIとやらを使って四角を描いたりするサンプルなら、gcc でもビルドできることは確認できていたのだけど。bitmapファイル(.bmp)をリソースファイルに含めた場合にビルドできるかどうかが不安だったわけで。ただ、試してみたらスンナリとビルドできたし、ウインドウ上で画像が描画された。

ちなみに、gcc を使ってコンパイルする際の指定は以下。

リソースファイルを含まない場合。hoge.c から hoge.exe が生成される。
gcc hoge.c -o hoge.exe -mwindows

リソースファイルを含む場合。hoge.c から hoge.o を、hoge_res.rc から hoge_res.o を生成して、.o 群をリンクして hoge.exe を生成する。
gcc -c hoge.c
windres hoge_res.rc hoge_res.o
gcc hoge.o hoge_res.o -o hoge.exe -mwindows

念のために書いておくけど、hoge とか fuga とか piyo とか foo とか bar ってのは、メタ構文変数というヤツで…。

_知識の枝 hoge foo barとは何か
_メタ構文変数(hoge / foo)とは - 意味をわかりやすく - IT用語辞典 e-Words
_メタ構文変数 - Wikipedia

#2 [pc] USB2.0ハブ UH-2314NWを購入

ヤマダ電機須賀川店でUSB2.0ハブを購入してきた。製品は、ナカバヤシ株式会社 Digio2 UH-2314NW (UH-2314Nシリーズ)。USB2.0、4port、バスパワー。ケーブル長120cm。W22 x D66 x H19mm。パッケージ裏面には、各ポート最大消費電流100mAまで、と書いてある。税込929円。保証期間6ヶ月。

今まで使ってた USB2.0ハブ、BUFFALO BSH4A02WH が不調なので、代替品として買ってきた。ちなみに、BSH4A02WH は、今まで使えていたワイヤレスマウス受信機が使えなくなる不具合が起きていた。今回購入した UH-2314NW に、その受信機を繋いだところ、スンナリ動作してくれた。

2021/08/31(火) [n年前の日記]

#1 [povray][ubuntu] kpovmodelerを試用

kpovmodeler という、POV-Ray専用モデリングツールがあるらしい。

_KpovModeler - KDE Store
_kpovmodeler - Home (WebArchive)

KDEのアプリケーション群の一つだそうで、*NIX上でしか動かない。更に、今時の KDE は 4.x とか 5.x になっているから kpovmodeler は含まれておらず、KDE 3.5 からフォークした TDE (Trinity) なら、まだかろうじて kpovmodeler が含まれている状態っぽい。

_Trinity (デスクトップ環境) - Wikipedia
_KDE - Wikipedia

気になったので試用してみた。

環境は、Windows10 x64 21H1 + VMware Workstation 16 Player 16.1.0 build-17198959 + Ubuntu Linux 20.04 LTS x64。

TDEのインストール。 :

TDE (Trinity) 上でしか動かないらしいので、まずは TDE をインストールしないといけない。以下のページを参考にしてインストール作業をした。

_Ubuntu 20.04.1 をインストールして、TDE (Trinity) デスクトップを追加〈H98〉 - Linux あれこれ
_Ubuntu Trinity Repository Installation Instructions - Trinity Desktop Project Wiki
_Trinity Desktop Environment

ちなみに、リポジトリ設定を変更して TDE をインストールするわけだけど、変更後に sudo apt update をすると以下のエラーメッセージが出続ける。
N: リポジトリ 'http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-r14.0.x focal InRelease' がアーキテクチャ 'i386' をサポートしないため設定ファイル 'main/binary-i386/Packages' の取得をスキップ
N: リポジトリ 'http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-builddeps-r14.0.x focal InRelease' がアーキテクチャ 'i386' をサポートしないため設定ファイル 'main/binary-i386/Packages' の取得をスキップ
N: Skipping acquire of configured file 'main/binary-i386/Packages' as repository 'http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-r14.0.x focal InRelease' doesn't support architecture 'i386'
N: Skipping acquire of configured file 'main/binary-i386/Packages' as repository 'http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-builddeps-r14.0.x focal InRelease' doesn't support architecture 'i386'

Ubuntu Linux は i386 をサポートしなくなったのだけど、そのことが関係してるのだろうか…?

ググってみたら、「deb の直後に [arch=amd64] を追加せよ」という解決策に遭遇。

_Ubuntuでリポジトリのダウンロード失敗対処 - Libra Studio エンジニアブログ

試してみたら、件のエラーメッセージが出なくなった。助かった。

sudo vi /etc/apt/sources.list
deb [arch=amd64] http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-r14.0.x focal main
deb [arch=amd64] http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-builddeps-r14.0.x focal main
deb-src [arch=amd64] http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-r14.0.x focal main
deb-src [arch=amd64] http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-builddeps-r14.0.x focal main

kpovmodelerのインストール。 :

パッケージ名は、kpovmodeler-trinity らしい。
sudo apt install kpovmodeler-trinity

当然ながら POV-Ray も利用するのでインストールしておく。POV-Ray 3.7 がインストールされる。
sudo apt install povray povray-doc povray-examples

kpovmodelerを試用してみる。 :

kpovmodeler は KDE のアプリケーションなので、KDE (TDE) が立ち上がってる状態じゃないと利用できない。Ubuntu Linux 20.04 LTS x64 のログイン時にTDEを選んでログインする。

スタートメニュー → グラフィックス → kpovmodeler、を選択すれば起動する。

kpovmodeler_ss01.png

見た目はかなりイイ感じ。
  • ツールバー上のアイコンは、GIMP や blender のようなモノクロ1色の見分けにくいソレではなくて、それぞれにちゃんと色がついているので視認性が高い。
  • オブジェクトのプロパティはツリー表示されているので、どこに、何が、どんな順番で含まれているのかがとても分かりやすい。

ところが、POV-Ray でレンダリングしようとしたらエラー発生。

povray: cannot open the user configuration file /home/USERNAME/.povray/3.7/povray.conf: No such file or directory

Problem with option setting
povray +W800 +H600 +Q9 -QR +A +AM0 +A0.300 -J +R2 +UA +I/tmp/tde-mieki256/kpovmodelerSlz0Tc.pov +O- +FT +K0.0 +KFI1 +KFF1 +KI0.0 +KF0.0 +SF1 +EF1 -KC -D
Failed to parse command-line option

まず、~/.povray/3.7/povray.conf が見つからないと言っている…。

ググったら、解決策に遭遇。

_povray - Using POV-Ray installed via the APT - Ask Ubuntu

/etc/povray/ 以下に該当ファイルが存在するらしい。ln でリンクを作れば解決しそう。
ln -s /etc/povray ~/.povray

これで、~/.povray/3.7/povray.conf が無いというエラーは出なくなった。しかし、相変わらず以下のエラーが出る。

Problem with option setting
povray +W800 +H600 +Q9 -QR +A +AM0 +A0.300 -J +R2 +UA +I/tmp/tde-mieki256/kpovmodeler1hN41c.pov +O- +FT +K0.0 +KFI1 +KFF1 +KI0.0 +KF0.0 +SF1 +EF1 -KC -D
Failed to parse command-line option

POV-Ray のニュースグループでも質問されていた。

_POV-Ray: Newsgroups: povray.beta-test: QR command line option

上記のやり取りによると、POV-Ray に QR というコマンドラインオプションは存在しないのに、kpovmodeler が指定しちゃってるらしい。POV-Ray 3.5 の時点でも、そんなオプションは無いのだとか。また、kpovmodeler は POV-Ray 3.1時代のアプリではないか、という話も出ている…。たしかに、画面のあちこちに「3.1」という表記が見える…。POV-Ray 3.1 時代なら QR というオプションにも意味があったのだろうか…?

POV-Ray (povray) に渡しているオプションをどこかの設定項目で指定しているのではないかと探してみたけど、それらしい設定は見当たらなかった。もしかすると kpovmodeler のソースコード内でハードコーディングされちゃってるのかもしれない。

何にせよ、古過ぎるから現状の POV-Ray と仕様が合ってなくて不具合が出るモデリングツール、ではあるらしいなと。まあ、このツールを使いたい時は、必ず KDE (TDE) の利用を強制されるあたりも、なんだかアレだけど…。

ちなみに、ファイル → エクスポート、で .pov を出力することはできた。出力された .pov を使って、端末上で povray hoge.pov と打ってやったらレンダリング結果は得られた。kpovmodeler から直接 POV-Ray を呼び出すのは無理だけど、.pov をエクスポートして云々という流れなら使えるのかもしれない。

KDEを使わない版も一時期作られていたらしい。 :

関連情報をググっていたら、一時期、kpovmodeler からKDE関係の記述を削除して、Qt で置き換えてビルドできるようにしてみた方が居たと知った。

_POV-Ray: Newsgroups: povray.programming: povmodeler
_eticre/povmodeler: povray modeler

_POV-Ray: Newsgroups: povray.programming: povmodeler
_tribad/povmodeler: povray modeler

_POV-Ray: Newsgroups: povray.tools.general: building povmodeler?
_dickbalaska/qtpovmodeler: povray modeler

ビルドできるか試してみる。

mkdir pkg
cd pkg
mkdir povmodeler
cd povmodeler

git clone https://github.com/tribad/povmodeler.git
cd povmodeler
mkdir build
cd build
cmake ../
make

cmake ../ を走らせたらエラーが出た。CMakeCache.txt を削除しろと言ってるな…。
rm ../CMakeCache.txt
cmake ../
make

make をしたら「libxml/parser.h が見つからない」とエラーが出た。

_linux - Compiler can't find libxml/parser.h - Stack Overflow

libxml2-dev をインストールしないといかんらしい。
sudo apt install libxml2-dev libxml2-doc

make が先に進むようになったが、最後でエラー。
[100%] Linking CXX executable povmodeler
/usr/bin/ld: missing --end-group; added as last command line option
/usr/bin/ld: ../modelifc/libmodelifc.so: undefined reference to `xmlFree'
/usr/bin/ld: ../modelifc/libmodelifc.so: undefined reference to `xmlGetProp'
collect2: error: ld returned 1 exit status
make[2]: *** [src/modeller/CMakeFiles/povmodeler.dir/build.make:584: src/modeller/povmodeler] エラー 1
make[1]: *** [CMakeFiles/Makefile2:320: src/modeller/CMakeFiles/povmodeler.dir/all] エラー 2
make: *** [Makefile:152: all] エラー 2

「xmlFree xmlGetProp link error ubuntu」でググってみたけど、よく分からん…。

別の版をビルドしてみた。 :

qtpovmodeler にリネームした版もあるらしいので、ビルドできるか試してみた。

_POV-Ray: Newsgroups: povray.tools.general: building povmodeler?
_dickbalaska/qtpovmodeler: povray modeler

mkdir qtpovmodeler
cd qtpovmodeler
git clone https://github.com/dickbalaska/qtpovmodeler.git
cd qtpovmodeler
qmake
make

こちらはビルドできたっぽい。qtpovmodeler という実行ファイルが作成された。./qtpovmodeler で実行してみたところ、画面が表示された。

プリミティブもカメラもグレーアウトしていて、何も追加できない…。なかなか厳しい。

20201/09/01追記。 :

ビルド済みの qtpovmodeler をDLして試してみたけのだけど。
wget http://www.buckosoft.com/tmp/qtpovmodeler.bz2
bunzip2 qtpovmodeler.bz2
chmod +x qtpovmodeler
./qtpovmodeler

$ ./qtpovmodeler 
./qtpovmodeler: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.13' not found (required by ./qtpovmodeler)

Qt 5.13 を強要されるようで、Ubuntu Linux 20.04 LTS 上では動作しなかった。残念。

そもそも、Ubuntu 20.04 LTS でインストールされる Qt5 って、バージョンはいくつなんだろう…。

_Ubuntu18.04 LTSにQt5をインストールしよう! - IT徒然草
sudo apt install qtbase5-dev qttools5-dev-tools qt5-default

qtbase5-dev のバージョンを確認すればいいのかな。

$ sudo apt show qtbase5-dev
Package: qtbase5-dev
Version: 5.12.8+dfsg-0ubuntu1
...

5.12.8 らしい。

#2 [nitijyou] 電動自転車の後ろのタイヤのチューブその他を交換

ここ数日、電動自転車の後ろのタイヤの空気圧が怪しくて、とうとう昨日は、走って数分でパンクした感じになってしまった。これがまた、タイヤのあちこちはカッチカチだけど、別の部分はペコペコのふにゃふにゃという奇妙な感触で。今まで、一部だけ触ってみて、「よし、パンパンだな。空気が入ってるな」と安易に判断してたものだから…。それにしても、どうしてこんな、まだらっぽい硬さに…。

ということで、親父さんが近所の自転車屋さんに持っていって、チューブを交換してくれたらしい。チューブだけではなくチェーンも伸び切っていたとの話で、チェーンも交換。…チェーンって交換できるのか。知らなかった。

他にも、油を全然差してなかったから注油してもらったとか、オススメの油を買ってきたとかで。あれやこれやで合計9,800円ぐらいかかったそうで。

電動自転車じゃなければ、新しい自転車が1台買えてしまう…。でも、もはや電動アシスト無しでは、自分も親父さんも自転車に乗る気にはならないわけで…。

フツーの安い自転車に、後付けで電動アシストを追加できる何かを販売したら、ヒット商品にならないかな…。

2020/08/31(月) [n年前の日記]

#1 [prog] PerlとPHPを勉強中

PerlとPHPを勉強中。

やりたいことは、Raspberry Pi Zero W上で…。 これを Webサーバ lighttpd で処理するという、ただそれだけ。

最初は、Perl + HTML::Template + CGI.pm を使ってCGIスクリプトを書いてみた。メインPC (AMD Ryzen 7 1700)上で動かす分には一瞬でページが表示されたけど、Raspberry Pi Zero W上で動かしてみたらページが表示されるまで数秒かかって…。CPUが非力過ぎるのか、それともストレージとして使っている microSD が遅いのか、何が原因なのか分からんけれど、とにかくこの書き方はダメっぽいなと。

次に、HTML::Template と CGI.pm を使わない書き方を試してみた。若干応答が早くなった。しかし、それでもやはり一瞬待たされる感じで。

Perl を使っているのがダメなのだろうか、PHPならどうだろうと、PHPで書き直してみたところ、これなら一瞬でページが表示された。PHPって処理が速いんだな…。いや、PHPの力じゃなくて、もしかするとWebサーバの動作状態、設定次第で違ってくるのかもしれないけど。

とにかく、Raspberry Pi Zero W 上で Perl CGI を動かすのは厳しいっぽい。

ソースはこうなった。 :

以下のようなPHPスクリプトになった。

timelog.php
<!DOCTYPE html>
<html lang="ja">

<head>
<meta charset="utf-8">
<title>Time Log</title>
<link rel="stylesheet" href="def.css">
</head>

<body>
<h1>Time Log</h1>
<pre>
<?php
$contents = file_get_contents("timelog.txt");
echo $contents;
?>
</pre>
<div>
<a href="timelog.php">Reload</a>
<a href="clearlog.php">Clear Log</a>
<a href="./">Back</a>
</div>
</body>
</html>

clearlog.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Clear Log</title>
</head>
<body>
<?php
file_put_contents("timelog.txt", "");
?>
<p>Log cleared successfully.</p>
<p><a href="./timelog.php">Back</a></p>
</body></html>

この程度なら、Webブラウザから直接 .txt にアクセスしてもよいのでは、という気もする…。でもまあ、色々勉強になったから、これはこれで…。

ちなみに、Perl + HTML::Template + CGI.pm なら、こんな感じで。
use strict;
use warnings;
use HTML::Template;
use FindBin;
use CGI;

my $log_file  = "timelog.txt";
my $tmpl_file = "timelog_tmpl.html";

my $dbg        = 0;
my $q          = CGI::new();
my $script_dir = $FindBin::Bin;
$log_file  = $script_dir . '/' . $log_file;
$tmpl_file = $script_dir . '/' . $tmpl_file;

my $content = "";
my $params  = "";

if ($dbg) {
    for my $name ( $q->param ) {
        $params .= $name . "=" . $q->param($name) . "\n";
    }
}

if ( $q->param('action') eq 'clear' ) {

    # clear log file
    open my $fh, '>', $log_file
        or die "Can't open file $log_file : $!";
    print $fh "";
    close $fh;

    # $content = "Clear log\n";
    $params .= "clear log file.\n";
}
else {
    # read log file
    open my $fh, '<', $log_file
        or die "Can't open file $log_file : $!";
    $content = do { local $/; <$fh> };
    close $fh;
    $params .= "read log file.\n";
}

my $template = HTML::Template->new( filename => $tmpl_file );
$template->param( TIMELOG => $content );
$template->param( PARAM   => $params );
print "Content-Type: text/html\n\n", $template->output;
exit;

CGI.pmってどうなんだろう。 :

CGI.pm を使って HTML5 に対応させるにはどうしたらいいのか、と疑問に思ってググってみたら、そもそも今時は CGI.pm でHTMLを生成するなんてナンセンス、という空気のようで。「HTMLテンプレートを読み込んで一部を変更して出力、てな処理をすべきだよ」「CGI.pm で生成? ないわー」ということになってるっぽい。

たしかに、そのほうが楽だよな…。ただ、ファイルへのアクセス回数が増えるような気もするのだけど…。キャッシュ云々でそのあたり改善できたりもするのだろうか…。

2020/09/01追記。 :

以下の記事を眺めていて気づかされた。

_GETとPOSTの使い分け ついでにPUTとDELETE - Qiita
GETは、検索エンジンのクローラーがページを見に来る可能性があるため、データベースにアクセスするような内容は書かないようにする。
クローラーが来るたびにデータの追加、変更、削除をされないように、意図的に見に来ないPOSTで処理する必要がある。

GETとPOSTの使い分け ついでにPUTとDELETE - Qiita より


ああ、たしかに…。

つまり、本来であれば、前述の、呼ばれただけでログファイルの中身をクリアするスクリプト(clearlog.php)なんて論外だなと。クローラーが来るたびにログが消去されてしまう。まあ、今回はローカルで実験してるだけだからアレだけど…。

2019/08/31() [n年前の日記]

#1 [pc] メインPCのHDDパーティションサイズを変更してみた

メインPCにSSDを追加・換装した際、それまでHDD内にあった、システムドライブのパーティションはそのまま残しておいたのだけど。

さすがにこれだけ時間が経っても問題無く起動してるわけだから、もうHDD内のソレは要らないよなー、と。

ということで、該当パーティションを削除して、データ保存用のパーティションを増やしてみたり。

作業には、EaseUS Partition Master Free を使わせてもらった。ありがたや。

_EaseUS Partition Master Free

一旦、不要なパーティションを削除してから、データ用パーティションのサイズを調整しようとしたのだけど。パーティション削除の時点で、「このプロセス群がアクセス中だから削除できないよ。再起動してオフラインで作業するよ」と言ってきて。なんだか知らんけどAdobe製のプログラムが居る…。コイツは一体何をしているんだ…。

とりあえず再起動して、Windowsが起動する前に処理が走ってパーティションを削除できた。その後、データ用パーティションのサイズを前方に拡大。これも再起動後にサイズが変更された。

今のところ、これといった問題は起きてない模様。

#2 [zatta] ガソリンスタンドって水没するとどうなるんだろう

佐賀県で洪水が起きて工場の油が流出、というニュースを見ていて、只でさえ洪水は大変なのに、ますます酷いことに…と暗い気持ちになりつつ。そこでふと気になったのだけど、例えばガソリンスタンドって、水没した場合はどうなるんだろうと。ガソリンその他が流出しないような対策は取られているのだろうか…。

どうしてそんなことが気になったかと言うと…。ウチの近所は、阿武隈川が流れていて、子供の頃、何度か洪水を起こして、水没しちゃってた地域があるわけで。たしか平成になってからも水没してたはず。

_平成10年8月末豪雨・台風5号 :: 福島河川国道事務所 :: 福島河川国道事務所

その、かつては水没していた地域に、今では _ガソリンスタンドが何軒も 建っていて…。

いつかそのうち、また大洪水が起きて、あの一帯も再度水没するだろうなと想像しているのだけど。そうなった時、あのガソリンスタンドはどうなるのかなあ、と。阿武隈川に大量の油が流れ込むのだろうか…?

水没したらどうなるのか少しググってみたり。 :

気になってググってみたけれど。

_洪水で街中のガソリンスタンドも水没してるけど、ガソリンが... - Yahoo!知恵袋

パイプが立っていて、そのパイプの高さを超えて水没するとヤバいらしい…。その高さまで行くかなあ…。ちょっと分からんな…。

まあ、阿武隈川は、 _平成の大改修 で堤防等を強化してあるはずだし。若干上流に、 _浜尾遊水地 もあるので、昔ほど酷いことにならないのでは、と楽観視したりもするのだけれど。

そのうち、洪水が起きていたことすら忘れて、「この遊水地って要らないんじゃね? 潰そうぜ!」とか言い出す人が出てきたら、その時はどうなるか分からないよな…。

そういう場所が、日本各地にたくさんありそうだなと。

浜尾遊水地と言えば。 :

数年前、犬の散歩のついでに浜尾遊水地のあたりを回ったことがあるのだけれど。その頃、トラックが何台も入ってきて、何か黒い袋を大量に埋めてたんだよなあ…。

洪水が起きて、遊水池まで水が入ってきたら、あの、埋めていた何かしらも阿武隈川に流れ出して、宮城県まで流れていくのだろうなと…。

アレって一体何を埋めてたんだろう…。なんとなくだけど、たぶんアレかなあ…。いや、分からんけど。

2018/08/31(金) [n年前の日記]

#1 [cg_tools] ひたすら木を描く練習中

CLIP STUDIO PAINT を使って、アニメの背景画っぽく見えそうな木を描く練習中。

何度描いても、コレジャナイ感が…。子供の落書きにしか見えない…。何が違うんだろう…。

#2 [zatta] 小さい紙コップが見当たらない

部屋で飲み物を飲む時は、ペットボトルから、80ml前後の小さい紙コップに移して飲んでいるのだけど。紙コップを補充しようとして近所のスーパーを回ってみても、何故か店頭でそのサイズの商品が無くて。以前はあったのだけどなあ…。

仕方なく、100円ショップのSeriaで小さいサイズの紙コップを買ってみたけど、当然ながら中国製なのでちょっと怖いわけで。実際使ってみたら、かすかに妙な味がする…。

フツーのサイズの日本製の紙コップを買ってきたほうがいいのだろうか。にしても、どうして小さいサイズが無くなってしまったのだろう。

2017/08/31(木) [n年前の日記]

#1 [raspberrypi] Raspberry Pi3上でHSP3を動かそうとしてみたけれど

先日、Linux や Raspberry Pi上でも動かせる HSP を開発中、という話を見かけたわけで。興味が湧いたので試してみようかなと。環境は、Raspberry Pi3 + raspbian stretch。

_HSP3 for Linux/Raspberry Pi に従ってインストール作業。
mkdir ~/hsp
cd ~/hsp
wget http://www.onionsoft.net/hsp/file/hsplinux35b5.tgz
tar zxvf hsplinux35b5.tgz
cd hsplinux35b5
これで hsplinux*.tgz のDLと解凍が済んだ。

ビルドに必要なパッケージをインストール。
sudo apt-get install libgtk2.0-dev
sudo apt-get install libglew-dev
sudo apt-get install libsdl1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev

ビルドしてみる。
sudo make -f makefile.raspbian
g++ -Wall -fpermissive --exec-charset=UTF-8 -DHSPDISH -DHSPLINUX -DHSPRASPBIAN -DHSPDEBUG -DUSE_OBAQ -I /opt/vc/include -c src/hsp3dish/emscripten/hgiox.cpp -o src/hsp3dish/emscripten/hgiox.do
src/hsp3dish/emscripten/hgiox.cpp:120:1: error: narrowing conversion of ‘255’ from ‘int’ to ‘GLbyte {aka signed char}’ inside { } [-Wnarrowing]
 };
 ^
src/hsp3dish/emscripten/hgiox.cpp:120:1: error: narrowing conversion of ‘255’ from ‘int’ to ‘GLbyte {aka signed char}’ inside { } [-Wnarrowing]
src/hsp3dish/emscripten/hgiox.cpp:120:1: error: narrowing conversion of ‘255’ from ‘int’ to ‘GLbyte {aka signed char}’ inside { } [-Wnarrowing]
...
中略
...
makefile.raspbian:105: ターゲット 'src/hsp3dish/emscripten/hgiox.do' のレシピで失敗しました
make: *** [src/hsp3dish/emscripten/hgiox.do] エラー 1

エラーが出てビルドできなかった。残念。

もっとも、件のソース群は raspbian jessie 用らしいので、stretch 上ではエラーが出るのも仕方ないのかも。

#2 [raspberrypi][python][pi3d] pi3dをインストール

Raspberry Pi の OpenGL ES を Python から使える、pi3d というモジュールが存在するらしい。

_tipam/pi3d: Simple, yet powerful, 3D Python graphics library for beginners and school children running on the Raspberry Pi.
_Pi3D Tutorial #1: Installation and Getting Started - YouTube
_pi3d/pi3d_demos: Demos and support files for pi3d (3D graphics python package for the raspberry pi)
_Welcome to pi3d’s documentation! - pi3d 2.20 documentation

興味が湧いたので、試しに Raspberry Pi3 + raspbian stretch にインストール。

インストール手順。 :

以下でインストールできるらしい。
sudo pip install pi3d
sudo pip3 install pi3d
Python 2.7 にインストールするなら pip を、Python 3.x にインストールするなら pip3 を使う。

pi3d_demos に、デモスクリプトがまとめてある。git を使って github から入手。
git clone https://github.com/pi3d/pi3d_demos.git

地球が表示されるはずのスクリプトを動かしてみる。
$ cd pi3d_demos
$ python Earth.py

libEGL warning: DRI2: failed to authenticate

警告が出て、何も表示されなかった…。Ctrl+C でスクリプトを強制終了。

「libEGL warning: DRI2: failed to authenticate」への対処。 :

(※ 2017/09/01追記。sudo rpi-update をすれば、問題は修正される模様。)

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

_libEGL warning: DRI2: failed to authenticate - Issue #177 - tipam/pi3d
_Frequently Asked Questions - pi3d 2.20 documentation
_Raspberry Pi 2/3 Model B(Raspbian Jessie with PIXEL)でRStudioを使う

pi3d のバグ報告や、FAQページによると、pi3d を動かす際には、
/usr/lib/arm-linux-gnueabihf/
に入ってる、以下の4つのファイルが絡んでくるらしい。
libEGL.so
libEGL.so.1
libGLESv2.so
libGLESv2.so.2

なんでも、sudo apt install xxxx をしていく際に、それらのファイルが不適切なファイルで上書きされてしまう…時があって、そうなると正常動作しなくなるのだとか。

ストレージ(microSD)内には、色んな種類の libEGL.so、libGLESv2.so が存在してるようで。 _find という、ファイル検索をするコマンドを使ってリストアップしてみる。

sudo find / -name libEGL*
sudo find / -name libGLESv2*

自分が使ってる raspbian stretch 上では以下の結果になった。
$ sudo find / -name libEGL*
find: ‘/run/user/1001/gvfs’: 許可がありません
/usr/lib/arm-linux-gnueabihf/libEGL.so.1
/usr/lib/arm-linux-gnueabihf/libEGL.so
/usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0
/usr/lib/chromium-browser/libEGL.so
/opt/vc/lib/libEGL_static.a
/opt/minecraft-pi/lib/mesa/libEGL.so
/opt/minecraft-pi/lib/brcm/libEGL.so
$ sudo find / -name libGLESv2*
find: ‘/run/user/1001/gvfs’: 許可がありません
/usr/lib/arm-linux-gnueabihf/libGLESv2.so.2
/usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0
/usr/lib/arm-linux-gnueabihf/libGLESv2.so
/usr/lib/chromium-browser/libGLESv2.so
/opt/vc/lib/libGLESv2_static.a
/opt/minecraft-pi/lib/mesa/libGLESv2.so
/opt/minecraft-pi/lib/brcm/libGLESv2.so
chromium-browser や minecraft-pi も、それらのファイルを持ってると分かった。

また、/usr/lib/arm-linux-gnueabihf/ 内の各ファイルについても状況を確認してみる。
$ ls -al /usr/lib/arm-linux-gnueabihf/libEGL*
lrwxrwxrwx 1 root root     15  8月  4 21:41 /usr/lib/arm-linux-gnueabihf/libEGL.so -> libEGL.so.1.0.0
lrwxrwxrwx 1 root root     15  8月  4 21:41 /usr/lib/arm-linux-gnueabihf/libEGL.so.1 -> libEGL.so.1.0.0
-rw-r--r-- 1 root root 175516  8月  4 21:41 /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0
 $ ls -al /usr/lib/arm-linux-gnueabihf/libGLESv2*
lrwxrwxrwx 1 root root    18  8月  4 21:41 /usr/lib/arm-linux-gnueabihf/libGLESv2.so -> libGLESv2.so.2.0.0
lrwxrwxrwx 1 root root    18  8月  4 21:41 /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2 -> libGLESv2.so.2.0.0
-rw-r--r-- 1 root root 38184  8月  4 21:41 /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0
  • libEGL.so と libEGL.so.1 は、libEGL.so.1.0.0 からリンクが張られていた。
  • libGLESv2.so と libGLESv2.so.2 は、libGLESv2.so.2.0.0 からリンクが張られていた。

pi3dのFAQページには、「sudo _ln -fs リンク元 リンク先 を使って適切な .so を探して割り当ててみてくれ」と書いてあった。

chromium-browser のソレを割り当てて試してみる。
sudo ln -fs /usr/lib/chromium-browser/libEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so
sudo ln -fs /usr/lib/chromium-browser/libEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so.1
sudo ln -fs /usr/lib/chromium-browser/libGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so
sudo ln -fs /usr/lib/chromium-browser/libGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2
sudo ldconfig
ldconfig は… _共有ライブラリの依存関係情報を更新する らしい。

_ldconfig【コマンド】とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

python Earth.py を実行してみた。ダメだった。コレではないらしい。

minecraft-pi のソレを割り当てて試してみる。が、2種類あるな…。

/opt/minecraft-pi/lib/mesa/ 内のソレは、/usr/lib/arm-linux-gnueabihf/ 内のソレにリンクが張ってあった。これを指定しても意味はない。
$ ls -al /opt/minecraft-pi/lib/mesa/
合計 20
drwxr-xr-x 2 root root 4096  8月 16 10:02 .
drwxr-xr-x 4 root root 4096  8月 16 10:02 ..
lrwxrwxrwx 1 root root   40  7月  5 19:52 libEGL.so -> /usr/lib/arm-linux-gnueabihf/libEGL.so.1
lrwxrwxrwx 1 root root   43  7月  5 19:52 libGLESv2.so -> /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2
-rw-r--r-- 1 root root 9588  7月  5 19:52 libbcm_host.so.1.0

/opt/minecraft-pi/lib/brcm/ 内のソレは…なんだかそれっぽいものにリンクされてる。こっちを試してみるべきかな…。
$ ls -al /opt/minecraft-pi/lib/brcm/
合計 8
drwxr-xr-x 2 root root 4096  8月 16 10:02 .
drwxr-xr-x 4 root root 4096  8月 16 10:02 ..
lrwxrwxrwx 1 root root   29  7月  5 19:52 libEGL.so -> ../../../vc/lib/libbrcmEGL.so
lrwxrwxrwx 1 root root   32  7月  5 19:52 libGLESv2.so -> ../../../vc/lib/libbrcmGLESv2.so

sudo ln -fs /opt/minecraft-pi/lib/brcm/libEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so
sudo ln -fs /opt/minecraft-pi/lib/brcm/libEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so.1
sudo ln -fs /opt/minecraft-pi/lib/brcm/libGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so
sudo ln -fs /opt/minecraft-pi/lib/brcm/libGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2
sudo ldconfig

python Earth.py を実行。

…出た。なんか地球とか月っぽいものが出てクルクル回ってる。どうやらコレが合ってるらしい。ESCキーか、Ctrl+C を押して終了。

が、しかし、OpenGL ES が正常動作してるか確認できる、es2gears を実行してみたら、
EGLUT: failed to initialize EGL display
とエラーが表示されて何も出てこなくなった…。本当にこれでいいのだろうか…。

元に戻すときは…こうかな…?
sudo ln -fs /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0 /usr/lib/arm-linux-gnueabihf/libEGL.so
sudo ln -fs /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0 /usr/lib/arm-linux-gnueabihf/libEGL.so.1
sudo ln -fs /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0 /usr/lib/arm-linux-gnueabihf/libGLESv2.so
sudo ln -fs /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0 /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2
sudo ldconfig

動くものと動かないものがあるっぽい。 :

さておき、調子に乗って pi3d_demos 内のスクリプトをアレコレ動かそうとしてみたけれど。

_Introduction to pi3d - pi3d 2.20 documentation

動くものと、動かないものがあるな…。以下は動いたけど…。
Earth.py
Raspberry_Rain.py
Clouds3D.py
Shapes.py
SpriteBalls.py

MarsStation.py , TigerTank.py は、/dev/input/mice が Permission denied と言われて途中で落ちてしまった。後から追加したユーザアカウントで動かしてるので、マウス入力を取得するためのアクセス権限が無いらしい。

普段使ってるユーザも、ユーザ pi が所属してるグループ群と同じになるように設定してみた。これで、前述の2つのスクリプトも動くようになった。

グループに追加。 :

ユーザをグループに追加する方法も一応メモ。

ユーザpiがどのグループに所属しているか確認。
$ groups pi
pi : pi adm dialout cdrom audio video plugdev games users input netdev spi i2c gpio

ユーザ hoge が、どのグループに所属しているか確認。
$ groups hoge
hoge : hoge sudo video

usermod を使って、ユーザ hoge を各グループに登録。
sudo usermod -aG sudo,pi,adm,dialout,cdrom,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio hoge

登録できたか確認。
$ groups hoge
hoge : hoge adm dialout cdrom sudo audio video plugdev games users input netdev pi spi i2c gpio

一旦ログアウトして再度ログイン。

以下、参考ページ。

_raspberrypi3に独自のユーザを設定する | Hornet|静岡拠点のWeb、ホームページ制作
_usermodでグループを追加するのは危険 - Qiita

usermod を使う場合は、それまで登録されてたグループ名を“全て”列挙しなきゃいけない。記述漏れがあると大変なことになる。だから、usermod より gpasswd を使って登録作業をしていったほうが安全、という話もあるのだけど。上記の記事によると、usermod の -G オプション利用時は、-aG にすれば追加登録になるから、そういう指定をすれば gpasswd と同様の処理になるよ、ということらしい。

2016/08/31(水) [n年前の日記]

#1 [nitijyou] 蚊取り線香でダメージ

部屋の中で虫が飛んでいたので蚊取り線香をつけたのだけど、予想通り寝ていたら悪夢を見たわけで。

蚊取り線香は、虫だけに効く成分が入っていると ―― 虫はその成分に対する受容体を持ってるけど、人間はその受容体をほとんど持ってないので、故に虫だけを殺せる、という仕組みらしいけど。なんだか怪しいなと。人間がその受容体を完全に持ってないというわけではなくて、おそらく体積からすればほとんど持ってないと捉えていいんじゃないか、みたいな話ではあるまいかと。であればやっぱり人間にもダメージがあるのではないかと邪推してるのだけど、どうなんだろう。

もしかすると、人間も個体によって、そのあたり違うんじゃなかろうか…。自分などは不幸にも多くの受容体を持って生まれてきてしまった個体なのではないか。食物アレルギーみたいなもんで…。

そういえば、新築の建物は建設時に使った接着剤が揮発していくので、人によってはソレでダメージを受ける、みたいな話もあったなと。…どんな化学物質が、どの個体にダメージを与えるかなんて、ちと分からないところがあるよなと。

まさかとは思うけど、鬱病になる・ならないも、結構ソレが絡んでたりして…。新築の建物に住んでる人は鬱病になる確率が高いとか。蚊取り線香を頻繁に使ってた人は鬱病になる確率が上がるとか。

2015/08/31(月) [n年前の日記]

#1 [nitijyou] 歯医者に行ってきた

雨だったので徒歩で。AM11:15頃に治療。細菌検査とやらをすると説明してもらえた。何かを取って、薬をつけて、蓋をして。

治療してから30分後ぐらいに、だんだん痛みが。痛み止め(ロキソニン)を2錠飲んでも、痛みが消えてくれない。何だコレ…。前回の治療時も、治療した当日は痛みがあって痛み止めを飲んでたけれど、その時よりはるかにヤバイ感じ。もしかして、自分の体には、つけてる薬が合わないのだろうか。

だんだん思い出してきた。十数年前に治療してもらった時も、同じことがあったような…。

2014/08/31() [n年前の日記]

#1 [dxruby] 多関節キャラエディタ GMCMT のプロジェクトファイルをDXRubyで表示

数日前に弄ってた Ruby + DXRuby のソースを今のうちに一応アップロードしておこうかと。まだ、基本ポーズを表示するところまでしかできてないけど。

_多関節スプライトエディタGMCMT

例えば、以下のような感じのデータを作ってみたりして。
gmcmt_ss.png

GMCMT はpng画像エクスポート機能があるので、下のような感じのアニメgif画像も作れる。
run_anime.gif


以下は、プロジェクトファイルを Ruby + DXRuby で読み込んで表示してみた例。
gmcmtanimeobj_rb_ss.png

ソースは以下。

_gmcmtanimeobj.rb
_main.rb
# GMCMTのプロジェクトファイルを読んで基本ポーズを表示してみるテスト

require 'dxruby'
require_relative 'gmcmtanimeobj.rb'

obj = GmcmtAnimeObj.new("walk_test.gmp")
bx, by = 320, 240
brot = 0

Window.loop do
  break if Input.keyPush?(K_ESCAPE)    # ESCキーで終了

  brot += 1 if Input.keyDown?(K_UP)    # 本体角度をキー入力で変更
  brot -= 1 if Input.keyDown?(K_DOWN)

  obj.draw_grid(bx, by) # グリッドを描画
  obj.draw(bx, by, brot) # 全パーツを描画
end

一応、実験に使った GMCMT のプロジェクトファイル一式(.gmp、.gms、画像ファイル)と上記のRubyソースも zip にして置いておきます。Public Domain / CC0ってことで。 *1

_sample_my_2.zip (27.4KB)

とりあえず、プロジェクトファイルがテキストファイル(ini(?)、json)で保存されてる限りは、ご覧のとおり、Rubyその他で読み込んでゲームに使うのも比較的容易なのでありがたいなと。これがもしバイナリファイルだったら、解析するだけでも面倒で、途中で投げ出してたはず。

できればDXRuby上でモーション再生までしてみたいけど、今後しばらくは別のことを勉強しなきゃいけない感じだったりするので、今回はここまで。

ゲームに使うとしたら。 :

ゲームに使うとしたら、画像描画の優先順位(プライオリティ値)が後々絡んできそうな気がする。複数のキャラが画面内に登場するだろうし。どうしたもんか。
  • 座標計算だけは事前にしておいて、最後にプライオリティ値に従って描画順を前後させるか。
  • それとも、背景画像その他をどのプライオリティ値で描画するか事前に厳密に決めておいて、その範囲内で各キャラのプライオリティ値が収まるようにするか。
後者の方が楽だろうか。どうなんだろう。

*1: GMCMTのプロジェクトファイルのライセンスはどうなるのか、ちょっとよく分からないけど、データファイルにまでライセンスが強制される事例ってあまり聞かないので、たぶん問題無いのではないかなと…。

2013/08/31() [n年前の日記]

#1 [haxe] Haxe+OpenFLでハマった

Haxe + OpenFL で、svg 表示ができるかどうかが気になって試していたのだけど、ハマってしまったり。全然すんなり行かない…。

結論から言うと、svgの内容によっては、一応表示できなくもない感じ。ただし、いくつか注意点がありそう。 要するに、HTML5用に出力すると、ハマります。svgをブラウザで直接開くと、まともに表示されるので、svgがおかしいというわけではないのだろうけど…。

ちなみに、Inkscape で svg を作ってたのだけど。その場合、以下の点に注意して作業・保存したほうが良いかもしれず。 とにかく一発で表示できず、何度も修正・保存形式を変えて試してみる羽目に。どう考えても、ビットマップ化して表示したほうが、余計なトラブルに遭遇せずに済みそう…。

Haxe + OpenFL上で、svg表示を可能にするライブラリ?は、gm2d/svg と haxenme/svg の2種類があるようで。前者を試したらエラーが出て解決できなかったので、後者で試した。

haxelib.exe を使って、いくつかライブラリをインストールする必要あり。
haxelib.exe install format
haxelib.exe install svg
haxelib.exe install swf
最後のは要らないかもしれないけど、念のため入れてみたり。

application.xml
<?xml version="1.0" encoding="utf-8"?>
<project>
    <!-- NMML reference: https://gist.github.com/1763850 -->
    
    <!-- metadata, make sure 'package' is at least 3 segments (ie. com.mycompany.myproject) -->
    <meta title="haxe_openfl_svg_disp_test" package="haxeopenflsvgdisptest" version="1.0.0" company="mieki256" />
    
    <!-- output -->
    <app main="Main" file="haxeopenflsvgdisptest" path="bin" />
    
    <window background="#FFFFFF" fps="60" />
    <window width="640" height="360" unless="mobile" />
    <window orientation="landscape" vsync="false" antialiasing="4" if="cpp" />
    
    <!-- classpath, haxe libs -->
    <source path="src" />
    <!--
    <haxelib name="gm2d" />
    -->
    <haxelib name="format" />
    <haxelib name="svg" />
    <haxelib name="openfl" />
    <haxelib name="actuate" />
    
    <!-- assets -->
    <icon path="assets/openfl.svg" />
    <assets path="assets/img" rename="img" />
    
    <!-- optimize output
    <haxeflag name="-dce full" /> -->
    
</project>

Main.hx
package ;

import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.Lib;
import openfl.Assets;

import format.SVG;

//import gm2d.svg.Svg;
//import gm2d.reso.Resources;
//import gm2d.svg.SvgRenderer;

/**
 * SVG display test. use haxenme/svg
 * @author mieki256
 */

class Main extends Sprite 
{
    var inited:Bool;
    var bg:Sprite;
    var count:Int;

    /* ENTRY POINT */
    
    function resize(e) 
    {
        if (!inited) init();
        // else (resize or orientation change)
    }
    
    function init() 
    {
        if (inited) return;
        inited = true;

        // (your code here)
        
        // Stage:
        // stage.stageWidth x stage.stageHeight @ stage.dpiScale
        
        // Assets:
        // nme.Assets.getBitmapData("img/assetname.jpg");

        // svg setting
        var svg = new SVG(Assets.getText("img/bg.svg"));
        var shape = new Shape();
        svg.render(shape.graphics);
        shape.cacheAsBitmap = true;
        
        //var svg = new SvgRenderer(Resources.loadSvg("img/bg.svg"));
        //var shape = svg.createShape();
        //shape.cacheAsBitmap = true;
        
        bg = new Sprite();
        this.addChild(bg);
        bg.addChild(shape);
        shape.x = -320;
        shape.y = -180;
        bg.x = 320;
        bg.y = 180;
        
        this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
        count = 0;
    }
    
    private function onEnterFrame(e:Event):Void
    {
        //bg.rotation = 20 * Math.cos((count * 4) * Math.PI / 180.0);
        count++;
    }

    /* SETUP */

    public function new() 
    {
        super();    
        addEventListener(Event.ADDED_TO_STAGE, added);
    }

    function added(e) 
    {
        removeEventListener(Event.ADDED_TO_STAGE, added);
        stage.addEventListener(Event.RESIZE, resize);
        #if ios
        haxe.Timer.delay(init, 100); // iOS 6
        #else
        init();
        #end
    }
    
    public static function main() 
    {
        // static entry point
        Lib.current.stage.align = flash.display.StageAlign.TOP_LEFT;
        Lib.current.stage.scaleMode = flash.display.StageScaleMode.NO_SCALE;
        Lib.current.addChild(new Main());
    }
}

以下の3行が肝心の部分、なのかな。
        var svg = new SVG(Assets.getText("img/bg.svg"));
        var shape = new Shape();
        svg.render(shape.graphics);

SVG表示の不具合について。 :

以下の画像のような感じになる。

グラデーションの色がおかしくなる件。

Flash ... OK。
Haxe + OpenFL + Flash

Neko ... OK。
Haxe + OpenFL + Neko

HTML5 ... NG。色がおかしい。
Haxe + OpenFL + HTML5


ストロークが入っていると表示がおかしくなる件。

Flash ... OK。
Haxe + OpenFL + Flash

Neko ... OK。
Haxe + OpenFL + Neko

HTML5 ... NG。ストロークが無いはずの部分にまでストロークがついている。
Haxe + OpenFL + HTML5

マウス座標の取得でハマったり。 :

画像を表示してマウスカーソルを追いかける、という処理を試しに書いていたのだけど。 Flash や Neko上ではすんなりと正常動作したものの、HTML5上ではうんともすんとも反応しなくてハマったり。

Spriteのプロパティ値を疑って、半日ほどアレコレ試していたけど。そこではなくて、マウス座標がそもそも取得できてない場面があったのが原因だった。undefined だか NaN だかの値をマウス座標として得てしまった際に、Sprite の x座標にもその値が入ってしまって、その後も、その計算不能な値を使って計算しようとするから、ずっと計算できずにピクリとも動かなくなっていた。

Main.hx
package ;

import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.Lib;
import flash.text.TextField;
import openfl.Assets;

/**
 * OpenFLテスト。マウスカーソルを画像が追いかける。
 * @author mieki256
 */

class Main extends Sprite 
{
    var inited:Bool;
    var spr:Sprite;
    var bmp:Bitmap;
    var tf:TextField;
    var mousex:Float;
    var mousey:Float;

    /* ENTRY POINT */
    
    function resize(e) 
    {
        if (!inited) init();
        // else (resize or orientation change)
    }

    /**
     * 初期化処理
     */
    function init() 
    {
        if (inited) return;
        inited = true;

        mousex = 320;
        mousey = 180;
        
        // 画像を描画
        spr = new Sprite();
        bmp = new Bitmap(Assets.getBitmapData("img/chara.png"));
        bmp.x = - bmp.width / 2;
        bmp.y = - bmp.height / 2;
        spr.addChild(bmp);
        Lib.current.addChild(spr);
        
        // 文字列を描画
        tf = new TextField();
        tf.selectable = false;
        tf.width = 640;
        tf.height = 48;
        tf.textColor = 0x333333;
        tf.text = "start";
        Lib.current.addChild(tf);

        // ステージ上でマウスが動いた際のイベントを登録
        Lib.current.stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
        
        // 毎フレームの処理を登録
        this.addEventListener(Event.ENTER_FRAME, mainUpdate);
    }
    
    /**
     * マウスカーソルが動いた時の処理
     * @param   event
     */
    function onMouseMove(event:MouseEvent):Void
    {
        mousex = event.stageX;
        mousey = event.stageY;
    }
    
    /**
     * メインループ部分相当
     * @param   e
     */
    private function mainUpdate(e:Event):Void
    {
        var mx:Float;
        var my:Float;

        // マウス座標を取得
        switch (1) {
            case 0:
                // html5上でも動く。
                mx = mouseX;
                my = mouseY;
            case 1:
                // html5上でも動く。
                mx = mousex;
                my = mousey;
            default:
                // html5上では動かない。Flash や Neko では動く。
                mx = Lib.current.stage.mouseX;
                my = Lib.current.stage.mouseY;
        }

        // キャラクタ画像が、マウスカーソルを追いかける処理
        var spd:Float = 0.04;
        var dx:Float = (mx - spr.x) * spd;
        var dy:Float = (my - spr.y) * spd;
        spr.x = spr.x + dx;
        spr.y = spr.y + dy;
        
        tf.text = 'mouse x,y = $mx, $my';
        //tf.text = 'spr x,y = ${spr.x}, ${spr.y}';
    }
    
    /* SETUP */

    public function new() 
    {
        super();    
        addEventListener(Event.ADDED_TO_STAGE, added);
    }

    function added(e) 
    {
        removeEventListener(Event.ADDED_TO_STAGE, added);
        stage.addEventListener(Event.RESIZE, resize);
        #if ios
        haxe.Timer.delay(init, 100); // iOS 6
        #else
        init();
        #end
    }

    public static function main() 
    {
        // static entry point
        Lib.current.stage.align = flash.display.StageAlign.TOP_LEFT;
        Lib.current.stage.scaleMode = flash.display.StageScaleMode.NO_SCALE;
        Lib.current.addChild(new Main());
    }
}

2012/08/31(金) [n年前の日記]

#1 [nitijyou] 自転車で買い物に

夜になってから自転車で買い物に。近くのコンビニまで。

体が蜘蛛の巣だらけに。ここ数時間、歩道を誰も歩いてなかったのだな…。

2011/08/31(水) [n年前の日記]

#1 [nitijyou] 線量計で自宅周辺の空間線量を測定した

昨日から、福島県須賀川市でも、線量計貸出サービスが始まった。

何ヶ月も前に、親父さんが、線量計貸出し等を検討してほしい、といった要望メールを市に出したことがあり。なので、ようやくかよ、やっとかよ、何ヶ月かかってんだよ、対応遅いよ、危機感無さ過ぎだよ、という印象も。いや、もちろん、サービスが始まるだけでもありがたい・随分マシだと思うのですが。最悪、このまま須賀川市は、学校や公園のソレを測るだけで、他には何もしないのかもしれん、とすら予想してたので、そういう状況に比べたら全然マシではあるのですが。…線量計が確保できなかったのか、それとも最近要望がどんどん増えてきて対応せざるを得なかったのか、あるいは国や県から何かしら指示でもあったのか。実状はさっぱり分からんけど。

借りる手順としては、事前に各公民館に電話で予約をして、午前もしくは午後の間に貸してもらう、という形。ちなみに、サービス開始日に親父さんが、近くの公民館に電話して予約しようとしたら、電話が繋がらなかったそうで。仕方ないから比較的遠くにある中央公民館に電話を入れて予約した次第。…たぶん、電話が混雑してたのではないかと想像。皆、そういうサービスが始まってほしいと願ってたんじゃないだろうか。いや、実際のところは分からんけど。

ということで、親父さんの運転する車に同乗して、今日の午前中、中央公民館に行って線量計を借りてきた。いや、借りたのは親父さんだけど。借りるときは身分証明をする何かが必要。免許証とか、保険証とか。

線量計の使い方が書かれている用紙を貰ったが、市のWebサイトで公開されてたpdfと内容は同じだった。親父さんと一緒に、事前にpdfに目を通していたので、そのあたりは問題無し。

用紙の裏には住所と線量を書き込む欄が印刷されていて、できれば記録して市に提出してほしいとのこと。その話を聞いて、感心、というより感動した。各家庭で線量を調べて、数値を記入して提出すれば、それがそのまま市内の線量マップ作成データとして利用できる、ということだろう。さすがに今から始めるだけあって、賢いなと。素晴らしい。…後になって考えてみると、その時の感動はヤンキー効果じゃないのか、という気もするけれど。まあ、賢いやり方なのは間違いないわけで。

渡された線量計は、あらかじめビニール袋に入っていた。念のためにと、こちらもビニール袋を持って行ったのだけど、必要なかったなと。

測定結果をざっくりとメモ。 :

場所は、福島県須賀川市森宿海道西のあたり。

線量計は、35秒ほどで測定できる仕様だった。測定開始ボタンを押すと、35が表示され、カウントダウンが始まる。0になると、数値が表示される。測定中は機器をあまり動かさないようにする。市からもらった用紙には、1m か 50cm の高さで測定するよう心掛ける、と書いてあったのでそれに従った。雨どいや側溝を測る際は、1cmぐらいの距離で測ってみるのもアリ、とも書いてあった。

あちこち調べてみたが、ざっくりまとめると。
  • 門前の未舗装道路や庭など、つまり自宅周辺の屋外では、0.4〜0.5μシーベルトぐらい。
  • 茶の間や寝室等、つまり屋内は、0.15〜0.3μシーベルト、平均すると0.2μシーベルトぐらい。
  • 1階より2階のほうが、全体的に数値が高かった。地面からは離れているはずなのに、何故なんだろう…。
  • 側溝と、雨どいの出口のあたりも、おそらくは凄い値が出るだろうと思いながら測定したが。0.3〜0.4μシーベルトだった。庭のほうが高い。予想外の結果。

自宅近くにある空き地も測定。市の花火大会の際には、親父さんの写真仲間が何人か集まってシャッターを切る場所なので。
  • 草の上は、0.45μシーベルトぐらい。家の庭と似たような値。
  • 草を刈った場所は、0.3〜0.4μシーベルト。
草を刈ることで線量が減るというのはどうやら本当らしい。

測定中、近所の人達の会話が聞こえてきた。どうやらそれらの御家庭では、昨日の段階で各自測定していたらしい。この手の不安を抱えていたのはウチだけではなかったと知って、なんだかホッとした。この界隈ではウチだけが気にしているのだろうか、ウチだけが異常なのか、と思ってた。そうじゃなかった。皆、不安だったんだ。…考えてみれば、それらの御家庭には、赤ちゃんや子供さんが居る。ウチなんかより、はるかに不安だったはずで。サービス開始と同時に急いで予約を申し込むのは、当たり前といえば当たり前か。いや、あるいは、子供さんがいる御家庭には何かしら別の文書が届いていて、優先的に貸出をしているのかもしれない。…そこまで気が利いたことをしているのだろうか。分からんけど。

車を走らせて、親父さんが家庭菜園?をしている畑も測定。江持のあたり。須賀川市と郡山市の境界の近く。
  • 新聞等で公開されている線量マップを見ると、自宅より畑のある場所のほうが値が低いように見えている。
  • 以前、農機具販売店で土の線量を測ってもらった際は、畑の土は、庭の土の1/3ぐらいの線量だった。
なのでおそらく、畑周辺は自宅よりも随分と低い値が出るのでは、と予想していたけれど。これがまた、全く予想外の結果で。
  • 畑の真ん中あたりは、0.57μシーベルト。
  • 木の下などは、0.4μシーベルト。
つまり、総じて、自宅の庭より、畑のほうが高かった。土の線量はあれほど違ったのに。何故。

お袋さんの実家が畑のすぐ近くにあるので、伯父さんにお願いして、そこも測定させてもらった。もしかすると、畑だけが異様に高かったりするのでは、とも思ったので。
  • お袋さんの実家の庭が0.4μシーベルト。
  • 屋内が0.2μーシーベルト。
ウチと、お袋さんの実家は、そこそこ距離があるほうだと思うけど、ほぼ似たような値になった。どうやらこのあたり一帯は、大体そういう感じの線量なのかな、という気がする。

伯父さんの話では、以前も誰かに測ってもらったことがあるそうで。物置?の横の、雨水が集まる場所が高かったんだ、と教えてもらった。試しに測ってみたら、1μシーベルト。おお。とうとう1μシーベルトを超える場所に遭遇してしまった…。雨が溜まって乾くところは高くなるという話は本当らしい。また、0.n μシーベルトより大きい値が出たことで、線量計がそれなりにちゃんと動いていることも確認できた、ような気がする。

09:00〜12:00までの貸出時間だったけど。大体10:30ぐらいにはほとんど測定が終わったので、11:00頃、中央公民館に返却。用紙の裏にも場所と数値を記録して渡した。

線量計によっては、10分ほど時間をかけないと測定できないという話も聞いていたので、何度か借りて測定しないといかんのかもと想像していたが。1分以内でざっくりと測れる機器だったので、サクサク測れてとても助かった。…結構値が張る製品だったりするのかしら。

測定してみて思ったこと。 :

測ってみることで、物凄く安心できることを実感した。具体的な数値で現状を認識できること、「見える化」?ってのは、とにかく大事だなと。ここまで安心できるとは予想してなかった。

今までは、「測ってないから把握できてないだけで、実は、この家の周辺は、ホットスポットだったりして…」「本当は、避難地域に指定されてもおかしくないぐらい、酷い状態になってたりしないか…」と不安でしょうがなかったのだけど。測ってみたら、市が公開してる、学校や公園の測定結果と、さほど大きな違いは無く。

ここまで安心できると分かってたら、もっと早い時期に、どうにかして線量計を購入しておくべきだったか…とも思ったが、それも何か釈然としないものがあったりするわけで。誰のせいでこういう状況になってるんだよ、とか。毎日ずっと使うものなんだろうか、とか。2万円前後の製品が数倍の値段になっててさすがにそれはどうなんだ、とか。靴やバッグを扱ってた店が急に線量計を扱い始めて、しかもそういう怪しい?店でしか買えそうにないこの状況はどうなのよ、とか。そういったアレコレを考えると、個人で買うのも、何かこう、ムカムカと腹が立ってくるというか。

ということで、冒頭で「遅いよ」等の文句を書いてしまったけれど、それでも、貸出サービスを始めてくれてありがとう、と。>須賀川市。いやホント、マジで助かりました。

#2 [comic] 「うさぎドロップ」1〜4巻を購入

中央公民館からの帰りに寄った、ロックタウンの宮脇書店で、1,3,4巻を購入。2巻は売り切れ。入荷予定は未定とのこと。帰宅後、親父さんから電動自転車を借りて、ヨークベニマル内の本屋さんまで2巻を探しに。幸い全巻揃ってた。2巻だけ購入。

現在ノイタミナ枠で、アニメ版が放送中の、この作品。アニメ版の4話?を見て、その設定に興味が湧いて。Wikipediaを眺めてラストのあたりの展開をざっくりと知った際に、ああ、この漫画を、自分は絶対に買わなければいけない、と思ったのです。

と言うのも。昔、これとほぼ同じ設定、同じラストの漫画を描けないかと夢想・妄想してた時期があるわけで。キャラやエピソードをちょこちょこと自由帳に描き残してみたものの、肝心のネームが全然描けなくて見事に挫折。その、自分が挫折してしまったソレと、ほぼ同じ内容の漫画が存在して、しかもどうやらヒットしているらしい…。これは絶対に読まなければと。自分の脳内でモヤモヤしていたアレは、どうすれば作品に成り得たのだろうかと。テスト用紙を前にして手も足も出なかった人間が、ここに来て正解が書かれた答案用紙を見せてもらえるような、そんな感覚で購入したという。

で。読んでみて、コレは面白いわと。プロの漫画家さんは、さすがだわと。自分が夢想していたソレより、何倍も面白い。こういう風に話を作っていける人だけが、漫画家になれるのだなと。…バクマンアニメ版の特番内で、編集の人が、「設定だけなら編集者でも、極端なことを言えば素人さんでも作れる。話まで描ける人が漫画家になれるんだ」と言ってたことを思い出したり。その通りなんだろうなと。

何にせよ、読んだことで、モヤモヤしていたそれがスーッと消えていってくれた、そんな気がしたり。読んで良かった。いや、まだ第一部、幼女時代の巻しか読んでないけど。

それはそれとして、ちょっと気になったことが。

漫画原作版よりアニメ版のほうが、キャラが可愛らしいように思えて、これはどうしてなんだろうと。フツーは逆で、漫画原作のほうがヨサゲに見えることのほうが多い印象が。おそらく、読者が想像する余地がある分、漫画のほうが各読者の理想のソレを呼び起こしやすいのでは、と想像してるのだけど。しかしこの作品は逆。何故。アニメ版でしか表現できない、声と動きが、とにかく秀逸だったのか。それとも、原作の絵柄の、力強さを持った極太のペンタッチが、キャラの可愛さ云々を殺してしまっているのだろうか。でも、表紙のカラー絵に関しては、可愛らしく見えるし…。このあたりの印象の違いは何に起因するのか。何かが足りないのか、何かが多過ぎるのか。さてはて。

もう1点。各コマがでか過ぎて…ちょっと…。なんだかスカスカな印象が。最近の漫画って、えてしてこんな密度だったっけ…? このコマの大きさだったら、一般的な単行本サイズ、あるいは文庫版サイズのほうが良かった。

さらにもう1点。サイズが大きいせいなのか、あるいは紙質が良すぎるのか、各巻の値段が高いあたりもちょっと。何かこう運命的なものを感じてしまったので「えいやっ」と買ってしまったけど。でも…。やっぱりちょっとお値段が高過ぎる…。だって最終巻まで揃えたら…ねえ?

2010/08/31(火) [n年前の日記]

#1 [emacs] emacsでウインドウ上のどの行にカーソルがあるのかを取得する方法が分からない

xyzzy なら (get-window-line) で取得できるのだが…。

_GNU Emacs Lispリファレンスマニュアル: バッファ内の位置 の、Function: count-lines の解説の中に、それっぽい記述が。
(defun current-line ()
"Return the vertical position of point..."
(+ (count-lines (window-start) (point))
(if (= (current-column) 0) 1 0) -1))

GNU Emacs Lispリファレンスマニュアル: バッファ内の位置 より

これで取得できるのか…?

2009/08/31(月) [n年前の日記]

#1 [pc] Microsoft Natural Wireless Laser Mouse 6000の電池を1本にしてみたり

やっぱり肩や腕が痛いわけで。マウスの重さが軽くなれば多少は違うだろうか、と思ったので単3電池2本のところを単3電池1本にしてみたり。多少は軽くなった。が、あまり違いはないか…。

2008/08/31() [n年前の日記]

#1 [iappli] ある程度できてきたのでまたバイナリを送った

あちらから来ていた修正要望はあらかた対応できたはず。

仮画像の一覧も送ったり。 :

もしかすると見落としがあるかもしれないので、念のために今現在バイナリに含めて使っている仮画像を一覧にして送っておいた。

#2 [prog] 画像一覧htmlを出力するPythonスクリプトを作成

以前そういう処理をするPerlスクリプトを作成していたのだけど、PerlMagickが必要なスクリプトで。試しに実行してみたら、PerlMagickが入ってない、と言われる。

Meadowを動かす都合上、Meadowのバージョンに合わせたImageMagick(PerlMagick)をインストールしておかないといかんわけで、そのあたりのやりくりが面倒になってしまって今は入れてなかった、のかもしれず。>自分の環境。かといって、またそのへんの環境設定で苦労するのもやはり面倒。

仕方ないのでPythonで書き直し。Python+PILなら、バージョンを固定してくるアプリ等は無いので。

というか、MeadowのImageMagickバージョン縛りはどうにかならんのか。いやまあ、ImageMagickがやたらバグがあって、あるいは仕様が頻繁に変更されがちなため、バージョン決め打ちじゃないと使えないというのが根本的な原因なんだろうけど。コマンドラインツールに渡すオプション文字列やパラメータすらバージョンによって結構変わってしまうImageMagickはどうにかならんのか。

とりあえずPythonで書いたソレをメモ。 :

mkimglisthtml.py という名前で作成。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# -*- coding:utf-8 -*-
# 
# 画像一覧htmlを作成するPythonスクリプト
# PILを使用
# 使用方法は スクリプト名 -h で表示される。

import re
import os
import sys
from optparse import OptionParser
import Image

def action_read_dir(indir):
    dirname = os.path.abspath(indir)
    filelist = []
    files = os.listdir(dirname)
    p = re.compile(r"\.(gif|jpg|jpeg|png|bmp)$", re.IGNORECASE)
    for fn in files:
        m = p.search(fn)
        if m:
            filelist.append(fn)
    
    return filelist

def output_image_album_html(indir, lst, ofname):
    dirname = os.path.abspath(indir)
    outlist = []
    
    header = """
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<style type="text/css">
<!--
  td.inimg { text-align:left; }
  td { border:1px solid #aaa; padding:3px; }
  body { background-color:#ddd; }
  table { border-collapse:collapse; empty-cells: show; }
  p.filenameinfo {font-size:medium;}
  p.sizeinfo {font-size:small;}
  p.filesizeinfo {font-size:small;}
  p.palinfo {font-size:small;}
-->
</style>
</head>
<body>
<table>
"""
    outlist.append(header) # header 登録
    
    for fn in lst:
        pn = os.path.join(dirname, fn)
        im = Image.open(pn)
        (w, h) = im.size
        filesize = os.path.getsize(pn)
        pal = im.palette
        if pal is None:
            pallen = 0
        else:
            pallen = len(pal.palette) / 3
        
        str = "<tr>"
        str += """<td><p class="filenameinfo">%s</p></td>""" % (fn)
        str += """<td><p class="sizeinfo">%d x %d</p></td>""" % (w, h)
        str += """<td><p class="filesizeinfo">%d byte</p></td>""" % (filesize)
        str += """<td><p class="palinfo">%d color</p></td>""" % (pallen)
        str += """<td class="inimg"><img src="%s" width=%d height=%d alt="%s"></td>""" % (indir+"/"+fn, w, h, fn)
        str += """<td class="incomment"> </td>"""
        str += """</tr>\n"""
        
        outlist.append(str)

    footer = """
</table>
</body>
</html>
"""
    
    outlist.append(footer) # footer登録

    # ファイル出力
    
    if ofname == "":
        for s in outlist:
            print s.encode('cp932')
    else:
        fp = open(ofname, 'w')
        for s in outlist:
            fp.write(s.encode('cp932'))
        fp.close()

def main():
    usage = "usage: %prog [options]"
    parser = OptionParser(usage=usage, version="%prog 0.0.1")
    parser.add_option("-d", "--dir", action="store", type="string",
                      dest="indir", metavar="DIR",
                      help="read DIR name.", default=".")
    parser.add_option("-o", "--output", action="store", type="string",
                      dest="outfilename", metavar="FILE",
                      help="Output html FILE name.", default="")
    parser.add_option("-v", "--verbose", action="store_true", dest="verbose")
    parser.add_option("-q", "--quiet", action="store_false", dest="verbose")
    (options, args) = parser.parse_args()
    
    if len(args) != 0:
        parse.error("incorrect number of arguments")
        
    if options.verbose:
        print "read Dir    [%s]" % options.indir
        print "output html [%s]" % options.outfilename

    lst = action_read_dir(options.indir)
    output_image_album_html(options.indir, lst, options.outfilename)

if __name__=='__main__':
    main()
mkimglisthtml.py -d 画像群が入ってるディレクトリ名 -o 出力htmlファイル名

2007/08/31(金) [n年前の日記]

#1 [cg_tools] CAD関係を勉強中

HO_CADをインストールしてみた。 :

UIがDOS時代、いや、Win3.1時代のソレで閉口。メニュー項目を選択すると、大本のメニューが消滅してサブメニュー項目のみが表示されるあたりに困惑した。Windowsアプリの流儀には、基本的に沿ってないのだな…。もっとも、DOS時代のCADを意識して作られてるらしいので、それも必然なのか。昔からCADを触ってた人には、かえって使いやすいのかもしれん。

DJ!! Standard 2 をインストールしてみた。 :

UIが現代風。Microsfot Office を見ているかのような印象。タブを多用してるあたりも今風な印象。各図形の表示も、アンチエイリアスがかかってる。ただ、複線の引き方がわからない。

DOS時代のフリーのCADのアレコレを意識せずに使うのであれば、これが万人にお薦めかもしれず。少なくとも、MS Officeに触ったことがある人なら、UIで戸惑うことはないはず。

AR_CAD をインストールしてみた。 :

これは…! UI、特にメニューのあたりは、アイコンも同時に表示してるせいか、見た目ちょっとごちゃごちゃしてるけど。各コマンドの操作に関しては、妙に使いやすい。また、pdfでエクスポートできるのもヨサゲ。自分にとっては、これが一番使いやすそう。

#2 [vine][linux][epia] ダンボール工作でファン用のフード?を作った

Mini-ITXケース ES-1100W を横置きできるように、8cmファンをつけるフードを作り直し。AR_CADで図面?を引きつつ形状を検討。 図面をpdfエクスポートしたモノ _(1) _(2) 。各板は、ビニールテープでくっつけた。ビニールテープを貼ることで、空気も漏れなくなるだろうし。

ES-1100Wの厚みが、8cmよりちょっと短いぐらいなので、上下をダンボールの板で挟みつつ、隙間に数mmのダンボールを入れたらピタリと収まった。

結構冷えてくれる模様。 :

標準添付の 4cmファン x 1 を回していた時は、手で触るのを躊躇するぐらいにケース全体が熱くなってたけど。8cmファンで空冷したら、触っても熱さを感じない・ほんのちょっと暖かいかなと思う程度の温度になった。

てことは。Mini-ITXケースという、中が狭いケースであっても。それなりの風量のある8cmファンをつけてあれば、CPU+M/Bの発熱をある程度解消できる…ということだろうか。

つまり、4cmファンで冷却する ES-1100W ではなく、8cmファンで冷却する _Dirac Noah 800-B Rev1.5 あたりを選んでおけば、ここまで苦労せずに済んだのかもしれない。Noah 800-B なら、8cmファンの風が直接HDDに当たる配置になってるようでもあるので、仮に3.5インチHDDを入れてもなんとかなった可能性もありそうな。市場価格的には、Noah 800-B のほうが5,000円ほど高いけど。今回、裸族のマンションやらIDEケーブルやらを追加購入したことを考えると、コスト的にも最初から Noah 800-B を選ぶべき、だったのかもしれん…。

いやいや、HDDに風が直接当たるということは、HDDによって暖められた風がCPU+M/Bに当たるということで…。HDDはいいかもしれんが、CPU+M/Bの冷却がよろしくない状態になる可能性もあるのか。うーん。

_よくある買い物日記: Mini-ITXケース Noah 800-D :

購入レビュー記事が。ありがたや。写真が載ってるのが、とにかくありがたい。参考になる…。

HDDが40℃前後…てのはちとアレだなぁ。裸族のマンションでは33℃ぐらいだし。それと、やはりスペース的に厳しいあたりがなんというか。

2006/08/31(木) [n年前の日記]

#1 [java] _JMF Video Capture - JMFでビデオキャプチャ

NHKをつけてたら、小学生にクレイアニメを作らせる、てなニュースが流れてた。自分もやってみたいなと思ったが、キャプチャするソフトがない。980円で買ったUSB接続Webカメラはあるのだけど。

そもそも、フリーのプログラミング環境で、USBカメラから画像を取得することはできるんだろうか。疑問に思って検索してみたら、上記ページに遭遇。どうやら java でキャプチャはできるらしい。python でキャプチャする事例は見つからなかった。

クレイアニメを作るとなると…。現在の画像と、撮影済みの画像を、パカパカと切り替えて表示したりすれば、動きが判って作りやすいかもしれない。もしくは、オニオンスキンとやらで表示するとか。

_JMF入門 :

メモ。

この記事へのツッコミ

Re: JMF Video Capture - JMFでビデオキャプチャ by 名無しさん    2008/08/26 13:46
他にもライブラリはあると思いますが、OpenCVを使うと、pythonから、画像取得、画像処理が出来ます。

検索結果
http://www.google.com/search?q=OpenCV+python&lr=lang_ja

#2 [python] python関係をインストール

プログラミング言語 Python 関係のツールを色々インストール。

_Python標準リリース版 :

Windows向けの python-2.4.3.msi をインストール。

以前は ActivePython をインストールしたけど、今回は標準リリース版とやらをインストールしてみたり。

_Python for Windows extensions :

Windows 用に特化した何かが入ってるらしいけどよく知らない。とりあえず、 pywin32-209.win32-py2.4.exe をインストール。標準リリース版の Python を入れたときは、これも別途入れることになるらしいけど。ActivePython を入れた場合は一緒に入るので別途入れる必要はない、とどこかで見かけた気もする。

PythonWin なる環境が入ってるらしい。…標準リリースでついてくる IDLE なる環境は、Windows 上ではコード補完等してくれないのだけど。 *1 PythonWin なら補完をしてくれるらしいので、ちょっと期待。

_JapaneseCodecs :

本パッケージは、Unicode をサポートした Python において、EUC-JP、Shift_JIS、ISO-2022-JP などの日本語の文字エンコーディングを利用できるようにするためのコデック集です。

JapaneseCodecs より

JapaneseCodecs-1.4.11.win32-py2.4.exe をインストール。

_ctypes :

_こちらの記事 で入れていたみたいなので、必要なのかなと。…何に使うのかはよくわかってない。 ctypes-1.0.0.win32-py2.4.exe をインストール。

_wxPython :

Python で GUIツールを作れる。らしい。Tk とか Gtk とか Qt とかそのへんと似たようなもの、なのかなと。wxPython2.6-win32-unicode-2.6.3.3-py24.exe と、Doc & Demo の wxPython2.6-win32-docs-demos-2.6.3.3.exe をインストール。

_PythonSidebar ja :

Mozila Firefox のサイドバーにチュートリアル文書を表示できる、らしい。 python-sidebar-ja24.zip をインストール。

_Pydev :

eclipse 上で Python 関係の開発をしやすくする plugin、らしい。eclipse のアップデートマネージャ? 更新マネージャで、
http://pydev.sf.net/updates/
を指定すればインストールできるらしいが…。eclipse 3.2 が必要と言われてしまった。

今まで 3.1.2 を入れてたので、eclipse 3.2 のインストール・各種 pluginのインストールからする羽目に。トホ。…でも、DoJa 4.1 の最新版をDL・入れてみたら、色々と機能が追加されてたので、まあいいかなと。一応 DoJa プラグインも動いたみたいだし。

コード補完が使えるっぽい。

_Boa Constructor :

GUIビルダー。らしい。boa-constructor-0.4.4.win32.exe をインストール。

_SPE IDE - Stani's Python Editor :

Python用エディタ、らしい。SPE-0.8.2.a-wx2.6.1.0-py24.exe をインストール。…微妙に補完が怪しい。

*1: UNIX環境ななら補完等できるらしい。補完するのに readline なるものが関係してるらしく。Windows はソレがないので出来ないのだとか。ただ、Windows 環境でも最近は IPython なるものがあるらしく。それを使えば、というか使えるように色々入れていけば、補完等もできるとかなんとか。とメモ。

2005/08/31(水) [n年前の日記]

#1 [nitijyou] 親父さんが犬を動物病院に連れてった

両目が目やにだらけになったので。で、診察してもらったら結膜炎らしく。目薬を貰ってきたとか。後ろから顔を持ち上げるようにして目薬を注せとのこと。

外で飼ってる犬のせいもあって、体中ダニだらけだったらしい。1ヶ月ほどダニがよりつかなくなる薬を、3滴ほど投下したとか。その手の薬は市販されてもいるらしく。そんな薬があることすら知らなかったわけで、ウチは飼い主失格だな…。でも、1ヶ月も持つというのがなんだか不気味。

この記事へのツッコミ

Re: 親父さんが犬を動物病院に連れてった by Y    2005/09/01 20:18
ダニは外犬の宿命ですね。
散歩とかで草むらに突っ込む習性があるとダニが付き易いみたい。

うちでは昔ヒマな時に膝の上に乗せてダニ取りやってました。
ピンセットで毟ってやるんですが案外おとなしくしてるもんです。

ノミ取りの薬とかは市販品は効かないって聞きましたよ。
でも動物病院で処方してもらうと高いんですよね。
ダニ取り・ノミ取りの薬 by mieki256    2005/09/01 23:42
> ノミ取りの薬とかは市販品は効かないって聞きました

なんと。それは気になる話であります。

> でも動物病院で処方してもらうと高い

それだけ強力な薬を使ってるということなのかしら…
それもそれで怖いなぁ…

#2 [nitijyou] とりあえずチラシ作成作業は一段落

サーバにアップしてアドレスを相手先にメールで連絡。明日の朝、電話でその旨伝えておこう…。

#3 [game] _「エミュレータ」と呼ばれる不正プログラム

「PSP仰天裏ワザ…レトロゲームがタダで遊べる」というZAKZAKの記事。相変わらず、ZAKZAK。やっぱり意図的にやってるのだろうなぁ。 _(via あさってのほう)

#4 [zatta] _普通じゃないよ潜水艦

_普通じゃないよ潜水艦 その2
_普通じゃないよ潜水艦 その3

潜水艦内における各種トリビアを紹介しているページ。 _(via del.icio.us/otsune)

_『Man Machine System』 潜水艦って何? :

潜水艦関連の情報が多々。なんとなく、潜水艦の映画を作りたくなる人達の気持ちが判ったような。オタク属性のある人にとって、快感になりそうな話がたくさんありそう。

#5 [jiji] _Life is beautiful: 米国政府の「年次改革要望書」を読む

「年次改革要望書」は、日米双方の政府が、毎年、それぞれの国の企業が相手の国でビジネスをする場合の障壁になっている問題点を指摘し合い、相互に「市場開放」を進めようというために交換される文書である。
〜米国政府は米国資本の銀行や証券会社から、「郵便局の貯金業務が法律や税制の面で優遇を受けすぎており、かつ、日本国民が『郵便貯金は政府がバックにいるから100%安全だ』と思っているため公平な競争が阻害されている、なんとかしてくれ」というリクエストを受けていることが分かる。
ここまではっきりと米から要求が出ていたのか…。 _(via del.icio.us/otsune)

_Life is beautiful: 理科系人間にも分かる「小泉改革の本質」 :

今の日本が抱える一番の問題は、財政赤字である。支出が税収を大きく上回る状況を何年も続けて来たため、国債という形の大量の借金を抱える悲惨な状況になっているのだ。誰が考えても、この「支出が税収を上回る状況」は早急に解消すべきなのだが、それがとても難しいのである。
この問題の正しい解決方法は、その構造そのものを壊してしまうこと(=構造改革)にあるのだが、それがまた難しいのである。なぜなら、そういった構造を決める立場にいる政治家の多くが、同時に今の構造から多くの恩恵を受ける立場にあるからである。彼らとしては、構造改革をすることイコールその恩恵を失うこと、なので、当然のように構造改革に反対する抵抗勢力となるのである。

悲観論者は、「そんな状況では決して日本の国はまともにならないじゃないか」と嘆くかも知れないが、必ずしもそうではない。我々有権者には、『票』という武器がある。この武器を最大限に生かして、抵抗勢力を国会から追い出し、自分自身の目先の利益を犠牲にしてでも構造改革を進めてくれると信じるに値する政治家に票を投じれば良いのである。

#6 [jiji] _郵政民営化って要するに何なの?と政治に詳しい人に聞いてみた。

わかりやすい。合ってるかどうかはわからないけど。
だから、現状に不満がある人たちは、
 第一に、必ず投票すること、
 第二に、現状に不満があるんだから、前職・元職には投票しないこと。
これでいけばいいのに。政策なんか無視して。
シンプルだなぁ。 _(via 読書記録ChangeLog)

_夏休みの宿題提出・・・再び郵政民営化!! :

前述の記事のコメント欄で紹介されててちょっと気になったのでメモ。「外資にのっとられた」場合のシミュレーション記事。かしら。

この記事へのツッコミ

Re: 郵政民営化って要するに何なの?と政治に詳しい人に聞いてみた。 by けいと    2005/09/01 14:32
> 第一に、必ず投票すること、
> 第二に、現状に不満があるんだから、前職・元職には投票しないこと。

私は投票権を持つ前からずっとこうですよ^^;
親の教えもあるんですが…

原則として「悩んだら野党」にしています。

ただ、私の場合、
「日本の与党=地元では野党」という状態が続いているので
非常に面倒なのですが。
Re: 郵政民営化って要するに何なの?と政治に詳しい人に聞いてみた。 by mieki256    2005/09/01 23:13
> 原則として「悩んだら野党」

なるほど。それもまたシンプルで判りやすいですな…。
追加項目 by がんした    2005/09/03 02:09
第三に、投票したい人が居ない場合は、白紙投票。過半数を超えれば選挙やりなおしに出来ます。
Re: 追加項目 by mieki256    2005/09/06 02:28
> 白紙投票が過半数を超えれば選挙やりなおし

恥ずかしながら、このルールは知らなかったのですが…
実際有効なルールなんでせうか?

検索したところ、
「そういう制度にしよう」と提案してる事例は見かけたものの、
そうなってる、という事例は見かけなくて疑問に思ったり。
Re: 追加項目 by がんした    2005/09/08 00:01
ぐぐってみたが、詳細不明。
ひょっとしたら「有効票数の過半数が白紙なら再選挙」ではなく
「有効票数の半数以上の票が取れなければ、再選挙」だったのかもしれない。
今度、入れ知恵してくれた知人に確認してみます。

#7 [pc] _タイトーと言えば…、26年ごしの懺悔

PC-8001発売当時、雑誌記事用にインベーダーゲームの画面を捏造したことが…という話。

人間という生き物は、「文字」「テキスト」だけではダメで、「画像」が目の前に現れたとき、急激に想像力が働き始める・創作意欲が湧き始める生き物なのだろうか、てなことを思ってしまったり。

そういや自分がMZ-700を選んだのも、MZ-80K2E等の広告にあった、『ワープするエンタープライズ号』の画面のせいだったような…。子供だったし何も知らなかったから、「こんな画面が出せるなら全然問題なし」と単純に思ってしまった。キャラグラなのに。騙された。というより、画像一枚のその向こうに、理想のPCを夢見てしまった・想像してしまったのだろうな。 _(via del.icio.us/otsune)

#8 [anime] _アニメアンテナ製作日記:機動戦士Zガンダム声優交代劇の真相に迫る

実は私は音響監督の藤野氏が「故意に連絡をしなかった」とは考えない・・というか考えたくは無いのだ。何故なら・・

私にも似たような経験があるからだ・・。
声優さんに対して、相談に乗ったり、アドバイスしたり、なにくれと世話を焼いたり、指導したり、育てようと一生懸命頑張ってきた人にとって実は、「何が一番ショックであるのか」という事。

それは、連絡が取れなくなってしまうという事。その中でも、特に滅入るのが「事務所が変わったにも関わらず連絡が無かった」という事。
そういう場面・可能性もあったかと目ウロコ。 _(via del.icio.us/otsune)

#9 [cg_tools] _ソニー新技術!2次元画像から3Dアニメを生成

_ワールドビジネスサテライト/ WORLD BUSINESS SATELLITE : テレビ東京 - ニュース映像

スゴイ! 人間の顔の静止画像はもちろんのこと、一枚絵のイラストで動かしたり、果物を動かしたり…。これはスゴイ。マジレンジャーの野菜ができそうな…。つーか、アニメ制作ですぐに使えてしまうのでは。 _(via hard で loxse な日々)

#10 [cg_tools] _個人で使える5万円台のモーションキャプチャキットが登場

うお。この値段なら… _全国アニメスタジオ天安門広場化計画 も夢じゃない! <いや、それはない。 _(via ryuzi_kambe の?D)

#11 [pc] _スラッシュドット ジャパン | 1チップMSX、 商品化ならず

あらら。 _(via サーバ管理者日誌)

1チップMSXの話を見かけたときに想像したのは :

「ライターなみのサイズなのに、パソコン」みたいなイメージだったりして。>自分。で、予約ページを見たら値段もさることながらそのサイズにガックリきた記憶が。恐るべし、「1チップ」なる単語。妙に期待させてしまう魔の呪文。

カートリッジ端子とか映像端子とか全部ケーブルで外に出して、本体自体はキーホルダーサイズにできなかったんだろうか。

「俺さぁ、新しいパソコン買ったんだー。ホラ、コレ」
「あはは。○○さん、冗談ばっか。それ、オモチャじゃん」
「いやいや。嘘じゃないよ。ケーブルを繋げば…ホラ」
「えーっ! うそーっ!」

みたいな展開をってそんなの無理か。…よく考えてみると、今はもう携帯電話という形で皆がPCを持ち歩いてる時代なんだよな。極小PCなんて目新しくもないのか。

この記事へのツッコミ

Re: スラッシュドット ジャパン | 1チップMSX、 商品化ならず by けいと    2005/09/02 00:59
> カートリッジ端子とか映像端子とか全部ケーブルで外に出して、本体自体はキーホルダーサイズにできなかったんだろうか。

いや、言ってることが破綻してますってば^^;;

キーホルダーサイズなのに、
カートリッジ端子とか映像端子が
すでにキーホルダーよりでかいという話が…

いろいろ考えても現状では携帯電話よりいい形は思い浮かびませんね^^;
携帯アプリで16bitゲームできるようになってきたし。
Re: スラッシュドット ジャパン | 1チップMSX、 商品化ならず by mieki256    2005/09/02 19:38
> カートリッジ端子・映像端子がすでにキーホルダーよりでかい

いや、だからこそ、その各端子を外にケーブルで出して…

と書いたところで気がつきました。
ああっ。ピン数か! ピン数が膨大だから、
それらを外部に出すための端子自体が
とんでもなくデカイものになると。しまったぁ… orz

シリアル-パラレル変換を用意すれば
外に出すための端子も小さくなりそうですが、
そこまで設計・製造すると更にコストがかかりますしねぇ…
信号のタイミング云々も絡んできそうだし。
どう考えても実現は難しいですな。
Re: スラッシュドット ジャパン | 1チップMSX、 商品化ならず by けいと    2005/09/03 01:06
> そこまで設計・製造すると更にコストがかかりますしねぇ

完全無視、とまでは行きませんが、
現実味のないコストをかけてもいいならできそうな気がしてきました(笑)

いわゆるマザーボード部分の体積は限りなくゼロである、という前提で行くと
イーサネットコネクタ2つ分で何とかなるかも。

あとは、このコネクタ自体の体積も
ミニUSBやIEEE1394ぐらいに小さければ
キーホルダー化も無理じゃない!!

まず1つ目のイーサネットコネクタにVGA出力/キーボード/マウスを収容。
これは
http://www.raritan.co.jp/products/kvm_switches/z_series/prd_line.aspx
この機能を内部に格納すればOK。

次に2つ目のイーサネットコネクタはそのまんまLANとして使用。
今流行の?シンクライアントのようにネットワークブートしてシステム起動。PoEで電源供給もできるからバッテリー要らず。
もちろん立ち上がってしまえば通信環境も整う。
USB未対応のCDやFDのような外部記憶デバイスも
LAN対応のマシン経由でアクセス可能。

ブロック図にするとこんな感じ(笑)

キーホルダーPC

■−Ether1----□-+-KB
| +-MOUSE
| +-monitor
| +-USB?

+−Ether2(PoE)---□-+-[ACadp]---AC100V
+-[HUB]----(Network)
コネクタ2つでPC本体ができてしまう話 by mieki256    2005/09/06 02:17
> イーサネットコネクタ2つ分で何とかなるかも

うお。それ、面白いですな!
たしかにコネクタ2つならキーホルダーサイズに収まるかも…。

でも既にMSXじゃないような… (^^;
考えてみるとMSXってのはアドレス空間にROMを配置・交換できるところが
面白いのだろうか…。いや、そういう仕組みなのかは判らんですが。
FM音源をスロットに挿したりもしてたしなぁ…。よくわからん…。

#12 [anime] _世間一般では、拘りがあろうとなかろうととにかくキモければオタクなのではないだろうか。

そうかもしれない、と思ってしまったのでメモ。

#13 [zatta] _「経済が苦しいから、拉致問題とかを起こすんですよ。経済がうまく回れば、そんなことはなくなる。平和な国になる」

ほりえもん発言、らしい。なんとなく、この世代に共通する感覚なのかなと思ったり。 *1 にしても、該当記事の批判内容もなんだか妙な。北朝鮮と米を同列において話をしてるのはどうかと。ほりえもんとたいして変わらん大味ぶり。 _(via 読書記録ChangeLog)
*1: 自分も、「食えれば、大体は安定しちゃうもの」という感覚があるので。

2004/08/31(火) [n年前の日記]

#1 [nitijyou] 風がなくなった

朝方はかなりの風だったけど。通過したかな>台風。

#2 [zatta] _図解言語入門

_(via あけてくれ)

#3 [windows] _録音ソフト「Rockoon」

録音してる際の音量が画面表示されるのでありがたい。

#4 [anime] デカレンジャー、凶悪犯脱走の回

そうきたか。やられた。いや、途中で予想はできたけど。それでも上手い。脚本書いた人、頭いいなぁ。元ネタがあったりするんだろうか。

ひょっとして、龍騎の時に使おうとしたネタだったりして。

#5 [zatta] 爪を切らないでキーボードを叩くと病気になりやすい

という仮説 *1 を検証するにはどうしたら。
*1: 爪が伸びた状態でキーボードを叩く → 不快 → ストレスが蓄積していく → じわじわと精神面がまいってくる → 病気になる。

#6 [pc] MZ-700のプログラムを変換中その5

を変換。どれも Hu-BASIC用。「ラシャーヌカントリークラブ」は、たしか月刊マイコンに掲載されてたんじゃないかしら。

数値入力でも結構遊べるなぁ :

「スーパーゴルフ」をRUNしてみて感心。
_[スタート画面] _[ゲーム画面]
「クラブ」「打つ方向」「強さ」を、数値入力(!)すると、その方向にボールが飛んでいくだけなのだけど。これだけでもゲームになるのだな。

見た目がキャラグラなので、内部でどんな数値を持ってるか判らない。故に思ったとおりにコントロールできなくて、もどかしさを感じる ―― 逆に、上手く飛んだときは嬉しいわけで。「風向き」「風の強さ」「グリーンの芝目」「傾き」「ボールを打つタイミング」等々、今のゴルフゲームに備わってる要素は何一つないのだけど。不自由さがある分、面白い。…もっとも、今のユーザなら数値入力する時点で面倒臭くなって投げ出しそうではある。

数値入力でふと思ったけど、こういう入力・遊びは、携帯で使えるんじゃないか。でもないか。小数点を入力できないような。<そういう問題じゃないか。

リアルタイム性がでてくるとサクサク進む :

「ラシャーヌカントリークラブ」をRUNして、また感心。
_[スタート画面] _[ゲーム画面]
キャラグラで3Dっぽくゴルフコースを描いてる。ボールを打つ際、タイミングによって強さが変わったり、どのくらい曲がるかをキーを押してる時間で変化させたり。つまりは、リアルタイム性が若干入ってる。「スーパーゴルフ」ほど、計算どおりにいかないし、判定もアバウトだけど。ゲーム自体はサクサク進む。なるほど。こういう方向で進化していくわけか>ゴルフゲーム。

この頃のゲームは音楽が鳴り終わるまで一切の操作ができない :

かなりイライラ。わざわざユーザを待たせていた & ユーザがそのことに不満を持たなかったなんて。昔は、時間の流れがゆっくりしてたのですな。

ついでに「スタートレック」 :

_[スタート画面] _[ゲーム画面]
ゲーム内容は説明するまでもないですな。

全体マップ(銀河地図)って、通ったところの情報が残らなかっただろうか。今居る位置の情報しか表示されないのだけど。mztへの変換をミスったかと思い、再度録音・変換してみたけど、結果変わらず。

…判った。星域レーダーを使わないと、全体マップに反映されないのか。

ついでに「レイホープ研究所」 :

_[スタート画面] _[ゲーム画面]
いわゆる「倉庫番」タイプ。画面中央のウイルスが広がる前に、倒れてる人達を押して運んで隔離室に入れ、ブロックも押して運んで部屋の入り口を封鎖するのが課題。なかなか難しい。クリアできません。

難しいのは、BASICで書かれてるからだろうな。カーソルキーを押しても反応が鈍い。ユーザの操作に対して、即座に、正確に反応するというのは、ゲームにとって非常に大事なことなのだな。

ふと :

キャプチャ画面を載せてるだけでも怒られたりするんだろうか。…もし、問題があったら言ってくださいであります>各製品の権利云々を持ってる方。そん時は消しますので。 *1

*1: でも、そういうことしてると、誰も、何の記録も、残せなくなりそうですね。

2003/08/31() [n年前の日記]

#1 [pc][linux][gentoo] 5度目のインストール

gnomeのインストールがグチャグチャになってしまったので、ファイルシステム作成からやり直して4度目のインストール。LiveCDと同じgs-sourcesを選べばスンナリ行くだろうかと思って、gentoo-sourcesではなくgs-sourcesを利用。ネットで見つけたページに書かれてた /etc/make.conf と同じような内容にしてみたり、英文ドキュメントによる xfree-drm のインストール手順で作業してみたものの、いつのまにか次々とコンパイルが始まってしまったので、またファイルシステム作成からやり直し。5度目のインストール。

こんな事なら、最初から emerge sync とかして、全てをコンパイルする覚悟を決めてからやれば良かった。3〜4日もあればそこそこコンパイルできるだろう。しかも最新状態になるし。「急がば回れ」だったな…。

ネットで見つけた、とあるインストール記録には、カーネル作成=10分ぐらい、と書いてあった。…きっとCPUが3GHzぐらいの富豪ユーザに違いない。あるいは、自分の環境は何を削ればいいのかよくわかってる上級者ユーザなんだろう…。

2002/08/31() [n年前の日記]

#1 時報

まとめて書いてますー

最近ビデオデッキの時間がどんどん遅れていくのです。
一応、NHK教育、昼12:00の時報の周波数で、時刻合わせをする設定をしてたはずなんですが。
もしかして、時報の前後に変な音楽流すようになったとか、そもそも時報を流さなくなってるのかな。

2001/08/31(金) [n年前の日記]

#1 トゥーンレンダリングと未来博その2

ときメモ3のスクリーンショットを見てビックリ。
あそこまで表現できるなら、もうセルアニメは要らないのでは。
TV向けのアニメなんてVGA程度の解像度があれば充分だし。
ゲームメーカの持つ技術だけで、リアルタイムにTV向けアニメ動画を制作できちゃいそう。


親父さんに引っ付いて、未来博に行って来ました。
午後だったので比較的空いてて良かった。 _(以下略)

#2 [seiji] 未来博その2

親父さんに引っ付いて、またまた未来博に行って来ました。
午後だったので比較的空いてた上に、気温も低めで助かった。


立体映像関係の出し物を見てきました。
映像技術(3DCG)は良かった。
でも、中身(脚本・演出・世界設定など)が子供向け。
NHK教育の子供向け番組以下の劣悪なストーリー。
おじさんにはツラい。


技術館とやらで、プログラミング講習モドキを試しに受けてみたり。
何も知らないおじさんの振りをして受講してきました。
(でも、キー打つ速さで薄々向こうもわかってただろうなぁ)
いや、この手の講習ってどんな感じで進むのか知りたくて。

なんか、会津大学が協力してる模様。
人が来なくて、だだっ広いPCルームに、受講者は自分一人。寂しい。

内容は、 _Visual Legacy Basic なる学習用ソフト 上で、BASICで書かれたピコピコゲームプログラムをコンパイル。
このVLBとやら、Javaで作られてる模様。
会津大学製で既に商品化されてる、と講師の方は言ってました。
質疑応答用に、講師のPCとのお絵描きチャットが実装されてることに感心。

実際の講習は、プログラミングをするわけではなかったです。
IMEの使い方や、お絵描きチャットの使い方を教えたりとか。
出来合いのソースを数行書き換えて、コンパイルすると結果が変化することを示す程度。

ソースを書き、コンパイルすることで、PCがプログラムで動く様子を理解させることが目的のようですね。
帰りに一枚、VLB体験版入りCDを貰いました。赤字にならないか心配。

それにしても。
ネットで検索してみたら、件のVLBの情報が全く見つからないのだけど。
この手のソフトの情報が、ネットに無いのはかなーりマズイ気が。
かろうじて見つけた上記のページも、単なるテキストを全部画像にするなど勘違い具合炸裂。
こういうところがとっても福島県っぽいゾ (´ー`)y-~~


夜になったら、噴水やら花火やらレーザーやらのショーが。
よく作ったなーと思いつつ、あまり面白くなかった。
単なる花火の音で観衆が驚いててなんだか興醒め。


帰り際、山一面に、LED?使用の蛍が設置されて点滅してました。
これは綺麗だった。
夜は真っ暗になる田舎だからこそ作れた美しさ。

2000/08/31(木) [n年前の日記]

#1 4Dマウス

今日も午後から教習所。
予約を入れてきたけど、来週中には仮免みきわめ前まではイケそう。
サボらなければ、だけど…

「免許をとろう」ですが。
学科の問題数、少ないかも。
所詮ゲームなのかな、みたいな。

ロジクールマウスを愛用してたのですが。
ン年使ってただけあって、底面がザラザラ。滑らなくなってきたのです。
で。
昨日、パソコン工房で新しいマウスを買ってきました。
4D-Mouseってやつ。
ホイール(ボタンにはならない)x2。
前面マウスボタンx3。サイドボタンx1。

早速繋いでみましたが、これはグッド。
ボタン一つ増えただけでこんなに快適とは。
Linuxで使う時がまた良い感じ。
カッチリ3ボタン用意されてるって気持ちイイ。
かなり使いやすくなったですよ。

というか。
ロジクールマウスのホイール部、ホイールとしてもボタンとしても固すぎ。
押すの辛かったデス。

しかしこれで\1580とは >4D-Mouse
なんか得した気分。
でも不満もありますが。
今まで使ってたロジクールマウスのドライバは、カーソル移動時の加速度も調整可能。
加速度も設定できるとかなり快適に使えるんですが。
さすががにそういう機能は、こちらにはないみたい。
あと、ホイールがスルスル回るんですが、どれだけ回したかわかりづらい。

もう一つ同メーカーの赤外線ワイヤレスマウスも買ってきてあるんですが。
ホイールx2、マウスボタンx2、サイドボタンx1。
ホントはコード式が欲しかったんだけど売ってなくて。
電池がどれだけ持つのか、ちょっと心配。
長持ちしない時は見切りをつけて別の買ってくるしかないなぁ。

1999/08/31(火) [n年前の日記]

#1 (NoTitle)お腹が痛くてお昼頃起...

お腹が痛くてお昼頃起床。しかし眠くて1時間後また寝る。PM8:00起床。

犬が帰ってこない。うーん…。

フリーのHTMLエディタを調べているうちに、フォトショップでJPEG保存した画像のサイズ取得に失敗する不具合の情報が。サムネイルを作ると変なサイズ情報になってしまうらしい。
しかしいいHTMLエディタあるんですね。個人的には HTML Maker AZUKI が凄いなと。フリーなのに機能豊富だし、画面のレイアウトも煩くない。しかも HTML文法チェック機能までついてる。惜しむらくはオイラの環境だと、漢字入力時の文字色がおかしな色になって入力がめっちゃやりづらいって事。それさえなければ、シェアウェアなのに2年近くも新バージョンが出ない HTML Builder Pro に見切りをつけて、さっさと乗り換えるのに。

以上、26 日分です。

過去ログ表示

Prev - 2024/10 - 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