コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2006年12月19日 >>> 2006年12月6日
link もっと後

2006年12月19日

Linux kernel 2.4 for ARMがクロスコンパイルできない

目次: Linux

クロスコンパイルが楽そうなLinux kernelですが、2.4.33.5がコンパイルできない。

$ make bzImage
(...snip...)
make[1]: Entering directory `/home/katsuhiro/share/tmp/cross/build/linux-2.4.33.5/drivers'
make -C block
make[2]: Entering directory `/home/katsuhiro/share/tmp/cross/build/linux-2.4.33.5/drivers/block'
make all_targets
make[3]: Entering directory `/home/katsuhiro/share/tmp/cross/build/linux-2.4.33.5/drivers/block'

arm-linux-gcc-3.4.4 -D__KERNEL__ -I/home/katsuhiro/share/tmp/cross/build/linux-2.4.33.5/include \
-Wall -Wstrict-prototypes -Wno-trigraphs -Os -fno-strict-aliasing \
-fno-common -Uarm -fno-common -pipe -mapcs-32 -D__LINUX_ARM_ARCH__=4 \
-march=armv4 -mtune=arm9tdmi -malignment-traps -msoft-float -Uarm \
-nostdinc -iwithprefix include -DKBUILD_BASENAME=blkpg  -c -o blkpg.o blkpg.c

blkpg.c: In function `blk_ioctl':
blkpg.c:252: error: asm-specifier for variable `__r1' conflicts with asm clobber list
blkpg.c:252: 前のエラーにより混乱していますので、脱出します
(...snip...)

put_userと、u64の組み合わせがまずいのか、put_userを使っている各所でこのエラーが出ます。


if (cmd == BLKGETSIZE)
  return put_user((unsigned long)ullval, (unsigned long *)arg);
else
  return put_user(ullval << 9, (u64 *)arg);

gcc-3.3.5がダメなのかと思って、gcc-3.4.4でコンパイルしてみた(3.4では-mshort-load-bytesを -malignment-trapsに変えないと別のエラーになる)ものの、やはり同じ。いっそ立ち戻って2.95とか、新しい4系でやるべきでしょうか。

つーか、ARM用のカーネルって世の中にいっぱいあると思うんだが、誰がどうやってコンパイルしてるんだよ?

原因?

ちなみにgccに文句を言われるput_userは以下のようなマクロです。行末の継続記号は省いています。
こんなに長いのにマクロなのはinline展開に比べて何か良いことがあるからでしょう。たぶん。


#define put_user(x,p) (
{
 const register typeof(*(p)) __r1 asm("r1") = (x);
 const register typeof(*(p)) *__p asm("r0") = (p);
 register int __e asm("r0");
 
 switch (sizeof(*(p))) {
 case 1:
  __put_user_x(__r1, __p, __e, 1, "r2", "lr");
  break;
 case 2:
  __put_user_x(__r1, __p, __e, 2, "r2", "lr");
  break;
 case 4:
  __put_user_x(__r1, __p, __e, 4, "r2", "lr");
  break;
 case 8:
  __put_user_x(__r1, __p, __e, 8, "ip", "lr");
  break;
 default:
  __e = __put_user_bad();
  break;
 }
 __e;
})

#define __put_user_x(__r1,__p,__e,__s,__i...) 
 __asm__ __volatile__ (
    "bl __put_user_" #__s 
    : "=&r" (__e) 
    : "0" (__p), "r" (__r1) 
    : __i
 )

put_userが呼んでいる __put_user_xの前半を見ると、サイズ(1, 2, 4, 8)に応じて __put_user_1とか __put_user_2などを呼ぶ(blはブランチ命令)関数みたいです。
gccのインラインアセンブラが理解できないので、後半がイマイチわからないんですが…。誰か読めませんか?これ。

どうでもいいけど、これ見ていたら、gccってマクロの引数を可変にできることに気づきました。
gcc専用のコードになってしまうのが難点だけど、メチャクチャ便利だな。

駄目な日

ドコモとのミーティングをなぜか明日だと思っていてすっぽかしてしまった。やってしまった。

さらに今日、停電になるのを忘れていて、リモートからの作業中にマシンが落ちた。
研究室に行って、電源投入してきた。

昨日、今日と研究室に行ったせいか、のどが痛い。研究室は暖かくて良いんですけど、猛烈にのどと目が痛くなる。
hdk氏にそれは登校拒否だって言われた。否定できないよ、うわぁぁヽ(`Д´)ノぁぁーん!

編集者:すずき(2023/04/29 21:52)

コメント一覧

  • ち。さん(2006/12/20 20:02)
    1: __asm__ __volatile__ (
    2: "bl __put_user_" #__S
    3: : "=&r" (__e)
    4: : "0" (__p), "r" (__r1)
    5: : __i
    6: )

    で説明すると
    1:は__volatile__なので最適化不可のインラインアセンブラ定義
    2:は""でくくられた部分はそのまま埋め込まれて、#以降はコメントです。

    3:以降はちょっとややこしいのですが、アセンブラ埋め込みの前後の処理を書いています。
    いわゆる拡張インラインアセンブラの部分です。それぞれの処理がコロンで区切られていて
    3:が出力レジスタ
    4:が入力レジスタ
    5:が使用するレジスタが指定されています。

    3:は`=`がWrite-onlyで書き込まれるレジスタ、`&`がearlyclobber operandとなっていて
    インラインアセンブラ内で読んで書き込まれた後に再び読まれるレジスタをあらわします(たぶん)。
    `r`は汎用レジスタであることを示しています。カッコ内は変数を指定しています。
    これらの指定によって、埋め込むアセンブラの後にレジスタの値を変数へ書き込むコードが挿入されます。

    4:の`0`は0番目のconstrain、つまり"=&r" (__e)を指します。3:と同様、カッコ内は変数です。
    これらの指定によって、埋め込むアセンブラの前に変数の値をレジスタに書き込むコードが挿入されます。

    5:は使用されるレジスタが記述されます。埋め込むアセンブラ内で使用するレジスタをここに書くことで
    埋め込むコードの前後にこれらのレジスタを退避・復帰するコードが挿入されます。

    で、3:と4:で指定した変数をレジスタとみなして%0,%1,%2みたいな形でアセンブラを書けるんですが
    ("add %1,%0"みたいな記述ができるようになる)このソースには含まれてないですね。

    詳細はGCCのドキュメント"Using the GNU Compiler Collection"に書かれていますので
    やる気があったらがんばって読んでみてください。
  • すずきさん(2006/12/20 20:09)
    アセンブラの神が降臨していただいたおかげで、勉強になります。
    #ってコメントか。文字連結じゃないんですね。

    だとすると本文が間違ってる予感が…直さねば。
  • すずきさん(2006/12/20 20:26)
    間違えた。#はパラメータ展開、文字列連結は##でした。

    #define の中なので、たぶん
    __put_user_x(__r1, __p, __e, 8, "ip", "lr");
    と渡すと、__S は 8 になって、
    "bl __put_user_" #__S

    "bl __put_user_" "8"
    に展開され
    "bl __put_user_8"
    と連結されます。

    $ cat a.c
    #define hoge(a) printf("hoge_" #a "\n");
    int main()
    int a = 1;
    hoge(0);
    hoge(a);
    hoge("fuga");

    return 0;
    とすると

    $ gcc a.c; ./a.out
    hoge_0
    hoge_a
    hoge_"fuga"
    こんな感じになります。
  • ち。さん(2006/12/21 15:24)
    うは。まちがってたw
    コメントはセミコロン`;`でした。
    大変失礼しましたm(_ _)m
  • hdkさん(2006/12/23 00:48)
    ; は複数の命令を一行にまとめて書くときに使う区切り文字です。# がコメントであってます。
  • すずきさん(2006/12/24 04:34)
    えーと、まとめると。

    1: __asm__ __volatile__ (
    2: "bl __put_user_ #__S"
    って書いたら、__S はコメントで、

    今回の奴は
    1: __asm__ __volatile__ (
    2: "bl __put_user_" #__S
    となっていてこれは #define の定義なので、#の後ろにあるパラメータは展開されて文字列として連結される。

    ってことで理解合ってます?>お二方
open/close この記事にコメントする



2006年12月18日

glibcお前もビルドできないのか - その2

目次: C言語とlibc

glibcは最適化を外すとコンパイルできないことを昨日お伝えしました。
これじゃあるオプション(-fno-omit-frame-pointer:フレームポインタの省略を行わない)つけたいのにできないよ、って思ったんですが、試しに -O2 --fno-omit-frame-pointerって同時に指定したらコンパイルできました。

でも確か -O1くらいの最適化をかけると、アーキテクチャによってはフレームポインタが省略されるはずです。それを考えると -O2と -fno-omit-frame-pointerは矛盾した指定に思えますが…?

gccが、オプションを見ているふりをしている可能性も疑って、生成されたlibc-2.3.2.soを逆アセンブルして確認しましたが、フレームポインタの省略はないようです。

というわけで、最適化とこのオプションは排他ではないことがわかりました。うーん、便利ナリ。

-fなんちゃらのオプションってビットフラグみたいな感じなのでしょうか。-O1とか -O2ってのは、それらをまとめて立てたり倒したりするだけかな。

前途多難

とりあえずglibcはうまくいきました。割とすんなりできたのは、glibcがクロスコンパイルのことを考えて作られているからでしょう。

ところが、みんながみんなクロスコンパイルが容易にできるわけじゃないんですよね。

ncursesはautomake/autoconf使ってる(ほんとか?)っぽいのにtarget=arm-linuxって指定しても完全に無視だった。他のライブラリはまだ試してないけど、ずっとこんな調子だったら泣けてしまうよ。

かーねる

あと、以前からつまづいていたのは、Linux kernel 2.4でのmake menuconfigですね。make configはできるから、そっちでやりゃいいんですけど、さすがにmenuconfigすらできないのは悲しすぎです。


ARCH=arm
CROSS_COMPILE=arm-linux-

まず、以上の変数を指定して、make menuconfigすると、こんな事言われます。

$ make menuconfig

Menuconfig has encountered a possible error in one of the kernel's
configuration files and is unable to continue.  Here is the error
report:

 Q> scripts/Menuconfig: line 831: MCmenu0: command not found

Please report this to the maintainer <mec@shout.net>.  You may also
send a problem report to <linux-kernel@vger.kernel.org>.

Please indicate the kernel version you are trying to configure and
which menu you were trying to enter when this error occurred.

make: *** [menuconfig]  1

MCmenu0ってファイルが悪いそうですが、このファイルは自動的に生成される上に、クリーンナップでご丁寧にも消されるので残ってません。というわけでscripts/Menuconfigを追って調べたら、arch/arm/config.inで、drivers/ssi/Config.inというファイルを指定しているところが怪しそう。

わざわざコメントで、ssiだよ、scsiのスペルエラーじゃないよ!なんて書いてありますが、現在のカーネルだとそもそもdrivers/ssi/Config.inと言うファイルがありません。昔はあったのでしょうね。

そのせいでifブロックの中が空のシェルスクリプトが生成され、shが怒っていたのです。
下のような感じでコメントアウトすると良いみたいです。


$ diff -u linux-2.4.33.5/arch/arm/config.in.orig linux-2.4.33.5/arch/arm/config.in
--- linux-2.4.33.5/arch/arm/config.in.orig      2006-12-15 01:29:03.000000000 +0900
+++ linux-2.4.33.5/arch/arm/config.in   2006-12-19 03:33:31.000000000 +0900
@@ -599,10 +599,10 @@
 fi
 endmenu
 
-if [ "$CONFIG_ARCH_CLPS711X" = "y" ]; then
-   # This is _meant_ to be ssi _not_ scsi.  It is not a spelling error.
-   source drivers/ssi/Config.in
-fi
+#if [ "$CONFIG_ARCH_CLPS711X" = "y" ]; then
+#   # This is _meant_ to be ssi _not_ scsi.  It is not a spelling error.
+#   source drivers/ssi/Config.in
+#fi
 
 source drivers/ieee1394/Config.in

って書いた後で、既に指摘されていたことがわかったりすると、ほんとガッカリだよ(´・ω・`)ネー。
しかし、私にはmakeの出すエラーメッセージとarch/arm/config.inがおかしい、って事はパッと結びつかなくて、検索もできませんでしたよ…。宇宙人ですか?この人は。

ちなみに、arm以外にも影響あるっぽいので、カーネルクロスコンパイルしちゃうぜ、って奇特な方は参考にどうぞ。

まあ、俺の思いつく事なんてたいがい、どっかのすげー人がやったことの二番煎じなのさ。それならそれでいいのだ。

編集者:すずき(2023/04/29 21:47)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年12月17日

glibcお前もビルドできないのか

目次: C言語とlibc

昨日の日記の繰り返しになりますが、私がやりたいのは、変なオプション付けてglibcをビルドすることです。
いきなりやると大抵うまくいかないので、初めに何も付けずにビルドしました。簡単な修正が必要ですが、特に問題なく成功しました。

あとはオプション変えるだけだと思ったら、やっぱダメでした。下のメッセージのように、最適化を外すなって怒られます。

$ make
(...snip...)
/tmp/build/glibc-2.3.2/config.h:3:3: #error "glibc cannot be compiled without optimization"

そういえば以前、hdk氏より「Linuxカーネル(12/18訂正:カーネル -> Linuxカーネル)は最適化をoffにするとコンパイルできない」と教えてもらたっけなあ。
今日になって同じような現象に出会うとは、夢にも思いませんでしたよ。

ビルドメモ

まずapt-get source glibcとして、取ってきたglibc_2.3.2.ds1.orig.tar.gzを展開すると、glibc-2.3.2.tar.bz2とglibc-linuxthreads-2.3.2.tar.bz2が出てくるので、それらを展開します。

そして、Zaurus Cross さんにあるglibc-2.3.2向けのバグフィクスパッチを当てます。
こういう素晴らしいお仕事してくれる方がいるから、ほんと助かります…。


# ソース取ってくる
$ apt-get source glibc
$ tar -xzvf glibc_2.3.2.ds1.orig.tar.gz

# 展開、linuxthreadsアドオンだっけ?それも展開
$ tar -xjvf glibc-2.3.2.tar.bz2
$ cd glibc-2.3.2
$ cp ../glibc-linuxthreads-2.3.2.tar.bz2 ./
$ tar -xjvf glibc-linuxthreads-2.3.2.tar.bz2

# パッチ当て
$ patch -p1 < glibc-2.3.2-arm.patch

# さらに修正必要、修正内容については後ろの方に載ってます
(修正)

# ビルド用のディレクトリに移動
$ cd ../
$ mkdir build
$ cd build

# こんふぃぎゃー
# カーネルヘッダは適したものを使ってください
$ ../glibc-2.3.2/configure --prefix=/home/username/usr/local/arm --target=arm-linux \
--enable-shared --enable-add-ons --enable-kernel=2.4.x \
--host=arm-linux --with-headers=/home/username/usr/src/linux-2.4.x/include

# ビルド、インストール
$ make
$ make install

ちなみにglibcのコンパイルも含めて、Zaurus Crossさんが超くわしいので、そちら見た方がためになります。

修正箇所

コンパイル通らないと困るので晒しておきます。
初めはglibc-2.3.2/include/libc-symbols.hの @nobitsを削ってたんですが、ググったら %nobitsにすればいいよ、ってのがあったので直しました。


--- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c.orig       2003-02-21 07:22:24.000000000 +0900
+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c    2006-12-17 23:21:42.000000000 +0900
@@ -47,6 +47,8 @@
 #include <asm/page.h>
 #include <sys/sysctl.h>
 
+#include <linux/input.h>
+
 #define PATH_ARM_SYSTYPE       "/etc/arm_systype"
 #define PATH_CPUINFO           "/proc/cpuinfo"
--- glibc-2.3.2/include/libc-symbols.h.orig     2003-01-04 08:21:03.000000000 +0900
+++ glibc-2.3.2/include/libc-symbols.h  2006-12-17 23:21:01.000000000 +0900
@@ -247,7 +247,7 @@
     __attribute__ ((unused, section (".gnu.warning." #symbol __sec_comment))) \r     = msg;
 #  define libc_freeres_ptr(decl) \r-  __make_section_unallocated ("__libc_freeres_ptrs, "aw", @nobits") \r+  __make_section_unallocated ("__libc_freeres_ptrs, "aw", %nobits") \r   decl __attribute__ ((section ("__libc_freeres_ptrs" __sec_comment)))
 #  define __libc_freeres_fn_section \r   __attribute__ ((section ("__libc_freeres_fn")))
編集者:すずき(2023/04/29 21:46)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年12月16日

Debianかっこいー!

研究上の用入りで glibc含むあまたのライブラリに変なオプション付けてクロスコンパイルしなきゃならなくて、とってもめんどくさいです。やる気出ません。
とりあえずクロスコンパイル環境を構築するために作業しています。

作業の途中で、Debianパッケージのすごさを垣間見ました。

# su
# apt-get build-dep gcc-3.3
# exit

$ apt-get -b source gcc-3.3

ってやるだけで、パッケージからソース解凍して、Debian用のパッチ当てて、ビルドするところまで出来ます。いやー、すげーわ。

プログラマ寄りの視点から見ると、なんでそこまでやるかね?って感じです。
利用者から見ると、楽すぎて涙がちょちょ切れます。ありがたいです。

同じ要領でクロスコンパイル環境も構築できないかなあ。
まあDebianならやっちゃってそうな気もしますけどね、私が無知なためわかりません。地味にやります。

編集者:すずき(2006/12/17 21:55)

コメント一覧

  • kawasakiさん(2006/12/18 02:54)
    automake / autoconf の環境であれば、環境変数(ccとか)を設定して、./configure --build=powerpc-unknown-linux-gnu --host=i686-pc-none とかすればいい気がします。
  • すずきさん(2006/12/18 04:35)
    基本はおっしゃる通りなんですが、難儀なものでなかなかコンパイル通らないんですよ…。
open/close この記事にコメントする



2006年12月15日

@gamesの謎

昨日紹介したクリックスを提供している @games ですが、IEじゃないとゲームのページにたどり着けない変な仕組みになっています。
ゲームの置いてあるページに直に飛ぶと行けるんですけどね…。

直リンの謎

@gamesのゲームが置いてあるページは、以下のように直に打てばIE以外の人でもいける。

http://www.atgames.jp/atgames/html/game/flash/0000.html

最後の4桁の数字.htmlとなっている部分を変えるとゲームが切り替わる。
今のところ17種類あるみたい。

番号ゲーム名 備考
0001ウォーターボム ひたすらかわす
0002キュートショット ゴルフみたいなゲーム
0003チューチューパニック
0004アクアミッション イライラ棒
0005アニマルクエスト
0006消毒ナースナオミちゃん連打系
0007スーパーリフティング
0008土用丑
0009CLICK'S
0010アイサツワールド タイピングゲーム
0011ぷちぷち さめがめ
0012電算マニア 暗算ゲーム
0013フルーツショップ
0014フォレストストーリー |_| の形に繋げない。バグ?
0015セルフィスタジアム いわゆる野球盤
0016ポイ
0017ナンバリング 数独

しかし0000や0018以上にするとサーブレットがエラーで落ちるってのはどうなんだ。
Error processing the templateと出る。しかし Not found ではないらしい。

編集者:すずき(2006/12/16 02:04)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年12月14日

徹夜できません

徹夜したら次の日は眠いのは当たり前なんですけど、だんだん耐久力がなくなっているらしくて、最近は意識が飛ぶように眠くなります。
シス情セミナーでも寝てたし、研究室でも寝ていた。いかんな。

何歳になってもゲーム

今日、9Fの研究室ではクリックスというゲームが大流行です。自分もやってみたんですが、シンプルながらなかなか面白いです。暇つぶしに最適。
ちょっと操作しづらいのが難点です。しかも一番基本である、数字の増減がわかりづらいから困る。一回間違うと戻せないからさらに困る。

今日もやってみたんですけどLv.74(36万点)でした。30万点超えた辺りから、5秒悩んだら終了してしまう。この段階での操作ミスは死を意味します。

アイテムの存在を今日知ったので使ってみたんですが、序盤はブロックシャッフルが効きますね。
後半はブロックをメチャクチャにされるとかえってわからなくなって死んだので、連鎖が起きるまでランダム消しを連打するか、あるいは操作ミスならヒビ直し -> タイム回復のコンボかな?どちらにせよアイテムはすぐ無くなるので、さほど点数は伸びませんでした…。

編集者:すずき(2006/12/15 23:05)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年12月13日

WindowsとUnicode

hdk氏とファイル名にUnicodeの制御文字を入れて遊んでいたら、案外面白い絵が撮れました。貼ろうと思ったんですが、既にhdk氏のページにあるので割愛です。
ステータスバー、ウインドウのタイトル、パスを表示している部分など全て同様におかしくなります。


パス名もへんてこになる(クリックで拡大)

ちなみにコマンドプロンプトなどから触れなくなります(Tabで補完するとなぜか使える)が、ショートファイルネームを使って叩けば平気みたいね。

さらに

エクスプローラでは長いファイル名は折り返されて表示されます。その処理が原因なのかUnicodeの制御文字が入っていると表示がおかしくなります。


見た目は普通(?)のファイル名(クリックで拡大)


折り返されると変(クリックで拡大)

編集者:すずき(2006/12/14 09:43)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年12月12日

微妙な改造

RSSの更新日時を出すようにしました。といっても、先頭のdc:dateだけです。記事の更新日時は、記事に示した日付の正午に固定しました。
やろうと思えばmixiのように過去のエントリは書けない腐れ仕様にして、記事を作成した時刻を出せます。でも不便だし細かい時刻を出したところでさほど意味を感じないので割愛です。

RSSの日時なんざどうでも良くて、実はHEADにLast-Modifiedを出力しようと企んでる途中なわけですよ。

何のためかと言うとアンテナに優しいサイトを目指すためです。
身近にはhdk氏の Asahina antenna in Univ. of Tsukuba(ばなな(※))があります。

って、このサイト入ってないんだけどね。
確か最初に入れないでくれーって言った記憶がある。なんでだっけなあ…?Last-Modified出すようになったら入れてもらおうかな。と都合の良いことを考え中。

アーンテーナの神殿

それはさておきhdk氏にアンテナってどうやって更新をチェックするのか聞いてみたら、基本的にはHEADらしいです。ということはHEADでだんまりなページはやりづらい(「ばなな」は他の方法でも取るので平気?)でしょうね。
あとContent-Lengthも出そうと思っています。けど、計算間違って変なことになりそうです。

そういやアンテナはRSSリーダーに押されているのか、あまり見なくなりました。これもご時世か。

(※)今は「つくばさん」です。タイトルに注目。

編集者:すずき(2006/12/14 08:04)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年12月11日

うでの肉

セイコーマートの焼きうどんが好きで結構買って食べてるんですが、材料に「豚うで肉」って書いてあって、うで?なんじゃそれ?って思った。
調べてみると「良く運動する部位なので、脂肪分が少なくヘルシー」とのこと。要は安くて固い肉ね。わかったナリ。


うで肉使ってます

うで肉の情報を探していたら豚の腕の骨とうで肉を分離する専用の機械なんかも見つかった。
肩甲骨は手でやっても面倒くさそうな形しているのできっと需要があるんだろう。

編集者:すずき(2006/12/12 18:39)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年12月10日

ペットの定義

人間はペットを飼いますが、人間以外の動物はペットを飼わないのでしょうか?
組み合わせで「人 - 犬」と表すとすると、例えば「熊 - 犬」とかさ。

問題を考えるに当たって、まずペットとは何か?を定義しましょう。飼う理由は、癒される、言うこと聞く、など無数にあります。共通して言えるのは「近くに居てためになる」ってことです。

それは「共生」でしょうか?
共生の例としては、アリとアブラムシなんてのが挙げられるのですが、ペットとは呼びません。ペットと言うと片方が絶対的な支配者であるように感じます。

では「寄生」でしょうか?
寄生とは片方が利益を得るのみ、もう一方は害を受けるのみ(宿主)という関係を指すので、それは言い過ぎです。

つまりどっちでもありません。てけとーにまとめるとこんな感じ。
(いらっしゃーい)共生 -- ペット -- 寄生(うぜえ)
♪なくてもいいけど、少しはあったほうが…そんなの微妙すぎ〜♪(わかる人はわかる表現)

ペットの意義

さて、生きるか死ぬかのシビアな環境を考えると、ペットより共生する生物の方がWin-Winの関係を築けるため圧倒的に有利です。またペットは寄生に徹しておらず簡単に排除されるため、排除してもすがりついてくる寄生する生物に対して、生存能力が劣ります。
まとめるとペットはどちらと比べても生存に関して有利な点がない半端な存在です。

生存競争という観点ではペットという関係は非効率的で不利であり、シビアな自然界ではそんな関係は排除され、存在し得ないんです。

熊が犬を飼わないのはそういう理由ですね。お互いに良いことがあまりないんです。
ペットとは、生きるのにあくせくしなくなった人間の象徴なのでしょう。

以上、根拠無しの妄想のため、それっぽく見えれば成功。

編集者:すずき(2006/12/11 19:37)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年12月9日

すごいねぐせ

雨降ってたから引き籠もってたけど、家が寒くて不快です。昼なのに室温10度って何さ。温度計が死んでるのか?
起きたら髪にエキサイティングな寝癖が付いていたが、面倒くさいからそのまま買い物に行った。

今日、変なハガキが発掘されました。開けてみたら明日の茨城県議会議員選挙のハガキじゃないか。もう無くなったもんだと思ってたんですが、見つかりました。
明日はついでに床屋行かないと、もーボサボサさ。

編集者:すずき(2006/12/10 05:46)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年12月8日

リチウム

ドコモの三菱製携帯で充電池が爆発したみたいですが、ソニーのPCで大きく騒がれたおかげか、ばれてからごねずにすぐ回収しましたね。
ニュースに寄れば原因は電池パックに衝撃を与えたためです。内部の絶縁シートが破損してショートし、異常発熱して爆発するのだとか。

記事には餅みたいになった電池パックの写真だけが載っていましたが、電池パックだけではイマイチ説得力に欠けます。ぜひその電池パックが入っていた携帯も載せて欲しかったです。

例えば、本体が綺麗なら、電池が異常に脆くて壊れた(欠陥)と言えるし、逆に本体がボロボロなら、頻繁に落としたり投げ飛ばしたりして(※)壊れただけで、自業自得と言えるでしょう。

三菱が回収に乗り切ったってことは、前者である可能性が高いだろう、とは推測できますけどね。
何社もマスコミがあってたくさん記者が居るんだから、携帯本体も載せればもっとインパクトあるぜ!ってことくらい気づくだろうに。なぜにどうでも良いことしか書かないのか…。

それはさておき、この事件を受けて三洋は耐衝撃対策として、
「リチウムイオン電池の新製品。1mの高さから大理石の床に落としても壊れません!さらに耐荷重100kgfです!」
なんて製品を出したら面白いんじゃないかなあ。

なに、どこかで見たような宣伝文句だって?気のせい気のせい。

(※)携帯電話の説明書には「過度な衝撃を加えないでください、電池が損傷し破裂の危険性があります。」という注意書きがある。

編集者:すずき(2006/12/09 18:30)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2006年12月7日

ミニバンってなに

貨物車の代表的な形状として「ミニバン」と「ステーションワゴン」と「ワンボックス」の三つがあります。
ワンボックスはボンネットのない長方形の車なのでわかりやすいとしても、ミニバンとステーションワゴンの違いって何?

てなことを新型のCMを見る度に思っていたのですが、この度疑問が氷解しました。

両者に共通しているのはボンネットがあって、居住空間(あるいは荷物スペース)が続いていることです。そのためどちらも形は極めて似ています。
しかし実にシンプルで決定的な違いがありました。

ミニバン
3列シート
ステーションワゴン
2列シート

言われてみるとそうです。気づかなかったな。
それ以外は特に決まりはなさそうですが、他にもご存じの方は教えてくださいませ。

編集者:すずき(2006/12/08 16:08)

コメント一覧

  • hdkさん(2006/12/08 19:30)
    つ Wikipedia
  • すずきさん(2006/12/09 05:52)
    読んだー。
    あまりはっきりとした違いはないみたいですねえ。
open/close この記事にコメントする



2006年12月6日

良さそうなノート

ここ最近、ナイスな軽量ノートがぞくぞく出てきたのでご紹介。

Panasonicの Let's Note W5 は、やはり抜群のバッテリー駆動時間が売りでしょう。1スピンドルタイプのT5、W5/T5より一回り小さいR5というタイプもあります。
ただLet's Noteシリーズ全般に言えるのですが、キーボードのキーが変な形(横長の長方形)なのが嫌ですね。それさえなければ良いノートなんですがね。

Sonyの VAIO type G は1スピンドルにすればなんと900gを切る超軽量設計が魅力的(2スピンドルにもできる)です。Vistaを載せるとしたらグラフィックがややパワー不足かもしれないけど、ノートだからどうでも良いね。
個人的にはデコボコしていないデザインに惹かれます。それでいて強度があるというのだから驚きですね。

NECの新型VersaPro UltraLite は今までの軽さそのままに2スピンドル、Core Duo採用とかなりパワーアップしています。
ただファンが付いてしまったため、うるさそうなのが難点です。それ以外は文句なし。

卒業したら研究室のノートは返すことになるので、その前に買いたいなあ。
さてどれがいいでしょうね…?

普遍的ビフォーアフター

大下さんちに以前使っていた無線LANアクセスポイントを設置しました。こたつでネット環境、への第一歩です。
しかし大下邸にはノートPCがないので、入学時に買った重いA4ノートPCを置いといた。今までのルータの設定を引き継ぎ、ノートのKnoppixから接続を確認して設定終了。

ルータは何度かリセットしないと設定が反映されなかったり、同じ設定なのに繋がったり繋がらなかったりと、変な感じになっていた。やはりどこか壊れているのかもしれない。

しかしKnoppixをそのまま使うわけにも行かないし、OSは何を入れようか。とりあえず以前使ってたWindows 2000でいいか。

編集者:すずき(2006/12/07 05:06)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2006年12月19日 >>> 2006年12月6日
link もっと後

管理用メニュー

link 記事を新規作成

<2006>
<<<12>>>
-----12
3456789
10111213141516
17181920212223
24252627282930
31------

最近のコメント20件

  • link 21年9月20日
    すずきさん (11/19 01:04)
    「It was my pleasure.」
  • link 21年9月20日
    whtさん (11/17 23:41)
    「This blog solves my ...」
  • link 24年10月1日
    すずきさん (10/06 03:41)
    「xrdpで十分動作しているので、Wayl...」
  • link 24年10月1日
    hdkさん (10/03 19:05)
    「GNOMEをお使いでしたら今はWayla...」
  • link 24年10月1日
    すずきさん (10/03 10:12)
    「私は逆にVNCサーバーに繋ぐ使い方をした...」
  • link 24年10月1日
    hdkさん (10/03 08:30)
    「おー、面白いですね。xrdpはすでに立ち...」
  • link 14年6月13日
    2048player...さん (09/26 01:04)
    「最後に、この式を出すのに紙4枚(A4)も...」
  • link 14年6月13日
    2048playerさん (09/26 01:00)
    「今のところ最も簡略化した式です。\n--...」
  • link 14年6月13日
    2048playerさん (09/16 01:00)
    「返信ありがとうございます。\nコメントが...」
  • link 14年6月13日
    すずきさん (09/12 21:19)
    「コメントありがとうございます。同じ結果に...」
  • link 14年6月13日
    2048playerさん (09/08 17:30)
    「私も2048の最高スコアを求めたのですが...」
  • link 14年6月13日
    2048さん (09/08 17:16)
    「私も2048の最高スコアを求めたのですが...」
  • link 14年6月13日
    2048playerさん (09/08 16:10)
    「私も2048の最高スコアを求めたのですが...」
  • link 02年8月4日
    lxbfYeaaさん (07/12 10:11)
    「555」
  • link 24年6月17日
    すずきさん (06/23 00:12)
    「ありがとうございます。バルコニーではない...」
  • link 24年6月17日
    hdkさん (06/22 22:08)
    「GPSの最初の同期を取る時は見晴らしのい...」
  • link 24年5月16日
    すずきさん (05/21 11:41)
    「あー、確かにdpkg-reconfigu...」
  • link 24年5月16日
    hdkさん (05/21 08:55)
    「システム全体のlocale設定はDebi...」
  • link 24年5月17日
    すずきさん (05/20 13:16)
    「そうですねえ、普通はStandardなの...」
  • link 24年5月17日
    hdkさん (05/19 07:45)
    「なるほど、そういうことなんですね。Exc...」

最近の記事3件

  • link 23年4月10日
    すずき (11/15 23:48)
    「[Linux - まとめリンク] 目次: Linux関係の深いまとめリンク。目次: RISC-V目次: ROCK64/ROCK...」
  • link 24年11月6日
    すずき (11/15 23:47)
    「[Ubuntu 24.04 LTS on ThinkPad X1 Carbon Gen 12] 目次: Linux会社ではTh...」
  • link 24年11月11日
    すずき (11/15 23:26)
    「[Pythonのテストフレームワーク] 目次: Python最近Pythonを触ることが増えたのでテストについて調べようと思い...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDFファイル RSS 1.0

最終更新: 11/19 01:04