2012年6月19日火曜日

Google電卓で立方根とか

ある数の累乗根を知りたいとき、Googleでなんて検索すればよいんだろう?

一般形
nth root of x
例(2th, 2nd, 3th, 3rd の違いは許容される)
  • 2th root of 5
  • 2nd root of 5
  • 3th root of 5
  • 3rd root of 5
  • 4th root of 5

平方根

square root x

square root of x

sqrt (x)

sqrt x

立方根

cube root x

cube root of x


2012年6月11日月曜日

coerce関数で型変換

Common Lisp で array を list に変換したいなー、と思って調べたら coerce という関数がみつかった。

CL-USER> (mapcar #'(lambda (x) (1+ x)) (make-array 4))
; Evaluation aborted on #<TYPE-ERROR expected-type: LIST datum: #<(SIMPLE-VECTOR 4) {1271CFBF}>>.
CL-USER> (mapcar #'(lambda (x) (1+ x)) (coerce (make-array 4) 'list))
(1 1 1 1)

Emacs Lisp にもありました。

(car [1 2 3])
Debugger entered--Lisp error: (wrong-type-argument listp [1 2 3])
  car([1 2 3])

(car (coerce [1 2 3] 'list))
1

"coerce"というのは他動詞で「〈人を〉強制[強要]して〔…〕させる 〔into〕」という意味が一番目。辞書を引くとけっこうseriousな例文が出てくる。"They coerced her into signing the contract." 「彼らは無理に彼女にその契約書に署名させた.」



perl -0777 による slurping

Perlでファイルの内容を読み込む場合、普通は1行ずつ処理する。

もし1行ずつ処理する方法が適当でない思ったら、undef $/ することによってファイルの内容をスカラ変数に一気に代入することができる。tこれを"slurping"と呼ぶ。

undef $/;
$whole_file = ;               # 'slurp' mode

Slurping は Perlコマンド実行時のオプション '-0777' でも有効にできる。今日まで知らなかったけど、ワンライナーの場合にすごく便利。

$ cat foo.txt
foo
foo
foo
$ perl -0777 -pe 's/o\nf//g' foo.txt
foooo

'-0'に続く数値は400以上であれば何でもよいのだが、777と書くのが慣例になっているらしい。詳しいことは参考ページに書いてある。


2012年6月7日木曜日

Windows Server 2003 の diskpart ってパーティション縮小(shrink)できない。GParted便利

Windows Server 2003 の diskpart

人生で初めて Windows server 2003(x64)を直接触る仕事を経験。Unix系じゃないサーバー機。ぼくも人生の荒波に揉まれてずいぶん大人になりました。

パーティションを切る必要があったけど、インストールやらネットワーク設定やらWindowsアップデートやらを一通りやった後でいいや、と思っていざやろうとするとできなくて焦った。というのは'diskpart'コマンド自体は入っているんだけど、Win server 2008 と違ってなんだかオプションが少ない。'shrink'も無い。


GParted

最初からやり直すのはしんどいのでいろいろと道具を探した結果、'GParted'というソフトがみつかった。ダウンロードしたISOをCDに焼いてブートして、GUIで自由に(たぶん、自由に)パーティションを設定できるというもの。

最初からやり直しになってもまあいいか、と期待せず使ってみるとこれがとても使いやすかった。そしてパーティション変更後も Windows server 2003 が正常にブートした。感謝。


2012年5月27日日曜日

wget の '--spider' オプションはHEADメソッド

こちら wget –spider = Head Request : alexking.org の記事について。


自分の場合、ブックマーク(リンク集)のリンク切れをまとめてチェックしたいときにwget の '--spider'オプションを使う。このような利用方法のときは特に気にすることはないのだが、何らかのWebアプリケーションを実行したい場合には注意が必要とのこと。

というのは 'wget --spider' がHEADメソッドを実行するよう実装されているので、Webアプリのコードが実行されないことがあるらしい(サーバーの環境や設定に依存するみたいだが)。

GETでアクセスしつつ、ダウンロードされたファイルを自動的に削除したい場合には、'--delete-after'オプションを使うのがよい。

NetHogs - プロセスごとのデータ転送量をtop風に表示

既存のネットワークアプリの転送量を調べるときに使ったソフト。サーバーでこの NetHogs を起動しておいて、クライアント側でアプリのシナリオとかユースケースを1つ実行。サーバーのほうの画面で何バイト送受信したかを見て記録しておく。「なるほどこのシナリオの場合はx[KB]くらい通信するのか」と、だいたいの数字が分かる。

特徴は、転送速度(KB/sec)だけでなく、転送量の累積値が表示されるところ。たぶん初期状態では KB/sec の表示になっているが、実行中に m キーを押せば表示モードが KB/sec, KB, MB, B とサイクリックに切り替わる。

インストールに関しては、libpcap と ncurses に依存している。今回の環境(CentOS-6.0)では、epelリポジトリから yum でインストールできたので特に問題無し。


表示の例

テキトーに sshd と apache にアクセスした場合のキャプチャを貼り付けておく。

まずは Byte単位の表示。

プロセスのIDごとに、USER, PROGRAM, DEV, SENT, RECEIVED が表示される。シンプル。

それから KB/sec 単位の表示。


Windows バッチファイル FOR文での「コマンド置換」

Windowsの .bat ファイルを書いた。そして、dir等のコマンドの出力を、FOR文のパラメータとして指定する方法を知った。


.batファイルの例
拡張子 xml のファイル名を降順ソートで列挙し、後続のコマンド(ここでは単なる echo)に渡すFOR文。

@echo off
for /F "usebackq" %%file IN (`DIR /B /-N *.xml`) DO @echo %%file


Unix系のシェルで言うところのコマンド置換(command substitution)。バッククォート(`)を使う点は共通だ。