プログラマメモ2 - programmer no memo2

IME変更 2007/01/30

テキストコンポーネントにフォーカスリスナーをあたえる。
フォーカスがかわるときにendCompositionで確定してあげるといいっぽい。


public void focusGained(FocusEvent e) {
textComponent.getInputContext().setCharacterSubsets(
new Character.Subset[] { InputSubset.KANJI });
}

public void focusLost(FocusEvent e) {
textComponent.getInputContext().endComposition();
textComponent.getInputContext().setCharacterSubsets(null);
}

文字コードについて 2007/01/23

いつか自分が勉強するときのためにリンク
PDF 千夜一夜: 2007年01月04日 アーカイブ
PDF 千夜一夜: 2007年01月05日 アーカイブ
PDF 千夜一夜: 2007年01月06日 アーカイブ
PDF 千夜一夜: 2007年01月07日 アーカイブ
PDF 千夜一夜: 2007年01月09日 アーカイブ
PDF 千夜一夜: 2007年01月10日 アーカイブ

うーんむずかしい。。。

協調路線強化? Eclipse Foundation、JCP参加へ (MYCOMジャーナル) 2007/01/23

協調路線強化? Eclipse Foundation、JCP参加へ (MYCOMジャーナル)
僕はeclipseのどちらかといいますと好きですが、NetBeansのマティスとかも好きです。eclipseとNetBeans仲良くしていって欲しいです。

vi エディターで全部の文字列検索して置換したい 2007/01/23

vi エディターで全部の文字列検索して置換したい


:%s/検索/置換/g


参考:
vim正規表現

velocity コードサンプル 2007/01/23
2014/01/26

テンプレートファイルを読み込んで、表示したい。


jakarta commons velocityがいい感じです。
コードはvelocityのサイトにあるチュートリアルをそのまま参考にしています。


import java.io.StringWriter;
import java.util.Properties;

import org.apache.velocity.app.Velocity;
import org.apache.velocity.exception.MethodInvocationException;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.VelocityContext;

public class Test2 {
public static void main(String args[]) throws ResourceNotFoundException,
ParseErrorException, MethodInvocationException, Exception {
Properties prop = new Properties();

// set classpath
prop.setProperty("file.resource.loader.path", "./target/classes/velocity/");
Velocity.init(prop);

VelocityContext context = new VelocityContext();

context.put("name", "Velocity");
context.put("project", "Jakarta");
StringWriter w = new StringWriter();

//
Velocity.mergeTemplate("testtemplate.vm", "utf-8", context, w);
System.out.println(" template : " + w);

String s = "We are using $project $name to render this.";
w = new StringWriter();
Velocity.evaluate(context, w, "mystring", s);
System.out.println(" string : " + w);
}
}

オブジェクトを送信するための簡単コード 2007/01/23

オブジェクトを送信するための簡単コード

ソケットを使用してオブジェクトを送信したい。



protected Object send(String host, int port, Object object) {
ByteArrayOutputStream bas = null;
ObjectOutputStream bos = null;
Socket socket = null;
try {
socket = new Socket(host, port);
bos = new ObjectOutputStream(socket.getOutputStream());
bos.writeObject(object);
bos.flush();
ObjectInputStream ois = new ObjectInputStream(socket
.getInputStream());
return ois.readObject();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
if (bas != null) {
try {
bas.close();
} catch (IOException e) {
}
}
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
}
}
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
}
}
}
return null;
}

eval() 2007/01/21
2007/06/10

君はevalを知っているか!!
と問われると非常に心持たないです。
というのも、ついつい長い間なれしたしんだ言語の枠組みから考えてしまうので、イメージしづらいです。
もちろんjavaにはjavascriptのevalっぽいのはありません。

似たようなことを使用とすると、僕が思いつくのは、

(1)リフレクションを駆使して文字列から実行する
※パースする処理は書かないといけない
(2)javaから他のスクリプト言語を実行できるんだから、それを評価実行する
※これってjavaをそのまま実行するわけではない
(3)あたえられた文字列をコンパイルして実行する
※javaで書かれたjavaのコンパイラがあるようだから、そういったものを利用する
などなど。


javascriptのevalはかなり昔のjavascriptからあるようですね。

僕がevalのその存在に注目したのはjson(JavaScriptObjectNotation)を知ってからです。
jsonの記事を読んだときはじめはピンとこなかったのですが、非常におもしろいと思いました。

Workflow Patterns 2007/01/19

Workflow Patterns
ワークフローのパターン

mix-in 2007/01/18
2007/06/10

これもよくわからない。

Macromedia - Flex Documentation: Mix-in の使用 - Mix-in の概要

Mixin - Wikipedia, the free encyclopedia

プロトタイプベース 2007/01/18
2007/06/10

君はオブジェクト指向を理解しているのかい?


昔、そういうふうに聞かれて、困った記憶があります。

オブジェクト指向プログラミング - Wikipedia

それはそれでよいとして、
知らなかったのですが、
オブジェクト指向言語にはプロトタイプベースというのがあるようですね。

プロトタイプベース - Wikipedia

プロトタイプベース・オブジェクト指向

linux コンソール上のbeep音を消す。 2007/01/18

日記200602 - 土松 隆志のぺーじ(Tsuchimatsu WEB)

beep音が近所迷惑になりそうなので、
/etc/inputrc

set bell-style none
とすればいいっぽい。

スラング RTFM - Wikipedia, the free encyclopedia 2007/01/18
2007/01/19

RTFM - Wikipedia, the free encyclopedia
インターネット上でのスラング

eclipseでpom.xmlを編集するときに赤ばってんがつく 2007/01/17

eclipseでpom.xmlを編集するときに赤ばってんがつくときがある。
これは、xmlbuddyなどのxml編集プラグインをするときでるようです。
そんなときは、
pom.xmlのprojectタグをおきかえます。下記でおきかえます。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

eclipse maven2でcommons vfsを使えるようになるまで 2007/01/17
2007/01/23

(1)eclipseのプロジェクトを作っておく
(2)右クリックのmaven2からpom.xmlをつくっておく
(3)右クリックのmaven2から依存ライブラリを指定(add dependencyを使用する)する
vfsと入れれば、commonsのvfsをみつけてくれる。
自動的にダウンロードしてくれる。



あわせて他の依存ライブラリも登録しておく。
そんな感じで、
http://jakarta.apache.org/commons/vfs/download.html
ここにかいてあるライブラリを全部addします。

(4)mvn eclipse:eclipseを実行するとpom.xmlのライブラリをeclipseのプロジェクトに反映してくれます。
これは、eclipse上でpom.xmlを右クリックのコンテキストメニューのRunAsからmaven2 buildのGoalにeclipse:eclipseでもOK

mvn -DdownloadSources=true eclipse:eclipse
だとソースもattachしてくれます。
参考:http://www.techscore.com/tech/ApacheJakarta/Maven/6-2.html#maven-6-13

GWTでホストモードでログ 2007/01/16

GWTで開発するときに使用する。
ホストモードのときに使用。

GWT.log("this is log", null);

maven2 eclipse windowsならば 2007/01/16
2007/01/19

(1)maven2をダウンロードする
http://maven.apache.org/download.html
(2)環境変数のPathにmaven2/binを追加しておく
(3)JAVA_HOMEが設定されているか確認
(4)eclipseでSoftware Updatesを利用してpluginをインストールしておく
http://m2eclipse.codehaus.org/
(5)ユーザホームディレクトリに.m2を作成なかにsettings.xmlをおく
(6)setting.xmlを編集する(プロキシ等)
http://maven.apache.org/ref/2.0.4/maven-settings/settings.html
(7)mvn projecthelp:effective-settings を実行
(8)eclipse上でmaven2のプラグインの設定を行う。ローカルリポジトリーの位置とかを設定する。
参考:http://www.techscore.com/tech/ApacheJakarta/Maven/4.html
(9)M2_REPOの設定
eclipseの中からは、M2_REPOという変数をみて、リポジトリの位置がわかるようなので、この設定をして行いと、eclipseからライブラリの位置がわからなくなる。
a.コマンドを使う
mvn -Declipse.workspace= eclipse:add-maven-repo
b.eclipse本体に設定する
[preferences]-[java]-[build path]-[classpath variables]

参考:
http://www.techscore.com/tech/ApacheJakarta/Maven/4.html

The Space Shuttle Launch Team 2007/01/16

The Space Shuttle Launch Team

スペースシャトルの発射
HAL/Sという言語を使用しているらしい。

入力されたテキストエリアの各行の先頭の空白文字を削除 2007/01/09

入力されたテキストエリアの各行の先頭の2個の空白文字を削除します。

var reg = new RegExp("^\\s{2}", "gm");
itext = itext.replace(reg, "");

数かどうかの判定 2007/01/09

javascriptで数値の判定法。
正規表現を使用している。

function isNumeric(num){
if (num.match(/[^0-9]/g)) {
return false;
}
return true;
}


参考

ほとんどそのまま参考
数値チェック

こういう方法もあるんだ!!
IT戦記 - 文字列でもオブジェクトでもなんでも一発で数値に変換!
この方法は、javascriptの言語仕様を応用して作成しています。

他には素直に文字配列を廻して、一文字づつ数字判定するというのもあり。

in favor of 2007/01/09

javadocコメント

in favor of
賛成して

java 推奨しないメソッドで代わりのものを推奨する

@deprecated in favor of 推奨するメソッド()

cisa 2007/01/07

http://www.isaca.gr.jp/cisa/
http://www.isaca.gr.jp/cisa/

国際資格。
情報システムの監査および、セキュリティ、コントロールに関する高度な知識、技能と経験を有するプロフェッショナルのための資格。

現在、ここのサイトはさっぱりしすぎている感がありますね。

簡単なベンダー資格より、本格的な国際資格を視野に入れましょうか。

php サーバ変数 2007/01/07

サーバ変数
サーバ変数

よく忘れるのでメモ

$_SERVER['HTTP_REFERER']

多値を返せる言語 2007/01/06

多値を返せる言語が世の中にはある。

多値が返せるようになって、複数の内容を計算して返す関数が、複数の内容全部を収めるデータ構造を用意せずに返せるようになった。
ANSI Common Lisp
ポール グレアム Paul Graham 久野 雅樹
p.82

comet 2007/01/02

CodeZine:CometとAjaxを利用したチャットサーバの実装()
CNET Japan Blog - 江島健太郎 / Kenn's Clairvoyance:Lingr and Comet - 技術解説編

Lispはオブジェクト指向プログラミングを超える 2007/01/02
2014/01/05

ANSI Common Lisp
ポール グレアム Paul Graham 久野 雅樹
4894714337

クロージャ、カーリー化、λ(ラムダ)について勉強しようと思い本を買いました。

はじめの導入の章に、

マクロとクロージャと、データ型の実行時指定(run-time typing)とによって、Lispはオブジェクト指向プログラミングを超える。ANSI Common Lisp p.2

とありました。

Beating the Averages 普通のやつらの上を行け(リンク切り)


2014/01/05
リンク
Beating the Averages

ハノイの塔 2007/01/02

ハノイの塔

public class Hanoi {

public static void main(String[] args) {
hanoi(16, 'A', 'B', 'C');
System.out.println(cnt);
}

static long cnt = 0;
public static void hanoi(int n, int a, int b, int c){

if(0<n){
hanoi(n - 1, a, c, b);
System.out.format("%c --> %c\n", a,c);
hanoi(n - 1, b, a, c);
cnt++;
}
}
}