2012年7月7日土曜日

Fedora のインストールメディアとUSBメモリ、Mac OS X で作る

今日、Fedora-17 をうちのPCにインストールした。CD-RW, DVD-RWメディアが手元になかったのでUSBメモリを使った。USBメモリへの書き込みには、MacBook(Mac OS X)を使った。ただそれだけの話。しかしながら、いくつかの情報を必要としたのでメモしておく。


Fedoraをインストールするハードウェアは?

まずはハードウェア、なかでもCPUやマザーボードの仕様が分からないといけない。

CPUはAMD Phenom II 64bit で、マザーボードは ASRock の 880GM-LE。このマザーボードは BIOS を使っているモデル(UEFIではない、という点が重要)。

※ASRockのマザーボードAMD8シリーズのリストはこれ:ASRock AMD8


どのファイルをダウンロードすればよいか?

Fedora の場合、「Full Distribution」, 「Live Image」,「Minimal Boot Media」の3つの選択肢がある。今回は、必要なパッケージをあとから追加するスタイルでゆくから Minimal Boot Media がいい。

Minimal Boot Media のISOファイルは「boot.iso」という名前で配布されており、今回はこれで十分。一方、対象のマザーボードがUEFIを使用している場合は注意が必要で、「efiboot.img」を Full Distribution の中から抽出しなければならないらしい。

boot.iso は配布用サーバーの「fedora/linux/releases/17/Fedora/arch/os/images/boot.iso」といったパスに配置されている。


USBメモリにISOイメージを書き込む

MacにUSBメモリを挿して、ISOイメージを書き込む。Fedoraのドキュンメントにddコマンドを使った方法が掲載されているので、これに基づいてやればよい。Linuxを前提として書かれているが、Macにもddコマンドがあるのでそれほど大きな差はない(Mac OS X のコマンドである diskutil を使う点が異なる)。

2012年7月1日日曜日

Emacs で整数をさまざまな基数(radix, 底)で表現する

整数を2進数や16進数で表す方法は?

リファレンスマニュアルをひいたらちゃんと書いてありました。


The syntax for integers in bases other than 10 uses ‘#’ followed by a letter that specifies the radix: ‘b’ for binary, ‘o’ for octal, ‘x’ for hex, or ‘radixr’ to specify radix radix. Case is not significant for the letter that specifies the radix. Thus, ‘#binteger’ reads integer in binary, and ‘#radixrinteger’ reads integer in radix radix. Allowed values of radix run from 2 to 36. For example:

#b101100 ⇒ 44
#o54 ⇒ 44
#x2c ⇒ 44
#24r1k ⇒ 44

#{radix}rという表現で2から36までの任意の基数を指定できる、という機能は初めて知った。面白い。

ちなみに上の例は Emacs Lisp だけでなくて Common Lisp でも機能した(SBCL-1.0.55 だけど)。しかし、リファレンスからその説明をみつけだすことができなかった。


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 が正常にブートした。感謝。