SQL Object API と Fluent API の融合 その2

では前回の予告通り、今回は Object形式とFluent形式の両方を同じコネクションで使用してみましょう。 Daoを生成する時、DBI.open ではなく、Handle.attach を使用します public static void main(String[] args) { String url = "jdbc:postgresql://192.168…

SQL Object API と Fluent API の融合 その1

まずは前回の Dao001.java を使用して、単純に2つのAPI形式で実行してみましょう Sample002.java public static void main(String[] args) { String url = "jdbc:postgresql://192.168.52.128/jdbi"; DBI dbi = new DBI(url, "jdbi_user", "jdbi_pass"); Dao…

Daoのサンプル

Dao001.close() というメソッドは何も実装を書いてないけど、宣言だけしておけばJDBIが勝手にリソースを解放する処理を注入してくれる。 ちなみにこの形式を「SQL Object API」と呼ぶそうです。ちなみに前回のように、生のSQLをそのまま実行するのが「Fluent…

超簡単サンプル

DropWizardを研究してるというよりはJDBIを研究してる状況になったので、JDBI単体で色々実験してみる。まずは超簡単なサンプル String url = "jdbc:postgresql://192.168.52.128/jdbi"; // IPアドレス、データベース名は適当に変更すること DBI dbi = new DB…

DBに接続する(2/2)

さて、昨日の続き ConfigクラスでDB接続設定読み込み Sample001Configuration.java public class Sample001Configuration extends Configuration { @Valid @NotNull @JsonProperty private DataSourceFactory database = new DataSourceFactory(); @JsonProp…

DBに接続する(1/2)

DropWizardはDB接続用のライブラリとして、JDBIを採用している。(Hibernateも使えるらしいけど、私はあまり好きじゃないので・・) で、前回設定ファイルを記述したが、そこにDBへの接続設定を記述すれば簡単にDBに接続できるようになっている。 シーケンス、…

設定ファイルを作成する

DropWizardは起動時に設定ファイルを指定できるようになっていて、開発環境用、本番環境用と手軽に起動方法を変更可能となっている。 試しにこんな設定ファイルを指定して起動させてみよう。 Sample001直下に conf/dev.yml を作成 中身はこんなカンジ mail: …

Resourceファイルを作成する

昨日は http://localhost:8081/ にアクセスして何か表示されるところまできました。実はあれだけで私、1日ぐらいかかってますwww でもここからは割とサクサク進められます。何事も初めは難しいですね。ドキュメントが異常にわかりにくいというのが原因だ…

DropWizard初めの第一歩

私はここで盛大に躓きました(笑) http://www.dropwizard.io/ の「Getting Started」を見ても全然はじめられません。最初に「Maven」という単語が出てきて読む気を無くしますwしかも英語だし。 というわけで、以下のようにしてまずはサンプルプロジェクトを…

Fusion Tables importRows を使用するサンプル

GAS

GASから、Fusion Tables を使用してると、すぐに何かの上限にひっかかるようでろくにinsertできない。 そこで、https://developers.google.com/fusiontables/docs/v1/reference/table/importRows を使用することにする。 前提条件 Fusion Tables API を使用…

今日の日付

GAS

var d = new Date(); d.setHours(0); d.setMinutes(0); d.setSeconds(0); d.setMilliseconds(0); てことを1行でやりたい衝動に駆られたので var TODAY = new Date( Math.floor( (new Date().getTime() - new Date().getTimezoneOffset() * 60 * 1000)/(24 * …

カレンダーの検索 Calendar.getEvents

GAS

次は Calendar.getEvents の結果がどのようになるかメモしておく。 事前に登録しておくイベント 2015/2/3 11:00 〜 13:00 実際に検索すると・・ getEvents(10:00, 11:00) => 0 getEvents(10:00, 12:00) => 1 getEvents(10:00, 13:00) => 1 getEvents(10.00, …

カレンダーの検索 Calendar.getEventsForDay

GAS

仕様はこちらを参照してもらうとして、実際の結果がどのようになるかメモしておく。 事前に登録しておくイベント 2015/2/2 18:00 〜 19:00:1時間のイベント 2015/2/3:終日のイベント 2015/2/3 15:00 〜 2015/2/4 10:00:日をまたぐイベント の3つ 実際に検…

ユニットテスト

GAS

GASでもテストコード書きたいよね、ということでこんなん作ってみました。 まずは、unittest.gs というファイルを作成して、以下のコードをコピペ。 function test() { try { // 先頭が「__test」から始まるメソッドを探して実行 var keys = Object.keys(thi…

Web上から実験

select以外のSQLはこちらから実験可能。以下のリンク先の「Try it!」ってところで、「Authorize requests using OAuth 2.0」をONにすればOK。 https://developers.google.com/fusiontables/docs/v2/reference/query/sql例えばこんなカンジ sql : insert into…

FusionTablesを使用する

GAS

いくつかトラップがあるので備忘録を兼ねて手順をまとめておく Fusion Tableを作成する Googleドライブページで、作成→その他→アプリを追加 FusionTables で検索して、「接続」してFusionTablesを使えるようにする 再度Googleドライブページで、作成→その他→…

カレンダーAPI

GAS

GASでイベントを作成する方法 // admin@fuga.google.com ユーザで実行したとする // 事前に admin@fuga.google.com ユーザで hogehoge@fuga.google.com にカレンダー作成権限を付けておく var app = UiApp.getActiveApplication(); var calendar = CalendarA…

デバッグビルド.apkを作成する

ant を用意する プロジェクトフォルダで以下のコマンドを実行する android update project -p ./ と、「build.xml」と「local.properties」というファイルが作成されるはず その後以下のコマンドを実行する ant debug と、bin/***.apk というファイルができ…

タイムアウトさせるとどうなるか実験

GAS

こんなコードで実験すると function doGet(param) { for( var i=0; ; ++i ) { } var app = HtmlService.createTemplateFromFile("index").evaluate(); app.setSandboxMode(HtmlService.SandboxMode.NATIVE); return app; } こんな画面が表示されました。一方…

x64版XPにOffice2010をインスコできない

不遇のOSですなぁ、64bit版のXPって。可哀そうに。 でも、fcwinというツールを使えばあまりに簡単にインスコできたので手順をメモ書きしておく。 まずOfficeにインスコする際に必要となるライブラリを先にインスコする http://www.microsoft.com/ja-jp/downl…

演算子あれこれ

記号なのでググってもなかなか見つからないのよね・・ // 単なる配列 list = [1,2,3] // 空配列 emptyList = [] // 空Map emptyMap = [:] // エルビス演算子(と言われているみたい) newList = [] ?: list // => [1,2,3] newList = null ?: list // => [1,2,3…

listObjects APIの解説

こちらの仕様書 を読めばわかるのだが、一応サンプルを元に備忘録も兼ねてまとめておこうと思う。 リクエストのパラメータ Bucket バケット名 Delimiter 区切り文字で、ディレクトリ毎に一覧取得したい場合は"/"を指定する EncodingType 通常指定する必要は…

バケット内のアイテム一覧を取得する2

ではもうちょっと複雑なことをしてみよう。S3に以下のような構成でファイルをアップしたとする。 dir1 file1-1.txt file1-2.txt dir2 file2-1.txt file2-2.txt file2-3.txt file1.txt file2.txt こないだ紹介した方法 だと、これら全部を取得することになる…

バケットにテキストをアップロードする

次は、単純なアップロードのサンプル。文字列データをアップロードする。ファイルをアップロードしたようなカンジ。前回のサンプルを実行することでほとんど準備は整っているのだが、一点だけ追加しないといけない設定があるので先にその説明を。前回はバケ…

バケット内のアイテム一覧を取得する

では、htmlだけでどこまでできるのか確かめてみましょう。まずは一番簡単なサンプルとして、あるバケット内のアイテム一覧を表示してみます。これでも結構大変なんで手順の概略だけ先に箇条書きにしておきます。 バケットを作成する バケットにAPIでアクセス…

S3のAWSマネジメントコンソールはウンコ

何がウンコかって、S3を使用できるIAMユーザ全員にListAllMyBuckets権限を付与しないといけないところだ。バケット一覧が見えるようにしとかないとIAMユーザがS3を使えないという困った仕様がある。お客さんのサイトを用意した際に、IAMユーザのパスワードを…

お客さんへファイル共有

でっかいファイルをS3にアップして、お客さんにURL伝えてDLしてもらう、というシチュエーションでは以下の手順によりそこそこセキュリティも考慮されていてお客さんも負担無くファイルを受け取れる。 管理者ユーザでお客さん用のIAMユーザ、バケットフォルダ…

期間を指定した限定公開

バケットポリシーに以下の設定を追加すれば、 アクセス元IPアドレスを限定して https接続のみの 指定した期間だけ public/ のファイルにアクセスできるようになる。 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "…

Permissionの設定について

世間的にはAWSのサービスを利用するのが大流行りなようなので、私も最近よく利用している。(おいAmazon、ちゃんと税金払えよ) 中でもS3は単なる静的Webページを公開するだけならローコスト&ハイパフォーマンスなサービスで超便利。サーバの監視が全くと言っ…

ファイルの読み書き

さらに今更ながらjavaだとどうやるのか。java7 だとかなり楽になったんですね。(もはやjava8だと言うのにw String contents = "...適当な文字列..."; // 一気に全書き込み&全読み込み Files.write( Paths.get("ms932.txt"), contents.getBytes("MS932") );…