2010-01-01から1年間の記事一覧

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

チケットを航空会社から直に購入すると非常に高い、ということがわかった。じゃあ、旅行会社をあたってみようということで連絡を取ったのが 携程旅行网官网:酒店预订,机票预订查询,旅游度假,商旅管理 というところ。中国ではかなりの大手で、日本でいう 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 分かかりまつ。離れにいると物資が提供されないので、仕方がないのですが、せめて半分にできないものかなぁ。

今開いている秀丸に対して grep したい #4

前回作った秀丸に対して横断 grep を行うマクロ、HmAltGrep は、もっさりした動作なので、とりあえずこれを高速化しようとしてみた。もっさり動作は Java VM 起動が原因だと思うので、Java VM の起動は一回のみにして常駐され、マクロ起動ごとに常駐している…

今開いている秀丸に対して grep したい #3

とりあえず実装したものを公開してみます。http://cid-75f0c2b530d893e7.office.live.com/self.aspx/.Public/HmAltGrep001.zip動作させるには: Java VM がインストールされている必要があります java.exe にパスが通っていて欲しいです(通ってない場合はマ…

今開いている秀丸に対して grep したい #2

今開いている秀丸に対して grep したい - satosystemsの日記の続き。割り切って外部の grep 実装部分を Java アプリとして実装してみたら、結構簡単に実装できてしまった。外部アプリの選定条件として: 標準入力が UTF-16LE で読めること UTF-16LF のファイ…

FastGrepReplace 2.50 リリース

秀丸用マクロ、FastGrepReplace を 2.50 にバージョンアップしました。G‚܂邨‚̃z[ƒ€ƒy[ƒW(ƒTƒCƒg[Šé‰æ)|FastGrepReplace 2.50 wgrep‚µ‚Ä‚Ü‚Æ‚ß‚Ä’uŠ·x質問や不具合報告があれば、気軽にコメントしてください。以下蛇足です。 今回のバージョンで苦…

C# は検査例外がないから

C# は検査例外がないから、作るときは楽チンだけど、作り終わってからが大変。.NET Framework 1.1 の CLR は、捕捉されない例外が発生したらスレッドが黙って死ぬんだけど、これは .NET Framework 2.0 からアプリが死ぬように改善(?)された。Java とは結構ポ…

Haskell の lines 関数の代替

Haskell と Scheme の共通点 - satosystemsの日記のコメントで教えてもらいました。 linesWithLineEnd :: String -> [(String, String)] linesWithLineEnd str = loop str [] where loop [] [] = [] loop [] prd = [(reverse prd, "")] loop cs@(c : cs') pr…

今開いている秀丸に対して grep したい

コーディングしていて「今開いている秀丸に対してのみ grep したい」というケースがあります。開いているソースコードのフォルダが分散していて、かつ根っこから grep するにはあまりにも量が多いような場合です。ただ、現時点(v8.01)の秀丸には、このよう…