<?xml version="1.0" encoding="euc-jp"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="ja">
  <title>正直日記</title>
  <tagline>柏のアレ</tagline>
  <link rel="alternate" type="text/html" href="http://www.liarsoft.org/diary/" />
  <id>http://www.liarsoft.org/diary/</id>
  <generator url="http://www.liarsoft.org/" version="0.1">Honesty Diary</generator>
  <copyright>Copyright (c) Kashiwa</copyright>
  <modified>2010-01-05T07:26:30Z</modified>
  <entry>
    <title>gnu makeからpcmconv.comを呼び出す</title>
    <link rel="alternate" type="text/html" href="http://www.liarsoft.org/diary/20100105.html#20100105p1" />
    <id>http://www.liarsoft.org/diary/20100105.html#20100105p1</id>
    <issued>2010-01-05T07:31:56Z</issued>
    <modified>2010-01-05T07:31:56Z</modified>
    <summary type="text/plain">MS-DOS Player for Win32-x64が素晴らしい。 私はいまだに x86 環境なので恩恵無いかな、と思ったら、GNU make から COM 形 式の実行ファイルが呼び出せるようになった。ちょー便利。  [pconv.mk] pcm := $(patsubst %.wav, %.pc8, $(wildcard *.wav)) all: $(pcm)  .SUFFIXES...</summary>
    <author>
      <name>Kashiwa</name>
    </author>
    <content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.liarsoft.org/diary/">
      <![CDATA[<tt><a href="http://homepage3.nifty.com/takeda-toshiya/msdos/index.html">MS-DOS Player for Win32-x64</a>が素晴らしい。<br />私はいまだに x86 環境なので恩恵無いかな、と思ったら、GNU make から COM 形<br />式の実行ファイルが呼び出せるようになった。ちょー便利。<br /><br /><blockquote class="quote">[pconv.mk]<br />pcm := $(patsubst %.wav, %.pc8, $(wildcard *.wav))<br />all: $(pcm)<br /><br />.SUFFIXES: .pc8 .wav<br />%.pc8: %.wav<br />&nbsp;&nbsp;msdos pcmconv //v $&lt; //b $@</blockquote><br /><br />というルールを作れば<br /><br /><blockquote class="quote">$ make -f pconv.mk<br />msdos pcmconv //v sound_bassdrum.wav //b sound_bassdrum.pc8<br />PCM converter PCMCONV ver1.8</blockquote><br /><br />符号付 8bit PCM (ヘッダ無し)への変換および更新が楽に行える。<br /><br />更に一歩進めば、ppz の更新が make で出来るということになり pmdppz データ<br />を作る際の心理的障壁がひとつ取り除かれたということであるのだった。</tt>]]>
    </content>
  </entry>

  <entry>
    <title>今年こそ、と毎年思っている俺</title>
    <link rel="alternate" type="text/html" href="http://www.liarsoft.org/diary/20100101.html#20100101p2" />
    <id>http://www.liarsoft.org/diary/20100101.html#20100101p2</id>
    <issued>2010-01-01T03:03:17Z</issued>
    <modified>2010-01-01T03:03:17Z</modified>
    <summary type="text/plain">去年は何もしなかったなぁと思っていたのだが、日記を振り返ってみると、どう やら私はゲーム機用 OS を作っていたようである。その過程でコンパイラも作っ ていたようだ。（あと麻雀を作ろうとして投げたり、思いつきで手を出しては色 々投げてもいたようだ……）  趣味プロ...</summary>
    <author>
      <name>Kashiwa</name>
    </author>
    <content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.liarsoft.org/diary/">
      <![CDATA[<tt>去年は何もしなかったなぁと思っていたのだが、<a href="http://www.liarsoft.org/diary/summary2009.html">日記を振り返ってみる</a>と、どう<br />やら私はゲーム機用 OS を作っていたようである。その過程でコンパイラも作っ<br />ていたようだ。（あと麻雀を作ろうとして投げたり、思いつきで手を出しては色<br />々投げてもいたようだ……）<br /><br />趣味プログラマが一度は作りたがるものとして OS とオレオレ言語、あとはテキ<br />ストエディタがあげられるだろう。 OS と言語は一応達成してしまった？わけで、<br />となると残るはテキストエディタか。ネタとしてはバッファ構造、無限アンドゥ、<br />grep、置換、色分け、入力補完といったところだろうか。 <a href="http://www.kmonos.net/alang/texted/">GreenPad</a> の後追いを<br />するだけでも相当力がつきそうな気がする。<br /><br />まぁテキストエディタはもう秀丸と Vim があればいいので……。<br /><br />あと今年は<a href="http://www.ne.jp/asahi/hzk/kommander/2010top.html">ギャラクシーポリスの年</a>なのでこれ系のネタをやりたい気がする。<br /><br />いい加減あれの移植も再開したい……。<br /><br />それとそろそろ PC 向けに何かを作りたい。具体的には CD もしくは DVD 一枚<br />あれば起動できるゲーム環境を一から作ってみたい。現時点ではこれが有力かな。</tt>]]>
    </content>
  </entry>

  <entry>
    <title>そうか。もう年末なんだな。（・ω・）</title>
    <link rel="alternate" type="text/html" href="http://www.liarsoft.org/diary/20100101.html#20100101p1" />
    <id>http://www.liarsoft.org/diary/20100101.html#20100101p1</id>
    <issued>2010-01-01T02:25:34Z</issued>
    <modified>2010-01-01T02:25:34Z</modified>
    <summary type="text/plain">ネンマツー。(’ω`)</summary>
    <author>
      <name>Kashiwa</name>
    </author>
    <content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.liarsoft.org/diary/">
      <![CDATA[<tt>ネンマツー。(’ω`)</tt>]]>
    </content>
  </entry>

  <entry>
    <title>世界初！ C++ でメガドラソフトを作るおとこ</title>
    <link rel="alternate" type="text/html" href="http://www.liarsoft.org/diary/20091208.html#20091208p1" />
    <id>http://www.liarsoft.org/diary/20091208.html#20091208p1</id>
    <issued>2009-12-08T14:31:14Z</issued>
    <modified>2009-12-08T14:31:14Z</modified>
    <summary type="text/plain">と言うネタを温存していたのだが、さすがに温存しすぎたらしく、気づいたら既 にやっている方がいた。これでは今から始めても２位になってしまう。別に１位 でなくても構わない話ではありますが。（←時事ネタは風化するわよ）  メガドラでオブジェクト指向プログラミング   ...</summary>
    <author>
      <name>Kashiwa</name>
    </author>
    <content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.liarsoft.org/diary/">
      <![CDATA[<tt>と言うネタを温存していたのだが、さすがに温存しすぎたらしく、気づいたら既<br />にやっている方がいた。これでは今から始めても２位になってしまう。別に１位<br />でなくても構わない話ではありますが。（←時事ネタは風化するわよ）<br /><br /><a href="http://naruishi.hp.infoseek.co.jp/program/mdcpp.html">メガドラでオブジェクト指向プログラミング</a><br /><br /><br />どうやら私の手抜きのせいで面倒をお掛けてしまったようで申し訳なし。<br /><br />malloc その他の関数が 68020 の命令を使っているのはバグではなくて、 gcc <br />のビルド時に --enable-multilib を指定して、かつ適切なビルドオプションを<br />指定しないとデフォルトのリンクライブラリが 68020 用になるという仕様に起<br />因していて<br /><br /><blockquote class="quote">$ wine m68k-gen-elf-gcc -dumpspecs<br /><br />...snip...<br /><br />*multilib_defaults:<br />m68020 m68881</blockquote><br /><br />という風に確認できる。<br />ついでに multilib も確認しておくと…<br /><br /><blockquote class="quote">$ wine m68k-gen-elf-gcc -print-multi-lib<br />.;<br />m68000;@m68000<br />m5200;@m5200<br />m5206e;@m5206e<br />m528x;@m528x<br />m5307;@m5307<br />m5407;@m5407<br />mcpu32;@mcpu32<br />m68040;@m68040<br />m68060;@m68060<br />msoft-float;@msoft-float</blockquote><br /><br />と 68000 用のライブラリも用意されているので、リンクオプションで -A 68000<br />もしくは --architecture 68000 と指定すればそっちがリンクされるようになる<br />はず。しかし紛らわしいので最初からそちらがリンクされるように（私の方で配<br />慮を）しておけよって話ですね……。<br /><br />--<br /><br />devkitGenesis と謳っている割にはメガドラ用の C ランタイムとリンカスクリ<br />プトが入ってなくて、それは何故かというと非 GPL なライブラリを GPL なソフ<br />ツに混ぜるとどうなるのか分からなかったので保留していたのだよな……。<br /><br />crt0.o は自分で用意したいとずっと思っているのだけど、セキュリティコード<br />の辺りがよく分からない。これはこういうもんだと割り切って既存のを使わせて<br />もらっちゃうのが正解なのかな。<br /><br />あとの手順としてはこんなもんだろうか。<br /><br /><ul><li>MPU(68000) 初期化（モード, 割り込み, スタック）</li><br /><li>CPU(Z80) リセット＆ HALT</li><br /><li>VDP 初期化</li><br /><li>OPN2, DCSG 初期化</li><br /><li>RAM 初期化（.bss と .sbss をゼロクリアし .data のコピー）</li><br /><li>libc 初期化（__libc_preinit_array, __libc_init_array, __libc_fini_array ?）</li><br /><li>グローバルコンストラクタ呼び出し（__do_global_ctors_aux ?）</li><br /><li>main 呼び出し</li></ul><br /><br />68 アセンブリが微妙に書けないので、手始めに C で書いて吐かれたコードを手<br />直しするかと見てみたら、明らかに dbra が使える局面でそれが使われてなかっ<br />たりする。うーむどうしたら使ってくれるのだろう。<br /><br /><blockquote class="quote">void <br />Copy(u32 dst, u32 src, size_t n)<br />{<br />  char* s = (char*)src;<br />  char* d = (char*)dst;<br />  do {<br />    *dst++ = *src++;<br />  } while (--n);<br />}</blockquote><br /><br />が、こうなる。<br /><br /><blockquote class="quote">Copy:<br />  move.l 12(%sp),%d0<br />  move.l 8(%sp),%a1<br />  move.l 4(%sp),%a0<br />.L2:<br />  move.b (%a1)+,(%a0)+<br />  subq.l #1,%d0<br />  jne .L2<br />  rts</blockquote><br /><br />gcc/config/m68k/m68k.md を見ると dbra を使ってくれる局面は２種類存在する<br />のだけど、よく分からない。つーかどんどん脱線していくな……。</tt>]]>
    </content>
  </entry>

  <entry>
    <title>クウォータービューで頭身の高い歩行アニメを描く</title>
    <link rel="alternate" type="text/html" href="http://www.liarsoft.org/diary/20091204.html#20091204p1" />
    <id>http://www.liarsoft.org/diary/20091204.html#20091204p1</id>
    <issued>2009-12-03T17:40:11Z</issued>
    <modified>2009-12-03T17:40:11Z</modified>
    <summary type="text/plain">オウガサイズならなんとかなりそうだけど、なぜか頭身の高いものを描く羽目に なってしまった。なんだか難しそうだ。     まず腰から下を棒人間でざっと描いて、太ももの付け根と、かかとを基準とした 歩幅の位置にマークをつけた。     次にかかとを動かしてみる。     かか...</summary>
    <author>
      <name>Kashiwa</name>
    </author>
    <content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.liarsoft.org/diary/">
      <![CDATA[<tt>オウガサイズならなんとかなりそうだけど、なぜか頭身の高いものを描く羽目に<br />なってしまった。なんだか難しそうだ。<br /><br /><br /><img src="/data/walker0.gif" /><br /><br />まず腰から下を棒人間でざっと描いて、太ももの付け根と、かかとを基準とした<br />歩幅の位置にマークをつけた。<br /><br /><br /><img src="/data/walker1.gif" /><br /><br />次にかかとを動かしてみる。<br /><br /><br /><img src="/data/walker2.gif" /><br /><br />かかとと腰をラインで結んで、それを基準に膝マークをつける。<br /><br /><br /><img src="/data/walker3.gif" /><br /><br />腰と膝と踵をそれぞれラインで結んだ。平行投影なので、足が一本出来れば奥の<br />もコピペで使いまわせるはず。<br /><br /><br /><img src="/data/walker_anime1.gif" /><br /><br />実際にアニメしてみる。腰が広すぎた！<br />要調整だけどまぁ歩いてるようには見えるかな。<br /><br /><br /><img src="/data/walker_anime2.gif" /><br /><br />鳥足でも多脚でもなんでもござれですね！<br />もう怖いものは無い……といいな。</tt>]]>
    </content>
  </entry>

  <entry>
    <title>golangクロスコンパイラを捏造する</title>
    <link rel="alternate" type="text/html" href="http://www.liarsoft.org/diary/20091114.html#20091114p1" />
    <id>http://www.liarsoft.org/diary/20091114.html#20091114p1</id>
    <issued>2009-11-17T22:45:33Z</issued>
    <modified>2009-11-17T22:45:33Z</modified>
    <summary type="text/plain">go 社を会場に繰り広げられた勉強会に赴き、そこで何故か一人黙々と ARM 版 go のビルドを行ってきた。恥ずかしい話だけど、諸事情で二日寝ておらず目が血走っ ており、なんだか気を使わせてしまって申し訳ないことをした。寝ぼけたことも 多分言った。  --  (追記：下記で 5c...</summary>
    <author>
      <name>Kashiwa</name>
    </author>
    <content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.liarsoft.org/diary/">
      <![CDATA[<tt><a href="http://atnd.org/events/2115">go 社を会場に繰り広げられた勉強会</a>に赴き、そこで何故か一人黙々と ARM 版 go<br />のビルドを行ってきた。恥ずかしい話だけど、諸事情で二日寝ておらず目が血走っ<br />ており、なんだか気を使わせてしまって申し訳ないことをした。寝ぼけたことも<br />多分言った。<br /><br />--<br /><br />(追記：下記で 5c と書いている部分と 5c に絡む解説部分は全て勘違いでした。<br />エラーが出るのは libcgo のみで、 5c 自体はコンパイル出来るようです)<br /><br />まず普通の go コンパイラ。 <s>5c</s> libcgo のコンパイル時に、 arm.o の生成ルー<br />ルを見つけられずにエラー終了する。<br /><br />golang だけ使う分には 5g と 5l があればいいのだが、 C と連携したい場合に<br />こま……いや困ることは無いかなぁ。<br /><br /><s>5c</s> libcgo には go と C の関数を仲介する arm.S と、スレッドを仲介する <br />linux_arm.c が必要なのだけど、取り合えず arm.S を捏造して前者だけまかな<br />うことにする。どちらにしても <s>5c</s> libcgo が使えないことは変わりないけど。<br /><br />arm.S のアセンブルには x86-gcc が使われてしまうので、一筋縄ではいかない。<br />結局 arm-gcc -fPIC でコンパイルしたコードからバイナリを抽出して直接 .long<br />で埋め込んでやった。バイナリサイコー。<br /><br />更に linux_arm.c の中身を賄ったとして、こちらも arm-gcc でコンパイルする<br />必要がある（しかも ARM 版の pthread ライブラリが要るはず）と思うけどどう<br />するんだろう？ <s>libcgo を 5c の外に出して、 5l で使うようにしないといけな<br />い気がする。</s><br /><br /><br />objdump で 5.out を逆アセンブルしたら r0-r3, sp, lr, pc しかレジスタを使っ<br />ていないようだ。おかげでかなり冗長なコードになっていた。まぁ RISC のコー<br />ドなんて冗長なものだろという伝説もある。ARM は CISC 的なにおいもするけど。<br /><br />ちなみに、 5g / 5l で生成した 5.out を qemu-arm (0.11.0) で実行したら<br />Segmentation Fault が返ってきた……。いつか beagleboard でも試してみたい<br />ところ。<br /><br />--<br /><br />次に gccgo。<br /><br />gccgo のソースには <a href="http://gcc.gnu.org/wiki/SplitStacks">Split Stacks</a> という拡張が加えられており、goroutine の<br />（gccgo 版の）肝になっているようなのだが、ARM 版はまだ着手されていないの<br />で 386 版を参考に同様の変更をする必要がある。えーとどこだったかな、もう<br />忘れてしまった……。(diff とれば一発だけど面倒くさい)<br /><br />configure オプションは以下の通り。<br /><br />../gccgo/configure \<br />  --enable-languages=c,go \<br />  --build=i686-pc-linux-gnu \<br />  --host=i686-pc-linux-gnu \<br />  --target=arm-eabi \<br />  --with-cpu=arm9tdmi \<br />  --enable-interwork \<br />  --enable-multilib \<br />  --with-gcc \<br />  --with-gnu-ld \<br />  --with-gnu-as \<br />  --disable-shared \<br />  --disable-debug \<br />  --disable-nls \<br />  --disable-libmudflap \<br />  --disable-libssp \<br />  --disable-libgomp \<br />  --disable-zlib \<br />  --disable-libstdcxx-pch \<br />  --prefix=$HOME/gccgo-arm<br /><br />多分 libffi で詰まると思うので、3.0.9rc3 を落としてきて差し替えると吉。<br /><br />で、えーと libgo の移植が済んでないのでビルドは途中で終わるよ……。<br /><br /><br />あまり関係ないけど gccgo/gcc/go/gogo.cc と、[/gco.]だけで構成されている<br />ディレクトリがあって、なんだか面白かった。イケイケだ。<br /><br />あとマスコットはかわいいと思うんだよ俺は。</tt>]]>
    </content>
  </entry>

  <entry>
    <title>ubuntu 9.10 にしたら Web のスクリーンショットを取りまくれなくなったよ</title>
    <link rel="alternate" type="text/html" href="http://www.liarsoft.org/diary/20091031.html#20091031p1" />
    <id>http://www.liarsoft.org/diary/20091031.html#20091031p1</id>
    <issued>2009-11-02T19:18:26Z</issued>
    <modified>2009-11-02T19:18:26Z</modified>
    <summary type="text/plain">xulrunner が 1.9.1 になって、いくつかの API が他のクラスに移動したため、 1.9.0 の libxul を当て込んでいる Mozilla::DOM が動かなくなりました。  具体的には nsIDOMNSHTMLElement の scrollXXX, clientXXX が nsIDOMNSElement に移動したらしい。offsetXXX だけ移動し...</summary>
    <author>
      <name>Kashiwa</name>
    </author>
    <content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.liarsoft.org/diary/">
      <![CDATA[<tt>xulrunner が 1.9.1 になって、いくつかの API が他のクラスに移動したため、<br />1.9.0 の libxul を当て込んでいる Mozilla::DOM が動かなくなりました。<br /><br />具体的には nsIDOMNSHTMLElement の scrollXXX, clientXXX が nsIDOMNSElement<br />に<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=111034#c8">移動したらしい</a>。offsetXXX だけ移動してないのはなぜと思ったら、その理由<br />についても件のレポートで挙がっていました。なるへそ。<br /><br />んで、Mozilla::DOM::NSElement を新設して、メソッドをそちらに移動したらコ<br />ンパイルもインストールも QueryInterface も出来るようになったので（続く）<br /><br />（続き）<a href="http://rt.cpan.org/Public/Bug/Display.html?id=51011">パッチ</a>を投げておきました。windows からアップしたら octet-stream<br />になってしまった。なんか恥ずい。</tt>]]>
    </content>
  </entry>

  <entry>
    <title>Webのスクリーンショットを取りまくってたよ</title>
    <link rel="alternate" type="text/html" href="http://www.liarsoft.org/diary/20091029.html#20091029p2" />
    <id>http://www.liarsoft.org/diary/20091029.html#20091029p2</id>
    <issued>2009-11-15T10:36:59Z</issued>
    <modified>2009-11-15T10:36:59Z</modified>
    <summary type="text/plain">MozEmbed の存在を知って以来、もうメロメロぞっこんになって色々遊んでいま したが、まぁ色々といってもスクリーンショットを撮ってただけなので全然色々 ではありませんが。   ・Xvfb を入れる  デーモン化しようと思ったら、なんか ubuntu server 用の設定がどこにも見つ ...</summary>
    <author>
      <name>Kashiwa</name>
    </author>
    <content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.liarsoft.org/diary/">
      <![CDATA[<tt>MozEmbed の存在を知って以来、もうメロメロぞっこんになって色々遊んでいま<br />したが、まぁ色々といってもスクリーンショットを撮ってただけなので全然色々<br />ではありませんが。<br /><br /><br /><strong>・Xvfb を入れる</strong><br /><br />デーモン化しようと思ったら、なんか ubuntu server 用の設定がどこにも見つ<br />からなかったので見よう見まねでこしらえました。丸一日かかりました。linux<br />難しすぎる。<br /><br /><blockquote class="quote"><a href="/data/xvfb.txt">xvfb.txt</a> を /etc/init.d/ にコピー<br /><br />$ sudo chmod +x /etc/init.d/xvfb<br />$ sudo update-rc.d xvfb defaults<br />$ sudo /etc/init.d/xvfb start<br /><br />※ <a href="http://d.hatena.ne.jp/fuba/20070329/1175101118">X11::Xvfb</a> を使うなら一連の操作は要りません。</blockquote><br /><br />Xvfb を起動するとなんかフォント系の警告がでまくるので、apt-get でフォント<br />が沢山入るパッケージを入れます。申し訳ありませんがパッケージ名は忘れまし<br />た。一日で忘れました。linux 覚えづらすぎる。(追記： xfonts-base でした)<br /><br /><br /><strong>・xulrunner とかを入れる</strong><br /><br />これだけ指定すればたぶん必要なものは芋づる式に色々入ります。<br /><br /><blockquote class="quote">$ sudo apt-get install pkg-config xulrunner-dev \<br /> libgtk2-perl libgtk2.0-bin libgtk2.0-common libgtk2.0-dev</blockquote><br /><br />足りない場合は $ apt-cache search xulrunner で出てくるものを全部入れれ<br />ばいいです。<s>linux 楽チンすぎる。</s><br /><br /><br /><strong>・Mozilla::DOM を入れてから Gtk2::MozEmbed を入れる</strong><br /><br />Mozilla::DOM が無くても Gtk2::MozEmbed が入ってしまうのは罠でしょ……。<br />Mozilla::DOM を入れる際に libxul.so が見つからない旨のエラーが出るので、<br />事前に以下の操作を行っておきます。<br /><br /><blockquote class="quote">$ sudo su<br /># cat &gt;&gt; /etc/ld.so.conf.d/libxulcrap.conf<br />/usr/lib/xulrunner-devel-1.9.0.14/lib<br />ctrl-d<br /># ldconfig<br /><br />(追記：ubuntu 9.10 で xulrunner-1.9.1.*/lib になったようです）</blockquote><br /><br />つーか README に載ってるんですよこれ。README 読まなすぎる。<br /><br />※ デスクトップ版 ubuntu でこれを行うと firefox-3.5 が起動できなくなり<br />　 ます。共有ライブラリを使い分ける方法があると思うんですが Linux が難し<br />　 すぎて分かりませんでした。Linux が難しすぎる。<br /><br />あとは CPAN で入れるだけです。<br /><br /><blockquote class="quote">sudo cpan -i Mozilla::DOM Gtk2::MozEmbed</blockquote><br /><br /><br /><strong>・スクロールバーを消す</strong><br /><br /><a href="https://developer.mozilla.org/ja">MDC</a> を見ると、スクロールバーをトグルで非表示にする <a href="https://developer.mozilla.org/ja/DOM/window.scrollbars">window.scrollbars</a> が<br />あるので、<a href="http://search.cpan.org/~slanning/Mozilla-DOM-0.22/lib/Mozilla/DOM/Window.pod">Mozilla::DOM::Window</a> にも GetScrollBars がありそうな気がしま<br />すが……無いので他の方法をとりました。<br /><br /><blockquote class="quote">  my @elems = $embed-&gt;<br />                get_nsIWebBrowser()-&gt;<br />                GetContentDOMWindow()-&gt;<br />                GetDocument()-&gt;<br />                GetElementsByTagName('body');<br />  for my $elem (@elems) {<br />    my $attr;<br />    if ($elem-&gt;HasAttribute('style')) {<br />      $attr = $elem-&gt;GetAttribute('style');<br />    }<br />    $attr .= '; overflow: hidden;';<br />    $elem-&gt;SetAttribute('style', $attr);<br />  }</blockquote><br /><br /><br /><strong>・ディレクトリを別ける</strong><br /><br />調子に乗ってあれこれ撮りまくっていたら、ファイルが多すぎてディレクトリを<br />閲覧するのが困難になってきました。パスを切って分散します。<br /><br />先人であるところの「はてなブックマーク」の切り方を調べてみると、<br /><br /><blockquote class="quote">/a/b/c/d/e/[0-9a-z]{35}.jpg</blockquote><br /><br />というパスになっており、どう見ても SHA-1 でした。<br /><br />パスの生成に一方向ハッシュを用いると元の名前が連想できず、手動アクセスし<br />たいときに不便です。手動アクセスをする機会なんかそんなに無い気もしますが、<br />今回はドメインネームを逆さに連結することにしました。この方法はいずれ破綻<br />しますが一時の延命には使えます。<br /><br /><blockquote class="quote">sub make_directory_path_from_url<br />{<br />  my $url = shift;<br />  my ($domain) = $url =~ m{^.*?://(.+?)/};<br />  my $path = join '/', reverse split(/\./, $domain);<br />  return $path;<br />}</blockquote><br /><br /><br />そんなこんなでページショットが撮れるようになりました。<br /><br /><img src="/data/cpan_pageshot.jpg" /><br /><br />ページショットを撮る時は ScrollTo を使って少しずつ pixbuf に流し込みまし<br />た。<br /><br /><br />Flash でフェードインやら skip &gt;&gt; やらをしているサイトは、スクリーンショッ<br />トを撮ると真っ白とか真っ黒になるのでアホかと思いました。３〜５秒以内に絵<br />が出てこないサイト（を作るようなデザイナー）は○○○ればいいのにと思いま<br />した。<br /><br />終わりです。</tt>]]>
    </content>
  </entry>

  <entry>
    <title>発音中にMULを書き換えて位相ずれを起こす</title>
    <link rel="alternate" type="text/html" href="http://www.liarsoft.org/diary/20091029.html#20091029p1" />
    <id>http://www.liarsoft.org/diary/20091029.html#20091029p1</id>
    <issued>2009-10-29T13:57:15Z</issued>
    <modified>2009-10-29T13:57:15Z</modified>
    <summary type="text/plain">こんなマニアックなテクがあるなんて、今まで気づかなかったよ……。  とは言えウェイトが必要な実機だと、タイミングは完全にシーケンス依存なので 実用は難しそうだ。レジスタ書き換えとシーケンス実行が（音源から見て）ゼロ 時間で済んでしまうエミュプレイヤー向けのネタ...</summary>
    <author>
      <name>Kashiwa</name>
    </author>
    <content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.liarsoft.org/diary/">
      <![CDATA[<tt>こんなマニアックなテクがあるなんて、今まで気づかなかったよ……。<br /><br />とは言えウェイトが必要な実機だと、タイミングは完全にシーケンス依存なので<br />実用は難しそうだ。レジスタ書き換えとシーケンス実行が（音源から見て）ゼロ<br />時間で済んでしまうエミュプレイヤー向けのネタかな。……ネタと言っても、こ<br />んなテクをどう活用すればいいのか全く思いつかない。単チャネルでフェーザー<br />効果が得られるかなぁ。<br /><br /><br />なんの話だか分からない人の方が多いと思いますが、FM音源の話です。</tt>]]>
    </content>
  </entry>


</feed>
