mieki256's diary



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

#1 [nitijyou] AKEOME

あけましておめでとうございます。本年もどうぞよろしくお願いいたします。

年賀状書き始めました。 :

今年も「正月に描いてこそ年賀状也」状態になってしまったり。自作キャラグラエディタ + MZ-700フォントを駆使してイラスト制作中。…イラスト? いや、コレ、イラストって呼べるのかな。どうなんだ。

#2 [nitijyou] 弟が帰省

PM04:00頃に到着。

PCパーツを色々持ってきてくれた。新パーツに置き換えたことで基本的には利用しなくなったとか、ATXサイズだから置いておきたくないとか、そういうアレコレがたくさん。ありがたや。

ただ、一緒に持ってきたATXサイズのPCケースを途中で落としてしまったそうで、ケース前面パネルを止めるための棒が、4本中3本も折れてしまったのだとか。持ってくる前に接着してきたものの、こちらまで運んでくる途中で、やはり棒が外れてしまった模様。今では製造中止になったケースなので、代替品購入も難しく。外側をガムテープで巻いてやれば一応止められるだろうけど、そうなると他人様にプレゼントできる状態ではなくなるなと。

HDDが6台も。ありがたや。1TB〜2TBの容量なので、妹が2台欲しいのこと。

2016/01/02() [n年前の日記]

#1 [nitijyou][pc] 年賀状は描いたけど

描いて送ったものの、何のノリを再現しようとしてるのか伝わらないかもしれないと…。

年賀状のイラストを見た弟から指摘されて気が付いたけど、レトロPCっぽい画面と言っても、前景色と背景色を駆使して文字だけでそれっぽい画を描くという文化は、MZ-700にしか無かったんだよなと。 などと考えると、MZ-700だけが、日本製のレトロPCの中では画面表示に関して異端だったわけで…。なので、MZ-700っぽい画面がレトロPCっぽい画面に見えるかというと、一般的にはちょっと違うのかもしれないよな、と。

でもまあ、なんだか何か無理をして画を描いてることぐらいは伝わるだろうから、そこでレトロPCらしさを感じてもらえる可能性は…あるのかなあ。どうかなあ。

#2 [nitijyou] 色々な番組が録画できてなかった

弟から譲ってもらった、PT1 + 録画用PCのHDDが一杯になっていて、3ヶ月ほど何の番組も録画できてなかったことに今頃気が付いたり。ワンパンマンもおそ松さんも録画できてなかった。ガックリ。

HDDが一杯になると、0バイトのファイルばかりが作られてそれっきり、なのだな…。

#3 [pc] HDDのエラーチェックをしていたり

弟が持ってきてくれたSATA接続の3.5インチHDDが壊れてないかチェック開始。足元で埃を被ってたサブPCのリムーバブルケースに突っ込んで、USBメモリに入れた _UBCD(Ultimate Boot CD) で起動して、フルチェック。

Western Digital製のHDDなので、UBCD の HDD → Diagnosis → Data Lifeguard Diagnostic for DOS (Western Digital) を起動してチェックする。DOS起動時に止まってしまって悩んだけど、日記を検索してみたら _2011/10/20 に手順がメモってあった。Boot UMBPCI (semi-defensive) を選んで、途中で FdAPM を無効にしたらツールが起動してくれた。

サブPCの調子がよろしくない。 :

一応HDDのチェックをする前に memtest86+ でメモリが壊れてないかチェックしたのだけど、1passしたものの2週目の途中で動作が止まっていて不安になってきた。リセットしてやり直したら2passしたけど…。

サムスン製メモリがいかんのだろうか。サムスン製は、メモリテストでエラーが出ないのに不具合が起きるという話もあるし…。

それともCPUファンが止まって熱暴走してるとか。でも、回転数は検出できてるんだよなあ…。

2016/01/03() [n年前の日記]

#1 [pc] HDDのエラーチェック中

今のところ3台チェックしたけど、どれもエラーは出てないようで一安心。

一応、弟が持ってきてくれたHDDの型番等をメモ。後で日記検索した時に出てくると助かるので。
外付けHDDケースも持ってきてくれたのでメモ。
WD20EARS、WD20EARX、Logitec LHR-DS05EU3BK は、妹が欲しがったので、妹が使うことに。

#2 [nitijyou] 弟が仙台に戻った

お昼頃に出発して、夕方になる前に着いたらしい。

2016/01/04(月) [n年前の日記]

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

詳細はGRPでメモ。

帰宅後買い物に。 :

親父さんの電動自転車を借りて、ケーズデンキ、ダイソー、リオンドール、ホーマック、Seria、サンドラッグを回ってきた。詳細はGRPでメモ。

#2 [pc] ATX機の動作確認中

弟が置いていってくれた自作ATX機の動作確認を始めたり。使用パーツは以下。 memtest86+ は一応通った。壊れてはいないみたい。

HDDについてメモ。 :

BIOS設定画面で、HDDが認識されてなくて悩んだり。起動時のメッセージ表示ではリストアップされてるように見えるけど、BIOS設定画面に入ると一つも表示されない。なんでだろ。

む。BIOS設定でAHCIを有効にすると、BIOS設定画面に表示されないのか。IDEにすると表示される…。そういうものなのかな…。

積んであったHDDは、Western Digital Caviar Black WD1002FAEX-00Z3A0。ただ、SATA600対応のHDDらしいので、SATA300までしか対応してないM/Bに繋げるのもなんだかもったいないなと。

なので、SATA300までしか対応してない Western Digital Caviar Black WD1001FALS-00J7B0 と交換してみたり。HDDの転送速度を考えると、どちらにしても大差はないのかもしれないけど。

前面パネルの固定で試行錯誤。 :

今回使ってるケースは、前面パネルを留めるための棒が折れてしまって、パネルがポロリと外れてしまうケースなのだけど。Seria で購入した「冷蔵庫引き出しロック」とやらを、前面パネルと側面に貼って、どうにか固定してみたり。

_冷蔵庫引き出しロック - Google 検索 は、赤ん坊が冷蔵庫等を開けてしまって事故が起きないように防止するためのグッズ。「カチッ」とハマるとビクともしない割に、両脇から押せば外れるのでイイ感じ。

ただ、PCケースに使うには、サイズが大き過ぎて。もう少し小さいグッズは無いものだろうか。

まあ、見栄えを気にしなければ、養生テープの類を貼ってパネルを固定しちゃってもいいのだけど。

SATAブラケットに感心。 :

GIGABYTE GA-EP45-UD3R には、以下の付属品がついていて。
  • SATAブラケット。SATA x 2 を eSATA端子 x 2 にしつつ、4ピン電源コネクタ(12Vと5Vが出てる電源コネクタ)も、背面から外に出してくれる。
  • eSATAとSATAの変換ケーブル。
  • 4ピン電源とSATA電源の変換ケーブル。
要するに、 _Ainex RS-200EA に4ピン電源コネクタもついてる感じのブラケットなのだけど。

_価格.com - [PR企画] 定番モデルをピックアップ! 特別連載企画「PCパーツの選び方」 第2回 「マザーボード」編 にも写真が載ってた。 _img02_11.jpg かな…。

コレを使うと、PCケースを開けなくても、リアスロットから3.5インチHDDに、直接SATAで接続して、動作確認等ができるので、便利かもしれず。

ただ、12V + 5V の端子が、PCケースの背面で露出してるのはどうなんだろう…。埃が溜まったら怖いよなと。蓋だかカバーだかがあれば良かったのに。変換ケーブルを差しっぱなしにしておけば、多少は事故の可能性も減ってくれないかしらん。

蓋・カバーを売ってないかググってみたけど、メスにつけるタイプの蓋・カバーは売ってるものの、オスにつけるタイプは売ってないようで。

どっちがオスでどっちがメスかは、 _[ケーブル] コネクタのオス/メス表記について | Ainex で説明されてた。ピンが露出して出てるほうがオスで、ピンが隠れてて差し込まれるほうがメス、らしい。

こういうのは前面パネル側につけられるほうがいいのかもしれない。5インチベイか、3.5インチベイに入れる感じで…。

2016/01/05(火) [n年前の日記]

#1 [pc] ATX機にUbuntuをインストールしてみた

ATX機に 1TB HDD、WD1001FALS-00J7B0 を追加して、Ubuntu 14.04LTS をインストールしてみたり。

インストール手順。 :

Ubuntu の ISO は、 _Ubuntu 14.04 非公式日本語ISO Lubuntu Xubuntu kumasan から Ubuntu-14.04.3-64bit-kuma1220.iso をDLして使わせてもらったり。

インストールメディアには、USBメモリを使った。 _Ubuntu 14.04 起動USBメモリの作成(変更データ保存領域あり)と日本語化 Linux USB kumasan を参考に、 _UNetbootin を使用。unetbootin-windows-613.exe をDLして実行。USBメモリにインストール。

そのままだと、起動時に日本語表示にならないらしいので、前述の解説ページに書いてあった内容を反映。
日本語 Remix だけですが UNetbootin では日本語で起動しません。下のどちらかの対処法を適用してください。

対処法1:

USBメモリの syslinux.cfg ファイルを編集 → 「quiet splash -- persistent」の前に以下を追加します。

debian-installer/language=ja keyboard-configuration/layoutcode=jp keyboard-configuration/modelcode=jp106

Ubuntu 14.04 起動USBメモリの作成(変更データ保存領域あり)と日本語化 Linux USB kumasan より

該当箇所がいくつもあって、修正がちょっと面倒ではあったけど、USBメモリで起動した直後から、ちゃんと日本語表示になってくれた。

後は、デスクトップ上の「〜のインストール」アイコンをクリックして、HDDにインストール。

感想。 :

旧世代のCPUとは言え、さすがに Core 2 Quad Q9550 を使って動かす Ubuntu は速い、ような気がする。体感上は何ら引っ掛かるところがない。

ただ、ビデオカードの設定方法が分からない。ATI RADEON HD 4850 は古いGPUなので、AMD/ATI公式のLinux用ドライバは非対応だそうで。オープンソース版ドライバとやらが対応してるらしいけど、一体どこにあるのか、どうやってインストールするのか…。もしかして、Xorg に取り込まれているのだろうか。だとしたら、既に適切なドライバが入ってる可能性がある…?

それはともかく。一応、OSを入れてはみたけど、このATX機、使い道が思いつかない。どうしよう。

今となっては消費電力が高いほうだろうから、常時電源を入れて何かに使うのもアレだし。Linuxを使って何かしら実験するにしても、メインPC + 仮想PCでLinuxをインストールして作業したほうが便利だし。ATXサイズだから、デカくて場所を取るし。そんなこんなで、実機の使い道が思いつかない。どうしたもんか。

#2 [pc] AMD A8 CPU用のM/Bを確認

弟が、「親父さんPCの中身をコレで入れ替えるがよい」と言いつつ持ってきた、CPU + M/Bについて確認したり。
ちなみに、今現在の親父さんPCのスペックは…。
なので、パーツを入れ替えたとしても…。 てな感じで、劇的にスペックが向上するならともかく、かかるであろう手間暇の割には、効果が微妙になりそうで。しかし、せっかく持ってきてくれたのだから、使わないともったいないし。

などと悩みながらも、とりあえず、 _以前作った100円ショップPCケース に入れて動作確認を、と思ったのだけど。M/Bが入らない…。ケース側の奥行きが足りない。

どうやら、100円ショップPCケースを作る際に参考にした、MicroATXサイズ M/B MSI K8MM-V は、奥行きが短い優れものだったようで。ソレに合わせて作ってしまったから、フツーの正方形の MicroATX M/B は入らないのだなと今頃気づいてしまったり。

どうしたもんか。一応、昔バラして取っておいたATXケースの土台部分はあるので、そこにM/Bを固定して作業してもいいけれど。しかし、埃だらけの自分の部屋の中で、M/Bをむき出し状態にして、比較的長い時間、動作確認やメンテナンス作業をするのも危ないよなと。まだ、ダンボール製PCケースでもあるほうがマシかもしれない。どうしたもんか。

どうやって入れ替えようか。 :

親父さんPCの中身を入れ替えると一言で書いてるけど、大変な作業になりそうで。

CPU + M/B をいきなり交換して Windows10 がそのままスンナリ動くかと言うと、たぶん動かない気がする。チップセットが違ってるし。おそらく、OSを再インストールする羽目になりそうな。

仮に、CPU + M/Bを交換してどうにか動いてしまった場合でも、CPU + M/B を交換したとなればハードウェア構成が大幅に変わったと認識されるだろうと。Windows10の再アクティベーションが始まって、しかも通らないのではないかと。今時、電話でアクティベーションする術は残されているのだろうか。

そう考えると、別途、OS、SSD、PCケースを購入して、新しいPCとしてセットアップしたほうがいいのかもしれない。となると、追加予算が必要になるし、前の環境からの引っ越し作業も必要になる。

親父さんが毎日PCを使ってる状況も悩むところで。例えば1週間ぐらいPCを預かって作業できるなら…。
  • 今までの環境を別HDDにバックアップして
  • CPUとM/Bを交換して
  • OSをSSDに再インストールして
  • 必要なファイルを書き戻して
とかやれるから、新たな出費は無しで済むだろうけど。「そんなに使えなくなるのは困る」と言われてしまったので、入れ替える期間は最短にしないといけない。

親父さんが、自分のPCに何のソフトを入れているか把握してないのも困るところで。そこらへんを把握して再インストールするのは、こっちの作業になるわけで。OSだけ入れ直して「後は自分でよろしく」と言うわけにはいかない。

それでいて、パーツ交換しても、劇的に速くなるかどうかは微妙に怪しいわけで。今現在、親父さんは、PCの速度面に関して不満を持ってないし。以前、HDDからSSDになった時に親父さんはとても喜んだけど、要するに親父さんにとっては、そのあたりの改善が最も効果的だったわけで…。ソレ以外では、あまり効果を感じられないであろう予感も。

しかし、4コアのCPUが埃を被ってるのに、2コアのCPUを使い続ける、そんな状況になってしまうのも、なんだかもったいない。

さて、どうしたもんか。

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

#1 [movie] 「ウルトラヴァイオレット」を視聴

地上波で深夜に放送されてたので、一応録画して見てみたり。2006年頃の映画らしい。

アメコミヒーロー原作映画、っぽく思わせたオリジナル作品、だったらしい。OPでアメコミの絵が次々に出てきたから、てっきりアメコミ原作があるのかなと思い込んだけど。ググってみたら雰囲気を出すために新規にアメコミ絵を描いて映してたそうで。架空のアメコミ原作があると思いねえ、ってことなのかなと。たしかに、内容はどう見てもアメコミヒーローモノ。

未来世界を舞台にした映画なので、全編CG使いまくり。ただ、内容の割に予算が少なかったせいなのか、見た目がチープなCGが多々あるし、合成もかなり雑。これはもしかすると、海外版CASSHERNかもしれないなと思えてきた。CGがCGに見えても別にいいじゃん、そんなことよりシチュエーションだぜアクションだぜ、予算や作り込みより勢いを感じてくれ、俺はこういう映像をカッケーと思うんじゃ、こういうのバンバン見せたいのや、みたいな。個人的に、そういうノリは嫌いじゃないです。予算が無いならアイデアで勝負じゃ、俺の脳内イメージでお前達をビックリさせてやる、って姿勢は好きなので。

四次元ポケットと重力制御の設定はグーだなと。現実にはありえないアクションをアリにするための設定と思えたり。妙なところからニョキッと武器を出したり、ビルの壁面を疾走してしまうバイクの画はグッド。重力制御絡みのアクションシーンを見ていて、天地が時々逆になる某ゲームや、ヘリコプターのローターの上を全力で走る某ゲームや、床ごと宙に浮いて敵を撃っていく某ゲームを思い出したり。画面を見ていて「ありえねえ」とツッコんじゃう、あのノリだよなと。…もっとも、謎の空間から何故か武器が出てきたり、重力を無視してアクションするあたりは、平成ライダーや戦隊シリーズで散々見てるわけで、そのあたりに、少しはらしく思える設定をつけてみたということかもしれない、とも。

Wikipediaを眺めると、製作費と興行収入がトントンだったようで。赤字にはならなかったけど、黒字というほどでもないのか…。ここまで無茶な映像を見せていても、なかなか厳しいのだなあ…。

本編のチープなCG映像を見ていて、なんとなく思ったけど。手間がかかる割にはチープに見えてしまう日本の特撮(ミニチュア・着ぐるみ・操演)を気に入ってる世代が一定数居るように、チープなCGを気に入ってしまった世代がそろそろ出現してたりするのかなと思ったりもして。まあ、ドット絵とか、キャラグラとか、そのあたりも一応そこに入ってしまうのだろうけど…。昔のPSゲームのムービーみたいなクオリティでも「このチープさがいいんだよ」とニンマリしてしまう世代や層が、もしかしたら既に出てきていたり、てのは考え過ぎだろうか。と言うのも、この映画を見ていて、あえて狙ってチープにしたのか、頑張ってみたけどチープになっちゃったのか、ちょっと判断がつかないなと…。

#2 [movie] 「メダリオン」を視聴

数日前にTV放送されていた際に一応見たので感想をメモ。ジャッキーチェンが主役の、2004年の映画。Wikipediaを眺めたら、香港とハリウッドの合作映画だったらしい。

感想としては…。ジャッキーチェンが出てる映画はアクションだけ見てればええのや、という映画だった。設定・脚本面が酷い。演出もへったくれもあったもんじゃない。その代り、とにかくアクション。ひたすらアクション。何かにつけてアクション。

ただ、VFXをそれなりに使ってたあたりは…。10年前ですら、ジャッキーの年齢・体力面を考えると、さすがに彼のアクションにだけ頼ってるわけにも、という感じだったのだろうか…。それでも、EDのNG映像集を見てると、ちょっとしたところでもアクションして怪我をしてたようだし…。敵を追いかける時に何故通行人の団体の頭上を壁蹴りで飛び越えていかねばならないのかフツーに走って追いかけるだけじゃダメなのかと思わないでもないけど、それがジャッキー映画だから、としか。

Wikipediaを眺めると、製作費を回収できてないようで。赤字だったのか…そりゃそうか…この内容ではなあ…。

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

#1 [pc] Windows10が起動しなくなった

Windows10 x64 をインストールしてある、親父さんPCのSSDの中身を、EaseUS Todo Backup Free を使って eSATA接続の外付けHDDに「クローン」しようとしたのだけど。

_完璧な無料データバックアップソフト - EaseUS Todo Backup Free
_EaseUS Todo Backup - 窓の杜ライブラリ

走らせてたら、いつの間にか以下のようなメッセージが表示されて、PCが再起動を延々繰り返す状態になってしまった。ピンチ。顔面蒼白。
Recovery

Your PC/Device needs to be repaired
The Boot Configuration Data for your PC is missing or contains errors.

File: \Boot\BCD
Error code: 0xc000014c

You'll need to use recovery tools.
if you don't have any installation media (like a disc or USB device),
contact your PC administrator or PC/Device manufacturer.

エラーコードでググってみたら以下のページに遭遇。

_パソコン蛾物故割れた ( 周辺機器 ) - あさりのみそしるダイアリー - Yahoo!ブログ

ブート構成データとやらを修復しないといかんらしい…。

修復ディスクを入手。 :

修復するためには、Windowsのインストールディスクを使って起動しないといけないらしいが、親父さんPCは Windows7 から無料アップデートした Windows10 なので、インストールディスクは持ってない。

Windows10が起動している環境なら、システム修復ディスクとやらを作ることができて、ソレを使って起動して修復作業ができたらしいのだけど、それも作ってない状態。油断した。

であれば…。自分のメインPC + VMware Workstation 12 Player 上に Windows10評価版をインストールして、そこからシステム修復ディスクとやらを作れないか試してみたり。

数時間かけて、どうにか修復ディスクを入手。

修復作業。 :

作成した修復ディスクを使って、エラーを出してる親父さんPC上で起動させる。トラブルシューティング → 詳細オプション → コマンドプロンプト、と辿って、コマンドプロンプトを起動する。

HDD(SSD)上のファイルシステムが壊れてないかチェックして、直せるようなら修復。
chkdsk C: /f /x /r
  • /f はファイルインデックスの修復。
  • /r は不良セクタを見つけて回復。
  • /x は…何だろう? ボリュームを強制的にマウント解除、と説明されてるけど…。
もしかすると /f だけでもいいのかもしれない? 「/f だけでも、ひとまず十分」と言っているblog記事も見かけたし。

しかし、以下のような話もあって。

_Windows 7 x64 で chkdsk をするときは。(解決編) - y-log.net

Windows7 x64 で chkdsk を使うと、メモリを使い切って止まることもあるのだとか。ヤバい。HDD上のファイルシステムが壊されるかもしれない。このバグは、Windows8、8.1、10では修正されてるのかどうか…。

とりあえず、chkdsk が無事に終わったと仮定して、ブート構成データを修復しないといけない。bootrec.exe とやらが、ブート構成データを修復できるツールらしい。 bootrec /? でヘルプが表示される。以下の指定ができる模様。
bootrec /RebuildBcd
bootrec /FixMbr
bootrec /FixBoot
bootrec /ScanOs

とりあえず、一通り試してから再起動。

Windows10 が起動してくれた。助かった。

Windows10起動後、エクスプローラ経由でSSDドライブに対してエラーチェック。

どうやらファイルシステムのあちこちが壊れている状態のようで。「OSが起動する前にファイルシステム修復しないとあかんから、今から再起動するよ」系のメッセージが。素直に従って再起動。

一応修復できたように見えるけど、イベントログを眺めると、かなりの数のファイルに対して修復だかをしていた模様。大丈夫かな…。でもまあ、一応OSの起動はできるようになったので、ひとまずホッとした。

Windows10評価版を使って修復ディスクを入手した流れをメモ。 :

Windows10 Enterprise 評価版の入手ページは以下。90日間、お試しで使えるらしい。

_Windows 10 Enterprise Evaluation のダウンロード

VMware Workstation Player 上でインストールはできたけど。ホストOSが持っているCD-Rドライブを使って、ゲストOSからシステム修復ディスクのCDを焼こうとしたら、最後の最後でI/Oデバイスエラーが出た。

以下を参考にして、*.vmx を修正。CD-Rドライブ関係の記述を sata0:1 から scsi1:0 に変更して、更に virtualDev とやらの指定行を追加する。

_VMware KB: 仮想 CD および DVD ドライブに関する問題のトラブルシューティング
_VMware KB: Troubleshooting issues with virtual CD and DVD drives in VMware Fusion

各行は以下のように修正。
scsi1:0.deviceType = "cdrom-raw"
scsi1:0.fileName = "R:"
scsi1:0.present = "TRUE"
scsi1:0.autodetect = "FALSE"
scsi1:0.startConnected = "TRUE"
scsi1.present = "TRUE"
scsi1.virtualDev = "lsisas1068"

この修正をした状態なら、CD-Rを焼いてもエラーが出なくなった。

2017/02/07追記。 :

コメント欄で「こちらのURLを」と連絡があったので、リンクを追加・修正しておきましたです。

2017/09/07追記。 :

コメント欄で「URLが変わった」と連絡があったので、リンクを修正しておきましたです。 *1

*1: Webサーバ側で、httpで飛んできてもhttpsにリダイレクトする設定は可能なはずだけど…。アクセス解析の都合上、みたいな話なのかな…。

この記事へのツッコミ

Re: Windows10が起動しなくなった by Tei    2017/02/06 17:58
お世話になっております。EaseUS SoftwareのTeiと申します。

御サイト上で弊社の製品をご紹介頂きありがとうございました。
ちょっとお願いしたいことがございますが、記事中にEaseUS Todo Backupを日本語公式ページをご挿入頂けませんでしょうか。

http://jp.easeus.com/backup-software/free.html

お手数をお掛けまして、すみません。
どうぞよろしくお願い致します。
Re: Windows10が起動しなくなった by イーザス    2017/09/04 17:37
mieki256's diary 管理人様

お世話になっております。EaseUS SoftwareのEliと申します。

お忙しい中またお邪魔致しまして、申し訳ございません。

御サイト上で弊社製品をご掲載頂きまして感謝しております。

先日、弊社日本語公式サイトをSSL化にしましたので、お知らせいたします。

お手数ですが、記事中のリンク先をhttpsページにご修正頂けませんでしょうか?

お忙しいところ大変恐縮でございますが、ご確認の上、ご検討頂けば幸いに存じます。

何とぞよろしくお願い致します。

#2 [cg_tools] Inkscape 0.91 をインストールし直し

今まで、Windows7 x64 上に、Inkscape 0.91 64bit版をインストールして使っていたのだけど。印刷をしようとすると、必ず、「Inkscapeで内部エラーが発生しました。直ちに終了します。」てなエラーが出てフリーズしてしまうことに気づいたり。

共存させてる Inkscape Portable 0.48.5 32bit版から印刷すると、フツーに印刷ができる…。

さては、Inkscape 64bit版は、プリンタ一覧取得すらできていないのではないか。試しに一旦アンインストールして、Inkscape 0.91 32bit版をインストールしてみた。これだと印刷ができる。どうやら 64bit版を使うと印刷できないのは間違いなさそう。

であれば、Inkscape 0.91 32bit版を常用することにしようかな…。せっかくの 64bit版OSなのに、64bit版アプリが使えないのは、なんだかもったいないけど。

と思ったものの、気がついたら Inkscape 画面上の、数値入力欄、フォント選択入力欄が空白のまま、クリックしても入力ができないことに気が付いた。コレはアレだな。0.48.3以降で入っちゃったバグが、0.91 でも残っているのだな。

_既知の不具合 ・ Inkscape@JP
_Tips & FAQ: Inkscape で数値入力ができない場合の対処方法 - arbk-works

Windows版 GTK+のバグなので、Inkscape だけではなく GIMP でも発生してたけど。Inkscape 64bit版を使うと出現しないバグなので、64bit版を使ってた自分は、未だにバグ入りとは気づいてなかった。とりあえず、Inkscape Portable版を使うか、環境変数をアレコレするように工夫すれば不具合を回避できるらしいけど…。

さて、どうしよう。
結局、 _Inkscape Portable 0.91 32bit版 を常用することにした。

まあ、印刷したい時は、一旦PDF保存して、そのPDFを Adobe Reader 等から印刷する、という形にすれば 0.91 64bit版を使えなくもないのだけれど。

2016/01/08(金) [n年前の日記]

#1 [dxruby] 自作キャラグラエディタ用のドット絵を作成中

自作キャラグラエディタは、今までは白黒のフォント画像 = 2色しか持ってないインデックスカラー画像を元にしてキャラグラを描画していたのだけど。もし、グレースケール画像を元にしてキャラグラを描画してみたらどうなるのかなと思えてきたので、実験用のドット絵っぽい8x8ドットのパターンを打ち始めてみたり。

今のところ、白黒フォント画像を扱う場合と同様の処理になるように、元のドットパターンのRGB値(0-255)に、前景色RGB値(0-255)をそれぞれ掛けて、それらを255で割った値を描画のRGB値にする、といった感じの処理で考えているけれど。
r = src_r * fg_r / 255
g = src_g * fg_g / 255
b = src_b * fg_b / 255
元のドットパターンをRGB値128あたりを基準にして描いた際、全体的に暗くなってしまいそうなので、本当にその計算の仕方でいいのか少し悩んでいたり。

8x8ドットを全て調べて、白黒しかなかったら今までと同じ処理をするけれど、グレースケールだった場合は全く違う処理をする、といった処理のほうがいいのだろうか。例えば、RGB値が128だったら、前景色のRGB値がそのまま出る、みたいな計算とか。…前景色が白だったらどういう結果になるんだろう。予測しづらいからNGかな。

#2 [anime] ルパン三世TVSP、イタリアン・ゲームを視聴

金曜ロードショーで放送されてたので見てみたり。

OPがめちゃくちゃカッコイイ。このカッコ良さは一体どうしたことかと思っていたら、有名アニメーターの森本晃司氏がOPを担当してたそうで。そりゃカッコ良くて当然だわ…。しかも原画スタッフの顔触れが、また凄い。氏の人脈だろうか…。

OP映像は、ルパンの最初のTVシリーズのキャラクターデザイン ―― いわゆる大塚ルパンをかなり再現していて、一見すると昔のルパンの名シーンを今の作画技術でリメイクしたのかなと思えたのだけど。どうやら各カットのシチュエーションは新規に考えられたものが多々並んでたようで、見ていてなんとも不思議な感覚に。「うわあ、懐かしい…ってアレ? こんなシーンあったっけ? アレ?」みたいな。これはアレだな…。まるで、森本版ルパン三世パイロットフィルム、てな様相。

関連情報をググって探していたら、モンキーパンチ先生の別作品のキャラと対決させてるカットもあった、てな話を見かけて、面白いことをしてるなと…。

さておき本編は、どうやらTVシリーズの前日譚+総集編だった雰囲気で。自分は田舎に住んでるから、まだTVシリーズは最初のほうしか放送されてない・見ていないので自信が無いけど、少なくとも最初の数話を丸々放送してたように見えた。ラストのあたりも丸々TVシリーズのソレなのだろうか。いや、もしかすると冒頭のあたりもTVシリーズの映像だったのだろうか。どこが新作部分だったのか分からんなと…。

2016/01/09() [n年前の日記]

#1 [dxruby] 自作キャラエディタのドット画像修正中

RGB値128を基準にしなくても、背景色と組み合わせればらしく見せられる方法を思いついたので、ドット画像を修正しつつ実験中。

それらしい画像が作れるようになってきたけど、結局のところ、チップ毎に色をつけられる、単なるタイルマップエディタになってる気がする…。

2016/01/10() [n年前の日記]

#1 [dxruby] DXRubyでキャラグラエディタを作ってみた

ようやくそれらしくなってきたので一応公開。8bit PCっぽい画像を作れるキャラグラエディタです。Windows上で動作するフリーソフト。Ruby + DXRuby で作成しました。

_mieki256/8bitpccgeditor

8bitpccgeditor_ss1.png

8bitpccgeditor_ss2.png


何かしらの仮画像作成ぐらいには使えるんじゃないかなと。エクスポートしたpng画像を、他のCGツールで半分ぐらいに縮小すれば、ゲームのキャラ画像にも使えたり…するかな? どうかな? どうなんだろう。

ダウンロードは、 _Releases - mieki256/8bitpccgeditor から。8bitpccgeditor_20160110_051710.zip をDL・解凍して 8bitpccgeditor.exe を実行すれば動くかと。Windows7 x64、Windows10 x64 で動作確認済み。

操作について。 :

一応、最低限の説明を。
  • 画面の左側でクリックしてキャラと色を選択して、画面の右側でクリックやドラッグすれば描けます。
  • 色選択は、左クリックで前景色、右クリックで背景色を選択
  • キャンバス上で右ボタンを押したままドラックすると、選択した範囲をコピーしてブラシにできます。何かパーツを描いてからコピーしてスタンプのようにペタペタできます。
  • WASDキーでキャラ選択カーソルを移動できます。
他の操作は、 _mieki256/8bitpccgeditor の readme.md (説明ページ)を読んでもらえればと。

ライセンス。 :

ソースや添付画像は、CC0 / Public Domain ってことでよろしくです。exeファイルだけは、Ruby、DXRuby、chunky_png のバイナリを含んでるので、それぞれのライセンスに従います。

Ruby上で動かしたい場合。 :

_Ruby_DXRuby に加えて、 _chunky_png という、Rubyでpng画像を保存できるライブラリが必要です。DOS窓で以下を打ってインストールを。
gem install chunky_png

追加のフォント画像。 :

MZ-700のフォント画像を置いときます。解凍して、char フォルダに *.png と *.char をコピーすれば追加できます。

_mz700_chara_image.zip

問題があると言ってもらえれば、このフォント画像だけ消しときますので、その時はツッコミよろしくです。

ちなみに、キャラグラエディタに添付してある画像群は、自分でドット打って作った画像なので、ライセンス面で問題無いはず。

作例。 :

helloworld.png
spaceship.png
spaceship2.png
enemy2.png
pipe.png
pipe2.png
spaceship_super0.png
spaceship_super1.png
enemy.png
pipe_super.png
test1.png
yakyuuken_mz700like.png
icon.png

添付フォント画像も一応置いときます。 :

CC0 / Public Domain にしときますので、何かに使えるようなら使ってください。

pet2015.png
_pet2015.png
_pet2015.char.txt

pet2015kana.png
_pet2015kana.png
_pet2015kana.char.txt

pet2015super.png
_pet2015super.png
_pet2015super.char.txt

pet2015super2.png
_pet2015super2.png
_pet2015super2.char.txt

余談。 :

_DXRuby Advent Calendar 2015 のネタにできないかと思ってソースを書き始めたところもあるのですけど、全然間に合わなかったとです…。今年はネタが思いつかなくて参加できなかったのですが、12月中旬にネタを思いついたのでは、ちょっと遅かった…。

本来こういうツールは DXRubyWS を使って書くべきかもしれんですな。ツールバーの処理を書いてたあたりで移行すべきだった、かもしれず。

英語が全然分からない人間なので、readme.md 上の英文は、ほとんどGoogle翻訳そのままです。おかしな英文になってたら修正しますんでその時は教えてください。…この手のソフトを公開する時の、テンプレ英文集って無いのかな。というか、質問に答えて単語を入力していくだけで readme.md が出来上がるWebサービスが無いものか。需要が無いか…。

2016/01/11(月) [n年前の日記]

#1 [dxruby][dxrubyws] DXRubyWSを試してみる

自作キャラグラエディタを書いてる際、「これがもし、DXRubyWS を使っていたら、もう少し楽に書けるのだろうか…」と気になってきたわけで。ということで、少し触ってみて雰囲気だけでも掴んでみようかなと。

DXRubyWS って何だ? …Ruby + DXRuby を使って、GUIアプリを書けるようにするためのライブラリ、という説明でいいのでしょうか。ちょっと違う気もするけど。

初心者向けに、入門記事っぽくなるように、少し細かくメモっていきますよ、と。いや、自分がそもそも初心者だけど。

環境構築その1。 :

DXRubyWS は、以下から入手。

_mirichi/DXRubyWS

右上のほうに「Download ZIP」というボタンがあるのでクリック。DXRubyWS-master.zip をDL(ダウンロード)。

ちなみに、そのうち DXRubyWSの開発が進んで、どの時期の版か分からなくなると困るので、DXRubyWS-master_20160111.zip てな感じに日付を入れてリネームしておくことにする。

さて。DXRubyWS の readme.md には、 「DXRuby1.5.16dev用」 と書いてある。どうやら、動かすためには DXRuby 1.5 開発版(dev版)が必要らしい。

DXRuby開発版(dev版)は、以下から入手できる。

_DXRuby プロジェクトWiki - ファイル置き場

現在公開されてるのは、DXRuby 1.5.19dev (Ruby 2.1.0, 32bit用)。上記ページ内の該当リンクをクリックすれば、dxruby1519dev-mswin32-ruby21.zip をDLできる。

もし、Ruby 2.1 をインストール済みで、かつ、常用してる環境なら…。dxruby1519dev-mswin32-ruby21.zip を解凍後、中に入ってる install.rb を実行するだけで DXRuby dev版のインストールは終了して、DXRubyWS を動かせる状態にできる。

が、しかし。

環境構築の続き。複数のRubyバージョンを共存させる。 :

自分は普段、Ruby 2.0.0 + DXRuby 1.4.2 を使っていて。

DXRuby 1.5.19dev は、Ruby 2.1 用なので、Ruby 2.0.0 を常用してる自分の環境ではインストールできない。

なので、Ruby 2.1 もインストールして、Ruby 2.0.0 と共存させることにする。

以下から、Ruby 2.1 Windows版を ―― rubyinstaller-2.1.7.exe をDLして実行してインストールする。

_Downloads - RubyInstaller for Windows

注意点としては…。
  • Ruby 2.0.0 とは違う場所を指定してインストールする。Ruby 2.0.0と共存させたいので。
  • 「Rubyの実行ファイルへ環境変数PATHを設定する」「.rbと.rbwファイルをRubyに関連付ける」のチェックは外す。普段は Ruby 2.1 ではなく、Ruby 2.0.0 を使いたいため。

Ruby 2.0.0 と 2.1 の切り替えは、pik か uru を使う。以下の記事を参考にして、インストール方法や使い方を把握。

_pikの替わりにuru〜windowsで複数バージョンのrubyを切り替える〜 - Qiita
_Windows7にRubyInstaller+Pikで複数バージョンのRuby環境を整える - ひろうぃんの雑記

ところで、pik や uru を使って Ruby のバージョンを切り替えた時は、Rubyスクリプト(.rb) をいきなり実行せず、
ruby hoge.rb
といった形で実行しないといけない。.rb をいきなり実行すると、常用してる Ruby のほうが使われてしまうので。

とりあえず、これで Ruby 2.1 を使えるようになったはず。pik か uru で、Ruby 2.1 に切り替えて、Ruby のバージョンを確認。ruby --version で確認できる。ruby 2.1.7p400 と表示されたら、Ruby 2.1 に切り替えができてる。

DXRuby dev版を、ruby install.rb を実行してインストール。

インストールされた DXRuby のバージョンを、irb上で確認してみる。

irb は、Rubyを対話的に入力して実行するためのツール。…「対話的」って、どゆこと? インタラクティブってこと。(命令を伝えたら)その場で反応が返ってくるものを、「対話的」とか「インタラクティブ」と呼んだりします。たぶん。
> irb
irb(main):001:0> require 'dxruby'
=> true
irb(main):002:0> DXRuby::VERSION
=> "1.5.19dev"
irb(main):003:0> exit
DXRuby::VERSION には、"1.5.19dev" が入ってたので、ちゃんと DXRuby dev版がインストールできていることが分かる。

と、ここまでメモったところで気が付いた。DXRubyWS の readme.md には「DXRuby1.5.16dev用」と書いてある…。DXRuby 1.5.19dev、じゃなくて、1.5.16dev…。

_DXRuby プロジェクトWiki - ファイル置き場 には、DXRuby1.5.16dev ruby2.0.0(32bit)用があるわけで。

つまり、Ruby 2.0.0 を使ってるなら、1.5.16dev をインストールすれば DXRubyWS を使えた可能性が。わざわざ Ruby 2.1 までインストールする必要は無かったのかもしれない…。

まあ、何かしらで Ruby 2.1 が必要になる時もあるだろうから、各バージョンを共存させといても別にいいよな。などと嘯いて自分を納得させるのでした。

DXRubyWSのサンプルを動かしてみる。 :

DXRubyWS-master.zip を解凍すると、sampleフォルダが入ってる。中に入って、一通り動かしてみる。

ruby minsample.rb
minsample_ss.png
色んなウィジェット(GUI部品/コントロール)が出てきた。
  • ボタン
  • ラベル
  • テキストボックス
  • ドロップダウンリスト
  • チェックボックス
  • ラジオボタン
  • リストボックス
  • リストビュー
少なくとも、これだけのウィジェット種類が、用意されているのだな…。

各ウインドウは、位置変更のみならず、サイズ変更もできる。サイズ変更に追随しないレイアウトと、サイズ変更に追随するレイアウトが実現できているらしい。

ただし、一番大元の、背景色が黒のウインドウは、サイズ変更ができなかった…。

DXRubyを使ったスクリプトも、ウインドウサイズを変更すると中の描画がおかしくなる時があるので、DXRubyWSも似たような制限があるのかもしれない。が、それってつまり、デスクトップサイズに合わせてウインドウサイズを変更できない、作業しやすいウインドウサイズに変更できないということで、GUIアプリを作る場合は少々厳しい場面が出てくるような気もするのだけど、今はそのあたり考えないことにする。


ruby rubima.rb
rubima_ss.png
ウインドウの中で、おそらくは60FPSのゲームが動いてる…。敵オブジェクトをクリックすると、そのオブジェクトが選択されて、右側のウインドウ内に敵の情報(HP)が表示される。自爆ボタンを押すと選択中の敵が爆発して画面から消えたので、ゲーム内のオブジェクトに対して外部から制御ができるよ、というデモなのかもしれない。


ruby rubima3.rb
rubima3_ss.png
ウインドウの中でゲームを動かしながら、BGの表示位置を別ウインドウ内に表示できている。しかも、タイルチップを選んで、真ん中のウインドウ内でBGマップに書き込むと、ゲーム内のBG表示もソレに合わせて変化する。

ゲームを動かしながら、リアルタイムでその見た目を変更できてしまうあたり、凄いというか、面白いというか。Unityも、ここまではできなかったような気がする。…と言っても、Unityは、GUIでかなりの設定・指定ができるあたりが売りだろうから、比べるのもおかしい気がするけど。提供してる便利さが、そもそも違うというか。


ruby soundblock.rb
soundblock_ss.png
音の波形っぽいものが出てきた。Playボタンを押すと音が鳴る。スライダー、スピンボタン(スピンボックス?)が表示されていて、それぞれを変更してからPlayボタンを押すと音が変化することが分かる。

ソース内には、「簡易FM音源」と書いてあった。FM音源…懐かしい…。いや、今もDTMの世界ではフツーに現役ですが。


ruby splitcontainertest.rb
splitcontainertest_ss.png
もしかすると、コンテナを実現できているというデモだろうか…。「パネルE」と書かれてる部分はグループボックス? ラベル付パネル? なのかもしれない。パネルの中に、複数のウィジェットを配置できますよ、ということなのかな。


ruby statuswindow.rb
statuswindow_ss.png
これは何のデモか分からなかった…。


ruby tabtest.rb
tabtest_ss.png
タブの表示ができていて、かつ、スクロールバーもついていて中身をスクロールできる。


ruby test_autolayout.rb
test_autolayout_ss.png
各ウインドウのサイズを変更すると、中のウィジェットのサイズもソレに合わせて追随する。自動レイアウトのデモだろうか。


てなわけで、既に色々なウィジェットが使えそうなことが伝わってきた。

長くなってきたので、続きは別記事に分けて書こう…。

#2 [dxruby][dxrubyws] DXRubyWSのチュートリアル文書に従って試してみる

DXRubyWS を解凍すると、中に doc フォルダが入っていて、そこに説明文書が置いてある。

_tutorial01.txt と、 _tutorial02.txt が、チュートリアル文書(= 使用方法や機能を解説する教材のようなもの)らしい。

まずは、tutorial01.txt を写経して動作確認してみることにする。

ちなみに、スクリプトの置き場所は、libフォルダと同じ階層。
place.png

最も簡単なコード。 :

_tuto01.rb
require_relative './lib/dxrubyws'

Window.loop do
  WS.update
end
tuto01.png
真っ黒な画面が表示された。

要するに、DXRubyWS を使いたい時は、
  • 最初のほうに、「require_relative './lib/dxrubyws'」と書いておく。
  • 最後のほうで、「Window.loop do」「WS.update」「end」と書いておく。
としておけばいいんだよ、ってことなんだろう…。

マウスに反応させてみる。 :

_tuto02.rb
require_relative './lib/dxrubyws'

font = Font.new(32)

WS.desktop.add_handler(:mouse_push) do
  # マウスボタンが押されたら(「:mouse_push」のシグナルが来たら)…
  
  # 画面に「click!」と表示する
  Window.draw_font(0, 0, "click!", font)
end

Window.loop do
  WS.update
end
tuto02.gif
マウスボタンを押すと、画面に「click!」と表示された。たしかに、マウスに反応している。

DXRubyWS は、 _イベントドリブン で書いていく、らしい。…イベントドリブンって何だ? 何かのイベントが起きた時、そのイベントに対応した処理をするよ、ってこと。

例えば、このサンプルの場合は、「マウスボタンが押された」というイベントが発生したら、「画面に文字を描画する」という処理をしろや、と、WS.desktop.add_handler 〜 end のあたりで設定してある。だから、マウスボタンを押すと、画面に「click!」と表示されたわけで。

もし、イベントドリブンでは無い書き方をするとしたら…。例えば DXRuby で同じ処理を書くとしたら、たぶんこうなる。

_tuto02_b.rb
require 'dxruby'

font = Font.new(32)

Window.loop do
  
  # マウスボタンが押されたか、毎フレームチェックし続けて
  if Input.mousePush?(M_LBUTTON)
    # ボタンが押されてたら、画面に「click!」と表示する
    Window.draw_font(0, 0, "click!", font)
  end
  
end
毎フレーム、毎フレーム、「マウスボタンが押されたか?」「マウスボタンが押されたか?」と、飽きもせず、毎回毎回、延々と監視し続けて、もし押されてたら…という感じになる。

まあ、おそらく内部的には、イベントドリブンとやらも似たようなことを ―― 何かしらをずっと監視し続けて、とかやってると思うのだけど。プログラムを書く人間様としては、「○○が起きた時に、○○せよ」てな感覚でソースを書いていったほうが分かりやすいところがあるので、イベントドリブンなる概念があるのだろうな、などと想像してみたり。人間様が分かるように、面倒臭いところを上手に隠して、分かりやすいところだけ提供するってのは、プログラミングにおいては大事。

コントロールを作って、マウスで動かす。 :

コントロールって何だ? GUI部品、ウィジェットのこと。ボタンとか、ラベルとか、チェックボックスとか、そういうGUI部品を、ウィジェットとかコントロールとか呼んだりする、のだと思います。たぶん。ちょっと自信ないけど。

tuto03.rb
require_relative './lib/dxrubyws'

control = WS::WSControl.new(200, 100, 100, 100)
control.image = Image.new(100, 100, C_WHITE)
WS.desktop.add_control(control)

Window.loop do
  WS.update
end
tuto03.png
画面の真ん中に、白い何かが表示された。たぶん、この白い何かが、コントロール、なんだろう。

このサンブルの場合、
  • WS::WSControl.new() でコントロールを作って、
  • Image.new() で真っ白な画像を作り、ソレをコントロールが持ってる画像として設定して
  • WS.desktop.add_control() で、画面に登録。
しているのだろうな…。

このコントロールを、マウスで動かしてみる。

_tuto03_b.rb
require_relative './lib/dxrubyws'

control = WS::WSControl.new(200, 100, 100, 100)
control.image = Image.new(100, 100, C_WHITE)

control.extend WS::Draggable
control.add_handler(:drag_move) do |obj, dx, dy|
  control.x += dx
  control.y += dy
end

WS.desktop.add_control(control)

Window.loop do
  WS.update
end
tuto03_b.gif
白い画像を、マウスドラッグで移動できるようになった。

そろそろ分からなくなってきた。以下が追加された部分。
control.extend WS::Draggable
control.add_handler(:drag_move) do |obj, dx, dy|
  control.x += dx
  control.y += dy
end
tutorial01.txt によると…。control.extend WS::Draggable てのが、サポートモジュールとやらを使う指定っぽい。名前からしてマウスドラッグ関係の何かなんだろうな。

:drag_move というシグナルが来たら(イベントが発生したら)、マウスカーソルの移動量を得られるから、それをコントロールの座標値に加算してやることで、コントロールの表示位置が変更できている、のだろう。

ドラッガブル豆腐クラスを作る。 :

tutorial01.txt によると、この後、「ドラッガブル豆腐クラス」とやらを作ってみるよ、てことになってるのですが。ここで問題発生。

ちなみに、豆腐って何? …DXRubyでは、例の白い画像を「豆腐」と呼んでることが多くて。要するに、「ドラッガブル豆腐」=「マウスでドラッグできる白い画像」、なんだと思います。たぶん。

_tuto04.rb
require_relative './lib/dxrubyws'

module WS
  class DraggableTofu < WSControl
    include Draggable

    def initialize(x, y, width, height)
      super
      self.image = Image.new(width, height, C_WHITE)
      self.add_handler(:drag_move, self.method(:on_drag_move))
    end

    def on_drag_move(obj, dx, dy)
      self.x += dx
      self.y += dy
    end
  end
end

tofu = WS::DraggableTofu.new(200, 100, 100, 100)
WS.desktop.add_control(tofu)

Window.loop do
  WS.update
end

動かしてみたら、エラーが。
> ruby tuto04.rb

tuto04.rb:17:in `on_drag_move': wrong number of arguments (2 for 3) (ArgumentError)
        from C:/home/prg/ruby/test_dxruby/dxrubyws_test/lib/module.rb:132:in `on_mouse_move'
        from C:/home/prg/ruby/test_dxruby/dxrubyws_test/lib/core.rb:112:in `mouse_event_dispatch'
        from C:/home/prg/ruby/test_dxruby/dxrubyws_test/lib/dxrubyws.rb:118:in `update'
        from C:/home/prg/ruby/test_dxruby/dxrubyws_test/lib/dxrubyws.rb:165:in `update'
        from tuto04.rb:28:in `block in <main>'
        from tuto04.rb:27:in `loop'
        from tuto04.rb:27:in `<main>'
on_drag_move ってところで、何かを間違えてるっぽいけど…。

_Rubyのエラーメッセージwrong number of arguments (a for b)の意味 - Qiita によると、
tuto04.rb:17:in `on_drag_move': wrong number of arguments (2 for 3) (ArgumentError)
てのは、3つ引数が来るはずなのに、2つ来たよ、という意味なのかな…。

つまり、def on_drag_move(obj, dx, dy) は、obj, dx, dy の、3つの引数が書いてあるけど、この名前のメソッドは、本当は2つしか引数が無いはずやで? 間違えてるで? みたいな?

lib/module.rb を開いて、on_drag_move で検索してみたり。

    def on_drag_move(tx, ty)
      signal(:drag_move, tx, ty)
    end
うむ。引数は2つですね。なら、2つに修正すればいいのかな。

_tuto04_b.rb
require_relative './lib/dxrubyws'

module WS
  class DraggableTofu < WSControl
    include Draggable

    def initialize(x, y, width, height)
      super
      self.image = Image.new(width, height, C_WHITE)
      self.add_handler(:drag_move, self.method(:on_drag_move))
    end

    # def on_drag_move(obj, dx, dy)
    def on_drag_move(dx, dy)
      self.x += dx
      self.y += dy
    end
  end
end

tofu = WS::DraggableTofu.new(200, 100, 100, 100)
WS.desktop.add_control(tofu)

Window.loop do
  WS.update
end
tuto04_b.gif
動いた。豆腐をマウスでドラッグできてる。

要するに、こんな感じでコントロール(ウィジェット/GUI部品)を、クラスとして作って増やしていけますよ、ということなのかな…。

これで _tutorial01.txt の内容は一通り試せた。

_tutorial02.txt では標準GUIの使い方が説明されているらしい。明日、眺めてみることにしよう…。

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

#1 [dxruby][dxrubyws] DXRubyWSのチュートリアル文書に従って試してみる。その2

_DXRubyWS の、 _doc/tutorial02.txt を写経して動作確認してみる。

最も簡単なコード。 :

_tuto21.rb
require_relative './lib/dxrubyws'
require_relative './lib/standardgui'

WS.desktop.add_control(WS::WSWindow.new(100,100,300,200,"TutorialWindow"))

Window.loop do
  WS.update
end
tuto21.gif
ウインドウが表示された。マウスでドラッグ移動、サイズ変更ができるし、閉じるボタンを押せばウインドウを閉じることもできる。

標準GUIを使う時は、
require_relative './lib/standardgui'
を、最初のほうに書いておくものらしい。

WS::WSWindow.new() でウインドウを作って、WS.desktop.add_control() で画面に登録しているのかな。たぶん。

ボタンを配置して、ボタンを押したら反応させる。 :

まずは、ボタンを配置。

_tuto22.rb
require_relative './lib/dxrubyws'
require_relative './lib/standardgui'

# ウインドウを生成
window = WS::WSWindow.new(100,100,300,200,"TutorialWindow")

# 画面に登録
WS.desktop.add_control(window)

# ボタンを生成
button = WS::WSButton.new(10,10,100,20,"TutorialButton")

# ウインドウ(のクライアント領域)に登録
window.client.add_control(button)

Window.loop do
  WS.update
end
tuto22.png
ボタンを表示することができた。

tutorial02.txt には…。
  • WSWindowオブジェクトはコンテナの集合体。タイトルバーとクライアント領域に分かれてる。
  • ユーザがコントロールを配置するのはクライアント領域のほう。
  • クライアント領域は、WSWindow#clientでアクセスすることができる。
と書いてある。

ボタンに反応させてみる。

_tuto23.rb
require_relative './lib/dxrubyws'
require_relative './lib/standardgui'

window = WS::WSWindow.new(100,100,300,200,"TutorialWindow")
WS.desktop.add_control(window)

button = WS::WSButton.new(10,10,100,20,"TutorialButton")
window.client.add_control(button)

# ボタンをクリックしたときに呼ばれる処理を登録
button.add_handler(:click) do
  # ボタンの表示位置を、右下に10ドット変更する
  button.x += 10
  button.y += 10
end

Window.loop do
  WS.update
end
tuto23.gif
ボタンを押すと、ボタンの表示位置が変わっていく。たしかに、ボタンが反応してる。

ボタンがクリックされたら ―― :click シグナルが来たら、処理がされるように設定されてる。

TutorialWindowクラスを作ってみる。 :

_tuto24.rb
require_relative './lib/dxrubyws'
require_relative './lib/standardgui'

module WS
  class TutorialWindow < WSWindow
    def initialize(*args)
      super
      button = WS::WSButton.new(10,10,100,20,"TutorialButton")
      client.add_control(button, :btn)
      button.add_handler(:click, self.method(:on_click))
    end

    def on_click(obj, tx, ty)
      client.btn.x += 10
      client.btn.y += 10
    end
  end
end

window = WS::TutorialWindow.new(100,100,300,200,"TutorialWindow")
WS.desktop.add_control(window)

Window.loop do
  WS.update
end
tuto24.gif
tuto23.rb と同じことを、クラスを作ることで実現できた。

これで、 _tutorial02.txt の内容を一通り試せた。

#2 [dxruby][dxrubyws] DXRubyWSで画像ボタンを表示してみる

DXRubyWS上で、ツールバーだか、ツールボックスだか、そんな感じの表示をしてみたい。そのためには、最低限、画像ボタンが表示できないといけない。画像ボタンを表示する方法はあるのかな。調べてみる。

画像ボタンを1つだけ表示。 :

_sample/minsample.rb を眺めると、WS::WSImageButton なるものがあるらしい。おそらくコレが、名前からして、画像ボタンなのだろう…。

_lib/StandardGUI/button.rb の中に、WSImageButton の定義がある。ソレによると…。
WS::WSImageButton.new(tx, ty, image, width, height, caption)

x : 表示位置 x
y : 表示位置 y
image : 画像オブジェクト(DXRuby の Imageオブジェクト)
width : 横幅。nil なら自動調整
height : 縦幅。nil なら自動調整
caption : キャプション文字列
こんな感じなのだろう。たぶん。おそらく。

サンプルソースを書いてみることにしよう。以下の画像を使って、画像ボタンを表示してみる。この画像は、CC0 / Public Domain ってことで。

toolbar.png


_imagebutton_test.rb
# ImageButton(画像ボタン)を表示してみる

require_relative 'lib/dxrubyws'
require_relative 'lib/standardgui'

module WS

  # 画像ボタンを表示してみるウインドウのクラス
  class ImageButtonWindow < WSWindow

    # コンストラクタ。初期化処理
    def initialize(*args)
      super

      # 画像を用意する。アイコンが、8x3個、並んでる
      imgs = Image.loadTiles("toolbar.png", 8, 3)

      # 画像ボタンを生成
      # 引数として、(x, y, Imageオブジェクト, ボタン横幅, ボタン縦幅, caption) を渡す
      # 横幅、縦幅の指定が nil なら、画像サイズ+αで調整してくれる
      x, y = 10, 10
      w, h = nil, nil
      imgbtn = WS::WSImageButton.new(x, y, imgs[1], w, h, "Open")

      # 画像ボタンをクライアント領域に追加
      client.add_control(imgbtn, :btn)

      # ボタンが押された時の処理を設定
      imgbtn.add_handler(:click, self.method(:on_click))
    end

    # ボタンを押した時の処理
    def on_click(obj, tx, ty)
      # ファイル選択ダイアログを開いてみる
      filter = [
        ["PNGファイル(*.png)", "*.png"],
        ["すべてのファイル(*.*)", "*.*"]
      ]
      filepath = Window.openFilename(filter, "ファイルを選択してください")

      unless filepath
        # キャンセルされた
        puts "Cancel."
      else
        # ファイルが選ばれた
        puts filepath
      end
    end
  end
end

# ウインドウを生成
window = WS::ImageButtonWindow.new(8, 8, 320, 96, "ImageButtonWindow")

# 画面に追加
WS.desktop.add_control(window)

Window.loop do
  WS.update
end
imagebutton_test.png
画像ボタンが表示できた。

マウスカーソルをボタンの上に持ってくると、説明のためのバルーン表示(?)までしてくれるのだな…。素晴らしい。

けど、マウスカーソルでバルーン表示が隠れちゃって、文字が読めないから、イラッとするのだな…。微妙に残念。バルーンの表示位置については、改善が必要な予感。

画像ボタンをたくさん表示。 :

画像ボタンが表示できたので、ツールバーだか、ツールボックスだか、そんな感じのウインドウも表示してみたい。

_imagebutton_test2.rb
# ImageButton(画像ボタン)を表示して、ツールボックスっぽく並べてみる

require_relative 'lib/dxrubyws'
require_relative 'lib/standardgui'

module WS

  # ツールボックスっぽく表示してみるウインドウクラス
  class ToolBoxWindow < WSWindow

    # コンストラクタ。初期化処理
    def initialize(*args)
      super

      # アイコン画像を読み込む。アイコンが、8x3個、並んでる
      imgs = Image.loadTiles("toolbar.png", 8, 3)

      # アイコン種類を定義
      icon_list = [
        # 画像番号, caption, 押された時の処理名
        [0, "New", :create_new_data],
        [1, "Open", :load_data],
        [2, "Save", nil],
        [3, "Export", nil],

        [11, "Zoom +", nil],
        [12, "Zoom -", nil],
        [13, "Brush Size +", nil],
        [14, "Brush Size -", nil],

        [17, "Swap Fg/Bg Color", nil],
        [16, "Grid on/off", nil],
        [15, "Undo", nil],

        [4, "Pen", nil],
        [5, "Erase", nil],
        [6, "Line", nil],
        [7, "Rectangle", nil],

        [8, "Rectangle Fill", nil],
        [9, "Fill", nil],
        [10, "Text", nil],
      ]

      # アイコンの数だけループする
      x = 0
      y = 0
      i = 0
      icon_list.each do |d|
        idx, caption, job_sym = d

        # マウスカーソルでバルーン表示が隠れてしまうので、少し修正
        caption = "    " + caption + " "

        # 画像ボタンを生成
        # 引数として、(x, y, Imageオブジェクト, ボタン横幅, ボタン縦幅, caption) を渡す
        # 横幅、縦幅の指定が nil なら、画像サイズ+αで調整してくれる
        imgbtn = WS::WSImageButton.new(x, y, imgs[idx], nil, nil, caption)

        # 画像ボタンをクライアント領域に追加
        client.add_control(imgbtn, :btn)

        if job_sym != nil
          # ボタンが押された時の処理を設定
          imgbtn.add_handler(:click, self.method(job_sym))
        end

        i += 1

        # 次のボタンの表示位置を決める
        if i % 11 == 0
          x = 0
          y += imgbtn.height
        else
          x += imgbtn.width
        end
      end
    end

    # Newボタンを押した時の処理
    def create_new_data(obj, tx, ty)
      puts "create new data"
    end

    # Openボタンを押した時の処理
    def load_data(obj, tx, ty)

      # ファイル選択ダイアログを開いてみる
      filter = [
        ["PNGファイル(*.png)", "*.png"],
        ["すべてのファイル(*.*)", "*.*"]
      ]
      filepath = Window.openFilename(filter, "ファイルを選択してください")

      unless filepath
        # キャンセルされた
        puts "Cancel."
      else
        # ファイルが選択された
        puts filepath
      end
    end
  end
end

# ツールボックスウインドウを生成
window = WS::ToolBoxWindow.new(8, 8, 320, 96, "ToolBoxWindow")

# 画面に追加
WS.desktop.add_control(window)

Window.loop do
  WS.update
end
imagebutton_test2.png
それらしい表示ができた。

ウインドウのサイズを、値を直接指定して決めてるあたりが、なんだかダサイ…。
  • ボタンをずらずら並べていったら、自動でウインドウサイズも変わってほしいし、
  • 逆に、ウインドウサイズを変更したら、ボタンが横に並ぶ個数も自動で変わったりしてほしい。
けど、そのあたりの処理は、今後の課題ってことで。

#3 [dxruby][dxrubyws] DXRubyWSでチェックボックスを表示してみる

DXRubyWS で、チェックボックスを表示してみたい。

_sample/minsample.rb を眺めると、WS::WSCheckBox なるものがある。名前からして、コレがチェックボックスだな…。

さらに、 _lib/StandardGUI/checkbox.rb を眺めると…。
WS::WSCheckBox.new(tx, ty, width, caption)

tx : 表示位置 x
ty : 表示位置 y
width: 横幅
caption : キャプション文字列
他にも…。 それらを踏まえてサンプルソースを書いてみる。

_checkbox_test.rb
# DXRubyWSでチェックボックスを表示してみるテスト

require_relative 'lib/dxrubyws'
require_relative 'lib/standardgui'

module WS

  # チェックボックスを表示してみるウインドウクラス
  class CheckBoxWindow < WSWindow

    # コンストラクタ。初期化処理
    def initialize(*args)
      super

      @chkbox = []

      chkbox_list = [
        "Character",
        "Fg Color",
        "Bg Color",
      ]

      x, y = 8, 8
      w, h = 0, 0
      chkbox_list.each do |caption|

        # チェックボックスを生成
        # (x, y, width, caption) を渡す
        cb = WS::WSCheckBox.new(x, y, 120, caption)

        # あらかじめチェックを入れておく
        cb.checked = true

        # クライアント領域に追加
        client.add_control(cb, :chkbox)

        # 状態が変更された時の処理を登録
        cb.add_handler(:change, self.method(:on_change))

        # 後で参照するかもしれないから一応記憶しておく
        @chkbox.push(cb)

        # 次の表示位置を求める
        y += cb.height + 4
      end
    end

    # 状態が変更された時の処理
    def on_change(obj, checked)
      puts "#{obj.caption}, #{checked}"
    end
  end
end

# ウインドウを生成して画面に登録
window = WS::CheckBoxWindow.new(8, 8, 120, 120, "CheckBoxWindow")
WS.desktop.add_control(window)

Window.loop do
  WS.update
end
checkbox_test.png
それらしく表示された。

チェックを入れたり外したりすると、on_change メソッドが呼ばれて、キャプションとチェック状態が標準出力に出力される。

#4 [vine][linux] Apache2にDOS攻撃対策のモジュールを入れてみたり

最近、たまに、自宅サーバにDOS攻撃っぽいアクセスがあって、自宅サーバが無反応になってしまう時があるのです。

DOS攻撃と言っても、おそらくはSPAM業者が、投稿可能なページだの、リンク元が残るページだのを見つけて、宣伝URLを書き込もうと大量アクセスして失敗してるとかそんな感じだろうと勝手に想像してるのですが。何にせよ、HTTPサーバも含めて、自宅サーバが沈黙しちゃうのは困るわけで。

何か対策は無いのかとググってみたら、Apache2 に mod_evasive なるモジュールを入れると対策らしきことができるそうで。

_Apache,Linux - ApacheのDOS攻撃対策 - Qiita
_Apache DoS攻撃にそなえる | Developers.IO

てなわけで、自宅サーバ、Vine Linux 6.x にもインストールしてみたり。

wget でソースを入手して、tar で解凍して、解凍したフォルダに入って。
wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
tar zxvf mod_evasive_1.10.1.tar.gz
cd mod_evasive

ここから、apxs という、apache にモジュールを追加するためのツールを使って、コンパイルして .so を作ってモジュール追加をするのだけど。
*1

ここで、ちょっとハマってしまった。今現在の Vine Linux上で apxs を使う時は、/usr/sbin/apxs ではなく、/usr/bin/apxs を使わないとダメなようで。前者は apache 1.x 用で、後者が apache 2.x 用なのではないかと。たぶん。分かんないけど。単に apxs -i -a -c mod_evasive20.c と打ってみたら、エラーがバンバン出て困り果ててしまった。/usr/bin/apxs と打たないとダメ。

# /usr/bin/apxs -i -a -c mod_evasive20.c
なんか色々メッセージが表示されてるけど、追加されたっぽい。

/var/log に mod_evasive というフォルダを作って、そこにログを入れることにする。
mkdir /var/log/mod_evasive
chown か chmod も必要なのだろうか。

/etc/apache2/conf/httpd.conf に設定を追加。
# この行は自動で追加されているはず
LoadModule evasive20_module   /usr/lib/apache2/modules/mod_evasive20.so

# 同一ページに2秒間で3回アクセスされたら、
# あるいは、同一サイトに1秒間で30回アクセスされたら、
# 180秒間ブロックする例
<IfModule mod_evasive20.c>
    DOSHashTableSize 3097
    DOSPageCount 3
    DOSSiteCount 30
    DOSPageInterval 2
    DOSSiteInterval 1
    DOSBlockingPeriod 180
    DOSWhitelist 127.0.0.1
    DOSWhitelist 192.168.1.*
    DOSLogDir "/var/log/mod_evasive"
    DOSEmailNotify "-s 'DoS Alert' hoge@fuga.com"
</IfModule>

設定ファイルに問題が無いかチェック。
# apache2 -t
Syntax OK

apache2 を再起動。
# service apache2 restart

テストスクリプトが動かない。 :

mod_evasive には、test.pl というテスト用スクリプトがついてきているのだけど、コレがどうもうまく動かない。

Windowsが動いてる別PCに持ってきて、アクセス先のURL? URI? を修正して、AcivePerl を使って動かしてみたものの、いきなり最初から403しか返ってこない。変だな…。ホワイトリストに入れてるから、200が返ってくるはずだけど…。

自宅サーバ上で、ホワイトリスト行を無効にして apache2 を再起動してから test.pl を走らせてみたものの、これも最初から403。200なんて一度も出てこない。何故。

かといって、ブラウザでアクセスできないかというとそんなことはなく。フツーにページが見れてるわけで。

test.pl の中身は、こんな感じで。
# test.pl: small script to test mod_dosevasive's effectiveness

use IO::Socket;
use strict;

for(0..100) {
    my $response;

    my $SOCKET = new IO::Socket::INET( Proto => "tcp",
                                       PeerAddr => "127.0.0.1:80");

    if (! defined $SOCKET) { die $!; }

    print $SOCKET "GET /?$_ HTTP/1.0\n\n";
    $response = <$SOCKET>;
    print $response;
    close($SOCKET);
}
もちろん、PeerAddr => "127.0.0.1:80" は書き換えて試してるけど。何がおかしいんだろう…。

サーバ側のログを眺めてみたけど、別のログに記録が残っていて、首を捻ったり。test.pl は、"GET /?0 HTTP/1.0" とか "GET /?1 HTTP/1.0" という形でなんかくれよーくれくれくれー、とアクセスしてるわけだけど。その手のアクセスは、Nimdaウイルス等からアクセスされた時に残るログのほうに記録されてる。なんでそっちに行っちゃうんだ…?

_2004/04/19 にやってた設定が効いてるみたい。ホストが不明なアクセスは隔離するようにしていることで、こういうことになっている、のかも。よく分かってないけど。

*1: apxs を使う際、Linuxディストリによっては、httpd-devel だか apache2-devel だかのパッケージが必要になる時もあるらしいので、apt-get だか yum だかでインストールしておく必要があるのかもしれないがよくわかってない。

2016/01/13(水) [n年前の日記]

#1 [dxruby][dxrubyws] DXRubyWSでテキストボックスを表示してみる

自作キャラグラエディタを作っていた際に、困ってしまった点があって。テキストボックス(1行分のテキスト入力ができるGUI部品)を実装するかどうかで悩んだというか。

新規キャンバスを作る際に、キャンバスサイズを入力して新規作成したかったのだけど。サイズを入力するためには、テキストボックスが必要だよなと。でも、実装が絶対に大変だよなと。なので、そのへん、結局諦めてしまったのですが。しかし、DXRubyWSを使えば、そこらへんを解決することができるのかもしれない…。

ということで、DXRubyWSでテキストボックスを表示できるか試してみようと。

ググってみたら、DXRuby, DXRubyWS作者様の、はてな日記記事がヒットした。

_DXRubyWSでのアプリ開発を考える - mirichiの日記

サンプルとして書かれてるソースの中で、テキストボックスが使われてる。ありがたや。ほとんどそのまま写経させてもらって動作確認してみたり。

_textbox_test.rb
# DXRubyWSでテキストボックスを表示してみるテスト

require_relative 'lib/dxrubyws'
require_relative 'lib/standardgui'

module WS

  class TextBoxWindow < WSWindow

    def initialize(*args)
      super

      # テキストボックスを生成して追加
      x, y = 16, 16
      w, h = 200, 24
      @txtbox = WS::WSTextBox.new(x, y, w, h)
      client.add_control(@txtbox)

      # テキストボックスの内容を設定
      @txtbox.text = "320"

      # ボタンを生成して追加
      x += @txtbox.width
      w, h = 80, 24
      @btn = WS::WSButton.new(x, y, w, h, "Button")
      client.add_control(@btn)

      # ボタンが押された時の処理を登録
      @btn.add_handler(:click, self.method(:on_click))
    end

    # ボタンが押された時の処理
    def on_click(obj, tx, ty)
      # メッセージボックスを生成して画面に登録
      msgbox = WS::WSMessageBox.new("Message", "TextBox = #{@txtbox.text}")
      WS.desktop.add_control(msgbox)
    end

  end
end

window = WS::TextBoxWindow.new(8, 8, 360, 96, "TextBoxWindow")
WS.desktop.add_control(window)

Window.loop do
  WS.update
end
textbox_test.png
テキストボックスが表示された。ボタンを押した時の処理の中で、テキストボックスの内容を取得することもできている。

_lib/StandardGUI/textbox.rb を眺めると、
WS::WSTextBox.new(tx, ty, sx, sy)
の引数を渡して生成するらしい。tx, ty は表示位置だろうけど、sx, sy は何だろう? その2つを、Image.new() に渡してるから…おそらく横幅、縦幅みたいなものかしら。

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

詳細はGRPでメモ。

#3 [pc] A8-3850機の動作確認を開始

Amazonに注文していたシルバーグリス *1 が届いたので、正月に弟が持ってきてくれた、AMD A8-3850 + M/B GIGABYTE GA-A75M-UD2H 等の一式を、まな板上で組んで動作確認開始。

CPUクーラーは、弟がゴイスなクーラーも持ってきてくれたのだけど。親父さんPCの省スペースケースに収まるとは思えないので、AMD CPU に同梱されてるリテールCPUクーラーを素直につけてみたり。音がうるさいらしいけど…どのくらいうるさいのだろう…。

組んでから、USBメモリに入ってるUBCDを起動して、memtest86+ をかけてるけど、今のところエラーはない模様。

と思ったけど、BIOS設定で、Load Fail-Safe Defaults を設定してからチェックをしたことを忘れてた。できれば Load Optimized Defaults のほがうがいいかな…。そっちにしてエラーが出なければいいけど。

2016/01/15追記。 :

A8-3850 と書くべきところを、A8-3650 と書いてたので修正。

*1: シルバーグリスは、CPUとCPUクーラーの間に塗って熱伝導を高めるグリス。一般的にはシリコングリスが使われるけど、それよりちょっとは熱伝導が良いらしい。

2016/01/14(木) [n年前の日記]

#1 [dxruby][dxrubyws] DXRubyWSのウインドウの中で60FPSのゲームを動かしたい

要するに、 _DXRubyWS/sample/rubima.rb のようなことをしてみたいのです。どういう仕組みで、ウインドウ内にゲーム画面を表示できているのだろう…。

眺めているうちに、なんとなく分かってきた。もしかすると、こういうことかな…。
rubima.rb を改造して、少しだけ短めのサンプルソースにしてみたり。

_game_and_info.rb
# DXRubyWSのウインドウ内に、60FPSで動くゲーム画面を表示してみるテスト
# sample/rubima.rb を参考に作成

require 'dxruby'
require_relative 'lib/dxrubyws'
require_relative 'lib/standardgui'

# ----------------------------------------
# ゲーム画面用クラス
# ゲーム画面内で画像がバウンドするだけの処理
class GameMain

  attr_accessor :width, :height, :image

  # 初期化
  def initialize
    @x, @y = 100, 100
    @dx, @dy = 8, 4

    @width = 360
    @height = 480

    @image = Image.new(64, 64, C_WHITE)
  end

  # 更新
  def update

    # 座標に速度を加算
    @x += @dx
    @y += @dy

    # 画面外に出そうなら速度の向きを反転させる
    @dx *= -1 if (@x <= 0 and @dx < 0) or ((@x + @image.width) >= @width and @dx > 0)
    @dy *= -1 if (@y <= 0 and @dy < 0) or ((@y + @image.height) >= @height and @dy > 0)
  end

  # 描画
  def draw
    # グローバルなRenderTargetに対して描画してる
    $rt.draw(@x, @y, @image)
  end
end

# ----------------------------------------
# ウインドウシステム用のクラス定義
module WS

  # ----------------------------------------
  # ゲーム画面が表示されるウインドウ
  class GameWindow < WSWindow

    def initialize(*args)
      super
    end

    # サイズ変更されたら再描画
    def resize(*args)
      super
      self.client.image.draw(0, 0, $rt)

      # ゲーム画面サイズも変更しておく
      $gamemain.width = self.width
      $gamemain.height = self.height - 32
    end

    # 描画
    def draw
      super
    end
  end

  # ----------------------------------------
  # ゲーム画面ではないほうのウインドウ
  class DetailWindow < WSWindow

    def initialize(*args)
      super

      # ラベル生成と登録
      x, y, w, h = 8, 8, 100, 16
      @label = WSLabel.new(x, y, w, h, "TEST")
      self.client.add_control(@label)

      # ボタン生成と登録
      x, y, w, h = 8, 32, 150, 20
      button = WSButton.new(x, y, w, h, "画像読み込み")
      self.client.add_control(button)

      # ボタンが押された時の処理を登録
      button.add_handler(:click, self.method(:on_click))

      @count = 0
    end

    # 状態更新
    def update
      # カウントアップをラベルで表示してみる
      @label.caption = @count.to_s
      @count += 1
      super
    end

    # ボタンが押された時の処理
    def on_click(obj, tx, ty)
      # ファイル選択ダイアログを開く
      filter = [
        ["PNGファイル(*.png)", "*.png"],
        ["すべてのファイル(*.*)", "*.*"],
      ]
      filepath = Window.openFilename(filter, "画像ファイルを選択")
      if filepath
        # ゲーム画面用クラスの画像を差し替える
        $gamemain.image = Image.load(filepath)
      end
    end
  end
end


# ----------------------------------------
# ここから、ゲームのメイン処理

font = Font.new(24) # フォント生成

Window.width, Window.height = 800, 600 # 画面サイズ変更

# ゲーム画面を描画するための RenderTarget を生成して
# グローバル変数に入れておく
$rt = RenderTarget.new(360, 480, [0, 0, 0])

# ゲーム画面クラスを生成
$gamemain = GameMain.new()

# ゲーム画面用ウインドウを生成して画面に登録
gamewindow = WS::GameWindow.new(50,100,360,480)
WS::desktop.add_control(gamewindow, :gamewindow)

# ゲーム画面ではないウインドウを生成して画面に登録
detailwindow = WS::DetailWindow.new(450,100,200,200)
WS::desktop.add_control(detailwindow, :detailwindow)

# メインループ
Window.loop do
  break if Input.key_push?(K_ESCAPE) # Esc キーで終了

  # ここでゲームの処理をする
  $gamemain.update
  $gamemain.draw

  # ここまで来れば、グローバルなRenderTargetに、
  # ゲーム画面の内容が描画されてるはず

  # ゲーム画面用ウインドウに、グローバルなRenderTargetの内容を描画する
  WS.desktop.gamewindow.client.image.draw(0, 0, $rt)

  WS.update # ここで WS.update を呼んでる

  # 各種情報を画面に出力
  s = "CPU : #{Window.get_load.to_i} %"
  Window.draw_font(0, 0, s, font, :z => 100)
end
game_and_info.gif
DXRubyWSのウインドウの中で、ゲーム画面っぽいものが動いてくれた。なるほど…こういう仕組みなのか…。

他のサンプルはどうなのだろうと思って、 _DXRubyWS/sample/rubima3.rb を眺めてみたら、こちらは GameWindowクラスの中身がもっと短くなっていた。drawメソッドの中で描画しちゃえば済むのか…。なるほど…。

こういうことができるなら、リアルタイムに何かを動かしながら調整していく感じのツールが作りやすいであろう予感。

#2 [dxruby][dxrubyws] ツールチップだかバルーン表示だかについて見え方を確認してみたり

DXRubyWSで画像ボタンを表示した際、ツールチップ表示? バルーン表示? まで実装されていて感心したのだけど、その表示位置がマウスカーソルと重なって文字列が一部読めなかったのが気になったのです。

このあたり、他のアプリやOSは、どうやって解決してるのだろう…。今まで全く気に留めたことがなかった…。てなわけで、いくつかのアプリの、そのあたりの見え方を確認してみたりして。

Excel 2003 の場合。
tooltip_ss_excel2003.png


Excel 2007 の場合。
tooltip_ss_excel2007.png

tooltip_ss_excel2007_2.png

Excel 2007 においては、なんだか凄いところに表示してるな…。ほとんど簡易ヘルプを表示してるようなものだから、通常のツールチップ表示の位置では問題があると判断して、作業領域内に表示するようにしたのだろうか?

Mozilla Thunderbird の場合。
tooltip_ss_thunderbird.png


Explorer の場合。
tooltip_ss_explorer_01.png

tooltip_ss_explorer_02.png

tooltip_ss_explorer_03.png

中には、ウインドウをはみ出して表示されてるものもある…。これを DXRubyWS で実現しようとすると面倒なことになりそうなので、DXRubyWS は、画面内に表示されるように補正する、といった処理が必要になるのだろうか。

さておき、それぞれをざっと見た感じ、どうもマウスカーソル画像の縦幅分ずらしたところに表示してる、というか、マウスカーソル画像に追随して表示位置を決めているような気がしてきたり。

ただ、表示位置をどうやって求めてるのかが今一つ不明。例えば以下のスクリーンショットを見ると…。縦位置はともかく、横位置は何を基準にして求めてるのか…。
tooltip_ss_explorer_04.png

tooltip_ss_explorer_05.png


待てよ? もし、マウスカーソル画像の縦幅分、ずらして表示してるとしたら…。例えば大きいマウスカーソル画像を使ってる場合は、ツールチップがマウスカーソルで隠れてしまうのだろうか?

大きいマウスカーソルに変更して確認してみたり。

tooltip_ss_larecursor_01.png

tooltip_ss_larecursor_02.png

tooltip_ss_larecursor_03.png

tooltip_ss_larecursor_04.png

どうやらマウスカーソル画像の縦幅を、その都度取得して、縦位置を決めているっぽい。

今まで気にしてなかったけど、巷のソレは、こういう仕様になってたのか…。

ツールチップとバルーンって何が違うんだろう。 :

画像ボタンの上にマウスカーソルを合わせると表示されるソレって、何と呼ぶのだろう。ツールチップ、でいいのかな。ツールヒント、と呼ぶのかな。バルーン、ではないよな。

そのあたりの違いがよくわからなくてググってたら、気になる記事に遭遇。

_中小W: 深夜、家に帰る途中のWebディレクター: それはバルーンヘルプなのか?ツールチップなのか?

ツールチップは Microsoftの発明で、バルーンはAppleの発明だったのか…。

#3 [pc] A8-3850機でWinodws10が起動するか実験した

A8-3850機に、親父さんPCのSSDをクローンしたHDD、を、eSATAで接続して、Windows10 x64が起動するかどうか実験してみたり。ちなみに、LANケーブル等は差してない状態で確認した。

起動時に、例の青いWindowsマークと共に、「デバイスの準備をしています」と表示されて…。その後しばらく経ったら起動してくれた。M/Bが違っても、起動してくれるのか…。素晴らしい。であれば、親父さんPCのM/B交換をしても、OS再インストールまでせずに済むかもしれない。

ただ、ライセンス認証・再アクティベーションは、やはり必要なようで。システム情報を確認したら「ライセンス認証が必要です。インターネットに接続してください」と表示されていた。「これは今までと違うハードウェアだろ?」と、しっかり認識されてる模様。

#4 [windows] Windows7 x64上で Excel 2003 が終了できなくなっていた

Excel 2003上で作成された.xlsが外部から送られてきた際、見た目のみを確認するため、一応まだ、Excel 2003をWindows7 x64上にインストールしてあるのだけど。 *1

ふと、たまたま Excel 2003 を起動して見た目を確認していたら、閉じるボタンを押しても終了できなくなっていることに気が付いた。ファイル → 終了も、グレーアウトしている。何だコレ。

ググってみたら、どうやら Visual Studio が絡んでるらしい。

_【解決】Microsoft Office Excel 2000 2003 終了時にエラーが発生する。(Visual Studio ) | 吉田Style-MindShare-

そんな罠があるのか…。
*1: 常用してる表計算ソフトは LibreOffice Calc だし、Excel を使わないといけない場合でも Excel 2007 を使っているのだけど。Excel はバージョンによって、.xls の「見た目」が異なるので、過去のバージョンをなくすわけにはいかないという…。

#5 [pc][neta] hjklに矢印が印刷されてるキーボードってないのだろうか

前にも書いたかもしれないけど、Vimユーザの専用キーボードとして、hjklに矢印が印刷されてるキーボードを発売したら微妙なヒット商品に…。ならないか。ならないよな。ならないですね。

先輩プログラマー(以下、先輩)「どうだい? Vimの操作には慣れたかな?」
新人プログラマー(以下、新人)「いやー、これがなかなか…。特にhjklでカーソル移動がツラくて」
先輩「そうかー。じゃあ、このキーボードを貸してあげよう」
新人「?! な、な、なんスかコレ! hjklに矢印が印字されてる! こんなキーボードがあるんスか!?」

尊敬のまなざしゲット、ですよ。

ていうか、キーボードの各キーにペタペタ貼れるシール、みたいな商品って無いのかな。

以前、耐水シールっぽい用紙にプリントアウトしてキーに貼って試したことがあるけど、キーのサイズに合わせてテンプレート作るあたりが、地味に面倒くさいんだよな…。

viのカーソル移動について。 :


2016/01/15(金) [n年前の日記]

#1 [nitijyou] 雪が積もった

朝、うっすらと雪が積もってた。しかし雪だるまを作れるほどは積もってなくて。やっぱり今年は雪が少ないのだろうか…。

#2 [anime] 天空の城ラピュタを途中まで視聴

金曜ロードショーで放送されてたので途中まで視聴。やっぱり凄いな…よく出来てる…。

今作ったら、フラップターが飛ぶシーンの背景動画は3DCGになったりするのだろうか。いや、そもそもフラップターが3DCGで描かれるかもしれないか…。その場合、受ける印象は変わるのだろうか。

飛行石の出す怪しい光の不思議な模様も、今ならCGだろうな…。当時は色んな素材を試して模様が出るように工夫していたらしいけど…。

例えば ufotable がこのシーンを作ったらどうなるだろう、などと妄想しながら各カットを眺めてると、また違う面白さがあるなと。このカットは撮影段階で部屋の中の塵パーティクルを追加するだろうな、ufotableの撮影さんなら絶対追加するぞ、とか、朝日が昇るシーンはレンズフレアを絶対入れてくるだろう、とかそういう。…いや、そういう見方って面白いのかな。どうなんだ。

レイアウトが同じでも、おそらく今のアニメスタジオがAEを駆使しながら作り直したら、全く違う印象を受ける画面になるんだろうな。などと思いながら眺めてました。

2016/01/16() [n年前の日記]

#1 [dxruby][dxrubyws] DXRubyWSで画像を表示してみるテスト

DXRubyWSで画像を表示してみたい。

_doc/tutorial01.txt を眺めれば、画像の表示はできるのだけど、できればウインドウに ―― WSWindow で表示してみたい。どうやれば表示できるのかなと。

_sample/rubima3.rb を参考にすれば表示できそうな予感。試してみたり。

_image_load_test.rb
# 画像を読み込んで表示してみるテスト

require_relative 'lib/dxrubyws'
require_relative 'lib/standardgui'

module WS

  # 画像選択ウインドウクラス
  class ImageSelectWindow < WSWindow

    # コンストラクタ。初期化処理
    def initialize(*args)
      super

      # ボタンを生成して登録
      x, y, w, h = 4, 4, 120, 24
      @btn = WSButton.new(x, y, w, h, "画像読み込み")
      client.add_control(@btn)
      @btn.add_handler(:click, self.method(:on_click))

      # タイトルバー上の閉じるボタンを無効化
      self.window_title.close_button = false

      # ESCキーで閉じないようにする
      @key_handler.delete(K_ESCAPE)

      # 次のウインドウ発生位置
      @x_pos = self.x
      @y_pos = self.y + self.height
    end

    # ボタンを押した時の処理
    def on_click(obj, tx, ty)
      # ファイル選択ダイアログを開いてみる
      filters = [
        ["画像ファイル(*.png;*.jpg;*.bmp)", "*.png;*.jpg;*.bmp"],
        ["すべてのファイル(*.*)", "*.*"]
      ]
      filepath = Window.openFilename(filters, "画像ファイルを選択")
      create_image_window(filepath) if filepath
    end

    # 画像を表示するウインドウを生成して画面に追加
    def create_image_window(filepath)
      img = Image.load(filepath)
      w, h = img.width, img.height
      bsname = File.basename(filepath)

      wdw = WS::ImageWindow.new(@x_pos, @y_pos, w + 48, h + 48, bsname)
      WS.desktop.add_control(wdw)
      wdw.image = img

      @x_pos += 32
      @y_pos += 32
    end
  end

  # 画像を表示するだけのウインドウクラス
  class ImageWindow < WSWindow

    attr_accessor :image

    def initialize(*args)
      super
      @image = nil
    end

    def draw
      x = (client.image.width - @image.width) / 2
      y = (client.image.height - @image.height) / 2
      client.image.draw(x, y, @image) if @image
      super
    end
  end

end

Window.width, Window.height = 1024, 600

wdw = WS::ImageSelectWindow.new(8, 8, 200, 56, "ImageSelectWindow")
WS.desktop.add_control(wdw)

Window.loop do
  WS.update
end
image_load_test.png
表示できたっぽい。たぶん、無駄な行がたくさんありそうな気もするけれど…。

ウインドウのタイトルバーの閉じるボタンを無効にしたい。 :

画像読み込みボタンが置いてあるウインドウの、閉じるボタンを無効にしたかったのだけど。 _lib/StandardGUI/window.rb を眺めていて、もしかするとコレかなと思えてきたので試してみたら、非表示になってくれた。
  # タイトルバー上の閉じるボタンを無効化
  self.window_title.close_button = false

ただ、ウインドウは ―― WSWindow は、ESCキーでウインドウを閉じる仕様にもなっているようで。ESCキーで閉じる仕様を無効にするにはどうしたら…。こんな感じでいいのだろうか。
  # ESCキーで閉じないようにする
  @key_handler.delete(K_ESCAPE)
WSWindow が持ってる、@key_handler というハッシュに、どのキー入力を受け付けるかが登録されてるっぽいので、K_ESCAPE だけ delete してみたら、一応無効になってくれたように見える。

#2 [dxruby][dxrubyws] DXRubyWSでスクロールバーを表示させたい

DXRubyWS でスクロールバーを表示させたい。ウインドウ内に表示しきれないサイズの何かを表示してる時は、スクロールバーでスクロールを可能にしたいわけで。

これも、 _sample/rubima3.rb を参考にして試してみたり。

_scrollbar_test.rb
# 画像を読み込んで表示してみるテスト
# スクロールバーを追加してみる

require_relative 'lib/dxrubyws'
require_relative 'lib/standardgui'

module WS

  # 画像選択ウインドウクラス
  class ImageSelectWindow < WSWindow

    # コンストラクタ。初期化処理
    def initialize(*args)
      super

      # ボタンを生成して登録
      x, y, w, h = 4, 4, 120, 24
      @btn = WSButton.new(x, y, w, h, "画像読み込み")
      client.add_control(@btn)
      @btn.add_handler(:click, self.method(:on_click))

      # タイトルバー上の閉じるボタンを無効化
      self.window_title.close_button = false

      # ESCキーで閉じないようにする
      @key_handler.delete(K_ESCAPE)

      # 次のウインドウ発生位置
      @x_pos = self.x
      @y_pos = self.y + self.height
    end

    # ボタンを押した時の処理
    def on_click(obj, tx, ty)
      # ファイル選択ダイアログを開いてみる
      filters = [
        ["画像ファイル(*.png;*.jpg;*.bmp)", "*.png;*.jpg;*.bmp"],
        ["すべてのファイル(*.*)", "*.*"]
      ]
      filepath = Window.openFilename(filters, "画像ファイルを選択")
      create_image_window(filepath) if filepath
    end

    # 画像を表示するウインドウを生成して画面に追加
    def create_image_window(filepath)
      img = Image.load(filepath)
      w, h = img.width, img.height
      bsname = File.basename(filepath)

      wdw = WS::ImageWithScrollBarWindow.new(@x_pos, @y_pos, 320, 240, bsname)
      wdw.set_image(img)
      WS.desktop.add_control(wdw)

      @x_pos += 32
      @y_pos += 32
    end
  end

  # 画像を表示するだけのウインドウクラス
  class ImageWithScrollBarWindow < WSWindow

    attr_accessor :image

    def initialize(*args)
      super
      @v_pos = 0
      @h_pos = 0
      @image = Image.new(512, 512)

      w, h = self.width, self.height

      # 縦スクロールバー
      vsb = WSVScrollBar.new(w - 20, 0, 16, h)
      client.add_control(vsb, :vsb)

      vsb.total_size = 512 + 16 # 全体サイズ
      vsb.shift_qty = 32 # ボタンを押した時に動く量
      vsb.view_size = client.height # 表示範囲

      # スライダーを動かした時の処理
      vsb.add_handler(:slide) { |obj, pos| @v_pos = pos }

      # 横スクロールバー
      hsb = WSHScrollBar.new(0, h - 20, w - 16, 16)
      client.add_control(hsb, :hsb)

      hsb.total_size = 512 + 16 # 全体サイズ
      hsb.shift_qty = 32 # ボタンを押した時に動く量
      hsb.view_size = client.width # 表示範囲

      # スライダーを動かした時の処理
      hsb.add_handler(:slide) { |obj, pos| @h_pos = pos }

      # 画像
      wsimg = WSImage.new(0, 0, 512, 512)
      wsimg.image = RenderTarget.new(512, 512)
      client.add_control(wsimg, :wsimg)

      # リサイズされた時の処理
      wsimg.add_handler(:resize) do
        wsimg.image.resize(wsimg.width, wsimg.height)
        hsb.view_size = client.width
        vsb.view_size = client.height
      end

      # マウスホイール入力時の処理
      wsimg.add_handler(:mouse_wheel_up) {  vsb.slide(-32 * 3) }
      wsimg.add_handler(:mouse_wheel_down) {  vsb.slide(32 * 3) }

      # オートレイアウトで画像表示部やスクロールバーを調整してもらう
      client.layout(:vbox) do
        # 縦方向に並べる
        layout(:hbox) do
          # 横方向に並べる
          add wsimg, true, true # 横サイズも縦サイズも可変
          add vsb, false, true # 横サイズは固定、縦サイズは可変
        end
        add hsb, true, false # 横サイズは可変、縦サイズは固定
      end
    end

    # 画像を設定
    def set_image(img)
      @image = img

      # スクロールバーに与える全体サイズ値を更新
      client.hsb.total_size = img.width + 16
      client.vsb.total_size = img.height + 16
    end

    # renderをオーバーライドすれば描画されるが、
    # drawをオーバーライドすると描画されない
    def render
      client.wsimg.image.draw(-@h_pos, -@v_pos, @image)
      super
    end
  end

end

Window.width, Window.height = 1024, 600

wdw = WS::ImageSelectWindow.new(8, 8, 200, 56, "ImageSelectWindow")
WS.desktop.add_control(wdw)

Window.loop do
  WS.update
end
scrollbar_test.png
一応表示できたように見える。たぶん。
スクロールバー.total_size に画像横幅、縦幅をそのまま与えると、画像の全てを表示できなかったので、勘で、16ドット加えた値を指定してみたり。それだと、画像が全て表示された。おそらく、縦スクロールバーの横幅が16ドット、横スクロールバーの縦幅が16ドットだったりするだろうから、その分を加えると合ってくれるのかなと。自信無いけど。もしかすると、スクロールバーの幅が16ドットになるとは限らない可能性もあるから、スクロールバーの幅を取得して、ソレを加えるような書き方をしたほうがいいのかもしれない。

最初、画像表示ウインドウの draw をオーバーライドしたのだけど、それだと画像が表示されなくて。rubima3.rb では、draw ではなく render をオーバーライドしてたので、それに従ってみたら画像が表示された。このあたり、自分は仕組みがまだ分かってないです。

ここまでメモってから気が付いたけど、 _lib/StandardGUI/scrollbar.rb の中に、WSScrollableContainer というクラスがある…。コレを使えばもっと短く書けるのだろうか。

2016/01/17() [n年前の日記]

#1 [pc] 親父さんPCのM/Bを交換した

親父さんPCのM/Bを、AMD A8-3850 + GIGABYTE GA-A75M-UD2H に交換した。

ケースは IN-WIN IW-BK623 なのだけど、省スペースなので、メモリがカバーにぶつかって収まらなくて。入らなくなるのでは、仕方ない。カバーをつけることは諦めた。冷却がどうなるか不安だけど…。

SSDに入ったWindows10 x64 は、HDDで実験した時と同様にちゃんと起動してくれた。SSDで動いてるせいか、「デバイスを準備しています」の表示も、HDDに比べるとあっという間に終わった。また、ネット接続できていれば、APU用のビデオドライバもネットからDLしてインストールしてくれる模様。

ただ、予想通り、ライセンス認証はされてない状態になった。親父さんにしばらく使ってもらって、不具合が無さそうならライセンス認証を、かな…。

DVD-Rドライブが使えないと報告が。 :

USB接続のDVD-Rドライブで、DVD-Rが焼けなくなったと親父さんから報告が。

焼きミスをしたDVD-Rを見せてもらったら、読み取り面に親父さんの指紋がべったりと。そのせいじゃないかな…。読み取り面に触らないようにドライブにセットして焼いてもらったら、フツーに焼けた模様。

安心してたら、今度はCD-Rが焼けなくなったという報告が。たしかに3枚ぐらい連続で失敗し続ける。親父さんは B's Recorder GOLD9 を使ってDVDやCDを焼いてるのだけど、そのせいだろうか…。Windows10に対応してないのかな…。いや、でも、DVDは焼けたんだよな…。どうしてCD-Rがダメなんだろう…。

そのドライブを自分のメインPCに繋いで、Windows7の標準機能でCD-Rを焼いてみたけど、フツーに焼けてしまった。となると、ドライブが壊れたというわけではナサゲ。

もしかして、Windowsの標準機能でCD/DVDを焼くと成功するのだろうか…? 明日試してもらおう…。

ちなみに、Windows XPの頃はCD-Rしか焼けなかったけど、Vista からDVD-Rも標準機能で焼けるようになってたのですな。恥ずかしながら今まで知りませんでした。

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

夕方、犬の散歩から帰ってきてから、自転車で買い物に。近所のホームセンター(ホーマック)、ヨークベニマルまで。

先日ホーマックで買った、首のあたりにつける防寒具を装備して犬の散歩や買い物に行ったのだけど。最初のうちは暖かくていいなと思ったものの、なんだか不安になってきた。体はフツーに寒いはずだけど、首を暖かくしてることで感覚がおかしくなって、なんだか無理をしちゃったり、ということはないのだろうか。

#3 [anime] 昭和元禄落語心中を視聴

落語家を主人公にした漫画原作のアニメ化作品、という説明でいいのだろうか。

BS-TBSの放送では、1話目は1時間放送してたのだけど。Wikipediaを確認したらOVA版2話分が存在していたようで。もしかするとTV放送の1話=OVA版2話分、だったのだろうか。よくわかりません。

たしか1話の、若手落語家が落語を演じてたシーンで、熱気を帯びてきた体から湯気が立ち昇ったり、尻や膝のあたりが汗でびっしょりになってたり、そういう見せ方をしていたあたりで唸ってしまったり。漫画原作にそういうコマがあったのか、それとも落語をテーマにしたドラマや映画でそういうカットがあって取り込んだのか分からんけど…。

演者の背中から薄暗い観客席を捉えてるからこそ、かろうじてうっすら見えてくる空気のゆらめき。観客席側からは分からないけど、楽屋裏から見ることで気づくことができる汗のかき具合。裏にカメラを置いたことで可能になる伝え方、なのだなと。こんな見せ方によく気づいたなと感心。考えてみたら、落語家の喋りや台詞は落語を演じることで既に使ってるのだから、後は視覚情報で伝えていくしかないんだよな…。「首から上さえ描けてればいいだろ」と業界人自身が言っちゃうぐらいにアレな作りが多いアニメ業界の中で、ちゃんとこういう描写を試みるあたり、真摯に作られてる作品なのだろうと感じてしまったり。

1話では、師匠キャラを演じる石田彰氏が、師匠と呼ばれるに相応しい上手な落語を演じて見せてたのだけど。2話目・過去の回想編になると、若い頃の師匠が無残な前座を披露していて。惚れ惚れする落語と、聞くに堪えない落語の両方を、一人で見事に演じ切っているあたりに、なんだかゾクゾクしてしまった。昔、若手声優さんの中には石田氏の演技を見て衝撃を受けて声優を目指した人も居るとどこかで聞いた記憶もあるけど、たしかにコレは…凄い…。

そして直後に、師匠キャラのライバルを演じる山寺宏一氏が、豪快、大胆、天賦の才を感じさせる落語の演技を披露するわけだから…。これはとんでもないアニメだなと。声優さん達の技の凄さを再認識させられるというか。

そもそも落語は、一人の話者が、複数のキャラを演じることで成り立つわけで。そこに上乗せする形で、ベテラン時代の上手い演技と、駆け出し時代の下手な演技を、声優さんが披露しなければならないという…。2進数で考えれば、上位ビットが1ビット増えちゃった状態。単純に、演じるキャラの数が2倍になったも同然で。しかもこの後、おそらくは徐々に上達していく様子も見せていくのだろうから…。

音楽と落語の違いはあれど、「坂道のアポロン」「響け!ユーフォニアム」等がチャレンジしてた、「本物を見せれば、それだけで視聴者に十分伝わるはず」てな姿勢を感じたというか。これはかなり高度なことをしてる作品ではあるまいか。

さておき。1話も2話も熊谷脚本だったので、個人的にちょっとビックリ。SFっぽい作品が得意な脚本家さんとばかり勝手に思い込んでいたので、こういうジャンルもイケるなんて幅広く書ける方なんだなと…。この調子でゆくゆくはプリキュアを…いや、なんでもないです。

2016/01/18(月) [n年前の日記]

#1 [pc] Windows10 x64上でCD-Rが焼けなくてハマった

親父さんPC、Windows10 x64機で、CD-Rが焼けなくて悩んだり。

スペックは…。 CD-Rの書き込みは、Windows標準機能で試したり。

積んでる光学ドライブは、てっきり親父さん自身が買ってきた _IO-DATA DVR-AN18GLVB だと思い込んでたけど、 _2010/07/19 の日記に、IO-DATA DVR-AN20GL (Sony Optiarc AD-7203A) とメモしてあった。…すると、DVR-AN18GLVB は、家の中のどこにあるんだろう。まあいいか。

症状としては…。親父さんのPC = Windows10機で、USB接続外付けケースに入れたIDE接続のDVDドライブを使ってCD-R書き込みを行うと、プログレスバーが最後のあたりまで伸びかかったところで、
ディスクへの書き込み中に問題が発生しました

ディスクは正常に書き込まれませんでした。コンピューターを再起動して、再試行してください。
と表示されてしまう。みたいな。

CD-Rの中身はちゃんと焼けてない。ファイル管理領域だけは焼けてるのか、ファイル一覧は見れるけど、ファイルを開こうとすると中身が読み取れないとエラーが出たり、エクスプローラが固まったり。昨晩から5〜6枚ほど、速度を変えて試してみたり等してるけど、全部失敗。

しかし、DVD-Rならフツーに焼けてしまうわけで…。CD-Rだけが焼けない。なんでや。

また、自分のメインPCに接続して試したら、フツーにCD-Rが焼けてしまった。つまり、DVDドライブが壊れているわけではナサゲ。

そうなると…。 どれなんだろう…。

親父さんPCにインストールされている B's Recoreder GOLD9 が何か悪さをしているのではないかとアンインストール・OS再起動をしてみたけど、症状は変わらず。

試しに、 _ポータブルDVD-Rドライブ IO-DATA DVRP-U8XLE2 を親父さんPCに繋いでCD-Rを焼いてみた。…アレ? これだと焼けてしまった。一体どうなってるんだ。

とりあえず、親父さんPCに、IO-DATA DVR-AN20GL + サイズ 鎌蔵2 5IDEを接続すると不具合が起きることは間違いないので…。仕方ないから、しばらくはポータブルDVDドライブを使ってほしい、という話に。 *1

しかし、どうして、大きいほうの光学ドライブでは不具合が起きるのか…。

電源が弱まっているのかなあ。しかし…。 となると、電源ではないよな。たぶん。

USB周りで何か不具合が…。しかし…。 となると、USB周りでも無さそうな気がする。たぶん。

仮想PC上のWindows10 x64 で試してみた。 :

VMware Workstation 12 Player + Windows10 x64 Enterprise 評価版に、USB接続で AD-7203A を繋いで CD-Rに書き込みできるか試してみた。

エラーが出た。48倍速のみならず、8倍速で焼いてみてもダメ。エクスプローラ上から「取り出し」もできない。

ホストOSの Windows7 x64 で焼いてみた。やっぱり、Windows7なら、CD-Rを焼けるなあ…。

Windows8.1で焼いてみたらどうなるだろう。VMware Workstation 12 Player + Windows 8.1 x64 Enterprise評価版で、CD-R書き込みができるか試してみた。

これも Windows10 と同様に、最後のあたりでエラーが出た。取り出しができない云々のエラーメッセージが表示されて、そのうちタイムアウトになるのか、関連ウインドウが閉じてしまう。

VMware上で試してるからエラーが出たのか、それとも Windows 8.1以降では軒並みエラーが出るようになったのか…。これじゃよくわからんな…。

IDE接続のDVDドライブを、USB接続の外付けケースに入れて使ってるから問題が出ているのだろうか。VMware Workstation 12 Player では、光学ドライブの型番ではなく、Cypress USB Mass Storage Device と表示されてるし…。Cypress製の変換チップが Windows 8.1 や Windows 10 に対応していないとか? いや、Windows8.1 や Windows10 が対応してないと言うべきだろうけど。

実機に直接IDEで接続して試すだけの気力はないな…。手持ちのCD-Rも5〜6枚ほど無駄にしちゃってるし。それも太陽誘電の日本製を謳うCD-Rですよ。残り3枚になっちゃったよ…。

ググってみると、Windows10は、光学ドライブ関係の不具合が結構あるみたいで。外付けならともかく、PC本体付属の光学ドライブが使えなくなった、てな事例も見かけて、それはあまりにあんまりだ、酷過ぎると思えてきたり。USB接続の外付けDVDドライブが、今では3,000円ぐらいで入手できるとか、(CD|DVD)-Rを焼く場面がめっきり少なくなってる等あるにしても、今まで使えていたものがWindows10にしたらなんで使えなくなるの、てな不満はあるよなと。

一応ドライババージョンのスクリーンショットをメモ。 :

役に立つとは思えんけど一応メモ。

_Windows 10 + AD-7203A
_Windows 8.1 x64 + AD-7203A
_Windows 7 x64 AD-7203A

Windows7 だけ、他にもドライバが入ってるみたいだけど、ググっても各ファイルの正体が分からなかった。Intelチップセットを使ってるM/Bだから、Intelの何かじゃないかと思うのだけど…。

*1: このポータブルDVDドライブは、本来、ノートPC用に確保したドライブなので、親父さんPCのところに置きっぱなしにするのは若干不満もあるのだけど。しかし今時、親父さんも、自分も、光学ドライブを使う場面はほとんど無いし。自分がノートPCを外に持ち出す時や、何かをセットアップしなきゃいけない時だけ、親父さんPCのところから回収する感じでもなんとかなるかな、てな予感も。

#2 [nitijyou] 雪が積もった

結構積もった。雪だるまを作れるレベル。

体調悪い。 :

起きたらどうも体がだるくて。歯医者の予約を入れていたのだけど、申し訳ないけどキャンセルさせてもらった。以前、こんな感じの体調の時に無理して歯医者に行って治療してもらったら、そこから数日は原因も分からずグッタリしちゃったので…。こういう時は、無理をしないほうがいい…。いや、歯医者さんの受付の方は、「こんなに雪が積もってるからキャンセルしたんだな」とか思ってそうだけど。

2016/01/19(火) [n年前の日記]

#1 [nitijyou] 体調が少し復活

昨日の夕方頃から喉のあたりがイガイガしてきて、これはちょっとマズいなと。一日中布団の中で横になって休んでみたら、夕方頃になんとか復活。

#2 [pc] 足元のPCを入れ替えた

今までPCデスクの足元に、旧メインPC(MicroATXケース)を置いてたのだけど、正月に弟が持ってきてくれたATX機と入れ替えてみたり。旧メインPCのCPUは Core2Duo E8400だけど、ATX機は Core2Quad Q9550 だから、どうせなら性能の高いほうを足元に置いといて動かせるようにしといたほうがいいだろうと。旧メインPCは、動作がなんだか怪しいところもあるし。

でも、使い道が無い。

誰か貰ってくれないものか。しかしWindowsは入ってないし、前面パネルを固定する棒が折れてるから変なものでくっつけてあるし…。中古パーツとして売ってみても全部で500円で売れればいいほうで、下手すると買い取り拒否だし。…自分で何か使い道を探すしかないか。

ATX機の消費電力を測ってみた。 :

ワットチェッカーでATX機の消費電力を測ってみたけど、アイドル状態で160W前後。サクサク動くと言っても、これはちょっと…食い過ぎじゃないのか…でもないのかな…。

Ubuntuを入れて動かしてるけど、Ubuntuって省電力設定はないのかな。ググってみたら、laptop-mode-tools とか tlp とかその手のツールがあるらしい。もう少し調べてみないと。

BD-RドライブとUSB3.0増設ボードの型番を調べた。 :

ATX機の構成パーツの一部を把握してなかったので、ケースを開けて確認。
  • BD-Rドライブ: Pioneer BDR-203BK (SATA接続, 12=V1.0A, 5V=1.4A)
  • USB3.0増設ボード: PLANEX PL-US3IF02PE (Renesas uPD720200F1 使用品, PCI Express x1(Rev.2)接続)
BD-Rドライブは、M/Bの Intel ICH10R側のSATA端子に接続すると何故か起動しないらしい。M/Bに追加された別のSATAチップ側に接続すれば使える、との話。それと、BD-RだかDVD-Rだか何か特定のメディアが書き込めない、との話も聞いた。とメモ。

USB3.0増設ボードに積んであったコントローラは Renesas uPD720200 だった。弟には悪いけど、これはゴミボードだな…。uPD720201 や uPD720202 はともかく、uPD720200は、人柱チップ…。どうにか使えないものかと色々試したのに安定動作しなくて途方に暮れたから分かる。このコントローラは使い物にならない。USB3.0で苦労したくないなら、後継チップを使ってる品に買い替えたほうがいい…。

2016/01/20(水) [n年前の日記]

#1 [ubuntu] Ubuntuを入れたATX機のセットアップをアレコレ試してたり

Ubuntu 14.04LTS を入れたPCに対して、色々試した。

tlpをインストールして試したり。 :

Ubuntu Linux に tlp なるソフトを入れると省電力設定にできるらしいので入れてみたり。

アイドル状態で、160Wが140Wぐらいになってくれた。たしかに効果があるっぽい。けど、それでも140Wも使っちゃうのか…。

その後ググっていたら、どうやらビデオカードに AMD/ATI Radeon を使っていて、かつ、オープンソース版ドライバを使ってる場合は、常時電力を食いっぱなしになる、という話を見かけたり。

AMDが提供してるクローズドソースのドライバを使えれば省電力にしてくれるらしいけど、AMD提供ドライバは比較的新しいビデオチップしかサポートしてないそうで。今回 Ubuntu を動かしてるATX機には、ATI Radeon HD 4850 が載ってるビデオカードを積んでいる ―― Radeon HD 4850 は、GeForce 9800 GTX+ と同時期のビデオチップだから、結構古い。おそらくAMD提供ドライバは非対応のはず。

てなわけで、これはビデオカードが電気を馬鹿食いしてるのかなと。

ATIビデオカードのドライバを入れる方法が分からない。 :

Ubuntu 14.04 に、ATIビデオカードのドライバをどうやって入れたらいいのか…。aptitude search ati とか打ってみたりして眺めてたけど、どうも xserver-xorg-video-ati なるパッケージがそれっぽい。が、インストールしようとすると「依存関係が」「競合が」と言われてインストールできなくて。

_UbuntuTips/Hardware/RadeonDriver - Ubuntu Japanese Wiki を眺めると、「最新のUbuntuは、ATIドライバに対して特別な設定は要らんよ」と書いてあるけど。ATIドライバが使われてるかどうかは何でチェックすればいいのやら。lspci | grep VGA で、以下の表示になるから、既に使われているのだろうか…? どうなんだろう?
$ lspci | grep VGA
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RV770 [Radeon HD 4850]

ログイン画面の設定でハマったり。 :

Ubuntu 14.04 にVNC(vnc4server or tightvncserver)をインストールして、Windows7 x64 + UltraVNC からアクセスしてGUI画面を出そうと試みていたのだけど。その関係で LXDE だの lubuntu-desktop だの入れて弄ってたら、Ubuntu のログイン画面が Lubuntu のソレから元々のUbuntu標準のソレに戻せなくて悩んだり。

おそらく、ログイン画面のソレは、Ubuntu標準の lightdm から lxdm になったのだろうなと。であれば、sudo dpkg-reconfigure lxdm とか打てば切り替えられるんじゃないかな。などと思い込んでいたのだけど。sudo dpkg-reconfigure lxdm と打っても、「lxdmなんてインストールされてないですけど?」と言われてしまう。インストールされてないならインストールしてやろうじゃないか、と、sudo aptitude install lxdm 等を打ってインストールしてみたら、sudo dpkg-reconfigure lxdm で切り替えられるようにはなった。と思ったが、画面の見た目が切り替わってる気配が無い。おかしい。

ググってたら、以下の記事に遭遇。謎が解けた。

_lightDMの設定: たわごと

  • lightdm は見た目を結構自由自在に変えられるヤツらしい。
  • なので、Ubuntu とか Lubuntu とか Kubuntu に合わせて、lightdm はログイン画面の見た目を変えてしまうのだとか。
  • 自分はてっきり、lxdm でログイン画面が表示されてると思ってたけど。実はずっと lightdm が、ちょっと lxdm のふりをしてみた画面を表示してたっぽい。たぶん。
  • そして、lightdm の設定が書き換えられて、lxdm風の画面を表示する設定になってしまっていたから、lightdm に戻してみても見た目がさっぱり変化しなかったのだな…。

巷の解説記事によると、/etc/lightdm/lightdm.conf というファイルがあって、そこを書き換えれば見た目を変更できるらしいけど。lubuntu-desktop をインストールしてしまった自分の環境では、そのようなファイルは見当たらず。その代り(?)、/etc/lightdm/lightdm.conf.d/20-lubuntu.conf というファイルがなんだか関係してそうで。中身は以下。
[SeatDefaults]
user-session=Lubuntu

試しに、/etc/lightdm/lightdm.conf.d/20-lubuntu.conf の最後に、以下の一行を追加してみた。
greeter-session=unity-greeter

Ubuntuを再起動してみたところ、Ubuntu標準のログイン画面の見た目になってくれた。これで合ってんのかなあ…? わかんねえなあ…。

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

Ubuntu 14.04LTS を使ってはみたものの、なんだかパッケージが古いあたりが気になってきて、せっかくだから最新の15.10を入れてしまおうか、多少は違ってくるだろ、てな気分に。

_Ubuntu日本語Remix版 のISOをDLして、 _UNetbootin でISOの内容が入った起動可能なUSBメモリを作成。そのUSBメモリで起動して、HDDの中身を Gparted で削除。HDDにUbuntuインストール。

とりあえず、ssh と samba と aptitude と _synaptic ぐらいをインストール。ssh でログインすれば、Windows上から Ubuntu の設定作業ができるし。samba を入れておくことで、WindowsからPC名(NetBIOS名?)でアクセスできるようになるはず。

sshでログインできない。 :

Ubuntu 15.10 をインストールしてみたけど。Windows7 x64 + PuTTY から、sshでログインできないことに気が付いた。なんでや…。

Windows から ping hogehoge を打ってみた。反応がちゃんと帰ってくる。ということは、PC名でアクセスできなくて ssh ログインできない、と言うことではナサゲ。

15.10あたりはファイアウォールが動く設定になってるのかなと ufw のあたりを確認してみたけど。ファイアウォールを動かさない設定にしても PuTTY は無反応なので、これでもナサゲ。

実はポートが開いてないのかと、Windows側に Nmap をインストールしてポートスキャンしてみたけど、開いてるように見える…。

_ポートスキャンツール「Nmap」を使ったセキュリティチェック - さくらのナレッジ

なんでsshが使えないのじゃ。

2016/01/21(木) [n年前の日記]

#1 [pc] Ubuntu 15.10のセットアップ中

ATX機に Ubuntu 15.10 をインストールしてアレコレ設定中。

PuTTYからsshでログインできない原因が分かった。 :

Windows7 x64 + PuTTY で、Ubuntu 15.10 + ssh にログインできなくて無反応になる問題。その後、もうちょっと調べてみたら…。
  • WindowsのDOS窓で実行できる ssh (msysに入ってたっぽい)で試したらログインできてしまったので、サーバ側ではなくてPuTTY側に問題があるなと。
  • PuTTYから、他のLinux機にはsshでログインできたから、PuTTYそのものがおかしいわけじゃないなと。
つまり、ATX機に対する設定だけが、何かおかしくなってるのだろうと。

色々ググってたら、以下のページの内容がドンピシャだった。ありがたや。

_OpenSSH サーバを更新したら PuTTY で接続できなくなったときの対策

接続 → SSH → Kex → アルゴリズム選択ポリシーで、Diffie-Hellman group exchange を一番下にすることで、Ubuntu 15.10 + ssh にログインできるようになった。

その後もググってたら、PuTTYはレジストリにアレコレ記録していて、ソレを使ってアクセスしようとして無反応になってる、ということらしいと分かってきた。アルゴリズム選択ポリシーを変えることで、そのアレコレを一旦作り直すということなのかなと想像。

_SSHの鍵を新しくしたら接続できなくなった【PuTTY】 | ユニキャストラボ
_SSHサーバーの公開鍵の指紋(finger print) - Linux入門 - Webkaru

_PuTTY FAQ に、putty.exe -cleanup で設定を消せると書いてあったので、接続時のソレだけを消してくれるのかなと試してみたら、何もかも全ての設定が消えてしまった。これはあかん…。バックアップしておいた設定を書き戻したり。

tlpをインストール。 :

tlpは、省電力設定ができるツール。Ubuntu 14.04LTSでは、リポジトリを追加しないとインストールできなかったけど。Ubuntu 15.10 からは公式リポジトリ(?)に入ったらしい。sudo apt-get install tlp でインストールできた。

xrdpをインストールして試したり。 :

Linux機のGUI画面をWindows上で表示して、アレコレ設定作業をしたい。そういうのをリモートデスクトップと呼ぶらしいけど。メジャーなのは VNC だろうか。一応、Ubuntu 15.10 上に、tightvncserver、lxde、lubuntu-desktop をインストールして、Windows側には UltraVNC をインストールして、VNC が使えるようにはしてみたけれど。

ただ、VNC は、音声までは転送してくれない。音声も転送してくれる何かは無いのかなと。

ググってみたら、Windowsのリモートデスクトップ接続に対応させる xrdp というものがあるらしい。Ubuntuの公式リポジトリに入ってる版は古くて音声の転送まではできないらしいけど、自分でソースその他を持ってきてコンパイルだかビルドすれば音声も転送できるようになるそうで。

_さくらのVPSにリモートデスクトップで接続しローカルで音声を出力する方法 - 約束の地

ちょうど15.10環境で導入する解説記事だったので、そのまま習って導入してみたり。ただ、自分の環境では、いくつか足りないパッケージがあったようで。「○○がねえよ」とエラーが出るたびにインストールしていったから覚えてないけど…。たしか、libtool、autoconf、automake、libjepg-dev、あたりをインストールしてから試したら .deb が出来上がってくれた、ような気がする。たぶん。

Windows7 x64 のリモートデスクトップ接続でアクセスしてみたら、画面も出てきたし、音声も聞こえた。素晴らしい。

が、しかし、考えてみたら Ubuntu機は足元に置いてあるわけで。音を聞きたかったらヘッドフォンでも差せばいいんだよな。うーん。まあ、部屋の隅に置き直すことも可能になったというか、電源とLANケーブルさえ届けばなんとかなりそうな状態になったと言えそうではあるけど。

それはともかく、リモートデスクトップ接続なら音が聞こえるけど、実機からは音が出なくなった。うーん。まあ、実機で音を聞くことが今後あるかと考えたらたぶん無いだろうけど。

LXDEで使える端末エミュレータを少しググった。 :

LXDEには LXTerminal という端末エミュレータが用意されているのだけど、コイツは色の設定ができないので、画面がちょっと見づらくて。代わりに使える端末エミュレータを少し探したり。

_LXDE | シキノート という記事の中で、guake なるものが紹介されていたので試してみたり。起動するとLXDEのタスクトレイ(?)にアイコンが表示されて、F12キーを押すと画面の上半分を占有する形で出現する。タスクトレイのアイコンを左クリックすればメニューが開いて「設定」を選べるので、設定ウインドウで色の変更等ができる。

F12キーを押すだけでビローンと出現するのはイイ感じだけど、何かこう…LXTerminal みたいな表示のソレのほうが好みと言うか…。

_lubuntu - Changing the colors of lxterminal - Ask Ubuntu の中で、「LXTerminalで色を変えられないかな?」「それはやらないと作者さんが明言してるから無理」「軽いのが欲しいなら xfce4-terminal とかどうよ」と書かれていたので、xfce4-terminal を導入してみたり。…なるほど、これは結構イイ感じ。

2016/01/22(金) [n年前の日記]

#1 [ubuntu] Ubuntu15.10のWOL設定でハマった

Ubuntu15.10をインストールしたATX機に対して、せっかくだからWOLを ―― Wake On LAN を有効にしてみようかと。

_Wake On LAN は、LAN経由でマジックパケットを送るとPCの電源を入れてくれる機能。離れた場所にPCを置いてある場合、PCのところまで足を運んで電源ボタンを押さなくて済むから便利。

M/Bは、 _GIGABYTE GA-EP45-UD3R 。Intel P45 + Intel ICH10R を使用。

結論だけ先に書いておくと、sudo ethtool eth0 (sudo ethtool enp4s0) の出力結果の Wake-on: d をどうにか Wake-on: g にしなくてもWOLが有効になってる場合もあるっぽい。何が何でも g にしてやらねば的に苦労しなくてもどうにかなるようで。このM/B特有の状態なのか、Ubuntu 15.10 ではそういうこともあるのか、よくわからんけど。

作業手順。 :

M/BのBIOSで、WOLを使えるようにしておく。GIGABYTE GA-EP45-UD3R の場合は、以下が参考になった。たぶん PME Event Wake Up が Enable ならOKなのかなと…。どうなんだろう。

_価格.com - 『WakeUp LAN(Powe On by LAN)できますか?』 GIGABYTE GA-EP45-UD3R Rev.1.0 のクチコミ掲示板

Ubuntu を起動。NIC ( = Network Interface Controller、ネットワークカードと思っておけばいい)の一覧を表示して何が積んであるか確認。
ifconfig
一般的には、ここで eth0 と lo の2つが表示されるものと思っていたのだけど。自分の環境では、何故か eth0 ではなく enp4s0 と表示されて。何だコレ。

ググってみたところ、最近の Linux は起動してる最中に、udev なるものが eth0 の名前を変えてしまうみたいで。

_ほげめも: Debian vs Ubuntu: ネットワークインタフェースの名前

もし、勝手に名前を変えられると色々面倒、ということなら、Linux起動時の指定で名前変更しないようにもできるらしい。sudo vi /etc/default/grub で GRUB_CMDLINE_LINUX_DEFAULT= に
biosdevname=0 net.ifnames=0
を追加してから保存して、sudo update-grub2 で grub の設定を反映。再起動。自分の場合、最終的にはそのようにしてしまった。

ethtool なるものがあれば、NIC の WOL状態の確認、WOLの設定ができるらしい。
sudo apt-get install ethtool

NICの設定状態を見る。
sudo ethtool eth0
(自分の環境では sudo ethtool enp4s0)
出力結果の中で、 WOLに関係がありそうな行は以下の2行。
        Supports Wake-on: pumbg
        Wake-on: d
Supports Wake-on に、その NIC で利用可能なWOL関係の機能が列挙されているらしい。
上記の値はどのアクティビティが動作するかを定義しています:
d (無効),
p (PHY アクティビティ),
u (ユニキャストアクティビティ),
m (マルチキャストアクティビティ),
b (ブロードキャストアクティビティ),
a (ARP アクティビティ),
g (マジックパケットアクティビティ)。WOL を使うには g が必要です。

Wake-on-LAN - ArchWiki より


そして、Wake-on が d ということは、WOLが無効になってるということで。

ethtool で WOL を有効にする。
sudo ethtool -s eth0 wol g
(sudo ethtool -s enp4s0 wol g)
これをしてから sudo ethtool eth0 で確認すると、Wake-on: g になってくれた。

で、OSを再起動するたびに、この設定は元に戻っちゃうから、OS起動時にこの設定をやり直す何かが必要だよ、ということになっていて。どんな方法があるかは以下を参考に…。

_debian で wake-on-lan (WOL) を有効にする方法 - ぴょぴょぴょ? - Linuxとかプログラミングの覚え書き -
_wakeonlan - WOL stops working after booting Ubuntu - Ask Ubuntu
_Wake On LAN via Ubuntu Linux | Blog
_Ubuntu 15.04のサーバをWake on LANできるようにした - YAMAGUCHI::weblog
_Wake-on-LAN - ArchWiki

列挙すると…。
  • /etc/network/if-up.d/wake-on-lan を書く方法。
  • /etc/init.d/wakeonlanconfig を書く方法。network-manager をアンインストールして、自分で全て設定してやる必要有。
  • /etc/udev/rules.d/50-wol.rules を書く方法。udevの名前変更を捉えてWOL設定をする。
  • /etc/network/interfaces で指定する方法。

しかし、色々試してみたけれど、OS再起動すると Wake-on: d に戻ってしまう…。

結局、Wake-on: g になってくれたのは、 _wakeonlan - WOL stops working after booting Ubuntu - Ask Ubuntu で紹介されてる方法、かつ、スクリプトの中身をそのまま使った場合だけで。 *1

ところが、この状態だと、シャットダウン(sudo shutdown -h now)した後、マジックパケットを送ってもPCが起動してくれない…。

また、/var/log/messages を出力するように設定、かつ、各スクリプトに logger でメッセージを残すように修正して確認したところ、if-up.d を使ったソレは処理が2回呼ばれてるようで、そこもなんだか気になる…。

結局、WOLが使えるようになったのは、/etc/init.d/ に wakeonlanconfig というスクリプトを書く方法。 *2
sudo vi /etc/init.d/wakeonlanconfig
sudo chmod a+x /etc/init.d/wakeonlanconfig
sudo update-rc.d -f wakeonlanconfig defaults

この方法だと、OS再起動後に sudo ethtool eth0 をしても、Wake-on: d と表示されてしまう。なのに、sudo shutdown -h now をしても、マジックパケットを送ればPCの電源が入ってくれる。なんでや。

これは勝手な想像だけど、Wake-on: d と表示されていても、実はWOLが有効になってる場合もあったりするのではないかと。

あるいは、ひょっとすると、シャットダウンするタイミングで、何かがWOLを有効にしていたりして…? 何がどうなっているのやら。

Ubuntuの場合、NetworkManagerとやらがアレコレしているらしいのもアレで。ググった感じでは、このあたりの設定をするなら network-manager をアンインストールして作業するのが鉄則、のような雰囲気も。/etc/network/ 以下にアレコレ書いても、NetworkManager が全部台無しにしちゃうらしくて。

まあ、とにかくさっぱり分からんです。なんでコレで動いて、アレでは動かんのだろう…。

それにしても、コレもまた、ATX機は足元に置いてあるんだから足で電源ボタン押せばいいだろ、てなところもあって。自分、何やってんだか。

*1: _debian で wake-on-lan (WOL) を有効にする方法 - ぴょぴょぴょ? - Linuxとかプログラミングの覚え書き - で紹介されてるスクリプトの中身だと上手くいかないという…。$ETHTOOL や $IFACE を「"」で囲んでるぐらいしか違いは無いはずなのに…。
*2: ちと気をつけないといけないっぽいのが、このスクリプトが呼ばれた後で、udevがeth0をリネームしてるっぽいことで。ということは、enp4s0 ではなく、eth0 を指定しておかないといけないのだろうか…。このあたりが面倒臭くなってきたので、udev がリネームしないような設定をしちゃったのですが。

#2 [anime][zatta] ノラガミでアウトだったBGMが気になる

BSフジで放送されていた「ノラガミ」というアニメが、なんでもBGMの中にイスラム教信者から攻撃されそうなコーラス部分があったということで途中で放送中止になってしまって。代わりに、残りの話数をBS11で先日放送してくれたのですけど。

個人的に、その、アウト扱いされたというBGMのコーラス部分ってのが、ビミョーに気になっていて。どういう言葉が聞こえたらアウトなんだろう…。

ソレっておそらく音楽作ってる人なら全員知っておいたほうがいい情報なんだろうけど。この部分がヤバい、という情報が全然公開されてないというか、むしろ情報を必死に隠蔽し続けてる節があるので、かえってマズいんじゃないかなと。そのうちまた同じことを知らずにやってしまうミュージシャンが出てきて、その都度、面倒なことになるのではないか、と…。

でも、アレかな。下手にそのあたりを公開すると、「この曲でも使ってた」「こっちの曲でも使ってた」と無意味に探し出す輩が出てきちゃって、もっと面倒なことになるから、ここは隠しておいたほうが、という話にでもなっているのだろうか。イスラム教関連ワード警察、ですか。そういう暇人が湧いてきそうだよな…。

しかしなあ…。じゃあ、イスラム教で使ってそうな言葉は全部アウトなのか、てのも気になるところで。なんだかエロマンガ島の事例や、寺院の地図記号がナチスのマークに見える云々の事例を思い出したりもするわけで。たまたま別の場所で、偶然同じモノが出現してしまった場合、それも全て攻撃の対象になるのか、攻撃されて当然なのか、みたいな。

日本人ならエロマンガ島に対して「島の名前を変えろ!」と抗議しなきゃいけないのか。抗議するほうがおかしいよな…。

でも、「ノラガミ」のBGMのソレは、意味は分からんけど音の響きがイイ感じだから、みたいなノリで使ったのだろうから、またちょっと違うだろうし。自分で _ハナモゲラ を歌ってたら偶然似た言葉になった、という経緯であれば、違う扱いをするのが妥当なのだろうか。

_ちびくろサンボ発売禁止問題 とか _悪書追放運動 とか _君が代斉唱拒否問題 なども思い出しちゃって、なんだかもやもや。と、メモ。

2016/01/23() [n年前の日記]

#1 [nitijyou] 犬小屋に少し手を入れた

真夜中に犬が悲鳴のような鳴き声を上げて、その後もワンワンと吠えてうるさくて。鳴くのは何か理由があるのだろうけど…。もしかして、寒さが厳し過ぎて、なのだろうか。

てなわけで、午前中に犬小屋を少し改良。になってるかどうかはわからんけど。風が吹き込まないように、100円ショップで買ったアルミシートっぽい何かを2枚、犬小屋を巻いてとりあえず養生テープで止めていって。これで西風に対しては多少効果が期待できる…はず…。

一応、犬小屋の中に毛布やバスタオルっぽいものは入れてあるのだけど。犬が必ず犬小屋の外に押し出してしまうわけで…。毛布等をチェックしたら、どうも犬の血が付いている。これはもしかすると、毛布等に凶悪なダニがついてて、血を吸いまくって、それで犬が嫌がって外に出してしまう、ということなのだろうか。だとしたら、犬小屋にこの毛布等を入れておくわけにはいかないな…。代わりに、ダンボールを何枚か犬小屋の床に敷いてみたり。直接板張りの上に居るよりはマシだろう…。

さすがにダンボールではアレなので、夕方頃、近所のseriaに行って、ジョイントマットの類を購入。アルミシートが貼ってあるモノを2枚、コルクが貼ってあるモノを2枚、プラス、滑り止めの網っぽい何か。アルミシートのマットの上にコルクマットを両面テープで貼り付けて、一番下には滑り止めの網っぽいソレを両面テープで仮止めして、30cm x 60cm の敷物っぽい形にして。薄いとは言え、四層構造、2cm近い厚みになってるから、ちょっとは違うだろう…。手で触ってる分にはなんだかちょっと暖かさが違う、ような気はするのだけど、実際はどうかなあ…。

犬小屋の床の大きさを測ってみたら、40cm x 60cm だった。ジョイントマットを敷き詰めるとしたら、あと2枚 x 2種類を買ってきて、切り刻まないとダメだな…。

2016/01/24() [n年前の日記]

#1 [windows] Windows10が夜中に勝手に起動する

数日前に親父さんから、親父さんPCが夜中の12:00頃に勝手に電気がついている、と不具合報告が。イベントビューアで見てみると、たしかに00:00頃から電源が入ってる。なんだコレ。何のプログラムが電源を入れてるのか、ログを見ても分からない…。

とりあえず、以下の記事を参考にしてアレコレ設定を変更。

_Windows10が夜中に勝手にスリープ復帰する場合の解決法
_Windowsでスリープ・休止状態・スタンバイなどの状態が勝手に解除されてしまう現象の回避方法 - 結果だけでなく過程も見てください


しかし、相変わらず、00:00頃に電源が入ってるようで。

とりあえず電源のオプションで、アイドル状態が20分続いたらスリープさせる設定にしておいたり。コレで、勝手に電源が入っていても、そのうちスリープになってくれるだろうから、それほど気にしなくてもいい状態にはなってくれるはず。なってくれるといいな。

#2 [nitijyou] 犬小屋のマットが一日も持たなかった

昨日、板張りよりはマシだろうと犬小屋の床に敷くマットを作ったのだけど。朝方は犬もおとなしくマットに乗ってたのを確認したものの、親父さんの話では夜にはかじってボロボロになってたとの話で。

段差があったからかじりやすかったのだろうか…。爪でひっかくとコルクが剥がれて面白かったのだろうか…。何にせよ、これでは寒さが床から直接伝わってしまうはず。さすが畜生…。

直接触れる部分が木の板じゃないとダメなのかなあ…。しかしそれでは冷たいだろうに。考えてみたら、犬小屋の入り口もガリガリと齧ってしまっているから、床も齧れそうな形になってたら、木の板だろうとフツーに齧りそうな気がする。

2016/01/25(月) [n年前の日記]

#1 [nitijyou] 犬が真夜中に鳴き始めて困ってたり

飼ってる犬が、夜中の01:00とか03:00頃に「クゥンクゥン」→「ワンワン」と鳴き始めて困っていたり。一応、トイレではないのかと庭の特定の場所で小さいほうはさせてるけど。その後も全然鳴き止まない…。

親父さんは、発情期になってるのではないかと言うけれど。自分は、寒さが厳しくて鳴いているのではないのかと。何せ外の気温がマイナス3度とかだし…。

しかし、小屋の中に引いた毛布は全部外に出してしまうし。小屋に頭を突っ込んで、前足をシャカシャカ動かして毛布を外に出してしまう。長いままだから邪魔と感じるのかとハサミで切れ切れにして入れてみたけど、やっぱり出す。昼間ひなたぼっこ等するときは、その毛布の上に座ってるのに…。わけがわからない。

小屋の入口に、テーブルクロスを切って暖簾のようにしてぶら下げてみたけれど。これで少しは入口から寒い風が入ってこなければいいのだけど…。

小屋の床下にも、発泡スチロール、というかスタイロフォームなるものを切って貼ってみたり。これで直接、下のコンクリートからの冷気が防げればいいけど。

一応、柴犬の血は入ってるので、寒さには強いほうかと思っていたけど。調べてみた感じでは、柴犬はダブルコートなる、毛が二層になっている状態らしくて。ウチの犬の毛は、どう見てもそういう感じの、もこもこ感は無い…。たぶん、寒さに強くない系の犬種の血が強く出ちゃった個体じゃないのかと…。

2016/01/26(火) [n年前の日記]

#1 [nitijyou] やっぱり犬が鳴く

今日も、夜中の01:00頃や03:00頃に犬が鳴き始めて。床下の発泡スチロールの効果が無いということだろうか…。一応、ペットボトルにお湯を入れて小屋の隅に置いてあるから、中は外より暖かくなってるはずなのだけど。

よくわからないのが、頑として小屋の中に入ろうとしないこと。抱えて入れようとしても、すぐに出てきてしまう。寒くない、ということだろうか。にしては、ガタガタ震えてるようにも見えるし。小屋の中にトラウマになりそうな何かがあるのか…。しかし、毛布やペットボトルも外に出してみても、それでも入ろうとしないし…。虫でも居るのか。蜘蛛がウロウロしてるとか。ノミやダニが居て痒いのだろうか。あるいは、単に遊びたいだけか。親父さんの言う通り、発情期で、とにかく外に出ていきたいのだろうか。発情期って春や秋じゃないのかと。今は冬なのに。

いかんせん夜中なので、何か実験しようにも、暗くてどうしようもなく。しかし昼間は小屋の中にフツーに入るし…。もう、わけがわからない…。

ググった感じでは、一般的にはせめて寒い日ぐらいは玄関に入れてしまう、という手がフツーらしくて。しかし、ウチの玄関は、お袋さんが育ててる寒さに弱い植物の類で満席状態で。お袋さんとしては、犬が寒さで震えることより、植物が枯れてしまわないほうが優先順位が高い、ということなのだろうけど…。まあ、そもそも本当に寒くて鳴いてるのかという疑問もあるのだけど。

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

ホームセンターサンデーまで行って、犬小屋に入れるための湯たんぽや、犬小屋に色々巻く際に使う養生テープの類を購入。ダイソーに寄って、アルミシートを2つ、ペットの水やり用のプラスチック製の皿を購入。

湯たんぽはポリエチレン製。金属製と違って熱伝導率が悪いので、表面が熱くなりすぎてやけどするということもなく、その分お湯の温度も長持ちするはず。パッケージにも、「やけどに注意」ではなく「低温やけどに注意」と書いてあるので、それほど表面は熱くならないということだろうと。

今まで使ってた、犬の水やり用の皿は金属製なので、氷点下ではキンキンに冷えて、犬が水を飲もうとしたときに鼻に貼りついて血が出てるのではないかと。であれば、プラスチック製なら、それほど冷えたりしないはずと想像してるけど実際はどうなることやら。あまり変わらないかもしれない。どのみち、中に入ってる水は凍ってしまうのだし。

2016/01/27(水) [n年前の日記]

#1 [ubuntu] VMware上のUbuntuをインストールし直し

VMware Player上で Ubuntu 14.04LTSを動かしていたら、Google Chrome Stable が「この版のLinuxはもうサポートしねえよ」とメッセージを表示して。Ubuntu LTS版を動かしてるのになんでそんなこと言い出すの、と思って調べたら、どうも Google Chrome Stable は今後64bit版のLinuxしかサポートしねえよ、依存するライブラリの関係で色々あんだよ勘弁な、ということらしくて。なるほど、今までVMware上で動かしてた Ubuntu 14.04LTSは、32bit版だったらしい…。それでこのメッセージか…。

ということで、Ubuntu 14.04LTS 64bit版をインストールし直したり。

Xubuntuって意外と重いのだな。 :

Ubuntu + Unity をインストールした後、lubuntu-desktop や LXDE をインストールしたのだけど。ふと、これが Xubuntu だったらどうなるのかと気になったので、xubuntu-desktop をインストールしてみたりして。どうも自分の環境では、Lubuntuの動作が怪しかったりもするし。ログアウトメニューが時々出てこなかったりとか、なんか怪しい。Xubuntuもそこそこ軽くて安定動作しそうならそっちを使ってみたいな、と。

Xubuntuへの、初回のログイン時に、体感で4〜5分待たされた。結構待たされるな…。その後、2回目、3回目のログインは、さすがに初回ログイン時より速くなったけど。それでも体感では、Unity や Lubuntu(LXDE)の2〜3倍待たされる感じで。

少なくとも、起動するまでの時間だけ見ても、Xfce4は軽量級と言えないものになっているのだなと実感したり。

と言っても、最初から Xubuntu しか使わないつもりであれば、一旦 Ubuntu をインストールせずにいきなり Xubuntu をインストールするだろうし、その場合は余計なものは入らないだろうから、もうちょっと起動も速くなるんじゃないのかと想像したりもして。

もっとも、あちらこちらの Xubuntu の解説記事を読んでも、「もう軽量級ではないよ」「Gnome や Mate と同程度と思ったほうがいいんじゃないか」みたいなことが書いてあるので、「別に軽くなくてもいいんだけど、Unityはちょっとなあ」てな人の選択肢としては有効、みたいなポジションになってるのかなと思ったりもしたけどよくわかりません。というか「とにかく軽いものを」だったらLXDE(Lubuntu)を選ぶだろうから、「Xfceを選んでおきながら軽さを気にするなよ」とか場合によっては言われそうだよなと。

まあ、一体何を持って軽量級とか重いとか判断すべきなのか、軽いけど不安定なのと重いけど安定してるのとどちらがいいか、等々あるよなと…。せっかく無料で試せるのだから、気になったらまず触ってみて、自分がヨサゲと思ったものを使えばいいだけの話ですよね。

どうして32bit版をインストールしてたんだろう。 :

「どうして32bit版をわざわざインストールしてたんだろ…」と考えてたのだけど。32bit版の仮想PCイメージを削除した後で、急に思い出した。Intel Atom機に Ubuntu をインストールして自宅サーバにできないか検証するために、あえて32bit版をインストールしていたのだった。昔の Intel Atom は64bitに対応してないので、32bit版Linuxをインストールするしかなかったのだな…。

失敗した。そういう理由で32bit版を入れていたのなら、そのままにしておくのだった。

考えてみれば…。昔は Linux のGUIアプリを試しに触ってみるとしたら、実機にインストールしたLinuxを使わないと実用(?)にならなかったので、「自宅サーバ上にインストールしたLinux上でもGUIアプリも動かせないと少し困るな」「Google Chrome StableのようなメジャーなGUIアプリが動かないのでは困ることもありそうだ」と思ってしまったけど。今は、仮想PCにインストールすればひとまずLinux関係の実験はできるので、自宅サーバ上では別にGUIを動かせなくてもいいし、Google Chrome Stable が動かなくても何ら問題ないわけで。

64bit版をインストールし直したけど意味が無かったな…。いや、この64bit版は、普段の実験用に使えばいいのか…。別途、32bit版をインストールし直してもいいんだよな。HDDの空き容量が厳しくなってるのがちょっとアレではあるけど。

外付けHDDに仮想PC用のイメージを入れといたほうがいいのかもしれないな…。起動する頻度が高いわけでもないから、外付けHDDの電源を入れたり切ったりする手間も、実機を用意して色んなディストリ入れてマルチブートすることと比べたら、全然楽だし…。

#2 [nitijyou] 犬小屋に入れた湯たんぽは小屋の外に押し出されていたらしい

親父さんの話では、昨夜のうちに、湯たんぽが犬小屋の外に押し出されていたらしい。おそらく、「ワタシの小屋の中に変な赤い何かが居る! コイツ邪魔だ!」的に押し出されたのかな…。入れとけば小屋の中が暖かくなるのに。さすが犬畜生。

小屋の入口にぶら下げておいた、テーブルクロスを切って作った暖簾モドキも、朝にはズタズタに噛み千切られていた。これでは冷気がそのまま入るではないか。それでいて犬自身は、朝も寒さでガタガタ震えていて。さすが犬畜生。馬鹿過ぎる。まあ、去年だか一昨年だかにも暖簾モドキをぶら下げていたけど噛み千切られてしまったので、やっぱりそうなるよな、コイツは絶対やると思っていたよ、てな感じではあるのだけど。

もっとも、人間だって、昔は祈祷すれば病気が治ると非論理的なことを信じていたわけで。動物なんてものは人間も含めて、それぞれの関連性を正しく見出せないのが当たり前、だったりするのかもしれない。

それにしても…。敷いてやったマットは噛み千切られて、もはや粉状になってるし。湯たんぽは蹴りだされてるし。冷気を多少防ぐはずの暖簾モドキも噛み千切られてるし。なのに犬自身はガタガタ震えているし。一体どうしろと。

せめて暖簾モドキはもう一度作るか、材料も余ってるし、と思ったら、親父さんからストップが。噛み千切られてそのへんに散らかされたゴミを片づけるのは俺なんだぞ、もう余計なことはするな、とのお達し。それもそうか…。毎朝片づけるのは面倒だもんな…。

小屋の中に虫でもいるのだろうか。 :

とりあえず犬小屋の中に殺虫剤を噴射してみたり。蜘蛛だったらコレで退治できそうだけど、ノミやダニには効果があるのだろうか。昔、子供の頭についたシラミを退治するためにDDTなるものをかけていたことを考えると、殺虫剤がノミやダニにも効果がありそうかな、とは思うけど。

殺虫剤の記述を確認してみたら、一応、ノミ、ナンキンムシ、イエダニに効果があるよ、と書いてあった。効いてくれるといいけど。

問題は、匂いかな…。犬が、「私の部屋から変な臭いがする!」と嫌がって小屋に入らない、という可能性も。

2016/01/28(木) [n年前の日記]

#1 [zatta] 昔の文献に書かれた地震や津波の情報は十中八九正しいのではないのかな

思考メモ。

_高浜原発3号機、29日に再稼働 | スラド ハードウェア という記事の中で、「昔の文献は誇張されてたりするし」みたいな話を見かけて、自分も「そうだよなー。フカシがありそうだよなー」と思ってしまったのですが。

しかしその後、考えてみたら、「いやいや待て待て。それってホントか? 地震や津波に関しては誇張なんかしないんじゃないか? できるだけ正確な状況を書こうとするんじゃないの?」と思えてきたのでした。

これがもし、当時の権力者を誉めそやす系の、「○○様はこのような素晴らしい行いをしました」てな記録であれば、フカシ・捏造がバンバンあるだろうと思うのですけど。権力者や権力側に対してゴマをするために、話を大きくしたり、話を作っちゃうのって、人間の心理としてはよくあることなわけで。

でも、地震や津波等の自然災害の記録は、コレは全く別じゃないかなと。

例えばの話、現代に生きる我々が、blogや、Twitterや、Facebookに、「今日、地震があった」とメモするとして。本当は震度1の地震だったのに「今日、震度5の地震があった」と、わざわざ誇張してメモするものだろうかと。

しませんよ。するわけないですよ。できるだけ正確に、「震度1の地震だったらしい」とかなんとかメモするでしょうよ。私達は、小松左京さんでも月刊ムーでもないんだから、「○○半島は何日で海に沈んだ」とか「○○大陸は一夜で海に沈んだ」とか、そういうことをスラスラと書き残しませんよ…。

自分達が、そういう誠実な記録の仕方をするのだから、昔の人だってそういう記録の仕方をするんじゃないですかねえ。だって、地震や津波を誇張したって、一切何の意味もないわけで。地震や津波が、「よくぞ俺のアクションをよりビッグに書いてくれた」と記録者に褒美をくれるわけでもないし。

なので、地震や津波に関する昔の文献に対して、「昔の文献は誇張されてる」という捉え方は危険だよなと。自分達が記録を取るとしたら誇張なんかしないのに、どうして昔の人は平気で誇張すると我々は思い込んでしまうのか。そんな思い込みを持ってしまうのは、なんだかおかしいぞ、と。

てなわけで、「文献として残ってるから正しいのだ」と盲目的に捉えるのも危ないだろうけど、「昔の文献だから当てにならん」と切り捨てるのはもっともっと危ねえぞコレ、と思えてきたのでした。と、メモ。

ていうか、たぶんコレも _正常性バイアス なんだろうけど。「そんな大変な事、起きないといいな」→「そんな事は起きないに違いない」→「昔の文献のこの記録は、何かの間違いだろう。そうに決まってる」の流れじゃないかと。東日本大震災からまだ5年しか経ってないのに、正常性バイアスに支配される危険性をすっかり忘れてる日本人。

この調子だと、俺達は、またやらかすぞ…。防げたはずのモノを防がずに、事が起きてから「仕方なかった」「想定外の」とか絶対に言い出すぞ…。何度目だナウシカ。じゃなくて日本人。

だけど昔の文献にも種類があるよなと。 :

例えば、瓦版だの新聞だのTVだの、一般大衆に広く伝えることで商売が成り立ってる系の人達は、話を大きくしたほうが刺激があって話題になるからフカシこく可能性はフツーにありそうだなと思えてきたりもして。今のマスコミがそうじゃないですか。今のマスコミがやってることは、昔のマスコミだってやってるだろうなと。

それと、伝聞は、どんどん内容が変わっていく可能性が高いよなと。だから、「聞いた話だけど…」として書かれてる記録は、事実とはちょっと違う内容になってる可能性があるよなと。大きくもなるだろうし、小さくもなるだろうし。

だから、昔の文献と言っても、
  • 記録者当人が体験したのであろう自然災害に関する記録なら、これはたぶん正しい。誇張して記録する意味が無い。
  • 一般大衆向けのメディアだったものは、結構な確率で嘘八百が混ざってそう。
  • 伝聞は、内容が変わってる可能性がちょっと否定できない。
てな感じで、種類があることを意識した上で捉えないとヤバいだろうと思えてきました。

まあ、少なくとも、件の記事についてたコメントや、ソレを読んで「だよなあ」と思ってしまった自分のように、「昔の文献=怪しいところがある」という決め付けは、これはダメだなと。「昔の文献」で一括りにしてんじゃねえぞ、せめて「どのカテゴリの文献だろう?」ぐらいの疑問は持ちやがれ、今後は気をつけろ>自分、と思えてきました。

未来の日本人からおそらく信じてもらえない現代の日本人。 :

昔の人は、おそらく、「こういう大変なことがあったから、子孫は気をつけろよ…」てな気持ちで記録を残してたところもありそうだよなと思うのですけど。それを、「昔の文献だからなー」とかニヤニヤしながら信じようとしない現代の日本人、という図式があるわけで。

ということは、この調子だと、東日本大震災の記録も、未来の日本人は信じないだろうなと。

何せ、今ですら、「アポロが月に行ったなんて捏造だ」と言い出す人が居るわけで…。おそらく50年後ぐらいには…

「東日本大震災なんて無かった!」「あんなものは捏造だ」
「こんなところまで津波が来るわけねえだろ」
「津波の記録映像とか言ってるけど、パニック映画のCG映像だろ」
「ホラ、ここの部分が不自然だ。だからこれはCG! 津波なんて無かった!」
「東日本大震災を信じてるとかお前バカじゃね?www」

などと、したり顔で言ってる日本人がワラワラ居るんじゃねえのかな、などと思えてきたりしました。

現代の日本人が昔の文献に対してそういう反応をしてるんだから、未来の日本人も現代日本人の残した記録に同じ反応してますよ…。そして実際に起きてみてから、「アレってマジ情報だった…」「なんで対策しておかなかったんだ…」と顔面蒼白になってるんですよ。たぶん。

「賢者は歴史から学び、愚者は経験から学ぶ」と言うけれど。日本人はどこまで行っても愚者の集まりの民族ですよ。まったくもう。 *1

*1: _誤解されている「愚者は経験に学び、賢者は歴史に学ぶ」 - Togetterまとめ によると本当は意味が違うらしいけど、ここはあえて都合のいいように捻じ曲げて使ったほうがそれっぽくなるかな、と…。いや、昔の人=他者、と捉えたら合ってる気もするけど。

#2 [pc] 某所からPCトラブルの連絡が

某所からメールで連絡有。Windowsを起動すると、液晶ディスプレイに「Outside Range Limit」とメッセージが表示されて画面が真っ暗なままになってしまうのだとか。

ググった感じでは、液晶ディスプレイのスペックを超える入力信号が、PC側から送られているように思える。であれば、セーフモードで起動して、画面解像度を変更してやればどうにか…。と、メールを書いて送ったけど、そのやり方(セーフモード上で設定)だと画面解像度が変更できないとの話で。

詳細はGRPでメモ。

2016/01/29(金) [n年前の日記]

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

雪の中、傘を差して行ってきた。詳細はGRPでメモ。

2016/01/30() [n年前の日記]

#1 [pc] 自宅サーバ内のHikiを削除した

ここ最近、自宅サーバ上で動かしているWebサーバ(Apache2)が無反応になる時がたまにあって。

調べてみたら、自宅サーバ内で動かしてる Hiki(というWikiシステム)に、大量にアクセスが来ると、hiki.cgi が終了しないまま大量に残ってしまって、Apache自体の反応が無くなるようで。Hiki は Ruby で書かれてると思ったけど…。ウチの自宅サーバで動かすには Ruby が重過ぎるのか、hiki.cgi やプラグインに、何かバグがあるのか…。

元々、Hiki には、フォント作成に関して実験した際のメモしか残してなかったので、この際 Hiki そのものを削除してしまおうかと。残ってた記事は、Googleサイトに引っ越し。

_Inkscape+FontForgeでフォントを作成してみたときの手順メモ - mieki256 wiki

まあ、今となっては古い内容だろうから、何かの役に立つかどうかはビミョーなのだけど。その気になればこんな感じでフォントファイルを作れていたよ、という記録程度にはなるかなと…。

Googleサイトで編集すると本名が表示される点はどうにかならんのだろうか。 :

表示するにしても、自分のHN(ハンドルネーム)を表示したいのだけどなあ…。仕方ないから別アカウントで編集しちゃったけど、このへんどうにかならんのか…。

#2 [nitijyou] 雪が結構積もった

長靴で歩かないと厳しいぐらいの積もり方。夕方、犬の散歩をしたけど、犬がはしゃいで雪の中でゴロンゴロンと。そのくらい積もった。

でも、犬がそのへんにゴロゴロ転がるのは、ダニでも居るんだろうか…。

#3 [anime] 灰と幻想のグリムガル、3話まで視聴

とんでもないアニメが始まった、気がする…。

おそらく設定としては、主人公達がゲームの世界に閉じ込められてしまいました、みたいな感じのよくある設定だと思うのだけど。その世界をリアルに考えていったらどんな光景になるのかな、てなあたりの思考実験が比較的徹底していて。

CMでも台詞として言ってるけれど、ゴブリン一匹を倒すだけでも一苦労。そして、その描写がひたすら丁寧。例えば、襲撃する際の不安を解消するために武器を弄り始めてどうにか気持ちを落ち着ける、てなキャラの動作まで描かれていて唸ってしまったり。そんなところまで気を配って描写してみる作品なんて、そうそう目にすることは無いわけで。

着ている衣服に関しても、例えば下着の質はどうなのか、どのくらい長持ちするのか等を設定していて。○○○一つ入手するのも難しいから、穴が開いた○○○を長持ちさせるために工夫してみたけれど、そのことで思わぬ問題が発生しちゃう冒険者達、とか…。こんな作品、そうそう無いよなと。

この手の作品は、視聴者も、制作側すらも、例えばゲームの世界なんてもんは大体こんなもんでしょ? と、すっかり思考停止しちゃって、決まりきった、ワンパターンの、実に貧相なイメージを持ってきておきながら、これで良し、これ以上描かなくて良し、考えなくてもいいよ、と、誤魔化してしまうところがあるわけだけど。いやいやちょっと待て、もうちょっと真面目に考えてみたらどうなるんだコレ、と踏み込んで、そのことで他作品では見られない光景がポンポン出てくるあたりがグッドだなと。…なんだかちょっと「ダンジョン飯」を思い出したりもして。

スタッフの誠実さや生真面目さ、そしておそらくは原作が持つ独自性がビンビン分かりやすく伝わってくる、どこまでも丁寧に作られたアニメだなと思えてきたり。こんな作りをしていて大丈夫か。最後まで持つのか。そんな心配をしてしまうぐらいに丁寧な作り。これは恐ろしいアニメが始まった…。こんなアニメを作れる人達が出てきたのか…。凄い時代になってきた…。

こうなると、「落第アスタリスク」は一体何だったのか、とか思ってしまったりして。いや、アレはもう原作からしてパターンの羅列だった上に、たまたま偶然、放送のタイミングまで一致しちゃったせいでアレなんだろうけど…。

思考停止していたら、ダメなんだな…。他人よりも一歩踏み込んで(考察|妄想|描写)してみるのって、大事なことなんだな…。てなことを実感させてくれるアニメだな、と思ったり。

#4 [anime][neta] かめはめ波の元ネタって何だろう

格闘ゲーム・ストリートファイターIIの「波動拳」の元ネタは、DB(ドラゴンボール)の「かめはめ波」じゃないのかと勝手に思ってるのだけど。 *1

その、「かめはめ波」の元ネタって何だろうなと気になってきたりして。

「かめはめ波」の要素は…。 この2点を組み合わせたのがポイントなのだろうか。

人体から光線が出るあたりは、「かめはめ波」が初と言うわけではなさそう。DBの前の作品の「Dr.スランプ」でも、ロボットだか謎生命体だかから光線が出ていた気がする。というか、 _1966年にお茶の間に映像が流れたウルトラマン だって光線を出すし。一見すると生物に見える人の形をした何かから光線が出るという発想は、それまでもいくつかあった、と言えるのだと思う。

技名を叫んで謎ポーズを取ると技が発動するあたりは、もしかすると子供達にバカ受けした「仮面ライダー」の「変身!」から発案できたのかもしれない。いや、「仮面ライダー」の「変身!」は、時代劇ヒーローモノの「○○殺法」からの発想とどこかで聞いた記憶もあるし。時代劇のヒーローも、技名を呟いて謎ポーズを取ると技が発動するわけだから、時代劇ヒーローモノの延長線上に「かめはめ波」があるのだ、と考えるほうが自然だろうか。

ということで、「かめはめ波」を構成する各要素は、「かめはめ波」が初だったわけではない。となると、組み合わせ・掛け合わせをしたあたりが、「かめはめ波」の持つオリジナル性…。

というわけでもないような気がする。例えば「聖闘士星矢」でも、謎ポーズを取って技名を叫ぶと謎の光弾や謎の冷却光線が人体から出てきたりしていたし。

と思ったけれど、 _聖闘士星矢は1986年に発表された らしいから、DBの後なんだな…。

自分は少年ジャンプ作品をほとんど読んだことが無いし、少年漫画も全く読んでないほうなので、「かめはめ波」の元ネタがあるのかないのかもわからんのだけど。少年ジャンプ等をずっと読んでた博識な人なら、「元ネタは○○じゃねえかな」とスラスラ思いつくのかもしれないし、「かめはめ波が受けた理由・新しかった部分はココだろう」と指摘できるのかもしれない。

などと妄想しているうちに、漫画・アニメ・時代劇等に登場する、その手の必殺技の数々を、図でまとめてみると面白いかもしれないなと思えてきたりもして。おそらく、系譜と言うか、家系図のようなものができあがる予感。そして、「あっ…。コレとコレの掛け合わせは、まだ誰もやってないかも!? 新しいんじゃね?」と気づけそう。

例えば、アパッチ野球軍の「人間ナイアガラ」は、技名を叫ぶ+多人数の合体技の系譜の中にある、と描けそうだし。おそらく、ゴレンジャーの、「いいわね? いくわよ!」と線で繋がってるはずで。

キャプテン翼の技や、キン肉マンの技は、第三者(解説者)が技を叫んで紹介する系譜の中に置かれるのだろうし。

北斗の拳の技は、技名を叫んで発動する系ではなく、技を出した後に技名を叫ぶ系に置かれるだろうし。…待てよ? アニメの場合は、技を出した後で叫んでたけど、漫画の場合は同時だったりしないか? その場合はどう分類されるんだ?

まあ、その手の漫画やアニメによほど詳しい人じゃないと作れない図だろうから、そうそう作れるものではないですな。昔の作品をたくさん知ってないと、どんな必殺技があったのか思い出せないだろうし。

いや、自分が知ってる年代だけでも、図にまとめてみると何か見えてくるのかもしれないか。流れとか、読者の好みとか、そのくらいは見えてきそう。
*1: _DB の連載開始が1984年。 _ストリートファイター の発表が1987年らしいから、「波動拳」の元ネタは「かめはめ波」、なのだろうなと。

#5 [zatta] 大きなディスプレイを持ち歩かずに大きなディスプレイで表示することってできないのかな

例えば外出先で、大きなディスプレイにPC画面を表示して相手に見せたい、てな場面があったりするわけだけど。PC本体側は、スマートフォンでもいいだろうから持ち歩きができるけど。表示デバイスだけはどうしようもないよなと。20〜24インチのタブレットPCを持ち歩く、とかちょっと無理だろうし。

大きなディスプレイを持ち歩かずに、大きなディスプレイに表示する方法って無いのかな、などとぼんやり妄想。例えば…。
STAR WARSの「助けて、オビワン・ケノービ」っぽく空中に投影できたらいいよな。でも、ざっくりとした仕組みのアイデアすら、現代では思いつかないわけで。

小型プロジェクターを持ち歩けば、似たようなことができるだろうか。でも、プロジェクターは強い光源が必要になるだろうから、モバイル用ではバッテリーの問題がありそうだし。暗い場所で投影しないと画面が見えないし。

巻物にできるディスプレイは…。たしか韓国だか台湾だかのメーカが、折り曲げられるディスプレイを先日発表してた気がする。そのうち実用化されるのだろうか。

折り畳みができるディスプレイは…。ベゼルが見えなくなるぐらい細くする・ベゼルを無くす方法が必要だろうし。

てな妄想をしてたのだけど。気になってググってみたら、まとめてある記事に遭遇。

_「曲がる」、「伸びる」、「畳める」ディスプレイ開発の色々
_フレキシブルディスプレイ:未来技術まとめ Wiki
_超小型から軽量タイプまで! 人気のモバイルプロジェクターおすすめ7選
_便利なスマホ向けの超小型プロジェクター7選 - NAVER まとめ

現時点では、小型プロジェクターしか選択肢が無さそうかな…。でも、他に方法はないかな…。コロンブスの卵っぽい何かが…。

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

#1 [anime][neta] アニメの中の高笑いって何だろう

アニメにおいては、「フッフッフ…ハッハッハ…ハーッハッハッハー!」てな高笑いをよく見かけるのだけど。アレって何なんだろうなと気になってきたりして。

リアルワールドにおいて高笑いなんて見たことないわけですよ。あるとしても、アニメの真似をしておどけてやってみせる、ぐらいなもんで。だから、日常生活の中で自然発生して、それを観察して取り込んだというわけではないのだろうなと。すると一体どこからアニメの高笑いはやってきたんだろう。

落語で使うアクションなのかな。でも、高笑いを織り交ぜている、昔からやってる落語のネタなんてあるのだろうか。

歌舞伎や狂言で使われていて、そこから来てるのだろうか。歌舞伎や狂言は全然知らないからわからんな…。

漫画から取り込んだのかな。何せアニメは、昔は「まんが映画」と呼ばれていたぐらいだし。漫画の中の表現をアニメでもそのままやってるうちに、定着しちゃったのだろうか。

もしかして、時代劇かな。勧善懲悪モノの時代劇の中で使われてそうな印象。それをアニメも取り込んだのだろうか。…今は高笑いをするのが悪役側だけど、昔はヒーロー側も高笑いをしていた気がする。黄金バットとか。いや、黄金バットは時代劇ではなさそうな。そもそも黄金バットはヒーローなのだろうか。自分、設定も内容も知らんのですよね…。

海外では高笑いは使われるのだろうか。ハリウッド映画は高笑いをしますか? どうなんだ。アメコミや、結構昔のTVドラマの中では、悪役がやってそうな印象もあるけど。

自分は、「使えそうな表現なら何でも使ってみるべき」と思ってるので、別に高笑いを使ってもOKでしょ、とも思うのだけど。ただ、法律で決まってるかのようにお約束で必ず使われてしまうと、なんだか天邪鬼な気持ちが湧いてきて、「その表現が元々伝えようとしていたものは何だったのか」「別のアクションでソレを伝えることはできないのか」などと考え始めてしまったりもして。

高笑いが伝えようとしている状況って、一体何だろう?

主人公に対する、悪役側が持つ圧倒的な力の差、とかそのへんかな。だとしたら、主人公の攻撃を全部跳ね返した上で、主人公側に視線を移すこともせず、ニヤリともせず、「今日はなんだか外が騒がしいな」とか「蠅が飛び回ってるようだな」とか言わせちゃう感じでも良さそうな。

いや。高笑いは、高笑いをしたキャラの死亡フラグでもあるのだろうし。やっぱり高笑いさせとかないといかんのかな。

高笑いの使い方。 :

先日眺めてた「ラクエンロジック」というアニメの中では、高笑いなんてできる状態にないキャラが、実に清々しい気持ちの良い一点の曇りもないこれぞ高笑いって感じの高笑いをすることで笑いを取れていて感心した記憶が。演じていた声優さん、実に上手かった…。

「PSO2」アニメ版でも、主人公の友人が、ゲーム内では何の意味も脈絡もなく、暇があれば高笑いをしていて主人公が困惑し続けるうちに慣れてきてしまう、というシーンがあって。これも見ていてちょっと笑えたわけで。

考えてみれば、「うる星やつら」の頃から、高笑い=ギャグ、だった気もしてきたり。面堂終太郎の高笑いは、アレはギャグの一種、だったよなと…。

などと思い返しているうちに、もしかすると、アニメの中で悪役が高笑いをするなんてのは、もはやギャグの域に入りきってるのかもしれないなと思えてきたり。

例えば「攻殻機動隊」あたりで敵が高笑いをしていたら、おそらくバトーあたりが「オイオイ。リアルに高笑いするヤツなんて初めて見たぞ」とかフツーに言いそうだし。少佐が「ウイルス感染で脳がやられてるのかもしれん。各人注意しろ」とか言いそうな。

富野アニメでも、高笑いをしているキャラが出てきたら、隣のキャラが「…チッ。艦長! ふざけてないで仕事してください!」とか言い出しそうだし。

せいぜい、高笑いを、高笑いらしく使ってるのって、宮崎アニメぐらいだよな…。

いや、宮崎アニメも、その場に居るキャラ達の不安を吹き飛ばすために、空元気としての高笑いをさせる、てな使い方が多いか…。「トトロ」の入浴シーンで、お父さんが高笑いをして娘達を元気づけたりとか。「紅の豚」でも、ギャグとしての高笑いを活用してた気がする。

実は高笑いとは呼ばないのかもしれない。 :

誰か考察・解説してないかなとググったら気になるページが。

_三段笑いとは (サンダンワライとは) [単語記事] - ニコニコ大百科
_悪の笑い - Wikipedia

実は別の呼称が適切だったのだろうか。

_米メディア“日本人の笑い方は米国では悪印象” 日本人旅行者への意外なアドバイスとは | ニュースフィア
コミュニケーションの際に重要となる点も多かった。

・米女性、男性は面と向かって大きな口をあけて笑う。誠実さをアピールするためという。これに対し日本人女性は笑うとき口元を見せないように手で覆い、日本人男性はあまり笑わない。笑いを抑えたり隠したりすると、悪い印象を与える場合があるという。

米メディア“日本人の笑い方は米国では悪印象” 日本人旅行者への意外なアドバイスとは | ニュースフィア より

アメリカなら日常生活の中でも高笑いがフツーに見れるのだろうか…。となると、バトーが「高笑いなんて初めて見た」と言った瞬間、少佐に「貴様、何者だ!?」と銃を突き付けられちゃうのかも。 *1

*1: 海外で仕事をしてたはずのバトーが、リアル高笑いを日常的に見ていないはずがない、みたいな。

以上、31 日分です。

過去ログ表示

Prev - 2016/01 - 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