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

プレゼント交換

「あなたならどうお書きになります1.0」をやってみた(時間切れだけど)。 完全にランダムで割り当ててから身内に贈っていないか判定するのでは遅いので、一人ずつ身内以外に贈り先を決めていって、途中で身内にしか贈れないことがわかったら最初からやり直…

カジュアルゲーム

TAKESAKO氏のプレゼン読み直したらBio100%だったか。テンポが速くて気がつかなかった。ろりろりろーりんぐとかやったなあ。 ネタとしてはSTG 2.0時代のA-JAXとかどうですかね。 はてなキーワードに「サイボウズ・ラボ入りたい!」とかあるのか。へー。他にも…

Binary2.0 カンファレンス 2006

Hello, binary world mainがメインのネタ。 「アリアリ」がカンマとエクスクラメーションマークの有無(命名shinichiro_h氏)とのことだけど、最後に改行がつくかどうかというのもあるかと。 Hello, World!派とHello, world!派もあるみたい。「大文字アリア…

PE Golf(3)

この半端なコードを、 http://d.hatena.ne.jp/firewood/20061120/1163957029 プロゴルファーが「ありあり」に改良してくれました。さすがですなあ。 http://d.hatena.ne.jp/shinichiro_h/20061202#1165067227自分でも同じことをやろうとして、コード領域はre…

mp3とwave

「mp3かwaveなのか聞き分けられる」という人がいたので、果たして自分にもできるのか、ランダムに演奏するソフトを書いて試してみた。 今のところ全然当たらない。 mp3は何となく満足感が低いような気がしてたんだけど、プラシーボ効果かも。ソフトは ↓ です…

変数のアライメント

構造体または変数のアライメントを設定する構文として GCCに__attribute__*1 がある。どちらも2の累乗の値を指定する。 構造体のメンバーのアライン 変数の配置の指定 が可能となっている。 GCCの場合、変数の配置の指定はアセンブラの.align擬似命令(リン…

連射ドライバ

USBジョイスティック・ジョイパッドの連射ドライバを書いてみました。 T-MZ氏が書いているものと同様のもので、ソースと助言をいただきました。 Windows 2000/XP用です。 ボタンの配置の変更と連射速度の設定ができます。 現在ベータ版です。試した限りではO…

連射測定ソフト

連射ドライバの動作確認用として、ジョイスティック・ジョイパッドの連射速度を測るソフトを書きました。 Windows 2000/XP用です。画面は超貧弱です。 USB接続のジョイスティック・ジョイパッドのみに使用可能です。 Rendaとjstestがあるようですが、Rendaは…

Hello, work!

人の募集をしたいけれども、有名転職サイトは数十万円はかかってしまうので、どうしたものか。とりあえずハローワークには行ってみたけど、年齢層が高そうだし、エンジニアはあまり来ないような気もする(私自身も利用したことないし)。 転職フェアとかに出…

64bit値の32bit変数への代入

warning C4244対策は、LONG_PTRをLONGに暗黙変換すると警告されるというものだが、この種の警告はいくつかあった。 64bit WindowsではLONG_PTRは64bitの整数型すなわち__int64だ。PTRという名前だからポインタかと思ったらそうではなくて、ポインタを保持で…

make cleam

# make cleam make: *** No rule to make target `cleam'. Stop.ついやってしまった。寒いと指がうまく動かない。

DbgPrint

DbgPrintで何か出すときに #define MyKdPrint(msg) DbgPrint("header"); DbgPrint msg; みたいなのを使うと、DbgViewで見たときに二行になってしまう。 バッファに一度ためてから出力すればOKで、こんな感じ。#if DBG #define DBG_MSG_HEADER "[MyKernelModu…

DOS版HELLO,WORLD

http://d.hatena.ne.jp/alohakun/20061115/1163587236 int 20hで終了できるのでちょっとだけ短くできる。スタックをいじってなければretでも終了できるみたい。 DOSだったら全部大文字でいいやというのと、!が21hなので、洒落としてint 21hをメッセージに入…

PE Golf (2)

メッセージが「Hello,world」(11バイト) GetStdHandle(STD_OUTPUT_HANDLE)を使用せず、7固定(私の手元の環境) WriteFileが固定アドレス だと、PEでは最小と思われる97バイトで出力可能。 nasm用ソース → https://github.com/firewood/test/blob/master/h…

Binary Hacks

C

http://0xcc.net/binhacks/quiz.html 53点だった。まだまだ修行が足りないな。Q1、3、5、6、8、9、10、11が正解。 これは得点を競うというよりも、どのくらいネタとして楽しめるか、というものな気がする。Q2の?f@@YAXXZはVC++のマングリング名だとか。 Q2の…

issigned

C

問題 → http://d.hatena.ne.jp/kikx/20061106#1162810655 左辺値の回答 → http://d.hatena.ne.jp/kikx/20061117#1163784840ANSI準拠じゃないけど、一応動くものができた。わーい! 前半はインチキだし、後半はkikx氏のそのままだけど。 http://firewood.txt-…

issigned

C

http://d.hatena.ne.jp/kikx/20061106#1162810655 さっぱりわからない... VC++で試していたら、char型で#define issigned(t) ((t += 128) が常にゼロになっている。 GCC(3.4)だとwarning: comparison is always false due to limited range of data typeと警…

PE Golf (1)

リンカオプション/align:16を追加したら672バイトになった。VC++(GUI)だとその辺が限界っぽい。 /stub:stub.exeみたいので自分のstubを使うと544バイトになった。でもこの状態でもPEヘッダの前に64バイトの謎の領域(Richなんとかってやつ)が入っている。 …

Hello, world!

http://d.hatena.ne.jp/shinichiro_h/20061113 明日SEA & FSIJ 合同フォーラムを聴講しに行く予定です。 最小Hello worldだけど、Windowsでメッセージボックスを出力するものだと何バイトなんだろうか。(Windowsの場合、メッセージボックスの方がコンソール…

_TCHAR / TCHAR について考える 頭の T って、何の略だろう…テキストマクロ _TEXT から来ているのでは。意味合いとしてはinternationalized textまたはgeneric textっぽいけど。TCHARと_TCHAR TCHARと_TCHARのどちらを使うか悩むこともあるんだけど、tchar.h…

Windows on Xen

この前カーネル読書会の帰りに、高橋さんに「Windowsプログラマです」と言ったら、「君、XenのWindowsドライバを書いて高速化したまえ」と言われたのだが、水面下で進んでいた模様。 XenSource、WindowsをサポートしたXenを発表 VMware serverが無料で使える…

新しいコマンドプロンプトを開く

はてなブックマークにこれが入っていた。 Windows XP, 2000, NT4 Command Prompt私がコマンドプロンプトから実行するコマンドで、最も多いのはstartだ。 startは、シェルの「開く」という動作と同等で、 start test.dsw とすればVisual C++が起動するし、 st…

VC++2005 express edition

インストールしてみた。 Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う これだけだとPlatform SDKのヘルプが統合されない。 VC++2005からヘルプを起動して、「連結ヘルプ」を検索する。「Visual Studio 連結ヘルプ コレクション…

Windows 64-Bit Edition

How to Port Drivers to 64-Bit Windows Windows 64-Bit EditionはLLP64 int、long、DWORDは32bit size_t、ポインタ、LRESULT、WPARAM、LPARAMは64bit 少し注意が必要なのは、intは32bitだが、64bitアラインされること。struct A { int a[2]; }sizeof(struct…

warning C4244対策

これの対処方法を考えてみた。 まだまだ出るぞ、64bit移植性関連トラブル! SetWindowLongPtr APIの第3引数にLONG_PTR型を渡すと警告される!!(1) SetWindowLongPtr専用に型を定義する すぐ思いつく方法。美しくないけど、warningをゼロにする必要があるなら仕…

無名メンバ

C

いまさら知ったCの構文。struct hoge { int a; }; struct hogehoge { struct hoge; int b; }; ... struct hogehoge hogera; hogera.a = 0;これを使うとCで継承もどきができるみたい。 VC++6.0だと通るが、GCCでは通らなかったので拡張構文ぽい。

タスクバーを左に置く人

タスクバーを上に置く人がいるんだけど、私は左に置いて、長めにしている。 マウスカーソルは比較的左上の方にあり、移動量が少ない ウィンドウが増えても位置が変わらないので、選択しやすい(上か下の場合は、幅=位置が変わる) ウィンドウが増えても幅が…

safe mode check in case of WDM

セーフモードで起動しているかどうかドライバ内で判定する方法は、How to determine whether the system is running in Safe Mode from a device driver セーフ モードでデバイス ドライバからシステムが実行されているかどうか確認する方法に書いてあって、…

mallocとdouble

C

「第67回カーネル読書会のビデオと資料」でnoocyte氏が寄せているコメントについて。・malloc() はその仕様上,どんなデータ型にも適合するようアラインされた アドレスを返さなければならない. ・普通32ビット CPU では,最もアラインメントの厳しいデータ…

YLUG第67回カーネル読書会

glibc(たぶん2.x)のmallocのお話。→ 革命の日々! カーネル読書会で講演してきましたkosaki氏は細かいところまで広く深く知っていて、設計者&実装者の代弁者たりえているところがすばらしい。 内容は、 ・K&Rのmalloc(約20行)は割と偉大 ・fragmentatio…