27. 9月 2010 · Write a comment · Categories: Git

リポジトリを特定の時点に戻すには2つの方法がある。
まずgit logで戻したいコミットのハッシュを取得して、

git reset [ハッシュ値]

または

git revert [ハッシュ値]

resetは戻した時点より後のコミットを全て無かった事にする。
revertは「その時点に戻す」差分を作成して現在のコミットの上に積んでくれる。

どっちをやった場合も、

git reset --hard HEAD

を実行するまで実際のファイルはリセットする前のままなので注意。
ちなみに

git checkout HEAD^

でも戻れるが、上記と逆に実際のファイルのみでリポジトリには反映されない。
(形式上、無名のブランチに切り替わる)
そこから編集してコミットすれば、revert+αになる…と思う。

以前書いたエントリの続き。
管理しているサーバの1つが、同一IPから1000回以上のアタックを受けていたので、今度こそ自動的に拒否リストに追加する仕組みを考えてみる。
rubyで実装するとして、デーモンとして常駐するとかhosts.allowから呼び出すとかも考えたけど、あんま激しく呼び出されるとそれ自体が負荷をかけてしまう(ruby自体がけっこう重たいし)ということで、ヌルくcronから呼び出すことにする。

と言うわけで、要件はこんな感じ。

  • 一定時間ごとにcronで起動
  • /var/log/messagesを解析してアタックを行っているIPアドレスを抽出し、deny.listに追加する
  • 回数が閾値以下の場合は追加しない(自分で間違ってアクセスしたとたんにBANとかは避けたい)
  • ターンオーバーして圧縮されたログも解析できるようにする
  • IPアドレスは重複して登録しない、またできればdeny.listは毎回ソートする
  • ホワイトリストに登録されているIPアドレスは登録しない

半日くらいで書けた。名前はギブスンにあやかってIcewallとしてみた。すごくなんかと被ってそうです。
以下、工夫したこととか。

More »

タイムテーブルにdays.secondって書いてあって、「そんなメソッドねーよ!」と突っ込もうとしたらその上に

require 'active_support/core_ext/array'

って小さく書いてあった。脱帽。

というわけでrubykaigi2日目の感想。

More »

タイトルはタイムテーブルのパクリ。
会場案内図はrubykaigi.map(&:guide)とか書いてあった。
なお、なぜか毎回ある「map vs collectアンケート」では今回もmapが圧勝してました。

さて、rubykaigi1日目の感想。

More »

09. 9月 2010 · Write a comment · Categories: Ruby

帰ってきてから色々と忙しくて間が開いてしまったけど、rubykaigiに行ってきました。
今年はまたつくばに戻り、参加者もさらに増えていましたが、セッションの豊富さに呆れ…いや感心しました。聴きたいセッションが二重三重に重なってて全部参加できないよ!
メイン会場のセッションに関しては動画が配信されているので、rubykaigi日記の方でどうぞ。
なお、次回rubykaigi2011が「ファイナル」だそうで。えーっ。

以下、面白かったセッションの感想を日にちごとに書きます。