fkm blog

software開発に関することを書いていきます

Java

TaskQueue作ってみた

今更感あるけど, 必要だったので作ってみた.TaskQueue 簡単な使い方 1. TaskQueueオブジェクトを作る. 型パラメータは各Taskの結果オブジェクトの型 TaskQueue<String> queue = new TaskQueueImpl<String>(); 2. Taskクラスを作る. もちろん無名クラスとして作ってもOK. 各Ta</string></string>…

Genericsの使い方?

実装が同じで, 型だけ違う場合はGenericsの出番ですが, <>だらけになって読みにくくなるというデメリット(?)もある気がする.で, こんな風に名前をつけてあげるのはどうだろう? public class MyDataList extends ArrayList<MyData> { }</mydata>

Eclipse 4.3で補完候補がでない

さっそくEclipse 4.3にしてみました(`・_・´)ADTのインストールは, 問題なしエディタは, 問題あり(´・_・`)ぐぐってみたら, 古いバージョンでしたが, 遭遇してた人, いましたここ!Macの場合だと, 環境設定 -> Java -> Editor -> Content Assist -> Advance…

Eclipse 4.3

今年ももうこの季節がやってきましたーガード節の変換をやってくれるのはすごいなー

サーバーサイドコード

データを入れて取り出すだけのAPIを地味ーに書いてる. 単純な処理ぐらい, 超高速に動いて簡単に書ける何かが欲しいところ。。。

Gradleで, テスト実行時は別のjarを使いたい

android.jarはstubなので, Unittest実行時(not Android JUnit test)は別のjarを使いたい というケースによく遭遇してる. gradleさんだと, こんな感じでclasspathをいじれる test { // remove android.jar sourceSets.test.runtimeClasspath = sourceSets.tes…

Javaで署名を作って, 認証する

In-app billingの自前版みたいなのをやろうかなーとおもって調査. 鍵を作る opensslコマンドを使う. まずは秘密鍵 $ openssl genrsa -out private.keyこのままじゃ使えないので, pkcs8コマンド使って暗号化. openssl pkcs8 -in private.key -nocrypt -topk8 …

GradleでJavadocを作る

javaプラグインいれるとjavadocタスクが付いてくる. $ ./gradlew clean javadocoverview.htmlがある場合は, 下記をbuild.gradleに追記. javadoc { options.overview = "src/main/java/overview.html" }

Eclipseをちゃんと使おう

あとできれいにします. Windows版 あとで書きます Mac版 候補を表示 こいつは有名ですよね Ctrl + Space 代入文に変換 Command + 2 L QuickFixの表示 Command + 1 エラーにジャンプ Command + . Source のメニューを表示. Overrideやgetter/setterの作成時に…

SwingでAsyncTack風なことをする

Java 6のSwingにはSwingWorkerなる便利なやつがいるみたい. 使い方はAndroidのAsyncTaskに似てる. // 型引数の1つ目はdoInBackgroupd()の戻り値の型 SwingWorker<String, Void> worker = new SwingWorker<String, Void>() { @Override protected String doInBackground() throws Exceptio</string,></string,>…

HttpClient 4.2以降の使い方

マルチスレッドでHttpClientを使うときはなんか注意点あったよなーと思ってぐぐると出てくるのがThreadSafeClientConnManager. でもこれ, 4.2からDeprecatedになってたりする(´・_・`)Javadocはここ代わりにPoolingClientConnectionManagerを使いましょうと書…

ランダムな文字列を取得する

32文字以内であればUUIDを使うという手もある. String id = UUID.randomUUID().toString().replaceAll("-", ""); でもcommons.langのAPI使うほうが, きっと簡単. import org.apache.commons.lang.RandomStringUtils; RandomStringUtils.randomAlphanumeric(4…

JavaでAES

暗号化/復号化をしたいときに. 暗号化 鍵を作る Stringを鍵にしたい場合は, getBytes()後が256bitにしないと怒られます. 半角英数で32文字をgetBytes("UTF-8")ってやればOK. 暗号化したいものをbyte列にする これもまたgetBytes()やるだけ. 暗号化しよう Cip…

Javaの正規表現

Javaで正規表現マッチングを使いたい場合, java.util.regex.Patternと, java.util.regex.Matcherを使いますよね. この, Matcherのmatches()メソッドにはこんなことが書いてます. ソースはここ matches メソッドは、入力シーケンス全体とパターンをマッチする…

Substringではまる

ほぼ全ての言語にSubstring的な関数/メソッドがあると思いますが, これが言語によって引数の意味が違うという罠があったりなかったり. 疑似コードっぽいので違いを表現してみます. String s = "abcdefg"; print s.substring(1, 3); // Javaの場合 bc (インデ…

JavaとC#のGenericsの違い

monoでC#を書いてるfkmですこんにちは.今日はGenericsの話. GenericsはJavaとC#の両方にありますが, 実は地味ーに違いがあったりします. C#では, 型パラメータにワイルドカード(型パラメータに?をいれる)が使えません(´・ω・`)なので, 以下のようなJavaで…

パッケージ構成はどうするのがいい?

今, 直面している疑問をぶつけます.実装クラスのパッケージ名はどうするのがベター?構成はこんな感じ. 各javaファイルはinterface jp.fkmsoft.mywebservice |- api |- rest -- リクエストを直接受ける人 | |- Api1.java | |- Api2.java |- service -- rest…

Mavenで、テスト時はこのjarを除外したい

Mavenでテストを実行する際のお話."このモジュールは別チームが開発するから, とりあえず現時点ではstub用jarを使ってビルドを頼む"と言われた場合, dependencyにはscope:compileをつける. <dependency> <groupId>jp.fkmsoft.moke</groupId> <artifactId>libmoke</artifactId> <version>0.0.1</version> <scope>compile</scope> </dependency> このstub用jarがstubとし…

Jerseyを使ってみる(0)

JavaでREST APIを提供するサーバーを作ってみよう. 今回は, Jerseyを使ってみることにする.まず, mavenの設定. dependenciesを書くだけっちゃ書くだけ. <dependencies> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-server</artifactId> <version>1.5</version> </dependency> </dependencies> buildの所で, 依存するjarファイルを/lib配下に集めるよう設定 <build> </build>

Generics再び

Genericsの使い道を書いてみる. APIの戻り値を表すクラスを作ったとする. public class APIResult { public int getStatus(); public List<ResultObj> getList() { /* 中略 */ } } おっと, ResultObjだとちょっと抽象的すぎるぞ. オブジェクト毎にちゃんとクラス作ろう.</resultobj>…

例外の設計(1)

もやっとしたまま実は1ヶ月以上たってたので, 結論を超あとがきでかいちゃいます.モジュール内の例外は1種類にして, getCode()とかで詳細教えたほうがよくね?という結論になってたり. 確かに, "このモジュールから投げられた例外"ってのさえ分かれば, あと…

例外の設計(0)

サーバーにリクエストを投げて, HTTP 200以外は例外を投げるようにしたい というケースを考えてみる.最初は, こんな感じになるかもしれない public class RequestException extends Exception { // 中略 } public String sendRequest(RequestParams p) throw…

Generics

GenericsでT型の配列を使いたいときは注意が必用 private <T> void hoge(T[] args) { // T型の配列が欲しいんじゃ } private void moke() { int[] args = new int[0]; hoge(args); // だめらしい } この場合, Tに入るのはintになっちゃうので残念ながらNG. Inte</t>…

MavenでJarをひとまとめにする

今月は頑張って技術ネタを充実させたいfkmです.最初はMavenのメモ. EclipseのMaven projectで作ったJavaツールを社内で配布したいときぐらいしか使い道なさそうですが(ライセンス的に)まずはpomファイル. maven-assembly-pluginを使う. <build> <plugins> <plugin> <artifactId>maven-assembly-</artifactid></plugin></plugins></build>…

暗黙のルール

WebViewに関する話.WebViewのコンストラクタの引数はこんな感じ. 元ネタのドキュメントはここ WebView(Context context) WebView(Context context, AttributeSet attrs) WebView(Context context, AttributeSet attrs, int defStyle) WebView(Context contex…

JavaでGZIPを解凍する

JavaでHTTPリクエストを投げると, いろんなサイトで content-encoding:gzip がついてるので, 解凍しないと中身が見えずに困ったりする. どっかからライブラリを探さないといけないのかなーと思ってたら標準であるんですね, GZIP解凍. org.apache.commons.htt…

setterがthisを返す(2)

前回登場したProgrammerを使ってみましょう public class Programmer extends Person { //中略 private String language; public Programmer setLanguage(String value) { language = value; return this; } } 使う側はこんな感じ? public class Moke { pub…

setterがthisを返す

setterがthisを返すと使うときに楽だったりします. public class Person { private String name; private int age; public Person setName(String value) { name = value; return this; } public Person setAge(int value) { age = value; return this; } @O…

ArrayAdapterをちょっとだけいじる

ListViewにセットするArrayAdapter, サンプルを見るとこんな感じで書いてあることが多い. ListView list = new ListView(activity); ArrayAdapter<String> adapter = new ArrayAdapter<String> (activity, android.R.layout.simple_list_item_1); このandroid.R.layout.simpl</string></string>…

RadioButton

RadioButtonの使い方メモ. 選択されてるものはidで返ってきます. private void setLayout(Context context) { RadioGroup group = new RadioGroup(context); for (int i = 0 ; i < 5 ; ++i) { RadioButton button = new RadioButton(context); button.setId(…