Category prog.

更新できずにいた 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

昔 (といっても2-3年前) は PHP が好きだったんだよなぁ。なんでだろう。HTML に埋め込み、ウェブに特化してるってのがよかったんだろうか。

そういえば、そのころはデータベース使うのも特に抵抗がなかった。

とりあえず、少なくとも Ruby を知らなかったっていうのはある気がする。Perl は暗号で読めないし、PHP には一応日本語のリファレンスがちゃんとあったから、とっつきやすかったのかもしれない。

なんていったらいいかよくわからないんだけど、感覚としては Ruby は優しくかつ筋が通ってる感じ、Perl は玄人、PHP は楽ちんダサみたいな。いやでも比べるのが間違ってるんだろうなぁ。PHP ってなんかそこらへんの個人がやっつけで作ったマクロ言語っぽい臭いがするし。

とはいえ実用的っていえば実用的なのが PHP のキモさというかなんというか。ほげーっとしつつてきとーに書いても 500 が出にくいところがいいのかもしれない。

関係ないけど Ruby で CGI 書くときは一枚ラッパ書けるようにした。500 でるとこんなかんじになるように。#!/usr/local/bin/ruby /virtual/lowreal/bin/rubycgi.rb みたいな。ローカルは Windows だから関連付けで Apache どーん

なんか日本語書けない。もともと書けないけどさ。

  1. トップ
  2. php
  3. 昔はPHPが
  1. トップ
  2. web
  3. 昔はPHPが
  1. トップ
  2. prog
  3. 昔はPHPが