vim7.3をインストールした

仕事ではJava+Subversionでの開発が多いですが、そろそろGitとかHTML5とかの知識もつけないとこれからは生き残れないと思った。
Zencodingとかもあるので、まずはvimmac標準でインストールされているものをバージョンアップすることにした。

su
port search vim
port install vim

無事、インストール完了。バージョンは、7.3.107。
今日は、もう遅いので寝ます。

Log4jで複数Javaアプリから同一ログファイルに書き込むことができるか?

業務で同一ファイルに対して複数のバッチプログラムからメッセージを出力する要件が出そうなので、実験してみた。
以下のサンプルコードで、無事に複数Javaアプリからファイルへの書き込みができた。

サンプルコード

import org.apache.log4j.Logger;

public class LogClient {

    public static final Logger logger = Logger.getLogger(LogClient.class);
    private String name;

    public static void main(String[] args) {

        String name = args[0];
        LogClient client = new LogClient(name);

        client.execute();

    }

    public LogClient(String name) {
        this.name = name;
    }

    public void execute() {
        logger.info("プログラムを開始します");

        for (int i = 0; i < 20; i++) {
            logger.info(String.format("<%s> 値=%d", name, i));
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        logger.info("プログラムを終了します");
    }
}

起動用バッチファイル

@set BASE=.
@set CLASSPATH=.\bin
@set CLASSPATH=%CLASSPATH%;.\lib\log4j-1.2.13.jar
java LogClient %1

ログ出力結果

2010-03-16 09:23:49,812  INFO [main] LogClient - プログラムを開始します
2010-03-16 09:23:49,812  INFO [main] LogClient -  値=0
2010-03-16 09:23:50,312  INFO [main] LogClient -  値=1
2010-03-16 09:23:50,812  INFO [main] LogClient -  値=2
2010-03-16 09:23:51,062  INFO [main] LogClient - プログラムを開始します
2010-03-16 09:23:51,062  INFO [main] LogClient -  値=0
2010-03-16 09:23:51,312  INFO [main] LogClient -  値=3
2010-03-16 09:23:51,562  INFO [main] LogClient -  値=1
2010-03-16 09:23:51,812  INFO [main] LogClient -  値=4
2010-03-16 09:23:52,062  INFO [main] LogClient -  値=2
2010-03-16 09:23:52,312  INFO [main] LogClient -  値=5
2010-03-16 09:23:52,562  INFO [main] LogClient -  値=3
2010-03-16 09:23:52,812  INFO [main] LogClient -  値=6
2010-03-16 09:23:53,062  INFO [main] LogClient -  値=4
2010-03-16 09:23:53,312  INFO [main] LogClient -  値=7
2010-03-16 09:23:53,562  INFO [main] LogClient -  値=5
2010-03-16 09:23:53,812  INFO [main] LogClient -  値=8
2010-03-16 09:23:54,062  INFO [main] LogClient -  値=6
2010-03-16 09:23:54,312  INFO [main] LogClient -  値=9
2010-03-16 09:23:54,562  INFO [main] LogClient -  値=7
2010-03-16 09:23:54,812  INFO [main] LogClient -  値=10
2010-03-16 09:23:55,062  INFO [main] LogClient -  値=8
2010-03-16 09:23:55,312  INFO [main] LogClient -  値=11
2010-03-16 09:23:55,562  INFO [main] LogClient -  値=9
2010-03-16 09:23:55,812  INFO [main] LogClient -  値=12
2010-03-16 09:23:56,062  INFO [main] LogClient -  値=10
2010-03-16 09:23:56,312  INFO [main] LogClient -  値=13
2010-03-16 09:23:56,562  INFO [main] LogClient -  値=11
2010-03-16 09:23:56,812  INFO [main] LogClient -  値=14
2010-03-16 09:23:57,062  INFO [main] LogClient -  値=12
2010-03-16 09:23:57,312  INFO [main] LogClient -  値=15
2010-03-16 09:23:57,562  INFO [main] LogClient -  値=13
2010-03-16 09:23:57,828  INFO [main] LogClient -  値=16
2010-03-16 09:23:58,062  INFO [main] LogClient -  値=14
2010-03-16 09:23:58,328  INFO [main] LogClient -  値=17
2010-03-16 09:23:58,562  INFO [main] LogClient -  値=15
2010-03-16 09:23:58,828  INFO [main] LogClient -  値=18
2010-03-16 09:23:59,062  INFO [main] LogClient -  値=16
2010-03-16 09:23:59,328  INFO [main] LogClient -  値=19
2010-03-16 09:23:59,562  INFO [main] LogClient -  値=17
2010-03-16 09:23:59,828  INFO [main] LogClient - プログラムを終了します
2010-03-16 09:24:00,062  INFO [main] LogClient -  値=18
2010-03-16 09:24:00,562  INFO [main] LogClient -  値=19
2010-03-16 09:24:01,062  INFO [main] LogClient - プログラムを終了します

「Application does not specify an API level requirement!」のエラーが出る

Google Androidプログラミング入門

Google Androidプログラミング入門

Androidの入門書を少しずつ読みながら勉強中です。

身長と体重からBMIを計算するサンプルを作っているところですが、実行するとEclipseのコンソールに赤字で以下のようなエラーメッセージが表示されました。

WARNING: Application does not specify an API level requirement!
Device API version is 3 (Android 1.5)

エラーメッセージで検索してみると、同様のメッセージが出ている人を発見。さらに、解決方法も書いてあった!!

http://d.hatena.ne.jp/skelton_boy/20091007


原因は、マニフェストファイルに妥当なプラットフォームバージョンのAPIレベルを指定する必要があるらしい。
早速、AndroidManifest.xmlを以下のように修正したところ、エラーメッセージが表示されなくなりました。
めでたし、めでたし。。。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.mamezou.android.bmicalc"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".BMICalculatorActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="3" />     <== これを追加
</manifest>

Eclipseでマッピング処理が遅くて応答なしになるのを回避するには・・・

Teedaを使ったプロジェクトを1年半くらい続けています。
1年半も続くと、画面数増加に伴いクラス数も大幅に増えてきました。
そして最近、リリース用ブランチなんかを新規にチェックアウトすると、コンパイル後の「マッピング処理」というもので、Eclipseが応答なしになっていまうケースが多発していました。

調べたところ、この「マッピング処理」はDoltengプラグインによるものだと分かり、Doltengの設定により「マッピング処理」を無効にする方法が分かったので、メモしときます。

手順

1.プロジェクトのプロパティを開く
2.Doltengの項目を開き、以下のの項目のチェックをはずす
 ・ページ・マーカーを使用
 ・DIマーカーを使用
 ・Sqlマーカーを使用


ただし、この設定を行うとHTMLとかの対応マーカが出力されなくなりますので、必要な方は外さない方がよいかもしれませんね。
また、ここでの「マッピング処理」は、Pleiadesプラグインを使っているので、使ってない場合は「Process Mapping」と表示されるっぽいです。

S2DaoTestCaseで使うエクセルで日付を書くときの注意点

readXlsAllReplaceDb等を使ってエクセルファイルでデータベースを初期化する場合

  • セルの書式設定は日付にする
  • セルの値は、シングルクォート無しで「2007/0801 12:31:50」のように入力する

検索結果やINSERT後の期待値をエクセルで指定する場合

  • セルの書式を文字列にして、「'2007-08-01 00:00:00.0」とミリ秒まで入力する