コグノスケ


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

link もっと前
2008年2月2日 >>> 2008年1月20日
link もっと後

2008年2月2日

スーキヤーキ

友人の誘いに乗って、京都の三嶋亭にすき焼きを食べに行きました。店の雰囲気に対して、ジーパン+トレーナーという僕らの服装が激しく場違いでした。あやうく周囲の視線で針のむしろになるところでした。個室で良かったと思います。

一食で一ヶ月の食費の半分くらいが吹っ飛びました。しかし…、うまかった…!

ジンジャー

食事を食べた後は京都の町をぶらぶら。京都のコンビニはみんな地味な色にしていて面白いです。街並みとの調和ってやつでしょうか。

近くの八坂神社にお参りしました。門の修復工事が終わっていたので、写真を撮りました。柱の朱が鮮やかです。今はまだ直したてで綺麗すぎるきらいがありますけどしばらくしたら良い味が出るでしょう。


八坂神社の正門前

神社にお参りしてお土産買った後は、パフェを食いました。男五人でな…、なんか最近こんなのばっかりだw

編集者:すずき(2008/02/08 02:34)

コメント一覧

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



2008年2月1日

そりゃないぜ

会社からの帰り道、電車の到着時刻を知らせる電光掲示板を見るとなんかおかしい。先に来るはずの8分が、16分の電車の下に表示されています。普通は到着時刻順に並ぶはずです。


時刻順と逆に表示されている

そのまましばらく電光掲示板を見ていると、JR西日本恒例の赤い文字(電車の遅れ時間を示す)が。またですか、もう勘弁してください。


どんどん遅れが増えていく

ああ、これはだめだって思ってたら「8分の普通電車は16分より後になる」ってアナウンスが入りました。電光掲示板の順番が入れ替わってる=先行(8分の電車)は来ませんよ、って予告なんですねっ…て、わかりづらいよ。

最終的には10分遅れになって、時間順で正しい順番になりました。結局ホームで20分も待っちゃったYO!遅れの原因は、小動物を跳ね飛ばしたせいらしいです。へぇー。

編集者:すずき(2008/02/08 02:23)

コメント一覧

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



2008年1月31日

long longの罠

目次: C言語とlibc

突然printfの動きがおかしくなって、引数で与えた数値を表示したりしなかったりするようになりました。

で、調べてみるとこーんなプログラムになってたわけです。


#include <stdio.h>

int main(int argc, char *argv[])
{
  long long int a;
  int b, c;

  a = 0x1234567887654321LL;
  b = 200;
  c = 300;
  printf("a:%d, %s, b:%d, c:%d \n", a, "strings", b, c);

  return 0;
}

実行してみると

$ gcc a.c
$ ./a.out
Segmentation fault

見事に落ちました。

このプログラムのまずいところは変数aは8バイト(long long int型)あるのに、printfには %d書式(signed int型の指定)と指示しているため、printf側が4バイトしか見ない、ってところです。残った4バイトは次の %s指令のデータと見なされて、その結果変なアドレスを見に行ってプロセスが死にます。

なので、この場合は %dじゃなくて %lldと書いてlong long signed int型であることを指定すべきです。正しく動いたときの結果はこんな感じ。

$ ./a.out
a:1311768467139281697, strings, b:200, c:300

整数だからといってなんでもかんでも %dにしちゃだめですよ、って教訓ですな。

$ gcc --version
gcc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ gcc -Wall a.c
a.c: In function 'main':
a.c:12: warning: format '%d' expects type 'int', but argument 2 has type 'long long int'

ちなみにgccなら -Wallオプションを指定すれば、printfの書式指定が間違っていたときに教えてくれます。

the Typedef Hell!!

もちろん好きこのんでこんな状態を作ったわけではありませんので、お間違いなく…。

この問題に出会うきっかけとなったプログラムは、言うなれば「typedef地獄」でしょうか。ぱっと見ても、整数なのか浮動小数点数なのか、はたまた構造体なのか…型が全くわかりません。何よりひどいのはtypedefが連鎖しまくっていることでしょうか。

例えばAライブラリのA_TypeがBライブラリのB_Typeのエイリアスだったとして、そのB_TypeがさらにCライブラリのC_Typeのエイリアスで、それがさらにDの…というように、ひねりのないtypedefが延々と続きます。

そのくせ最後まで辿ってみると無条件でtypedef int X_Type;(単なるint)とかいうオチが多いので、ウザいことこの上ない。

やがて調べるのが面倒くさくなって、どうせlongかintだろって思ってなめてたら、long long intのエイリアスがいくつか混ざっていて、警告オプション -Wallもご丁寧に抹消されており、上記の問題にはまったわけです。

C言語において、ダメなマクロの話は良く聞きますが、ダメなtypedefの使い方はそうそうないと思う。

編集者:すずき(2023/02/04 20:26)

コメント一覧

  • hdkさん(2008/02/02 01:02)
    型って難しいですね。昔は 16 ビットをこえる整数を扱うのに long int を使っていましたが、今は環境によっては 64 ビットになってしまいます。typedef を使うと、あとから変えるのは簡単になりますが、それはそれで読みづらい。printf みたいな変な関数が存在する C の仕様が古すぎるんでしょうか。(C++ の cout ならこの手のトラブルは起きないのかも...)
    # ちなみに x86 の 64 ビット環境なら上のプログラムはちゃんと動いてしまいますw
  • すずきさん(2008/02/02 03:17)
    >hdkさん
    C のうまくないところは
    ・環境により int の大きさが変わる
    ・printf のような可変引数を取る関数がある
    ってところでしょうか。
    >typedef
    3連鎖以内に抑えていただければ幸せだったなー、と…(泣
    >64ビット環境
    64ビットなら問題ないっす。32ビットを想定ってのを書き忘れました。
    # そしてまた 64 -> 128 ビットの交代時に C 言語(きっと生き残っている)は同じ問題を起こすわけか…。
open/close この記事にコメントする



2008年1月30日

食べるな、と来たか

大好きな蒟蒻畑をダイエーで3袋くらい買ってきてもさもさ食ってたら、一瞬でなくなりました。しかも食べ過ぎて具合悪くなってきたし…。

それはさておき、蒟蒻畑の袋に「高齢者と子供は食べないで」というイラストが入っていることに気づきました。以前は裏側に「気をつけて食べて」とか「スプーンで食べて」という注意書きがあっただけだった気がします。


蒟蒻畑の袋

袋の表にしっかり描いてありますね。右下のマークの部分を拡大すると、以下のような具合です。


蒟蒻畑の袋、拡大図

食べるな、とはっきり描いてあります。喉に詰まらせる事故が起きる度にこの手の警告は厳しくなりますが、ついに注意や警告ではなくて禁止になってしまったようです。事故が起きまくる交差点が一時停止 -> 信号 -> 歩車分離へと進化する(?)のと似たような物か…。

編集者:すずき(2008/01/31 00:08)

コメント一覧

  • mamaさん(2008/02/01 09:55)
    歩車分離の次は・・・
    通行止め・・ってことはないですよね。www
  • すずきさん(2008/02/02 03:36)
    最近の食品問題を見ると、不祥事を起こして販売取りやめってパターンも珍しくないです。起きて欲しくはないですが、次は「通行止め」ではなく「廃線」でしょうね。
    マンナンライフにはこれからも良い蒟蒻畑を作ってもらいたいです。いっぱい買うぜー。
open/close この記事にコメントする



2008年1月29日

3倍速い

Javaでプログラムしていたら妙な現象に気づきました。

  • Component.createImageかComponent.createVolatileImageで大きめのバッファ(少なくとも800x600くらい?)を作ります。
  • バッファに何か(ここではfillRect)描きます。
  • バッファの内容をComponentにdrawImageしてコピーします。
  • 特定の待ち時間(11ms〜19ms)を指定したThread.sleepを呼び出します。

以上の処理を行うループを回していると、PCの時計が3倍くらいの速さでどんどん進んでしまいます。バッファに何も描かずにdrawImageするであるとか、20ms以上の時間をsleepに指定した場合には、問題ないようです。

バッファに描いてdrawImageしてsleepを呼んで待つ、というパターンはゲームでありがちな処理だけに困ってしまいます。何が悪いのかさっぱりわからない。Javaとその内部に詳しい人が居たら、何が起きてるのか教えて欲しいところです。

それともなんだ、地球のためにCPUパワーを食うBlitではなくFlipにしなさいっておぼしめしなのか…?

検証コード

検証に使ったコードは以下の通りです。

TestClockSkew.java

import java.applet.*;
import java.awt.*;

public class TestClockSkew extends Applet implements Runnable {
    Image i;

    public void init() {
        i = this.createImage(800, 600);
        
        Thread t = new Thread(this);
        t.start();
    }
    
    public void run() {
        while (true) {
            Graphics g = i.getGraphics();
            g.setColor(new Color(0, 0, 0));
            g.fillRect(0, 0, 500, 500);
            g.dispose();
            
            this.getGraphics().drawImage(i, 0, 0, null);
            
            try {
                Thread.sleep(11);
            } catch (InterruptedException e) {
            }
        }
    }
}

当初は実際に動作するアプレットを貼りつける予定でした。しかし実行したところで、黒い画面が出るだけで何も面白くないうえに、もし皆さんのマシンの時計が狂ったりしたら大迷惑なのでやめました。

編集者:すずき(2008/02/15 01:07)

コメント一覧

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



2008年1月28日

遅くたって枯れたって馬鹿にはできない

どこの会社もそうだと思いますが、情報漏洩対策でUSBメモリだのCD-Rだのといった記録媒体を会社内に持ち込むことは原則禁止されています。

普段はそんなこと気にならないのですが、PCの再セットアップの際にイーサネットカードのドライバが見あたらないとき、非常に困ります。別のマシンから持ってこようにも、移す手段がありません。

今日まさにその状態にはまってしまって困ったんですが…。窮地を救ったのはシリアルポートでした。

Windowsにはハイパーターミナルという素敵ソフトが大抵入っていて、そいつを使うとシリアルポート経由でファイルを転送可能です。LinuxなどのUNIX系OSでもシリアルポート経由でファイルを送る手段はあるはずです。

速度はせいぜい115.2kbps(14.4KB/s)で、けして速いものではありませんが、シリアルポートさえあれば必ず使えるので助かります。おおよそどのOSにもドライバがある、というのは枯れきったデバイスたるシリアルポートの利点でしょうねえ。

しかし最近のノートPCなどはシリアルポートが無いものも多いし、この手段も廃れつつあるのかな…。

編集者:すずき(2008/01/28 22:40)

コメント一覧

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



2008年1月27日

車が返ってきた

車検が終わったらしいので車を取りに行きました。

取りに行くと書きましたが、実は車検に出すとき代車が借りられなかったので足がありません。なので、販売店の営業の人がわざわざ迎えに来てくれたわけです。親切な方ですなあ。

車の販売店に行くなんてそうそう無いし、ランサーエボリューション(店先に飾ってあった)に試乗させてくれー、って言えば良かったなあ。

最近の車

最近の国産車は必ずしも日本人にウケが良いとは思えません。自動車メーカーのやる気がなくなったのでしょうか?実はそうではありません。最近の日本車は「世界戦略車の日本バージョン」であって、日本向けに一から設計された物ではないのです。

詳しくは日経の記事(日本で売っても儲からない、だから世界戦略車で勝負)を参照いただきますが、ざっくり言ってしまうとまずはどの国と決めずに平均的な車を設計して、それから各国向けにカスタマイズした車を設計するのだとか。

そんなことをして日本で売れなくなっても良いのか?と思われるかも知れませんが、日本で売れなくてもどうということはない…がメーカーの本音でしょう。

日本は豊かな国ですが、自動車メーカーが多数ひしめきあっていて利益は出ないし、今後は少子化で購入層も減る一方です。日本は世界戦略の一部を担うどころか、全くうまみのないお荷物になりつつあります。今後も日本仕様は軽視されること間違いなしで、寂しい限りですね。

編集者:すずき(2008/01/28 22:23)

コメント一覧

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



2008年1月26日

激寝

夕方まで寝てた。やっぱり一週間に一日はこういう日がないといかんね。

編集者:すずき(2008/01/28 22:23)

コメント一覧

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



2008年1月25日

飲み会

飲み会に誘ってもらったので「行きます」って返事しました。夜、再びメールが来て、飲み会が無くなったとのこと。

だけど、別の飲み会が開かれることになったらしいのでそちらに行きました。飲み会は不滅です。

眠気は危険です

話題が運転中の眠気の話になり、友人が「眠くなってくると、視界が暗くぼやけるというか、例えるなら映画の黒い枠みたいになる。」と言っていました。私も同じような体験があるのですが、なるほど言い得て妙です。

こういう状態になってるのは確実にまずいわけで、即車を止めて休むべきです。が、当の本人は気づかないから、困っちゃうわけです。下手したらどこかに激突しますが、私や友人は幸運なことに事故らなかったため、続きも見たわけですよ。

しばらく映画の黒い枠状態が続いた後に、どういうタイミングかわかりませんが、一気に目が覚めるポイントが訪れます。一瞬で眠気がゼロになって、視界が晴れ、頭が冴えます。そのあまりのギャップに初めて「今まずい状態になっていた!!」と気づくのです。

気づくのが遅すぎとお思いでしょうけど、本当にこんな感じでした。もちろんこれは確実に良くない状態なので、絶対に寝不足で運転しないでください。私も二度と体験したくないですね…。

編集者:すずき(2008/01/28 22:23)

コメント一覧

  • hdkさん(2008/01/28 22:47)
    夏に高速道路 1,000km 以上走りましたが、さすがにそこまではいかなかったなぁ。夜中はちょっと休んでちょっと走っての繰り返しでした。(寝れないので走る→やっぱ眠いから次のSA/PAで休む→...)
  • すずきさん(2008/01/28 23:10)
    >hdkさん
    疲労とか眠気が原因なので、休み休みきちんと走れば距離は問題にならないってことですねえ。
    私が体験したときも、近所の道でしたし…。
open/close この記事にコメントする



2008年1月22日

電車のドア

子供がカニに指を挟まれて「いたいよー!」と言っている怖い電車のドアステッカーがあったはず、という記憶を頼りに調べてみました。

JR北海道以外で自分が乗ったことのある路線というと、札幌市営地下鉄くらいなものでしょう。ネットで探すと簡単に見つかったのですが、なんと子供じゃなくてクマでした。しかもカニなんて全くどこにも描いてない。どこから沸いてきた記憶なんだか…。

JR北海道

先日ご紹介(2008年1月18日の日記参照)したJR北海道のマスコットキャラクターの雪男?は「モジャくん」というそうです。どうでもいいですか、そうですか。でもまだ続くもんね。

モジャくんは旅行のパンフレットなどに描いてあったこともありましたが、最近めっきり姿を見かけません。このままでは今年の秋に導入予定のICカード「Kitaca(キタカ)」のマスコットキャラ(エゾモモンガ)に駆逐されてしまいそうです。ぜひ頑張っていただきたい。

Kitacaは何だかぱっとしないですね。白黒のモモンガがSuicaのペンギンと似てるし、緑色基調なのも似てる。同じデザイナーに頼んだんだろうか。

編集者:すずき(2008/01/24 22:02)

コメント一覧

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



2008年1月20日

そんなミラクル

車を車検に出してきました。昨日、近所にある三菱のディーラーに予約を入れたのです。

地図によるとディーラーはR171沿いらしいので、R171をひた走る。すると三菱のお店を発見。お店の人にご挨拶。車検の話を聞いてみると車検のご予定は伺っておりません、とのこと。へ、なんで?
私「○○さんにお願いしたのですが。」
店「はい、○○は私ですが、予約は伺っておりませんが?」
私「あれ??昨日予約しませんでしたっけ?」
店「い、いいえ??」
こりゃ何事よ?と思ってたらお店の方が、

店「…ああ!もしかして高槻店をお探しですか?」
私「はい?そうです。こちらですよね?」
店「いえここではなくて、もう少し行ったところにあるんですよ。」
私「え…えぇ!?」
この時点で初めて店を間違ったことに気づく。両店とも近くにあって、偶然ですがどちらの店にも同じ名前の方が居たようです。なんて複雑な…。

そのまま車検をお願いしても良かったのですが、既に予約してしまったのでそうもいかず。お店の人に謝り倒しながら出てきました。ご迷惑をおかけしました。

編集者:すずき(2008/01/20 17:08)

コメント一覧

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



link もっと前
2008年2月2日 >>> 2008年1月20日
link もっと後

管理用メニュー

link 記事を新規作成

<2008>
<<<02>>>
-----12
3456789
10111213141516
17181920212223
242526272829-

最近のコメント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