Mac, Suseのtopコマンドでソート列の変更

 並び順を変えるのは、 o と打ったあと primary key [+rsize]: と聞かれるので、そのあとに列名を入れればいいようだ。

 %CPU でソートする場合は primary key [+rsize]:cpu として、 RSIZE(メモリ使用量)でソートする場合は primary key [+rsize]:rsize とする。

 複数列でソートしたい時は、O と打って 2番目に使用するソート列を決める。O と打つと secondary key [+rsize]: と聞かれるので、また列名を入れる。

 SUSEの場合は、> とか < で変わってくれる。 o とすると列の入れ替えが出来ます。下の画面で、CPUを一番左に持ってきたかったら、 K をたくさん押すと上がって来るので、終わったら Enter を押します。

Current Fields:  AEHIOTQWKNMbcdfgjplrsuvyzX  for window 1:Def
Upper case letter moves field left, lower case right

* A: PID        = Process Id                                 s: DATA       = Data+Stack size (kb)                      0x00100000  PF_USEDFPU (thru 2.4)
* H: PR         = Priority                                   v: nDRT       = Dirty Pages count
* I: NI         = Nice value                                 y: WCHAN      = Sleeping in Function
* O: VIRT       = Virtual Image (kb)                         z: Flags      = Task Flags 
* T: SHR        = Shared Mem size (kb)                     * X: COMMAND    = Command name/line
* Q: RES        = Resident size (kb)
* W: S          = Process Status                           Flags field:
* K: %CPU       = CPU usage                                  0x00000001  PF_ALIGNWARN
* N: %MEM       = Memory usage (RES)                         0x00000002  PF_STARTING
* M: TIME+      = CPU Time, hundredths                       0x00000004  PF_EXITING
  b: PPID       = Parent Process Pid                         0x00000040  PF_FORKNOEXEC
  c: RUSER      = Real user name                             0x00000100  PF_SUPERPRIV
  d: UID        = User Id                                    0x00000200  PF_DUMPCORE
  f: GROUP      = Group Name                                 0x00000400  PF_SIGNALED
  g: TTY        = Controlling Tty                            0x00000800  PF_MEMALLOC
  j: P          = Last used cpu (SMP)                        0x00002000  PF_FREE_PAGES (2.5)
  p: SWAP       = Swapped size (kb)                          0x00008000  debug flag (2.5)
  l: TIME       = CPU Time                                   0x00024000  special threads (2.5)

O とすると、ソート列の選択が出来ます。今は、メモリ使用量でソートされてますが、CPU usage でソートしたくなったら、この画面で k を押します。

Current Sort Field:  N  for window 1:Def
Select sort field via field letter, type any other key to return
  a: PID        = Process Id                                 u: nFLT       = Page Fault count  b: PPID       = Parent Process Pid                         v: nDRT       = Dirty Pages count
  c: RUSER      = Real user name                             w: S          = Process Status
  d: UID        = User Id                                    x: COMMAND    = Command name/line
  e: USER       = User Name                                  y: WCHAN      = Sleeping in Function
  f: GROUP      = Group Name                                 z: Flags      = Task Flags 
  g: TTY        = Controlling Tty
  h: PR         = Priority                                 Note1:
  i: NI         = Nice value                                 If a selected sort field can't be
  j: P          = Last used cpu (SMP)                        shown due to screen width or your
  k: %CPU       = CPU usage                                  field order, the '< ' and '>' keys
  l: TIME       = CPU Time                                   will be unavailable until a field
  m: TIME+      = CPU Time, hundredths                       within viewable range is chosen.
* N: %MEM       = Memory usage (RES)
  o: VIRT       = Virtual Image (kb)                       Note2:
  p: SWAP       = Swapped size (kb)                          Field sorting uses internal values,
  q: RES        = Resident size (kb)                         not those in column display.  Thus,
  r: CODE       = Code size (kb)                             the TTY & WCHAN fields will violate
  s: DATA       = Data+Stack size (kb)                       strict ASCII collating sequence.
  t: SHR        = Shared Mem size (kb)                       (shame on you if WCHAN is chosen)
Mac, Suseのtopコマンドでソート列の変更

500万件とかRailsでバッチ処理は結構きつい

 Railsで、ユーザが500万件居たりすると User.find(:all) とかやっただけでかなりきつい。こういうのをやるときって、バッチ処理だと思うんだけど、結構工夫してループ内で何回も find したりしても、メモリ足りなくなったりするから、結局 script/runner で Rails の起動コストを引いても シェルスクリプト回したほうが安全っていう結論になる。

 50000件ずつループで処理して、Railsを再起動みたいな感じになる。

#!/bin/sh
limit=50000
count=50000
while [ $count -le 5000000 ];
do
  script/runner "User.find(:all, :offset => $count,  :limit => $limit, :conditions => ['migration_complete = false']).each(&:check_email)"
 
  echo "$count"
  count=`expr $count + 5000`
done
500万件とかRailsでバッチ処理は結構きつい

ALLDAYS

 仕事帰りに ALLDAYS っていう両国にあるファミレスに行ってきた。よく横を通るんだけど、聞いたことないし微妙にためらっていたのだけど、今日は行きたいっていう気になって行ってみた。調べてみると、今年6月にオープンしたみたい。

デニーズ跡に登場した新業態レストラン「オールデイズ」訪問ルポ!(TRENDY)

 席で注文するタイプじゃなくて、カウンターにオーダーしに行くタイプ。ちょっと変わってるんだけど、カウンターに取りにいく割にはそんな安いわけでもなく、1000円前後。ステーキプレート食べたが、午前1時に食べるべき食事ではない…。

 サラダバーがあるのは魅力的。なんだけど、0時までしかやってないよー(‘A`)なので、今日は食べられなかった。

 ググってみると、デニーズとかの系列らしい。デニーズはセブン&アイ系列っていうのも知らなかった。横須賀と両国の2店舗だけのようで、何か不振だったデニーズをリニューアルしたものだとか。

 味は普通。量も普通。値段は結構高い。ステーキプレートで1,200円。ドリンクバー頼まなかったけど、よくファミレスにある機械のやつじゃなくて、自分で注ぐ感じで、これは美味しそうではあった。家からチャリですぐ行けるので、本を読みにいく場所としては割と良いのかも。土日の昭和通り側は、どこの喫茶店もガランガランでやってないとこもあるくらいなので、わざわざ向こうにいく必要もないのかもしれないけど(´・ω・`) あ、24時間営業ていうのは評価できるかも。まわりに24時間営業の店ないので。

ALLDAYS

亀戸中本

 夕方、亀戸の中本に行った。昔いちど行ったことがあるんだけど、混んでて断念したので食べるのは今回が初。中本は久々だったんで蒙古タンメンの野菜大盛りを食べたよ。やっぱこれが一番好きだ。

 なんと、久々に中本のサイトを開いてみたら御徒町に店舗出来てるよ!!オフィスから近いじゃん。これは…。ちょっと時間かかってもいいから行きたいラーメン屋さんは、上野の七志くらいだったんだけど、さらに近い御徒町に中本が出来たとなるとちょくちょく行きそうな気がするよ。22時までやってるしね!七志は3時くらいまでやってた気がする。

 中本に行くたび、高校を訪れたくなるものだ。今年中には恩師に会いたいものである。

亀戸中本

Rails 2.0.2 で Basic認証

 デフォルトで用意されている Basic 認証の仕組みの使い方。ユーザ名 chihaya , パスワード password72 とすると、以下のようにする。

class ApplicationController < ActionController::Base
  before_filter :basic_authentication
  # テストだけ使うBasic認証
  protected
  def basic_authentication
    authenticate_or_request_with_http_basic do |user, pass|
      [user, pass] == ['chihaya', 'password72']
    end
  end
end

特定のActionはBasic認証かけたくないならば、skip_before_filter を使う。

class NanohaController < ApplicationController
  skip_before_filter :basic_authentication, :only => [:show]
 
  def show
  end
end
Rails 2.0.2 で Basic認証