mieki256's diary



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

#1 [gimp] GIMPを使ってWindows用のマルチアイコンファイルを作ってみたい

GIMPを使って、Windows用のマルチアイコンファイルを作ってみたい。環境は、Windows10 x64 22H2 + GIMP 2.10.34 Portable。

マルチアイコンファイルというのは、1つの .ico ファイルの中に、複数のサイズ、複数のカラーモードのアイコンが入っているアイコンファイルのこと。

Windowsの場合、一般的には…。 このサイズ/カラーモードのアイコンを含める場合が多いらしい。かつ、Windows Vista 以降は、256x256, 32bitカラーの画像を含めることもできるそうで。つまり、9種類+1種類、計10種類のアイコンが、1つの icoファイルに入っているとイイ感じ。らしい。たぶん。

専用のスクリプトを導入 :

GIMPでそんな作業はできるのかなと調べてみたら、1枚の画像を元にして自動で縮小してマルチアイコンファイル用の画像を作ってくれる Script-Fu もあると知った。iconify2_1.scm というのがソレ。

_registry.gimp.org_static/registry.gimp.org/files/iconify2_1.scm at master - pixlsus/registry.gimp.org_static

上記ページの「Raw」と書かれたリンクを右クリックして保存すれば入手できる。

導入すると、Script-Fu → Utils → Iconify という項目が増える。

何か1枚画像を用意して、このスクリプトを実行すれば、自動で縮小して、16x16, 32x32, 48x48 のサイズになったレイヤーを作成してくれる。また、256色、16色(15色) に減色したレイヤーも作ってくれる。

ただ、処理をする前に、AutoCrop (内容で切り抜き) も実行してしまうので、元画像の周辺から必要な部分まで勝手に削除されてしまう時がある。61行目近辺の、plug-in-autocrop-layer と書かれた行をコメントアウトしておいたほうがいいと思う。

; Autocrop the layer
(plug-in-autocrop-layer 1 new-img work-layer)

↓

; Autocrop the layer
; (plug-in-autocrop-layer 1 new-img work-layer)

試してみる :

まずは 256x256、32bitカラーの画像を用意する。

gimp_iconify_ss01.png


Script-Fu → Utils → Iconify を選択して実行。

gimp_iconify_ss02.png


画像サイズが異なっているレイヤーが複数作られた。48x48, 32x32, 16x16 のサイズで、32bitカラー, 8bitカラー(256色), 4bitカラー(15色) が作られている。

gimp_iconify_ss03.png


icoファイルとして保存する。ファイル → 名前をつけてエクスポート。

gimp_iconify_ss04.png


ファイル名の拡張子を「.ico」にしてエクスポート。

gimp_iconify_ss05.png


icoファイルに同梱したいサイズ/カラーモードを選択して保存できるので、これでマルチアイコンファイルが作れる。

gimp_iconify_ss06.png

実は使わないほうがいい :

ここまで書いておいてなんだけど。実は、GIMP を使ってマルチアイコンファイルを保存するのはおススメしない…。

というのも、おそらくは GIMP の減色処理の品質が悪くて、縮小して作られた画像のうち、減色された画像群の結果が妙なことになってたりするので…。以下のスクリーンショットを見れば、なんとなく分かるだろうか…。

gimp_iconify_ss08.png

ところどころに謎の透明なドットが入ってしまっている。どうしてこんなことになるのやら。

オススメのツール :

GIMP を使ってマルチアイコンファイルを作ると、前述のようにちょっとよろしくない結果の画像が作られてしまうので、アイコン作成に特化したツールを使ったほうがいいだろうなと。Windows用なら以下のツールが個人的にはオススメ。

_IcoFX Portable (icon editor) | PortableApps.com

_「Greenfish Icon Editor Pro」多機能なアイコン・カーソル作成ソフト - 窓の杜
_Greenfish Icon Editor Pro 4.2 - Official Website

どちらも、1枚の画像(256x256, 32bitカラー)から、自動でマルチアイコンファイルを作れるし、GIMP のようにおかしなドットが入ってしまうこともない。

  • IcoFX Portable の場合、ウインドウ内に元画像をドラッグアンドドロップで読み込ませてから、アイコン → イメージからWindowsアイコンを作成、を選ぶ。
  • Greenfish Icon Editor Pro の場合、256x256, 32bitカラーの画像を1枚描いてから、アイコン → イメージからWindows用のアイコンを作成、を選ぶ。
後は、作りたいアイコンサイズ/カラーを選べば自動生成ができる。

あるいは以下のまとめが参考になりそう。

_おすすめのアイコン作成ソフト - k本的に無料ソフト・フリーソフト

ToYcon を試用してみたけれど、そちらもイイ感じだった。ただ、4bitカラー(16色)のアイコンが、Windowsのアイコン仕様に合ってない気も…。たしか4bitカラー利用時は、使える色が決め打ちされていたはず。

_MICROSOFT VGA Palette

ToYcon で4bitカラーのアイコンを作らせると、見た目は奇麗だけど独自のパレット色になってしまっていたので、実際には4bitカラーモードで使えないアイコンファイルが作られてしまっている可能性が高そう。もっとも、今時そんなカラーモードでWindowsを使う場面は無さそうだし、実用上は問題無いのかもしれない。

#2 [hsp] mp3しかサポートしてないゲーム制作ライブラリはよろしくない

HSP の hsp3dish のドキュメントを眺めていたら、サウンド再生については「wav と mp3 のみ対応」と書いてあって、「いやー、それはよろしくないなあ…」と思ってしまった。

wav と ogg にしか対応してないというなら全然分かる。でも、mp3 は良くない。

もっとも、そのあたり調べてみたら…。 そういった状況らしいので、なんだかホッとしたわけですが。まあ、それが妥当だよなあ…。

_HSP3備忘録
_oggファイルの読み込み - HSPTV!掲示板
_HSP3.7 新機能ハイライト

mp3は良くない :

せっかくだから、mp3が良くない理由もメモ。と言っても、mp3はギャップレス再生が難しいという、ただそれだけの話なのだけど。

mp3 って、元々は映像の音声部分を担当させるために作られた規格/音声フォーマットなので、映像のフレーム単位で時間情報が記録されているそうで。音声の長さがフレーム単位でキリのいい長さになってない場合、最初や最後にギャップ(無音部分)が入ってしまうので、ループ再生したり、再生終了と同時に別のmp3を再生したりすると、境目で「ブツッ」とノイズが入る。規格からしてそうなってるので仕方ない話なのだけど、ループしたり、曲が切り替わるたびに「ブツッ」とノイズが入ったら…ねえ…。かなり萎えますわな…。

だから、ゲーム制作ライブラリの類で「圧縮音声フォーマットはmp3のみ対応」なんて言われちゃうと困ってしまう。ギャップレス再生ができないファイル形式しか使えませんとかなんだソレ、どんな糞仕様だよ、という話に…。

その点、ogg なら、最初からちゃんと音声フォーマットとして規格が作られているので、サンプル数もちゃんと記録されてるし、再生処理がしっかり作ってあるならギャップレス再生だってできるわけで。

と言っても、Ruby + Gosu のようにoggすらちゃんとループ再生できない糞みたいなゲーム制作ライブラリも稀に存在するけれど…。アレは SDL が腐ってるんだろうか? まあ、Gosuの件は横に置いておくとして…。

そんなわけで、ogg はサポートしてるけど mp3 はサポートしてません、ということなら納得できるのだけど。逆はダメだよなと…。

mp3でギャップレス再生できる事例 :

ちなみに、さすがにこれだけ mp3 が普及してしまうと、ギャップレス再生できないのはさすがにあかんやろ、ということで解決策も出てきて…。

mp3に変換するエンコーダ側で本来の音声の長さを mp3ファイルのどこかに独自情報として埋め込んでおいて、対応してるデコーダ側はその情報を読み取ってギャップレス再生させる、といったことも可能だそうで。mp3エンコーダとしてメジャーな LAME はそういう情報を埋め込んであると聞いた記憶が…。mp3をギャップレス再生できるソフトウェアは、そういった一手間を加えた実装になってるわけで。

もっとも、どのエンコーダが、どういう情報を、どこに記録してるのかが分からなければ、デコーダ側だって対応のしようがないし。

あるいは、エンコーダとデコーダが一体になってるアプリなら、「このアプリを使った時だけギャップレス再生ができます。他は知らんがな」となっちゃうし。 *1

だから、「mp3の再生に対応」と言われても、「それってどこまで対応してるの?」と不安になってしまう。そんなわけで、個人的には mp3 って嫌いなのでした。いやまあ、昔、mp3をループ再生させることになって苦労したからなのだけど…。

まあ、ループ再生できないならできないで、その旨最初からどこかに書いてあれば、それはそれでOKかなとも思うのですが。

例えば昔のPCエンジンのCD-ROMゲームはCD-DAでBGMを流したりしていたけれど、当時は奇麗に繋がるループ再生なんてできなかったから、曲の最初と最後が全然繋がってないBGMを作って済ませてた。状況さえ分かってれば、そのように逃げ道(?)はあるので…。できそうな感じで期待させておいて実はできないというパターンが一番困る…。できないなら「できない」と書いておいてほしい…。

*1: 昔の Adobe Flash がそんな感じの実装だった。LAME でエンコードしたmp3を再生させるとギャップレス再生できないけれど、Flash自身にwavを渡してmp3に変換、かつ .swf に内包して再生させると、ちゃんとギャップレス再生ができた。「このアプリで全部やる分には、ソレってできますよ。え? 他のソフトが変換したmp3? そんなもん知るか」みたいな。もっとも、後に LAME でエンコードしたmp3もギャップレス再生できるようになった記憶もあるけれど。アレは Flashプラグイン側が対応したのか、それとも LAME側が対応したのか、どっちなんだろう。

2022/10/26(水) [n年前の日記]

#1 [game] 延々走るドライブゲーム

ネット上のニュースを眺めていたら、気になる話を見かけた。

_禅リラックス無限ドライブ『Slow Roads』PCブラウザ向けに無料公開。のどかな丘から火星まで無心で走る - AUTOMATON
_slow roads

これは…良い…。自動走行モードにして、ついついずっと眺めてしまった…。

パーリンノイズで地形を生成してから、その上に道路を自動生成しているらしいけど、稀に、湖の上に橋がかかったりして、そこを走っていく時が気持ちいい…。

木や草の生え方にムラがあるのが実に良い。以前自分も、 _道路の自動生成に挑戦 したことがあるけれど、一定の間隔で木を生やしてしまったせいか変化が無くてつまらないソレになったわけで…。やはり風景には変化が無いと…。

「TURBO FreeWay」を連想。 :


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

#1 [ubuntu] Kubuntu Linux 21.10を少しだけ試用

Ubuntu Linux 関係のサイトを眺めていたら Kubuntu Linux 21.10 が配信されているという記事を目にして、なんだかちょっと興味が湧いてきた。どういう感じのディストリビューションなのだろう。触ってみたい。VMware Player上でインストールして少しだけ試用してみることにした。

環境は、Windows10 x64 21H1 + VMware Workstation Player 16.1.2 build-17966106。

_Download Kubuntu | Kubuntu

kubuntu-21.10-desktop-amd64.iso をダウンロードして、VMware上では Ubuntu 64bit で仮想PCを新規作成してインストール。

自動で open-vm-tools 関係がインストールされたのだけど、設定ウインドウから画面解像度を変更しようとしても反映されなかった。ただ、VMware Player のウインドウ枠をドラッグして大きさを変えると、そのサイズに従ってくれるようではある…。

ほんの少し触ってみたものの、これは、と感じる何かは特に無く…。別ディストリでも十分だよな…という気分に。仮想HDDイメージごと削除しておいた。

Linux上でVMwareをインストールしてみた。 :

Windows10機のHDD空き容量が厳しかったので、まだ空き容量に余裕があるサブPCで ―― Ubuntu Linux 20.04 LTS をインストールしてあるPC上で VMware をインストールして、そちらで仮想PCを動かしたほうがいいかもしれないと思えてきた。

環境は、Ubuntu Linux 20.04 LTS x64。CPU は AMD A8-3850。RAM は 8GB。CPUもメモリも本来のクロックでは動かしてないけど。 *1

_VMware Workstation Player を使ってみる
_Ubuntu で VMware Workstation Player バージョン 15 のインストール
_Ubuntu 20.04 に VMWare Player をインストールする - Qiita

VMware-Player-Full-16.2.0-18760230.x86_64.bundle をダウンロードして以下を実行。
sudo bash VMware-Player-Full-16.2.0-18760230.x86_64.bundle
これでインストールできた。

しかし、仮想PCを作成して Kubuntu 21.10 をインストールしようとすると、起動時にエラーが出て先に進まない…。

VMware をアンインストールしようとしたけど、どうすれば…。

以下の記事で解説されてた。インストーラにオプションをつけて実行することでアンインストールできるのだな…。

_Ubuntu で VMWare Player のアンインストール
_Linux版VMWareのアンインストールが分かりづらかった - Qiita

sudo bash VMware-Player-Full-16.2.0-18760230.x86_64.bundle -l
sudo bash VMware-Player-Full-16.2.0-18760230.x86_64.bundle --uninstall-component=vmware-player


さておき、どうして VMware がエラーを出すのかググってみたら、以下のやり取りに遭遇。

_Solved: VMware Workstation unrecoverable error: (SVGA) Une... - VMware Technology Network VMTN
_Solved: Re: Unable to start virtual machine after upgrade ... - VMware Technology Network VMTN

CPUが古過ぎて、現行版の VMware は動かないというオチだった。AMD Phenom 世代は非対応になったらしい…。A8-3850 は K10アーキテクチャ、Llano (2011) 世代だから動かないのは当然、だろうか。

12.5.9 や 15.5.2 は動くという話も見かけたので、そのあたりを試してみよう…。再度書くけど、環境は Ubuntu Linux 20.04 LTS。

_VMware Workstation Player - VMware Customer Connect
_VMware Workstation Player - VMware Customer Connect

12.5.9 はインストールしても起動しなかった。メインメニューから実行しても、端末から実行しても、無反応。

15.5.2 は起動してくれた。試しに Debian Linux 11 bullseye 32bit をインストールしてみたけど、一応動いてるように見える。

ということで、古いCPUを使ってる場合は、VMware 15.5.2 まで戻さないとダメっぽい。

VirtualBoxで試してみた。 :

Ubuntu Linxu 上でも、VirtualBoxなら、Kubuntu 21.10 をインストールできたりしないだろうか?

_Linuxmania: VirtualBoxを使おう (Ubuntu)
_Virtual Box のインストールと設定(Ubuntu 上)

Ubuntu Linux + VirtualBox上であれば、Kubuntu 21.10 のインストール時にエラーは出なかった。これなら先に進めそう…と思いきや別の問題に遭遇。Kubuntu インストーラが要求する画面解像度が結構高いようで、VirtualBox の初期ウインドウサイズでは、インストール時のOKボタンやキャンセルボタンが画面外にあってインストール作業を進めることができなかった。残念。

*1: 本来 2.9GHz で動かせるはずのCPUだけど、定格設定では動作が怪しくて、2.5GHz ぐらいに落として動かしてる状態。メモリクロックも 1600 から 1333 に、内蔵GPUのクロックも 600MHz から 500MHz に落としてる…。

2020/10/26(月) [n年前の日記]

#1 [godot] Godot Engineで上から落ちてくる林檎キャラを作成

Godot Enigne 3.2.3 x64 の勉強を兼ねて、Apple Catcher っぽいゲームを作成中。

今回は上から落ちてくる林檎キャラと爆弾キャラを作成する。前回作ったプロジェクトを開いて追加の作業をしていく。

_Godot Engineでプレイヤーキャラ用のシーンを作成
_Godot Engineでプレイヤーシーンにスクリプトを追加

シーンを新規作成。 :

林檎キャラ用のシーンを新規作成する。シーン → 新規シーン、を選択。

godot_tuto08_create_apple_ss01.png

ルートノードを追加。 :

ルートノード(一番上位のノード)として、RigidBody2Dノードを使うことにする。

プレイヤーキャラは Area2Dノードを、林檎キャラは RigidBody2Dノードを使うけれど、それぞれ以下のようなノードらしい。
  • Area2D は物理法則に関係なく動くオブジェクトに使う。
  • RigidBody2D は物理法則に基づいて動くオブジェクトに使う。
林檎キャラは重力で上から下に落ちていくオブジェクトなので、これは物理法則に基づいて動くオブジェクトのように思える。よって、RigidBody2D を使ってみる。

「その他のノード」を選択。

godot_tuto08_create_apple_ss02.png


「rigi」と打ち込んで絞り込み検索。「RigidBody2D」を選んで「作成」。

godot_tuto08_create_apple_ss03.png


これで、ルートノードとして RigidBody2D を追加できた。

子ノードを追加。 :

子ノードとして、画像表示を担当する Spriteノード、アタリ範囲を持つ CollisionShape2Dノードを追加していく。

ルートノード(RigidBody2D)を選択して、左上のプラスマークをクリック。

godot_tuto08_create_apple_ss04.png


Spriteノードを作成。

godot_tuto08_create_apple_ss05.png


ルートノードを選択し直して、再度ノードを追加。CollisionShape2Dノードを作成。

godot_tuto08_create_apple_ss06.png


ルートノードの下に、Spriteノード、CollisionShape2Dノードが登録されてる状態になった。

godot_tuto08_create_apple_ss07.png


念のために書いておくけれど、各ノードはドラッグアンドドロップで階層の位置を変更することができる。もし、各ノードの場所を間違って作成してしまった場合は、ドラッグアンドドロップで変えてやればOK。

ノード名を変更しておく。RigidBody2Dノードが選択されてる状態で、ノード名部分をクリックすれば名前を変更できる。「Apple」に変更。

godot_tuto08_create_apple_ss08.png

Spriteにテクスチャ画像を指定。 :

Spriteノードにテクスチャ画像を指定する。Spriteを選択。

godot_tuto08_create_apple_ss09.png


Textureプロパティが「空」になっているのでクリック。「読込み」を選択。

godot_tuto08_create_apple_ss10.png


テクスチャ画像(スプライトシート画像)を選択する。

godot_tuto08_create_apple_ss11.png


スプライトシート画像の全体が表示された。

godot_tuto08_create_apple_ss12.png


Animation の Vframes、Hframes、Frame を変更して、林檎のキャラが表示される状態にする。
  • Vframes : 2
  • Hframes : 4
  • Frame : 0

godot_tuto08_create_apple_ss13.png

アタリ範囲を設定。 :

アタリ範囲を設定する。CollisionShape2D を選択。

godot_tuto08_create_apple_ss14.png


Shape が「空」になっているのでクリック。円の形でアタリ範囲を設定できる CircleShape2D を選択。

godot_tuto08_create_apple_ss15.png


小さい赤い丸をドラッグして、円の半径を設定。

godot_tuto08_create_apple_ss16.png


これでアタリ範囲も設定できた。

重力を設定。 :

重力のパラメータを変更する。Appleノード(RigidBody2Dノード)を選択。

godot_tuto08_create_apple_ss17.png


このプロパティ・値で合っているのか分からないけど…。Gravity Scale を 9.8 に変更。

godot_tuto08_create_apple_ss18.png

シーンを保存。 :

シーンを保存する。シーン → 名前を付けてシーンを保存、を選択。

godot_tuto08_create_apple_ss19.png


assets フォルダの中に、Apple.tscn としてシーンを保存する。

godot_tuto08_create_apple_ss20.png


保存された。

godot_tuto08_create_apple_ss21.png

実行してみる。 :

右上の再生ボタンをクリックするか、あるいは F6キーを押して実行してみる。

godot_tuto08_create_apple_ss22.png


林檎が上から下へと重力に引かれて(?)落ちていった。

godot_tuto08_create_apple_ss23.gif

一見すると上手く動いてる感じなのだけど、この段階ではまだ問題がある…。この林檎キャラは、画面の下まで消えていった後も永遠に存在し続けて、どこまでも落ちていってる。なので、画面の下まで落ちていったら自分自身を消すような処理を追加してやらないといけない。その処理はスクリプトで記述する。

スクリプトをアタッチ。 :

Appleノードに、スクリプトをアタッチする。Apple を選択してから、少し右上のスクリプトアタッチボタン(?)をクリック。

godot_tuto08_create_apple_ss24.png


scriptsフォルダの中に、Apple.gd として、スクリプトファイルを作成する。

godot_tuto08_create_apple_ss25.png

godot_tuto08_create_apple_ss26.png

godot_tuto08_create_apple_ss27.png


スクリプトを記述するためのエディタ画面が開いた。スクリプトを記述。

godot_tuto08_create_apple_ss28.png

スクリプト内容は以下。

_Apple.gd
extends RigidBody2D

export var kind = "Apple"
export var h = 96
var screen_size

func _ready():
    screen_size = get_viewport_rect().size

#func _process(delta):
#   pass

func _physics_process(delta):
    if position.y > screen_size.y + h:
        queue_free()

やっていることは…。
  • ノード発生時に呼ばれる _ready() の中でビューポートサイズ(ゲームウインドウサイズ)を取得して記憶。
  • 一定間隔で呼ばれる _physics_process(delta) の中で、自分の y座標が画面最下部の座標を超えたら、自分自身を消去するようにする。
  • 自分自身を消去したい時は、queue_free() を呼ぶ。

プレイヤーキャラ(Area2Dノード)を作った時は、_process(delta) の中で処理を書いたけど。今回は _physics_process(delta) の中で処理を書いている。物理法則に基づいて動くオブジェクトの場合は、_process(delta) ではなくて、_physics_process(delta) の中に処理を書くこと、と決まっているらしい。

さておき、これで林檎キャラは画面最下部を超えると自分自身を消去するようになった。

爆弾キャラを作成。 :

林檎キャラを作成した時と同様の手順で、爆弾キャラのシーンも作成する。

godot_tuto09_create_bomb_ss01.png

godot_tuto09_create_bomb_ss02.png

_Bomb.gd
extends RigidBody2D

export var kind = "bomb"
export var h = 96
var screen_size

func _ready():
    screen_size = get_viewport_rect().size

#func _process(delta):
#   pass

func _physics_process(delta):
    if position.y > screen_size.y + h:
        queue_free()

Apple との違いは…。
  • ルートノード名が Bomb。
  • シーン名が Bomb.tscn。
  • Sprite の Frame値が、爆弾の絵を指す「1」になってる。
  • スクリプト内では export var kind = "bomb" になってる。

F6キーを押して実行すれば、林檎キャラと同じように、爆弾も上から下へと落ちていく。

林檎も爆弾もほとんど同じ処理なので、本来は共通で使えるシーンを作ってどうにかするべきなのかもしれないけれど、まだそのあたり、どんな感じに作業すればいいのか分かってない…。

何にせよ、これで上から下へと落ちていく林檎と爆弾を作れた。次回はこの2つをゲームウインドウ内で大量発生させる予定。

2019/10/26() [n年前の日記]

#1 [krita] kritaを久々に起動

画像素材を作成しようと krita 4.2.7.1 を起動して、マウスを使って作業しようとしたら、選んでも描けないブラシがあることに気が付いて。Kirta 3.x 時代のブラシだから、なのかな…。

もしかして筆圧が無いと描けないのではと思いついて、試しにペンタブレットを繋いで使ってみたら、それらのブラシもちゃんと動作してくれた。なるほど、ペンタブレットの筆圧が入らないと動かないブラシもあるのね…。勉強になった。

さておき、用紙のテクスチャっぽいものを反映させながら描きたいと思ったものの、何をどうすればいいのか…。

ブラシの整理が上手くいかない。 :

気になったブラシプリセットを次々にインストールしていたら、ブラシプリセットの一覧数がかなり多くなってしまってどれがどれやら状態に。タグを整理しようと試みたものの、登録を空にして削除したはずのタグが次回起動時に復活してしまう。

どうやら、各ブラシプリセットは、keira起動時に設定済みのタグを発生させるようで。例えば、Kirta3.x時代のブラシは「paint」タグを、Krita4.x時代のブラシは「Paint」タグを自動登録するようで、一覧上で「Paint」「paint」が並ぶ状態に。しかも、アルファベット順にソートされるから、大文字で始まる「Paint」が上のほうに、小文字で始まる「paint」が下のほうになったりして…。

大文字と小文字を無視して並べるオプションとかないのかな。あるいは、任意の順番に並べる機能とか。

もっとも、本来なら、自分がよく使うブラシをお気に入りプリセットあたりに登録して使うのが妥当なのかもしれず。

2018/10/26(金) [n年前の日記]

#1 [pc] 昨今のCPUとチップセットについて少しググってたり

昨今のメジャーなCPUとチップセットについて全く知らないので少しググってたり。AMD Ryzen の評判がいいらしいけど、どのチップセットなら最新版が動くのだろう、みたいなところから。

Intel製CPUは脆弱性が見つかって、その脆弱性に対策しようとしてパフォーマンスが落ちたという話を聞くわけで。いずれハードウェア的に対策された版が出てくるのだろうけど、それまではその手の影響をさほど受けないAMD製CPUのほうがいいのかなと…。

#2 [web] なぜblogを消すのだろう

Web上で時々見かける風景ではあるけれど。せっかく書き溜めたblogを、何故消すのだろう…。

Webを利用してきた者ならば、リンクをクリックしたら404だった時の哀しみを何度も何度も味わっているはずなのに。何故、人は、逆の立場になると、自身のblogをあっさり消してしまうのだろう。404を目にして悲しみに打ちひしがれたあの頃の自分を、そんなにも世界のどこかで、自らの手で何度も繰り返し再生産したいのだろうか。彼等は他者に対して哀しみを与える存在になりたいのか。一体、何に対して、誰に対して復讐しようとしているのか。みたいな。

そもそも、「blogは更新しなければ存在意義がない」と思い込むのがおかしい。記事に日付さえ ―― 年月日さえ記してあれば、書きっぱなし、ほったらかしのままで良いではないか。「この当時、この人は、こんなことを考えていたのだ」「この頃、こんなことが話題になっていたのだ」 ―― そういった記録にも十分価値がある事を私達は知っているはずではないか。「blog」とは何の略か。「Web のログ」の略だろう。「ログ」とは何か。記録のことだ。そこに記録として存在していれば、それはもう、それだけで、立派なblog。そう考えれば放置状態でいいではないか。頻繁な更新なんて新聞社やニュースサイトに任せておけばいい。それとも君は一人新聞社にでもなりたいのか。そういうわけでもないだろうに。

とは言え、例えば自身の愛用のブラウザからログインも書き込みもできない、以前と比べて劣化してしまったblogサービスに対し、無料利用ならまだしも、有料で契約して、小銭を払ってアカウントを維持し続けるのもフツーは馬鹿馬鹿しくなって当然という気もするし。「ちゃんと仕事しろよ。何やってんだよ」「あったまきた。お前達のサービスなんて金輪際使ってやらねえ」と怒りに任せて全削除、という展開もありそうではあるなと。

ログインできないという症状は、「俺はこいつらから拒否された」→「金を払ってるのに客扱いされてない」→「俺の存在が無視されてる」的感覚に繋がっていくし。人間誰しも存在を無視されるのが一番堪えるし、そこでつけられた心の傷は、いずれ恨みにすら容易に変化するわけで。そうやってアルファブロガーがポツポツと離れていくサービスに、はたして未来はあるのだろうか。

しかし、そういった気持ちの流れは理解できたとしても、それでも、本来blogは消す必要などないし、更新しないことを恥じる必要もないですよ、と言いたいのだけど。もちろん、サービスが消滅したとか、料金が払えなくなったとか、サーバのHDDが吹っ飛んだとか、何かの外的要因で消えてしまったなら話は別だけど。自分の手で消す必要はどこにも無いんだけどなあ。

でもまあ、やっぱり、消す人達は、きっと何かに復讐したいのだろう…。「どうだ! 消してやったぞ! 思い知れ!」と誰かに毒づきたくてそういうことをするのかもしれない。だけどおそらく、そんなことをしてみても、思い知らせてやりたい相手からは綺麗にスルーされて、藁にも縋る気持ちでググって飛んできた人達が404で泣く、そんな場面がほとんどであろう予感も。

ググって飛んできた人達には何の罪もないのだから、残せるなら残したほうが、と思うのだけどな。

あるいは、多くの先人達が残してくれた各種文献に助けられておきながら、自分の番が来たら全削除というのも、人として不義理じゃないかと思ったりもするわけで。放置しておくだけで、その手の義理は果たせるのに。どうして、放置以上のアクションをわざわざ取って、意地の悪い状態にしてしまうのだろう。そんなこと、しなくていいのに…。

2017/10/26(木) [n年前の日記]

#1 [raspberrypi][golang] Raspberry Pi Zero WにSDL2 + golang + go-sdl2をインストール

以下のページで、golang(Go言語)から SDL2 を扱える、go-sdl2 なるライブラリがあると知ったわけで。

_Golang と SDL2 でゲームを作る - KaoriYa

これを動かしてみて、すんなり動くようであれば、少なくともSDL2はちゃんとビルドされてることが分かるかもしれないなと。

ということで、Raspberry Pi Zero W + raspbian stretch 上でインストールを試みたり。

前提条件。libSDL2*.soの在り処。 :

標準状態というか、公式リポジトリから libsdl2-dev をインストールすると…。
  • /usr/include/SDL2/ 以下に *.h が、
  • /usr/lib/arm-linux-gnueabihf/ 以下に libSDL2*.so が、
それぞれ入ってる状態になる。

_Debian -- stretch の libsdl2-dev パッケージに関する詳細
_Debian -- パッケージのファイル一覧: libsdl2-dev/stretch/armhf
$ cd /usr/lib/arm-linux-gnueabihf/
$ ll *SDL2*
lrwxrwxrwx 1 root root      20 12月 28  2016 libSDL2-2.0.so -> libSDL2-2.0.so.0.4.1
lrwxrwxrwx 1 root root      20 12月 28  2016 libSDL2-2.0.so.0 -> libSDL2-2.0.so.0.4.1
-rw-r--r-- 1 root root 1019424 12月 28  2016 libSDL2-2.0.so.0.4.1
-rw-r--r-- 1 root root 1512430 12月 28  2016 libSDL2.a
lrwxrwxrwx 1 root root      20 12月 28  2016 libSDL2.so -> libSDL2-2.0.so.0.4.1
lrwxrwxrwx 1 root root      26  1月 27  2016 libSDL2_image-2.0.so -> libSDL2_image-2.0.so.0.0.1
lrwxrwxrwx 1 root root      26  1月 27  2016 libSDL2_image-2.0.so.0 -> libSDL2_image-2.0.so.0.0.1
-rw-r--r-- 1 root root   67316  1月 27  2016 libSDL2_image-2.0.so.0.0.1
-rw-r--r-- 1 root root   83874  1月 27  2016 libSDL2_image.a
lrwxrwxrwx 1 root root      26  1月 27  2016 libSDL2_image.so -> libSDL2_image-2.0.so.0.0.1
lrwxrwxrwx 1 root root      26  2月  2  2016 libSDL2_mixer-2.0.so -> libSDL2_mixer-2.0.so.0.0.1
lrwxrwxrwx 1 root root      26  2月  2  2016 libSDL2_mixer-2.0.so.0 -> libSDL2_mixer-2.0.so.0.0.1
-rw-r--r-- 1 root root  168932  2月  2  2016 libSDL2_mixer-2.0.so.0.0.1
-rw-r--r-- 1 root root  221600  2月  2  2016 libSDL2_mixer.a
lrwxrwxrwx 1 root root      26  2月  2  2016 libSDL2_mixer.so -> libSDL2_mixer-2.0.so.0.0.1
lrwxrwxrwx 1 root root      24  2月  2  2016 libSDL2_net-2.0.so -> libSDL2_net-2.0.so.0.0.1
lrwxrwxrwx 1 root root      24  2月  2  2016 libSDL2_net-2.0.so.0 -> libSDL2_net-2.0.so.0.0.1
-rw-r--r-- 1 root root   13828  2月  2  2016 libSDL2_net-2.0.so.0.0.1
-rw-r--r-- 1 root root   14674  2月  2  2016 libSDL2_net.a
lrwxrwxrwx 1 root root      24  2月  2  2016 libSDL2_net.so -> libSDL2_net-2.0.so.0.0.1
-rw-r--r-- 1 root root  220602 12月 28  2016 libSDL2_test.a
lrwxrwxrwx 1 root root      20  2月  8  2016 libSDL2_ttf-2.0.so -> libSDL2_ttf-2.0.so.0
lrwxrwxrwx 1 root root      25  2月  8  2016 libSDL2_ttf-2.0.so.0 -> libSDL2_ttf-2.0.so.0.14.0
-rw-r--r-- 1 root root   26124  2月  8  2016 libSDL2_ttf-2.0.so.0.14.0
-rw-r--r-- 1 root root   23446  2月  8  2016 libSDL2_ttf.a
lrwxrwxrwx 1 root root      25  2月  8  2016 libSDL2_ttf.so -> libSDL2_ttf-2.0.so.0.14.0
-rw-r--r-- 1 root root     936 12月 28  2016 libSDL2main.a

独自にビルドした *.so を使うということは、上記の場所ではなく、別の場所にある *.so を呼び出せるようにする、ということ。

SDL2のビルドに必要なパッケージをインストール。 :

以下を参考にしてSDL2をビルドする。

_Golang と SDL2 でゲームを作る - KaoriYa
_Hardware Accelerated SDL 2 on Raspberry Pi | Life, The Universe and ... Everything!

公式リポジトリ版の libsdl2-dev をアンインストール。
sudo apt-get remove -y --force-yes libsdl2-dev
sudo apt-get autoremove -y

SDL2のビルドに必要になりそうなパッケージをインストール。
sudo apt install build-essential libfreeimage-dev libopenal-dev libpango1.0-dev libsndfile1-dev libudev-dev libasound2-dev libjpeg-dev libtiff5-dev libwebp-dev libaudio-dev libdbus-1-dev automake libfontconfig-dev qt5-default mercurial libtool libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxss-dev libesd0-dev freeglut3-dev libmodplug-dev libsmpeg-dev libmpg123-dev

また、以下を眺めて、必要になりそうなパッケージがあったら追加インストールする。

_Debian -- stretch の libsdl2-dev パッケージに関する詳細
_Debian -- stretch の libsdl2-image-2.0-0 パッケージに関する詳細 _Debian -- stretch の libsdl2-ttf-2.0-0 パッケージに関する詳細

SDL2のソースを取得。 :

mkdir ~/sdl2
cd ~/sdl2

wget https://www.libsdl.org/release/SDL2-2.0.7.tar.gz
wget https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.2.tar.gz
wget https://www.libsdl.org/projects/smpeg/release/smpeg2-2.0.0.tar.gz
wget https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.2.tar.gz
wget https://www.libsdl.org/projects/SDL_net/release/SDL2_net-2.0.1.tar.gz
wget https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-2.0.14.tar.gz

_Simple DirectMedia Layer - SDL version 2.0.7 (stable)
_SDL_image 2.0
_smpeg2
_SDL_mixer 2.0
_SDL_net 2.0
_SDL_ttf 2.0

SDL2をビルド。 :

SDL2のソースを解凍して、configure して、make して、sudo make install する。
tar zxvf SDL2-2.0.7.tar.gz
cd SDL2-2.0.7
mkdir build
cd build

configure は、以下のようなオプションをつけるらしいけど…。
../configure --disable-pulseaudio --disable-esd --disable-video-mir --disable-video-wayland --disable-video-x11 --disable-video-opengl

Pi2 の場合は、configure に「--host=armv7l-raspberry-linux-gnueabihf」を追加するらしい。

Pi1 や Zero は…。巷のページを見ると何もつけなくてもいいのかな。どうなんだろ。「SDL 2.0.4 は --host=arm-raspberry-linux-gnueabihf を指定しろ」と書いてある事例も見かけたけど…。

_PiLove - LOVE on RaspberryPI

とりあえず指定しておくか…。
../configure --host=arm-raspberry-linux-gnueabihf --disable-pulseaudio --disable-esd --disable-video-mir --disable-video-wayland --disable-video-x11 --disable-video-opengl

configure をすると、最後のあたりで以下のような表示になった。
SDL2 Configure Summary:
Building Shared Libraries
Building Static Libraries
Enabled modules : atomic audio video render events joystick haptic power filesystem threads timers file loadso cpuinfo assembly
Assembly Math   :
Audio drivers   : disk dummy oss alsa(dynamic) nas(dynamic)
Video drivers   : dummy rpi opengl_es1 opengl_es2 vulkan
Input drivers   : linuxev linuxkd
Using libsamplerate : NO
Using libudev       : YES
Using dbus          : NO
Using ime           : YES
Using ibus          : NO
Using fcitx         : NO
Video drivers に、rpi とか opengl_es2 があるから…これで合ってるのかな…?

makeしてインストールする。
make
sudo make install
  • /usr/local/include/SDL2/ 以下に *.h が、
  • /usr/local/lib/ 以下に libSDL2*.so が、
それぞれコピーされた。

他のSDL2関係もビルド。 :

SDL2_image, smpeg2. SDL2_mixer, SDL2_ttf もビルドする。
tar zxvf SDL2_image-2.0.2.tar.gz
cd SDL2_image-2.0.2 && mkdir build && cd build
../configure --host=arm-raspberry-linux-gnueabihf
make
sudo make install

インストール時、以下のようなメッセージが表示された。
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib
If you ever happen to want to link against installed libraries in a given directory,
LIBDIR, you must either use ibtool,
and specify the full pathname of the library,
or use the `-LLIBDIR' flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
「/usr/local/lib にインストールされたよ」と言ってるのだな…。

smpeg2をビルドしてインストール。
tar zxvf smpeg2-2.0.0.tar.gz
cd smpeg2-2.0.0 && mkdir build && cd build
../configure --host=arm-raspberry-linux-gnueabihf
make

エラーが出る。
$ make
/bin/bash ./libtool  --tag=CXX   --mode=compile g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"smpeg2\" -DVERSION=\"2.0.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -I..     -g -O2 -D_REENTRANT -I/usr/local/include/SDL2 -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -DTHREADED_AUDIO -DNDEBUG -Wall -I.. -DNOCONTROLS -I.. -I../audio -I../video -fno-exceptions -fno-rtti -MT hufftable.lo -MD -MP -MF .deps/hufftable.Tpo -c -o hufftable.lo `test -f 'audio/hufftable.cpp' || echo '../'`audio/hufftable.cpp
libtool: compile:  g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"smpeg2\" -DVERSION=\"2.0.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -I.. -g -O2 -D_REENTRANT -I/usr/local/include/SDL2 -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -DTHREADED_AUDIO -DNDEBUG -Wall -I.. -DNOCONTROLS -I.. -I../audio -I../video -fno-exceptions -fno-rtti -MT hufftable.lo -MD -MP -MF .deps/hufftable.Tpo -c ../audio/hufftable.cpp  -fPIC -DPIC -o .libs/hufftable.o
../audio/hufftable.cpp:587:1: error: narrowing conversion of ‘-1’ from ‘int’ to ‘unsigned int’ inside { } [-Wnarrowing]
};
^
../audio/hufftable.cpp:587:1: error: narrowing conversion of ‘-1’ from ‘int’ to ‘unsigned int’ inside { } [-Wnarrowing]
../audio/hufftable.cpp:587:1: error: narrowing conversion of ‘-1’ from ‘int’ to ‘unsigned int’ inside { } [-Wnarrowing]
../audio/hufftable.cpp:587:1: error: narrowing conversion of ‘-1’ from ‘int’ to ‘unsigned int’ inside { } [-Wnarrowing]
../audio/hufftable.cpp:587:1: error: narrowing conversion of ‘-1’ from ‘int’ to ‘unsigned int’ inside { } [-Wnarrowing]
../audio/hufftable.cpp:587:1: error: narrowing conversion of ‘-1’ from ‘int’ to ‘unsigned int’ inside { } [-Wnarrowing]
Makefile:778: ターゲット 'hufftable.lo' のレシピで失敗しました
make: *** [hufftable.lo] エラー 1

解決策を探したら、以下に、参考になりそうな patch があった。

_FS#51926 : [smpeg][smpeg2] Build failed with gcc 6

参考にして以下のように修正。
--- smpeg2-2.0.0/audio/hufftable.cpp.orig	2017-10-26 05:31:28.825871428 +0900
+++ smpeg2-2.0.0/audio/hufftable.cpp	2017-10-26 05:35:28.618167063 +0900
@@ -9,6 +9,7 @@
 #include "config.h"
 #endif
 
+#include <climits>
 #include "MPEGaudio.h"
 
 static const unsigned int
@@ -550,11 +551,11 @@ htd33[ 31][2]={{ 16,  1},{  8,  1},{  4,
 
 const HUFFMANCODETABLE MPEGaudio::ht[HTN]=
 {
-  { 0, 0-1, 0-1, 0,  0, htd33},
+  { 0, UINT_MAX, UINT_MAX, 0,  0, htd33},
   { 1, 2-1, 2-1, 0,  7,htd01},
   { 2, 3-1, 3-1, 0, 17,htd02},
   { 3, 3-1, 3-1, 0, 17,htd03},
-  { 4, 0-1, 0-1, 0,  0, htd33},
+  { 4, UINT_MAX, UINT_MAX, 0,  0, htd33},
   { 5, 4-1, 4-1, 0, 31,htd05},
   { 6, 4-1, 4-1, 0, 31,htd06},
   { 7, 6-1, 6-1, 0, 71,htd07},
@@ -564,7 +565,7 @@ const HUFFMANCODETABLE MPEGaudio::ht[HTN
   {11, 8-1, 8-1, 0,127,htd11},
   {12, 8-1, 8-1, 0,127,htd12},
   {13,16-1,16-1, 0,511,htd13},
-  {14, 0-1, 0-1, 0,  0, htd33},
+  {14, UINT_MAX, UINT_MAX, 0,  0, htd33},
   {15,16-1,16-1, 0,511,htd15},
   {16,16-1,16-1, 1,511,htd16},
   {17,16-1,16-1, 2,511,htd16},
  • #include "MPEGaudio.h" の前に、#include <climits> を追加。
  • 「0-1」と書かれてる部分を、「UINT_MAX」で置き換え。

なんでエラーが出るのかなと思ったら、Debian stretch (raspbian stretch)は gcc6 が標準になったらしい。そのせいでエラーが出るっぽい。

_第5章 stretch で注意すべき点
_2016年6月28日 Debian 9 "Stretch"のコンパイラはGCC 6オンリーで:Linux Daily Topics|gihyo.jp … 技術評論社

引き続き make とインストール。
make
sudo make install
今度は通った。

SDL2_mixer をビルドしてインストール。
cd ~/sdl2
tar zxvf SDL2_mixer-2.0.2.tar.gz
cd SDL2_mixer-2.0.2 && mkdir build && cd build
../configure --host=arm-raspberry-linux-gnueabihf
make
sudo make install

SDL2_net をビルドしてインストール。
cd ~/sdl2
tar zxvf SDL2_net-2.0.1.tar.gz
cd SDL2_net-2.0.1 && mkdir build && cd build
../configure --host=arm-raspberry-linux-gnueabihf
make
sudo make install

SDL2_ttf もビルドしてインストールするのだけど、少し修正。OpenGLを使わないように修正してからビルドするのだとか。
cd ~/sdl2
tar zxvf SDL2_ttf-2.0.14.tar.gz
cd SDL2_ttf-2.0.14 && mkdir build && cd build
sed -i -e 's/have_opengl=yes/have_opengl=no/' ../configure
../configure --host=arm-raspberry-linux-gnueabihf
make
sudo make install

共有ライブラリを探す順番を変更。 :

SDL2をビルドして共有ライブラリファイルを作ったわけだけど、公式リポジトリ版のファイルが使われてしまったら困るわけで。

_Raspberry Piに最新版の各種ツール・言語・ライブラリをインストールする - Qiita

/etc/ld.so.conf を修正して、一番最初の行に /usr/local/lib を追加。これで、「最初に /usr/local/lib 以下から探すように」と設定できるはず。

キャッシュを更新。
sudo ldconfig

順番を確認。
$ ldconfig -p | grep SDL
        libSDL2_ttf-2.0.so.0 (libc6,hard-float) => /usr/local/lib/libSDL2_ttf-2.0.so.0
        libSDL2_ttf-2.0.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL2_ttf-2.0.so.0
        libSDL2_net-2.0.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL2_net-2.0.so.0
        libSDL2_mixer-2.0.so.0 (libc6,hard-float) => /usr/local/lib/libSDL2_mixer-2.0.so.0
        libSDL2_image-2.0.so.0 (libc6,hard-float) => /usr/local/lib/libSDL2_image-2.0.so.0
        libSDL2-2.0.so.0 (libc6,hard-float) => /usr/local/lib/libSDL2-2.0.so.0
        libSDL2-2.0.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL2-2.0.so.0
        libSDL_ttf-2.0.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL_ttf-2.0.so.0
        libSDL_mixer-1.2.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL_mixer-1.2.so.0
        libSDL_image-1.2.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL_image-1.2.so.0
        libSDL-1.2.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL-1.2.so.0
/usr/local/lib 以下の *.so のほうが先に表示されてる、ように見えるので、コレで大丈夫なのではないかな…。たぶん。おそらく。自信無し。

SDL2のバージョンを確認してみる。
$ sdl2-config --version
2.0.7
公式リポジトリの libsdl2-dev をインストールした場合は 2.0.5 と表示されるはずなので、今回ビルドしたSDL2が使われている、のだと思う。

golangをインストール。 :

SDL2 が本当にビルドできているのか確認するために、go-sdl2 を動かしてみたい。そのためには、golang(Go言語) をインストールしないといけない。ということで、インストールしてみる。

環境は、Raspberry Pi Zero W + raspbian stretch。

_Raspberry PiでGo言語を動かす | Golang | kosakalab

golang の最新版を探す。以下から入手できる。

_Downloads - The Go Programming Language

golang 現行版 1.9.1 の ARMv6版は、
https://storage.googleapis.com/golang/go1.9.1.linux-armv6l.tar.gz
にあるらしい。ディレクトリを作ってダウンロード。
mkdir ~/golang
cd ~/golang
wget https://storage.googleapis.com/golang/go1.9.1.linux-armv6l.tar.gz

解凍する。
sudo tar -C /usr/local -xzf go1.9.1.linux-armv6l.tar.gz
/usr/local 以下に、go というディレクトリが作られる。はず。

/usr/local/go/bin に PATH を通す。また、環境変数 GOPATH も指定しておく。GOPATH の場所は…。今回は ~/go というディレクトリにしておく。
vi ~/.profile
# どこかに追加
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go

ログアウトして再度ログイン。これでgoが呼びされるようになってるはず。

golangの動作確認。 :

go のバージョンを確認。
$ go version
go version go1.9.1 linux/arm
インストールされてるっぽい。

巷のサンプル等を打ち込んで動作確認。

_GolangでHello World! - Qiita

go run hello.go
go build hello.go
動いてるっぽい。

go-sdl2をインストール。 :

go-sdl2は以下で公開されてる。

_veandco/go-sdl2: SDL2 binding for Go

goを使ってインストール。~/go/以下にインストールされるはず。
go get -v github.com/veandco/go-sdl2/sdl
go get -v github.com/veandco/go-sdl2/mix
go get -v github.com/veandco/go-sdl2/img
go get -v github.com/veandco/go-sdl2/ttf
あるいは以下。
go get -v github.com/veandco/go-sdl2/{sdl,mix,img,ttf}

随分時間がかかったけどインストールできたっぽい。たぶん。

go-sdl2の動作確認。 :

以下の記事の最後のほうで紹介されてるソースを、 gosdl2hello.go というファイル名で保存して実行。

_Golang と SDL2 でゲームを作る ・ KaoriYa
go run gosdl2hello.go

赤い四角が表示されて、一定時間が経過したら自動で終了した。

ということは、go-sdl2 もインストールできてるし、ビルドしたSDL2も動いてる、ということだろうか。すると、gosu がおかしいのか…?

gopherrunを試しに動かしたり。 :

以下で公開されてる gopherrun を動かしてみたり。

_koron/gopherrun
_Golang と SDL2 でゲームを作る ・ KaoriYa
go get -v -u -d github.com/koron/gopherrun
cd ~/go/src/github.com/koron/gopherrun
go build
./gopherrun

go build の段階でエラーが出た。どうも、go-sdl2 の構成が昔と今とでは変わってるっぽい。

game.go と gopherrun.go の最初のほうの、sdl_image や sdl_mixer を指定してるあたりを以下のように修正。
import (
        "log"

        "github.com/veandco/go-sdl2/sdl"
        "github.com/veandco/go-sdl2/img"
        "github.com/veandco/go-sdl2/mix"
)
import (
        "math/rand"
        "github.com/veandco/go-sdl2/sdl"
        "github.com/veandco/go-sdl2/mix"
        "golang.org/x/image/math/fixed"
)
これで go build が通るようになった。

go build で作成された、実行形式のファイル、./gopherrun を実行。

ゲーム画面っぽい画面がちゃんと出た。スペースキーでジャンプ。ESCキーで終了(のはず)。

ただ、不具合らしきもの出てる…。
  • 音楽だかSEだかが鳴らない…。コンソールには、「ALSA lib pcm.c: ???? :(snd_pcm_recover) underrun occurred」てなメッセージが残っている。
  • 処理が遅い…。かなりガクガクしてる…。まあ、遅いのは Raspberry Pi Zero で動かしてるから、かもしれず。
  • ESCキーを押すと終了するはずが、画面は消えても処理が戻ってこない。キーボードからの入力ができなくなる。Ctrl + C も受け付けない。

とはいえ、画面が出たのはありがたい。

画面が出た・画像が表示されたということは、SDL2関係はビルドできてる可能性が高いのだろう。となると、やはり gosu がおかしい…。

#2 [raspberrypi][linux] Raspberry Pi Zero W上にtmuxをインストールしてみたり

Pi Zero W に putty からアクセスした際に、何かの処理をしながら別の何かを確認したい、てな時があるわけで。たしかそういう時に使える、複数の画面を表示できるユーティリティがあったような…。GNU screen みたいな…。

ググってみて思い出した。tmux だ。

_tmuxを使い始めたので基本的な機能の使い方とかを整理してみた - 完熟トマト
_tmuxの使い方 - Qiita
_第127回 ターミナルマルチプレクサ tmuxを使ってみよう:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社
_達人に学ぶ.tmux.confの基本設定 - Qiita
_tmuxが快適、かつ .tmux.conf の設定 - Qiita

ということで、Pi Zero W 上でインストール。
sudo apt install tmux
解説ページを見ながら設定していこう…。

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

#1 [pc] メインPCのHDDが遅い気がする

どうもメインPCのHDDが遅いような気がする。GIMP や Inkscape を起動する際に数分かかるのはどうもおかしいというか。以前も数分かかってたけど、もうちょっと速かったような。

環境は…。 もしかすると、 _チップセットが H67 だからSATAが少しずつ壊れていく不具合が発生している のでは…。でも、SATAポート0〜1番(SATA 3.0)は問題が起きない、問題が起きるのは2番以降(STAT 2.0)という話じゃなかったか。それに、H67 でも、B3ステップは不具合修正版のはず…。

CrystalDiskMark で測定してみた。
-----------------------------------------------------------------------
CrystalDiskMark 5.1.2 x64 (C) 2007-2016 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

   Sequential Read (Q= 32,T= 1) :   125.153 MB/s
  Sequential Write (Q= 32,T= 1) :   113.850 MB/s
  Random Read 4KiB (Q= 32,T= 1) :     1.734 MB/s [   423.3 IOPS]
 Random Write 4KiB (Q= 32,T= 1) :     1.602 MB/s [   391.1 IOPS]
         Sequential Read (T= 1) :   120.791 MB/s
        Sequential Write (T= 1) :   110.307 MB/s
   Random Read 4KiB (Q= 1,T= 1) :     0.585 MB/s [   142.8 IOPS]
  Random Write 4KiB (Q= 1,T= 1) :     1.140 MB/s [   278.3 IOPS]

  Test : 100 MiB [C: 88.7% (203.1/229.0 GiB)] (x3)  [Interval=5 sec]
  Date : 2016/10/26 21:17:19
    OS : Windows 10 Professional [10.0 Build 10586] (x64)
    HDD WDC WD10EALX-009BA0 (SATA 6Gb/s)

アレ? HDD自体は、そんなに遅くないな。ということは…どゆこと?

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

近所のコンビニ(?)で煙草を、ザ・ビッグで夜食等を購入。

ゴールデンバットがフィルタ付きになってた。 :

煙管を使って吸ってる関係で、フィルタのついてないゴールデンバットを買ってたのだけど。今回買ったソレを開けてみてビックリ。なんでフィルタが付いてるんだ…。今までフィルム包装されてなかったのに、フィルム包装されてたから、何か妙だなとは思ったけれど…。

ググってみたら、2016年6月からフィルタ付きで売り始めたらしい。知らなかった。余計なことをしやがって…。

_ゴールデンバットにフィルター?狂気の沙汰だろ… - Togetterまとめ
_ゴールデンバットがフィルター付きに変更されていた... - 雨降ればブログ

それにしても、今まで買ってた品は、6月前に店が仕入れてた品だったのだな。自分は何も知らないまま、運良く買えてたのか…。逆に考えると、つまりはそれだけこの銘柄を買う人が少なかったということでもありそうな。市内中を探したけど、売ってる店は一軒しか見つからなかったし。どの店でも、そもそも売ってないという。

さて、困った。フィルタは要らないんだけど、どうしたもんか…。いやまあ、「そもそも吸うなよ」「禁煙しろよ」としか言われない話ではあるのだけど。

2015/10/26(月) [n年前の日記]

#1 [anime][neta] 「またつま」

唐突になんとなく。ルパン三世に登場するゴエモンの、「またつまらぬものを斬ってしまった」を略せないのかなとしょーもないことを考え始めてしまったのでメモ。例えば、またつま、とか。

ゴエモンが斬鉄剣を振るって対象を斬った後、斬鉄剣を鞘に収めながら瞑っていた目をカッと開いて「またつまッ!」と叫ぶと対象が空中でパッカーン、みたいな。…これはこれでなんだかカッコいい気がする。

そのタイミング、戦隊ヒーローのアレじゃん。

記憶が定かじゃないけれど、たしかTVSPのどれかで、「またつま」について少し捻った台詞を喋らせてた、そんな記憶も。そういうノリで、色々アレンジができそうな気もする。ていうかTVSPで何度かしてたと思うけど。

ゴエモン、斬鉄剣で○○を斬る。
ゴエモン 「またつまッ!」
次元 「なんだそりゃ?」
ゴエモン 「『またつまらぬものを斬ってしまった』の略でござる。
      近頃この台詞にも飽きてきたのでな。多少省略できぬものかと」
次元 「ハッハッハ。たしかに散々聞かされてる気がするぜ。
    一仕事に1回は言ってんじゃねえか?」
ゴエモン 「酷い時は3,4回言ってるでござるよ…またつま」

次元とゴエモンを乗せてその場を去っていくフィアット。

自分、またつまらぬことを妄想してるなあ。

2014/10/26() [n年前の日記]

#1 [nitijyou] 福島県自治選挙に行ってきた

お袋さんが投票に行くというので、車に乗せてもらって行ってきたり。

まあ、誰が当選するかは、どうせ既に決まってるんだろうけど。

夜のニュースを見て、まあそうだよね、と思ったり。

#2 [nitijyou] ペンキ塗り工事は終わったらしい

一通り全ての作業は終わったらしい。お疲れ様でしたありがとう、みたいな。

#3 [nitijyou] HDDレコーダが一杯になってた

ここ一週間ほど色々あって全くアニメを見てなかったのだけど。HDDレコーダの電源を入れたら「空き容量は全くありません」のメッセージ表示。確認してみたら本当に空き容量が0だった。

USB接続外付けHDDに、ライダー鎧武その他の録画を移動。まだ視聴できてないのだけど、いつ消化できるのやら…。

「M3〜ソノ黒キ鋼〜」なるアニメも録画してたけど、そもそも前半は放送されてなかったから全く見ていないし、総集編は見たけど何が何やらだし、最終回は別のアニメと放送時間が重なりまくっていて録画できなかったし。もう視聴は諦めることにして削除。

DR録画しかしてないので容量的に厳しくて。圧縮録画すればもうちょっと、とは思うけど、東芝製HDDレコーダはDR録画以外をするとフリーズするという噂があるから怖くて。

2013/10/26() [n年前の日記]

#1 [nitijyou] 夜中に地震

夜中の2時ちょっと過ぎに、ドゴゴゴという感じの激しい揺れが。感覚的に、1分以上揺れていたような気がする。またあのクラスが来たのではと、急いで部屋の出口に走ったり。

台風が近づいていて地盤が緩んでるところに、この揺れは…と不安に。被害が無ければいいけれど…。

#2 [windows] SearchFilterHost.exeがCPUコア1つ分使い果たしてしまう

数日前から、SearchFilterHost.exeというプログラムが、CPUコア1つ分をずっと使い続けてしまう状態に。Windows Search で使ってるプログラムらしいけど。なんでこんな状態に…。ちなみに環境は Windows7 x64。

とりあえず、コントロールパネル → インデックスのオプション(検索欄に「インデックス」と打ち込めば項目が出てくるはず)、で設定を見直し。xmlを検索しないようにすると改善する時がある、てな話を見かけたので試してみたり、あるいは再構築をしてみたり。詳細設定ボタンを押せば、そのあたりが選べるようになる。

しかし相変わらず、何かのタイミングで、CPU使用率が凄い状態になってしまう。検索を開始した頃はそれほど重くなってないので、たぶん何かのファイルを検索し始めた時に重くなるのかなと。犯人に相当するファイルが居そうな気がする…。

ファイルの拡張子によって、ファイルのプロパティだけをインデックスするか、中身(コンテンツ?)もインデックスするか設定できるように見えた。たぶん、コンテンツを眺めてるうちに重くなるのではあるまいかと。そこで、自分が知らない拡張子、かつ、コンテンツもインデックスする設定になっている拡張子は、プロパティだけをインデックスするように変更。

これで解決してくれるといいのだけど…。

pdfはインデックスしてくれないらしい。 :

インデックスのオプションを眺めてたら、「PDFファイル用のiFilterはねえよ」と表示されているのが気になったり。

ググってみたら、Adobe Reader をインストールすると、元々あったiFilterとやらが削除されてしまうそうで…。Adobeェ…。

_Adobe - Acrobat : For Windows : PDF iFilter 64 11.0.01 から入手できる、Windows x64用の iFilter をインストールすれば、Windows Search でPDFの中身も検索できる状態になるという話を見かけて試しにインストール。

2013/10/27追記。Googleドライブのせいかもしれず。 :

Windowsのイベントログを眺めていたら、「Googleドライブのフォルダにアクセスできねえです」と、Windows Searchがログを残してたことに気付いたり。もしかするとソレか…そのせいか…。

Googleも一時期、デスクトップサーチのプログラムを配布してた記憶があるけど。ライバル企業だから Windows Search の動作を妨害してたのだろうか…。いや、むしろそういうのって、Microsoft がやりそうだな…。「このユーザ、Googleドライブを入れてやがる。嫌がらせしてやるか」みたいな。でも、自分の環境、 Googleドライブも入れてるけど、SkyDriveも入れてるんですけどねえ…。SkyDriveユーザにも嫌がらせをするんかい…。まあ、根拠のない邪推なのですけど。

とりあえず、Googleドライブのフォルダを、除外フォルダ設定にしてみたり。これで改善すればいいのだけど…。

#3 [anime] ガンダムビルドファイターズ1〜2話を視聴

どういうアニメなのか全然情報を得てなかったのだけど。ガチのガンプラアニメのようで、これはなんだか嬉しいなと…。自分、プラレス3四郎とか好きだったんですわ…。それと、「玩具売るぞ!」てな目標がハッキリしてる企画って個人的に好きだったり。そういうアニメばかり見て育ってしまった世代なもんで…。

シリーズ構成・黒田洋介氏、監督・長崎健司氏と知り、「おお…」と。たしか黒田氏はガンダム玩具好きとどこかで聞いた記憶もあるし、ガンダムAGEで面白く感じた回が長崎コンテだった記憶もあるので、それぞれ良い方向に転がってくれたらいいなと。おそらく本格的ガンダム作品扱いはされないだろうし、偉い人達が出してくる条件は、ガンプラその他が売れればよし、みたいなソレじゃないかと想像するので、肩の力を抜きつつ、スタッフがやりたいようにやれたら、もしかして面白くなってくれるのでは、と勝手な想像と勝手な期待を。

でも、地上波で流してくれる局が少ないあたり、少し残念。まあ、BSで見れるだけマシかもしれんけど…。せっかくのガンダムシリーズなのに、田舎に住んでてBSが見れない御家庭の子供達は無視、なのか…。次代の客層が育たないのでは…。

#4 [anime] 蒼き鋼のアルペジオ、1〜2話を視聴

潜水艦アニメ、なのだろうか…。戦艦や潜水艦が全部美少女になってるあたりがなんというか…渋いのか渋くないのかよく分からない…。いや、えてして船舶は女性に喩えられたりするらしいから、これはこれで実にそれらしい自然な設定、なのかしらん。

3DCGでセルアニメ風を志向するサンジゲンが制作、らしくて。メカはもちろん、キャラも全部3DCGなのに、パッと見、手描きアニメかと見紛うほど。いやはや…さすがサンジゲン…相変わらずスゲエです…。劇場版レンズマンのCGシーンでワクワクしてた自分にとっては、夢のような映像。

岸誠二監督+シリーズ構成:上江洲誠氏+SF考証:森田繁氏…ってなんかもうその顔ぶれだけで期待してしまう…。 *1
*1: 岸監督作品は、「ダンガンロンパ」「P4」「人類は衰退しました」しか目にしてないのだけど、どう見てもフツーのセンスの監督さんではないな、てな印象で。上江洲氏は、「刀語」で名前を見てたので、好印象だったり。森田氏はガンダムSEEDやコードギアスで活躍した方らしいし。そんな感じで、「おお…」と。

2012/10/26(金) [n年前の日記]

#1 [nitijyou] 煙管を重曹で掃除

あまり綺麗にならないような。もしかして真鍮製ではなかったのかな…? とりあえず浸しておいてみよう…。

2011/10/26(水) [n年前の日記]

#1 [pc] ダンボール製PCケースを作り直した

昨日作成したケースがあまりにもデカイので、これはもうちょっと工夫すればどうにかなるはずだと。せっかくなので作り直してみたり。

親父さんからノコギリを借りて、M/Bを固定しているMDF板を、M/Bギリギリのサイズまで小さくして。絶縁スペーサを、もうちょっと低いモノと交換して。MDF板に貼り付けた下駄相当を薄くして。Amazonのダンボール箱も一回り小さいものを選んで。電源の置き場所をギリギリまで狭くして。

今度はそれなりに小さくなった。IN-WIN BK623程度には。このくらい小さければ動作確認する気力も湧いてくるというもの。

UBCDで起動して MEMTEST86+ を実行してみたけど、3周ほどエラー無しで回ってくれた。M/Bをダンボール箱の中でやたらとあちこちに動かしていたけど、特に壊れたということではなさげ。

利用したM/B、MSI K8MM-V のLEDのプラスマイナスがよく分からず。通常は基板上に印刷されているものなんだが…。マニュアルを見てもプラスマイナスが書いてない。「LEDがつかない時は端子を逆にすること」「極性を逆にしてもLEDが壊れることはない」としか書いてない。アバウトだな…。実際、POWER LEDを最初は逆に差してしまった。慌てて電源を切って本来の向きに差し直して一応点灯したけど、心臓に悪い。

それにしても。動いたはいいけれど使い道はとんと思いつかず。どうしたもんか。

#2 [pc] 日立製HDDが読み取れず

eSATA接続とUBS3.0接続をサポートしているHDDケース、玄人志向 GW3.5FR-U3E の中に、動作が怪しい Hitachi 0S03191 を入れて、i5-2500機にeSATAやUSB3.0で接続してみたけれど。数分待てばドライブの一覧が見えて、一見するとアクセスできるように見えたものの。コピーをしようとするとエクスプローラが固まってしまう。それどころか、Windows7 の起動終了すら妙に時間がかかってしまう。外付けHDDを1つ接続しているだけなのに…。

UBCDから起動した、DFT や DLGDIAG5 でチェックしようとするも。eSATA接続された 0S03191 (HDS723020BLA642) は認識できず。BIOS起動時、ブート選択メニュー内にHDD名が表示されているからチェックできるかと予想したけど…やはり直接SATA接続しないとダメなのか…。

先日別ケースに入れ直した Core 2 Duo 機の起動HDDを抜き出して、0S03191 を入れてみた。UBCD から DFT を起動したら認識された。やっぱり直接SATA接続しないとダメらしい。

ひょっとすると、GW3.5FR-U3E のACアダプタ電源に原因があったりはしないか。電流が足りてないとか。…裸族のお立ち台でもフリーズするという情報も見かけたし、その手の機器とは相性が悪いのかも。

それはともかく、Core 2 Duo機上で DFT の Quick Test をしたら、seek の際に異様に時間がかかるようで。以前は「クックックッ」とリズミカルにアクセスできていたのに、今回は「クッ……クックックッ……」という感じ。どうも特定の場所で止まってしまっているような。それでいて結果は0x00=エラー無し。なんでやねん。…何度かリトライすればまだ読めなくもない状態ということなんだろうか。それはそれでありがたい状態なのかもしれないが。

Core 2 Duo機上でも調子が悪いとなると、GW3.5FR-U3E の電流が足りてないから調子が悪くなった、という線は消える気がする。電源をどこから取っても調子がわるいのだから。しかし、だからと言って、GW3.5FR-U3E が設計上何の問題もないHDDケースかどうかまでは分からない。他のHDDを繋いでみて検証しないとたしかなことは言えない。…まあ、この手のケースは、使っているACアダプタによって、使えるHDDと使えないHDDがどうしても出てきてしまうのがフツーだろうとは思う。

中に Windows7 が入っているので、そのまま起動してみた。…黒い画面のまま固まった。リセットしてみた。Windowsのマークがアニメーションしてそのまま先に進まない。またリセット。随分と待たされて、ようやく起動。オンボードビデオで表示しているのでドライバ読み込み、かつ再起動を要求された。再起動。…この再起動ではスンナリと起動して首を傾げた。何故ここでスンナリと起動するのだろう。一体どういう状態なんだろうか…。

とりあえず、OSが起動している今のうちに、該当HDDの中にしか入ってないファイルをLAN経由でi5-2500機にコピー。FireFileCopy を使ってベリファイしつつ作業。

途中で何度かベリファイエラーが出た。必ずエラーになるというわけではなく、再度コピーしてみるとエラーは出ずにコピーできたりする。何が起きているのやら。うーん。

コピーしたファイルが既に壊れてる可能性は否定できない。以前バックアップを取っておいたファイルと比較していかないと…。

2010/10/26(火) [n年前の日記]

#1 [nitijyou] なんだか急に風が強く

先日、新潟のほうで竜巻が発生したらしいけど。まさかこのあたりも…。いや、地形的にそれはないのかもしれないけど。

#2 [anime] パプリカを再鑑賞

HDDレコーダから消す前にもう一度。やっぱり凄い。

2009/10/26(月) [n年前の日記]

#1 [pc] クローンゲームなる分野がちょっと気になる

悪魔城ドラキュラが好きで好きでしょうがない人達が作った本家クリソツなゲームがある、という話を見かけて動画を見てみたのだけど。あらゆるものが直線運動をしていて首を捻ったり。なんでそういう作りになるのか…。まあ、かなり昔の作品らしいので、今作ったらたぶんまともな動きになるのだろうけど。

それはともかく、似たようなゲームを作ったら、メーカから訴えられてしまったりするのだろうか。出来が悪かったらどうせ客もつかないから無視したほうがお得だし、あまりに出来が良過ぎたらいっそ開発陣と交渉して買い取ってしまって自社製品として売っちゃえばいいのでは、と、お花畑な事を妄想したりするのだけど。大体今時実際の開発作業をしてるのはほとんど外部の会社なんだし。

2008/10/26() [n年前の日記]

#1 [anime] ゲゲゲの鬼太郎、磯女の回

普段は惰性でBGVとして流してるのだけど。今回、演出・コンテは別にして、わけのわからない展開になんだか感心してしまった。何をどうしたらこんな筋書きを思いつくんだろう。素晴らしい。こういうのが鬼太郎なんだなと、なんとなく思ったりもして。

脚本は、 _吉村元希 氏。

#2 [anime] ガンダムOO2期目を鑑賞

1話から3話分ぐらいためてしまってたのを鑑賞。作画スゲエ…。盛り上げ方もなんかイイ感じ。OP映像もカッコイイ。とにもかくにもカッコイイ…。

それはともかく、福島におけるアニメ新番組というと、ガンダムOOとゴルゴ13だけだったりするわけで。何故にゴルゴ…。

#3 [windows] 動画再生用のアレコレをインストールしたりアンインストールしたり

動画のサムネイルを作成できる MovieThumbGenWin32.exe が、メインPC環境上では実行後にエラーを出すことに気がついて、再生用のアレコレをアンインストールしたり再インストールしたり。

ffdshow その他を個別インストールしたけれど、結果変わらず。結局最終的には CCCP (Combined Community Codec Pack) と Real Alternative の2つだけをインストールした状態に。ただ、MP4等を Windows Media Player 上で再生した際に色がおかしい状態を改善する設定にしておくと、MovieThumbGenWin32.exe や White Browser が異常動作してしまう。であればと、後者が正常動作するような設定にすると、前者で再生した際にやっぱり色がおかしくなって。色々設定を変えてみたけど、どちらも問題ない状態にはできず。まあ、VLC media player や GOM Player を使えば一応再生はできるけど…。

2007/10/26(金) [n年前の日記]

#1 [pc][web] _Nvu は一年前に開発中止がアナウンスされおり、現在は KompoZer というプロジェクトが後継になっています。

メモ。バグが放置されてたのは知ってたけど、完全に開発中止だったのか。>Nvu。

#2 [cg_tools] _VectorMagic | Index

ビットマップ画像をドローデータに変換してくれるサイト、かしら。本当に必要な色をスポイトで指定するあたりがヨサゲ。 _(via はてブ)

#3 [prog][iappli] python勉強中

ビットマップ画像を読み込んで、ポリゴンデータの元になるバイナリを出力するスクリプトを作成中。最初は RMagick (Ruby+ImageMagick) でやろうかと思ったけど、出来上がった後で .exe に変換する際に何か問題が起きそうなので、Python + PIL (Python Image Library) で作成を試みていたり。

バイナリ出力するところまではできたけど、本当に内容はあってるのかどうか…。画像に変換し直すスクリプトも作成して、チェックしてみるか…。

xmlで何かしら渡す方法がよくわからず。 :

ピクセル値のリストをスクリプト中に書かずに、外部ファイルにして読み込ませたほうがいいだろうと思ったのだけど、どんな外部ファイルにして渡すかで悩む。…やっぱり流行(?)に乗ってxmlを使うべき? かもしれんけど関連モジュールのドキュメントを読んでもよくわからず。

ただのテキストファイルに羅列して読ませるだけでも十分なんだろうけど…。

2006/10/26(木) [n年前の日記]

#1 [cg_tools] _がんばれ3DCG - 第1回 Poserに挑戦! [Step1]

「ひぃっ!」に笑った。

#2 [iappli] サウンドデータ差し替え版を送った

朝の提出期限までに間に合った。と思うけど。

複数の正解が出てこないようにするための処理を入れた。作り始める前は、「正解箇所を発見したら、該当箇所の一部を微妙に変えてから、また全部を再検索して」などと考えていたけど。下請け関数を作ってる途中で、問題が見つかったらまた最初からテーブルを丸々作り直せばいいのではないかと気づいたり。偶然に次ぐ偶然が延々と重なった場合は、生成→検索→問題あり→生成→検索→問題あり、をいつまでも繰り返してしまって、画面が先に進まなくなる可能性もありそうだけど。いくらなんでも永遠に処理が繰り返されることはないだろう…。ないといいな…。ホントにないのだろうか…。乱数まかせだしな…。もしかすると、別処理をするモードもつけておいたほうがいいのかもしれん。正解の構成要素の一部を除外した種類のみで、テーブルを作成する処理とか。生成回数が一定値を超えたら、そういう特別モード(?)に切り替えて生成する、とか。問題は簡単になるけど、いつまでも画面が先に進まないよりはいいだろう、みたいな。

残り時間が10秒より少なくなったら、1秒毎にSEを鳴らすようにしたのだけど。9秒から音が鳴り始める…。何故?
if ( (counter % FPS) == 0 && (counter / FPS) <= 10) playSE(n);
これじゃダメなのか。…ん? FPS で割った際の余りが 0 ということは、次のフレームでは秒数が -1 された値になるわけで、つまり、音を鳴らした1フレーム後に -1 された秒数が表示されてしまう。0と比較じゃなくて、(FPS-1)と比較せねばならんのかしら。

2005/10/26(水) [n年前の日記]

#1 [web] _強化されつつあるプロバイダーのセキュリティ対策サービス Outbound Port 25 Blockingを検証する

_25番ポートでの大量メール送信をブロックする「Outbound Port 25 Blocking」とは?

plalaの場合は、送信メール数で該当機能?設定?が無効→有効になる、とある。大量にメール送信してる人だけ送信できなくなるらしい。なんだか賢い対応かも。

#2 [web] _Google Adsense狩り、そしてGoogleは言った。「オマエ、そんなにカネが欲しいのかよ!」

_Google Adsense狩りに対し、自衛する方法

話題としてはちょっと古いけど、まとまってる気がしたのでメモ。

#3 [game] _スラッシュドット ジャパン | PlayStation 2 の新モデルに互換性問題

どうして問題が出てくるのかが気になったり。何が変わったんだろうな。 _(via Crohn Life - 2005年10月24日23時49分の項)

#4 [digital] _電子「水滴の拷問」デバイス

(水滴の拷問:拘束した囚人の頭に一定時間おきに水滴を落とすと、そのことしか考えられなくなりついには発狂してしまう、らしい。)

Engadget Japanese より

そんな拷問があるのか。恐ろしい。
「クリエイティブな電子嫌がらせデバイス」ことMind Molesterは被害者周辺のできるだけ発見されにくい場所に隠して使用する。要はカン高くて気に障る音(2000ヘルツ)が出るだけの単なるブザーなのだが、恐ろしいことに約5分に一度だけ、一秒しか鳴らない。「電子音の長さ・周波数・音色により、音の出所を確かめるのは非常に困難で時間がかかり、気が狂いそうにもどかしい作業になります。ターゲットは音源を突き止めようと次の音を待つことに気を取られ、仕事がまったく手に付かなくなるでしょう」

Engadget Japanese より

恐ろしい…。光景を想像しただけで、気が狂ってしまいそう。

#5 [zatta] _空飛ぶ絨毯

シンプルでありながら、ナイスなアイデア。

#6 [java] _Forte for Java 3.0 Community Edition レビュー

_Sun ONE Studio 4 の解説

もはや入手は不可能なのだろうか。まあ、emacs系のショートカットキー配置じゃないから、自分には使いづらいかもしれんか…。

xyzzyでiアプリ関係の補完をしたいのだけど何をどうすれば反映できるのかさっぱりわからん :

まあ、eclipse 使えば補完できるんだから、それでいいか。eclipse である程度打って、ソースをコピー、とか。とはいえ eclipse は、微妙に xyzzy、emacs 系とは操作が違ってて、そこがシンドイんだけど。…でもまあ、昔はVZエディタだの秀丸だの使って作業してたもんだし。自分がエディタに体を慣らせばいいのか。…なんだかPCの奴隷になってる感もあるけど。

2004/10/26(火) [n年前の日記]

#1 [windows] xyzzyのftpupdate.lが遅い件

_教えてもらった情報 を眺めつつ。 _SpeedGuide.net TCP/IP Analyzer のページでMTUやRWINを確認してみたけれど、 _NetTune で設定した値(MTU=1454、RWIN=65044)と変わらんのであります。うーむ。 *1

とりあえずMTUやRWINに関しては、SP2インストール後も問題は起きてないことが判ったので一安心。となると、問題が起きてるのは、FTPでアップロード、しかもLAN内のサーバに向けて、という話なわけで…。

原因判明 :

WinXP SP2から導入されたファイアウォール機能を無効にしてみたら、xyzzyからのFTPアップロードも一瞬でできました。ファイアウォールを有効にすると時間がかかる。これのせいか。

しかしどうしたもんか。xyzzy自体はファイアウォール設定で例外として登録してるのだけど。それでも時間がかかってる。困った。

xyzzyに限った話じゃない :

FFFTPも返ってくるまでに時間がかかる。FTP関連はダメってことか…。

と思いきや。同じFFFTPを使った場合でも、
  • ウチのLAN内のFTPサーバに接続すると時間がかかる。
  • 外部のFTPサーバに接続するとそれなりに早く返ってくる。
という違いが。するとウチのサーバの設定の問題か。でも、そうなると、SP2のファイアウォールを無効にすることで即座に返ってくるのが、よくわからん…。

_Port 113 :

む? コレか!?

Port 113ってなんじゃろ。

_TCP/113 AUTH/IDENT に関して :

なるほど。そういうことでしたか。FTPの場合であっても、制御ポート、転送ポート以外に、使うポートがあると。そこをブロックされると時間がかかると。ということで、試しにファイアウォールで、例外→ポートの追加→TCP/113 を登録。…スパッと返ってきた。コレかー。

でもコレって、FTPサーバの設定とも関連してる、ということだよなぁ…。

_Kero's Factory - Linux - ProFTPD :

_ProFTPDをクラスタリングした際のログイン時間について
proftpd の場合、IdentLookups off を指定すればいいらしい。試しに、自宅サーバの /etc/proftpd.conf 中で指定してみたり。…WinXP SP2側で、TCP/113を例外にしなくても、スパッと返ってくるようになった。

しかしコレ、問題があったりはしないんだろうか。…まあ、いいか。あちこちのページを眺めた限りでは、offを指定してる例が多いみたいだし。

それにしても :

WinXP SP2とは関係ない部分が原因だったのですな(爆) ファイアウォールを導入、かつ、サーバ設定によっては、どこでも発生する可能性があるということで。

*1: MTUに関しては、OS側で設定した値ではなく、ルータ Corega BAR Pro3 で設定した値がそのまま出るわけですが。ウチは、フレッツADSLモアを利用してるので、MTU=1454にしてある状態。…ちなみに、昔のCorega製ルータ(BAR SW-4Pとか)はMTUの指定ができなくて、謎の値で固定されてたり。たぶん、色々なサービスでも不具合が出ない、汎用的な値になってたのだろうな。

#2 [pc] キーボードを元に戻した

交換したキーボードのタッチがどうにも気にいらない。元のキーボードに戻した。一応動いてるので、壊れてるわけではないらしい。やはりマウスだけが壊れていたのか。

どうせ交換作業をするなら、 _ハサミで切り込み を入れればよかったかなぁ…。

#3 [web] _受益者負担の話がなんか変だと思ったのは

同人誌の世界と比較しながらのあたりがなんだか興味深いなと。そっちの世界と比べると、情報提供側のコスト負担と言っても全然少ないんだよなぁ…。

コメントにあったP2P利用による状況改善の可能性についても気になるところ。誰かが取りにくるまでサーバにコンテンツを置いて、という仕組み自体が古いものになっていくのだらうか。興味深い。

#4 [zatta] _メラトニン

某所で単語を見かけてなんじゃろと思って検索してみたらいきなり _こんなページ が出てきて驚いてしまった。もっともコレは大量摂取理由がいわゆるアレな理由なのでアレだけど。まあ、 _「ウコンで症状悪化1人死亡 健康食品、肝障害が18人」 という話もあるようだし、なんでも取りすぎはいかんということでせうか。<なんじゃそのまとめ方は。

ウンコじゃないよ。<あまりにもくだらなくて必死に抑えてはみたがどうしても書かずにはいられなかったらしい…。

_メラトニン(不眠症) :

_メラトニン
_ためしてガッテン でも紹介されてたのか。知らなかった。
医師の指示に基づいてのみ手に入れることができるため、薬局などでは売っていません。
診てもらって貰えるならまだ安心。かも。まずは診てもらうことが重要だろうし。 *1 何にせよ勉強になったのでした。メラトニン星人とか。究極魔法メラトニンとか。なんか使えそうな感じ。<使ってどうする。

*1: アタリハズレもあるけど。

#5 [jiji] 新潟地震のニュースを見ていて思った

車内で寝泊りの光景は、地方だから、だろうか。 *1 都市圏で発生したら違う状況になりそう。…ゴジラとかデビルマンとかそのへんの作品では、そのあたりの描写はどうなってるんだらう。…不謹慎か。

車内で寝泊りしていたお年寄りが亡くなったニュースを見て :

どこぞのお医者さんが、疲労・ストレスが蓄積されていく理由について、狭いところに縮こまって云々、寒い板の間で云々と解説してた。会社で椅子を並べてとか、会社の床にダンボール引いてとか、そのへんの話を思い出したり。それだけ現地は、か。それとも職場が、か。

マスコミ :

取材陣が現地の食料を根こそぎ横取りしながら、「食料が足りてない」と報道してるのは…なんだかなぁ。 *2

マスコミが現地に入るためには、規定量の救援物資を持っていかないとダメ、とかできんかな。スタッフの分は除外して、何食分運んだら何時間取材できる、とか。…無理か。誰がソレをチェックするねん。

番組内で、「当番組の取材陣は○○人分の救援物資を提供させていただきました」と前置きしてから取材映像を流すのが当たり前、てな風潮を作れないか。救援物資を提供してないのに映像を流してたら、現場で邪魔してるだけだから、視聴者・他局・他番組からの攻撃対象になる、みたいな風潮を。無理か。つーか子供みたいなことを書いてるな>自分。…いや。他局の番組を潰したいなら、いい方法かもしれん。あの人気番組を殺るなら、今だ。被災者から感謝される映像をゲットして自番組の宣伝ができるし、余所の番組は潰せるしで、一石二鳥。…無理か。

冗談はともかく、「ウチはこれだけ提供しましたよ」とバンバン宣伝する風潮がもっと広まってほしい気もする。商売人は宣伝ができる。被災者は助かる。困る人は誰も居ないのだし。つーか、被災者支援商品とか出てきてもいいぐらい。と思ったがソレは詐欺行為がしやすい気も。ちとよろしくないか。

こういう時に :

支援・救援物資を提供した企業・団体をリストアップしてみると何か見えてくるのかもしれん。とりあえずちと気になるのは、 _livedoor_楽天 の動き方の違いとか。あと _元締め とか。 *3

_バッファロー、新潟県中越地震の被災者を対象とした無償修理サービス :

やるなぁ。つーか _IOデータもか。 双方の素早さに胸キュン。…NECは修理代3割引か。まあ、PC本体とか高いから仕方ないところかしら。…ん? 富士通はやらんのかの。と思ったら _富士通もやってるじゃん。 しかもNECより1日早いじゃん。…つまり、インプレスは件の三社がお得意様で、富士通とはそれほどでもない、ということなのかしら。知らんけど。

SONYのサイトを覗いてみたけど、それらしい情報はなかった。見落としでないとすれば、やっぱりねぇ。

*1: 車がないと移動に制約がかかるから、車を所有してる人達が多い>地方。
*2: といいつつ、そのマスコミの作ってるコンテンツを見てる自分。なんだかなぁ。
*3: 善意云々とかは全く関係なくて。こういう時に自社イメージ向上戦略を即座に打ち出せないのは、企業として硬化が始まってるような気が、という視点で気になる。

2003/10/26() [n年前の日記]

#1 [pc][linux][debian] woody 再インストール

stable へ戻す作業の試行中、/etc/apt/apt.conf.d/99target を削除する代わりに、__99target というファイル名にリネームして作業していたのだけど。__99target を試しに消してみたら stable に戻り始めた。/etc/apt/apt.conf.d/ 以下にファイルを置いておくと、ファイル名に関係無く、一通り中身を読んで動作に反映させてしまう、という事だろうか <怪しい。

ただ、完全に stable には戻らなかった。途中で何度もエラーが出てきて apt-get -u dist-upgrade が止まってしまう。ほとんどは、「○○とかいうファイルは△△のパッケージでも入れてるよ。上書きはマズイよ」というエラー。それらのパッケージに関しては、dpkg -i --force-overwrite xxxxx.deb で無理矢理上書きしてみたり。

ひとまず apt-get -u dist-upgrade で何も downgrade されない状態にはなったけど、apt-show-versions | grep testing としてみたら、いくつかのパッケージが testing のまま残ってるらしく。おそらく、stable には無いけど testing で増えたパッケージじゃなかろうか、などと根拠無く勝手に決めつけてバシバシ削除してみたら… rm やら ls やら mkdir やらが全く利用不可になり、dpkg も動作不可になり、再起動したら grub も起動しない状態に。

ということで、またしても CD から woody を再インストール。自分、一体何をやってるんだろう。

#2 [pc][linux] linux 弄ってると win に戻ってこれないな

複数台、自由に弄れるPCがあれば楽だろうな。一台のPCに、win も linux も入れて使うのは、やっぱりちょっと無理があるかも。

2002/10/26() [n年前の日記]

#1

ガンダムSEED見ました。
…恥ずかしい話、本編見るまでそういう作品だったとは知りませんでしたよ。
なるほど。初代のリメイク作品なのか…
にしては、本編も、周囲も、盛り上がらないのは…なぜ?

2001/10/26(金) [n年前の日記]

#1 魔女のホウキ

_ファイルをサルベージする方法ですが、こちらのページにまとめておきました。
各ツールの作者様に感謝です (´▽`)


サーバもひとまず一段落、ということで、Shadeでモデル作ってました。
「あっのっひっとのぉーママに会うためにぃ〜♪」
などと口ずさみつつ、ホウキを作ってたり。絵の小道具に使うのだ。

地面を掃く部分…小枝(?)が密集してる部分が、満足のゆく形・ボリュームにならず。
一本細ーい円柱を作って、ボコボコとコピーして…
とかやってるんですけど。重くなるわりにイマイチ。
ゲームによくあるポリゴン十字置きでなんとか…
無理か。最終的にはパースをつけてレンダリングするから。

そもそも魔女が使うような箒って、あの部分、かなりフサフサしてるんじゃなかろうか。
アレは一体何だろう。草なのかな。
自分、そのへんの掃除に使う、ガチガチしたヤツをイメージしてたけど、ちと違うかも。

もしかして、手描きで描いた方がいいだろうか…
でも、こういう時、プロならどうするんだろう。
ゲームに魔女のホウキが出てくるからポリゴンでモデル作れ、とか企画の人から指示されたら…
本編は処理速度重視でローポリ+テクスチャだとしても、ムービーやるなら作りこまないとですよね…

魔女宅のビデオでも見て、形を研究してみようかな。

2000/10/26(木) [n年前の日記]

#1 社長の名刺を破り捨てる社員

サブマシンのHDDの中を眺めてたら、なぜかIEのキャッシュフォルダが3つもあったり。
おかしいな。設定変更してたはずなんだけど…


Nステで、長野県知事さん(「なんとなくクリスタル」を書いた人)の初登庁の映像を見たんですが。
県知事さんが渡した名刺を、目の前でクシャクシャにする県庁職員の姿にビックリ。
「県知事ってのは、会社で言えば社長。社員に名刺を配る社長がいるか? バカバカしい」とマスコミ相手に主張してたようですが。
その社長の名刺を、わざわざ社長の目の前でゴミにする社員ってのもおかしいだろ… (´Д`;)

県知事さんは、「メールアドレスとか書いてあるから、意見頂戴ね」と理由をつけて渡してたわけで。
それを、「そんな事例は見たこと無い」と職員側が拒否するあたり、なんだか末期的。
組織の縦の構造への異様なまでの固執の表れか、身内(県庁関係者)では無かった人間への強烈な拒否反応なのか…
県知事さんが何かと口にする「しなやか」の反対の状態ですよね。
いや、オイラも「しなやか」とやらの意味、よくわかりませんけど(苦笑) 現状が「しなやか」に程遠い事ぐらいは子供でもわかる。
ああいう怪しげな(?)県知事さんでも、長野県民の方々が選ばざるを得なかったのは必然だったのかも。
職員さん達、そのへん全然認識できてないんだろうな。

つか、もしかしてEメールとかの類に強い拒否反応示すタイプの人だったのかな >折り曲げた人
結構年配の方のようにも見えたし。
それもそれでアレだなぁ…

とりあえず。
他県の事とは言え、今後どんな「しなやか」を見せてくれるのか、ちょっと期待 >長野県知事さん

ふと。
「しなやかさん」
「しなやかおじさん」
って呼び名はどうだろう <なんじゃそりゃ

1999/10/26(火) [n年前の日記]

#1 (NoTitle)朝までネット。ヤバい...

朝までネット。ヤバいです。AM10:00〜PM6:30頃まで寝ていた模様。

WOWOWのノンスクランブル放送でやってるアニメを見たです。しかしリアルタイムで見るのはなんかツライ。タイマー録画できないかな。BS内蔵ビデオがあればいいのかな。でもそうするとTVについてるBS関連の機能はどうなっちゃうんだろう。実はよくわからんのです、何買えばいいのか。
しかし「くるみ」って面白いのでしょうか。私にはわかりません。たしかToHeartの監督さんなんですよね。今一つパッとしない印象が。何が売りの監督さんなのかな。
とにかくさっぱりわかりません。トホホ

以上、25 日分です。

過去ログ表示

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

カテゴリで表示

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


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

Powered by hns-2.19.6, HyperNikkiSystem Project