✖
スルー力が全くない…… 煽られたら\(^o^)/ 状態
✖
写真だけ見たけりゃ flickr でも f.hatena.ne.jp でも /searchdiary?word=*[photo] でもなんでもあるよ。
CMS
なんか washer-in-the-rye.com を管理するにあたって簡単な CMS が欲しいので要件を整理しておく (theruck でつくる)
- 簡単に編集できて管理できること
- マルチリンガルであること
- ERB をテンプレートに
- HTML 直編集したい (あのページは実は microformats と RDF 埋め込みによる XSLT での RDF への変換をサポートしています)
思いついたこと
- git 使いたい
- git push すると本番に反映されるように
- 別に本番環境で確認できる必要なくね?
- ruby foobar.rb するとローカルウェブサーバが立ち上がって確認できればいい
✖
自分は十分に助けてもらっているので、ちゃんと自分の足で歩かなくてはならない。
ゆの まとめ用スクリプト
ブクマからキーワードページのテーブルにするやつ
require "rubygems"
require "mechanize"
require "active_support"
require "time"
@ua = WWW::Mechanize.new
puts "|*言語|*リンク|"
begin
results = []
uri = "http://b.hatena.ne.jp/cho45/atomfeed?tag=%E3%82%86%E3%81%AE%20in%20language"
loop do
begin
warn uri
@ua.get uri
doc = XmlSimple.xml_in(@ua.page.body)
raise "Bug?" unless doc["entry"]
results.concat doc["entry"]
next_link = doc["link"].find {|link| link["rel"] == "next" }
break unless next_link
uri = next_link["href"]
rescue RuntimeError
sleep 1
retry
end
end
results.map! {|entry|
entry.update("lang" => entry["subject"] - ["ゆの", "language", "ゆの in language", "ひだまりスケッチ"])
}
results = results.sort_by {|entry| [entry["lang"], entry["issued"]] }.map { |entry|
warn entry["subject"].inspect
"|%s|[%s:title]|" % [
entry["lang"],
entry["link"].find {|link| link["rel"] == "related" }["href"],
]
}
raise "Bug?" if results.uniq!
rescue RuntimeError
sleep 1
retry
end
puts resultsなんかちゃんとフィードがとれないことがあるのでチェックかけてリトライしてる。
✖
todo: last.fm のパスワード変更
ゆの
弾さんが煽ったせいか [[ゆの in language]] がやたら盛り上がっててうける。特に Java がドラマチックでめっちゃおもしろい。
git でサイト管理する
とりいそぎ CMS 作るまでにあいだ git push で更新できるようにした
$ cat .git/hooks/post-receive #!/bin/sh cd .. /virtual/lowreal/git/bin/git --git-dir=.git reset --hard
ってやると push したときに Working Copy が hard reset されて更新される。なんか PWD と --git-dir をうまいこと指定しないとダメだった…… (フックスクリプトの実行時の pwd は .git 以下)
常に reset がかかるのでリモートでファイル編集とかしちゃだめ。今まで rsync してたけど --delete が怖くてできなかったのでこれでスッキリ
✖
今日、起きて、窓あけたら風が結構強くて、それが涼しくて、そのせいで、妙に現実感を失くした感覚になった。草の花の後半で、戦争が起こっているなかの日常みたいなのがあって、それがやたら静かに描写されるけど、ああいうのを、スケールの違いさえあれ、実感した。
✖
位置決めとか、金とか、時間の節約とか、そういった戦争に関わる全てのことに、本当にうんざりしてる。
✖
✖
やっぱ TAMRON の 90mm MACRO が欲しい。買わないけど
✖
✖
紫陽花は終わりかけがいい感じだと思う。
✖
紫陽花って、見るたびに、小学校低学年のときの、旧校舎に咲いていたのを思い出す。小学校のときの記憶って、雨の日のことばっかりだなぁ。校舎の立て直しが丁度在学中にあって、プレハブで授業を受けていたことがあるんだけど、そのときあたりの記憶も全部雨の日だ。
ゆの in PHP4
<?php
function x ($buf) {
return str_replace("X / _ / X <", "ひだまりスケッチ×365", $buf);
}
ob_start("x");
?>
X / _ / X < 来週も見てくださいね!
<?php ob_end_flush(); ?>僕の PHP の知識は 4 で止まっています。
もっと短かくなるよ!
http://subtech.g.hatena.ne.jp/mayuki/20080713/1215952300
php -v したら 5 でした……
Re: ゆの in Ruby
「おまえのコードつまんねーんだよ!!11」ってゆわれた気がしたのでバリエーションつくってみました><
# *_missing
class Object
def self.const_missing(n)n end
def method_missing(n, *a)
print (n == :<) ? a : ({
[:_, $!] => "ひだまり",
[:/, :_] => "スケッチ",
[:/, :X] => "×365"
}[[n, a[0]]] || " ")
n
end
end
X / _ / X < 来週も見てくださいね!# 上のと同じのをちょっとゴルフぽく。(むずい)
class X;end
class Object
def method_missing(n,*a)print n==:<?a:({[:_,$!]=>:ひだまり,[:/,:_]=>:スケッチ,[:/,X]=>:×365}[[n,a[0]]]||" ");n end
end
X / _ / X < 来週も見てくださいね!# ひたすらエラーハンドリング
begin
X / _ / X < 来週も見てくださいね!
rescue NoMethodError => e
case e.message[/`(.+)'/, 1]
when "/"
print "×"
Object.__send__(:define_method, :/) {|
x| _ |x
}
Object.__send__(:public, :/)
retry
when "|"
print "365 "
Regexp.__send__(:define_method, :|) {
(/ _ /x)
}
retry
else
puts Regexp.last_match[1]
end
rescue NameError => e
case e.message
when /constant X/
Kernel.const_set(:X, :X)
print "ひだまり"
retry
when /variable or method `_'/
Kernel.__send__(:define_method, :_) { (/ _ /x) }
print "スケッチ"
retry
end
endとてもねむい
ゆの in Lua
なんかまだないっぽい
X = setmetatable({ x = "" }, {
__div = function (o1, o2)
if o2 then
X.x = X.x .. "スケッチ"
else
X.x = X.x .. "ひだまり"
end
return o1
end,
__lt = function (o1, o2)
print(X.x)
return X
end,
__call = function (self, arg)
X.x = X.x .. "×365 " .. arg
return X
end,
})
return
X / _ / X < X"来週も見てくださいね!"
- 普通に演算子オーバーロード
- return つけないと式とみなされなくて syntax error
- print は改行が入ってしまうので最後に一度だけ
- 連結演算子が .. であることをすっかり忘れていてハマった
- 比較演算子はオペランドが両方とも同じ型でないとエラーになってしまうため、ラップしてる
- X"foo" は X("foo") と同じ、でもって、関数呼びだしはメタテーブルの __call になる。
- 宣言していない、一度も代入していない変数が普通に nil として使えてしまうので _ に定義はいらない


