Picnik が Google に買収された
Picnik が Google に買収された。
Google、クラウド画像編集サービスPicnikを買収 – スラッシュドット・ジャパン
日本ではあまり知名度高くないかもしれないけど、愛好家として嬉しいような残念なような複雑な気持ちです。
Firefoxにプラグイン入れておけば、ブラウザのスクリーンショットとる時とかに非常に便利なので、これを気に普及してくれたら良いと思う。
Picnik が Google に買収された。
Google、クラウド画像編集サービスPicnikを買収 – スラッシュドット・ジャパン
日本ではあまり知名度高くないかもしれないけど、愛好家として嬉しいような残念なような複雑な気持ちです。
Firefoxにプラグイン入れておけば、ブラウザのスクリーンショットとる時とかに非常に便利なので、これを気に普及してくれたら良いと思う。
先日、昔在籍したゲーム開発会社のメンバとの懇親会に参加しました。
私自信はゲームをクリエイトする能力も立場でも無かったんですが、何故ゲーム開発会社に行ったのか?と問われると、大げさに言うと、日本の国際競争力の向上に繋がりそうだ、という想いがあったんですね。私なりにですが志をもっちゃってた訳です。
ゲーム開発に携わる人は、プレイヤー(開発者、クリエイター)として非常に優秀な人が多いです。
日本のこういう人達のスキルとパワーが、もうちょっとソーシャルアプリケーションにシフトしてくれたら、もっとブラウザのプラットフォーム化が早まり、Google様の野望実現が早まったりしながら、ウェブの世界でも日本の存在感も高まるんじゃ無いかなぁ、なんて思いました。
HTML5を使えば、SketchPadみたいなアプリケーションも実際に作れる訳だし、手っ取り早くFlushだって良いんです。
OpenSocialに準拠しといてとりあえずmixiアプリでもイイし、なんならfacebookアプリで3憶人のマーケットへ参入してもイイ。
個人的には、アプリやろうぜ!by GMOみたいな動きがもっと盛り上がってもいいのになぁ、と思っています。
たまたまImageIOを触る機会があって始めて認識した事なんですが、javax.imageio.ImageIO で gif 画像を扱う時、JDK5まではreadが出きてもwirteが出来なかったんですね。
「Java SE 6完全攻略」第13回 GIFファイルの書き出し – IT Pro
よくよく考えたら判ることだったんですけど、2004年頃まではUnisys特許絡みがあったので、書き込み出来なくしてたんですね。
ImageIO と絡んでgifとかの画像のリサイズとか調べてたら、イイ感じのサンプル発見したのでメモ。
今まで AffineTransformOp を多用していたのですが、「早いけど、荒い」方法だったんですね。どうりでリサイズ後のベクター画像が汚いわけだ・・・
Image Javaテクニカルサンプル集さんの、こことこことここ。
多分ここのコードは物凄く再利用されているんだろうなぁ。
そういう意味では、目立たないけどすごい社会貢献だと思います。
私も見習いたいと思います。
GAE/J (Google App Engine for Java) で Struts を動かす
GAE/J では Spring を始め、いわゆる「重い」フレームワークは避けたい。
今後オレオレフレームワークを作るのか、Slim3等に移行するのかは、まだ決めかねています。
当面は Spring は兎も角、使い慣れた Struts と Velocity を使うことにします。
Velocityは先日やりましたから、今回はStrutsです。
因みにWill it play in App Engine – Google App Engine for Java | Google Groupsによると、Struts1系は 1.2.28 で COMPATIBLE となっています(2010年02月09日現在)。
Apache Software Foundation の Strutsのサイトからダウンロードします。ライブラリだけで良いので、struts-1.3.10-apps.zip をダウンロードして解凍します。
解凍して出来た struts-1.3.10/lib/ の中身を全部、ワークスペースのプロジェクト下の war/WEB-INF/lib/ にコピーします。
eclipseを起動して、war/WEB-INF/lib/ の下にコピーしたjarファイルを、[CTRLキー]を押しながらポチポチと選択していきます。それらを右クリックして、[ビルド・バス(B)] – [ビルド・パスに追加(A)]をクリックします。
念のため、プロジェクトの[参照ライブラリー]にそれらが追加されている事を確認します。
WEBアプリケーションの設定ファイル( web.xml )に、Strutsのマッピングとかを追加します。(プロジェクト下の war/WEB-INF/にあります)
ベタに書くならこんなかんじです。
※load-on-startup は一応書いてますが、GAE/Jでは無視されます
<servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/classes/struts-config.xml</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
ロギングはlog4jを使ってます。
Struts関係のデバッグログとかが多くて困るので、追加したライブラリ関係のロギングをWARNに変更する設定を追加しました。
log4j.logger.org.apache.struts=WARN,A1 log4j.logger.org.apache.commons=WARN,A1
勿論、アペンダー(A1)は環境にあわせて適宜変えて下さい。
Strutsの設定ファイル (struts-config.xml)をプロジェクトの src/ に作ります(ビルドしたら、war/WEB-INF/classes/にコピーされます)。
フォーマットとかは割愛しますが、encoding に UTF-8 を明示的に指定して上げるのが、文字化け対策としての作法の様です。
こんな風に。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
.
.
.
Google App Engine設定ファイル(/war/WEB-INF/appengine-web.xml)に設定を追記し、セッションを有効にします。
<sessions-enabled>true</sessions-enabled>
これをしないと、「Session support is not enabled in appengine-web.xml」とかがいっぱい出て動きません。
先日、GAE/J (Google App Engine for java) で log4jを使うの続きです。
こんな素敵なエントリーを発見!
GAE/Jでlog4jの日付を日本時間で出力する。- 今週のキャリッジさん
GAEの管理コンソールの[Logs]の表示を日本時間にする事は出来ないけど、ログ出力の中身を日本時間にする事は出来る模様。
logging.apache.orgから、apache-log4j-extras-1.0.tar.gz を取ってきて、解凍した apache-log4j-extras-1.0.jar を、war/WEB-INF/lib にコピーして、eclipseのビルドパスに追加しました。
それから、src/log4j.properties を修正します。
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
↓
log4j.appender.A1.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%F:%L] - %m%n
↓
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}{Asia/Tokyo} %-5p - %m%n
war/WEB-INF/appengine-web.xml 書いときます。
<system-properties> <property name="org.apache.commons.logging.Log" value="org.apache.commons.logging.impl.Log4JLogger"/ > <property name="java.util.logging.config.file" value="WEB-INF/classes/log4j.properties"/> </system-properties>