人間というのは、夢をみたがる植物だ。
(追伸…いますごいこと気づいた。 「チョムスキー」の文字を並び替えると 「キムチスキヨ」になる!! ああそうだ? これは偶然ではない!!!1)
そもそも“多態 (poly-morph-ism)”って言葉の意味をちゃんと考えたことがあんのかね? その名のとおり「複数の形態をもつ」って意味である。 これと仮想関数のあいだに直接の関係はない。 たとえば、以下の例は仮想関数を使ってないが多態だ:
class A { public: void foo() { printf("foo\n"); } }; class B { public: void bar() { printf("bar\n"); } }; class C : A,B { }; main() { C* c = new C; A* a = reinterpret_cast<A*>(c); a->foo(); B* b = reinterpret_cast<B*>(c); b->bar(); }
ここでは C は、お互いにまったく異なる型 A, B として ふるまうことが可能である。-- つまり型 C はひとつのオブジェクトなのに、 型 A と型 B の2つの態を見せることができるのである。 しかし、これは危険な多態だ。 なぜなら A と B は互いにまったく関連がないため、 共通の窓口がなければ、使う側はどうしていいかわからない。 だから型付けのある言語では普通こんなことはしない。 ある意味、型C は「手なづけられていない野獣」であって、 何に化けるかわかんないのである。それはキケンなので、 とりあえず檻の中に入れて格子窓から様子を見よう、 ということになる。ここで始めて、共通のインターフェイスが必要だという話が出てくる。
…しかし、ここまで来ても、まだ仮想関数は必ずしも必要ではない。 そもそもC++の“仮想関数 (virtual function)”ってのは、その名のとおり 「関数のようであって関数でないもの」「事実上は関数」「ほとんど関数」 という程度の意味であって、これは単なる関数のラッパ、あるいは 「スイッチつきの関数」にすぎない。Stroustrupp にもそう書かれている。 仮想関数を使わなくっても、自分で型情報を覚えておくフラグを入れておいて 自前のスイッチ関数を作れば、同じことはできる。ただしメンドーくさいし、 あいかわらず危険なキャストは必要となるので、言語のサポートを利用した 仮想関数が一番安全なのだが。
いっぽう、Python などはducktypingなので、もっとワイルドに
野獣を野獣のまま扱っている。だから、どこの馬の骨とも知れないオブジェクトを
いきなり正統派の file
オブジェクトとして扱いだしたりする。
ときに裏切られて予想外の AttributeError
で落ちたりもするが、
それはワイルドさの代償というもんだ。いっぽう“正統派”オブジェクト指向言語における
基底クラスは、そのオブジェクトのふるまいをある程度規定するので、
これはその動物の家柄の良さをしめす“血統書”のようなものと考えることができる。
もっとも、「家柄が良くても実はダメな奴」
って奴は、人間界にもオブジェクト界にも一杯おりますがね…
うぶんつ 10.04 アップデート顛末記: Ubuntuやめました。
もうこんなアホなOSをいじっているのは時間の無駄だ… ということで、さっさとハードディスクを買ってきて Arch をインストールした。 これは急に決めたことでない。実は半月ほどまえに、 まず eeePC に Arch をインストールしてみたのだ。ついでに、 会社で使っている VM も Arch にしておき、最初の手順をあらかたマスターしたところで いちばん重要な家のPCにインストールしたのである。 今のところは、まあ、快調というところ。
いくつかのプログラムは自分でビルドした。 おもに日本語関係のものである:
2時間ほどでほぼ使えるようになったが、そのあと「hibernationができない」問題で長らくハマった。 最初はswapパーティションが明らかに少ないことが原因だったのだが、それを解決してもだめ。 なんでー? と思ったら、結局、Arch Wiki に書いてあるように、 initrd で resume させる設定を書かないとダメなのである。この点だけは Ubuntu のデフォルトのほうが 親切であった。しかし Arch のいいところはドキュメンテーションがずっとまともなことである (少なくともUbuntuに比べると)。そして、upstartとかの素晴しい試みもない。だから全体的に、 より「Unixっぽい」感じで、新山にとっては Slackware をほうふつとさせるところがある (Slackware自体、まだあるのだが)。Gentooとかも文書がしっかりしてて結構スキなのだが、 オレは glibc とか jdk をソースからビルドしている時間はないんだよ!
Class Name | Method Name | Variable Name | ||||
---|---|---|---|---|---|---|
first word | last word | first word | last word | first word | last word | |
1. | log ... (29) | ...converter (35) | get ... (482) | ...format (79) | logger ... (39) | ...logger (39) |
2. | category ... (15) | ...test (29) | test ... (478) | ...arg (76) | serial ... (38) | ...name (38) |
3. | my ... (13) | ...appender (28) | set ... (312) | ...info (71) | m ... (38) | ...uid (38) |
4. | pattern ... (11) | ...case (21) | create ... (69) | ...name (52) | cat ... (27) | ...cat (24) |
5. | enhanced ... (8) | ...filter (19) | format ... (60) | ...trace (50) | d ... (20) | ...instance (18) |
6. | default ... (8) | ...renderer (15) | parse ... (54) | ...log (48) | instance ... (18) | ...info (18) |
7. | socket ... (7) | ...layout (12) | is ... (47) | ...performed (46) | port ... (16) | ...port (17) |
8. | property ... (7) | ...handler (12) | action ... (46) | ...level (44) | max ... (15) | ...level (13) |
9. | appender ... (6) | ...writer (8) | main ... (43) | ...options (44) | level ... (14) | ...util (11) |
10. | name ... (6) | ...model (7) | close ... (42) | ...append (43) | log ... (13) | ...size (11) |
11. | level ... (6) | ...throwable (6) | to ... (41) | ...main (43) | root ... (12) | ...method (10) |
12. | date ... (6) | ...thread (6) | log ... (40) | ...debug (40) | util ... (11) | ...root (10) |
13. | null ... (6) | ...parser (6) | add ... (39) | ...close (40) | date ... (11) | ...message (10) |
14. | mock ... (6) | ...format (5) | activate ... (38) | ...pattern (40) | location ... (11) | ...pattern (10) |
15. | logging ... (5) | ...level (5) | debug ... (36) | ...warn (39) | buffer ... (9) | ...log (10) |
16. | custom ... (5) | ...configurator (5) | trace ... (35) | ...size (39) | next ... (8) | ...count (8) |
17. | file ... (5) | ...exception (5) | warn ... (34) | ...string (37) | category ... (8) | ...counter (7) |
18. | logger ... (4) | ...mbean (5) | append ... (33) | ...layout (36) | appender ... (8) | ...filter (7) |
19. | syslog ... (4) | ...manager (4) | info ... (33) | ...instance (33) | get ... (8) | ...trace (7) |
20. | init ... (4) | ...abbreviator (4) | do ... (31) | ...filter (32) | name ... (7) | ...filtered (7) |
考察: メソッド名の上位3位は "get", "test", "set" である。 "test"が多くなっているのは、unittestの項目が多いためだろう。 また (当然ながら) クラス名・変数名には "log" という名詞が使われていることが多い。
Class Name | Method Name | Variable Name | ||||
---|---|---|---|---|---|---|
first word | last word | first word | last word | first word | last word | |
1. | default ... (57) | ...test (100) | get ... (536) | ...safe (111) | artifact ... (53) | ...manager (29) |
2. | project ... (26) | ...exception (48) | test ... (485) | ...version (92) | plugin ... (21) | ...id (23) |
3. | artifact ... (23) | ...manager (14) | set ... (255) | ...id (81) | project ... (17) | ...artifact (19) |
4. | plugin ... (19) | ...utils (11) | create ... (102) | ...artifact (69) | logger ... (13) | ...map (17) |
5. | maven ... (17) | ...diagnoser (9) | is ... (67) | ...repository (56) | container ... (12) | ...version (16) |
6. | abstract ... (16) | ...filter (8) | add ... (62) | ...identity (38) | repository ... (12) | ...artifacts (16) |
7. | invalid ... (10) | ...metadata (7) | clone ... (61) | ...project (35) | wagon ... (10) | ...logger (14) |
8. | test ... (9) | ...activator (6) | build ... (36) | ...artifacts (35) | version ... (10) | ...project (14) |
9. | wagon ... (8) | ...factory (6) | resolve ... (27) | ...directory (35) | model ... (10) | ...container (13) |
10. | mojo ... (8) | ...builder (6) | merge ... (25) | ...metadata (27) | original ... (10) | ...factory (13) |
11. | repository ... (7) | ...monitor (5) | assert ... (21) | ...string (26) | user ... (9) | ...repository (11) |
12. | build ... (6) | ...case (5) | to ... (20) | ...configuration (26) | global ... (8) | ...builder (11) |
13. | model ... (6) | ...source (4) | retrieve ... (17) | ...management (24) | execution ... (8) | ...properties (10) |
14. | activation ... (4) | ...transformation (4) | check ... (17) | ...file (24) | group ... (8) | ...file (10) |
15. | settings ... (4) | ...listener (4) | inject ... (16) | ...roots (23) | local ... (8) | ...roots (9) |
16. | ant ... (4) | ...interpolator (4) | can ... (16) | ...key (23) | maven ... (8) | ...message (8) |
17. | string ... (3) | ...resolver (3) | path ... (14) | ...scope (22) | type ... (8) | ...type (8) |
18. | requirement ... (3) | ...result (3) | construct ... (14) | ...properties (20) | path ... (7) | ...source (7) |
19. | version ... (3) | ...artifact (3) | find ... (12) | ...diagnose (19) | mojo ... (7) | ...scope (7) |
20. | dependency ... (3) | ...field (3) | execute ... (12) | ...dependencies (18) | settings ... (6) | ...repositories (6) |
考察: メソッド名の上位3位は "get", "test", "set" である。
Class Name | Method Name | Variable Name | ||||
---|---|---|---|---|---|---|
first word | last word | first word | last word | first word | last word | |
1. | test ... (283) | ...filter (131) | get ... (1686) | ...string (302) | term ... (166) | ...att (209) |
2. | field ... (42) | ...analyzer (75) | test ... (1438) | ...query (233) | doc ... (146) | ...count (96) |
3. | term ... (34) | ...query (74) | set ... (832) | ...token (180) | field ... (142) | ...field (83) |
4. | query ... (33) | ...builder (52) | to ... (259) | ...stream (178) | max ... (87) | ...uid (72) |
5. | just ... (32) | ...task (51) | add ... (258) | ...equals (177) | num ... (86) | ...dir (69) |
6. | doc ... (31) | ...test (48) | is ... (188) | ...doc (157) | serial ... (72) | ...name (67) |
7. | multi ... (31) | ...collector (39) | do ... (184) | ...close (152) | query ... (60) | ...doc (65) |
8. | simple ... (28) | ...reader (37) | close ... (143) | ...code (120) | current ... (58) | ...length (64) |
9. | payload ... (27) | ...impl (35) | create ... (117) | ...up (109) | offset ... (55) | ...size (61) |
10. | token ... (26) | ...stream (33) | read ... (113) | ...reader (108) | last ... (53) | ...offset (60) |
11. | span ... (25) | ...thread (33) | equals ... (112) | ...terms (107) | buffer ... (51) | ...analyzer (51) |
12. | my ... (22) | ...scorer (32) | hash ... (111) | ...document (99) | analyzer ... (47) | ...reader (50) |
13. | saved ... (20) | ...source (30) | increment ... (108) | ...set (98) | pos ... (46) | ...buffer (49) |
14. | default ... (19) | ...node (29) | next ... (107) | ...value (95) | index ... (45) | ...state (49) |
15. | index ... (17) | ...writer (27) | assert ... (106) | ...index (94) | reader ... (43) | ...searcher (48) |
16. | boolean ... (14) | ...stemmer (27) | doc ... (102) | ...length (90) | directory ... (42) | ...scorer (44) |
17. | qptest ... (14) | ...exception (26) | token ... (91) | ...size (88) | next ... (41) | ...writer (42) |
18. | segment ... (13) | ...parser (25) | new ... (88) | ...field (88) | dir ... (39) | ...directory (42) |
19. | standard ... (12) | ...processor (22) | run ... (85) | ...score (87) | default ... (39) | ...stream (41) |
20. | instantiated ... (12) | ...queue (21) | clone ... (81) | ...to (85) | end ... (38) | ...index (40) |
考察: メソッド名の上位3位は "get", "test", "set" である。 また "doc", "query", "term" などの、それっぽい単語がよく使われている。
Class Name | Method Name | Variable Name | ||||
---|---|---|---|---|---|---|
first word | last word | first word | last word | first word | last word | |
1. | deferred ... (15) | ...impl (195) | get ... (2304) | ...name (249) | f ... (1930) | ...uid (188) |
2. | schema ... (12) | ...dv (26) | set ... (1115) | ...element (213) | serial ... (188) | ...type (79) |
3. | element ... (9) | ...decl (14) | is ... (306) | ...decl (209) | fg ... (24) | ...id (62) |
4. | security ... (9) | ...traverser (13) | start ... (230) | ...id (174) | name ... (22) | ...handler (62) |
5. | document ... (8) | ...configuration (13) | end ... (220) | ...node (155) | debug ... (21) | ...table (58) |
6. | xmlgrammar ... (8) | ...op (12) | create ... (214) | ...type (154) | next ... (17) | ...name (56) |
7. | default ... (8) | ...handler (12) | add ... (140) | ...value (148) | type ... (17) | ...count (46) |
8. | xmlschema ... (7) | ...support (11) | print ... (102) | ...string (108) | namespaces ... (13) | ...index (45) |
9. | object ... (7) | ...pool (11) | reset ... (102) | ...entity (105) | max ... (13) | ...manager (43) |
10. | configuration ... (7) | ...exception (11) | process ... (91) | ...document (104) | value ... (13) | ...value (40) |
11. | xinclude ... (6) | ...validator (11) | check ... (89) | ...handler (101) | validation ... (13) | ...context (35) |
12. | xpath ... (6) | ...token (10) | scan ... (85) | ...error (93) | node ... (12) | ...pool (34) |
13. | abstract ... (6) | ...factory (10) | to ... (81) | ...reset (89) | min ... (11) | ...symbol (31) |
14. | htmltable ... (6) | ...error (9) | parse ... (78) | ...data (86) | schema ... (10) | ...depth (31) |
15. | string ... (5) | ...container (8) | remove ... (60) | ...feature (84) | base ... (8) | ...qname (30) |
16. | datatype ... (5) | ...formatter (8) | run ... (59) | ...property (75) | g ... (8) | ...reporter (29) |
17. | entity ... (5) | ...wrapper (8) | traverse ... (50) | ...uri (74) | length ... (8) | ...stack (29) |
18. | node ... (5) | ...xmlschema (6) | clear ... (46) | ...item (73) | singleton ... (8) | ...buffer (28) |
19. | list ... (4) | ...proxy (6) | has ... (44) | ...index (71) | system ... (8) | ...source (28) |
20. | tree ... (4) | ...nsimpl (6) | normalize ... (43) | ...source (61) | error ... (8) | ...annotations (26) |
考察: メソッド名の上位3位は "get", "set", "is" である。 クラス名は "impl" で終わっているものが多く、これはおそらくインターフェイスと実装を 厳密に分離しているためだろう。
Class Name | Method Name | Variable Name | ||||
---|---|---|---|---|---|---|
first word | last word | first word | last word | first word | last word | |
1. | test ... (50) | ...exception (18) | test ... (800) | ...string (140) | tree ... (54) | ...tree (50) |
2. | grammar ... (14) | ...stream (18) | get ... (639) | ...rule (93) | grammar ... (35) | ...name (32) |
3. | debug ... (11) | ...message (12) | set ... (197) | ...tree (77) | token ... (25) | ...state (23) |
4. | tree ... (11) | ...ast (8) | to ... (143) | ...label (71) | num ... (19) | ...index (22) |
5. | rule ... (11) | ...editor (8) | add ... (59) | ...index (62) | rule ... (18) | ...grammar (19) |
6. | rewrite ... (8) | ...target (8) | is ... (59) | ...node (61) | input ... (16) | ...adaptor (17) |
7. | common ... (6) | ...test (7) | create ... (50) | ...token (52) | debug ... (15) | ...options (16) |
8. | output ... (6) | ...listener (6) | visit ... (30) | ...name (47) | adaptor ... (15) | ...scope (16) |
9. | g ... (6) | ...set (6) | consume ... (29) | ...error (44) | state ... (13) | ...line (16) |
10. | mismatched ... (5) | ...action (6) | check ... (26) | ...set (43) | decision ... (13) | ...map (16) |
11. | input ... (4) | ...scope (5) | gen ... (23) | ...type (42) | type ... (12) | ...input (16) |
12. | base ... (4) | ...controller (5) | enter ... (23) | ...state (40) | name ... (12) | ...debug (15) |
13. | runner ... (4) | ...tree (5) | error ... (21) | ...lexer (39) | label ... (12) | ...tokens (14) |
14. | abstract ... (3) | ...parser (5) | define ... (21) | ...text (37) | line ... (11) | ...type (13) |
15. | tool ... (3) | ...node (5) | exit ... (20) | ...root (34) | last ... (11) | ...rule (12) |
16. | error ... (3) | ...generator (4) | rewind ... (20) | ...visit (32) | is ... (11) | ...directory (11) |
17. | parser ... (3) | ...state (4) | on ... (18) | ...alt (29) | eof ... (11) | ...token (10) |
18. | non ... (2) | ...adaptor (4) | m ... (18) | ...decision (28) | tokens ... (10) | ...number (10) |
19. | bit ... (2) | ...iterator (3) | report ... (17) | ...line (27) | alt ... (9) | ...eof (10) |
20. | token ... (2) | ...pane (3) | equals ... (17) | ...equals (24) | text ... (9) | ...labels (9) |
考察: メソッド名の上位3位は "test", "get", "set" である。
isなんとか
, hasなんとか
を使うべし。
ちなみに、C# 界における「スリジャヤワルダナプラコッテ」はこれ:
System.Windows.Forms.ListViewVirtualItemsSelectionRangeChangedEventHandler
これは現在 .NET の標準ライブラリにあるもののうち、もっとも長い型名であるそうな。 自然言語における長い名前については ウィキッペを参照のこと。
たとえば「getなんとか
」という関数は、
それこそ山のようにあるが、それらの "get" がホントに同じ意味 (語義) で使われてるか?
といえば、あやしい。ほとんどの getなんとか
関数は、
現実世界の物体を「取る」ようには動作しない。たいていの getなんとか
は
情報をコピーするだけだ。たとえば GetAttribute
などの関数は、
通常そのオブジェクトの属性を別の領域にコピーするだけで、もし GetAttribute
したからといって
その属性が消えてしまったら、プログラマはさぞかし驚くだろう。いっぽうで
GetEvent
のような関数は、文字どおり「とったらなくなってしまうget」を実現している。
あるいは、GetId()
のような関数は、"get" と名はついているものの、
実は呼ばれるたびに新規なIDを生成しているかもしれない。こういった関数は例外的で、
通常のプログラマは "get" といえば「とってもなくならないもの」を期待することが多いだろうが、
すべての単語でこうした憶測に頼るのは危険である。
たとえば、関数名・メソッド名としてよく使われそうな動詞をざっとあげてみよう。 以下は新山の主観による不完全な分類だが、"get" には、少なくとも 4つぐらいの潜在的な語義がありそうだ:
Createなんとか
" と "Destroyなんとか
" という
名前が使われているのはよく知られているし、Java の流儀では
アクセサには "getなんとか
" を使え、
と書いてある。これは新山もおおむね同意見だが、いっぽう Apple / Objective-C のガイドラインでは
"get"を使っちゃダメ!って書かれてるのだ。
つくづく、世の人々というものは不同意がスキである。
人間、だれしも嫌なことは早く忘れたい。そのいっぽうで、楽しいことは長く覚えていたい。 しかし人間の記憶装置というのは出来が悪いので、覚えたくもないことを 永く覚えていたり、逆に覚えなきゃいけないことをサッサと忘れたりする。 といって、いいことだけを覚えようとしていたらそれだけ思い出は減り、 逆にすべてを細部まで覚えていたらきっと精神病になってしまう。 …そもそも、本当に「イヤなこと」と「楽しいこと」をどうやって区別できるんだ? いま現在と10年後ではまったく意味合いが違ってくるかもしれないじゃないか!
結論: 記憶力(ようするにrecallの高さ)だけを自慢するヤツは、アホである。 不完全な記憶は、天の恵みである。
どうでもいいいけろ (どうでもよろ)、 DSL (Damn Small Linux) って知ってるかい? 明らかにこの名前は人々のハートをキャッチしたらしい。これ。 Damn Vulnerable Linux。 朝から笑った。DVL は脆弱性のあるソフトウェアばかりで作られたディストリビューションである。 学習に最適。
プログラミングの学習によさそうなソースコード…か?
(追記) ちなみに、自然言語処理の研究者にはskkユーザが多い。 これは、偶然じゃないと思う。このインチキさを笑え。
…しかし、いざやりはじめてみると、あいかわらずいかに emacs の
プログラミング環境がどうしようもない代物 (だいぶつ) であることを
思い知らされた。まず cdb を読むためには各キーに関連づけられた
32ビットのハッシュ値を計算する必要があるのだが、
Emacs Lisp の整数ってのは 30ビットまでなのである。
なんじゃとーー!? しょうがないので、vector を使って擬似的に 32ビット演算をやるルーチンをまず作成。
つぎにハマったのが、
Emacs Lisp ではファイルからデータを文字列などに直接読みこむ機能がないということ。
なんでも一度バッファに入れなければダメなのだ。しょうがないので、
cdbの読みこみ用に *cdb:なんとか*
というバッファを作ることにする。
さいわいにも、cdb はファイルアクセスが非常に少ないので、この程度のものなら
(効率悪いけど) まあ使えると思う。そしてきわめつきが、
Emacs には構造体がないということだった。
まあ CL 拡張など使えばあるのかもしれないが、オレはそんなに話を大きくしたくないんだよ!
結局、buffer local な変数っちゅうのがあるので、Emacs の場合は
「バッファ」を事実上の (グローバルな名前をもつ) オブジェクトのようにして
扱うしかない。あとは全部グローバル変数をいじることになる。
おまけに新山は Emacs Lisp のスコープがどうなっているのか、よくわかんない。
まあとにかくだ…
そして、肝心の skk拡張のほうはまだできていない。
それにしてもだな、新山はおそらくもう一生の間、 新しい日本語入力システムのキーバインディングその他を覚える必要がないと思う。 昔は大学で Wnn、サークルで ATOK、バイトで VJE を使って 混乱したもんだったが、SKKを覚えてから他のシステムを覚えようという気にならない。 会社でも、くだらぬ短文を書くときには Windows の IME を使ったりするが、 まともな文章を書くときには全部、Emacs + SKK で書いている。 この後、いくら携帯電話の入力システムが進化しても、自分にとって これ以上に効率よく使えるものはおそらく登場してこないだろうよ。 (歳をとったら、ますます覚えにくくなるということもある。)
SKKを使ってわかったことは、 「日本語を書くことは奥が深いが、日本語を入力することは奥が浅い」 ということである。真の問題はあいかわらず質の改善であって、 入力速度を100倍に改善しても大していいことはないのであった。
なぜなら、それっぽく見えるから!
“初期化されていなければ、初期化する。”
でも、いま考えてみると別になんともない…ような、気がする。 どこがどうおかしいのだろう?
<textarea>
は??
でも、もうドーでもいいや。
ただ速いだけで事がたりるなら、たとえばガン細胞はきわめて速いよ。(意味不明)
そういうこってす。
じゃあもしかして、
“米国では、2歳未満の乳児の5人に1人が、(コーラなどの)炭酸水を飲まされている。”
なぜならソフトドリンク類はあまりにも安いので、 バカな親が哺乳瓶に入れて飲ませるんだそうな。 バカな親はそれこそ日本にもたくさんいるが、5人に1人かよ!
「ぼくがリザヴェーダを殺したんじゃない! 悪魔が殺したんだ!」-- ラスコーリニコフ
(*1) 脚注 [1] 参照。
…で、調べてみたら、Linux 2.6.32 にアップグレードされた途端、 うちのパソコンでも wakeup 制御が効きだしたということが原因らしい。 これは以下のようにすればわかる:
$ cat /proc/driver/rtc rtc_time : 11:18:48 rtc_date : 2010-07-07 alrm_time : 00:00:00 alrm_date : ****-**-** alarm_IRQ : yes alrm_pending : no 24hr : yes periodic_IRQ : no update_IRQ : no HPET_emulated : yes DST_enable : no periodic_freq : 1024 batt_status : okay
で、このアラームは UTC 00:00:00 に設定されていた。 これは日本時間でいうところの 9:00 なので、毎日こいつがブートしていたというわけだる。 まったく。これをクリアーするためには
のようにする。ついでに BIOS 設定も変えてアラームを完全に禁止しておいた。 これでたぶん大丈夫だろう。しかしまったくむう。$ sudo sh -c 'echo 0 > /sys/class/rtc/rtc0/wakealarm'
ほかにも、アップグレードしたら毎回、shutdown か reboot するたびに
fsck する (正確には fsck はしないが、EXT3-fs が recovery 警告を出す) ようになった。
なんでかよくわからないが、/etc/rc{0,6}.d
をみたら、
halt や reboot をする順序がおかしい。ほんらい S90halt
とか S90reboot
でなければ
いけないのところを、S01halt
とか S01reboot
になってる。
ムキーーーーーっ!! おそらくどっかのパッケージがいじったんだろうが、どこの誰だこんなアホなことをするやつは!!
それから、あいかわらずネットワークを認識しない話。どうやら、新しいバージョンの e1000e モジュールがうちのハブと相性悪くなったらしい。ケーブルを一度抜いてまた挿したりすると 通じるようになる。この手の現象はホントーにやっかいだ。確率的に起こるうえに、 なんか電気的なアレがアレして、いつのまにか直っていたりする (前はハブの口を変えたり、ケーブルの終端を逆にしてみたら直ったことがあった)。 結局 (ケッキョキ)、auto-negotiation をオフにするととりあえずこの現象は出なくなることが判明。
$ sudo ethtool -s eth0 autoneg off
しかし、どうにも気分がわるい。 新山はパソコンがちゃんと動かないのには慣れているので、 それ自体に腹を立てているわけではない (でも一般人の感覚だったら絶対こんなのおかしい)。 Ubuntu のダメなところは、意味もなくメカニズムを複雑にしすぎてて、 しょっちゅう動かなくなるくせに「おかしくなっても直せない」ことだ。 まったく、ムカーーーー!
(まだ続く… (顛末記なのに))
ちなみに鍵をかけておかなかったオレは悪くない。絶・対・に。 これからもかけないからな! 何度でも何度でも盗むがいいさ。
(in case you don't know yusuke is a verry stubborn guy.)
ぞんだけ
Document ID: 2eff6b56e6b6865ac4ae975d01007f8d
Yusuke Shinyama