mieki256's diary



2013/05/14(火) [n年前の日記]

#1 [prog] 「指定バージョンより上のバージョンを要求する」ってどう書いたらいいんだろ

例えば、「pyglet 1.2 alpha 1 以上のバージョンがインストールされてないとこのスクリプトは動かないよ」みたいなことを説明文書に書いておきたいと思ったりする時があるわけですが。そういう時、どんな感じに書いておけば、英語圏の人にも分かるのかなあ、と…。

たしか、Ruby関係で、「>」「<」「>>」「<<」を使った説明の付け方があったような気がするんだけど、具体的な書き方が思い出せない…。おそらく、記号を使って書けたほうが、英語圏でも日本語圏でも意味が通じるであろう気もするわけで。しかし、どういう記述だったかなあ…。

む。見つけたかも。例えば、 _markdown | RubyGems.org | your community gem host のページの下のほうに、それらしい書き方が。
kramdown >= 0.13.7
props >= 1.0.0
textutils >= 0.2.0
「kramdown は 0.13.7 以上のバージョンが必要だよ」と読めばいいのかな…?

#2 [prog] Ayame/Rubyのエラーについてメモ

Ayame/Ruby 0.0.2 を使うとocraでexe化できなかったり、Ruby 1.9.2上でスクリプトが不正終了する(というか、終了できずに固まって、Windows7が「どうする? 無理矢理終了させる?」と尋ねてくる)件。何をするとそうなるのか分かったかもしれず。Ayame#dispose を呼ぶと、起きるっぽい。そこだけコメントアウトしたら、exe化もできたし、Ruby 1.9.2上でも正常終了するようになった。

ただ、Ruby 1.9.3 上で ruby hoge.rb の形で実行する限りは、あるいは、Ayame/Ruby 0.0.1 を使った場合は、dispose を呼んでいてもexe化できるし、正常終了するわけで。なもんで、どうも釈然としない…。

dispose を呼んだ後、関連メソッドを呼ぶと例外が起きるらしいのだけど、0.0.1 使用時に例外が起きてないということは、dispose を呼んだ後、関連メソッドは呼ばれない作りになっていたはずで。であれば、dispose を呼んで不具合が起きるのは妙だなと。

まあ、何にせよ、dispose を呼ばなければエラーを回避できる模様。ということで。

気になって Ayame/Ruby付属のサンプルを眺めたら、dispose は一度も使われてなかった。となると、呼ぶこと自体が想定外というか、本来は呼ばなくても済むはずなのかなと思えてきたりもして。 ただ、そうなると、別の点が気になるわけで。dispose を一切呼ばない作りは、すなわち、読み込んだ音声ファイルを一度も解放しない作りを強制されるはずで…。

ゲーム等では、十数曲〜数十曲を順次鳴らしていく、てな場面もありそうだけど。解放しないということは、アプリ起動時にあらかじめ全曲読み込んでおいて、アプリ実行中はメモリ上にその全曲分の波形データをずっと持ちっぱなし、てな作りになるだろうと。しかしそうなると、音声ファイルは結構容量を食うので、メモリをやたらと使いそうな…。

まあ、今時のPCスペックなら、そのくらい屁でもないのかしら。メモリが少なくてヒイヒイ言ってる家庭用ゲーム機とは違うぜ、と。

よくよく考えてみたら、そもそもRuby等のLL使ってゲーム作ろうとする時点で、かなりの富豪的プログラミングだろうし。今更何言ってんだ、みたいな話かもしれん…。

あるいは、Ruby の GC が上手くやってくれることを期待した作り、なんてことも可能だったりするのだろうか。Ruby初心者なので、どうすればそれができるのか、よく分からんのだけど。

#3 [prog] pyglet + Radeon で描画できない件について

以下のページを眺めると、「Catalyst 12.4 (video driver 8.961.0.0)以降は直ってるはずだぜ。だからこの件は解決ってことで!」と書いてあるように見えるのだけど。

_linux - pyglet vertex list not rendered (AMD driver?) - Stack Overflow
_Issue 544 - pyglet - Batches are not being draw - Cross-platform windowing and multimedia library for Python. - Google Project Hosting

「それ、ホントかよ?」と思えてきたので、試しに自分の手元のPCでも実験。

結果だけど。

pyglet+radeon描画テスト結果画像

やっぱりダメだった。vertex_list.draw() や batch.draw() を使ったほうは描画されてない。…畜生! 直ってねえよ! 解決してねえよ! 今も Radeon はバグ持ちだよ!

そして、前述のページ内で言及されていた通り、「v2i」を「v2f」に修正してみたところ、正常に描画されてしまったわけで。うーん。

「"v2i"を"v2f"にするだけで描画されるなら、とりあえず全部、"v2f"にしとけばいいんじゃねえの?」と思ったりもしたけれど。本来の仕様や規格とは異なる呼び方、場当たり的な回避策で固定するなんて許されることなんだろうか、という気もするし。ATI/AMDがOpenGL絡みのバグを抱えたままだから、仕方なくそうせざるを得ないという話でしかないだろうし。

でも、こういうバグ持ちなバージョンのドライバを使い続けてる環境も多いだろうし。特定アプリのために、古いドライバに戻してくれなんて、フツーは言えないし。実際にどの環境でも動くようにと考えたら、場当たり的でもいいからとにかくソレをやるしかないのでは、という気も。

どういう選択が正解なのか、よくわかりませんな…。

環境や動作確認サンプルをメモ。 :

Windows7 x64 + Python 2.6.6 + pyglet 1.2 alpha 1。

ビデオカード(ビデオチップ)周りの情報は以下の通り。 _HWiNFO32 で取得。
ATI/AMD Radeon HD 4200 (RS880)
	 	
[General Information]
	Device Name:	ATI/AMD Radeon HD 4200 (RS880)
	Original Device Name:	ATI/AMD Radeon HD 4200 (RS880)
	Device Class:	VGA Compatible Adapter
	Revision ID:	0
	Bus Number:	1
	Device Number:	5
	Function Number:	0
	PCI Latency Timer:	0
	Hardware ID:	PCI\VEN_1002&DEV_9710&SUBSYS_97101849&REV_00
 		
[System Resources]
	Interrupt Line:	N/A
	Interrupt Pin:	INTA#
	Memory Base Address 0	D0000000
	I/O Base Address 1	D000
	Memory Base Address 2	FE9F0000
	Memory Base Address 5	FE800000
 		
[Features]
	Bus Mastering:	Enabled
	Running At 66 MHz:	Not Capable
	Fast Back-to-Back Transactions:	Not Capable
 		
[Driver Information]
	Driver Manufacturer:	Advanced Micro Devices, Inc.
	Driver Description:	ATI Radeon HD 4200
	Driver Provider:	Advanced Micro Devices, Inc.
	Driver Version:	8.970.100.7000
	Driver Date:	16-Nov-2012
	DeviceInstanceId	PCI\VEN_1002&DEV_9710&SUBSYS_97101849&REV_00\4&2417585A&0&2808 
Driver Version は、8.970.100.7000 なので、前述のページで書かれていた 8.961.0.0 より新しい…と思う。たぶん。

動作確認に使ったスクリプトは以下の通り。コピペしてきただけ…。
import pyglet

window = pyglet.window.Window(640, 480)
w, h = window.get_size()

vl = pyglet.graphics.vertex_list(4,
                                  ('v2i', (100, 0, 100, h, 200, h, 200, 0)),
                                  ('c3B', (255, 255, 255, 255, 0, 0,
                                           0, 255, 0, 0, 0, 255)))

batch = pyglet.graphics.Batch()

x = 220
y = 10
width = 70
height = 200
color = 127, 127, 0, 127
color2 = 0, 127, 0, 127

batch.add_indexed(4, pyglet.gl.GL_TRIANGLES, None,
                    [0, 1, 2, 1, 2, 3],
                    ('v2i', (x, y,
                             x + width, y,
                             x, y + height,
                             x + width, y + height)),
                    ('c4B', tuple(color * 4)))

x += w / 2

@window.event
def on_draw():
    window.clear()

    vl.draw(pyglet.gl.GL_QUADS)
    batch.draw()

    pyglet.graphics.draw(4, pyglet.gl.GL_QUADS,
                          ('v2i', (400, 0, 400, h, 500, h, 500, 0)),
                          ('c3B', (255, 255, 255, 255, 0, 0,
                                   0, 255, 0, 0, 0, 255)))

    pyglet.graphics.draw_indexed(4, pyglet.gl.GL_TRIANGLES,
                    [0, 1, 2, 1, 2, 3],
                    ('v2i', (x, y,
                             x + width, y,
                             x , y + height,
                             x + width, y + height)),
                    ('c4B', tuple(color2 * 4)))

pyglet.app.run()

2013/05/15追記。 :

一応実行ファイルとソース一式も置いとくです。
_test_pyglet_v2i_20130515.zip
  • pyglet_v2i.exe を実行すれば、"v2i"指定版が起動。
  • pyglet_v2f.exe を実行すれば、"v2f"指定版が起動。
  • src/以下にスクリプトソース入り。

AMD Driverのバグについて :

_The AMD Driver Bug Thread - [H]ard|Forum にまとまってた。結構あるんだなあ…。

「昔のOpenGL仕様を使ったアプリを動かすとマズイことになる」てな話が気になる。今回の不具合も、そのあたりが絡んでるのだろうか。わからんけど。

なんだか ATI/AMD だけdisってる感もあるけど、NVIDIAのドライバも結構バグがあるはずなので…。一時期は、 _ビデオカードを熱で故障させちゃうドライバ を出しちゃってたし。ハードウェアを壊しちゃうのは、さすがにクリティカル過ぎる…。

なので、ATI/AMDはとにかく糞と言いたいわけでもなく。どれを選んでも何かしら抱えてるはずだろうと。…まあ、OpenGL使いたいなら、ATI/AMD は今でも避けるのがどうやら無難っぽいですなあ、ぐらいの話で。

ビデオチップは複雑な処理をするハードウェアだし、次々に新チップも出さなきゃいかんし、基本的には DirectX重視の市場だろうから、仕方ないのかも、てな気もしています。

2017/03/19追記。 :

Dropboxのpublicフォルダが死んだのでファイルの置き場所を変更。

#4 [nitijyou][pc][web] 使ってるオンラインブックマークを変えてみたり

ここ最近 Googleブックマーク + Firefox + _GMarks を使ってたのだけど、数日前から追加ができなくなってしまって。Googleブックマークのページを開いて追加作業をしても反映されず。10,000件を超えるか超えないかの数なので、登録数の制限に引っかかってしまったのだろうか…?

ということで、仕方なく(?)、はてブ(はてなブックマーク)を利用してみることに。複数のPCで作業する際は、どのPCからでも参照できるオンラインブックマークという仕組みが便利なわけで。

はてブの感想だけど。使い始めたばかりだから、軽くてイイ感じ。タグをオススメしてくれるあたりもグッド。

まあ、登録数が増えてくると、どんどん重くなるのかもしれないけれど…。Yahooブックマークも、登録数が増えたらガンガン重くなってしまって、実用に耐えない状態になっていったし。はてブはそうじゃないといいのだけど…。

Yahooブックマークと言えば。 :

Yahooブックマークも、2013年7月でサービス終了だそうで…。ブックマーク先をキャッシュしてくれるのが売りのサービスだったので、ブックマーク先が消滅してもちょっとは安心かなと思っていたけど、サービス自体が終了するのでは、使ってた意味が全然無かったなと…。

ブックマークしたページをオンラインストレージ上に溜め込んでくれるサービスでもあればいいのだろうけど。ネットバブルが弾けたらしい今現在では、実現は難しいのだろうな。

#5 [zatta] たぶん騙されるのは母ちゃんが圧倒的に多いんじゃないかな。たぶん

_警視庁、振り込め詐欺の新名称を「母さん助けて詐欺」に決定 -INTERNET Watch という記事に対するはてブで、たまたま目にした一言が、なんだか気になった。
新名称が実体を表してるなら、騙されんの母親だけなの?

はてなブックマーク - 警視庁、振り込め詐欺の新名称を「母さん助けて詐欺」に決定 -INTERNET Watch より


たぶん、そうなんじゃないかなあ、と根拠はさほどないけど思ってしまったりして。

例えば、原発反対派のデモの中に母ちゃんの姿はチラホラ見えるけど、原発推進派の顔ぶれの中には、基本的には父ちゃんしか居ないわけで。

戦時中も、赤紙が届いた息子に対して、「お国のために死んでこい」「これは名誉だ」とハッパかけてなんだかある意味喜んじゃってるようにしか見えない父ちゃんと、なんでウチの子がと泣きじゃくる母ちゃん、みたいな光景があちこちにあったそうだし。 *1

つまり、母ちゃん達は子供のことを心配してくれるけど、父ちゃん達は子供がどうなろうと知ったこっちゃない。てな全体的傾向が日本にはあるのではないかと。そのあたり、父ちゃんは基本的にあてにならないものじゃないのかなと。

もちろん、子供を殺す母ちゃんも居れば、子供が熱出したら会社休んでくれる父ちゃんも居るわけで、「ウチは違うぞ」と異を唱える御家庭は結構あるはずだけど。ただ、全体的な傾向としてはそういう感じなのかなあ、と個人的にはぼんやりうっすらと思っていたり。

なので、その「母さん助けて詐欺」というネーミングには、そのあたりの傾向も含めて、自分は「ああ、なるほど」と思ってしまったのでした。「父さん助けて」と電話が来ても、大多数は「そんなの知らんわ。自分でどうにかせい」で電話を切られそうなイメージ。

でも、実際の被害事例の割合としてはどうなのか、たしかにちょっと気になるところ。想像とは裏腹に、世の中の父ちゃんは意外と子供に冷たくない、そんな可能性もあるのでしょうか。

しかしそもそもそのあたりを調べられるデータがあるのかどうか。トライ回数と成功数、両方見ないと判断できんけど、警察が持ってるのは成功数のデータだけだし。おそらく、その詐欺電話をかけてる人達しか、全体的な傾向を述べられないのでしょうけど、そういう人達が滅多に表に出てくるはずもないし…。
*1: 伝聞に過ぎないので実際はどうだったのかわからんけど。

#6 [prog][editor] Sublime Text2を試用中

あちこちで名前を見かけるので気にはなっていたのだけど、有償製品とのことで避けてたのですが。一応試用もできるという話を今頃知り、だったら少し触ってみようかなと。

なるほど…。なんか色々と、カッコイイというか、オシャレというか…そういう感じのエディタですね…。今のPCのスペックならこのくらいできるだろ! みたいなガッツを感じました。や、今から vi や emacs を再発明したらこうなるんじゃね? てな印象も受けたのですが。

日本語のインライン入力ができないという話も見かけていたのだけど。IMESupportなるパッケージを入れたら、Windows7 x64 上ではすんなりインライン入力できました。素晴らしい…。いやまあ、標準ではインライン入力できないことのほうが、そりゃないべや勘弁してくれって感じな話ではありますけど。しかし、インライン入力にすら難があるということは、文字コード関係はさほど期待できないんだろうな。

メニュー等が全部英語なのは、英語赤点だった自分には、やはり厳しい…。

お値段、約8,000円か…。これでガシガシなんでも書けると考えれば安い気もするけれど、実際にはあらゆる場面で使えるのかどうか。もうちょっと試用してみないと、よくわからないな…。

以上、1 日分です。

過去ログ表示

Prev - 2013/05 - 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