2008年を振り返る

あと1/4日くらいで2008年も終わるので、今年1年を振り返ってみる。

元旦は、毎年恒例の元バイトつながりの友達で集まって初詣(浅草寺)→初日の出っていうコースのはずでした。が、何しろ手徹夜続きで帰ってきたのが大晦日の20時だったので、去年の最終食事は秋葉じゃんがらのむぎちゃんでした。

元旦は親戚と会って、夜から3日までひたすらRailsでアプリを作り続けて1案件完成>< 4日からはデスマ会場で10日リリースの案件のコーディングをするのでありました。でも、全部間に合ったのは良かったね!そんなのが年明けでした。24回目の年越しは2度の受験よりも慌ただしかったといえよう…。

そんなわけで、去年末からFlashを始めたので、春あたりは Flash の仕事を何件かさせてもらいました。それもなかなかデスマで、ずっと客先に泊まり込んで作業したりしてました。でも、向こうの人と飯とか風呂とかいっしょに行って仲良くなって、それはそれで楽しかったですなー。

だが、それは序章であった。春先がデスマ本番。これはひどい。5月くらいまでまともに家に帰った記憶がないよ?色々と勉強出来たので、結果的には良かったとしよう(´∀`) GWにiMacを買ったんだ。それ以外に5月末くらいまではプライベートなんてものは無かったように思う。オフィスそばの銭湯は我が家の風呂みたいになってたしね。

多分、今年初めての休日は6月だったかな。休日が久しぶりすぎて、何をしていいか分からなかった(笑) その頃から Flex を勉強し始めました。でも ActionScript3 結構やってたので、Flex はそこまで新しいものっていう感じではなかったかも。裏は Rails で作ってみると、割と RIA って言われるようなものが簡単に作れるなーと思いました。

そんなのを夏前にやりつつ、7月は1ヶ月間中国に行ってきました。中国!暑い!沖縄と同じくらいの緯度で、湿度が常に80%くらいで夜でも毎日30℃超えてるような街だった。することは無かったけど、向こうの社員が休日は遊びに連れてってくれて、いろいろ楽しい経験が出来たよ。

夏ごろは休日はちゃんと休日で、ちょこちょこ美術館とか行ったりしてました。美術館たのしーよ。背景について調べようとはあまりしないんだけど、ただ見て何か感じるっていうだけだけど。ただ、休日の美術館ってほんとうに混んでるね。もっと空いててゆったり見れるような空間だったような気がしてたんだけど。

お盆は、親戚そろってお墓参りに行けました。青森に行ったけど、今年の遠出は青森と中国かな。涼しくて静かで良いところです、青森。来年もまた行きたいな。

秋はまた大規模案件のリリースが迫ってきて、仕事一色だったかなー。中国でやったりしてたので、無事リリース出来てやりきった感があります。

そんな感じで今年の1年の仕事は落ち着いたので、第4四半期は週末は実家帰って車とか乗ってました。年末はちゃんと忘年会とかも行けたし、大掃除も出来たし(まだ終わってないけど)、来年は良いスタートになりそうです。

総括すると、今年は大厄だけあっていいことが全くない年でした>< 忙しくても、お祓いに行けばよかったかな。大厄を迎える人は、ぜひともお正月にお祓いに行くことをオススメします。

2009年の目標を立ててみます。
時間、気持ちともメリハリをつけた生活をする。2008年はあまり知り合いが増えなかったので、2009年はもっと知り合いを増やしたいと思います。
去年はActionScriptっぽい1年だったので、今年は Objective-C っぽい1年にしたいと思います。iPhone の開発環境整えたし!あと、仕事では引き続き Rails ばっかやりたいです。また中国にも行きたいです。

そんなわけで、2008年はみなさまお世話になりました。また来年もよろしくお願いします!

2008年を振り返る

iMac(Leopard)をSSDに換装した

自宅の iMac (core2モデル) がどうにも遅くて、明らかにディスクアクセスが遅そうだったので、試しにSSDに付け替えてみた。

このまえ、ノートPCにUbuntu8.10入れたときと同じ Patoriot Memory の SSDを買ってきた。ネットではあんまし評判よくないけど、使ってて問題なさそうだったので。今回は128GBの PE128GS25SSD モデルを買った。10月くらい前に64GBを買ったときは22000円で、12月に128GBが28000円とはなー。また Ark で購入したよ。

交換は、オドロキの分解方法!! 新iMacのメモリーとハードディスクを交換するを参考にやってく。全面のガラスパネルをはずすのは、吸盤があればなんでもできると思う。ぼくは、キッチンで使ってる吸盤でくっつけてみたけど、問題なくとれました。

上記サイトには、ケーブル外して…って書いてあるけど、液晶と本体の間には4本のケーブルがあって、2本はすぐ外れる(ていってもテープを外す必要はある) けど、もう2本は外れる気配がなくてつけたまま隙間から作業した。

SSDは2.5inch のものが多いので、3.5inch 変換コネクタを買ったらいいかと思ったんだけど、内部で元通りの方法で固定するのはかなり至難の業なので、買わないでなんかケーブルとかでうまいこと固定したほうがいいかもしれない。SSDは振動しないから、ケーブルで固定するくらいで大丈夫じゃないかなぁ?

付け替えて、Macをクリーンインストールしてみた。

インストール直後なので、付け替え前に比べて速くなるのは当たり前なんだけど、体感ですごい速い!っていうのがわかるくらいサクサク動いてる。しばらく使ってどうなるかは別だけど(´∀`)

Windowsで出てるベンチよりは速くないみたいだけど、Xbench の結果をはりつけておきます。

e38394e382afe38381e383a3-3
※クリックで拡大します

SSDということもあり、無駄な書き込みはしたくないので、ファイルの最終アクセス時間をいちいち記録しないように、noatime の設定をしました。

Macの動作が遅くなる。スワップとかnoatimeとかをいじってみた の記事を参考に設定しました。

/etc/rc.local に、下記を記述すればいいみたいです。

#!/bin/sh
 
mount -u -o noatime /

再起動すると、確かに noatime のオプションがついてます。

/dev/disk0s2 on / (hfs, local, journaled, noatime)

MacのSSD対策で、/tmpをRamdiskにする【変なヤバいもんログ内記事】 も追記しました。これも書き込み回数を減らすのに役立つかも!

09/03/13追記 3ヶ月くらい経ったけど、重くなったりはしていない感じ

09/12/01追記 1年弱経って、プチフリが結構起きるようになった。おとなしくIntel X25-M を買いました。

iMac(Leopard)をSSDに換装した

CentOS5でSVNとApache連携

CentOS で、SVNとApacheを連携したときのメモ。

yum で、svn と mod_dav_svn をインストールする。

# yum install mod_dav_svn subversion

Apacheの設定をする。
/etc/httpd/conf/httpd.conf を編集し、以下の行のコメントアウトを外す。

LoadModule dav_module modules/mod_dav.so

/etc/httpd/conf.d/subversion.conf で、パスの設定等をする。

レポジトリにBasic認証をかけるのだが、デフォルトの設定ファイルだと、 LimitExcept で取得だけなら誰でも出来るような設定になっている。LimitExcept に続けて何を制限するか決めるのだが、例外をつけないと取得も含め全部Basic認証がかかるようになる。

続きを読む “CentOS5でSVNとApache連携”

CentOS5でSVNとApache連携

WordPress2.7にアップグレードしてみた

 Wordpress 2.7 がリリースされてたのでアップグレードしてみた。2.5辺りから管理画面がだいぶ充実してきたなーと思ってたけど、今回の管理画面もだいぶ変わった。

 Jquery なのか、左メニューのにゅろって出るとこがすごい遅いのが気になるくらいだ。

e8b0b7e4b8ade98a80e5baa71 日暮里を越えたあたりに谷中銀座っていうのがあるらしくて、このまえ横を通ったら京都みたいな雰囲気だった。京都もまた行きたいが、都内にもまだまだ行ったない場所がたくさんある。まずは浅草辺りから開拓してみるのが良いと思うが、1人で遠出するのは気分が乗らないと継続するのは難しそうである。

WordPress2.7にアップグレードしてみた

Railsで同じ処理が並行して走らないようにする

 複数プロセスを立ち上げていても、script/runner 等で叩くときも並行して同じ処理を走らせないようにするとき、ファイルのロックを使うのが簡単です。

ソース

#{RAILS_ROOT}/lib/batch_lock.rb という名前で下記を保存する。

# 同一処理を並行で走らせない様にするモジュール
class BatchLockException < Exception; end
module BatchLock
  # 処理を排他ロックして走らせる
  def self.run(batch_name)
    FileUtils.mkdir(RAILS_ROOT + '/tmp/batch_lock') unless File.exists?(RAILS_ROOT + '/tmp/batch_lock')
    # batch_name をスコープとして排他処理される。
    File.open("#{RAILS_ROOT}/tmp/batch_lock/#{batch_name}", 'w') do |f|
      if f.flock(File::LOCK_EX | File::LOCK_NB)
        yield
      else
        raise BatchLockException.new
      end
    end
  end
 
  # 処理が走っているか確認する
  def self.running?(batch_name)
    FileUtils.mkdir(RAILS_ROOT + '/tmp/batch_lock') unless File.exists?(RAILS_ROOT + '/tmp/batch_lock')
    # ロック用のファイル名は、バッチごとにユニークにする。
    File.open("#{RAILS_ROOT}/tmp/batch_lock/#{batch_name}", 'w') do |f|
      ! f.flock(File::LOCK_EX | File::LOCK_NB)
    end
  end
end

使い方

同時に走らせたくない処理をブロックで実行する。

begin
  BatchLock.run(:go_to_park) do
    # ユーザがみんな公園に行く
    User.find(all).each(&:go_to_park)
  end
rescue BatchLockException
  logger.error "既にバッチが走っていた…。"
end

今バッチが走ってるか確認する。

p BatchLock.running?(:go_to_park) ? 'バッチ進行中' : 'バッチは走ってない'
Railsで同じ処理が並行して走らないようにする