正直日記



2009/10/29

_ Webのスクリーンショットを取りまくってたよ
MozEmbed の存在を知って以来、もうメロメロぞっこんになって色々遊んでいま
したが、まぁ色々といってもスクリーンショットを撮ってただけなので全然色々
ではありませんが。


・Xvfb を入れる

デーモン化しようと思ったら、なんか ubuntu server 用の設定がどこにも見つ
からなかったので見よう見まねでこしらえました。丸一日かかりました。linux
難しすぎる。

xvfb.txt を /etc/init.d/ にコピー $ sudo chmod +x /etc/init.d/xvfb $ sudo update-rc.d xvfb defaults $ sudo /etc/init.d/xvfb start ※ X11::Xvfb を使うなら一連の操作は要りません。
Xvfb を起動するとなんかフォント系の警告がでまくるので、apt-get でフォント が沢山入るパッケージを入れます。申し訳ありませんがパッケージ名は忘れまし た。一日で忘れました。linux 覚えづらすぎる。(追記: xfonts-base でした) ・xulrunner とかを入れる これだけ指定すればたぶん必要なものは芋づる式に色々入ります。
$ sudo apt-get install pkg-config xulrunner-dev \ libgtk2-perl libgtk2.0-bin libgtk2.0-common libgtk2.0-dev
足りない場合は $ apt-cache search xulrunner で出てくるものを全部入れれ ばいいです。linux 楽チンすぎる。 ・Mozilla::DOM を入れてから Gtk2::MozEmbed を入れる Mozilla::DOM が無くても Gtk2::MozEmbed が入ってしまうのは罠でしょ……。 Mozilla::DOM を入れる際に libxul.so が見つからない旨のエラーが出るので、 事前に以下の操作を行っておきます。
$ sudo su # cat >> /etc/ld.so.conf.d/libxulcrap.conf /usr/lib/xulrunner-devel-1.9.0.14/lib ctrl-d # ldconfig (追記:ubuntu 9.10 で xulrunner-1.9.1.*/lib になったようです)
つーか README に載ってるんですよこれ。README 読まなすぎる。 ※ デスクトップ版 ubuntu でこれを行うと firefox-3.5 が起動できなくなり   ます。共有ライブラリを使い分ける方法があると思うんですが Linux が難し   すぎて分かりませんでした。Linux が難しすぎる。 あとは CPAN で入れるだけです。
sudo cpan -i Mozilla::DOM Gtk2::MozEmbed
・スクロールバーを消す MDC を見ると、スクロールバーをトグルで非表示にする window.scrollbars が あるので、Mozilla::DOM::Window にも GetScrollBars がありそうな気がしま すが……無いので他の方法をとりました。
my @elems = $embed-> get_nsIWebBrowser()-> GetContentDOMWindow()-> GetDocument()-> GetElementsByTagName('body'); for my $elem (@elems) { my $attr; if ($elem->HasAttribute('style')) { $attr = $elem->GetAttribute('style'); } $attr .= '; overflow: hidden;'; $elem->SetAttribute('style', $attr); }
・ディレクトリを別ける 調子に乗ってあれこれ撮りまくっていたら、ファイルが多すぎてディレクトリを 閲覧するのが困難になってきました。パスを切って分散します。 先人であるところの「はてなブックマーク」の切り方を調べてみると、
/a/b/c/d/e/[0-9a-z]{35}.jpg
というパスになっており、どう見ても SHA-1 でした。 パスの生成に一方向ハッシュを用いると元の名前が連想できず、手動アクセスし たいときに不便です。手動アクセスをする機会なんかそんなに無い気もしますが、 今回はドメインネームを逆さに連結することにしました。この方法はいずれ破綻 しますが一時の延命には使えます。
sub make_directory_path_from_url { my $url = shift; my ($domain) = $url =~ m{^.*?://(.+?)/}; my $path = join '/', reverse split(/\./, $domain); return $path; }
そんなこんなでページショットが撮れるようになりました。 ページショットを撮る時は ScrollTo を使って少しずつ pixbuf に流し込みまし た。 Flash でフェードインやら skip >> やらをしているサイトは、スクリーンショッ トを撮ると真っ白とか真っ黒になるのでアホかと思いました。3〜5秒以内に絵 が出てこないサイト(を作るようなデザイナー)は○○○ればいいのにと思いま した。 終わりです。
_ 発音中にMULを書き換えて位相ずれを起こす
こんなマニアックなテクがあるなんて、今まで気づかなかったよ……。

とは言えウェイトが必要な実機だと、タイミングは完全にシーケンス依存なので
実用は難しそうだ。レジスタ書き換えとシーケンス実行が(音源から見て)ゼロ
時間で済んでしまうエミュプレイヤー向けのネタかな。……ネタと言っても、こ
んなテクをどう活用すればいいのか全く思いつかない。単チャネルでフェーザー
効果が得られるかなぁ。


なんの話だか分からない人の方が多いと思いますが、FM音源の話です。

2009/10/16

_ 新訂版 More Effective C++ はもう少しなんとかならなかったのか
インターネットを巡回していたら「定額給付金」という文字列が見えたので思い
出したが、More はそれで買ったのだった。太郎の遺した埋蔵金は紀伊国屋へ渡る
こととなった。

内容や訳については方々で語られているので今更俺なんかが言うことは何も無い
が、他に少しだけ気になったところがある。コード片の字体だ。

Effective C++ 原著第三版ではプロポーショナルな太めの書体が使用されていて、
コメント部分もそれで統一されている。本文との見分けも付きやすく、とても読
みやすい。



一方、新訂版 More Effective C++ では固定ピッチで細い書体が使用されていて、
コメント部分は英字と日本語で書体が異なる。本文との見分けは(Effective C++
に比較すると)付きづらく、読みづらさの一因になっていると思う。



80-20規則を持ち出すならば、20% のコード片が 80% の読みづらさを作り出して
いると言えよう。

引用したこのページは特に太字と細字が入り乱れており、目がチッカチッカして
たまらんかったのです。Effective C++ に合わせる事は出来なかったのかなあと
思いました。
_ アトピーに湿潤療法を試す(六日目)
あれから何も施さずにいたところ

13日(三日目)、肌が乾燥してくる。
14日(四日目)、乾燥してカサカサになったところがひび割れてくる。
15日(五日目)、ひび割れしたところからリンパ液が……。
16日(六日目)、ラップを巻いておいたらリンパ液が漏れない程度には塞がった。

つーわけで放っておいたら駄目ですな。
その後のケアはどうするのがいいんだろう?

2009/10/12

_ アトピーに湿潤療法を試す(二日目)
写真を撮ってみた。肘から右がラップを試した箇所で、かぶれているものの皮膚
自体はだいぶ再生している。左側は、こまごまとした箇所だからラップしなくて
もいいかと放置したらカサブタになりました。

昨夜から今朝にかけてラップをしている間はものすごく痒かったが、ラップを剥
がして半日ほどすると治まってきた。もう少し様子見をするけど、大体治ったと
見て良いような気がする。少なくとも、上皮が貼った状態まではすぐに戻せると
分かったのが心強い。

飽きたので、二日坊主で終わりにします^^

2009/10/11

_ アトピーに湿潤療法を試す(一日目)
治りかけては再発するアトピーに1年ほど悩まされており、またステロイド1群
のデルモベートやダイアコートをほいほいと処方する医師にも嫌気が差したので、
湿潤療法(というよりはラップ療法かな)を試してみることにした。結果が出て
からまとめを載せたほうが良いのだろうけど、エンタテインメント性を考慮して
まぁ日記なのでリアルタイムで書いてみようと思う。

なお被験者は178cm/60kgのアラサーおっさんなので、肌の弱い小児のアトピーに
ついて調べるうちに辿り着いてしまった保護者の方は参考にしないでください。


就寝前に食品用ラップで被いマイクロポアで固定した後、6時間ほど放置する。
(つまり寝たということです)目が覚めてから剥がしてみると既に薄膜が形成さ
れており、かさぶたを経由しない経過に軽く感動した。もうこの時点で終了して
も良いような気すらしてくる。

その後ラップを貼りなおし、しばらく経つと今度は無性に痒くなる。風呂へ入る
前に剥がしてみたら、薄膜がカブレて隆起していた。シャワーを当て続けたら痒
みは緩和したが少々不安になる。元々がアトピーなので、上皮の下がどうなって
いるかは分かったもんじゃない。またラップを当てて第2ラウンドに突入する。
(つまり寝ると言うことです)

写真を撮ればよかったかなあ。明日に続くかも。

2009/09/30

_ ようやく俺が完全否定されたな
(3)マジコン等のハードウェアメーカーの著作権上の違反性が高いと思わ れるエミュレーション機器を使ったゲームの展示も出展できません。 SIG-Indie Special 同人・インディーズゲーム展示会 「秋葉原ロケテゲームショウ1」出展参加案内
いやまあ、これは当然の措置だと思うし、仮にこの文面が無かったとしても出す つもりはおろか、出せるものすら無いわけだけど……。 それはそれとして文面の「マジコン等の」とはどこまでを指すのだろう。ディス クシステムを書き換えるのはありなんだろうか。ポケステはどうかなあ。NINTENDO POWER は駄目くさい。 DC は駄目だろうな。というかコンシューマに固執する必 要もないけど。
_ 確かに SDL を perl で使う人は見たことがない
SDL というマルチプラットフォームなマルチメディアライブラリの集まりに もう何年も続けて顔を出しているが、Perl の SDL バインディングを使って いるという人には会ったことがない。Python や Ruby は結構いるのに。 何故 Perl はあれほどウェブに偏った発展を遂げたのだろうか、終わり。 死滅病棟: YAPC::Asia 2009 今更レポート
個人的にもウェブ・雑用以外には、gtk2-perl をちょっと使うくらいか。 近頃流行りの Coro.pm (特に semi-coro な Coro::State かな)や AnyEvent あたりは、SDL_perl との相性もよさそうな気がする。というよりこれらが相性 悪いなら Ruby/SDL や PyGame を使えば?という話になりそうだ。 Simple DirectMedia Library Bindings for Perl を見ると、精力的に更新されているようだ。じゃあ一つ入れてみるかと思ったら 依存ライブラリがかなり多い。そして Windows 用の binary pack は現在リンク 切れのようだ。うーそろそろデスクトップも Windows やめようかしら。

2009/09/29

_ 倍音の果てに
なんか HD になるらしいので……というわけでもないのですが RAYSTORM のアド
バタイズ「CYCLOID」を SiON でカバーしました。

RAYSTORM / CYCLOID by kashiwa | MMLTalks

例によって重いデータなので、CPU は最低でも秒間2ギガ回くらいは回せないと
厳しそうです。mp3 も置いておきますが、フルコンピューティングで鳴っている
ことだけに意味があるデータなので、mp3 で聴くのはアレです。

カバーなので曲的な話はしませんが、今回は音的に似せる努力をしたので、音色
作りについて少し述べてみたいと思います。人の褌で相撲を取ります。

といっても複雑なことはしておらず、基本的には、倍音の多い基本波形を並列ア
ルゴリズムで足し算して、フィルタで削るという、アナログシンセ的な音作りを
していきます。

まずメインメロディ。これは GS 音源の Brightness という音色を参考にします。
録音して倍音をチェック。



取り合えず低いところだけ見ていくと、5・7・9次倍音が弱く、2次倍音が
強いようです。ということは基音+偶数倍音で構成される半波整流波と、偶数
倍音のみで構成される全波整流波、そして3次倍音を合成してやればそれっぽ
い音になるはずです。うっすら見えている5・7次倍音は鋸波でカバーします。


(クリックで mp3 にリンク)

ローパスの掛かった Brightness に聴こえるような、そうでも無いような……。

それより残念なお知らせです。ここまでで4つの音を使ってしまったため、これ
以上倍音を足すことが出来ません(本当は足せますが、色々と事情があるのです)。
別のアプローチを取る必要が出てきました。

というわけで試行錯誤した結果、次のようなパラメータに決まりました。

#@101{ // SuperBrightness
// AL FB FC
   05 00 00
// WS AR DR SR RR SL TL KR KL ML D1 D2 AM PH FN
   00 40 20 14 24 04 32 00 03 07 00 00 00 00 00
   00 37 24 15 24 03 00 00 01 02 00 00 00 00 00
   02 40 25 18 24 04 00 00 01 01 00 05 00 00 00
   01 38 23 20 24 04 00 00 01 02 00 -5 00 00 00
}@f94;

数字の羅列を見せられても意味が分からないと思うので、図にしました。

The GNOME Projectもこういう風に使われるとは思ってなかったろう……

一目瞭然!
結局、全ての倍音を含んでいる鋸波でごまかしたと言うわけですね!
人生は挫折と妥協の連続であり、今回もまた辛酸を舐めたのでした。


他の音色も解説したいところですが、もう誰も読んでないでしょうから
ここまでにしておきます、ではまた次回。

--

追記(09/30):

端折りはともかく、周波数解析まで関係ないと取られてしまうのは困ると思った
のでオチを崩しますが画像と解説を追加します。(使っている基本波形の倍音構
成は全て述べましたし、あの図で自明だろうと思ったのですが、やっぱり説明不
足だったかな)

それぞれのオペレータが発している音をスペクトラムで見るとこうなります。
(左の四つは「〜x7」による変調が掛かっていない状態のものです)



全倍音の鋸波を使ったため5・7・9次も埋まってしまっていますが、背に腹は
変えられません。高周波を増やす目的で、味付けに「〜x7」でうっすらと周波数
変調を掛けました。そのままでは高い音程を出そうとするとキンキンしてしまう
ので、KL を使って高音程ほど変調が弱まるようにしています。

こんなところでしょうか。

2009/07/19

_ mid2sion_swc のバグを修正
今までメソッド定義の仕方を間違えていて、set/get 系のメソッドを AS から呼
び出すと例外吐いちゃってました。 convert() しかテストしていなかったのが
モロバレだ。

修正したので改めて置いておきます。

mid2sion_swc.zip
_ Flash アプリに GPLv2/v3 なライブラリをリンクすると、どうなる?
GPL なライブラリを含む○○プレイヤー.swf を作ったとして、ユーザーがその
swf をサイトに置いて貼り付け、ビジターが実行した場合、GPL 的にはどういう
扱いになるのかしら。

v2 においては頒布と個人使用のどちらになるのか、ということと
v3 においてはコピーの伝達なのか所有なのか。

--

このことについてユーザーを煩わせてはいけないから、どちらにせよ、オブジェ
クトコードに最初からリソースとしてソースアーカイブを仕込んでおき、必要な
らその場で保存出来るようにするのがいいのかなぁ。

まぁ GPL なライブラリを使う予定は今のところ無いけど。


<-- 未来へ 最新 過去へ -->
2010 | 01 04
2009 | 01 02 03 04 05 06 07 09 10 11 12
2008 | 01 02 03 04 05 06 07 08 09 10 11 12
2007 | 02 03 04 05 06 07 08 10 11 12
2006 | 01 02 03 04 05 06 07 08 09 10 11 12
2005 | 01 02 03 04 05 06 07 08 09 10 11 12