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

H2 - afterカラムして追加はできないような....BEFOREしかない 2011/06/26

H2です。
dropしてcreateしてたテーブルですが、データが入ってしまったので、alterしてカラム追加です。

alter_table_add - SQL Grammar

afterカラムして追加はできないような....BEFOREしかないような。

一番最後に追加したい場合は普通にaddするだけなので、afterが文法的になくても困らないけど。

antでパスワード入力させて処理する 2011/06/25

antです。
inputというのが使えます。

<target name="jetty_restart">
<input message="Please enter password" addproperty="scp.pass"/>
<sshexec host="${scp.server}" keyfile="${ssh.key.file}"
username="${scp.user}" password="${scp.pass}"
command="echo '${scp.pass}' | sudo /etc/init.d/jetty stop"
trust="yes"/>
<sshexec host="${scp.server}" keyfile="${ssh.key.file}"
username="${scp.user}" password="${scp.pass}"
command="echo '${scp.pass}' | sudo /etc/init.d/jetty start"
trust="yes"/>
</target>

とくに深い理由もなくMercurialを採用 2011/06/19

ソースコード管理せねばと思いつつ、ほったらかししていたので、重い腰をあげチャレンジ。
はじめはGitだ!!と思ってたけど、面倒そうだなーというわけで、いきなりMercurial。

名前の呼び方でいうとgit三文字のほうが言いやすい。
mercurialはコマンドはhgだけど、まったくもっていいづらい。

おれおれ開発なので、僕ひとり。基本はローカルで管理。気が向いたらサーバ側にpushって感じです。
eclipseのプラグインは、コメント文字化けするかなーと心配したけど、そんなことないみたい。
サーバ側にpushするときは、sshで。
centos側にhgユーザを作成して、/home/hg/にプロジェクトをのせていこかなと考えてるけど、/var/repo/{project}がいいかなー。

とりあえず、

hg push ssh://hg@xx.xx.xx.xx//home/hg/repo/


参考
でぃべろっぱーってへてむる: sshでMercurialをする時に最初に躓くところ

いろいろまとめて実行順序を指定して、targetを実行したい場合はantcallで指定していくのがよいようだ。 2011/06/19

antです。

いろいろまとめて実行順序を指定して、targetを実行したい場合はantcallで指定していくのがよいようだ。

2685 - ようやく80問とけた。100問まであと20問... 2011/06/16

そしてPKU
ようやく80問とけた。100問まであと20問
簡単な問題。

2685 -- Numeral System

実は、charをintにするのに手間取った...
Character.getNumericValueを使いました。

package p2685;

import java.io.IOException;
import java.util.Scanner;

public class Main {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
int c = scanner.nextInt();
scanner.nextLine();
for (int i = 0; i < c; i++) {
String line = scanner.nextLine();
System.out.println(to_s(a(line)));
}
}

static int a(String line) {

String[] ss = line.split(" ");
int a = 0;
for (String s : ss) {
a += to_n(s);
}
return a;
}

static String to_s(int n) {
StringBuilder sb = new StringBuilder();
int i = n / 1000;
if (i == 1) {
sb.append("m");
} else if (i != 0) {
sb.append(i).append("m");
}
i = (n % 1000) / 100;
if (i == 1) {
sb.append("c");
} else if (i != 0) {
sb.append(i).append("c");
}
i = (n % 100) / 10;
if (i == 1) {
sb.append("x");
} else if (i != 0) {
sb.append(i).append("x");
}
i = n % 10;
if (i == 1) {
sb.append("i");
} else if (i != 0) {
sb.append(i).append("i");
}

return sb.toString();
}

static int to_n(String s) {
char[] cs = s.toCharArray();
int a = 0;
int i = 1;
for (char c : cs) {
if (Character.isDigit(c)) {
i = Character.getNumericValue(c);
continue;
}
// mcxi
switch (c) {
case 'm':
a += 1000 * i;
break;
case 'c':
a += 100 * i;
break;
case 'x':
a += 10 * i;
break;
case 'i':
a += 1 * i;
break;
}
i = 1;
}

return a;
}
}

2636 - コンセントもんだい 2011/06/14

ひさしぶりのPKU

ちょーかんたんなもんだい

2636 -- Electrical Outlets

package p2636;

import java.io.IOException;
import java.util.Scanner;

public class Main {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
int c = scanner.nextInt();
scanner.nextLine();
for (int i = 0; i < c; i++) {
String line = scanner.nextLine();
System.out.println(a(line));
}
}

static int a(String line) {

String[] ss = line.split(" ");
int a = 0;
if (1 < ss.length) {
a += Integer.parseInt(ss[0]) - 1;
} else {
a += Integer.parseInt(ss[0]);
}
for (int i = 1; i < ss.length - 1 ; i++) {
a += Integer.parseInt(ss[i]) - 2;
}

if (1 < ss.length) {
a += Integer.parseInt(ss[ss.length-1]) ;
} else {

}
return a;
}
}