クラウドインフラ構築記

現在AWSの構築支援に携わっております。今注視しているのは、GKE、BigQuery、Google Dataflowなどサービスを展開しているGoolge Cloud Platformです。

2013年4月3日
から hiruta
Dropbox Chooserでファイルのアップロードができるようになっていました。 はコメントを受け付けていません

Dropbox Chooserでファイルのアップロードができるようになっていました。

Dropboxと連携させるのに、Dropbox Chooserという便利なものがあります。Dropbox Chooser自体、日々アップデートされているようで、今まで使えなかった機能が使えるようになっていました。

Dropbox ChooserにUpload(アップロード)というものが出来ていました。ローカルの画像とかをDropboxにアップロードさせて、今アップロードしたファイルを選択して、WEBアプリ側に返すこともできるようになっています。

https://www.dropbox.com/developers/chooser

機能が随時進化するのは、従来では考えられない進化。クラウドだからでのメリット。

2013年4月1日
から hiruta
strtotimeの使い方 はコメントを受け付けていません

strtotimeの使い方

strtotime関数を駆使して、開始時間(display_start_time、16:00の感じ)から終了時間(display_end_time)まで30分周期で配列にいれていくには、以下のようにすれば可能です。表形式のスケジュールを自作する場合、使えると思います。strtotimeは何日前の日にちとかも返すことができて、重宝します。


timestamp = strtotime($row['display_start_time']);

while ($timestamp < strtotime($row['display_end_time'])){

 $time = date('H:i',$timestamp);
 $data[date("m/d", strtotime(0-intval($yobi)." day"))][$time]['program_id']= $row['program_name'];
 $data[date("m/d", strtotime(1-intval($yobi)." day"))][$time]['program_id']= $row['program_name'];
 $data[date("m/d", strtotime(2-intval($yobi)." day"))][$time]['program_id']= $row['program_name'];
 $data[date("m/d", strtotime(3-intval($yobi)." day"))][$time]['program_id']= $row['program_name'];
 $data[date("m/d", strtotime(4-intval($yobi)." day"))][$time]['program_id']= $row['program_name'];
 $data[date("m/d", strtotime(5-intval($yobi)." day"))][$time]['program_id']= $row['program_name'];
 $data[date("m/d", strtotime(6-intval($yobi)." day"))][$time]['program_id']= $row['program_name'];
 $timestamp = strtotime("+30 minutes", $timestamp);
 }

2013年3月28日
から hiruta
Timestampに0000-00-00があると例外が発生します。 はコメントを受け付けていません

Timestampに0000-00-00があると例外が発生します。

Seasar2とS2JDBCを利用してJavaアプリケーションを開発していると、データベースのTimestampに’0000-00-00’があると、SQLExceptionが発生し、データベースからの情報取得等に失敗します。日付情報をNULLにしておく場合、問題になります。データベースは、MySQL 5.1を使用。


Cannot convert value "0000-00-00 00:00:00" to TIMESTAMP value "0000-00-00" cannot be represented as java.sql date"

データベースの初期値(DEFAULT)に0000-01-01を設定しておくと、例外が発生しなくなります。

http://blog.r-unit.co.jp/archives/730 によると、JDBCのURLにパラメータを付与するのがよさそう。

2013年3月27日
から hiruta
コードサイニング証明書 はコメントを受け付けていません

コードサイニング証明書

Java Web StartでJavaFXアプリケーションの配信をする場合、jarファイルにコード署名をする必要があります。

まず、キーストアを作成します。

keytool -genkey -alias myAlias-keystore myKeyStore

作成したキーストアで、コード署名を行います。コードサイニング証明書をここ などから、発行して使うようになりますが、いわゆるオレオレ証明書でも十分可能かと。オレオレ証明書だと初回起動時に証明書を常時受け入れる旨のチェックをいれておく必要があります。

画像2


jarsigner -keystore myKeyStore -signedJar SignXXXXX.jar XXXXX.jar myAlias

Java Web Startはアプリのjarファイルが更新されると、起動時にダウンロードされ、最新のバージョンを使用することが可能です。Java Web Startは、Java7でも問題なく動きます。

2013年3月21日
から hiruta
イレギュラーの比率の画像を配置する際についてです。 はコメントを受け付けていません

イレギュラーの比率の画像を配置する際についてです。

javafx.scene.image.ImageViewをjavafx.scene.layout.FlowPaneに配置する場合、イレギュラーの比率の画像をはめ込む場合、縦横比率を維持しながら、自動スケールするには、「setPreserveRatio」をtrueにするだけでOK。

// イメージの表示サイズを指定する
 imageView1.setFitWidth(600* getRate()[0]);
imageView1.setFitHeight(845* getRate()[1]);

// イメージの縦横比を保持したままスケールさせる
 imageView1.setPreserveRatio(true);

PHPのWEBアプリの場合、画像比率をスケールするだけで、10行位は必要だけど、java fxの場合は、一行でOK。開発効率も断然JavaFXの方が上。

2013年3月19日
から hiruta
振り分けを行えるmaildrop導入メモ はコメントを受け付けていません

振り分けを行えるmaildrop導入メモ

qmailの環境でメールフィルタを行うmaildropを導入してみました。

rpmパッケージを作成するところから


wget https://sourceforge.net/projects/courier/files/maildrop/2.6.0/maildrop-2.6.0.tar.bz2/download

rpmbuild -ta --clean maildrop-2.6.0.tar.bz2

フィルタファイルの作成は以下の通り。


SHELL="/bin/bash"
import EXT
import HOST
DELIVER="|/home/vpopmail/bin/vdelivermail '' delete"
VHOME=`/home/vpopmail/bin/vuserinfo -d $EXT@$HOST`
logfile "/home/vpopmail/.maildrop.log" # ログを記録用
# SpamAssassinによるスパムチェック
# ※fetchmail取り込みメールのスパム検査未実施対処
if (!/^X-Spam-/:h)
{
exception {
xfilter "/usr/bin/spamc"
}
}

#SPAM filtering
if ( /^X-Spam-Flag: YES/:h )
{
 to "$VHOME/Maildir/.spam/"
}
# その他のメールは通常どおりに配送

to "$DELIVER"

.qmail-defaultに以下のように設定すれば、vpopmailでバーチャルドメインを管理している場合、ドメイン一括でスパムフィルタを掛けることができます。maildroprcのファイルパーミッションを600にしておかないと、いけないようです。


| maildrop /home/vpopmail/etc/maildroprc

Clamassassinを利用して、clamav antivirusと連動することもできるようです。

2013年3月17日
から hiruta
Node.js はコメントを受け付けていません

Node.js

 

 

 

 

 

 

 

 

現在多くのホスティングで利用されているApacheでは、双方向かつ頻度な通信には機能不足になりつつある。これを解決してくれるのが、Node.js。

Apache+PHPだと、ファイルアップロードを使うにしても、サーバーリソースの関係上、アップロードサイズを制限せざるをえない。IOの待ち時間も問題。

一方、Node.jsは、非同期にIO処理を行うことができ、多量のリクエストにも最小限のサーバーリソースで構築できるアーキテクチャーになっているようだ。

右に載せてある書籍は、環境構築から、データベース、ファイル書き出しなども詳しく書かれているので、はじめて、Node.jsを行おうとしている人も入りやすいと思われます。

2013年3月14日
から hiruta
JavaFXアプリケーションでマウスカーソル非表示が簡単! はコメントを受け付けていません

JavaFXアプリケーションでマウスカーソル非表示が簡単!

java.awtを使っていた当時だと、マウスカーソルを非表示にするのに、以下のように黒で透明なカーソルを作成する必要がありましたが、

http://tech.tesh.co.jp/?p=45

JavaFX 2ですと、AnchorPane上のカーソルを以下一行で非表示にできるようになりました。


pane.setCursor(Cursor.NONE);

JavaFXだと、TimeLineを利用して、定期的に処理を走らせることも簡単に作れます。

JavaFXのレイアウトもXMLで管理できて、柔軟なインターフェースが設計可能です。

JavaFXは新しい技術なので、書籍等の情報が少ないのが難点。

 

2013年3月3日
から hiruta
htc J buttterflyに昨日機種変更しました。 はコメントを受け付けていません

htc J buttterflyに昨日機種変更しました。

昨日docomo Galaxy S IIからau HTC J butterflyに変更しました。151に電話を掛けて、NMP受付番号を取得してから、店頭で新規契約手続きを行って、40分ほどで開通作業が終わりました。(元の端末が使用できなくなったのが、開通作業開始からおおよそ40分ほどでしたので)

P1000310ファーストインプレッションとしては、5インチなので、画面広い。4コアのCPU搭載なので、アプリケーションもさくさく、4G LTEなので、アプリケーションダウンロードも速いです。LTEのアンテナ表示が1本から2本ですが、ダウンリンク10Mは出ています。は本体メモリは16GB(現在4GBまで使用)。

Android→Androidでしたので、電話帳データもSDカードでのエクスポート、インポートですんなり終了。

アプリについて

キャリアメールアプリ・・・容量ばかりでかい使い勝手が良くないspメールアプリよりはるかに良い

GMailアプリ・・・docomo版GMailアプリでは設定できなかった外部ストアでダウンロードした曲の設定が行えます。

auスマートパスを契約しておくと、ウィルスバスターなどのアプリも使用できて、価格も、月額¥390。

docomo使用時にはfacebookのタイムライン更新の通信が時々止まってしまう現象がありましたが、本機種では止まってしまうこともなく、スムーズに情報更新ができています。これは、通信品質がdocomoより良いてことでしょうか。

P1000309

LINEアプリについては、GooglePlayからダウンロードしてしまうとauスマートパス確認と本人確認でエラーになります。au Marketからダウンロードをする必要があります。その後、GooglePlayからのアプリ更新については問題はないです。

Edyを買い物等で使用すると、auポイントも自動的に貯まります。auかんたん決済で、Edyオートチャージもできるようだが、細かな条件があるようです。加入四ヶ月以上の条件にひっかかって、現在はオートチャージは試せません。詳しい条件等は下記まで。

http://www.rakuten-edy.co.jp/howto/charge/au/index.html

2013年2月28日
から hiruta
複数の動画を切り替えて再生するには はコメントを受け付けていません

複数の動画を切り替えて再生するには

JavaFXで複数の動画を切り替えて再生するには、MediaPlayer.setOnEndOfMediaが動画の最後にいると認識できるので、複数の動画を切り替えて再生できます。

MediaPlayer.setAutoPlay(true)をしてしまうと、フォアグラウンドで再生すると他にバックグラウンドでも別の動画を再生しているのか、バックグラウンドの動画の音声も再生します。


private MediaPlayer createPlayer(String aMediaSrc) {
 final MediaPlayer player = new MediaPlayer(new Media(aMediaSrc));
 // player.setAutoPlay(true);
 // player.setCycleCount( MediaPlayer.INDEFINITE ); // 繰り返し再生
 player.setOnError(new Runnable() {
 public void run() {
 System.out.println("Media error occurred: " + player.getError());
 }
 });
 return player;
 }
 public MediaView createMediaView(List<MediaPlayer> players){
 final MediaView mediaView = new MediaView();
 // play each audio file in turn.
 for (int i = 0; i < players.size(); i++) {
 final MediaPlayer player = players.get(i);
 final MediaPlayer nextPlayer = players.get((i + 1) % players.size());
 player.setOnEndOfMedia(new Runnable() {
 public void run() {
 mediaView.getMediaPlayer().stop();
 mediaView.setMediaPlayer(nextPlayer);
 nextPlayer.play();
 }
 });
 }
 mediaView.setMediaPlayer(players.get(0));
 mediaView.getMediaPlayer().play();
 return mediaView;
 }