単純にコピーしようとしても無理みたいだ。ループカウンタは常にデクリメントされまくるので、一つの値を別のところにコピーする場合、元の値は一度破壊 (0化) するしかない。その後元の場所に値を戻す。

=initialize
+++++
? Array: 05 00 00
=Copy
I wanna copy the value from 0 to 1.
[->+>+<<]
? Array: 00 05 05
>>[-<<+>>]
? Array: 05 05 00

インタプリタに

    when ??
p arr

とか付け加えてデバッグ。

  1. トップ
  2. brainfuck
  3. Brainfuck, 値のコピー
  1. トップ
  2. prog
  3. Brainfuck, 値のコピー

シャーロットのクロエ, ロングソード, 女精霊, 契約直後

なんとなく精霊武器が欲しかったので作りました。シャーロットは11歳で熟練があがらないので、シュガーレス (放置裁縫キャラ。25歳33年目) を使い、永遠骸骨オオカミ。HP低いから1ターンで瀕死になる。しかしロンソ4連をやりまくった。だらだら。

んで、今日熟練100になったので、エレメンタルリムーバーを買い、精霊石をギルメンからもらい (その節は本当にありがとうございました)、タルラークマへいって契約。めでたしめでたし。名前が思いつかないのでクロエに。ふふ。見ればわかるのですが、ロングソードの女精霊です。ロリですね。精霊的には鈍器のほうがいいんですが、武器的にはロンソのほうが好きなのでこっちに。実用性皆無なのがアレです。実用性もとめるなら両手剣でしょうけど、どうせ使わないんですよねこういうのって。

まぁしかし、今無料アカなのでこれ以上は進めず、明日あたりウェブマネー買ってきてやろうかと。

最初のクロエ まじヒドス。何?ってねぇ。泡

ツンデレかと思いきやただの生意気キャラでした。みたいな。素直シュールはいないんですか。

  1. トップ
  2. mabinogi
  3. mabinogi, 精霊武器

既存のスクリプトを修正せず、そのまま fcgi 化したい。

Web Server 側の設定の変更だけでいきたい。

fastcgi.server             = ( ".rb" =>
( "localhost" =>
(
"socket" => "/tmp/fcgi-ruby.socket",
"bin-path" => "/usr/local/bin/ruby-fcgi.rb"
)
))

とか書くとして (仮定)、ruby-fcgi.rb を考えたい。しかしながら FastCGI の仕組みがいまいちわかってないのでとりあえず保留。

UNIX ソケットであらかじめ起動してある CGI 実行プロセスと通信する?みたいなのはわかるんだけど、実際のとこ、この bin-path に指定したプログラムと、実際にリクエストされたファイルの関係がわからない。普通の CGI は引数にリクエストされたファイルを渡すけど、FastCGI はどうなるんだろう。というところで、試そうと思うんだけど、ちょっと環境構築に手間取っている。

というか、できるなら既にそういう方法が発見できるはずなんだけど、ないってことはやっぱないんだろうか。Ruby に環境を保存しておく機能がないんだっけ。callcc ?

UNIX ソケットで、とは限らないようだ。TCP/IP でもできる (すなわち、別のサーバにもおける) みたい。

普通の CGI は引数にリクエストされたファイルを渡すけど って嘘つきすぎ(w

CGI はただたんにリクエストされたファイルを起動してるだけだ。shebang を混同してる。

うーん。よくわからん。FastCGI を使ったアプリケーションを作るたびに、HTTPD の設定ファイルも書き換えないといけないんだろうか。

ENV を書き換える方法がないから無理だなこれ。

  1. トップ
  2. ruby
  3. CGI FastCGI, ruby
  1. トップ
  2. cgi
  3. CGI FastCGI, ruby
  1. トップ
  2. web
  3. CGI FastCGI, ruby

Meta*Headphone-Girls晒された。結構キャッチされるまで時間がかかったなぁ……

さいきん up 関係の絵が多くてリンクを貼れない。貼ってもすぐ消えちゃうから。ヘッドフォン娘関連では mixi 関連で辿って片っ端から絵サイトを見まくるのをときどきやりつつ、メールで送られてくる編集ログを眺める日々です。しかしどうやって纏めるか悩む。もうちょいいい方法ないかな。

ちなみに一日のユニークホストはここ一週間平均20ぐらい。

  1. トップ
  2. 2ch
  3. 2ch ヘッドフォン娘スレ
  1. トップ
  2. headphone
  3. 2ch ヘッドフォン娘スレ
  1. トップ
  2. mhpg
  3. 2ch ヘッドフォン娘スレ

前にだしたやつ を気が向いたので CSS 化。魔術というか卑怯というか、キモい技を使ってますが結構微妙ですね。

手の画像は Spindly by salt fork です。

「なんかよくわからないけど」読みにくい感じがする。回りのぐにゅぐにゅのせいかな? ちょっとしたら元に戻すかもしれない。

戻した。指輪は alternate にしといた。

  1. トップ
  2. css
  3. 新スタイル - 指輪
  1. トップ
  2. web
  3. 新スタイル - 指輪

メモ。lighttpd + FastCGI は mod_perl + Apache1.3 より1割ほど高速 :: Drk7jp これを見つつ。とりあえず、Perl も PHP もいらんのでそのへんごちゃり。

cd ~/src
wget http://www.fastcgi.com/dist/fcgi.tar.gz
tar xvfz fcgi-2.4.0.tar.gz
cd fcgi-2.4.0
./configure
make
make check
sudo make install
cd ~/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-6.4.tar.gz
tar xvfz pcre-6.4.tar.gz
cd pcre-6.4
./configure
make
sudo make install
cd ~/src
wget http://www.lighttpd.net/download/lighttpd-1.4.9.tar.gz
tar xvfz lighttpd-1.4.9.tar.gz
cd lighttpd-1.4.9
./configure
make
sudo make install
sudo ln -s /usr/local/sbin/lighttpd /usr/sbin/lighttpd
sudo cp doc/rc.lighttpd /etc/init.d/lighttpd
sudo cp doc/lighttpd.conf /etc/lighttpd/
#sudo update-rc.d lighttpd defaults 30 # まだ

あと ruby-xslt をインスコして、IRC Log 関連を ubuntu に移すことにした。tiarra も最新版にして conf だけ転送。

sudo apt-get install libxml-ruby1.8 libxslt1-dev
cd
cd src
wget http://gregoire.lejeune.free.fr/ruby-xslt_0.9.2.tar.gz
tar xzvf ruby-xslt_0.9.2.tar.gz
cd ruby-xslt
lm
ruby extconf.rb
make
lm
sudo make install
  1. トップ
  2. linux
  3. ubuntu + lighttpd + ruby-xslt

更新できずにいた now playing をどうにかする。

Rhythmbox にしてから now playing が更新できなかったんだけど、rbscrobbler を適当にハックして情報投げるようにしてみた。全く難しいことをやっていないんだけど、Python がまったくわからんおかげで、invalid syntax で何度も怒られた。

rbscrobbler.patch

UTF-8 で送られてくるので、CGI 側では特に変換をしないように変更。ていうかこの CGI 古いなぁ。クラスメソッド使うときは :: 使ってたころだ。

  1. トップ
  2. music
  3. Rhythmbox now playing
  1. トップ
  2. prog
  3. Rhythmbox now playing

Brainfuck インタプリタ。

arr = []
ptr = 0
soc = ARGF.read
pos = 0
while soc.size > pos
print soc[pos].chr if $DEBUG
p arr if $DEBUG
arr[ptr] ||= 0
case soc[pos]
when ?>
ptr += 1
when ?<
ptr -= 1
when ?+
arr[ptr] += 1
when ?-
arr[ptr] -= 1
when ?.
print arr[ptr].chr
when ?,
arr[ptr] = $stdin.getc
when ?[
if arr[ptr].zero?
n = 1
while n.nonzero?
pos += 1
case soc[pos]
when ?[
n += 1
when ?]
n -= 1
end
end
end
when ?]
n = -1
while n.nonzero?
pos -= 1
case soc[pos]
when ?[
n += 1
when ?]
n -= 1
end
end
pos -= 1
end
pos += 1
end
puts

mailto:>++++++++++[<++++++++++>-]<-. +++++. +++++++. >++++++[<---------->-]<+. +. >++[<+++++>-]<+. >++++[<++++++++++>-]<++++. +++. ++++++++. -----. -------------. ----. +++++++++++. >++++++[<---------->-]<--. >++++++[<++++++++++>-]<++++. ---------. +++++++++++++++. 途中式 もっと短くしろよとかね。知らないよ。1パターンしか使ってないしね。いやでも別にね。ね。

bfi.rb Brainfuck の Ruby 実装 ってのを見つけた。変数名以外殆ど同じ(w. 最後に puts つけてるのまで同じだ。おもろいなぁ。ちなみに最後の puts は zsh 対策です。

The Ruby BrainFuck Interpreter クラス使ってる

アルゴリズム自体は Brainf*ck で頭にいれ、テストもそのページで紹介されているプログラムを使った。

  1. トップ
  2. prog
  3. Brainfuck on Ruby
  1. トップ
  2. ruby
  3. Brainfuck on Ruby