2013年6月29日土曜日

Jetty9でWebSocketを使ってみる。

今、glassfish4でWebSocketのJavaEE7のWebSocket参照実装が出てきていますが、あえてここでJetty9でWebSocketを使って簡単なチャットアプリを作ってみました。 Jetty9.1ではJavaEE7のWebSocket仕様(JSR365)に対応するようですがJettyの仕様ともあまり変わらないので移行はそこまで大変じゃないと予想しています。

2013年5月26日日曜日

NetBeans7.3のキーをVim風にする。

EclipseだとVrapperでキーバインドをVim風にすぐにできたのですがNetBeans 7.3だと少し引っかかったのでメモ。

1)NetBeansだとVimにするためのプラグインがjViがあるのでダウンロード。
http://sourceforge.net/projects/jvi/files/jVi-for-NetBeans/NetBeans-7.0/nbvi-1.4.8.zip/download
2)Tools->PluginsからDawnloadedを選択してAdd Pluginsを選択してからダウンロードをしたnbvi-1.4.8.zipをインストールする。
3)NetBeansを再起動。

なぜかTools->Pluginsを選択してAvailable PluginsにあるjViからインストールしてもうまくVi化されないので注意が必要です。

あとCtrl-CやCtrl-[でノーマルモードに移行するような設定をするにはPreferencesでjVi Configを選択してからCtrl-Key Bindingを選択して有効にしたいCtrlキーバインディングを選択します。
またデフォルトの動作だと挿入した部分以外はbackspaceが効かなかったので効くようにするにはBuffer Modifications で‘backspace’ を 2 に設定します。

2013年3月4日月曜日

herokuのSpring MVC & Tomcat Applicationを読んでみた。

herokuはeclipseでプロジェクトを作るだけで公開されるのですごいと思います。
ただ新しい機能が使われており主にSpring関連の設定が逆に訳が分からなかったため確認してみました。

Spring MVC & Tomcat Applicationのテンプレートを確認しました。
ほとんどは以下のapplicationContext.xmlで分かりそうです。

https://github.com/heroku/template-java-spring-hibernate/blob/master/src/main/resources/applicationContext.xml

①ローカル環境とデプロイ環境でDBが違うのはどうやっている?

Spring3.1のBean Definition Profilesの機能を利用しているようです。
<beans profile="default"><beans profile="prod">
でローカル環境とデプロイ環境で読み込むbeanを切り替えているようです。
Procfileでは-Dspring.profiles.active=prod とオプションが設定されているので
デプロイ時には<beans profile="prod">が読み込まれるのでしょう。

②テーブルを作っていないのにアプリケーションを動作させた際にテーブルができているのはどうやってる?

Hibernateのアプリケーション起動時に自動でテーブルを作成する機能を利用しているようです。<prop key="hibernate.hbm2ddl.auto">をcreateもしくはupdateとすることでこの機能を有効にしていました。createとupdateの違いは起動時にDBを初期化するかしないかぐらいかなと思います。


2013年3月3日日曜日

動的型付け言語と静的型付け言語

bloggerでテーブルを試してみた。
お題は最近何故か話題になっている動的型付け言語と静的型付け言語です。
動的型付け言語静的型付け言語
型が決まるタイミング型が実行時に決まる。型がコンパイル時に決まる。
採用している言語perl,python,php,ruby,javascript,LISPC,C++,Java,Haskell,COBOL
メリット記述が簡潔になる。実行速度が速い。
デメリット実行速度が低下する。記述が冗長になる。
使いどころプロトタイプ型の開発を行うシステム大規模で厳密性を求められるシステム

WebシステムではWeb系だと動的型付け言語、SI系だと静的型付け言語を使うことが多いと思います。メリット、デメリット、使いどころは色々書くと面倒くさい人たちが出てくるので最低限書いています。あまり関係ないけど動画置いときます。

2013年2月4日月曜日

スマホから投稿

bloggerにもアプリがあったので試してみた。なんか普通過ぎる。

2013年2月3日日曜日

jQueryでAjax中にボタンを無効にする

TwitterBootstrap+jqueryでAjax後ボタンを押せなくするメモ
http://zenback.itmedia.co.jp/contents/logmemotips.com/archives/2938

上の肝心のソースが見えなくなっていたので書いてみました。
大事なところはjQuery.ajax()の前処理をするbeforeSendと後処理をするcompleteですね。

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Hello</title>
<script type="text/javascript"
 src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
 $(function() {
  $("button").click(function() {
   $.ajax({
    beforeSend: function(){
     $("button").attr("disabled","true"); 
     $("div").text("Waiting...");
    },
    type:"GET",
    url:"hello",
    success: function(msg){
     $("div").text(msg);
    },
    complete: function(xhr,event){
     $("button").removeAttr("disabled");
    }
   });
  });
 });
</script>

</head>
<body>
 <button>Submit</button>
 <div></div>
</body>
</html>

URL短縮サービス作りました。

URL短縮サービスを作りました。

 furl.jp

もともとGAE、jQueryの勉強が目的でつくったので特に特徴はないですがシンプルでいいんじゃないかと思います。

実はRailsでも作ろうとしたことがあるのですがrubyに慣れていないのとRailsの複雑さに挫折した経緯があったので結局単純にServletで作りました。

今後直していきたい、解決したいところは以下です。
1)URL短縮処理中にボタンが押せるので 押せないように制御する。
2)URL短縮処理中なのかよく分からないので分かるようにする。
3)データアクセスにLow-Level APIを使って少しでも速くしてみる。

独自ドメインURLのリダイレクトにGoogle Appsを使っており無料版が1ヶ月しか使えないので続ける場合はお金が必要になるというところが一番の課題ですね。。