出社(五反田のオフィスに席を間借りしている)したら、ノートのACアダプタ忘れた!

また忘れた!

もうあったまきた(逆ギレ)のでThinkPad X61 7675A25買いましたー!

x61.jpg

OSがXPでHDDが7200回転でBluetooth対応のX61をkakaku.comで調べたら1個しか該当しなかったのだから仕方無い。

五反田から秋葉原のニッシンパル行って買ってきました。

今時はノートのメモリ2GBが4000円切ってるんですね。お得なので購入。ついでに死んでも忘れないようにACアダプタを会社用に購入。

MicrosoftのBluethooth対応マウスも購入。(ThinkPadでも結構マウスを使うので)

Bluetooth初めて使いましたが、余計な出っ張りとか無くていいっすね。ヘッドセットも欲しいな。

Puttyと16GBのcoLinuxイメージをコピーしたらすぐに仕事が再開できました。あーこれは快適!コードがすすむわぁ。

古い糞VAIO宛に「バッテリーが爆発するかもしれないから交換するよ?(超訳)」という電話が来たけど、「いいっス」と答えて唖然とさせてやりました。もう本棚に縦置きしちゃったよ。

hostsファイルに大体、coLinuxのhost名を付けて使ってる。

192.168.10.40    dev

で、http://dev/phpinfo.php にアクセスするとFirefoxではphpinfo.phpのダウンロードが始まる。 IE7, Safari3.1, Opera9ではphpinfoがちゃんと動く。

http://192.168.10.40/phpinfo.php にアクセスするとFirefoxでもphpinfoがちゃんと動く。サーバーにVirtualHostの記述は何もしてない。

毎回これでハマるので覚書・・・。

Railsのhelper、cycleはこんな感じでカラフルなテーブルに使えて便利。

<table>
<% for user in @users %>
  <tr class="<%= cycle "even", "odd" %>">
    <td>~~~</td>
  </tr>
<% end %>
</table>

この間、「3回に1回改行」とかにも使ってみたらちょっと便利だった!

<% for user in @users %>
<%= user.name %><%= cycle "", "", "<br />" %>
<% end %>

HABTMのupdateは面倒だ。

でも http://wiki.rubyonrails.com/rails/pages/CheckboxHABTM ここに詳しく載ってた。(と思ったらリンク先無くなってますね)

<% Group.find(:all).each do |g| %>
<%= check_box_tag "user[group_ids][]",
  g.id, @user.groups.include?(g)) %> <%= g.name %>
<% end %>

こんな感じで書いて、controllerのupdateに

@user.groups.clear if !params['user']['group_ids']

こう書いておけばチェック外したらちゃんと消える。

中間テーブルにidがあると変なidが勝手に入るし、Duplicate Entryになる。create時にidがつかないようにしとく。

create_table(:groups_users, :id => false) do |t|
 ・・・
end

昔ハマったはずなのにまたハマった。鳥頭・・・。

ヘルパー

普段どうやってるかというと、こういうヘルパーを使っています。

def habtm_check_box(object, method, target_method, options = {})
  id = object.class.name.underscore
  items = method.to_s.camelize.constantize
  items.all.map do |item|
    label_tag("#{id}_#{method}_#{item.id}",
      check_box_tag("#{id}[#{method}_ids][]",
        item.id,
        object.send(method.to_s.pluralize).include?(item),
        :id => "#{id}_#{method}_#{item.id}")+' '+h(item.send(target_method)),
    :class => 'checkbox')+"\n" 
  end.join
end

でgrave(お墓)が複数のcharacter(特徴)を持つ場合、

<%= habtm_check_box @grave, :character, :name %>

みたいな感じで使います。

actionが無くても対応した名前のテンプレがあれば動くんですな。しらなかった・・・。

class FooContoller < ActionController::Base
end

app/views/foo/bar.html.erb

http://domain/foo/bar

変なテンプレとか放置してないか再チェックだ。

打ち合せ中に、

「あったかくチャリ日和になってきたし、どっか出社したいっすねー」

とか言ったら、

「席空いてるから出社していいよ」

などと言われたのでデザイナーのmachidaさんと、

「じゃあ、出社しますか?」

ということで出社してきました。

結論から言って、

出社気に入った。

周りに申し訳ないくらいすごし易いし、めっちゃはかどる。

幡ヶ谷 ←→ 五反田間のチャリ通勤は今までで最長ですけど健康によさそうです。

机1席分ぐらいの仕事で還元しないと申し訳ないっすw

時々、容量無制限!って書いてある無料HPサービスありますよね。WebDAVかS3互換のプログラムとflvを置いて動画サービスの裏ストレージとして使えないかなと思ってやってみたんですが、いまいちだった。理由は2つ。

1つは、容量無制限つっても規約で大抵ファイル置き場にしちゃだめとかあるし、膨大なHDD使用料と転送量でさすがにバレる。(当たり前)

2つは、動画の変換にCPUがかなり必要になる。無料HPサービス側じゃFFmpegは動かせなさそうだし、3年前のうんこノート上のcoLinux上で実時間の3倍ぐらいかかる。これかかり過ぎかな?

flvへの変換はニコニコ動画用ファイル作成Wikiを参考にしてFFmpeg 2passでコンパイル。一括変換したいので下記のようなスクリプトを書いて一晩置いたら終わってた。

#!/usr/bin/env ruby

$KCODE = "u" 

require "tmpdir" 
require "fileutils" 
require "pathname" 

def abspath(file)
  Pathname.new(file).realpath.to_s
end

def movie2flv(src)
  dst = src.gsub(/\..{1,4}$/, ".flv")
  puts dst+"\n" 
  passlog = Dir.tmpdir+"/passlog" 
  system "ffmpeg -i \"#{src}\" -vcodec flv -r 15 -b 500k -cropleft 6 -cropright 6 -s 512x384 -deinterlace -pass 1 -passlogfile \"#{passlog}\" -an -y \"#{dst}\"" 
  system "ffmpeg -i \"#{src}\" -vcodec flv -r 15 -b 500k -cropleft 6 -cropright 6 -s 512x384 -deinterlace -pass 2 -passlogfile \"#{passlog}\" -ar 44100 -ab 128k -y \"#{dst}\"" 
  File.delete(passlog)
end

src = abspath(ARGV[0])
if File.directory?(src)
  Dir.foreach(src) do |f|
    f = abspath(src+"/"+f)
    unless File.directory?(f)
      puts "#{f}\n" 
      movie2flv(f)
    end
  end
else
  puts "#{src}\n" 
  movie2flv(src)
end

音声のcodecは普通libmp3lameだそうだけどDebianデフォルトのFFmpegじゃ駄目。面倒なので無しで。ちゃんとやるならソースからコンパイルした方が良さそう。

Player側はJavascriptとNonverBlaster

と、1日かけたところで出来たのは俺専用動画サービス。このままじゃ一銭にもなりそうにないので眠らせとこう。

もはや何やってもMTのDBが壊れるのでp0t.jpドメインごとドリホに移してついでにMTも4.1にあげましたー。

ブクマとかついちゃってるからパーマリンク変えらんないし、MTにロックされちゃったよなあ。WordPressとかも使ってみたいんだけれども。

comment_was_missing.png

全ブログのコメントが消えたっ・・・。原因不明。1500以上あるエントリーも消えたら嫌だな。ちょっと、ブログウェア、サーバー、バックアップ体制含めて再考だなあ。がっかり・・・。

comment_was_missing2.png

myisumchkで一瞬で治ったぜー。いやっほーう!

近所散歩してたらおっさんに、

「すいません、タバコ持ってますか?」

と聞かれた。

「あー、持ってないんですよ」

と答えると無言で立ち去り、そのまま耳鼻咽喉科にダイレクトで入っていった。

タバコ吸ってる奴にならまだしも、持っても無い奴にタバコくださいってどんだけ吸いてーんだよ。しかも鼻・喉やられてんじゃねーか。やめろよw