2010-09-01から1ヶ月間の記事一覧

gcc と cl のスタックフレームの作り方・使い方の違い

3 ヶ月ぐらい、デスクトップの附箋メモに書きっぱなしで、調べいなくて、今後も調べないような気がするので、ここにメモを残して附箋は削除しよう。 #include <stdio.h> int foo(int& b) { printf("%p %d\n", &b, b); return b *= 2; } int& bar() { int a = 1; print</stdio.h>…

Scheme で append 手続きを再実装(復習)

Scheme で append 手続きを再実装(完成) - satosystemsの日記で、コメントで教えてもらった append の実装を解析。 (define append (lambda args (let f ((ls '()) (args args)) (if (null? args) ls (let g ((ls ls)) (if (null? ls) (f (car args) (cdr …

Android Dev Phone 1 が壊れた⇒直った

今年の 5 月に Android Dev Phone 1 が壊れた。状態としては、カメラアプリを起動したまま放置しっぱなしでバッテリーが放電しつくして、その後最後の力を振り絞って再起動をしようとしたけど、Android のロゴ画面で電源がやはりなくなり、その後バッテリー…

結婚年数とその呼称

中国語で結婚年数とその呼称を調べてみた。 年数 アメリカ フランス イギリス ロシア 日本 朝鮮 1年 纸婚 棉婚 纸婚 花布婚 2年 布婚 皮婚 纸婚 3年 皮婚 麦婚 4年 丝婚 蜡婚 5年 木婚 木婚 木婚 木婚 木婚 6年 铁婚 铜婚 锌婚 7年 铜婚 羊毛婚 铜婚 8年 电…

Twitter・・・、くっ!

ブログ(や日記、mixi)をやってる人で Twitter を始めた人が、その後もブログの更新頻度を維持している例を僕は知らない。RSS でブログの購読を始めたのは 4 年ぐらい前からなんだけど、購読エントリの半分以上は死んでしまっている。この前、とある開発者…

僕のケータイと白色家電の選び方の違い

ちょっと昔の話になる。中国に来て、ケータイを購入する際に、日本語のわかる中国人女性に付き合ってもらった、というより付いてきた。僕は時間をかけて選ぶつもりだったので断りたかったんだけど、時間がかかっても問題ない、ということで、じゃあそれなら…

「ハワイ行きのチケットを探す」の巻(完結)

チケットを航空会社から直に購入すると非常に高い、ということがわかった。じゃあ、旅行会社をあたってみようということで連絡を取ったのが 携程旅行网官网:酒店预订,机票预订查询,旅游度假,商旅管理 というところ。中国ではかなりの大手で、日本でいう HIS …

「ハワイ行きのチケットを探す」の巻(続き)

中国のチケット屋のウェブサイトは当てにならないということがわかったところで、全日空、ノースウェスト、大韓航空で直接チケットを探してみた。 全日空:ひとり 24 万 北京から東京経由でホノルルまで、という内容で 24 万。エコノミーで。 ノースウェスト…

C/C++ FAQ #2 (構造体内の可変長配列)

構造体に可変長配列を定義したい場合があります。 struct foo { size_t size; char *array; }; こんな感じの構造体で、char 配列の長さは動的に決定される、というようなケースです。この場合以下のように使用します。 int main(int argc, char *argv[]) { s…

「ハワイ行きのチケットを探す」の巻

新婚旅行でハワイに行くのに、航空券をゲットしなきゃならない、というお話。大使館で妻のビザを申請したときに、航空券のチラシ配りがたくさんいて、50 社ぐらいのチケット屋の情報が集まったので、スクリーニング。ハワイ行きの値段が記載されているチケッ…

VC2008 で #include でコンパイルエラー

VC2008 で GDIPlus を使用しようとすると、以下のエラーが出る。 c:\program files\microsoft sdks\windows\v6.0a\include\gdiplusimaging.h(74) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしてい…

日本語を教える難しさ

大体毎日、妻に日本語の授業をしている。今日は「〜と思う」「〜と言った」「〜でしょう?」というフレーズを習得する課。教科書で言うと第 21 課、上冊の終盤だ。200 ページを半年かけた、ぐらいのペースだ。さて、だんだん教えているほうがつらくなってき…

iPhone のクソアプリ排除の動きは賛同

App Storeにはすでに25万を超えるアプリがある。これ以上の「屁」アプリは不要。なんの役にも立たないアプリ、なんらかの持続するエンターテインメントを提供できないアプリは却下される可能性がある。 アップル App Store 審査ガイドライン:「一線」を越え…

Scheme で append 手続きを再実装(完成)

手続き list-append がようやく完成した。 (define list-append (lambda (a . b) (define add (lambda (x y) (reverse (cons y (reverse x))))) (define end (lambda (x y) (if (null? x) y (end (reverse (cdr (reverse x))) (cons (car (reverse x)) y))))…

if じゃなくて cond を使おう

Scheme の if 式は (if <test> <then> <else>) という感じなので、 if (a == 1) { printf("a is 1"); } else if (a == 2) { printf("a is 2"); } else if (a == 3) { printf("a is 3"); } else if (a == 4) { printf("a is 4"); } else { printf("unknown"); } という条件分岐</else></then></test>…

リスト操作の罪悪感

Scheme をやっていて感じる罪悪感は、リスト操作の愚直性だ。例えば、リストの長さを得る手続き list-length は (define list-length (lambda (a) (let loop ((x a) (len 0)) (if (null? x) len (loop (cdr x) (+ len 1)))))) こんな感じなんだけど、これを …

null?、pair?、list? 手続き

Scheme にはリストの種類を判別するための手続きは、3 つある。 null? (null? '()) ; => #t (null? (list)) ; => #t (null? '(a)) ; => #f (null? 'a) ; => #f null? 手続きは、とにかく空リストだった場合は #t を返す。 pair? (pair? '()) ; => #f (pair? …

C/C++ FAQ #1 (引数に void を受け取る関数)

おいらも FAQ を書いてみる。 引数の void void example(void); void example(); これは、C++ ではどちらも引数なし、という意味だが、C では example() の方は関数の引数の情報が単に不明である、ということになる。要するに: void example() { printf("ok…

Skype 4.x のバグ

IT

Skype 4.x には、チャットで送信したメッセージの一部が文字化けないし欠落する、というバグがある。この現象が発生したら、修正の際に、問題のある文字の前に、スペースをいくつか追加することで回避できることがわかった。例えば「今日はもう仕事はやって…

柴田望洋氏の C/C++ FAQ で再発見

2〜3 分のコンパイル待ち時間、みなさんどのようにお過ごしですか。僕は昨日はC言語FAQ / C++言語FAQ【BohYoh.com】を見て過ごしました。95% は知っている内容でしたが、知らないものもあったので、ここで紹介。 C++ char型、unsigned char型、signed char型…

サトラレ

話をしているときに舌打ちをする人って、頭が悪いと思うんだよね。相手に容易に心を読まれてしまうから。だけど、僕の周りにはそんな人が結構いる。舌打ちする人は気が付いていないんだ、自分が舌打ちしていることも、相手に気づかれていることも。

Cygwin から ping も打てないこんな世の中じゃ、ポイズン

IT

Windows 7 だと、Cygwin から ping を打とうとすると: $ ping www.yahoo.com ping: socket: Operation not permitted ということで、権限がなくて ping すら打てない。管理者権限で立ち上げるか、コマンドプロンプトを使いましょう。

Scheme で null? 手続きを再実装

こんな感じかな。 (define null? (lambda (a) (eq? '() a))) Scheme には等価性検証に eq?、eqv?、equal? が用意されているけど、 eq? は同一性 eqv? は甘めの同一性 equal? 同値性 という風に使い分ける。Java で言うと、eq? は ==、equal? は equals(Objec…

Scheme で append 手続きを再定義(未完成)

append 手続きも再定義してみた。 (define list-append (lambda (a . b) (let loop ((a a) (b b)) (if (null? b) a ; b が空リストなら a を返す (if (null? a) ; b が空リストじゃなくて (loop (car b) (cdr b)) ; a が空リストなら b の car と cdr で再帰…

Makefile で現在処理中の makefile のパスを知りたい(未解決) #2

IT

まず、適当な名前でシェルスクリプトを用意する。 #!/bin/bash while getopts C:f: OPT do case $OPT in "C" ) ;; "f" ) filename="$OPTARG";; esac done if [ "$file" != "" ]; then export CURRENT_MAKEFILE=$filename fi make $@ シェルスクリプトの起動…

Makefile で現在処理中の makefile のパスを知りたい(未解決)

IT

3 時間ほど調査したけど、結局わからなかった。Makefile が複数ある場合、例えば $(MAKE) -C hoge -f fuga.mkという感じでネストする Makefile が呼び出されていれば、 $(shell pwd)でディレクトリは取得できる。けど、ファイル名は取得できない。 これより…

Scheme で length 手続きを再実装

久しぶりに Scheme の勉強。R5RS を読んでいて気になるのが、list と vector と string に対して、それぞれ似たような、だけど専用の名前の関数が用意されていること。その中でも極めつけが length 関数。Python だと len 関数、Haskell だと length 関数に…

ブラウザ遍歴

NN2 NN3 IE4 IE5 IE5.5 NN2 は近所のラオックスで購入。FD 3 枚組で 4000 円弱だったか。その後、ウェブ系開発で過去のブラウザサポートの確認用としてかなり使った。IE5.5 は、IE6 が出ても、Windows Update で更新されないように気を付けながら使っていた…

Android のフルビルドが 20 分を切る・・・だと

4 コア 8 スレッドを目いっぱい使ってビルドすると、フルビルドで 20 分を切るそうな。僕の環境では・・・、中古のお古なので 200 分かかりまつ。離れにいると物資が提供されないので、仕方がないのですが、せめて半分にできないものかなぁ。