2010年4月30日金曜日

LLVMのロゴ

LLVMにロゴがあったなんて知らなかった。

LLVM 2.7 がリリースされたけれど、X86-64の対応が甘いのは相変わらずっぽい。
自分で解決しろってことか…。

2010年4月17日土曜日

Xperia X10とWindows 7 64bit の USBドライバ(SDKのドライバをロードする方法)

android_winusb.infを修正しておくだけ。


android_winusb.inf.patch
--- android_winusb.inf.orig     2010-04-17 22:36:28.789163200 +0900
+++ android_winusb.inf  2010-04-17 23:24:14.522073700 +0900
@@ -26,6 +26,9 @@
 %ProviderName% = Google, NTx86, NTamd64

 [Google.NTx86]
+; Xperia X10
+%SingleAdbInterface%        = USB_Install, USB\VID_0FCE&PID_D12E
+%CompositeAdbInterface%     = USB_Install, USB\VID_0FCE&PID_D12E&MI_01
 ; HTC Dream
 %SingleAdbInterface%        = USB_Install, USB\VID_0BB4&PID_0C01
 %CompositeAdbInterface%     = USB_Install, USB\VID_0BB4&PID_0C02&MI_01
@@ -44,6 +47,9 @@
 %CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E12&MI_01

 [Google.NTamd64]
+; Xperia X10
+%SingleAdbInterface%        = USB_Install, USB\VID_0FCE&PID_D12E
+%CompositeAdbInterface%     = USB_Install, USB\VID_0FCE&PID_D12E&MI_01
 ; HTC Dream
 %SingleAdbInterface%        = USB_Install, USB\VID_0BB4&PID_0C01
 %CompositeAdbInterface%     = USB_Install, USB\VID_0BB4&PID_0C02&MI_01

2010年4月5日月曜日

いまさらだけどRubyをWindows(32bit)にインストールするときのためのメモ

RubyをWindowsでcygwinに依存せずに快適に使うために必要なファイルの場所のメモ。

@ITの「WindowsにRuby1.9.1をインストールする」によると

Ruby mswin32はftp://ftp.ruby-lang.org/pub/ruby/binaries/mswin32/から持ってこれる
GNU Readlineなどはhttp://jarp.does.notwork.org/win32/から持ってこれる
OpenSSLはhttp://www.deanlee.cn/programming/openssl-for-windows/から持ってこれる
Iconvはhttp://www.meadowy.org/meadow/dists/snapshot/old/から持ってこれる

Ruby1.8.6やRuby1.8.7でもこれらのDLLを使える。

ソースパッケージのほうが微妙に新しくなってるから
できれば(Rubyも含めて)自分でコンパイルしたい。
Cでext書くこともあるし、Cなgemをインストールすることもあるし...
でも、VC6が動くマシンは持ってないからなぁ...

2010年4月1日木曜日

Xperia X10とWindows 7 64bit の USBドライバ

Xperia X10をWindows 7 64bitに認識してもらえなくて困ってた。
いろいろぐぐってようやく見つけた

正解はPdaNet for Androidのインストールを途中までやること。

手順はたぶん次のようだったと思う。

  1. Xperia X10はPCから接続をはずしておく。
  2. PdaNetの64bit用のインストーラを起動して、「Androidをデバッグモードにしてつなげ」というダイアログが出るところまで進める。
  3. Xperia X10をデバッグモードにして、PCとUSBケーブルと接続する
  4. ダイアログのOKで先に進む。(ここでドライバのインストールに成功する)
  5. モデム用のデバイスドライバをインストールするかどうか聞いてくるので、 No と言う。
  6. するとインストーラはインストールに失敗したとみなしてインストールをキャンセルしてロールバックしてくれる。



ちなみに、
PdaNetを見つける前にフォーラムで見つけたX10.zipというのではダメだった。
32bit用なのだろうか?

2010年3月26日金曜日

クリティカルスピード

コードが少なくて驚いた。

面白いかも。


リアルアンリアル 高速配信Webサーバシステムをオープンソース化

2010年3月24日水曜日

MinGWでgdbmをビルドしてみた

flockとかfsyncがなくてダメな感じ。

systems.h
#include <io.h>
#include <windows.h>

#define UNLOCK_FILE(dbf) {                              \
    HANDLE h = (HANDLE)_get_osfhandle(dbf->desc);       \
    if (INVALID_HANDLE_VALUE != h) {                    \
      UnlockFile(h, 0, 0, (DWORD)-1, (DWORD)-1);        \
    }                                                   \
  }

#define READLOCK_FILE(dbf) {                                            \
    HANDLE h = (HANDLE)_get_osfhandle(dbf->desc);                       \
    if (INVALID_HANDLE_VALUE == h) {                                    \
      lock_val = -1;                                                    \
    } else {                                                            \
      OVERLAPPED over;                                                  \
      ZeroMemory(&over, sizeof(over));                                  \
      DWORD flags = LOCKFILE_FAIL_IMMEDIATELY;                          \
      if (!LockFileEx(h, flags, 0, (DWORD)-1, (DWORD)-1, &over)) {      \
        lock_val = -1;                                                  \
      } else {                                                          \
        lock_val = 0;                                                   \
      }                                                                 \
    }                                                                   \
  }

#define WRITELOCK_FILE(dbf) {                                           \
    HANDLE h = (HANDLE)_get_osfhandle(dbf->desc);                       \
    if (INVALID_HANDLE_VALUE == h) {                                    \
      lock_val = -1;                                                    \
    } else {                                                            \
      OVERLAPPED over;                                                  \
      ZeroMemory(&over, sizeof(over));                                  \
      DWORD flags = LOCKFILE_FAIL_IMMEDIATELY | LOCKFILE_EXCLUSIVE_LOCK; \
      if (!LockFileEx(h, flags, 0, (DWORD)-1, (DWORD)-1, &over)) {      \
        lock_val = -1;                                                  \
      } else {                                                          \
        lock_val = 0;                                                   \
      }                                                                 \
    }                                                                   \
  }

2010年3月11日木曜日

MinGWでDLLを作ってみる (32bitと64bit)

手軽な方法はこれ。

$ g++ -static -shared -o hello.dll hello.cc world.cc -Wl,--out-implib,libhello.a

gcc 4.4.0 (32bit)を使って、上記の方法でDLLをつくると、必要以上に多くの関数をexportしちゃっている。

ちゃんとDEFファイルを用意して必要な関数だけをexportする場合は次のようにすればよいみたい。

$ g++ -c hello.cc
$ g++ -c world.cc
$ g++ -mdll -o hello.dll.tmp -Wl,--base-file,hello.dll.base hello.o world.o
$ dlltool -l libhello.a --dllname hello.dll --base-file hello.dll.base --output-exp hello.dll.exp --def hello.def
$ g++ -mdll -o hello.dll -Wl,hello.dll.exp -static hello.o world.o