March 2001
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
三月かあ。
ノート PC っていいですね。 いつでも触れるし、場所を選ばないというのはホント大切です。 ディスクトップもスペックにはひかれるものがあるし、サーバを立ち上げるなら必要なんですが、いまのところ予定はないのでした。 なら、普段からどこでも使えるというノート PC がいい感じです。 そうそう最近でた Mac のノートは、デザインいいですね。 英語キーボードでデザインもよくて、安くてほしい機能があるものでないかな... とか書きながら、キーボードについてはノートはちょっとせまこましいところに押し込められている感じで、腕が痛くなることがあります。 ナチュラルキーボードをノート PC のキーボードとして採用するわけにはいかないでしょうけれど。 不自然なところがあるからこうなるんでしょうね。
診断書。 けがで会社を休んでいるんですが、けがということで診断書が必要になります。 動けるようになればと思いつつ、動けるようになってから医者に行くのも変な感じですね。 でも、診断書もらってこないと、まずいですし。 「けがしていましたね」って診断書書いてもらえるのかな?
Software Design の Ruby の特集。 よかったことに Software Design 売れたそうです。 今度、機会があったら「入門」ではなくて「UNIX システム管理者編」とか「UNIX ユーザ編」とか書かせてもらえるといいな。 UNIX 系の話題で書ける雑誌なので私的にはその辺いい感じと思うのです。 Software Design の原稿修正の癖もわかったので、手間をかけない原稿は書けそうな気がします。 ただし、あの漢字の使い方は嫌いなんですけど。
ゴロゴロ。 すこし本とか読んでいますが、ネットへのアクセスはほとんどしていないのでした。 Ruby 関係(Hotlink)だけでも読みにいけばよかったなと思っていたりします。
ri って便利。
Hotlink ちょっと読んでみたのですが、ri の紹介がありました。
これ便利ですね。
コマンドライン上でのライブラリ情報を確認できるものです。
perldoc -f 的なものです。
$ ri Proc
------------------------------------------------------------------------
class: Proc
------------------------------------------------------------------------
Proc objects are blocks of code that have been bound to a set of
local variables. Once bound, the code may be called in different
contexts and still access those variables.
def genTimes(factor)
return Proc.new {|n| n*factor }
end
times3 = genTimes(3)
times5 = genTimes(5)
times3.call(12) #=> 36
times5.call(5) #=> 25
times3.call(times5.call(4)) #=> 60
------------------------------------------------------------------------
[ ], arity, call, new
------------------------------------------------------------------------
もと原稿があるというのが強みなんですが、US は再販制度がないからこの辺はうまく活用できるのでしょうか? (考え方次第かな)
RAA に登録されていますので、みなさんもいかがですか?
ぜひインストールしましょう!
サンプルも含まれているし。
さすがというか、ほんとすごいすごい。
書泉で原書を入れるという話があったので、並ぶまで待っていたんですが、待っていないで別のところで注文しようかな。
本屋さん行きたいです。 歩けないのですけど、本屋さん行きたいです。 いろいろ Ruby 本もでているし、雑誌も読みたいし二日に一度のコンビニ生活では... そろそろ自宅内は遅いけれど歩けるようになっているので、オンラインで注文して配送してもらうのがいいんでしょうけどね。 不規則に寝ているので、危なっかしいのでした。 時間指定(2 時間枠くらい)できるといいのですけど。 あ、コンビニに配送してもらうものもあったな。 こういうの調べておかないと?
ハッシュとハッシュで配列。 「プログラミング作法」にでてくる「2 語プレフィックス用のマルコフ連鎖アルゴリズム」を Ruby で書いたものです。 オリジナルは、Perl がベースなので、ちょっと無理矢理な感じ。
#! /usr/local/bin/ruby
# /home/tetsu/src/ruby/sample/pp/t1.rb
# Created: March 01,2001 Thursday 04:19:22
# Author: tetsu(WATANABE Tetsuya)
class Hash
def add(key1, key2, v)
if self.key?(key1)
else
self[key1] = {}
end
if self[key1].key?(key2)
self[key1][key2].push(v)
else
self[key1][key2] = [v]
end
end
end
srand(0)
MAXGEN = 10000
NONWORD = "\n"
w1 = w2 = NONWORD
statetab = {}
while gets
$_.split.each do |w|
statetab.add(w1, w2, w)
w1, w2 = w2, w
end
end
statetab.add(w1, w2, NONWORD)
w1 = w2 = NONWORD
MAXGEN.times do
suf = statetab[w1][w2]
r = rand(suf.size)
exit if suf[r] == NONWORD
puts suf[r]
w1, w2 = w2, suf[r]
end
この中で、「ハッシュ」二つがキーになって、その先が「配列」というようなデータ構造がでてきます。
「語」のつながりをこの二つの「ハッシュ」で実現しています。
で、Perl と違い Ruby の場合は、初期化が必要という感じなので、ちょっと工夫して Hash#add などを書いてみました。
記述量は多いのですけど、読めばわかるので?
Java の同じコードもあったので、そちらからインプリメントを行なうということもあるのですが、Ruby は便利な機能がたくさんあるので。
srand(0) しているのは、他のプログラムと結果を確認するときに出力が同じになるようにです。
Java 以外は、初期化としては srand(0) と同じ結果でした。
ちょっと探しもの。 買っていたはずの C++ の本を探してあれこれ。 けっきょくみつかったのですが、ちらかってしまって大変な状態。 収まるのかな。 探しものがすぐみつかる環境にしたいと思いつつ... (書庫があるところに住みたいです) 本はみつかったんですが、ほしい情報はありませんでした。
STL って g++ でどのくらい使えるのでしょう?
ということで、上記の「マルコフ連鎖」の C++ 用をコンパイルしたいのでした。
あ、やってみればそれほど難しくなかったですね。
なーんだ。
locate コマンドで STL 関係を確認して、存在を確認し、あるなら使えるはずと。
「プログラミング作法」のJava とか C++ のコードは、すべてのソースがあるわけではないのです。
なのでパズル的に? 補う必要があるのですが、そういうのもおもしろいかも。
ほんのちょっとだけ知識があれば補えることなので。
こういう試すときに、覚えるためにネットからソースコードを入手するのではなくて、手で入力していたりします。
私の同僚も同じようなことをするらしいですが、ソースコードをちゃんと確認するためにも手入力っていまでも大切かも?
とか思ってしまいます。
「自分でつくる」と「だれかが作ったものを読む」ってどちらも大切ですよね。
「読む」ということの一つとして、試すときに手入力してみるというのがあると思うのです。
より細かなところに気がつきますから。
私って読むだけだと読みが浅いからかな。
試すのってやっぱり大切です。
医者に行くのが目標です。 でも、近所にないんですよね。 すこし先にはあるのですが、あそこで大丈夫かな? 内科と皮膚科だったような。 内科でも大丈夫と思うけれど、本当は整形かな。 いってからダメだったらショックかも。 でも雪?
Hash クラスのキーになるオブジェクト。
「自分のクラス#hash」を定義しておけば、それが全面的に使われるかと思っていました。
どうも違うみたいですね。
そのままでは、ちゃんとオブジェクト(インスタンス)を区別していました。
それはそれでいいのかなと思うのですが、私の場合はインスタンスの hash で返す値で「キー」にしてほしかったのでした。
ということで、hash[myobj.hash] とかして使うのでした。
こういうものなのかな?
最初気がつかなくて。
ことの起こりは、Hash クラスの「キー」は、使い捨てオブジェクトだったのです。
というか、一つで使い回しというのが正解かな(どっちも試したんですけど)。
このためオブジェクトレベルで「キー」とされると辛いのでした。
これでたくさんオブジェクトを生成しなくても、よくなったかな。
「プログラミング作法」の「マルコフ連鎖」の例題を OOPL 風に変更したもので試していたのでした。
#! /usr/local/bin/ruby
# /home/tetsu/src/ruby/sample/pp/t1-1.rb
# Created: March 02,2001 Friday 02:50:06
# Author: tetsu(WATANABE Tetsuya)
class Prefix
def initialize(npref = 2, arg = "\n")
@npref = npref
@data = [arg] * npref
end
attr_reader :data
def hash
@data.join(' ')
end
def eql?(y)
@data.join(' ') == y.data.join(' ')
end
def push(arg)
@data.shift
@data.push(arg)
end
end
class Chain
NONWORD = "\n"
NPREF = 2
def initialize
@npref = NPREF
@pref = Prefix.new(@npref, NONWORD)
@statetab = {} # key: Prefix, val: Array
end
def add(str)
if @statetab.key?(@pref.hash)
@statetab[@pref.hash].push(str)
else
@statetab[@pref.hash] = [str]
end
@pref.push(str)
end
private :add
def build(str)
str.split.each do |s|
add(s)
end
add(NONWORD)
end
def generate(nwords)
@pref = Prefix.new(@npref, NONWORD)
nwords.times do
s = @statetab[@pref.hash]
r = rand s.size
break if s[r] == NONWORD
puts s[r]
@pref.push(s[r])
end
end
end
MAXGEN = 10000
srand(0)
str = ''
while gets
str.concat($_)
end
chain = Chain.new
chain.build(str)
chain.generate(MAXGEN)
ここでの Prefix クラスは、二つだけインスタンスが生成されます。
内容が次々変わっていきますが、インスタンスはたくさん作る必要がないのです。
内容で Hash クラスのキーにしたかったので Prefix#hash を定義したのですが、私が期待したものとは違いました。
Prefix#hash を定義しない場合は、オブジェクトで区別されるものかと思っていたのでした。
で、Hash クラスのキーの部分に直接 Prefix#hash で展開したのでした。
このインプリメントは、「プログラミング作法」にもありますが、プリフィックスの語数を実行時に決定できます。
以前に書いたものは、スクリプト中に「二語」固定になっています。
これを増やすことになると、スクリプトそのものをかなり変更する必要があるのでした。
Ruby だと、こういう OO 的アプローチも、スクリプト言語としてとりあえず確認できるものもどちらも手軽にできますね。
この話題、けっきょく Ruby と Perl に C, C++, Java, Awk で書きました。
ほとんど「プログラミング作法」のコードですが、これらのコンパイルやテスト実行などはまとめて Makefile にしました。
あとで簡単に再度確かめられるように。
朝まで起きていたんですが、どうも眠れないようなのでそのまま医者にいってきました。 普通に捻挫だそうで、もうしばらくかかるそうです。 胸のほうは、レントゲンで確認したんですが、折れてはいないそうです。 よかったです。 内出血は奥からでてくるのでしばらく時間がかかるそうです。 染みでるのは下に向かってだそうです。 消炎剤と湿布薬をもらって、あと診断書も書いてもらいました。 てくてく歩いていったのですが、初期に無理をしないで冷やしていたことなどがよかったみたいで、ひねらなければかなりいい感じです。 ただ、力を入れては歩けないのでゆっくりですけど。 本屋さんにいきたいなぁ。 医者の帰り道にコンビニによって「HUNTER x HUNTER Vol.11」買ってきました。 続きが読みたいです。
ここの書き込み順。 ほとんど時系列です。 いまは昼なのですが、「Hash」の話などは朝方に書いていました。 それからそのまま医者にいって、帰宅してここを書いています。 いつもこんな感じでほぼ時系列で書いています。 一寝入りしないと?
トロメール。 しばらく前、「どこでもいっしょ」でトロちゃんやジュンちゃんと遊びました。 いま、登録するとメールベースでトロちゃんからメッセージが送られてくるそうです。 ということで、登録してしまったのでした。
OD の最終原稿。 ゲラが届きました。 IMAP と POP です。 これで連載も最後なんですね。 とっても勉強になりましたです。 みなさんのおかげです。
いくつかのページの見直し。 「余談」で、すこし関連する話題を、「履歴」で修正の内容などを加えるようにして、若干ですが修正しました。 スクリプトも修正したものもあります。 興味のある方は
をどうぞ。
消炎、鎮痛剤入りのシップ。 いいですね。 すごく軽く感じます。 最初からこういうの使っていればもっと楽だったんでしょうね。 普通に売っているものとはどのくらい違うのかな?
桃の節句。
トロちゃんメール。 うーん、これは個人の「好き」情報を適当に集めるのに使える方法かも? 私が何が好きで暇なときに何をしているとかいう情報が集められるわけです。 マーケティングとかに使うのかな? 直接的にみえないところでリンクしていたりするものかな?
マルコフ連鎖の課題。 「プログラミング作法」の三章の話題ですが、なかなかいい感じです。 時間がある方はどうぞ。 オープンソースのように、多くのユーザが「わいわい」いって使うコードはいいです。 クローズの世界の規模の大きなライブラリコードは、自分たちが使う立場になると「便利」だけれど実際に使うのには大変です。 プログラミングの世界って、これからも重要になると思うのですが、システムも複雑になっていき、難しい部分も増えています。 これらがうまく解決できればいいのでしょうが、なかなか難しいですね。 Emacs Lisp で書いてみるかな? 書けるかな... データの扱いという意味でリストで実施するのはすごく楽なはずなんですが。
あ、もう一つ Emacs Lisp で。 だれかつくったかもしれませんが、ri.el 書いて ri を呼びだすようにするといいですね。 うんうん、これはあるといいですね。 うんうん。 もう書きました? 昔の man.el をもとにしていたりします。 以前 perldoc 用のものを書いたのがあったのでそれの焼き直し。
;;; /home/tetsu/src/elisp/ri.el
;;; Created: March 03,2001 Saturday 06:18:57
;;; Author: tetsu(WATANABE Tetsuya)
(require 'man)
(if Man-mode-map
(define-key Man-mode-map "d" 'ri))
(defalias 'ri-entry 'ri)
;; autoload
(defun ri (man-args)
"Get a ri (Ruby Information at your fingertips) page and put it in a buffer.
This command is the top-level command in the man package. It runs a Un*x
command to retrieve and clean a manpage in the background and places the
results in a Man mode (manpage browsing) buffer. See variable
`Man-notify-method' for what happens when the buffer is ready.
If a buffer already exists for this man page, it will display immediately."
(interactive
(list (let* ((default-entry (ri-default-entry))
(input (read-string
(format "ri entry%s: "
(if (string= default-entry "")
""
(format " (default %s)" default-entry))))))
(concat
(if current-prefix-arg "")
(if (string= input "")
(if (string= default-entry "")
(error "No man args given")
default-entry)
input)))))
(setq man-args (Man-translate-references man-args))
(let ((backup-program manual-program))
(setq manual-program "ri")
(Man-getpage-in-background man-args)
(setq manual-program backup-program)))
;; ======================================================================
;; default man entry: get word under point
(defun ri-default-entry ()
"Make a guess at a default ri entry.
This guess is based on the text surrounding the cursor, and the
default section number is selected from `Man-auto-section-alist'."
(let (default-title)
(save-excursion
;; Default man entry title is any word the cursor is on, or if
;; cursor not on a word, then nearest preceding word. Cannot
;; use the current-word function because it skips the dots.
(if (not (looking-at "[-a-zA-Z_.:#]"))
(skip-chars-backward "^a-zA-Z"))
(skip-chars-backward "-(a-zA-Z_0-9_.:#")
(if (looking-at "(") (forward-char 1))
(setq default-title
(buffer-substring
(point)
(progn (skip-chars-forward "-a-zA-Z0-9_.:#") (point))))
;; If looking at something like ioctl(2) or brc(1M), include the
;; section number in the returned value. Remove text properties.
(let ((result (concat
default-title
(if (looking-at
(concat "[ \t]*([ \t]*\\("
Man-section-regexp "\\)[ \t]*)"))
(format "(%s)" (Man-match-substring 1))))))
(set-text-properties 0 (length result) nil result)
result))))
とりあえず使えるという感じです。
補完するとかもっと便利な機能を持たせたいですけど...
でかけてきました。 「Ruby を 256 倍使うための本 無道編 青木峰郎著」 買ってきました。 日めくりも買えたので、ラッキーです。 目的地までは 45 分くらいかけてゆっくり歩いていきました。 普段の倍にはなりませんでしたが、スムーズに歩くということをすっかり忘れていて、「あれれ」です。 まあ、まだ力を入れると痛いので、普通には歩けないのですけど。 鎮痛シップは、いいですね。 帰りはバスに乗りました。 さすがに足首が疲れてきたので。 買ってきたものはほかに「Linux Japan」と「CVS ディスクトップリファレンス」です。 Ruby のライブラリ編は見送ってしまいました。 ライブラリを使うためのサンプルが入っていればいい本なんですけど... 私がページを開いた範囲では動かすためのサンプルがひとつも入っていないようだったので買ってきませんでした。 あとはコミックすこしと文庫を一冊。 えげつない本屋さんがあって、あるコミックの作家が名前を変えてエッチ系のコミックをだしているのをばらしていたのです。 それ買ってきてしまったのでした。 日めくりの作家とか書いちゃう私もいけないかな? 帰宅後は足を休めて。
Emacs Lisp の基本? いやはや、Lisp の基本がすっかりないので、扱いたいリストもちゃんと扱えません。 うーん、すくなくてもリストを自由に扱えるように基本を勉強しないと。 データの扱い方は Lisp で十分扱えるはずなので、Lisp の勉強ですね。 ちょうどいい参考文献ないかな。 マルコフ連鎖の課題は、すぐにはできそうもないのでした。 alist の値を直接 append するって? 悩んでいます。
そばを食べる日だそうです。 なぜって? お雛様をしまうので、お雛様の引っ越し。 引っ越しそばを食べる日なのだそうです。 へぇ。 ちなみに「晴た風通しのいい日にしまってほしい」というのは、雛人形屋さんの希望だそうです。
Ruby 入門。 「UNIX のコマンドと課題で」という感じなものは書きかけのままなんです。 うーん。 いちおうの形にしたいのですけど。 「Ruby 手習い」(The Little Rubyist) 的なものもあったほうがいいかもとか思っていたりします。 あまりにも基本的すぎるものでも、必要な場合ありますし。 その代わり、たくさんの内容を扱うのではなくて、基本的なことばかり。 やってみますか、irb を基本として試しながらできる感じのものを。 Lisp ちょっとやっていて、思ったりしたのでした。 まあ、私の Lisp の場合は探しやすいリファレンスマニュアルで十分かなとは思うのですが、どこへいったのかな? そうそう、探しやすいというのは大切ですよね。 Google 的にヒットしたところをうまくとりだすような全文検索エンジンほしいかも。 コスト高そうだけれど...
おかげさまで? 足のほうは、かなりよくなりました。 足首に力を入れると、まだ痛いので歩くといってもつま先を使うとかいう歩き方はできませんけれど。 歩く時間は見積もり 1.5 倍程度でなんとかなりそうです。 右足首のヒネリにはまったく弱くて、激痛なのでこれはもうしばらく無理のようです。 胸のほうは、強く咳きをしなければ大丈夫みたいです。 まだ足も胸もかばいながらですが、なんとかという感じです。 おおあくびとかすると、「うっ」ってきますけど。 月曜日も休んで、もうすこし歩いてみて、火曜日から会社に行く予定です。 歩けなくてとっても不自由でしたが、ある程度動けるようになってほっとしています。 こんなに休んでいて... 三度目の病気休暇です。
ほとんど明るいうちは寝ていた感じの一日でした。 せっかく買ってきた本とかあるので読めばいいのに。 Lisp と格闘していたんですが、やっぱりドキュメントがなくて... Info に Emacs Lisp のマニュアル入れて置けばよかったです。 探さないと...
夕食。 オモチを焼いて、キムチをのせて、海苔で巻いて。 後は漬物。 田舎からオモチを送ってもらったのでした。 美味しかったです。
Kylix がでますね。 Linux で Delphi できるということで、興味があります。 私には、コードを書けるかな? というのはあるので、試すのにちょっと悩みます。 Kylix Open Edition というものがあり、ライセンスが GPL 対応のものなら無償で利用できるようです。 これ、おもしろいですね。 私はウィンドウを扱うプログラムを書かないので、その辺が一番の問題かな?
Lisp が書けない私。 自分の思った処理ができないです。 それが Lisp の得意なはずのリスト処理。 検索してサンプル探すかな?
月曜日。 はあ、明日から会社かぁ。
マルコフ連鎖。
ごとけんさんから Emacs での標準 Lisp の中にあると教えていただきました。
ありがとうございます。
lisp/play/dissociate.el が該当するものだそうです。
こんなところに...
なかなか「プログラミング作法」の四章に進めないのでした。
人探しメール。 「渡辺哲也」って多いですよね。 ネットで探している方がいて問い合わせがありました。 私ではないようなのですが、ネットから探すのは大変ですね。 お友だちみつかるといいですね。
そういえば? 青山さんの本、調子はどうなんでしょう。 書こうとされていることが興味深いので、期待しているのですが? 難航中かな?
足まだ痛いです。 朝起きたら若干ですが痛みが増していました。 う、湿布していて無理をしてしまったのかな? それとも寝ているときに? なかなかですね。
ようやくできました Lisp でのマルコフ連鎖。 けっこうめちゃくちゃと思いますが、Lisp はなれていませんので。
;;; /home/tetsu/src/ruby/sample/pp/t1.el
;;; Created: March 03,2001 Saturday 06:11:36
;;; Author: tetsu(WATANABE Tetsuya)
;;; マルコフ連鎖 markov
(defvar markov-prefix nil)
(defvar markov-npref 2)
(defvar markov-nonword "\n")
;; markov-prefix を初期化
(defun markov-prefix-init ()
(setq markov-prefix nil)
(let ((n markov-npref))
(while (> n 0)
(setq markov-prefix (cons markov-nonword markov-prefix))
(setq n (- n 1)))))
;; prefix に新しい word を追加
;; 古いものは追いだされる
(defun markov-prefix-push (word)
(setq markov-prefix (append (cdr markov-prefix) (list word))))
;; ls はリスト
;; sep は文字列のセパレータ
;; ls を sep で join する
;; 外部から直接呼ばない
(defun markov-join (ls sep)
(let ((str ls)
(ret ""))
(while str
(setq ret (concat ret (car str) sep))
(setq str (cdr str)))
ret))
;; prefix から assoc 用の key を作成する
(defun markov-prefix-key ()
(markov-join markov-prefix " "))
(defvar markov-statetab-alist nil)
; markov-statetab-alist に加える
; prefix が既存のものなら追加
; 新規のものなら新しく
(defun markov-chain-add (word)
(let* ((key (markov-prefix-key))
(entry (assoc key markov-statetab-alist)))
(if entry
(progn
(setq markov-statetab-alist (delq entry markov-statetab-alist))
(add-to-list 'markov-statetab-alist (append entry (list word))))
(add-to-list 'markov-statetab-alist (list key word))))
(markov-prefix-push word))
(defvar markov-chain-pattern "\\w+")
; markov-chain-build buffer とか?
; いまの buffer から拾い集める
(defun markov-chain-build ()
(save-excursion
(goto-char (point-min))
(let ((p-max (point-max)))
(while (re-search-forward markov-chain-pattern p-max t)
(let ((word (buffer-substring (match-beginning 0) (match-end 0))))
(markov-chain-add word))))))
; markov-chain-generate
; *MARKOV* buffer を作成し、結果を出力する
(defun markov-chain-generate (nwords)
(with-output-to-temp-buffer "*MARKOV*"
(buffer-disable-undo standard-output)
(save-excursion
(message "markov...")
(set-buffer standard-output)
(markov-prefix-init)
(while (> nwords 0)
(let* ((key (markov-prefix-key))
(entry (assoc key markov-statetab-alist))
(next-word (nth (+ (random (- (length entry) 1)) 1) entry)))
(if (equal next-word markov-nonword)
(setq nwords 0)
(insert (concat next-word " ")))
(markov-prefix-push next-word))
(setq nwords (- nwords 1)))
(message "done"))))
;;
(defun markov ()
(interactive)
(setq markov-statetab-alist nil)
(markov-prefix-init)
(markov-chain-build)
(markov-chain-generate 1000))
納得はしていませんけど、とりあえず形になったかなという感じです。
ふぅ。
たぶんたくさん勘違いしているような気がしますけど。
よくわからなかったのが、リスト中の途中の値の変更です。
わからなかったので、削除してから追加するようにしました。
すっごく時間がかかったんですが、ちょっと進んだ感じです。
Queen かっこいい。 CD ほしくなってきちゃった。
そうそう。 プログラミングも含めて Ruby を入門するという本ですが、ごとけんさんが書いています。 本人が ruby-list で「がんばる」って書いていましたので近くでると思います。 こういう最初の一冊的な本って大切ですよね。 私の場合は入門については、どの辺をどう扱えばいいのか判断に悩みますけど。
久しぶりの会社。
いろいろあるなぁ。
- イスが変わっていたこと
私の腰にいいイスはどこへ? 腰痛の原因がイスなんですけど、私の使っていたイスは私の腰にはいいのですが、会社の標準品ではありません。 なので、勝手に交換されてしまったのでした。 ひとこといってくれてもいいのに。 すべての人の骨格とか筋肉が同じわけではないので、それぞれにあったイスってあると思うのです。 規格品を押し付けるのは、この多様化の時代? (これ違うな) 人はみんな同じではないのに無理があります。 あのイス私にあっていたのに。 腰痛が治まってよかったのに。 また腰が痛くなるのは嫌。 苦情? の連絡先がわからないというのも困りもの。 だれがどうしてそんなことをしているかよくわからないというのは、すごいですよね。 担当者は「よかれ」と思ってやっていると思いますけど。 自分の仕事だと。 でも、私の腰が痛くなるのは困るのでした。
- 会社のアドレス宛の一部メーリングリストが届かない
うーん、届かないことは教えてもらってわかったのですけど、他のメーリングリストなどは届くのです。 どうしてかな? 確認してみないと。 困った感じ。 ほかにも届いていないものがあったりして? それも問題ですね。 全部が全部ではないので、本人気がつかないので。
- やっぱり足痛いです
歩く時間は普通の二倍でした。 駅までいくのにこんなに時間がかかるなんて。 階段は登れるのですけど、階段を降りるのはとっても辛いです。 左側の膝が痛いというのがより状態を悪くしていたりするんですけど。 通勤途中、一か所長い下りの階段があって、それが問題。
- 届け出関係
いやまったく、できの悪いアプリケーションに困ってしまうのでした。 私(ユーザ)がやりたい目的と、それにあっていない提供側(組織)の都合? で、とっても使いにくいのです。 別のアプリケーションですが、普段はオンラインなのに、例外処理は「紙」。 この紙、MS-Excel でつくられているので、入力できるかなと思ったら、紙で印刷して手書きのための MS-Excel でした。 なんでこうなるのかな。 紙だと E-mail で送れないし。 例外処理もオンラインにしておけば、それをデータとして取り込むのに手作業などが入らなくてすむのに。 ユーザのいないところで作成されたアプリケーションって感じなのですが、なんとかならないのかな?
「プログラミング作法」先に進めました。 いま五章かな。 CSV を扱っているんですが、これがなんというかごてごての感じ。 ただ、処理的にはこのくらいやらないと扱えないのかなと思うのですけど。 Ruby でも同じようなインプリメントで書いてみました。 もうちょっと Ruby 的にきれいにしてしまいたいなと思ったりするので、とりあえずここには書かないです。 それにしても、世の中にはめちゃくちゃな CSV があったりするので、それをある程度扱えるというのは必要ですね。 とりだして Array クラスに入れてしまえばあとはなんでも OK ですし。
ジミヘンかっこいい!
届かないメールは困りますね。
デバック。 悩んでいるときに、だれかに説明しているうちに自分が気がつくということはよくありますよね。 「プログラミング作法」p.173 には、
ある計算機センターのへルプディスクのそばにはテディベアのぬいぐるみが常備されており、摩訶不思議なバグに悩む学生は、人間のスタッフに相談する前にそのぬいぐるみに向かって説明しなければならないことになっていた。と書いてあります。 これ、いいですね! 説明するために自分の考えを整理しようとして、その途中で気がつくということはよくありますね。
CSV の処理。 大きく変更はしませんでした。 本にでている基本的な考えはそのままに。
移動しました。Ruby なので、Csv#split したら Array クラスを返してくるほうがよさそうですね。 さすがにこれは Emacs Lisp で書いてみる気がしないのですが、文字操作だから match 系でできちゃう? 試してみる?
;;; /home/tetsu/src/ruby/sample/pp/csv/t2.el
;;; Created: March 07,2001 Wednesday 11:05:21
;;; Author: tetsu(WATANABE Tetsuya)
(defun csv-advplain (str i)
(let ((j (string-match "," str i))
(ret-str nil))
(if (not j)
(setq j (length str)))
(setq ret-str (substring str i j))
(list ret-str j)))
(defun csv-advquoted(str i)
(let ((j i)
(str-end (- (length str) 1))
(k nil)
(ret-str nil))
(while (< j str-end)
(if (and
(equal (substring str j (+ j 1))
"\"")
(progn
(setq j (+ j 1))
(not (equal (substring str j (+ j 1))
"\""))))
(progn
(setq k (string-match "," str j))
(if (not k)
(setq k (length str)))
(setq ret-str (concat ret-str (substring str j k)))
(setq str-end 0))
(progn
(setq ret-str (concat ret-str (substring str j (+ j 1))))
(setq j (+ j 1)))))
(list ret-str j)))
(defun csv-split (str)
(let ((field nil)
(i 0)
(w nil)
(str-len (length str)))
(while (< i str-len)
(if (equal (substring str i (+ i 1)) "\"")
; "" あり
(progn
(setq i (+ i 1))
(setq w (csv-advquoted str i)))
; "" なし
(setq w (csv-advplain str i)))
(setq field (append field (list (car w))))
(setq i (+ (nth 1 w) 1)))
field))
(defun csv ()
(interactive)
(save-excursion
(let ((inbuf (current-buffer))
(outbuf (get-buffer-create "*CSV*"))
(last-point-in 0)
(last-point-out 0)
(line nil))
(if (= (point-max) (point-min))
(error "The bufeer contains no text to start from"))
(switch-to-buffer outbuf)
(erase-buffer)
(while (progn
(switch-to-buffer inbuf)
(goto-char last-point-in)
(re-search-forward "^.+$" (point-max) t))
(setq line (buffer-substring (match-beginning 0) (match-end 0)))
(setq last-point-in (+ (point) 1))
(switch-to-buffer outbuf)
(goto-char last-point-out)
(let ((field (csv-split line))
(n 0))
(insert "line = `" line "'\n")
(while (car field)
(insert "field[" (number-to-string n) "] = `" (car field) "'\n")
(setq n (+ n 1))
(setq field (cdr field)))
(setq last-point-out (point)))))))
Emacs Lisp は、よくわかっていないので、危なさそうです...
この Emacs Lisp 性能的には、項目数が 20 で 2000 行の CSV ファイルがほんのちょい待たされる程度です(PentiumII 450MHz)。
機能の分割をもう少し考えたほうがよさそうです。
Ruby のほうもあとで使いやすいようにしておいたほうがいいかな。
あ、Csv クラスという名前にするなら、生成するほうも入れておこうかな。
情報を活用。 ネットでのビジネスは、うまくいっているところはそれなりに理由があるようですね。 多くのところはうまくいっていないのだそうです。 うまくいっているところは、検索されてくる「キーワード」を活用するそうです。 基本的なことだと思いますが、「なにを求めてきているか」というのは、とっても大切ですよね。 せっかく Web ページを検索して訪問してくるわけですから、その情報を活用しないと。 私のページも、ログが読めるといいんですけど。 NIFTY の @homepage は、そういうサービスないんですよ。 ぷんぷん。
イスありました。 よかったです。 総務の方に探していただきました。 これで一安心。
髪、切りました。 いつものように自分で。 さっぱり!
そろそろ、もうちょっと普通に歩きたいです。
「DJ おばあちゃんになるまでやる。」って、まだ若い DJ の人がいっています。 いいですね。 私もおじいちゃんになってもプログラム書いていたいです。 なに書いているんだか。
CSV の話。 HTML でもそうですけど、規格通りとはいかないものですね。 「プログラミング作法」での処理は、ある程度危ないものにも対応しているようです。 なので、一文字ずつの処理です。 Ruby は、文字単位の処理も記述がかなり楽にできるのでいいですね。 できれば一気に String#split とか String#scan で処理できるといいんですけどね。 だって、だれもがこんな処理を一から書いていたら大変ですから。 そうそう、大抵の場合一つのファイル内では CSV の項目数は、一定のことが多いと思うのです。 なので、処理し損なった場合の確認に、項目数の変化はみたほうがいいですよ。 処理する量が多いときには、例外的なものがあったりしますから。
「プログラミング作法」一通り読み終わりました。 「珠玉のプログラミング」を読み直しています。 この二冊。 Ruby の題材にもいいですし、私の好きな分野なのでいい感じです。 もうしばらくは、この二冊の読み返しかな。 あ、256 本も読まないと。 Racc 応用できるといいですしね。
帰宅してすぐ寝てしまって、起きだした後に眠れなくなってそのまま会社へ。 早朝にオフィスへいったら、清掃していました。 こういうのはビルによって違うのですね。 以前は夕方だったんですけど。 さすがに朝めちゃ早かったので、だれもいないと思っていたら照明はついているし、あれれ? と思ったら清掃でした。 清掃のみなさん朝早くて大変。
単語とか文字の数え上げ。 Ruby にも sample/freq.rb があるのですけど、デバックとかのツールとしても使えますね。 処理の結果を確認するひとつの方法だと思います。 文字単位に数え上げるのも、結果の確認に使えますね。 文字単位の freq.rb もつくってみては? すっごく簡単ですし。 プログラミングに役立つツールをつくっていくっていいなと思うのでした。
週末。 足を休められるかな。 間接に負荷がかかっているみたい。
むかし流行った? 自分自身をそのまま表示するプログラム。 Ruby なら? このお題目の制約がわからないのでちょっと調べたんですが、よくわかりませんでした。 参考になりそうな文献は、いまは手元にないし。 ホントむかし流行ったので、何度も話題としてはみていたんですけどね。 Ruby なら一発でできる方法はありますが、制約をしりたかったりするのでした。 こういうプログラミングの課題的なものもまとめたいな。
セキュリティ。 アプリケーションエンジニアが、セキュリティに悩んだら「システム管理者」的人にちゃんと相談してほしいなと思います。 そのシステムを管理する人に相談もなしに、よくわかってないセキュリティ的なところを実施してしまうのってまずいですよね。 Unix の仕組みを使うとしても、そのシステムをよくしっている人なら、適切なことができるはずですし。
「達人プログラマー」いいですね。 読み直そうと思っていた「珠玉のプログラミング」なんです。 でも、ちょっと「達人プログラマー」を読んでみたら「これはいいな」ということで。 著者の二人が書いた Ruby 本も読んでみたくなっちゃいます。 翻訳でるんですよね? 原書も買おうと思っていますけど。
足の痛み。 かなりよくなってきています。 歩き方になれたのかもしれませんけど。 ただ、足首の間接の辺りにまだ内出血あとが新しくでてきたりしています。 なので、負荷をかけすぎないように休ませたいと思うのでした。 歩いているとついつい無理してしまうところがあるので。 よくなってきてはいますが、「ひねり」系とかつま先に力を入れるとかはまだ痛いです。 もうすこしという感じでしょうか。
単語の数え上げ。 「 単語や文字の数え上げ 」 です。 普段使わないとは思いますが、あると便利なときも。 いや、Ruby なら簡単につくれてしまいます。 みなさんも必要になったらサクってつくってください。 日本語を含めて簡単なので、Ruby っていいですね。
献立集。 「こんなときにも Ruby が使えますよ」ということをまとめるといいかも。 こつこつ書きためるかな。
今日は休息(足)日に。
Vine Linux 2.1 と Namazu と cgi-bin の漢字。
namazu.cgi と mknmz で漢字コードが違う問題があるみたい。
パッチはあてたつもりですが、なにか忘れているのかな?
強制的に EUC Japan にしてしまって一応使えるようにしたのですが、弊害がないかちょい心配。
自分で書いたものと、Ruby のマニュアルなどのインデックスを作成して、CGI で検索できるように。
以前は JF など Vine Linux に付属するものは tknamazu だけ使っていました。
CGI(namazu.cgi) は自分でインデックスを作成したものだけにしていたのです。
これを、いっしょにしたのでした。
それで気がついてしまって。
どこか私が設定を間違っていたのが原因かもしれませんけれど。
あ、Vine Linux 2.1 関連もまとめようと思っていたのですが、すっかり忘れてしまっています。
あれれ。
融通が効かないということ。 仕事関係なんですけど、以前に調査した結果で、固定された対応しかしてもらえないことがあって、なんで? という感じです。 現状は違うのに。 調査時のアプローチもとりあえずという感じであり、実際に現状を反映していないし。 担当者は「いわれたまま動いている」ということではたいしたものかもしれませんが、現状は違うのです。 エンジニア的なアプローチにはみえないのがとっても嫌な感じ。 私がいうエンジニア的アプローチって、「実際の場面」で対応ができなければ意味がないということなんですけど。 設計がいくらよくても、実際に動かしてみると違ってくることは多いですよね。 調査が正確にサンプリングできていないとしたらなおさら... こういうときに疑問を持つ人が、「あれ?」ということになるのでした。 ほんと、あれ? こういう運用されちゃうと、オープンな場でのやりとりがどんどん減っていく感じ。 いろいろマイナス効果だと思うけれど。 私だけがそう思っているのかな?
一日のんびりというか、本をすこし読んだ程度で...
今日もゆっくり。
root の権限とシェルスクリプト。 経験のすくない人が、シェルスクリプトを root の権限で動かしたいようです。 動かすための Unix の仕組みもしらないようなので、セキュリティ上の注意点もしらないでしょうし、うかつに返事できない感じです。 こういうときに、セキュリティ関係? のいい書籍を紹介できればいいんですけど、「破り方」的本が多いような? ちゃんとアプリケーションを設計すれば、root の権限ってほとんど必要ないと思うのですけど、その辺からも心配だったりします。 そばに相談する人がいないという状況ももっと危険そうですし。 やっぱりコメントするのは危ない感じ... お客様のシステムなんだそうです。 お客様側のセキュリティポリシーもあるでしょうし、システム管理者さんがいると思うので、その人に相談すればいいのに... いなかったりして。 なら、なおさら危険。
HTML と漢字。 LaTeX なら、文章中で適当に改行が入っていても、余計なスペースが入らないように調整してくれます。 HTML の場合、ブラウザが改行とスペースを同じ扱いにしているので、 「 こ ん な 感 じ 」 にすきまが開いてしまいます。 「 あ い て い ま す よ ね 。 」 (w3m だと普通に表示されますね) これって、ちょっと残念な感じだと思うのです。 Ruby を使って、これを解決するのって簡単なので、フィルタ書きません? 漢字コードが EUC の場合には、nkf も使わずに済むのでこんな感じですね。
#! /usr/local/bin/ruby -Ke
# /home/tetsu/src/ruby/html/kjoin.rb
# Created: March 11,2001 Sunday 04:47:00
# Author: tetsu(WATANABE Tetsuya)
# $Id: kjoin.rb,v 1.1 2001/03/10 19:59:28 tetsu Exp $
# EUC なので変換なしね。
# このスクリプト自身も漢字コードは EUC です。
while gets("\n\n")
$_.gsub!(/([ -熙])\s*\n\s*([ -熙])/, '\1\2')
print
end
漢字コードに JIS を使われている場合は、nkf をうまく使ってください。
これで後処理してしまえば、すっきり?
CSV の話。 別ページにしたほうがいいかなと思いつつ、とりあえず? 変更点は特にないのですけど。
#! /usr/local/bin/ruby
# /home/tetsu/src/ruby/csv/csv.rb
# Created: March 11,2001 Sunday 06:08:20
# Author: tetsu(WATANABE Tetsuya)
# $Id: csv.rb,v 1.1 2001/03/10 21:15:18 tetsu Exp $
# The Practice of Programming
# Brian W.Kernighan
# Rob Pike
class Csv
def initialize
FIELDSEP = ','
@line = nil
@field = []
end
attr_reader :field
def split(str)
@line = str
@field = []
i = 0
while i < str.size
fld, j =
if str[i] == ?"
advquoted(str, i += 1)
else
advplain(str, i)
end
@field.push(fld)
i = j + 1
end
@field.size
end
private
def advplain(str, i) # クォートされていない
j = str.index(FIELDSEP, i)
j = str.size if j.nil? # セパレータが見つからなかった
ret = str[i, j - i]
[ret, j]
end
private
def advquoted(str, i) # クォートされている
ret = ''
j = 0
i.upto(str.size - 1) do |j|
if str[j] == ?" && str[j += 1] != ?"
k = str.index(FIELDSEP, j)
k = str.size if k.nil? # セパレータが見つからなかった
ret.concat(str[j, k - j])
break
end
ret.concat(str[j])
end
[ret, j]
end
end
if __FILE__ == $0
csv = Csv.new
while gets
$_.chop!
csv.split($_)
print "line = `", $_, "'\n" # `'
csv.field.size.times do |i|
print "field[", i, "] = `", csv.field[i], "'\n"
end
end
end
自分用に String クラスに csv_split 追加してもいいかも?
東京でも雪が降るかもしれないそうですね。 足下が危なさそうなので...
アプリ開発 300 万円で。 不動産屋さんの顧客管理。 顧客数は 1000 以内だそうです。 ちょっとしたシステムを組めば、ある程度のことはできそうです。 でも、新規につくるとなると 300 万円だと引き受けてくれるところはどのくらいあるかな。 私が個人でやっているとしたら引き受けてもいいんですけど。 画面回りは苦手ですけどね。 NT がベースということで、私には開発できないですけど...
Linux なら、「開発」のコストがでてくるのでできるかな。 クライアント側のソフトの作成が難しいかも。 私にとっては。 自由検索は、MS-Excel とかから検索できるようにすればいいかも? トータル件数が 1000 件ということであれば、出力件数制御的な処理はなくてもよさそうですし。 データベース的にはかなりのデータがメモリ上に載せらるので、悪くない感じなのですが。 こういうお客さんに使い勝手のいいシステムを納められるとよろこんでもらえそうなんですけどね。 会社的には難しい? あ、うちの会社の話ではなくて一般的な意味で書いています。 この話題は会社内の話題ではないので。 どこかに便利なパッケージもありそうな気がします。 予算が 300 万円ならそのパッケージ導入はできるかもしれませんね。
- 顧客管理 定型
- 毎月の請求書発行
- 契約期間終了近くのリストアップ
- 顧客情報の更新 (ほぼ専任一人)
- 自由検索
- 該当条件による検索 (多くて 5 ユーザ)
職人集団。 日本には職人がたくさんいると思うのです。 そういう職人さんたちの技を生かせるような仕組みができるといいですね。 企業にはできないような、すばらしいことができる人たちがいると思うのです。
まだ書きかけなんですが。 「 Ruby してみません? 」 というのを書いてみています。 アプローチが、「できあがる経過」も入っているという感じです。 まだ読み直しが甘いので、説明不足がたくさんあると思いますが、過程も含めて。 それと、実行がすぐできるように部分部分のスクリプトではなく、過程なので重複したものも含めて実行できるようにしています。 扱う内容をもうすこし考えて、先に進めてみたいと思っています。 検索とか置き換えを先にやったほうがいいかな...
東京地方、雪、積もりませんでしたね。
ハッシュを使った数え上げ。 やっぱり、しらない人っているんですね。 Ruby でも Perl でも Awk でも C++ でも簡単に書けるのに、しっていれば任意のキーワードの集計がすぐできちゃうのに。 しらないとかなり大変なことになるでしょうね... 私もむかし C で書きましたけど、いまはこの目的に C では書けないですね。
DB2 の紹介セミナー。 なかなかおもしろうそうでした。 ただし実際の商談で採用するかどうかというのは、やっぱり触ってみてからじゃないと私にはできないです。 考え方はよさそうなので、評価できるといいんですけど...
すこし遅い帰宅。 セミナーのはじまる時間が、遅すぎという感じ。 帰宅後食べてすぐ寝てしまって、起きれないのでした... カップ麺食べて寝るのはよくないな。 キムチ山盛りに入れてとっても美味しかったけれど...
「達人プログラマー」軽く? 一度目を通しました。 いい本ですね。 考え方に共感できること多いです。 実践が難しいところもありそうですけど、いい感じです。 バリバリつくれたらいいな。
花粉と通勤。 自宅から駅まで歩くと、ちょうどできあがるのか? 電車の中ではうずうずしてしまっています。 目を開けたままにしておけないので、本を読んだりすることができません。 マスクは手放せないです。 オフィスでもマスクしたままでいます。 自宅ではマスクはずすのですが、むずむずしてくることがあって、困ります。 体調が悪いとてきめんに症状がでるので、普段の生活が大切かも。
経済どうなるのでしょう? 痛みが伴うって、収入が減るのはみんな嫌ですし。 収入が減ると消費も減るし、税収も減るけれど、そうしたいのかな?
朝、風呂に入っていると、突然シャワーお湯が水に。 「え?」ってことで確認に。 ガスコンロも点火しないので、もともとの方みたいということで、服を着て確認へ。 「マイコンメータ」が停止していたのでした。 これ、地震やガス漏れなどで停止するものですが、普通にシャワーしていただけなのに? 地震もなかったように思いますし。 復帰手順を実施して OK でした。 ガス漏れなら、復帰中にチェックが入るので確認されますから大丈夫かな。 ちなみに復帰手順は、キャップの中にボタンがあって、そのボタンを深く一度押して、三分間待つだけです。 OK ならこれで使えるようになります。 以前会社の寮に住んでいたときに、一度だけ地震のときに作動したことがありました。 そのときは、あわてていたためか、なかなかうまくいきませんでした。 たしか以前のものは「ボタンをしばらく押し込まなければならない」というところが違っていて気がつかなかった? (違うかな) 今回は二度目ということもあって、手順を読みながら一度でクリアできました。
bit 休刊。 別冊なども合わせると 499 巻でたそうです。 私が bit を毎月買うようになったのは仙台にいたころかなと思います。 85 年とか(UNIX Magazine がではじめたのは 86/11?)。 85 年よりも古いものは仙台の学校の図書館にバックナンバーがあって、読んだりしていました。 この図書館、私が利用している時間帯には人はあまりいなかったように思います。 馬がごーっと群れてくるとわけわかんないよね(ダイクストラさん?)の本とか、いろいろ読んだりしました。 図書館の管理している人とちょっとなかよし? になったおかげか、bit のバックナンバーを捨てるときにほしいものをもらうことができました。 Unix 関連の記事などがあったものをもらってきたりしました。 いまも会社にコピーを置いていたりします。 もらったオリジナルは、引っ越しのときに捨ててしまったかも... bit で好きな記事はたくさんあったのですが、毎月楽しみだったのは「イーグル村通信」です。 最近は買ったり買わなかったりしていました。 売れないから休刊とのことですが、bit を買うような人たちが減ったのか、それとも内容が? そのどちらもと思ったりします。 あこがれのようなものが bit にはあったように思いますが、いまは私が変わったのか... bit のような雑誌で Ruby を全面にだすようなことをしてくれればいいのにそういうことができなかったのがいまとなっては残念です。 むかしはコンパイラの話とか、Lisp の話とかあったのになぁ。 それにしても、今月のスクリプト言語の話。 Ruby というひとことさえもでてこない。 スクリプト言語の話をしているの? って、思ってしまったり...
BSD magazine も買ってきました。 いい雑誌ですね。 特集は「プログラミングをはじめよう」です。 私も思いますけど、「プログラミングをはじめよう!」です。 ほんと。 プログラムを書いてなんぼですよ?! (同僚談:私も同じ思い) bit もこの BSD magazine も同僚に売っているよって教えてもらいました。 なれない市ヶ谷で、駅近くの本屋さんの場所も教えてもらって。 帰り道に寄り道できる本屋さんができてよかったです。 雑誌系はある程度置いてあったので助かります。
楽しくプログラミング。 自分の「やりたいことを実現できる」ってすごいと思いませんか? プログラミングって、こういう風に情報をまとめたいとか思ったときに、サクサクってできちゃいます。 本日の課題は? 新しいオフィスになって、ようやく私自身が Switch 環境になったのです。 全体として以前のオフィスよりもとってもよくなっています。 で、ネットに流れてくるものは自分のホストにアクセスしてくるものか、ブロードキャストです。 tcpdump を使ってちょっとみていたら、arp をだしてくる相手で気になるものがあったので arp だけ拾って確認してみました。 オプションで「-x arp」と書くだけです。 あ、ファイルへ残すということで「-w ファイル名」も。
#! /usr/local/bin/ruby
# /home/tetsu/src/ruby/net/tcpdump/ck1.rb
# Created: March 14,2001 Wednesday 14:20:28
# Author: tetsu(WATANABE Tetsuya)
# usage: tcpdump -x arp -w /tmp/j.raw
# tcpdump -r /tmp/j.raw | ruby ck1.rb
tell_count = Hash.new(0)
tell_me = Hash.new
while gets
arr = $_.split
next if arr[2] != 'B'
if arr.size == 9
who, tell = arr.indexes(5, 8)
elsif arr.size == 8
who, tell = arr.indexes(5, 7)
else
STDERR.puts 'BAD'
end
tell_count[tell] += 1
if tell_me.key?(tell)
else
tell_me[tell] = Hash.new(0)
end
tell_me[tell][who] += 1
end
tell_count.keys.sort.each do |tell|
puts "#{tell} #{tell_count[tell]}"
tell_me[tell].keys.sort.each do |me|
puts " #{me} #{tell_me[tell][me]}"
end
end
サクってつくって?
つくっている間に tcpdump して、結果の確認です。
最近の Switch って arp したりするんですか?
SNMP (入れ忘れ)でまだ確認していないので相手がなにかはっきりしませんが、どうもホスト名から Switch のようなのです。
オフィスのフロア名などが入った Switch かも? や、ノードを管理するツールが動いているシステム(arp しまくる)や、あるホストによくアクセスするようなシステムなどの関連をみることができました。
どのシステムが一番 arp だしているか?
arp の対象はどのシステムか?
arp のキャッシュがあるのである程度の時間データを集めたほうがいいかもしれませんね。
ホント、こういうのが手軽にできるのがとってもうれしい Ruby です。
プログラミングしませんか?
プログラムをつくろう! なんですよ。
興味を持つこと。 プログラミングの課題を探すこともそうですが、興味を持つことが大切ですね。 昨日のネットワークの arp もそうですが、「あれ?」ということを確認してみる。 そのとき、確認しやすいように情報をまとめることなどに Ruby が活躍しますね。 Unix を使っているときも、普段からシステムの状態を確認する関係のコマンドを動かしてみるとかが大切かなと思ったりします。 「なにかあったとき」だけでは、比較対象がありませんし、情報を集めることも思うようにできるかどうか。 ということで、ネタはいろいろ転がっていると思うので、やってみませんか?
BSD magazine いいですね。 Linux でもこういう話題の雑誌がほしいです。 ないとはいわないのですが、分散しているので。 Linux でもアプリケーションをつくる人のための雑誌とか本とかプログラミングのノウハウ的な情報があるといいなと思います。 「全然ない」とはいわないのですが、分散しているので、まとまっていてほしいと思うのです。 BSD magazine は、ポジション的に私の好みなのでした。
久しぶりのグループミーティング。 2000 年 11 月以来。 マネージャさんが忙しいということで、いままで空白の期間だったのでした。 いやはやなんともすごいでしょ? ミーティングは、現状の話はあったけれど、これからどうするの話はなかったのでした。 どうするのかな? どうしたいのかな?
HP-UX の pstat(2) の話。 Linux は /proc からシステムやプロセスの情報をとりだせますが、HP-UX はシステムコール pstat(2) を使います。 新しいリリースがでると毎回拡張されています。 かなりの情報がとれるので、システムやプロセスの状態を確認するのにとても重宝します。 ということで、新しいリリースのための対応をそろそろはじめることになりそうです。 ようやく使える環境ができたので(いまごろ...)。
花粉多くなりましたね。 最初に目が...
本日は pstat(2) かな。
ホント、pstat(2) の一日でした。 既存部分に対する拡張部分だけの修正で半日終わってしまいました。 新規部分もあるので、残りは新規部分です。 拡張も多くけっこう大変です。 Racc 使って、自動処理を目指したほうがいいかな。 毎回のことなので。 ただ、手で作業するから新しい項目について確認できる部分もあるんですけどね。 作業的には機械作業ですけど。 Racc する課題にはいい感じかな。
月に一度の組織のミーティング。 お知らせのみでした。 これからどうしたいとか、いまこういうことを考えているけれど、みなさんの意見は? とかやらないのかな。
仕事の話ですけど。 やりたいこといくつかあったりします。 テスト用の機材を半年間自由に使える予定があるからです。 いままで、なんらかの検証作業をしたとしても、機材の使用できる期間というのはあまり長くありませんでした。 今回は準備も十分できそうなのでなかなか楽しみです(pstat(2) も準備の一つ)。 さて、おもしろいことが確認できるかな...
Ruby との出会い。 最初は、強烈な印象もなく Perl べったりだった私はよくわからない Ruby に戸惑っていました。 よくわかっていないのは私なんですけどね。 Perl で不自由していませんでしたから。 それから数か月後、NIFTY でことあるごとに「わたなべひろふみ」さんが「Ruby ならこう書くよ」って Perl の質問に答えていたりしました。 Ruby のよさをアピールしていたのでした。 あの?「わたなべさん」が「いいよ」っていっているならと、いろいろ情報を集めたのでした。 書きはじめて、OO 的なことをすこしずつかじって、スクリプトレベルで書くことに。 書きはじめたら Perl で書いていたものを Ruby へ移行し、新規のものは Ruby へ。 使っているうちに、いいところがとっても多くなってきて手放せない状態なのです。 Ruby の持っている機能のうち、半分くらいしか使っていないかなと思いますけどね。 もうべったり。 べったりになるのにそんなに時間もかからず、end で終わるシンタックスもなれたらこっちのほうがいい感じ。 とっても便利な String クラスや Array クラスにいつも助けられちゃって。 ほんと、いい感じなんですよ。 String クラスと Array クラスの説明書かないと... (いいところだけ Tips でもいいかな)
連休利用して帰省したいな。って、急に思ったりしたのでした。
ごとけんさんの C magazine の連載。 残念ながら今回 (2001/4) で最終回なんですね。 ホント残念。 一冊の本にまとめてくれないかなとか思うのですが、ダメですか? 近く、前田さん? が新しく連載をはじめるようです。 どんな感じになるかな? と、楽しみです。
平均貯蓄額が 1,300 万円。 聞いて「え?」って思いました。 勤労者の世帯 6,000 万での平均だそうですが、まずどうやって情報を集めたのか? (だってうちには確認ないもの) 6,000 万世帯ってほとんど全部ってこと? 銀行が情報をだしているということ? でも、株や証券なども含まれているような内容でした。 なぞ。 それと金額。 平均ってめちゃくちゃな巨額な人がいると、たしかに引っ張られるので、中央値をしりたいのですけど、それにしても... 信じられないのですが、みなさんそんなに貯蓄があるのでしょうか? (すごいな) 「なんとか省」のまとめた数字らしいのですが、そのうち細かな情報が Web でみることができるようになるんでしょうか? それにしても、いまだに平均値を示すニュースメディアは大丈夫かと思ってしまったりしますけれど。 しっかし、お金ある人はあるんですね。 うちの家族には関係ない話です。 とりあえずは、生活できていますけどね。
貯蓄の話。 その後別の番組で、銀行預金は 500 万円くらいだそうです。 大きいのは生命保険とか。 やっぱり、私の感覚と違うのでした...
ほとんど一日ゴロゴロ状態。 課題はあるんですが...
帰省はできないことになっちゃいました。 残念...
Ruby 本、ライブラリ編。 私としては残念です。 機能を文章で紹介するだけではなくて、サンプル載せてほしいです。 使う立場になると、実際のサンプルがあるかないかではかなり違ってきます。 私自身、いまになればあまり悩みませんが、以前けっこう悩みました。 もしかするといまでも悩むものがあるかも? こういうときにリファレンス的な紹介と目的別紹介のライブラリ編があるととってもいいと思うのです。 そういう意味で「Programming Ruby」はよくやっている感じですね。 書泉に入っているそうなので、買いに行きたいのですけど、まだちょっと足のことを考えると... (オンラインのものは入手していたりしますけど)
テレビでみる韓国の食文化。 いい感じですね。 肉だけでなく野菜やキムチがたくさん。 とってもいい感じですね。 私もこういうのいいなと思うのですが食べにいったことがないのでした。 いいなぁ。
経済。 わかっちゃいるのに先送り。 自分のことばかり考えている人が政治家さ。 将来年金受給者ばかりで労働力ないのに、どうやってこの国はやっていくのかな? あーあ、やんな...
やっぱりないな。 引っ越しで壊れたシステムの中にあるコードを使いたかったんですが、手元にやっぱりありません。 うーん、すっごい昔(1987?)のことではあるんですが、自分がどうやって実現していたのかしりたくなったのでした。 ディスクは生きているはずだから、どこかのシステムに接続してなんとかしたい感じ...
flex の Info? って、ないと思ったら man がかなり充実していますね。 GNU 関係なのにめずらしいですね。 やりたいことができるかな...
怪物番組? HERO ってしっています? 月曜日(3/19)が最終回ということらしいのですが、視聴率すごいらしいですね。 そのため? 普段なら混雑するお店もガラガラになってしまうとか。 ドラマは観ない私でさえ? 何度か観たことがあるということでもすごいかも?
やっぱりゴロゴロ。 男性も更年期があるそうですね。 男性ホルモン(テストステロン)がすくないと起きるそうです。 私は脳下垂体の機能低下があるので、同じような症状がでている感じがします。 実際男性ホルモンがすくないというのは検査ででているんですけどね。 休日ゴロゴロしちゃうのとか、会社に行きたくなくなるのはこれかな。 筋肉を増やせば男性ホルモンが多くなるそうですが、脳下垂体が刺激ホルモンをだせるからですよね。 私の場合機能不足なので、効果があるかな... まあ、体重は減らさないとまずいのですけどね。 ホルモンのバランスって大切みたいというのを実感するのですが、肝心(脳下垂体)な器官が機能低下なので...
そういえば、飛び石連休の真ん中ですね。 本日はお休みのかたも多いのかな?
会社で PentiumIII 1GHz のシステム使えるかも? 2 年ぶりのメインシステムの version up です。 いまあるシステム(PentimII 450MHz)をサーバ的にマシンルームに入れて、手元のシステムを新しいものにする予定です。 Linux で実験的なことがしたいときにメールを受け取っているシステムではやりにくかったので、これでいろいろできそうです。 いい感じ。 現行システムは、情報をオープンにするためのサーバとして活躍する予定です。 設定なども見直ししないと。 早く届かないかな... 届いたら Win 領域はなしで 20GB のディスクすべて Linux です。 オーダ時に Win の選択があるのですが、削除オプションはないのでした。 残念。
ASCII の記事。 ThinkPad 10 周年記念? のインタビューがありました。 変なところに目がいきますが、取締役のかたの服装がいい感じです。 セータにノーネクタイ。 この業界、スーツにネクタイって本当に必要なのか? って思ってしまいます。 まあ、お客様に会うときには必要なのかもしれませんが、普段は仕事をしやすいカッコでいいのではないでしょうか? 暑いのに無理矢理ネクタイとか、変に思ってしまいます。 ThinkPad は Linux のサポートも明示するそうですし、新入社員には Win と Linux のどちらもブートするシステムを配布するようですし。 こういうところはいい感じですね。
yacc と lex 忘れてます。 すっかり忘れちゃっていて、Racc しようとしてあれれな感じでした。 とりあえず、256 倍本を読みつつ、目的のものをクリアできるようにとためしはじめたのでした。 C のヘッダファイルから機械的に生成したいコードがあって、コメント部分のメッセージも利用してとか思っているのでした。 ややこしくないのですけど、私にはさくっと書けないのでした。 なので、ついで? にあれこれためしながら。 さて、目的のものをさくっと書けるようになるのはいつのことかな。
秋葉原にいきたいな。
Unix コマンド。 この話題は何度もでてきているので繰り返しになりますけど。 私は Ruby で
who, df, last, env, cal, from, grep, wc, mkdir, xargs, tree, getconf,
head, tail, ll(ls -l), du, date, fold, pwget, md5sum, sleep, hd, cat, dircmp
など、Unix 的なコマンド(一部 HP-UX コマンド含む)をインプリメントして使っています。
ホント、普段からシェル(zsh)で alias して使っているのです。
本来のコマンドのすべてのオプションをサポートしているわけではありませんが、よく使うものをサポートしています。
また、自分なりに改良していたりするものもあります。
普段使うコマンドというところがけっこう重要だと思っています。
いつでも使うことで、自分のコマンドの使い方でより便利にする工夫ができること、また Ruby になにかあればすぐ気がつきますし。
「いつでも Ruby どこでも Ruby」なのでした。
みなさんも、普段よく使うコマンドを Ruby で書いてみませんか?
自分の希望も含めて。
いい感じになると思いますよ。
このほか @nifty 関係や Web へのファイルのアップロードなどももちろん Ruby です。
辞書検索サポート用の daemon も Ruby で書いて上がっています。
こういう状態だと、常に Ruby がキャッシュ上にあったりするのです。
いろいろな処理が Ruby でサクサク動いてしまいます。
どうですか?
本屋さんへ。 近くにしました。 けっこういろいろ買ってきてしまって大きな手下げ袋が二つ。 半分は自分が読むのものではなかったりして... (家族のね) Ruby 関係でおもしろいものを一冊。 「TREASURE STONE」創刊号ってしっています? 290 円で石がついてくるものです。 これ、創刊号は Ruby なんですよ。 大きくてきれいなものはないようです。 宝石になるような透明度の高いものや、きれいな赤って無理でしょうけれど、もうすこし Ruby のイメージに近いものがほしかったです。 石としての Ruby の話などがでていて、290 円ということで買ってきてしまいました。 大粒のきれいな Ruby がほしくなってしまったら、すっごく高いんでしょうね。 小さくてもいいからちょっとしたものがほしいかも。 あ、昔の時計は軸受けにきれいな小さな Ruby が入っていたような。 うちにはありませんけど...
手塚治虫物語。 すごい人ですね。 ほんと。 再放送を後半だけみたのですが、ホントすごい人です。 まだまだたくさんやりたいことがあったでしょうに。 「子供たちへいいメッセージを残せるように...」
大きな本屋さん。 レジ担当の人ってアルバイトさんが多いからかもしれませんけど、本をもうちょっとていねいに扱ってほしいです。 たくさん本を買うと、めんどくさそうに扱うのはやめてくれないかな。 小さな本屋さんは、ていねいに扱ってくれるんですけど、コンピュータ関係の本置いていないし... 書泉にいく?
「UNIX という考え方 The UNIX Philosophy」という本。 ほしいと思っていたんですが本屋さんにいけなくて買っていませんでした。 読みものができてよかったです。 オーム社って最近いい本だしますね。 まだこれ読んでいませんけれど。
やっぱり寝てばかりかも。 課題はあるのになぁ。
目がかゆくてやんなっちゃう。 部屋でもマスク。 寝るときもマスク。 目はそれでもかゆいのでした。 目を洗うの買ってこないと... 花粉症用関係の薬って、けっこう怖い気がするので普通のものを買おうと思うのでした。
「UNIX という考え方」いいです。 考え方をしっているというのはいいことですし、使う上でもその上になにかつくるとしても。 Unix をつくってきた人たちが書いた本(直接 Unix の本ではなくてもいいんですが)を読んでいると、ところどころに Unix の考え方がでているので、ある程度は広まっていると思いますが、こういうまとまった本はいいですね。 しばらく前は? こういう考え方を伝えるような雑誌とか記事とかがあったように思いますけど、いまは Linux の雑誌とかあるけれどあまりみないような気がします。 違うかな。 私が読んでいないだけかな。 最近の雑誌の記事などは、ある分野だけをとりあげるものとか、解説するものが多くて、Unix の考え方のような部分については、あまり書かれていないような印象です。 とりあえず、私の春の課題図書ですね。 そういえば「1/4 世紀」もまだ読んでいないのでした。
休日の有効利用できないな。
ruby-1.6.3 がリリースされました。 今回失敗したことにプレリリースがなかったので HP-UX で確認していなかったのです。 これが ruby.h の extern inline 関係でボロボロ。 多重定義になってしまいます。 HP C Compiler だと extern inline があっても実際のコードをつくってしまう? ようです。 inline ではなくて。 なので main.c と liburuby.a をリンクすると多重定義エラーになるのでした。 おいおい。 ruby-1.6.2 までは GCC だけが extern inline を使うようになっていました。 これが解除されていて ruby.h を参照するとわかるのですが、展開されるようになっているのです。 HP C Compiler はあれを扱えないのでした。 さて、どう対応するのがきれいでしょうか? inline かどうかは、最適化レベルで変わるので configure で確認するのも変ですし。 inline が有効かどうか、の判断を #ifdef で書くのは無理そうですしね。 コンパイル時にわからないですよね?
Ruby 256 本。 もしかすると、そろそろ次のるびきちさんの本がでているかも。 さすがにまだかな? 今週末から来週にかけてかな。 最近 RD 使っていないのです。 この本がきっかけになるといいな。 実は? 使っていないのですけど POD がけっこう単純な仕様で気に入っていたりします。 実際に使っていないので、気がついていない点なども多いと思いますけどね。 RD はカッコが多いのが Ruby のコードと違って「あれれ」な気がするんです。
単なる思いつきですけど Ruby というような書き方を (Ruby).code みたく書けたら便利?
あ、自分自身を書きにくいのか。
(Ruby).code.code とか?
エスケープの仕組みがないと、自分自身のドキュメント書けない...
あんまりややこしいことをすると構文解析がめんどうになりますね。
Racc を使えば楽勝かもしれないですけど、普通にスクリプトで書けるくらいの仕様が適当かなと思ったりするのでした。
ツールを使う人が自分でつくれるように。
そういえば 256 本関係は EWB というフォーマットというかツールを使って書くのです。
EWB は ASCII から公開されていて Linux 用の rpm などもあったりします。
既存の LaTeX 環境をかなり強制的に変更してしまうので(ようにみえます)、入れたくても入れられない感じなんです。
ソースコードから自分で作業すればいいのかもしれないですけど、なかなか悩ましい感じです(気軽にためせない感じ)。
EWB はバックエンドとして LaTeX を使っています。
でも、ちょっと変な感じがするところがあったりします。
LaTeX がバックエンドなら、カバーされるだろうところが EWB のフォーマットとしては許容できないようなのです。
段落は一行で書かなければならないとか。
空行じゃなければ改行を入れても LaTeX ならいいんですけどね。
私の場合一行一文じゃないと書きにくいのでした。
なので、私が使うとしたらそれ用の変換スクリプトが必携です。
私の書くパターンとはかなり違うのでした。
「UNIX という考え方」の話題。 「独自技術症候群」話がでていました。 会社でもあることですが、個人でも「人とは違うやり方をしたい」というのはよくあることですね。 他の人のソースコードを参考にしたらいいのにとアドバイスしても全然聞いてくれない人が以前いました。 自分でやるということもとっても大切ですけど、うまいやりかたをみて覚えるのも大切だと思います。 自分が考えるよりいい方法を思いつく人っていますから...
HP-UX の件、レポートしないと。
HP C Compiler と inline の話。 まつもとさんに対応していただきました。 ありがとうございます。 ruby-1.6.3 では、HP-UX での事前の確認をサボっていて、リリース後に気がついたのでした。 失敗失敗。 ruby-1.6 系は CVS していないのでした。 あ、snapshot があるんですよね。 うちの proxy server って同名のファイルだと、ファイルが更新されてもなかなか最新のものがとれないので大嫌い。 直接 ftp できればいいんですけど... なら net/ftp するんですけどね。
ruby-dev でのやりとり。 うちの会社、受けとり口がおかしいのか、すっごい受けとるまでが遅いのです。 30 分くらい遅れがあります。 あ、わかった感じ。 MX の preference の設定がまずいんだ。 相変わらずだなぁ。 これでどうしてコンピュータ売っているんだか... 同じ問題が社内から外へ対する E-mail でもあって、MX を内側と外側で同じに管理しているので問題があったりするんです。 私が社内から外へだすときには MX を無視して直接ちゃんと送りだせるシステム経由でだしているんですが... これでいいと思っているのかな? 気がついていてやっているのかな? 気がついていないとしたらけっこうまずい気がするけれど... あーあ、情けないぞ。 一応連絡だけは入れておこうと思いますが...
週末ですね。 桜、咲いたみたいですね。 私の通勤途中の桜も咲きはじめましたよ。
久しぶりの Perl 本。 「Perl クックブック」を買ってきました。 ネタ探しのためです。 それともう一つ、Tom Christiansen さんが著者の一人だからです。 私はこの人が NetNews で頑張っていて、それをみて Perl を勉強したのでした。 この本のような細かな話題をたくさん集めるのって、リファレンスをうまく作るとけっこううれしい題材ですよね。 私のレベルでできる部分になるとは思いますが、なんとかしたいなと思うのでした。 この本、重くて会社に置いてきてしまいました...
もう一冊。 「Ruby による CGI プログラミング」です。 「はじめに」を読んで買うことを決めました。 私は私なりに CGI していますが、他の方の方法も勉強したいので。
久しぶりに書泉へ。 実は昼休みに書泉まで歩いていきました。 足は痛かったんですが、そろそろリハビリも必要ですし。 片道 40 分です。 昼休みをオーバしてしまったのですが、目的は仕事で使うことなのでとりあえず OK ということで。 靖国通りを市ヶ谷から書泉まで歩くのはけっこう大変ですね。 距離として 2km くらいと思います。 食事をしてから戻ってきたのですが、帰り道は風が冷たくてなかなかでした。 上記の二冊のほかに雑誌情報処理も買ってきました。 本当はもっとほしいものがあったのですが、これだけでも重くなってしまったので...
仕事で残念なことが。 普段から情報共有ができればいいなとあれこれしているつもりですが、周囲で共有できているのは一部のみ。 今回、お客様のところでうまく設定できないという問題が起きている同僚がいて、その対応をしたオフィスの人が周囲の人にそのことをしらせてくれていませんでした。 これがとても残念です。 最初の連絡は昨日あったのですが、本日も連絡がありました。 昨日連絡があったことを、メールでいいのでしらせておいてくれれば、本日の連絡があるまでの間になにか情報がつかめたかもしれません。 連絡があってから対応するのでは、現場で作業している人がとても大変だからです。 私はちょっとしたことでも共有できればと思っているんですけど、うまくいかないものですね。 ちなみに、最近は自分からはあまり働きかけていません。 いまのマネージャさんはこういう考え方には合わないようなので。 そうなると他の同僚にも積極的にお願いできないですし。 悪循環?
久しぶりに Let's note しています。 ハードディスクが調子悪かった Let's note ですが、ジュークボックスとして 12 月からずーっと動かしたままでした。 止めるとハードディスクが回らなくなるためです。 そろそろちゃんとしたほうがいいということで、修理にだすときのために Win98 をリカバリディスクで入れ直しました。 入っていた Linux とか lilo とかがハードディスクの修理のときに邪魔になると悪いですし。 リカバリするのに三時間くらいかかったのですが、どうなるかな? 全然問題がないのならそれはそれでいいんですけど...
さて、ちゃんと立ち上がるかな?
大きな地震。 大変ですね。 日本は、どこでも起きる可能性があるでしょうし、東京もきっと起きるのでかなり怖いです。
買いもの。 ほしい CD と本屋さんとすこし衣料品を。 本日の買いものではレジ待の時間がすごかったです。 なかなか手際が悪くて、みていて「あれれ」でした。 二人の担当者がいるので、一人が時間のかかるお客様の対応をすればいいと思うのですけどね。 レジの機械も二つあるから、それを担当者一人が一つをうまく使えばいいのに。 運用がうまくいっていない感じでした。 担当者は頑張って目の前の処理をしているのでしょうけれど... 本屋さんでの収穫はなくて、雑誌だけ。 CD はほしいものはあったのですけど、余計なものも買ってしまったのでした。 聴いてよければいいんですけど。 オフィスが引っ越してからスーツにネクタイなので、綿のシャツを。 普通のワイシャツだと洗濯がめんどうなので、綿のシャツにネクタイしていたりします。 そろそろ冬のスーツでは暑くなってきますね。 新調しないとまともなものがないなぁ。 スーツは作業着なのでいいものを買う気はしないので、安くて丈夫なものがほしいんですけど... ネクタイ嫌いです。
昨日歩きすぎ。 買いものへ行く先は歩いて 30 分くらいのところなのですが、昨日歩きすぎたためか足に疲れがあって辛かったです。 帰り道、途中で休んでしまいました。 私は歩いている途中で休むってほとんどしないタイプで目的地まで休まず歩いちゃうのが普通なんですけど。 いきなり歩きすぎかな。
VAIO ノート。 サスペンド/リジューム調子悪いです。 うーん。
Let's note の話。 まだ結論はでていないのですが、なんか春で暖かくなったためかとりあえず動いています。 Win 環境だけにしてしまったので、細かなことがわからず Linux を入れはじめてしまったのですが、入れている最中に苦労するよりはとか考えてしまいました。 つまり、新しく HDD を購入して入れ直したいと思うのです。 B5 ノートタイプは HDD の入れ直しがめんどうらしいのですが、HDD が調子悪いままでは使えませんし、修理して交換したとしてもキャッシュもなくいまいちな HDD なので。 最近はノート用の 20GB でも二万円しないそうですし。 と、考えはじめたら明日は秋葉原へ行く気になったのでした。 あらまぁ。
秋葉原へ行く予定?
秋葉原いってきました。 雑誌にでている最安値が 18,000 円くらいの 20GB ノート PC 用 HDD ですが、購入価格は消費税を入れると二万円をすこしだけ越えるという感じでした。 いつもお世話になっているお店で買ったので、一番安いところを狙っているというのではないのです。 いっしょに家族から希望があった「トロちゃん Hub」も買ってきたのでした。 こういうほのぼの系っていいですね。
Let's note のディスクの入れ替え。 B5 タイプのノートなのでやっぱりなかなか大変でした。 ドライバは普通の十字でよかったのですが、ピンセットが必要です。 構造も当初の予定では裏面のカバーがはずれると思っていたのですが違いました。 キーボードとキーボードの面のパネルがはずれて、ディスクの入れ替えです。 裏面のネジ関係もキーボード面のパネルの固定に使われているので、とりあえず目につくものをはずして、キーボードもはずします。 キーボードの下にまたネジがあるのでそのネジもはずしてようやくキーボードがのっているパネルがはずれます。 ただし、トラックボールのケーブルとスピーカーのケーブルをはずすこと。 PCMCIA の I/F 部分からキーボードの下に固定のためか導電テープ? らしいもので固定されています。 これははがれないので、カッターで切断することになってしまいます。 ということで、なかなかでしたが、一応成功したようです。 ディスクを入れ替えたあと、ディスクの初期不良の確認も必要なので Win98 をインストール。 目的としてはディスクの確認とハイバネーション領域の作成です。 ハイバネーションエリアはリカバリディスクでインストールし直すと hda1 に作成されます。 20GB は時間がかかりますが、インストールは特に問題もなく OK でした。 次に Linux のインストール。 CD-ROM boot ができないのでネットワークインストールです。 今回は Win 環境は不要と判断して、Linux だけにしてしまうことにしました。 いままで Win 環境を入れてあっても使わないことばかりでしたし。 Let's note の場合 BIOS が OS に依存していないので、音量や画面の明るさを Linux からも制御できるのでホントなくてもいいのでした。 Vine Linux 2.1 のインストールです。 これもディスクのイニシャライズに時間がかかりましたが、それ以外は特に問題もなく OK です。 初期不良の確認もあって、ガンガン使ってみることになりそうです。 環境整備も必要ですし。 Let's note の内部構造がわかって、なるほどと思うこともあったりします。 購入したばかりのころキーボードが浮いていてカタカタうるさくて「なんでぇ」と思っていたのですが、これの理由がわかりました。 キーボードの下にキーボード固定のために両面テープがあったのですが、私のものは両面テープが丸まっていてうまく接着できないので浮いていたようです。 なるほど。
しばらく Linux の話が中心になるかも... 失敗したなと思ったのは、前回 Vine Linux 2.1 をインストールしたときの記録を残していなかったこと。 現物が目の前にあるので、情報はあるのですが...
両面テープ探してこないと。
Ruby 256 倍本、魔道編。 そうそう、日曜日に書泉タワーにいったらありました。 買ってきました。 まだ読んでいません...
作業環境のコピー。 けっきょく tar してたりするのでした。 なぜでしょう? ネットワーク経由で自分でコンパイルしたものなど一式コピーしたかったのですが、ファイルの持ち主やパーミッションをそのまま渡したかったのです。 scp や rcp では -pr オプションである程度可能かなと思ったのですが、ダメだったので。 このとき思ったのは 100BaseT を導入しておけばよかったと。 安い 10BaseT を買ってきて使っていたのでした。 普段はこれでいいですけど、大量(7GB)にコピーするときは違いますから...
両面テープ買ってきました。 これで Let's note のキーボードを固定したらホントとってもいい感じなのです。 最初から両面テープがちゃんと接着されていれば、なにも問題なかったはずなんですけど。 キーボードが浮いていたら、両面テープが幸せのアイテムかも?
明日は健康診断。 あ、私の場合は不健康診断かな。 食べちゃいけないと思うと食べたくなったりするのはなんというか...
Vine Linux 2.1 なんですが、たしか FAT 関係はパッチが複数あたっているためにファイル名に問題がでてしまいます。 なので、カーネルを入れ替えて使った方がいいらしいのですが、Vine Seed から kernel-2.2.18 関係を入れたら USB が変。 一番新しいのを入れたら PCMCIA も。 周辺が Vine Seed ではないので、問題がでてしまうのかなと思い、もとに戻してしまったのでした。 Let's note のほうは、Win 領域がないし Zip も ext2 にしてあるのでこの問題は影響なしと判断してしまったのでした。 さて、もうすこし環境整備しないと。
忘れないように?
桜、かなりもう満開? 早いなー
RAID ディスクのレイアウト。 GUI ツールなどはあるのですが、コマンドラインから確認できるツールがほしくて。 ディスクドライブの数が 30 個もあると、内部バスとの接続や LUN の設定がどうなっているかすぐにわかったほうがいいですよね。 ということで確認のツールを Ruby で書いていたりします。 RAID ディスクの状態をテキスト系式で出力するコマンドがあるのでそれ用のフィルタです。 レイアウト確認のついでにエラーチェックも入れておけば OK かな。 目視だと見逃すかもしれないので。 まあ、別のところにエラーの情報がでてきますけれど。 ちなみに GUI ツールの方は、情報を参照するたびにすべてのディスクの情報をとり直してしまうので、表示がけっこう遅いです。 目的のディスクだけを参照したいような場合にはかなり不便なのでした。 ちなみに、ディスクのレイアウトの確認で「手書き」という方法もあるんですが、私には向いていないようなのでした。
自宅のテレビ。 集合住宅なのですが、ケーブルテレビが入っています。 私は契約していないので、ケーブルテレビ特有のチャンネルは観ることができません。 一般のチャンネルもケーブルテレビ経由で入ってきます。 今日まで気がつかなかったのですが、どうも観ることができるチャンネルが増えているようなのでした。 で、ちゃんと確認してみると BS デジタル系のチャンネルなどを観ることができるのでした。 うーん、ラッキーかも?
ノート PC に入れたディスク。 読み込のみですが、テストを繰り返しています。 いまのところ問題がないようなので、初期不良はなさそうです。 よかったよかった。
不健康診断。 採血の担当の方がとてもていねいな方でした。 私は血管が細いのでその旨を伝えると、「ベットが用意してあるのでこちらでどうぞ」と。 採血後も、「しばらく休んでいきますか?」という感じでした。 緊張したためか手が冷たくなっていてなおさら採血が難しくなってしまう私ですが、ほっとしたひとときでした。 終了後、入った定食屋さんの日替わりメニューが「イタリアンカツ」でした。 現物をみるまでわかりませんでしたが、「カツ」に「スライスチーズ」をのせなくても? とか思うような感じ。 やっぱり不健康?
もうすこしで四月...
「UNIX という考え方」という本。 私にはどっぷり漬かった考え方なのですが、これを実社会にアピールするのは難しく感じたりするのでした。 「違う」って思うこともたくさんあったような。 いまはもう私の方が感じなくなってしまったかも? 私は個人的にはいまでもどっぷりですけどね。 まあ、大切なのはツール的な考え方だけではなくて、安定動作するということも...
花粉。 今年は多いそうですね。 目がかゆいし、鼻水はでるし、くしゃみも。 めちゃくちゃひどいというほどではないのですが、でも...
ノート PC 用のディスク。 ちょっと回転音がうるさいタイプかも。 あらら。
作業環境を Let's note に移動しました。 ディスクの調子が悪くなってから Celeron 466MHz の VAIO であれこれやっていました。 これが Pentium III 600MHz の Let's note に。 CPU に余裕があるので、ひっかかる感じがなくていいです。 細かい設定など、忘れているものもあってサクサクとはいきませんけど、使っているうちになんとか... 寒くなりはじめたころに調子が悪くなって、ほとんど 24 時間サービスのジュークボックスになっていたんです。 VAIO もキーボードなどがよかったので、いい感じなんですが、やっぱりタッチパッドはカーソルがどこへいくのかわからなくて苦手です。 今度買うとしたら IBM の Think Pad かな? (おいおい) 試してみたいのでした。 Linux のサポートしているし。
Let's note のインストール。 ネットワークインストールを ftp 経由で実施しようとしたら proftp の設定がよくわからなくて、wu-ftpd を入れてしまったのでした。 とりあえずインストールに使えればいいということで。 情けない感じ。 調べて設定しないと...
ファイルのコピー。 ファイルの持ち主の関係で? rsh と tar の組み合わせで実施したり、まだまだ忘れもの多いです。 完全にコピーしちゃう方が楽かな?
今日は会社の新しい Linux システムのインストールです。 実験できるシステムができるのでうれしいです。 sendmail が動いていたり、他のユーザにサービスしていたりすると、実験できないので(qmail とか postfix とか)。 Ruby のコンパイルも楽しみです。 どんなに速いのか...
Pentium 1GHz って速いですね。 make も速いし。 本日は、とりあえず最低限の環境だけにしました。 いままでのシステムの完全リプレースではないので、使いやすいように必要なものを選んで。 しばらく環境の作成で時間が必要かなと思いますが、こういうのは楽しい時間なので。 それにしてもディスクが大きくなったので、インストール時間が長い長い。 ディスクの初期化がなければ、すぐ終わるんですけど。 2GB のディスクを使っていたころのいまは 10 倍なので、そんなものかもしれませんけれど。 Win98 はバッサリ消してしまって、全部 Vine Linux 2.1 です。 16MB だけ BIOS のためか不明なエリアがあったので、それは残しておいたんですけど... インストールはほぼ順調でした。 ただグラフィックが Intel815 のオンボードなので、Vine Linux 2.1 の X のままではうまくいきません。 テキストモードでインストールをはじめて、X については Vine Linux 2.1.5 用のサーバに入れ替えです。 音源はまだちゃんと使えていないので、明日の課題かな? (ALSA かな) Win98 でハードウェアの状態をもっとちゃんと確認しておけばよかったといまごろ思っていたりします。 最近のハードなので、なおさら? Intel 8x0 の内蔵音源がみえているけれど、実際は違うはずなんですけどね。 拡張性は低い PC ですが、ディスクの容量も大きいし(20GB)これからあれこれ活躍しそうです。
ディスプレイとキーボードとマウスのセレクタを使っているんです。 これを使うのにケーブルが必要なのですが、ヨドバシでみつからなかったので、ちょっと作業が不便です。 ほしいケーブルは、PS2 の凸凸のケーブルなんです。 延長ケーブル(凹凸)は、たくさんあるんですけどね。 3 系統使えるセレクタなんですが、2 系統だけしか使えていません。 業務のための WinNT のシステムと、いままで使っていた Linux で 2 系統使っていました。 この業務用の WinNT をはずしてしまって現在運用中です。 ほとんど WinNT は精算くらいにしか使っていないので。 これがノート PC になれば、かなり楽になるんですけどね。 場所的にも? あ、精算関係のアプリケーションが Web ベースになれば Linux でも OK なんですよね。 就業報告は Web ベースなので、Linux でも全然困っていません。 精算関係もなんとかしてほしいなぁ。
昨日。 上司に質問のメールをだしたんですが... 「読んだ」という返事もなく無視された感じ。 いったいどうなっているのかな? すぐに回答できなくても、なんらかのリプライがあってもいいと思うのですけど。 なぜに「Award」の対象になったか本人が疑問に思っているんですよ。 回答してほしいものです。 単純に「間違い」というのなら、わかるんですけど? (ええぇ) Award とかは、私は周囲の人たちも納得するようなやり方をしてほしいと思っています。 「なんであの人が受けとるの?」なんて思うような運用のしかたをすると、それは運用する側が信頼を失うことになると思うのですけどね。 私を惑わすよくわからない通知が、すごく偉い人の名前で私のところに届きました。 偉い人は、私がどうして対象になっているかわかっているんでしょうか? 私のところへの通知が自分の名前ででていることさえしらないのでは? 偉い人に直接聞くわけにもいかず、直属の上司に聞いているんですけど。 それにしても、実務をした人は偉い人とは違う人なんでしょうけれど、偉い人の名前で直接送られてくるというのは、私の疑問を持っていく場所がなくて... こういう部分の仕組みも変な感じ。 本当の発送人がわかるようにした方がいいと思うけれど。 私の考え方って変?
雨。 いままで暖かかったので、今日はとても冷たい雨が帰り道の歩くスピードを加速します。 ようやくほぼ普通に歩けています。 足首に力を入れられないときは、普通に歩く歩き方をホント忘れてしまった感じで、すっごく変でした。 なんとかという感じです。 まだ階段の下りは苦手、駆け足などはまだダメなんですけど。
週末ですね。 三月も終りです。 週末はまた秋葉原かも。 セレクタのケーブルほしいので探しにいかないと。
本日秋葉原へいってきました。 午後から。 会社が市ヶ谷なので、秋葉原は近いですし、業務用ですし、天気も回復したので。 ほしかったケーブルは、PS2 の凸凸なんですがありました。 私の場合、小さなお店をよくしらないこともあって、たいていこの手のものは「T-ZONE ミナミ」で買ってしまうのでした。 今回もありました。 それも値段が一本 380 円。 これを二本。 定価表示は 2,500 円なんですけど、売れないので値段が下がったということでしょうか? とりあえず、これで目的は達成できたので問題なしです。 あ、PS2 ってキーボードとかマウスの PS2 ですよ。
「パロディ版 BSD magazine」買ってきました。 なつかしい 4/1 ASCII (Ah!SKI) のノリです。 こういう雑誌がだせるというのがいいですね。 この手の雑誌の侮れないところは「裏 USB デバイスドライバ プログラミング」として「トロ HUB」を扱っていたりすることです。 う、Linux に移植できるかな? (どこかにあるかも?) 実現してほしいアイディア(だれもが思う?)とか、いろいろ。 巨大企業がすでにあるものにちょっとやる気があればできそうなものもあったりするんですけど、やる気にならないものなぁ。
寒いそうです。 風邪などひきませんように。
トラックボール。 タッチパッドが便利なときもあります。 でも、タッチパッドの場合、いきなりカーソルがどこかへいったり、ダブルクリックされちゃうのは困りものです。 それと、カーソルの進み方も不自然。 ちゃんとしたものもあるとは思いますが、トラックボールとか使いやすいと思うのです。 対応機種少ないですけどね。 なぜにノート PC でマウスを持ち歩く人が多いかというと、使いにくいマウスデバイスのためですよね?
ハイバネーション。 Let's note なんですが、せっかくエリアを切ったのに(200MB)、使えないようです。 カーネルのサポートする機能がいくつか増えているのでその辺の関係でしょうか? うーん、200MB のハイバネーション領域どうしようかな。 サスペンド/リジュームは従来の方法で問題なく動いています。 問題は音関係の ALSA 系のようにみえますが、メッセージも残さずいきなり固まってしまうのでした。 それとも USB かな? CPU は回っているようなので(CPU ファンが回りだす)、カーネルのドライバに食いついた感じかな。
ハードのトラブル? USB の Zip の調子も悪いです。 前にも調子が悪いことがあったのですが、今度は回復しないようです。 二つのノート PC で試してもだめだったので Zip ドライブ側の問題のようです。 現象がまずくて、カーネルパニックになってしまいます。 こちらはメッセージが表示されるので分かりやすいですが、けっきょくパニック。 この Zip ドライブ、PCMCIA 経由でも接続できるので PCMCIA で接続してみたら、こちらは問題ありませんでした。 USB I/F の Zip 側が悪いのか、ケーブルかな? ケーブルの予備がないので、今度購入してきてダメだったら... PCMCIA 経由で使うしかないですね。 USB ケーブルで気になるのは、接続のアースの部分に黒いススがかなりよくできることです。 この問題のためなのか、VAIO の USB I/F が調子悪くなってしまいました。 USB FD を接続しても認識しなくなってしまったのです。 まずい感じ... Let's note も同じになるとまずいのでケーブルを交換してのテストはやめた方がいいかな? 最近ハード関係のトラブル多いし...
昼ごろ起きだしたら雪。 三月も最終日、桜も満開というこの時期に雪が降っています。 気温も三度とか。 寒い...
雪は好きだけれど、ほとんどみぞれ。 おまけに体がすっかり春仕様なので、すっごく寒いです。 こんなに寒いと、本屋さんとかいきたいところがあるんですが...
mozilla の夜コンパイル。 最近品質が悪いという話があったんですが、ずーっと問題を抱えた感じですね。 ほぼ毎日とりあえず試してみますが、ちょっとした動作で落ちてしまいます。 現在私が使っているものは三月の最初の方のものです。 いったいどうしたんでしょ?
1GHz のパワー。 そんなに速くてどうするの? というのはあるんですが、普段から使えるとうれしいです。 サクサク動くし。 で、ノート PC で使うというのはまだまだな感じですが、静かなディスクトップなら 1GHz のパワーでもかなり値段的に手頃です。 思うのですが、ディスプレーとキーボードとマウスだけがノート PC のようにグラフィック端末として使えると私はうれしいのですが。 そういうのないかな。 寝転がってキーボードが使えるとなると、普通のキーボードやディスプレイを組み合わせて使うというのは、どうも違うのです。 できればナチュラルキーボード系で EIZO の LCD の組合わせで、場所を選ばないどこでもゴロゴロして使えるのがあるといいです。 机の上に座って使うというのが私にとって不自然なのでした。 そのうちなんとかなるようになるのかな? 現実問題として? 自宅や会社で使う場合も CPU やディスクや周辺機器を LCD やキーボードといっしょにしておく必要はないと思うのです。 普段使いたいものは表示部分の LCD ですし、入力デバイスのキーボードとマウス。 あとは、どこかにあってもいいはずなのです。 さてさて?
ほとんどゴロゴロ状態。 あらまぁ。