コグノスケ


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

link もっと前
2007年1月6日 >>> 2006年12月10日
link もっと後

2007年1月6日

帰つくば

帰ってきました。北海道からつくばに着くまでずっと雨が降っていたのに、つくばでは奇跡的に雨に降られませんでした。
これはチャンス!と、研究室まで行って年末から放置していた自転車に乗って帰りました。

そのとき学内バスの左回りに間違って乗って、どこで降りて良いのかよくわからず高い金払う羽目になった。それは良いんだけども、6年間暮らして未だにバスが良くわかってないという事実に気づいたのは悲しかったね。

新千歳空港にて

時間は前後しますが、北海道の新千歳空港にあるレストランで、変わったシステムを見かけたので思わず写真を撮ってしまった。

このレストランでは店員が注文取りに来ないので、自分でレジに行って注文します。するとこんなタグを渡されます。


レジで渡されるタグ(ランプは点滅する)

店の人は料理を待っている人がどのテーブルにいるかわからないため、その情報を知らせるものだと思われます。

テーブルにはタグを置く位置が示してあります。タグを2個おいても大丈夫でした。重ねても平気なのか確かめれば良かった。


テーブルにある印


タグを置くと青く光る(離すと点滅)

テーブルの裏には変な機械がくっついていて、恐らくこいつが中央のシステムに情報を飛ばしているのだと思います。


テーブルの裏側

店員の労力削減のためのシステムとしては、テーブルにディスプレイが設置されていてそこから注文するというものがあります。それと比較しても、このタグシステムはより廉価(たぶん)に同様の労力削減を達成できる良いシステムだと思います。

このシステムを有効活用するには、レジに長蛇の列ができないような工夫が必要ですけどね。そこは販売店の努力でしょう。

編集者:すずき(2007/01/08 01:56)

コメント一覧

  • hdkさん(2007/01/08 11:46)
    学内循環はどっち回りに乗っても料金同じな希ガス
  • すずきさん(2007/01/09 02:36)
    ΩΩΩ<な、なんだってーーーーーーーーーーーー!!!!
    知らなかった。どんどん料金が上がっていくのを見て、ひよってトレモントの所で降りて歩いてしまったよ。
open/close この記事にコメントする



2007年1月5日

鏡像の謎

本日記で去年の1月13日に書いた「鏡像を見るとなぜ左右反転に感じるか?」について書きました。

本日、Yさんから参考となりそうな記事を教えていただいたので、再び考察してみたいと思います。

問題点

まず復習をしたいと思います。日記のポイントを整理してみると、

  • 鏡の像は本来、前後反転
  • 人間は前後の軸を揃えて考えたがる
  • その結果、人は左右反転と感じる

の3点に集約できると思います。
1番目は図を描いて考えればわかると思います。去年私がわからなかったのは 2番目と3番目です。つまり、

  1. 人間はなぜ前後を揃えて考えるのか?
  2. その際、左右反転に感じるが、上下反転には感じないのはなぜか?

以上の二点と言えます。

記事の中身

さて、冒頭でご紹介した新聞記事ではこの二点をどう説明しているでしょうか?

まず1. については、

「人」だから、思わず、見る位置が鏡の中に引き込まれちゃったのね。 (読みづらいのでルビは削除)

とあります。え?そんな説明でいいの?って気はしますが…まあいいとしましょう。もっと大事なのは2. なのですから。

ところが、もっとも大事な2. の理由を探してみるともっと適当で、

鏡の前の人にとっても“鏡の中の人”にとっても、上下は同じ。だから…

とあります。「なぜ上下が同じなのか?」という点が大事なのに、完全にスルーされていて全く説明がありません。

結局、私の疑問は一つも解決されません。朝日新聞も子供向けだからって適当にごまかすくらいなら、書かなきゃいいのに…ひどいな。

編集者:すずき(2007/01/05 22:19)

コメント一覧

  • hdkさん(2007/01/08 16:23)
    (・∀・)つ http://ja.wikipedia.org/wiki/%E5%89%8D%E5%BE%8C
  • すずきさん(2007/01/09 02:39)
    読みましたが、やはり、なぜ上下が逆にならないのかがわからないです。
  • hdkさん(2007/01/09 02:54)
    「目の前でこちらを向いている人と自分とでは左右が反転」しますよね? 鏡のかわりに自分の複製がこっち向いて立ってると思えば、確かに鏡の中の自分は左右反転ということになるわけです。だから、自分自身を映す場合は常に左右反転です。
  • すずきさん(2007/01/09 03:53)
    ご解説ありがとうございます。

    鏡に映っているのは自分(あるいは人間である)という認識をした上で、上下を判定していることになりますね。
    すると少なくとも、人間は重力の方向などで上下を決めているのではないという予想になりますが、いかがでしょう?
open/close この記事にコメントする



2007年1月4日

クイズ、ドレミファドン

昼すぎにやっていたドレミファドンのイントロクイズが激しかった。毎回あんな調子だったっけ?

どの問題もほんの一瞬しか鳴らないうちに誰かが回答ボタンを押してしまうんです。
ジ…♪ピンポーン!
みたいな。これはイントロがかなり特徴的でないと全然わからんでしょう。

回答者が全員芸能人のクイズ番組って、クイズを正しく答えるより珍回答などのエンターテイメント性を重視しますよね。そういう番組って、視聴者を無意識のうちに参加させて「あいつらこんなのもわからないなんて、馬鹿だなあ。俺のほうがスゴい!」とか思わせて、引き込む作りになっていると思うんです。

なのに視聴者を置いてけぼりの難易度にするのは、方針として外れじゃないか?あまりにわからなくて見ているこっちが若干寂しくなるじゃないか…。

編集者:すずき(2007/01/05 02:37)

コメント一覧

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



2007年1月3日

さりげなく

Pukiwikiのトップページに張っていたマッププラグインへのリンクが間違っていました。親切な誰かがいつのまにか修正してくれて気づきました。ありがとうございます。

ログ見たらだいたい誰かわかったw

編集者:すずき(2007/01/04 21:51)

コメント一覧

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



2007年1月2日

積ジャンプ

今年の夏から半年分のジャンプを全部消費しました。前回は飛ばし飛ばしに読んでいたのですが、今回は全部読んだので相当時間かかりました。
毎年同じこと書いているような気がしますけど、ジャンプの連載打ち切りは強引過ぎて笑えてきますね。

特に今年はスポーツ漫画が鬼門らしくて、新連載が2連発で打ち切られました。Hand's(ハンドボール漫画、06年44号〜07年1号)は10週、OVERTIME(野球漫画、06年33号〜06年52号)も19週であっさり終了。

スポーツ漫画で成功しているのはアイシールド21(アメフト漫画、02年34号〜連載中)だけ。P2(卓球漫画、06年43号〜連載中)は個人的にはそれほど嫌いじゃないけどね、だんだん下に落ちていっているからあやしいね。

え、テニス?あれは腐った女子向けのギャグ漫画でしょ。

そういやエム×ゼロとTo Loveる -とらぶる- は思い切り被ってて食い合うかと思ったら全然勢いが衰えません。こういう路線って二個要るのか?あれば何でもOKなら、全部こういうので埋めればいいんじゃないですか?

編集者:すずき(2007/01/03 00:38)

コメント一覧

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



2007年1月1日

あけまして

おめでとうございます。今年もよろしくお願いいたします。

今年が皆様にとって、飛躍の年となることをお祈りしております。

編集者:すずき(2007/01/01 00:53)

コメント一覧

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



2006年12月31日

寝正月

ならぬ寝大晦日です。
昨日、朝まで起きていたので今日は爆睡していました。

夜中

深夜12時前後から、ドコモは3時間、KDDIは5時間、SBMは3時間程度、発信規制がかかるそうですが、うちの街はたぶん繁華街の範疇に入っていないので、電話もメールも普通に使えました…。
嬉しいような悲しいような。

編集者:すずき(2007/01/01 00:50)

コメント一覧

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



2006年12月30日

同窓会

高校時代のクラスメートが一同に集まる同窓会がありました。
30人近く集まったのが驚愕だったのに、二次会に一次会の参加者がほぼ全員来るという奇跡。幹事のT氏とT氏の力ですね。

同窓会では、卒業以来会ってない懐かしい面々がたくさん。

三次会の途中で終電が行っちゃったので、そのあとは友達の家になだれ込んで朝まで話し込みました。
話しているうちに高校時代の記憶が結構よみがえりました。

高校時代

あんなに楽しかったのに全然覚えてなくてショックでしたが、良く考えたらもう6年も前なんですね。詳細に覚えてないのも当然のことです。

まじめに通ってたつもりだったんですけど、話しているうちに色々思い出しました。学生って先生をかなりなめてた気がします。
つまらん授業で寝るためのクッション買って持ってくるとか、廊下でテニス(体育館あるのに)とか先生からしたら相当むかつくだろうなあ。

さすがに不良校じゃないし、僕らも馬鹿じゃなかったので、法に触れるような愚かなこと(窓割ったり(器物破損)車壊したり)はなかったけどね…。

編集者:すずき(2006/12/31 17:28)

コメント一覧

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



2006年12月29日

映画大奥

家族で映画「大奥」を見に行きました。
妹曰く、ドラマは、世継ぎ争いに端を発した女同士のどろどろした争いが面白かったとのことです。

しかし映画は妙に色恋沙汰を強調しすぎて、全然面白くなかったです。せっかくの超豪華キャストが…泣いてますよ。

ドラマ大奥

ドラマ(今日放送していたスペシャルのこと)の方も見たのですが、何これ、びっくりするほど面白くねえ。最後のほうなんか完全に映画の番宣への繋ぎじゃん。
よっぽどのものでない限り駄作なんて思わないのですが、これは駄作だ!

映画、ドラマ(映画の番宣)の順で見てしまったのも大失敗でした。ただでさえつまらないのにもう最悪です。

編集者:すずき(2006/12/30 03:15)

コメント一覧

  • おおしたさん(2006/12/30 16:16)
    大奥の面白さは江戸城(内部調度品)のセットと
    女の人の衣装だと思っています。
    といっても大奥ちょびっとしか見たこと無いですけど。
  • すずきさん(2006/12/31 17:10)
    映画とこの日のスペシャルドラマを見る限り、そのとおりだと思います。
    映画では、女優一人一人にスタイリストが付くくらい、頻繁に変わります。
open/close この記事にコメントする



2006年12月28日

買い物

コートと、こっちで着る服と、靴を買いました。

ついにダッフルとお別れです。

編集者:すずき(2006/12/29 01:09)

コメント一覧

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



2006年12月27日

帰省

北海道に帰省しました。16:00の便(13:40のTXに乗らないと厳しい)なのに、起きたのは13:00でした。しかもご飯が保温にしっぱなし、台所には洗い物が残ってる。

さすがに2週間放置したら絶対カビ生えて液化する!って思ったので、超スピードで洗ってダッシュで出かけました。
で、アパートの駐輪場に下りたら、ぬおぉぉおお、自転車がねえー!

…って、昨日いけじに送ってもらったので自転車は研究棟だった。仕方ないから平砂のバス停まで歩きました。
飛行機には間に合いました。

とにかくバタバタしすぎな一日でした。

in北海道

なぜか深夜アニメで武装練金やってるよ。ムーンフェイスなつかしー!

編集者:すずき(2006/12/28 01:42)

コメント一覧

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



2006年12月26日

大雨

雨強すぎる。なんで今日だけ?出かける気が失せるよ。

ゼミ

研究室では冬休みとかそんなのは関係ありません。今日は今年最後のゼミがありました。
雨さえ、この雨さえなければ清々しく参加できるのにねえ。

眠い

いけじ達と小の村にご飯食べに行きました。
途中で眠くなって寝てしまった。すんません。やっぱ徹夜は良くないね。

編集者:すずき(2006/12/28 01:19)

コメント一覧

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



2006年12月25日

おもろい

ちょっと誰でも良いからガンダム撮ってYO!!!!

久々に爆笑した。

ブラウザかエージェントか

カウンタの集計機能で、ブラウザなどが渡してくるUser-Agentの値を「ブラウザ」って呼んだり「エージェント」って呼んだり、表記が適当なまま放置しておりました。

何を今更って感じですが、今日hdk氏にツッコまれて思い出したので、直しときました。
修正の内容ですが、サイトを見に来るのはブラウザばかりではないなと思ったので、エージェントって方に統一しておきました。

編集者:すずき(2006/12/26 00:09)

コメント一覧

  • みっきぃさん(2006/12/26 05:26)
    おもしろいよね〜。
    ねずみさんの研究室内で爆笑さ!
    >ガンダム撮って
open/close この記事にコメントする



2006年12月24日

クリスマス

大下さんからマフラーと手袋をいただきました。
手袋はちょうど買おうと思っていたところだったので非常にありがたいです。

あとはコートだな。

編集者:すずき(2006/12/25 15:49)

コメント一覧

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



2006年12月23日

ジョーと愉快な(略

日付的には昨日ですが、時間的には今日なのでこっちに書きます。

再就職の決まった(?)じょーを迎えて北脇邸で飲み会をしました。
ストーブが壊れているとかで寒い寒い。つくばの夜ってなんでこんな冷えるんですかね。家の中が寒いのはうちも同じですけどね…。

じょーからドイツワインのうんちくが聞けてためになった。じょーいわく、フランスは産地しか書いて無くて素人には理解不能ですが、ドイツワインはラベルに情報が書いてあって、分類も割とすっきりしているからわかりやすいみたいです。

もうすぐクリスマス

加藤先生のお宅での歓迎会、兼クリスマスパーティに参加しました。
毎年そうなんだけど、料理うめー!!種類が豊富すぎて全部食えんかったのが残念です。

福島からはるばる小磯氏も来てくれてすげーと思った。

解散後、加藤先生のお宅の前で縄跳びしたんですが、先生の娘さんが超うまかった。それだけでなく加藤先生も二重跳びを軽くこなしていました。縄跳び得意なんでしょうかね?

二次会

Cybex STEPで卓球しました。2時間くらいやったら足が痛くなってきたので、カラオケ組と合流して、4時間遊びきりました。

11人という大人数で押しかけて、カード作るとか作らないとか、お買い得なパック料金を使う使わない、をごちゃごちゃに混ぜて注文したのがまず間違いの始まりでした。

遊ぶ物を変更するときは伝票をカウンターに持って行くんですが、誰か言いに行かなかったみたいで、伝票が余ってしまいました。そのせいで店の人がかなり混乱していました。

20分くらいすったもんだしたあげく、我々に「パックのお客様は何人でしたか?」とか聞いたりと、かなり混乱していたようです。最後はめんどくさくなったのか、会計金額だけ合ってる内容めちゃくちゃな伝票を切って解決(?)していました。いい加減な人だなw

編集者:すずき(2006/12/24 05:17)

コメント一覧

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



2006年12月22日

まねきTV

東京のTV番組をネット経由で視聴できるサービスまねきTVが勝訴したそうです。

おわ、いつのまにネット配信OKになった??って一瞬びっくりしたんですが、違いました。まぎらわしい書き方すると誤解を招きますよ朝日新聞さん。

要は「自分で買った」ソニーのロケーションフリーテレビの片割れ(ベースステーションの方)を、まねきTVのビルに置くだけです。東京に借りた部屋にロケーションフリーのベースステーション置いて、実家からアクセスするのとなんら変わりません。

マスゴミ各社は、ネット配信によって今まで築いてきた電波の牙城が崩れる、と恐れるあまり、反応過剰になってるんでしょうか。

気になるのは

それよりこの投げやりなサービス、別の点の方が気になります。
NHKの料金はどうなるの?って話です。規約には会社では払わねーから、お前ら勝手に払え、って書いてあります。

NHKって会社と世帯間で契約するものだった気がするんですが、規約にある書き方だと、家族がばらばらに住んでいる場合は、地元NHKと契約するときと同じように、各世帯で払うのかな?その辺工夫できたらもっと良さそうなのになあ。

編集者:すずき(2006/12/22 22:24)

コメント一覧

  • @ふふっ。さん(2006/12/24 00:53)
    NHKの受信料は、支払いの口座が同一であれば、別居の家族の受信料が割引になる制度があります。
  • すずきさん(2006/12/24 04:32)
    なんとそんな制度が…知らないで6年間払っちゃったよ。
open/close この記事にコメントする



2006年12月21日

早起きは

偶然早起きしたので、たまには早目に研究室に行くか、って思って行ったら、ちょうどゼミの時間だったらしい。知らなかった。これが三文の得という奴か。

ブラウザアップデート

ブラウザをSeaMonkey 1.1bにアップデートしました。サムネイル機能が良い感じです。


タブをポイントするとサムネイルが出る

あと個人的にはブックマークメニューで右クリックすると、編集メニューが出るようになったのが、かなりGood です。


右クリックで編集できる

Visual Studioアップデート

Visual Studio 2005 SP1が出ていたので適用しました。なんと441MBもあるんですね。ほとんど入れ替えてるんじゃないか?ってくらいの容量です。
ノートPCにインストールしたら、HDDが遅すぎなせいか2時間もかかりました。

一番腹立ったのは「残り時間0秒」って出てから、10分以上待たされたことですね…。嘘もいいところだ。

編集者:すずき(2006/12/21 22:04)

コメント一覧

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



2006年12月20日

らいてふ

Thunderbird様にバージョンアップしたから入れ替えろや、ゴルァ!って脅され、言われるがままに入れ替えたら起動しなくなりました。

A previous install did not complete correctly. Finishing install.

何度起動しても、これが出るばかり。
そこで私の取った手順は、まず設定ファイルをバックアップして、Thunderbirdのバイナリがあるディレクトリを葬ってから再インストールしました。起動を確認したら、一旦終了させて、バックアップから設定を書き戻してやります。これで元通りです。

で、結局この現象はなんだったのか調べたら、mozdev.orgのFAQ に書いてありました。それによればThunderbirdのインストールディレクトリにあるxpicleanup.datを消せばいいらしいです。

FAQは親切で結構ですが、エラーメッセージは典型的な意味不明のダメメッセージですね。まあ、人のこと言えませんけどね。

また修正

コメントで \ を打つと出力される文がおかしくなっていたので、直しました。

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

コメント一覧

  • すずきさん(2006/12/20 21:17)
    コメント修正されたかな?
    \n\r
    テストです。
open/close この記事にコメントする



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 この記事にコメントする



link もっと前
2007年1月6日 >>> 2006年12月10日
link もっと後

管理用メニュー

link 記事を新規作成

<2007>
<<<01>>>
-123456
78910111213
14151617181920
21222324252627
28293031---

最近のコメント5件

  • 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なの...」

最近の記事3件

  • link 24年6月25日
    すずき (06/29 16:02)
    「[何もない組み込み環境でDOOMを動かす - その2] DOOMのクローン実装prboom2を組み込み環境に移植する話です。前...」
  • link 24年6月24日
    すずき (06/29 14:22)
    「[何もない組み込み環境でDOOMを動かす - その1] DOOMというFPS(First Person Shooter、一人称...」
  • link 24年6月21日
    すずき (06/29 13:46)
    「[GitHubの2FA手法としてSMSが非推奨となった] タイトルのとおりなのですがGitHubアカウントの2FA(二要素認証...」
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

最終更新: 06/29 16:02