2011年1月31日月曜日

Common Lisp からUDP通信


このエントリーをはてなブックマークに追加


REPLからIP Messengerにメッセージを送信してみる。

CL-USER> (ql:quickload "usocket-udp")
To load "usocket-udp":
  Load 1 ASDF system:
    usocket-udp
; Loading "usocket-udp"
.
("usocket-udp")

CL-USER> (usocket:socket-send
              (usocket:socket-connect "localhost" 2425 :protocol :datagram)
              "1:100:shirouzu:jupiter:32:Hello"
              (length "1:100:shirouzu:jupiter:32:Hello"))

これで送信はOKだった。
ただ、UDPを受信することはできないっぽい?(usocket:server-listenにdatagramを受信する手段がないっぽい)

参考>> http://smart-pda.net/isourou/ipmsg/doc/ipmsg_protocol.html


2011年1月30日日曜日

算数オリンピック 教室1-Q1


このエントリーをはてなブックマークに追加


http://www.sansu-olympic.gr.jp/class1/q1.html

に挑戦。
A0=1999,     B0=0
A1=A0-A0/2,  B1=B0+A0/2
A2=A1+B1/3,  B2=B1-B1/3
A3=A2-A2/4,  B3=B2+A2/4

n=偶 An=A(n-1) + B(n-1)/(n+1), Bn=(1-1/(n+1))B(n-1)
n=奇 An=(1-1/(n+1))A(n-1),     Bn=B(n-1)+A(n-1)/(n+1)

覚えたての再起処理でよゆーw かとか思って、
(defun beakera (n)
        (cond
          ((= n 0) 1999)
          ((evenp n) (+ (beakera (- n 1)) (/ (beakerb (- n 1)) (+ n 1))))
          ((oddp  n) (* (- 1 (/ 1 (+ n 1))) (beakera (- n 1))))
          (t nil)))

(defun beakerb (n)
        (cond
          ((= n 0) 0)
          ((evenp n) (* (- 1 (/ 1 (+ n 1))) (beakerb (- n 1))))
          ((oddp  n) (+ (beakerb (- n 1)) (/ (beakera (- n 1)) (+ n 1))))
          (t nil)))
とか書いて、REPLで (beakera 1999) としたら固まった。。。ポカーン


アレ?と思って手で解いてみると。。。
A0=1999=t,   B0=0

A1=A0-A0/2,  B1=B0+A0/2
  =t/2         =t/2

A2=A1+B1/3, B2=B1-B1/3
  =t/2+t/6    =t/2-t/6
  =2t/3       =t/3

A3=A2-A2/4,  B3=B2+A2/4
  =2t/3-t/6    =t/3+t/6
  =t/2         =t/2

A4=A3+B3/5,  B4=B3-B3/5
  =t/2+t/10    =t/2-t/10
  =3t/5        =2t/5

A5=A4-A4/6,  B5=B4+A4/6
  =A3t/5-t/10  =2t/5+t/10
  =t/2         =t/2

って、奇数回目は必ず同じ数になるのか。
ということで、1999回目は奇数回目なので答えは1999/2

これをプログラムで効率よく解くにはどうすればよいんだろう??

算数恐るべし。。。
そして自分の頭のへぼさに絶望。。


M-99 Q4


このエントリーをはてなブックマークに追加


M-99 マクロ99問
http://common-lisp-users.jp/index.cgi?M-99

問4:Common LispのUNLESSを作成せよ
テーマ:制御構文の自作
(my-unless (> 1 2)
  (print "hello"))
;->
;   "hello"
;=> "hello"

解4:
CL-USER> (defmacro my-unless (condition &body body)
                   `(if (not ,condition)
                        (progn
                             ,@body)))
MY-UNLESS

CL-USER> (my-unless (< 2 1) 10)
10

展開系
(IF (NOT (< 2 1)) (PROGN 10))


数学ガール


このエントリーをはてなブックマークに追加


【送料無料】数学ガール
【送料無料】数学ガール
価格:1,890円(税込、送料別)


何この本。めちゃ面白い。
漠然と使っていた数式の「意味」をストーリー形式で教えてくれる。

数学の面白さにちょっとだけ触れられた気がする。


マネジメント信仰が会社を滅ぼす


このエントリーをはてなブックマークに追加



【送料無料】マネジメント信仰が会社を滅ぼす


要約するなら「実」の無いマネジメントに精を出す暇があったら、本業に専念せよ、という内容。

マネジメントの全てが無駄だとは思わないけど、企業なんかでよくある

「仕事ができない人に、形だけでも仕事をさせるために作った、大して意味のない管理業務」

なんかは、本当に無駄なのでさっさとやめた方がいいと思う。


The Survivors 宇宙の漂流者


このエントリーをはてなブックマークに追加




http://blog.livedoor.jp/aamatome/archives/cat_45865.html

http://sfclub.web.infoseek.co.jp/roman23.htm

AAストーリー見て、原書を手に入れたかったけど駄目だった。もう古すぎて和書はどこも在庫切れ状態。
子供向けのSF小説らしいけど。。。Kindle版があれば洋書でも読んでみたい。

惑星間の戦争で捕虜となった4000人の地球人。
解放という名のもとに未開の惑星「ラグナロク」に十分な物資も与えられず置き去りにされる。
それから200年の間、残された人々がどう生きていくか、というストーリー。


2011年1月23日日曜日

M-99 Q3


このエントリーをはてなブックマークに追加


LISPど素人が挑むM-99

M-99 マクロ99問
http://common-lisp-users.jp/index.cgi?M-99

問3:Common LispのWHENを作成せよ
テーマ:制御構文の自作
(my-when (< 1 2)
  (print "hello"))
;->
;   "hello"
;=> "hello"

解3:
CL-USER> (defmacro my-when (condition &rest body)
        `(if ,condition
          (progn ,@body)))
        
MY-WHEN

CL-USER> (my-when (> 2 1)
            (print "hello1")
            (print "hello2"))

"hello1" 
"hello2" 
"hello2"

CL-USER> (my-when (< 2 1)
            (print "hello1")
            (print "hello2"))
NIL

補足3:展開されたS式
(IF (< 2 1)
    (PROGN (PRINT "hello1") (PRINT "hello2")))


M-99 Q2


このエントリーをはてなブックマークに追加


LISPど素人が挑むM-99

M-99 マクロ99問
http://common-lisp-users.jp/index.cgi?M-99

問2:INC1を作成せよ
テーマ:変数の捕捉
(let ((x 0))
  (inc1 x)
  x)
≡ (let ((x 0))
     (setq x (+ x 1)))
;=> 1

解:
CL-USER> (defmacro inc1 (x)
               `(setq ,x (+ ,x 1)))
INC1
CL-USER> (let ((x 0))
               (inc1 x)
               x)
1
CL-USER> (let ((x 10))
               (inc1 x)
               x)
11


M-99 Q1


このエントリーをはてなブックマークに追加


LISPど素人が挑むM-99

M-99 マクロ99問
http://common-lisp-users.jp/index.cgi?M-99

問1:与えられた引数を全てQUOTEしてリストとして返すLISTQを作成せよ

解:
(defmacro listq (&rest body)
        `',body)

CL-USER> (defmacro listq (&rest body)
                  `',body)
LISTQ
CL-USER> (listq a b c d)
(A B C D)
REPLって便利だなーっと改めて認識。
あってるのか不安。。。


Veritas Storage Foundation Basic の使い方


このエントリーをはてなブックマークに追加


商用UNIXでかなり使われたVERITAS製品。
対応プラットフォームも豊富で、Linux,HP-UX,Solaris,AIX,Linux,その上Windowsまでサポートされている。

HP-UXではVxFSは標準ファイルシステム、SolarisもZFSが出るまではかなり使われていた、Linuxでもクラスタ構成なんかで使われるケースもまだ多い。
またインフラをやっていれば、過去構築されたこれらの環境を触る機会もあるかもしれない。
(最近ではAmazon EC2上でVxVM/VxFSを使えるらしい)

最近は触る機会が減ってきたので、使い方を忘れないように、一通りの機能を復習しておく。
使うのはVeritas Storage Foundation Basic で、Veritas Volume ManagerとVeritas File Systemをくっつけて機能制限したもの。

VERITAS製品の良いところは、プラットフォームに依存せずほぼ一貫した使用感が保たれている事だと思う。
バックアップ製品のNetBackupも好き。クラスター製品なんかも考えられて作られている感じがあって結構好き。


Table of Contents
=================
1 Storage Foundation のコンポーネントと機能
2 テスト環境
3 インストール
    3.1 入手方法
    3.2 インストール方法
4 インストール後にやる事(PATH/MANPATHの追加)
5 VxVMの重要なコマンド
    5.1 vxdisk -o alldgs list
    5.2 vxdg list
    5.3 vxprint -hrt
6 VxVMのボリューム管理
    6.1 VM diskの操作
        6.1.1 VM diskへ変換する
        6.1.2 VM diskから通常ディスクへ戻す
    6.2 disk group 操作
        6.2.1 disk group の作成
        6.2.2 disk group の破棄
        6.2.3 既存DGへディスクを追加
        6.2.4 DGからディスクを取り外す
    6.3 対話的なVM disk 変換とdisk group 作成
    6.4 volume 操作
        6.4.1 ボリュームの作成
            6.4.1.1 Concatination(連結ボリューム)
            6.4.1.2 Stripe
                6.4.1.2.1 2面ストライプの作成
                6.4.1.2.2 3面ストライプの作成
            6.4.1.3 RAID1
                6.4.1.3.1 2面ミラーの作成
                6.4.1.3.2 3面ミラーの作成
                6.4.1.3.3 ログデバイスの追加
            6.4.1.4 RAID5
                6.4.1.4.1 RAID5ボリュームの作成
                6.4.1.4.2 ログの削除(RAID5、ミラー共通)
                6.4.1.4.3 ログの追加(RAID5、ミラー共通)
            6.4.1.5 RAID1+0、RAID0+1
        6.4.2 ボリュームを削除する
        6.4.3 volume を拡張・縮小する
        6.4.4 volume 内のディスクを入れ替える(障害)
            6.4.4.1 新しく追加したディスクを認識させる
            6.4.4.2 ディスクを入れ替える
        6.4.5 OFFLINEのボリュームを復旧する
            6.4.5.1 ミラーの場合
            6.4.5.2 RAID5の場合
            6.4.5.3 Stripe、Concatinationの場合
7 VxFSの管理
    7.1 フォーマットする
    7.2 マウントする
    7.3 スナップショット
    7.4 オンライン拡張する
    7.5 FSCKする
    7.6 バックアップする
8 その他、参考文献等



2011年1月22日土曜日

RHEL6 (4)デフォルトインストール後に起動しているサービス


このエントリーをはてなブックマークに追加


# chkconfig --list |grep :on
abrtd           0:off   1:off   2:off   3:on    4:off   5:on    6:off
acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
atd             0:off   1:off   2:off   3:on    4:on    5:on    6:off
auditd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
autofs          0:off   1:off   2:off   3:on    4:on    5:on    6:off
cpuspeed        0:off   1:on    2:on    3:on    4:on    5:on    6:off
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
haldaemon       0:off   1:off   2:off   3:on    4:on    5:on    6:off
ip6tables       0:off   1:off   2:on    3:on    4:on    5:on    6:off
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
irqbalance      0:off   1:off   2:off   3:on    4:on    5:on    6:off
kdump           0:off   1:off   2:off   3:on    4:on    5:on    6:off
lvm2-monitor    0:off   1:on    2:on    3:on    4:on    5:on    6:off
mdmonitor       0:off   1:off   2:on    3:on    4:on    5:on    6:off
messagebus      0:off   1:off   2:on    3:on    4:on    5:on    6:off
microcode_ctl   0:off   1:off   2:on    3:on    4:on    5:on    6:off
netfs           0:off   1:off   2:off   3:on    4:on    5:on    6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
nfslock         0:off   1:off   2:off   3:on    4:on    5:on    6:off
postfix         0:off   1:off   2:on    3:on    4:on    5:on    6:off
rhnsd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
rpcbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off
rpcgssd         0:off   1:off   2:off   3:on    4:on    5:on    6:off
rpcidmapd       0:off   1:off   2:off   3:on    4:on    5:on    6:off
rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off
udev-post       0:off   1:on    2:on    3:on    4:on    5:on    6:off
各サービスの内容(manやスクリプトの中からコピペ)

abrtd - automated bug reporting tool’s daemon
acpid - Advanced Configuration and Power Interface event daemon
atd - 後で実行するためにキューに入れられたジョブを実行する
auditd - The Linux Audit daemon
autofs - オートマウントシステムの制御スクリプト
cpuspeed - user-space cpu frequency scaling program, v1.5.1
cron - daemon to execute scheduled commands
haldaemon - hald is a daemon that maintains a database of the devices connected to the system system in real-time
ip6tables - IPv6 パケットフィルタを管理する
iptables - IPv4 のパケットフィルタと NAT を管理するツール
irqbalance - distribute hardware interrupts across processors on a multi-processor system
kdump - display kernel trace data
lvm2-monitor -- vgs - report information about volume groups
mdmonitor -- mdmon - monitor MD external metadata arrays
messagebus -- dbus-daemon - Message bus daemon
microcode_ctl - Intel IA32 プロセッサのマイクロコードユーティリティ
netfs - fstab内の nfs,cifs,ncpfs,_netdev が記載されたエントリをマウントする。
network - ネットワークに関する設定を行う。
nfslock - This shell script takes care of starting and stopping the NFS file locking service
postfix - Postfix control program
rhnsd - A program for querying the Red Hat Network for updates and information
rpcbind - universal addresses to RPC program number mapper
rpcgssd - Start up and shut down RPCSEC GSS daemon
rpcidmapd - Start up and shut down RPC name to UID/GID mapper
rsyslog - Starts rsyslogd/rklogd
sshd - OpenSSH SSH daemon
sysstat -- sa1 - Collect and store binary data in the system activity daily data file
udev-post - Post script for udev, after all filesystems are mounted



RHEL6 (3)デフォルトインストール後に起動しているプロセス一覧


このエントリーをはてなブックマークに追加


結構少ない。
# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 16:15 ?        00:00:00 /sbin/init
root         2     0  0 16:15 ?        00:00:00 [kthreadd]
root         3     2  0 16:15 ?        00:00:00 [migration/0]
root         4     2  0 16:15 ?        00:00:00 [ksoftirqd/0]
root         5     2  0 16:15 ?        00:00:00 [watchdog/0]
root         6     2  0 16:15 ?        00:00:00 [events/0]
root         7     2  0 16:15 ?        00:00:00 [cpuset]
root         8     2  0 16:15 ?        00:00:00 [khelper]
root         9     2  0 16:15 ?        00:00:00 [netns]
root        10     2  0 16:15 ?        00:00:00 [async/mgr]
root        11     2  0 16:15 ?        00:00:00 [pm]
root        12     2  0 16:15 ?        00:00:00 [sync_supers]
root        13     2  0 16:15 ?        00:00:00 [bdi-default]
root        14     2  0 16:15 ?        00:00:00 [kintegrityd/0]
root        15     2  0 16:15 ?        00:00:00 [kblockd/0]
root        16     2  0 16:15 ?        00:00:00 [kacpid]
root        17     2  0 16:15 ?        00:00:00 [kacpi_notify]
root        18     2  0 16:15 ?        00:00:00 [kacpi_hotplug]
root        19     2  0 16:15 ?        00:00:00 [ata/0]
root        20     2  0 16:15 ?        00:00:00 [ata_aux]
root        21     2  0 16:15 ?        00:00:00 [ksuspend_usbd]
root        22     2  0 16:15 ?        00:00:00 [khubd]
root        23     2  0 16:15 ?        00:00:00 [kseriod]
root        25     2  0 16:15 ?        00:00:00 [khungtaskd]
root        26     2  0 16:15 ?        00:00:00 [kswapd0]
root        27     2  0 16:15 ?        00:00:00 [ksmd]
root        28     2  0 16:15 ?        00:00:00 [khugepaged]
root        29     2  0 16:15 ?        00:00:00 [aio/0]
root        30     2  0 16:15 ?        00:00:00 [crypto/0]
root        36     2  0 16:15 ?        00:00:00 [kpsmoused]
root        37     2  0 16:15 ?        00:00:00 [usbhid_resumer]
root        67     2  0 16:15 ?        00:00:00 [kstriped]
root       186     2  0 16:15 ?        00:00:00 [scsi_eh_0]
root       187     2  0 16:15 ?        00:00:00 [scsi_eh_1]
root       199     2  0 16:15 ?        00:00:00 [scsi_eh_2]
root       253     2  0 16:15 ?        00:00:00 [kdmflush]
root       260     2  0 16:15 ?        00:00:00 [kdmflush]
root       272     2  0 16:15 ?        00:00:00 [jbd2/dm-0-8]
root       273     2  0 16:15 ?        00:00:00 [ext4-dio-unwrit]
root       306     2  0 16:15 ?        00:00:00 [kauditd]
root       358     1  0 16:15 ?        00:00:00 /sbin/udevd -d
root       701     2  0 16:15 ?        00:00:00 [jbd2/sda1-8]
root       702     2  0 16:15 ?        00:00:00 [ext4-dio-unwrit]
root       795     2  0 16:15 ?        00:00:00 [flush-253:0]
root       973     1  0 16:16 ?        00:00:00 /sbin/rsyslogd -c 4
rpc       1021     1  0 16:16 ?        00:00:00 rpcbind
rpcuser   1039     1  0 16:16 ?        00:00:00 rpc.statd
root      1051     1  0 16:16 ?        00:00:00 mdadm --monitor --scan -f --pid-file=/var/
root      1076     2  0 16:16 ?        00:00:00 [rpciod/0]
root      1083     1  0 16:16 ?        00:00:00 rpc.idmapd
dbus      1112     1  0 16:16 ?        00:00:00 dbus-daemon --system
root      1137     1  0 16:16 ?        00:00:00 /usr/sbin/acpid
68        1146     1  0 16:16 ?        00:00:00 hald
root      1147  1146  0 16:16 ?        00:00:00 hald-runner
root      1176  1147  0 16:16 ?        00:00:00 hald-addon-input: Listening on /dev/input/
68        1187  1147  0 16:16 ?        00:00:00 hald-addon-acpi: listening on acpid socket
root      1210     1  0 16:16 ?        00:00:00 automount --pid-file /var/run/autofs.pid
root      1243     1  0 16:16 ?        00:00:00 /usr/sbin/sshd
root      1321     1  0 16:16 ?        00:00:00 /usr/libexec/postfix/master
postfix   1327  1321  0 16:16 ?        00:00:00 pickup -l -t fifo -u
postfix   1328  1321  0 16:16 ?        00:00:00 qmgr -l -t fifo -u
root      1332     1  0 16:16 ?        00:00:00 /usr/sbin/abrtd
root      1340     1  0 16:16 ?        00:00:00 crond
root      1351     1  0 16:16 ?        00:00:00 /usr/sbin/atd
root      1373     1  0 16:16 tty2     00:00:00 /sbin/mingetty /dev/tty2
root      1375     1  0 16:16 tty3     00:00:00 /sbin/mingetty /dev/tty3
root      1377     1  0 16:16 tty4     00:00:00 /sbin/mingetty /dev/tty4
root      1378   358  0 16:16 ?        00:00:00 /sbin/udevd -d
root      1379   358  0 16:16 ?        00:00:00 /sbin/udevd -d
root      1381     1  0 16:16 tty5     00:00:00 /sbin/mingetty /dev/tty5
root      1383     1  0 16:16 tty6     00:00:00 /sbin/mingetty /dev/tty6
root      1401     1  0 16:16 ?        00:00:00 auditd
root      1429     1  0 16:17 ?        00:00:00 /usr/sbin/console-kit-daemon --no-daemon
root      1905     1  0 16:34 tty1     00:00:00 /sbin/mingetty /dev/tty1


RHEL6 (2)インストール後の注意点(SELinux/iptables/X)


このエントリーをはてなブックマークに追加


RHEL6をデフォルトインストールした場合の注意点をいくつか。

SELinuxがデフォルト有効になっている

RHEL5までは有効・無効の選択肢があったが、RHEL6からはデフォルト有効になっている。

無効にする方法

# vim /etc/sysconfig/selinux
SELINUX=disabled
# getenforce でSELinuxの状態を確認。setenforceで再起動なしに設定変更もできる。



iptablesがデフォルトでON

SELinuxと同じで、RHEL5まではON/OFF設定があったが、RHEL6ではデフォルトでON。
デフォルトで有効になっているルールは以下。
# iptables -L --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
2    ACCEPT     icmp --  anywhere             anywhere
3    ACCEPT     all  --  anywhere             anywhere
4    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
5    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

無効にする場合は chkconfig iptables off && /etc/init.d/iptables stop



Xがデフォルトインストールされない

パッケージ選択をデフォルト設定にするとXがインストールされない。
Xを使いたい場合は明示的にパッケージを選択する必要あり。



その他

sendmailではなく、postfixがデフォルト


RHEL6 (1)インストール


このエントリーをはてなブックマークに追加


RHEL6がリリースされて2ヶ月くらい。
まだまだ情報が少ないので、自分でいろいろ検証してみることにする。

**追記**
---------------------------
RHEL6.1でもう少し丁寧にインストール説明をしたバージョン
---------------------------

【参考】
気になるスケーラビリティ。RHEL6は伊達じゃない!
http://www.jp.redhat.com/event/2010/rhf/EL-2_satoshi_naito.pdf

機能と利点の詳細
http://www.jp.redhat.com/rhel/server/features/benefits.html

Red Hat Enterprise Linux 6の技術的詳細
http://www.jp.redhat.com/rhel/server/details/

インストールの流れは以下


2011年1月15日土曜日

クライアントからNFSサーバの共有一覧を取得する


このエントリーをはてなブックマークに追加


知ってると結構便利。

■Linux
# showmount -e nfs_server

Export list for 192.168.1.10:
/sharepl/sharefs (everyone)

■Solaris
# dfshares nfs_server

RESOURCE                                  SERVER ACCESS    TRANSPORT
 sol10-u27:/sharepl/sharefs            sol10-u27  -         -


2011年1月11日火曜日

Gmail のメール着信を iPhone へ選択通知する


このエントリーをはてなブックマークに追加


iPhoneに切り替えた時に、全てのメールをgmailに統合した。
(i.softbank.jp のアドレスをメインで使ってしまうと、キャリアを変える時に面倒)


んで、メール着信のpush通知は出来るんだけど、深夜に広告が来たことを通知されてしまい非常にうざい。
かといって通知を止めてしまうと、友人の携帯メールからのメールもいちいち受信しないとメールの到着がわからない。

で、2chで見つけた以下の方法がかなり便利だったのでメモっておく。

これはi.softbank.jpにメールが届くと、iPhoneにメールが来たことを伝えてくれる機能を使っているので、
gmailと、i.softbank.jpの相互運用には向かない。

Gmail上で以下のフィルタを作成する。
from:
*@docomo.ne.jp OR *@ezweb.ne.jp OR *@softbank.ne.jp OR *@i.softbank.jp OR *@*.vodafone.ne.jp OR *@pdx.ne.jp OR *@*.pdx.ne.jp OR *@willcom.com OR *@emnet.ne.jp OR *@disney.ne.jp
転送する → xxxxx@i.softbank.jp (自分のアドレス)

これだけ。

これで携帯からgmailに届いたメールが全てi.softbank.jpに転送され、転送されるとiPhoneに「メールが届きました」と通知が来る。
他にも会社や特定メールだけ絞り込んで指定できるので便利。

たまにi.softbank.jpのメールは消しておいた方がよいかも。

*いい加減、ケータイメールで gmailをデフォルト弾くのやめてほしいな・・・


2011年1月10日月曜日

Solaris10のブートディスクが死んだ(と思った)


このエントリーをはてなブックマークに追加


検証でよくiSCSIサーバや、NFSサーバを務めていた、Sun Ultra 24のSolarisが起動できなくなった。

このマシン、OS領域はUSBメモリx2をZFSでミラーリングしていたんだけど、
久々に zpool status 見たら片側のUSBメモリにエラーが多すぎるって出てた。

zfs scrub rpool したらしばらくUSBにアクセスした後にだんまりになり、固まってしまった。

しょうがないのでリブートすると、起動してこなくなってしまった。


うーん、困った。


家のデータはすべてこのマシンに2TBのHDD x4をRAIDZにして突っ込んでいたので、
そっちのデータは生きていると思うが、いかんせんOSが起動しないので取り出せない。

家のマシンはどれもHDDスロットが4つしかないものばかりなので少々めんどくさい。

しかも家のHDDで2TBの容量のものは、このRAIDZに突っ込んでる以外ないんだよね・・・w
うーん、USBメモリ買うのも、このためにもう一個2TB買ってくるのもなー。

とりあえずは、Solaris10のインストールメディアで起動して、zpool import してみる。

お、この状態でUSBの領域も、HDDの領域もちゃんと見えてるじゃん。
ということで、rpool を import してみると、両方のUSBメモリともONLINEで、ミラーを認識している。

zpool scrub rpool してみると、いくつかの再同期が走って今度は正常に終了。
なんか拍子抜けだ。

zpool export rpool して、CDを抜いてリブートすると何の問題もなく起動してきた。

ただ、起動した後に再度scrubすると大量の修復が走ってる。
やっぱりUSBメモリがそろそろ寿命っぽい。

root@sol10-u24 21:06:14>zpool status
  プール: rpool
状態: ONLINE
状態: 1 つまたは複数のデバイスで回復不可能なエラーが発生しました。
        エラーの修正が試行されました。アプリケーションへの影響はありません。
アクション: デバイスの置換が必要かどうかを判断し、'zpool clear' を使用してエラーを消去するか、
        'zpool replace' を使用してデバイスを置換してください。
次のサイトを参照してください: http://www.sun.com/msg/ZFS-8000-9P
スクラブ: Mon Jan 10 21:06:16 2011
上で 0 エラーが発生した 0h14m のあとの scrub completed構成:

        NAME          STATE     READ WRITE CKSUM
        rpool         ONLINE       0     0     0
          mirror      ONLINE       0     0     0
            c0t0d0s0  ONLINE       0     0 1.63K  36.7M repaired
            c1t0d0s0  ONLINE       0     0     2  320K repaired

運用一年でこんなになるとは、次はちゃんとHDDにインストールしよう。


Bloggerの人気の投稿にはてなのブックマーク数を表示する


このエントリーをはてなブックマークに追加


Blogger標準の「人気の投票」と追加した後に、以下のコードを追加

青字で検索して、赤字部分を追記
<!-- (1) No snippet/thumbnail -->

            <a expr:href='data:post.href'><data:post.title/></a>

            <a expr:href='"http://b.hatena.ne.jp/entry/" + data:post.href' style='background: #ffcbcb; border: none; color: #ff0606; font: bold 0.8em Helvetica, Arial, sans-serif; text-decoration: underline;font-size:12'>
        <script expr:src='"http://api.b.st-hatena.com/entry.count?url=" + data:post.href + "&callback=document.write"'/> user</a>

参考>> http://krakenbeal.blogspot.com/2010/10/blogger-popular-post.html


Bloggerのデザインを変更してみた


このエントリーをはてなブックマークに追加


なんとなくやってみた。
ついでに携帯サイトに対応。


SBCL 実行バイナリの作成方法メモ


このエントリーをはてなブックマークに追加


やっとまともに動かせるCLのバイナリが作れたので、
UNIXのlsコマンド風なものをCommon Lispで実装する手順を例にメモっておく。
環境は、Windows7+SBCL

1. とりあえず、REPLでも何でもよいので実行する処理を記述する。
ls.lisp
(defun ls-current ()
  (loop for i in (directory (make-pathname
    :type :wild
    :name :wild
    :defaults (truename "./")))
       do (format t "~a~%" i)))

2. SBCLを単体で起動する。
c:\> set HOME=c:\emacs\home
c:\> set SBCL_HOME=C:\Program Files (x86)\Steel Bank Common Lisp\1.0.37\
c:\> sbcl
sbcl*

3.ソースをロードする
sbcl* (load "c:/emacs/clisp/ls.lisp")
T

4.実行テスト
sbcl* (ls-current)
c:\$Recycle.Bin\
c:\Documents and Settings\
c:\MSOCache\
 .
 .
 .

5.コンパイルする
sbcl* (save-lisp-and-die "ls.exe" :toplevel 'ls-current :executable t :purify t)
:toplevel バイナリを実行するときに最初に実行する関数を指定する。
:executable tを指定すると、作成するバイナリを実行可能にする
:purify tを指定すると、動的オブジェクトを静的オブジェクトに変換する(x86系では意味ないらしい?)

 参考>> Common Lisp クックブック 「現在のメモリイメージを再利用する」
c:> dir ls.exe
2011/01/10  12:32        31,703,064 ls.exe

c:> ls.exe
This is experimental prerelease support for the Windows platform: use
at your own risk.  "Your Kitten of Death awaits!"
c:\$Recycle.Bin\
c:\Documents and Settings\
c:\MSOCache\
c:\NVIDIA\
c:\PerfLogs\
c:\Program Files (x86)\
c:\Program Files\
c:\ProgramData\
c:\Recovery\
c:\System Volume Information\
c:\Users\
c:\Windows\
c:\emacs\
c:\hiberfil.sys
c:\ntbackup\
c:\pagefile.sys
c:\temp\
わかっちゃえば簡単だった。 作成したバイナリが他のライブラリ(dllとかsoとか)を使っている場合は、環境変数PATHに設定しておけば動かせるっぽい。


Windows 7 Pro x64 をインストールしてやったこと


このエントリーをはてなブックマークに追加


1.システムディスクのミラー化

2.ユーザへのパスワード設定
 Windows7はインストール時に入力したユーザが管理者となるが、パスワードが空になる。
 コントロールパネル → ユーザ から設定できる。

3.OS起動時の自動ログイン設定
 ユーザにパスワードを設定すると、起動時に毎回ログイン画面が出るようになる。
 個人PCなのでこれは煩わしいので、起動時は自動的にログインさせる。
 ファイル名を指定して実行>> control userpasswords2

4.Microsoft Security Essentials のインストール
 MS標準アンチウイルス。

5.NTEmacs インストール
 Win7 64bitでも問題なく動いた。

6.Chrome インストール
 入れた拡張
  Gmail Checker
  Google Reader Notifier

7.Evernoteクライアントインストール

8.NVIDIAドライバ最新化
 Win7標準で入っているドライバはバージョンが古い

9.iTunes インストール
 XPからのデータ移行は、iPhoneに全てのアプリをコピーした上で、
 My Music以下のiTunesフォルダを丸ごとコピーしただけでいけた。

10.Acrobat 9 STD インストール
 以外にアップデートに苦戦した。
 9.0をインストール後、9.1、9.2・・・と順にパッチを手動で適用する必要あり。
 Adobeアップデートは64bit版ではうまく動かない(9.3以降は動いた

11.Office 2007 Personal インストール

12.TeraTerm インストール

13.Lhaplusインストール
 圧縮、解凍

14.Javaインストール
 JREのみ

15. sbcl/clisp インストール
 両方とも動いた。


2011年1月6日木曜日

Common Lisp メモ


このエントリーをはてなブックマークに追加


SBCLでいろいろ情報を取得する

■現在の環境情報を取得する
*features*

■現在ロードされているパッケージを取得する
(list-all-packages)
→ ロードされているパッケージをcoreに保存する
(save-lisp-and-die corefilename :purify t)

■ホームディレクトリを取得する
(user-homedir-pathname)

■カレントディレクトリを取得する
(truename "./")

■ASDFのリポジトリディレクトリ
asdf:*central-registry*

■コマンドライン引数を取得する
*posix-argv*

■環境変数を取得する
(posix-getenv "PATH")

参考>> http://d.hatena.ne.jp/cl-intern/20070814


2011年1月2日日曜日

Windows 7 で NTBackup のbkf ファイルをリストアする


このエントリーをはてなブックマークに追加



家のメインマシンをWindows7に移行して、一つ困ったのが、過去XP標準バックアップツールNTBackupで取得したバックアップファイルがWin7ではリストアできない事。

このツール、OS標準の割にはかなり高機能で、Win2000~Win2003のサーバでもかなりお世話になっていたのだけれども・・・

ということで、過去のbkfファイルからファイルをサルベージする方法を調べたのでメモっておく。

Table of Contents
=================
1 何が問題か?
2 テストした環境
3 成功したこと
4 試してない事
5 必要なもの
6 リストア方法
    6.1 ntbackupの起動
    6.2 リストアするファイルを読み込む
    6.3 リストアするファイルの選択
    6.4 ファイルの復元先
    6.5 復元の開始
    6.6 復元の開始
7 バックアップは?