h2db de fizzbuzz
select s.X as id , l.label from SYSTEM_RANGE(1, 100) as s left join ( select 3 as X, 'fizz' as label union select 9 as X, 'fizz' as label union select 12 as X, 'fizz' as label union select 5 as X , 'buzz' as label union select 10 as X , 'buzz' as label union select 0 as X , 'fizzbuzz' as label ) l on ( mod(s.X, 15) = l.X ) order by id
java 問題
1) java.lang.Iterable
2) 下記プログラムを実行した際の、三個所の if 文について説明せよ
/** * @author aileron */ public class EqTest { /** * @param args */ public static void main(final String... args) { final String test1 = test1(); final String test3 = test3(); final String test2 = "AAAA"; System.out.println("test1 : " + test1); System.out.println("test2 : " + test2); System.out.println("test3 : " + test3); if (test1.equals(test2)) { System.out.println("test1 eq test2"); } if (test1 == test2) { System.out.println("test1 == test2"); } if (test1 == test3) { System.out.println("test1 == test3"); } } /** * @return test1 */ private static String test1() { return "AAAA"; } /** * @return test3 */ private static String test3() { String test3 = ""; for (int i = 0; i < 4; i++) { test3 += "A"; } return test3; } }
3) 下記プログラムの実行結果をしめせ
public class RecTest { /** * @param args */ public static void main(final String... args) { final List<String> list = new ArrayList<String>(); list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add("ddd"); list.add("eeee"); final int result = rec(list); System.out.println(result); } /** * @param args * @return ok */ public static int rec(final List<String> args) { final String arg = args.get(args.size() - 1); System.out.println(arg); if (args.size() == 1) { return 2; } final List<String> subList = args.subList(0, args.size() - 1); final int result = rec(subList); return result * 2; } }
java 修得度問題
1)Javaのプロセスに対してSIGQUITシグナルを送った時の動作を説明してください。 2)public static void main 関数を実装し Bをインスタンス化し、標準出力に "20-test" と出力される様にせよ package sample; class A<A> { class B<B> { public void out() { System.out.print(a); System.out.print("-"); System.out.println(b); } private A a; private B b; } /** * @param args */ public static void main(final String... args) { } } 3)public static void main を 実行した結果 hoge fuga hogehoge になるように enum B の コンストラクタは修正せず 実装せよ package sample; class A { static interface AA { String value(); } enum B implements AA { A, B, C; private B() { } } /** * * * @param args */ public static void main(final String... args) { System.out.println(B.A.value()); System.out.println(B.B.value()); System.out.println(B.C.value()); } } 4)本プログラムを実行した結果を示せ package sample; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @B(C.class) public class A { /** * @param args * @throws Exception */ public static void main(final String... args) throws Exception { System.out.println(C.class.getAnnotation(B.class) .value() .getAnnotation(B.class) .value() .newInstance() .value()); } /** * @return label */ public String label() { return "fuga"; } /** * @return value * @throws Exception */ public String value() throws Exception { return this.getClass() .getAnnotation(B.class) .value() .newInstance() .getClass() .getAnnotation(B.class) .value() .newInstance() .value(); } } @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @interface B { String lable() default "hogexhoge"; Class<? extends A> value() default A.class; } @B(D.class) class C extends A { /** * @return label */ @Override public String label() { return "hogahoga"; } /** * @return value */ @Override public String value() { return "fugafuga"; } } @B class D extends A { }
メモ
ものすごい最低限のvimrcメモ
set ai set ts=4 set nobackup set nowritebackup set incsearch set noignorecase set visualbell set cursorline set shiftwidth=4 set nocompatible set hidden set backspace=indent,eol,start set diffopt=filler,iwhite set nofoldenable set foldmethod=marker set history=2000 filetype plugin indent on syntax enable set laststatus=2 set statusline=%n:\ %<%f\ %m%r%h%w[%{&fileformat}][%{has('multi_byte')&&\ &fileencoding!=''?&fileencoding:&encoding}]\ 0x%B=%b%=%l,%c\ %P
ドメインモデルとトランザクションスクリプトとアジャイル
ドメインモデルとは
あるビジネスの固有の事象を定義し構築していく
手法だと思う
その為に必要な要素としては
・システムに対してのユーザの理解
・ビジネスに対しての開発者の理解
で有ると思う。
それって言うのは、とてもアジャイルで
日本よりも海外の感覚に近しいのかも知れない
また、ドメインモデルは、難しい
それは、複雑な事象を簡単にシンプルにする為に
考える事が必要で有るからだ。
ただ、エンジニアとは考えると言う事が商売だ。
そこを簡単にして、素人100人で、でっち上げるのか
エンジニア10人で、ビジネスの為のシステムを構築するのか
どちらが良いのだろうか
ただし、全てをエンジニアが構築する必要は無く
ユーザ、エンジニア、エンジニアの卵達
全ての登場人物が素晴しく仕事をする為が
アジャイルだ
適材適所
トランザクションスクリプトを使用したり
ドメインモデルに設計したり
状況を把握し、最大化する事は大事
でも、そういった最大化する事が出来ない環境
最大化する必要の無い環境
それは、とてもツマラナイ。
やるならば、自身の強みを生かし
物事を最大化し
面白く戦うべきだろうネ。
maven2 で plugin を作ってみる
こんなpomで
<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"> <modelVersion>4.0.0</modelVersion> <groupId>cc.aileron</groupId> <artifactId>samplemojo</artifactId> <packaging>maven-plugin</packaging> <version>0.0.1</version> <name>samplemojo Maven Mojo</name> <url>http://maven.apache.org</url> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <encoding>UTF-8</encoding> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.3</version> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-plugin-api</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
こんな java で
public class MyMojo extends AbstractMojo { @Override public void execute() throws MojoExecutionException, MojoFailureException { final Console console = System.console(); while (true) { final String line = console.readLine("q:"); System.out.println("a:" + line); if (line.equals("quit")) { break; } } } }
mvn install して
mvn cc.aileron:samplemojo:sample
すると、ちゃんと対話型インタフェースで作れるよ!!!
lv5の30代もいれば、lv100000の20代もいる
http://el.jibun.atmarkit.co.jp/kouhai/2009/12/post-a5b3.html
SEなんて、うさんくさい職業については判らないけれども
プログラムを作るって上では、ピンキリって、とんでも無い。
かたやRTOS、かたやスクリプトで、webって言うシナリオを書いてる
シナリオライタ
技術者としての実力の違いは、異常なほど
開きをみせていると思うけれどもナ