タグ

ブックマーク / shinsan.hatenablog.jp (16)

  • JavaでさくさくWebアプリ開発 - しんさんの出張所 はてなブログ編

    かなり久々の技術エントリ。 運用はお堅い重いサーバーを使ったとしても開発は軽いほうがいい。当たり前ですね。 というわけでさくさく開発する方法を書いてみる。DIコンテナはCDIやGuice、Springなど好きなものでよいが、今回は省く。軽いこともあって開発中はGuiceを使うことをお勧めしたい。注入は@Injectを使うため、開発中と運用中でコードが変わるってのは少ないはずだ。 まずはJAX-RS まず、アクションベースのWebアプリはJAX-RSを使うこと。これが基。サーブレットAPIを使わずに開発することについては今までも書いてきた。サーブレットAPIを触らないことにより開発効率とテストのしやすさを両立できる。 こんな感じ。 @Path("/") public class Hoge { @GET @Path("add/{a}/{b}") public Response add(@Pa

    JavaでさくさくWebアプリ開発 - しんさんの出張所 はてなブログ編
  • 第26夜 Javaの高機能HTTPクライアント その2 - しんさんの出張所 はてなブログ編

    24夜Javaの高機能HTTPクライアントの続き。 前回は引数も何もなしのgetだけやった。今回はパラメータを渡してみよう。 その前に受け取り側のサーバーのコードを書いておく。JAX-RSが楽なのでJAX-RSで。JavaSEのスタンドアロンサーバーで動かしたりJavaEE 6準拠のGlassfish V3で動かしたりTomcat 6でも動かせるので詳しく知りたい人は過去のエントリを参考にどうぞ。 package jaxrs; import javax.ws.rs.FormParam; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.POST; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.Qu

    第26夜 Javaの高機能HTTPクライアント その2 - しんさんの出張所 はてなブログ編
  • 24夜 Javaの高機能HTTPクライアント - しんさんの出張所 はてなブログ編

    JavaでHTTPクライアントを利用する場合何を利用しているだろうか。 直にソケット通信はやってる人はまずいないだろう。ヘッダとかなにもあったもんじゃないし。 標準APIで一番利用されるのはHttpURLConnectionだろうか。でもこれも面倒だ。一番やり取りをするEntityの扱いがInputStreamだけで非常に貧弱だ。 そこでJAX-RSの参照実装であるJerseyのクライアント。ほかにもJAX-RSの実装ではクライアントが各自あるが、今回はもっともメジャーなJerseyで。 Client client = Client.create(); WebResource wr = client.resource("http://www.yahoo.co.jp/"); String result = wr.get(String.class); System.out.println(re

    24夜 Javaの高機能HTTPクライアント - しんさんの出張所 はてなブログ編
  • Javaを動かせるレンタルサーバー - しんさんの出張所 はてなブログ編

    以前こういうのは何度か書いていたが、前回書いてから1年以上たっていた。この間に何が変わったか。 単純なJava対応という名前では増えていないように見える。 でも、Javaが動く格安レンタルサーバーはものすごく増えた。 理由はVPS。1年前のエントリの時点でいくつかあったが、メモリがやはり少ないこと、メモリを少し増やすと価格が高くなりすぎるのがネックだった。 そして今ではメモリがかなり多い。ローエンドでも512MBになっているところが多い。これだけあればRDBJavaと余裕で動かせる。OSがWindows Serverの場合1GBはほしいが、1GBもだいぶ安い。 なにより、1年前と比べてWindows Serverを選択できるのが大量に出てきている。今まではOSはLinux、しかもCentOSが圧倒的シェアを持っていたが、今ではWindowsも選べるところが多く、価格はやや高いもののこちら

    Javaを動かせるレンタルサーバー - しんさんの出張所 はてなブログ編
  • GWT 2.0へ作り直し - しんさんの出張所 はてなブログ編

    GWT 1.7で苦労していた泥臭いコードが2.0ではすべてきえる。なにこれ。 メジャーバージョン番号がかわるだけのことはある。 Webメールサンプルとかぱっとみ配置にui.xml使ってるだけかと思ったらちがうじゃないかと。uibinderは便利だとは思えていないのであんまりよくみてなかったけど、あまかったわ。 uibinderがイマイチと思う理由はレイアウトパネルの動きをしっかりと把握して配置とか敷居が半端じゃなく高いこと。コード書くのと同じくらいの労力がいるならコード書いたら早いんじゃないかと。 ただし、これが複合コンポーネント〜成り立つ部品として考えるとまた意味合いが変わってくる不思議。実際このWebメールサンプルは大枠のレイアウト用ui.xmlと各種複合コンポーネント用ui.xmlときれいに分かれていて参考になる。このへんも2.0からの新機能ね。 他のサンプルはすべておまけ。たぶんこ

    GWT 2.0へ作り直し - しんさんの出張所 はてなブログ編
  • 10年以上前の時代に戻るだけ - しんさんの出張所 はてなブログ編

    http://d.hatena.ne.jp/nowokay/20100104#1262596755 Webアプリというものがたまたまはやっただけで、言語や開発環境としては異端。それがおいらの考えです。Webアプリしか勉強してこなかった人たちがいるとしたらものすごく怖いかなという感じで。 あと、WebアプリでIDEを使わないとか動的言語が当たり前という風にはおいらは捕らえていません。仕事で開発する場合、大概IDE等開発環境があるはずです。使っていない場合というのはまずほとんどお目にかかったことがありません。 個人的に思うのはWebアプリは他人の目に付きやすいという点です。社内システム等はほとんどのところは閉じた空間でしょう。どんなに使われていても目立つことは無いのです。ですが、Webアプリだとそれをさわって公開している人がすごく目立つ。個人的にはAccessやVBやC/S系のシステムなんてま

    10年以上前の時代に戻るだけ - しんさんの出張所 はてなブログ編
  • はじめてのGWT - しんさんの出張所 はてなブログ編

    GWTの知名度がイマイチ上がらないので、最もシンプルな動作で解説。全てのファイル(といっても3つだけ)を省略なしであげています。 ボタンをクリックするたびにカウンタが増えるというだけものを作ります。 GWTのパッケージ構造 注目してほしいのはhogeというアプリケーションのフォルダがあってその下にclientというフォルダがあること。そしてhogeの下にgwt.xmlという拡張子をもつファイルがあるということ。GWTはかならずこの構成をとる。 clientフォルダにクライアントサイドのコードを入れる。RPC用にserverというフォルダもあるが、ここでは省略する。 gwt.xmlで終わるファイルはアプリケーションの設定ファイル。ここに使用するライブラリやエントリーポイント(いわゆるmain。つまり起動する部分)の設定などが出来る。 環境設定ファイル 今回の設定ファイルは以下のようになる <

  • なんと、こんなことができるのか! - しんさんの出張所 はてなブログ編

    http://codezine.jp/article/detail/4596/ Jerseyはずっと追い続けてきたので失礼ながら中身は面白いものではない。 そもそもJerseyというからには固有のものが出てくるかと思ったけど、どうやら標準APIであるJAX-RSの範疇のようだ。 あのタイトルのつけ方や記事だとJava EEの標準APIであるということはわかりにくい。実装しただけなのに「Jerseyアノテーション」とかいう書き方はどーなんだよと思う。 内容的にもServletAPIだけの知識があればいいのかと勘違いそうだが、Spring Framework使っていたりするので紹介用の記事としてもあまりよろしくない。翻訳記事なのでわからなくもないが。Spring FrameworkのシェアってJavaのWebアプリで8割こえてるだろうし。 だが、そんなのはどうでもよい。大事なのは http:/

    なんと、こんなことができるのか! - しんさんの出張所 はてなブログ編
    cyokodog
    cyokodog 2009/12/12
    IE6/7(8も?) では使えないかと...http://d.hatena.ne.jp/cyokodog/20080623/1214192211
  • これは誤解を招く書き方かな - しんさんの出張所 はてなブログ編

    http://d.hatena.ne.jp/bufferings/20091124/1258983997 トランザクションのところにある楽観的ロックという項目。 ここで例に出ているのはバージョン管理によるアプリケーション制御であって、データベースのトランザクション管理における楽観的ロックのお話ではない。 したがって同様の画面制御をする場合悲観的ロックを利用していてもバージョン番号を振る必要が出る。Webアプリかそうでないかということも関係ない。 データベースのトランザクションの楽観的ロックということならば上書きにするかどうかというアプリケーションレベルの話ではなくて、実際にトランザクションを開始する直前にバージョン番号を取得して開始するというもの。 したがってここはデータベースのトランザクションの話をしていないのに、そうだと勘違いしてしまう人も出てくると思う。 データベースで難しいのが、バ

    これは誤解を招く書き方かな - しんさんの出張所 はてなブログ編
    cyokodog
    cyokodog 2009/11/29
    グリットデザインの編集画面だと排他エラーは結構つらい。in-place-editor + ajax で極力回避。
  • GWTのライブラリはSmart GWTできまり - しんさんの出張所 はてなブログ編

    Smart GWTできまりだろJK と前から思っていたのだが、今でも変わらないようだ。 きしださんのエントリではExt GWTを見せていたようだが、Smart GWTのほうがはるかに利点が多いと思う。 まずライセンスがLGPLであること。EXT GWTはGPL or商用ライセンス。MySQLとにたようなものですな。価格は以下を参照。 http://extjs.co.jp/store/gxt/ 続いて軽さ。Firefoxみたいに早い場合は気にならないけど、IE6やIE7あたりだと結構違う。IEを無視してよいというところはおそらく少ないだろうからこれは結構でかい。(コンポーネントが増えるとEXT GWTのほうが重くなりやすいです。) SmartGWTを知ったのはこれかな。 http://www.infoq.com/jp/news/2008/12/smartgwt Smart GWTのショーケー

    GWTのライブラリはSmart GWTできまり - しんさんの出張所 はてなブログ編
  • Google Sitesを試す - しんさんの出張所 はてなブログ編

    グーグルサイトって無料で100MBのホームページ開設できるサービスがあるのだが、テンプレートがあったり便利なメニュー等があるのでWikiやblogの表記を覚えることが必要ないのでなかなかいいですなぁ。 とりあえず適当に作ってみた。 http://sites.google.com/site/shin68k/ これHTML直書きもできるようで、なかなかよい。 過去の更新履歴からもとのバージョンに戻したり削除から復活できたりバージョン管理もされてるので楽チンですな。削除した場合も復元できるんだけれども、その場合の容量ってどうなるんだろう。あとファイルのアップロードとかがわかりにくいような。 とりあえずどんなものなのかいろいろと触ってみよう。scriptが無理なので、そういうのはGoogleガジェットで作って貼り付けろということか。 共有で編集することもできるのでwikiとしても使える。というかW

    Google Sitesを試す - しんさんの出張所 はてなブログ編
  • 続続・GAEのアンロード対策 - しんさんの出張所 はてなブログ編

    前回の404はだめだった。 では静的リソースは同だろうか。静的リソースはCPUの処理時間にはいらない。 で、しばらくやってみる。適当なファイルを置いてそれにアクセスさせてみた。 …微妙な結果に。 404のときのように数分たつと100%アンロードされるというわけでもないようだ。だが1分や2分cronでservlet起動しているのに比べると悪い値が出やすい。なんか完全にアンロードされているような状況でもないときも多い。 でもあきらかに2分間隔でcronまわしているときも6,8秒くらいのアクセス時間がかかってるときがでる。 どうもCPUの使用しているリソース配分でまわされているっぽい。当たり前といえば当たり前だが。したがってCPUリソース消費0の処理ではダメということに。 逆に言えば静的なHTML等しかつかわない人はGAEで無料のレンタルサーバーとして使えるということに。アプリケーションサイズは

    続続・GAEのアンロード対策 - しんさんの出張所 はてなブログ編
  • GAEのアンロードを防ぐ - しんさんの出張所 はてな編

    Google App Engineは2分程度アクセスがないとアプリはアンロードされるような感じになります。 ぶっちゃけフレームワークなしでも結構時間がかかるようになるのでアンロードされるのを防ぎたいところです。 そのため空実装のServletを用意し、そこへcronで2分ごとに使うというのを先日書きました。たまに2分が微妙なラインなのかアンロードされているときがありますが、それでもおおむね95%くらいは常にロードされているような状態になり大幅にレスポンスが改善されます。 そこで1分間隔にするとどうなるか。たまに強制的にリソースの配分が行われてアンロードされることはあるようですが、今のところログを見る限り99%は大丈夫のようです。2分間各に比べて負荷は2倍になりますが、これが問題になることはまずないでしょう。使用しているCPUリソースはロードするときに比べれば全然たいしたことがないです。10

    GAEのアンロードを防ぐ - しんさんの出張所 はてな編
  • Google App Engine でJSF 2.0を動かす - しんさんの出張所 はてなブログ編

    やっとGAE /Jでうごいた。使用するライブラリや基的な設定、パッチ部分は問題はなかった。 どうやらjavax.faces.STATE_SAVING_METHODをclientにしないとだめなようだ。web.xmlに忘れないように書こう。この辺いじらなくても完全に動くようになることに期待したい。 とりあえずECHO Helloと足し算、足し算+Ajaxの3種類のサンプル上げときました。Javaのコードとテンプレートも見れるようにしています。 以下のリンクにおいときますね。 http://shinsan-jsf2.appspot.com/ 見てわかるとおり必要なのは当に単純なPOJOなクラスとテンプレートだけ。全部リクエストスコープです。 Viewスコープ等問題なく動くかはまだ確認していないので検証したらこのサンプルに追加していきたいと思う。 ちなみに開発とローカルでのテスト、デプロイは

    Google App Engine でJSF 2.0を動かす - しんさんの出張所 はてなブログ編
    cyokodog
    cyokodog 2009/11/16
    スタートアップ速度をcronで回避
  • 古代祐三好きならば誰もが知っている作品 - しんさんの出張所 はてなブログ編

    id:masanobuimaiの反応があったので、もったいないからエントリとして乗せる。 YK-2(古代祐三のペンネーム)とYu-Youといったほうがマイコン族世代には通じるかも。 Yu-Youとはもちろん古代祐三とならび賞される永田英哉のこと。 その2人がそろっていたベーマガやボスコニアンX68Kはすさまじいのひとこと。 ボスコニアンそのものがわからない人はこちら。 世界樹の迷宮持ってる人は今の古代と聞き比べるといいかもしれませんね。

    古代祐三好きならば誰もが知っている作品 - しんさんの出張所 はてなブログ編
    cyokodog
    cyokodog 2009/11/09
    なつかしい
  • Servlet APIにファイルアップロードが用意されたのはみんな知っていると思うが - しんさんの出張所 はてなブログ編

    つりくさいタイトルのほうがいいらしいので。 実はJavaOne時に発表されたpreview版では未実装だったのだけれども、今最新版にしてみたらちゃんと動いたので報告。 JavaEE 6、つまりServlet 3.0ではServletの定義にweb.xmlが必要なくなるとかソースで動的にフィルタやサーブレットを設定可能になったりかなり便利になったと思う。 この辺参照 http://d.hatena.ne.jp/shin/20090616/p1 ほかにも大きいものとしてやっと標準でマルチパートに対応した。つまり、サーブレットAPIで簡単にファイルアップロードが出来るのである。 ソースを見てもらうのが手っ取り早いので先に乗せる。 index.jsp <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBL

  • 1