OkadaHiroshiの日記 このページをアンテナに追加 RSSフィード

2012-11-17 blog を引越します このエントリーを含むブックマーク このエントリーのブックマークコメント

かなり古くからはてなダイアリーを使っていました。

ほとんど記事をかいていませんでしたが、このたび blog を引越しすることにしました。

今までの記事はそのままですが、(インターネットでは一定の permanent な URL を保つことが重要だとおもっています。)

今後は http://hiroshiokada.github.com/ で blog を書くことにしますので、宜しくお願いします。


2014-05-04 追記

はてなに戻ってきて、はてな blog Okada Hiroshi の blog で 書くことにしました。よろしくお願いします。

2011-10-14 Ubuntu 11.10 にしたら ADT Plugin for Eclipse が動かなくなった件 このエントリーを含むブックマーク このエントリーのブックマークコメント

自宅では、主に Ubuntu をつかっているのですが、昨日 11.10 がリリースされたので、早起きしてアップデートしました。

アップデート自体は2時間半程度で終了しました。

仕事から帰ってきて、自宅でつかってみて、いまのところ大きな不具合はないのですが、eclipse のバージョンが上がったせいで (Indigoになっていました)、ADT Plugin for Eclipse が参照できなくなっていました。

再度、入れようとしたのですが、org.eclipse.gef 0.0.0 がないと言われ、GEF を入れてやると今度は org.eclipse.wst.sse.core 0.0.0 が無いと言われてしまいました。

いろいろ努力したのですが、コンフリクト等の問題で上手くいきませんでした。

仕方がないので、synaptic パッケージマネージャーで eclipse 関連のパッケージを全部削除して、http://www.eclipse.org/downloads/ より Eclipse IDE for Java EE Developers をダウンロードして使うようにしました。

結果 ADT Plugin for Eclipse もすんなり導入できましたが、なんか負けた気分です。

2011-09-21 Native Driver 続き、キーの送り方 このエントリーを含むブックマーク このエントリーのブックマークコメント

Android Native Driver を使い始めて、キーを送るのに pressKey,releaseKey でKeysの定数を送っても、例外が発生してうまく動きませんでした。

Keys の定数を使うのでなく、AndroidKeysを使ってsendKeysを使うのが正しい使い方のようです。

(AndroidKeysはKeysとは違うのでpressKey,releaseKeyは使えません)

次のようにしたらとりあえず正しく動いているようです。

  Keyboard keyboard = driver.getKeyboard();
  keyboard.sendKeys("1234", AndroidKeys.ENTER);

2011-09-14

Native Driver という Google製のテストフレームワークAndroid 版がかなり、良いので使って見ました。

http://code.google.com/p/nativedriver/

基本、サンプルどうりにやると動くのですが selenium というものをベースにしているので、リファレンスをあちこち

見回らないといけないので、使いそうなところをまとめてみました。

  • AndroidNativeDriver
    • public メソッド
      • List<AndroidNativeElement> findAndroidNativeElements(By by)
      • AndroidNativeElement findElement(By by)
      • WebElement findElementByPartialText(String using) // 指定した部分文字列を text に持っているエレメントを得る
      • WebElement findElementByText(String using) // 指定した文字列を text に持っているエレメントを得る
      • List<WebElement> findElementsByPartialText(String using) // 指定した部分文字列を text に持っているエレメントのリストを得る
      • List<WebElement> findElementsByText(String using) // 指定した文字列を text に持っているエレメントのリストを得る
      • AdbConnection getAdbConnection()
      • ScreenOrientation getOrientation() // スクリーンの向きを得る
      • <X> X getScreenshotAs(OutputType<X> target) throws AdbException // スクリーンショットを撮る
      • Keyboard getKeyboard() // キーボードインターフェースを取得する
      • AndroidNativeNavigation navigate() // 操縦するための AndroidNativeNavigation オブジェクトを取得する。
      • void rotate(ScreenOrientation orientation) // 画面を回転する
      • void startActivity(String activityClass) // 指定したクラス名のアクティビティーを起動する
  • AndroidNativeNavigation
    • public メソッド
      • void toActivity(String activityClass) // 指定したクラス名のアクティビティーを起動する
      • void back()
      • void forward()
      • void to(String url) // 指定した URL を開く
      • void to(URL url) // 指定した URL を開く
      • void refresh()
  • WebElement (org.openqa.selenium.WebElement) インタフェース
    • public メソッド
      • void clear() // もしこのエレメントがテキストエレメントならばクリアする
      • void click() // クリックする
      • String getAttribute(String name) // このエレメントの指定した名前のアトリビュートを得る
      • Point getLocation() // このエレメントの座標を得る
      • Dimension getSize() // このエレメントのサイズを得る
      • String getText() // このエレメントのテキストを得る
      • boolean isDisplayed() // このエレメントが表示されているかどうかを返す
      • boolean isSelected() // このエレメントが選択されているかどうかを返す
      • void sendKeys(CharSequence... keysToSend) // このエレメント上でキュー入力をシミュレートして値をセットする
  • Keyboard (org.openqa.selenium.Keyboard) インターフェース
    • public メソッド
      • void pressKey(Keys keyToPress)
      • void releaseKey(Keys keyToRelease)
      • void sendKeys(CharSequence... keysToSend)
  • Keys (org.openqa.selenium.Keys) 列挙型
    • 定数
      • ADD ALT ARROW_DOWN ARROW_LEFT ARROW_RIGHT ARROW_UP
      • BACK_SPACE CANCEL CLEAR COMMAND CONTROL DECIMAL
      • DELETE DIVIDE DOWN END ENTER EQUALS ESCAPE
      • F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 HELP
      • HOME INSERT LEFT LEFT_ALT LEFT_CONTROL LEFT_SHIFT
      • META MULTIPLY NULL NUMPAD0 NUMPAD1 NUMPAD2 NUMPAD3
      • NUMPAD4 NUMPAD5 NUMPAD6 NUMPAD7 NUMPAD8 NUMPAD9
      • PAGE_DOWN PAGE_UP PAUSE RETURN RIGHT SEMICOLON
      • SEPARATOR SHIFT SPACE SUBTRACT TAB UP ZENKAKU_HANKAKU
    • public メソッド
      • static Keys[] values() // 定義されているキーの一覧を得る
      • static Keys valueOf(String name) // 指定された名前のキーを返す
      • static String chord(CharSequence... value) // 一つの和音のように複数のキーが押されたのをシミュレートする
      • char charAt(int index)
      • int length()
      • CharSequence subSequence(int start,int end)
      • String toString()
  • ScreenOrientation (org.openqa.selenium.ScreenOrientation) 列挙型
    • 定数
      • LANDSCAPE
      • PORTRAIT
  • OutputType<T> (org.openqa.selenium.OutputType) インタフェース
    • static フィールド
      • OutputType<String> BASE64
      • OutputType<byte[]> BYTES
      • OutputType<File> FILE

なお、スクリーンショットを撮るには、 AndroidNativeDriver オブジェクトを作るときに AdbConnection を渡す必要がありました。

 // .... 

  static final String ADB_PATH = "/home/hiroshi/android-sdk-linux_x86/platform-tools/adb";
  static final String PNG_PATH = "/home/hiroshi/screenshot.png";
  private AndroidNativeDriver driver;

  // ...
    
  protected AndroidNativeDriver getDriver() {
     AdbConnection adbc = new AdbConnectionBuilder()
         .withAdbPath(ADB_PATH) 
         .build();
     return new AndroidNativeDriverBuilder()
         .withDefaultServer()
         .withAdbConnection(adbc)
         .build();
  }

  // ...

    driver = getDriver();

  // ...

        // スクリーンショットを撮る
        byte[] ss = driver.getScreenshotAs(OutputType.BYTES);
        FileOutputStream fos;
        try {
            fos = new FileOutputStream(PNG_PATH);
            fos.write(ss);
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

   // ...

2010-05-11

[Linux] bash と screen の組み合わせで変な所で改行していたのが直りました。

僕は今まで bash と screen を使って、タブに現在実行中のコマンド名を表示させるために

PS1='\033k\033\\\u@\h:\w\$ '

等と設定していました。

ところがこの様な設定をすると、コマンドラインで入力中に行末の手前で勝手に改行されて表示が乱れて困っていました。

f:id:OkadaHiroshi:20100511231948p:image

今までは、あまり気にしないようにして使っていたのですが、今日とうとう嫌になって色々調べていたら、

404 - エラー: 404

\[     表示されない文字列の開始。端末制御シーケンスを
              プロンプトに埋め込む。
\]     表示されない文字列の終り。

と書いてありました。

早速

PS1='\[\033k\033\\\]\u@\h:\w\$ ' 

と記述を直したら、表示の乱れも直って、今結構 Happy です。

2010-05-08

[Android] Android-x86 のダウンロード元が間違っていました

昨日の日記に Android-x86 のダウンロード元として、http://www.androidx86.org/ と書きましたが、本家は http://www.android-x86.org/ のようです。

本家の方はハイフンがあります。

両方からダウンロードして比較してみましたが、android-x86-1.6-r2.iso は同じものでしたので、危険性はないと思いますが、本家の方がダウンロード速度も早かったので、本家からダウンロードしたほうが良いと思います。

不正確な情報を書いてごめんなさい

2010-05-07

[Android] Android エミュレータが遅いので、VirtualBox に Androidx86 をインストールしてみました

Ubuntu 10.04 に Android の開発環境をインストールしてみた - OkadaHiroshiの日記 ということで、Android の勉強をはじめたのですが、エミュレータの起動が遅いし、動作も今ひとつもっさりしていて、あまり快適ではありません。

そこで、X86 で動く Android を VirtualBox で動かしたらもう少し快適に動作するのでは? と思ってやってみました。

僕の使用しているデスクトップは 1.86GHz くらいの Core2Duo ですが、結果は、おもった以上に快適でした。

以下、手順を書きます。環境はUbuntu 10.04 LTS デスクトップ です。

  • まず、VirtualBox を Synapitic パッケージ・マネージャーからインストールします。
    • 単純に virtualbox-ose にチェックを入れてインストールするだけです。
    • なお、起動は、アプリケーション -> アクセサリ -> VirtualBox OSE です。
  • この CD イメージを使って AndroidX86 をインストールしました。
    • メモリを512MB、ハードディスク 4GB にしました。*1
    • 仮想マシンのネットワークの設定はディフォルトでは NAT ですが、それでは外側からアクセスできないので、ブリッジアダプタにしました。*2
    • インストール時にハードディスクのパーテーションを設定しますが、全部を1パーティションにして、ext3 でフォーマットしました。
  • 起動時には20秒ほどかかります。

f:id:OkadaHiroshi:20100508013539p:image:mediumf:id:OkadaHiroshi:20100508013540p:image:mediumf:id:OkadaHiroshi:20100508013541p:image:medium

  • とりあえず Settings -> Locale & text -> Select locale で Japanese を選びました。
  • 設定 -> Ethernet Configuration で Ethernet の設定を確認しました。
    • なお、IP アドレスは一番上部の部分からマウスでドラッグして出てくる場所で確認できました。

f:id:OkadaHiroshi:20100508013542p:image:w410

  • デバッグを有効にするために次の設定をしました。
    • 設定 -> アプリケーションで 提供元不明のアプリを許可をチェックしました。
    • さらに -> 開発で USBデバッグとスリープモードにしないをチェックしました。*3
    • また Dev Tools -> Development Settings で Wait for debugger をチェックしました。*4
  • Ubuntu の端末上で ./android-sdk-linux_86/tools に移動して次のコマンドを打ちました。
$ export ADBHOST=192.168.1.7    # アドレスはさっき確認した物
$ ./adb kill-server
$ ./adb start-server 
$ ./adb start-server			# 確認、下のように出れば多分 OK です。
List of devices attached 
emulator-5554	device

Eclipse 上で Android Project (1.6用) を作って Run As Android Appliaction で実行すると見事にエミュレータ上で実行できました。

f:id:OkadaHiroshi:20100508013543p:image:w410

参考ページ

*1:たぶんそんなに要らないです

*2:家庭内LANでは問題がないですが、そうでない時は問題かもしれません

*3:これはいらないかも?

*4:僕の所では必要でした

2010-05-06

[] 書き捨て C言語プログラムの作成方法

C言語で、ちょっとした書き捨てのプログラムを書くとき、毎回毎回、コンパイル実行のコマンドを打つのは面倒だと思っていました。

LL言語みたいにシェルバングで実行できると良いなあと思いました。

Webでググってみると、それを実現するシステムはあるのですが、使用しているマシン全部にそれをインストールして保守するのも面倒くさいと思います。

そこで、Linuxとか限定ですが、プログラムの頭に二行入れることで解決することを思いつきました。

例えばこうするのです。

prime_c.sh

#!/bin/sh
t=`mktemp`;tail -n +3 $0 | gcc -x c - -o $t; $t; rm $t; exit
#include <stdio.h>
#include <string.h>

/* MAX_N までの素数を表示 */
#define  MAX_N 100

int main( int ac, char *av[])
{
    int flgs[MAX_N];
    int n,i;

    memset( flgs, 0, sizeof( flgs));
    n = 2;
    while( n < MAX_N){
        if( !flgs[n]){
                printf( "%d\n", n); 
                for( i=n; i<MAX_N; i+=n){
                    flgs[i] = 1;
                }   
        }   
        n++;
    }   
    return 0;
}

#!/bin/sh
t=`mktemp`;tail -n +3 $0 | gcc -x c - -o $t; $t; rm $t; exit

という部分でプログラムの残りの部分を読み込んでコンパイル実行、実行後削除します。

*1

  • コンパイルエラーの表示が二行分ずれる。
  • $0 がコマンドに渡されない
  • 2行はちょっと冗長
  • 実行エラー時に実行ファイルが残ってしまう。

と欠点はありますが、手軽に仕えるので僕は気に入っています。

*1:あ、もちろんスクリプトに実行フラグを立てないとだめですね

2010-05-05

[][] Ubuntu 10.04 に Android の開発環境をインストールしてみた

そろそろ、Android の勉強をはじめようと思っています。

Android の SDK は前に一度 Windows 環境にインストールしたことがあったのですが、

10.04 も出たことだし、最近自宅ではほとんど Ubuntu を使っているので

Ubuntu 10.04 にインストールしてみました。

とりあえず お約束の 「こんにちは世界」を表示するところまでは、なんとかこぎつけました。

自分の備忘録と誰かの参考になればとインストールメモを書いてみます。

(個人的には CUI 好きなのですが、今回は GUI でできることはなるべく GUI でやってみました。)

事前準備 sun の jdkeclipse のインストール

Android SDK *1 の System Requirements によると Not compatible with Gnu Compiler for Java (gcj)

と書いてあるのですが、Ubuntu では 10.04 から sun の java が標準ではなくなったそうです。

*2

そこで sun jdk をインストールように設定します。

  • システム->システム管理->Synaptic パッケージマネージャーを起動します。
  • Synapticパッケージマネージャーのメニューから 設定(S) -> リポジトリ(R) を選びます。
  • 表示されるダイアログから他のソフトウエアというタブを選択します。
  • http://archive.cannonical.com/ubuntu lucid partner にチェックを入れ 閉じる(S)を押します。

f:id:OkadaHiroshi:20100506001619p:image

  • 再読み込みを押してパッケージ情報を更新します。
  • クイック検索の所に sun-java6-jdk と入力し、sun-java6-jdk を探してインストール指定をします。

f:id:OkadaHiroshi:20100506001620p:image

  • 依存により要求された変更を追加しました? と聞かれるのでマーク(M) を押します。

f:id:OkadaHiroshi:20100506001621p:image

  • 次に eclipse のインストールを指定します。
  • クイック検索の所に eclipse を入力し、eclipse を探してインストール指定をします。
  • 同じようにインストール指定をします。
  • 依存により要求された変更を追加しました? と聞かれるのでマーク(M) を押します。
  • 適用を押すと、以下の変更を適用しますか? と聞かれるので 適用(A) を押します。
  • 途中でjava のライセンスの確認ダイアログがでるのでチェックして 進む(F)を押してください。

f:id:OkadaHiroshi:20100506001622p:image

Android SDK のインストール

f:id:OkadaHiroshi:20100506001623p:image

Eclipse 用の ADT プラグインのインストール

  • アプリケーション -> プログラミング -> Eclipse で Eclipse を立ち上げ(Workspaceはディフォルトの設定)ます。
  • Help -> Install New Software... を選んで Work with: の所に https://dl-ssl.google.com/android/eclipse/ と入力し Add... ボタンを押します。
  • 表示されるダイアログボックスの Name: の所は何でもよいそうですが、とりあえずガイドの通り、Android Plugin と入力しました。
  • しばらくすると □ Developer Tools と表示されるのでチェックを入れて Next を押します。

f:id:OkadaHiroshi:20100506001624p:image

  • そのまま Next を押していきます。ライセンスの確認がありますので。I accept terms of the license agreements を選択し Finish をおします。
  • インストール中セキュリティー警告がでますが、今回はそのまま進めます。

f:id:OkadaHiroshi:20100506001625p:image

f:id:OkadaHiroshi:20100506001626p:image

  • Eclipse を再起動するかきかれるので再起動します。

Eclipse に Andorid SDK の設定する

  • Winodw -> Preferences でダイアログを開き Andoroid の所を開いて SDK Location: に先ほど展開した Andorod SDK の場所を設定します。

f:id:OkadaHiroshi:20100506001627p:image

コンポーネントのダウンロード

  • Window -> Andorid SDK and AVD Manager を選んで Andorid SDK and AVD Manager を開きます。
  • Avaalialbe Packege を選び 必要なパッケージを選びます。とりあえず全部選びます。

f:id:OkadaHiroshi:20100506001628p:image

f:id:OkadaHiroshi:20100506001629p:image

f:id:OkadaHiroshi:20100506001630p:image

Virtual Device の作成

  • Virtual Devices を選び New を選び Targe: を Android 1.5 - API Level 3 を選びあとの項目は適当に入力します。

f:id:OkadaHiroshi:20100506001631p:image

Help World の作成と実行

  • File -> New -> Ohters を選び Andoroid プロジェクトを選択します。

f:id:OkadaHiroshi:20100506001632p:image

  • New Andoroid Project ダイアログに下のように入力します。

f:id:OkadaHiroshi:20100506001633p:image

  • Build Path を設定します。
    • Project -> Properties を開き Java Build Path の Order and Export の Android 1.5 にチェックを入れます。
  • 今日は世界という文字列を設定しました。
    • HelloWorld/res/values/string.xml を開き hell(string) リソースの Value を こんにちは世界にします。

f:id:OkadaHiroshi:20100506001634p:image

  • HelloWorld を右クリックして Run as Android Application を選びます。
  • エミュレータが立ち上がってこんにちは世界と表示されます。

f:id:OkadaHiroshi:20100506001635p:image

*3

*1http://developer.android.com/intl/ja/sdk/index.html

*2http://www.ubuntu.com/getubuntu/releasenotes/1004#Sun%20Java%20moved%20to%20the%20Partner%20repository https://forums.ubuntulinux.jp/viewtopic.php?pid=57705 http://developer.android.com/intl/ja/sdk/index.html

*3:エミュレータが立ち上がるまでには結構時間がかかります。一旦立ち上がったらEclips実行中はたちあがたままにします。

2010-03-21 X61 Tablet をデュアルブートにしてみました

[]使用している Windows Vista マシン ( lenovo X61 Tablet ) に Ubuntu 9.10 をインストールしてデュアルブートにしてみました。

本当は、Ubuntu オンリーにしたかったのだが、いくつか使用している Excel シートとか、IE で無いとちょっと動作が変なサイト( 証券会社の情報ページ )とかがあって、なかなか Windows から自由になれません。

さて、

今まで、何回か Linux と Windows のデュアルブートを設定した事があるのですが、毎回結構苦労していました。( サスペンド領域とかブートローダーとか )

今回も、結構な覚悟をして作業を開始したのですが、あにはからんやアッサリ出来てしまいました。

ということで、何の参考にもならないと思いますが、一応、作業の手順を書いてみます。

ハードウエア

  • Ubuntu 9.10 の走っているデスクトップPC
  • USB メモリ ( その辺にあった 4GB の物 )
  • インストール対象 lenovo X61 Tablet

インストール用 USB メモリの作成

今回 Ubuntu 9.10 をインストールする lenovo X61 Tablet には光学ドライブが付いていないので、USB メモリからインストールすることにしました。

USBメモリ作成作業は Ubuntu 上での方が楽なので Ubuntu 9.10 の走っているデスクトップPCで行いました。

まず、Homepage | Ubuntu Japanese Team から Ubuntu 9.10 Desktop 日本語 Remix CD の iso イメージをダウンロードしてました。

それをシステム->システム管理->USBスタートアップディスクの作成でUSBに書き込みました。

f:id:OkadaHiroshi:20100321230313p:image

f:id:OkadaHiroshi:20100321231409p:image

インストール用パーティションの作成

Ubuntu をインストールするために Vista で利用している C: パーティションを小さくして 60GB 程の領域を確保しました。

こういった作業は 以前は面倒でしたが、Vista にはデータを残したままパーティションを小さくする機能がはじめからインストールされているので、簡単でした。

スタート->コンピュータ[右クリック]->管理を選び、

f:id:OkadaHiroshi:20100322003624p:image

記憶域->ディスクの管理を選択し、C:ドライブを右クリックし、60GBを空けました。

f:id:OkadaHiroshi:20100322004525p:image

Ubuntu 9.10 のインストール

先ほど作成した USBメモリを差し込み 再起動中に F12 を押して起動メニューを呼び出し、USB から起動しあとはインストール場所を先ほど作成した未使用領域にする以外は全て、ディフォルトのままでインストールできました。

ブートローダも特に普通にインストールするだけで Vista も、ThinkVantage(リカバリ等)も普通に選択できるようになっていました。

f:id:OkadaHiroshi:20100321235720j:image

調整

選択を見落としたのかハードウエアクロックが GMT になっていたので

# hwclock --localtime --systohc

で localtime に設定しました。

2009-10-14 [引越し]準備開始 このエントリーを含むブックマーク このエントリーのブックマークコメント

期日を決めないと、なかなか行動を開始できないので来月末までに引っ越すことにした。

先ずは今住んでいる部屋の管理会社に連絡して、退去通知の書類を送ってもらうことにした。

2009-07-30 [はてな]ブックマーク消してしまった このエントリーを含むブックマーク このエントリーのブックマークコメント

はてなブックマークFirefox 用 Add ON を入れて、いじっていたらブックマークを間違えて消してしまった。削除の時に確認が出ないので誤操作しやすいです。

あわててもう一度ブックマークし直しましたが、幾つか失ったブックマークがあるかもしれません。

最近の UI は上手くいっている時は気持ち良いけれど、失敗時や誤操作に対するケアが足りない物が多ような気がします。

2008-08-17

[] Microsoft Visual Studio 2008 で ruby-1.8.6-p287 をコンパイル

Ruby を使うにあたって今まではバイナリーをインストールしていましたが、

今回 Visual Studio 2008 でコンパイル、インストールしてみました。

ext/zlib, ext/openssl, rubygems も入れてみました。

自分の備忘のためと、誰かの参考になればとにインストール時のメモを書いておきます。

今回インストールした環境は以下のとおりです。

  • Windows Vista Home Premium (Service Pack 1) 32bit
  • Visual Studio 2008 Standard Edition
  • ダウンロードしたファイルの解凍には LhaForge *1 を使用しました。
  • 展開したソースファイルは C:\src に置きました。
  • ruby は C:\ruby にインストールしました。

ポイントは5つあります。

  1. 環境変数等を設定するため、コマンドプロンプトは VisualStudio をインストールすると作成される Visual Studio 2008 コマンド プロンプトから開いた。*2
  2. そのまま、コンパイルインストールすると msvcr90-ruby18.dll となってしまい例えば vim から呼び出すときに都合がわるいので変更しました。
  3. zlib の make 時にマニュフェストを埋め込まないので、手動で埋め込みました。
  4. openssl のコンパイルに perl が必要だったので ActivePerl をインストールしました。
  5. ext/openssl の作成時にコンパイルエラーが出るので、CFLAGS を調整しました。

Ruby 本体のインストール

  • Ruby 公式サイト http://www.ruby-lang.org/ja/ から 1.8系の最新リリース ruby-1.8.6-p287.tar.gz をダウンロードしました。
  • ソースを解凍して c:\src\ruby-1.8.6-p287\ 以下に配置しました。
  • c:\src\ruby-1.8.6-p287\win32\README.win32 を読みました。
  • Visual Studio 2008 コマンド プロンプトを起動して、次のようにしました。
C:\Program Files\Microsoft Visual Studio 9.0\VC>cd \src\ruby-1.8.6-p287
C:\src\ruby-1.8.6-p287>win32\configure.bat
  • エディタで Makefile の次の部分を修正しました。
前 # RUBY_SO_NAME = $(RT)-$(RUBY_INSTALL_NAME)$(MAJOR)$(MINOR)
後 RUBY_SO_NAME = msvcrt-$(RUBY_INSTALL_NAME)$(MAJOR)$(MINOR)
  • 再びコマンドプロンプトに戻って次のようにしました。
C:\src\ruby-1.8.6-p287>nmake 
C:\src\ruby-1.8.6-p287>nmake test
C:\src\ruby-1.8.6-p287>nmake DESTDIR=c:\ruby install

次の作業を行なる前にシステムの環境変数 Path に C:\ruby\bin を追加し、一旦コマンドプロンプトを閉じました。

ext/zlib

  • zlib 公式サイト zlib http://zlib.net/ より zlib-1.2.3.tar.gz をダウンロードしました。
  • C:\src\zlib-1.2.3 以下にソースを展開しました。
  • 再び Visual Studio 2008 コマンド プロンプトを起動して、次のようにしました。
C:\Program Files\Microsoft Visual Studio 9.0\VC>cd \src\zlib-1.2.3
C:\src\zlib-1.2.3>nmake -f win32\Makefile.msc
C:\src\zlib-1.2.3>mt -manifest zlib1.dll.manifest -outputresource:zlib1.dll;2
C:\src\zlib-1.2.3>copy zlib1.dll c:\ruby\bin
C:\src\zlib-1.2.3>cd \src\ruby-1.8.6-p287\ext\zlib
C:\src\ruby-1.8.6-p287\ext\zlib>ruby extconf.rb --with-zlib-include=c:\src\zlib-1.2.3 --with-zlib-lib=c:\src\zlib-1.2.3
C:\src\ruby-1.8.6-p287\ext\zlib>nmake
C:\src\ruby-1.8.6-p287\ext\zlib>nmake install

マニュフェストを埋め込む件 http://kazuwe.tdiary.net/20080726.html が参考になりました。ありがとうございます。

ActivePerl

openssl をコンパイルするためには、perl が必要とのことで、ActivePerl をインストールしました。

ページ http://www.activestate.com/Products/activeperl/index.mhtml から Get ActivePerl のリンクをたどり

activeperl 5.10.0.1003 for Windows (x86) MSI をダウンロードしてインストールしました。

ext/openssl

  • http://www.openssl.org/source/ より openssl-0.9.8h.tar.gz をダウンロードしました。
  • C:\src\openssl-0.9.8h に展開したソースを置きました。
  • Visual Studio 2008 コマンド プロンプトを起動して、次のようにしました。
C:\Program Files\Microsoft Visual Studio 9.0\VC>cd \src\openssl-0.9.8h
C:\src\openssl-0.9.8h>perl Configure VC-WIN32 --prefix=c:/ruby
C:\src\openssl-0.9.8h>ms\do_ms.bat
C:\src\openssl-0.9.8h>nmake -f ms\ntdll.mak
C:\src\openssl-0.9.8h>nmake -f ms\ntdll.mak test
C:\src\openssl-0.9.8h>nmake -f ms\ntdll.mak install
C:\src\openssl-0.9.8h>cd \src\ruby-1.8.6-p287\ext\openssl
C:\src\ruby-1.8.6-p287\ext\openssl>ruby extconf.rb --with-openssl-include=c:\ruby\include --with-openssl-lib=c:\ruby\lib

このままだとコンパイルが通らないので、Makefile を書き換えました。

前 CFLAGS   =  -MD  -O2b2xty-  
後 CFLAGS   =  -MD -DWIN32_LEAN_AND_MEAN -O2b2xty-  

以下のように make してインストールしました。

C:\src\ruby-1.8.6-p287\ext\openssl>nmake
C:\src\ruby-1.8.6-p287\ext\openssl>nmake install

rubygems

  • http://rubyforge.org/frs/?group_id=126 より rubygems-1.2.0.tgz をダウンロードしました。
  • C:\src\rubygems に展開したソースを配置しました。
  • Visual Studio 2008 コマンド プロンプトを起動して、次のようにしました。
- C:\Program Files\Microsoft Visual Studio 9.0\VC>cd \src\rubygems-1.2.0
- C:\src\rubygems-1.2.0>ruby setup.rb

追記

一応、gem install --remote twittre4r とかで twitter4r をインストールして動作していますが、何か間違いや不具合があったら教えてください。

openssl のアセンブラソースのコンパイルには失敗しました。一旦コンパイルに失敗すると nmake clean してもクリアされない情報があるようで、展開したてのソースからやりなおさないと成功しませんでした。

*1http://claybird.hp.infoseek.co.jp/garage/lhaforge/index.html

*2:普通にコマンドプロンプロを起動した場合は C:\Program Files\Microsoft Visual Studio 9.0\VC\で vcvarsall.bat x86 を実行する。

2008-06-16

自宅サーバー (SELinux)

CGIが動かない原因を調べたところ、やはり CGI の中でネットワーク接続を使っていたのが原因のようでした。

色々ググッたりして、

第一人者がやさしく教える新SELinux入門 - 第4回 ポリシーを編集せずに問題に対処する:ITpro

を参考に

# /usr/sbin/setsebool httpd_can_network_connect 1

とすることで一応動作するようになりましたが、SELinux についてはもっと勉強する必要がありそうです。