Java

Apache Tuscany

http://www.apachenews.org/archives/001067.html http://incubator.apache.org/tuscany/ そもそもService Component Architecture(SCA)というものを知らんかったのだけど、SCAというのはSOAの共通基盤となる仕様で、そのJava実装がTuscanyらしい。SOAとか…

32bit Java環境の最大ヒープメモリサイズ

http://nekop.programmers.jp/diary/?date=20070920#p01調べ方が書いてないので勝手に補足すると java -Xmx1500m -versionとやってバージョンが表示されれば、そのヒープサイズはOK。32bit環境のヒープについてはこの辺に載ってる。 http://java.sun.com/doc…

doメソッドが二回呼ばれる

Teedaで <form id="testForm"> <input type="submit" id="doHogehoge" />あ <input type="submit" id="doHogehoge" />い </form> という記述をしてもsubmitボタンは一つしか作られない。HTMLが変になるだけでsubmitしても特に問題は起きないのだが…booleanプロパティによる表示を切り替えを使って、 <form id="testForm"> <span id="isHoge"> <input type="submit" id="doHogehoge" />あ </span> </form>

JavaなヒトがCを学ぶ理由

茶々入れ Javaをやっている人がC言語を学んで何かメリットがあるだろうか?神様なんて信じない僕らのために - C言語とは 時々でいいですからJNIのこと思い出してくださいw もっともCというよりも、WindowsではVC++、MacではObj-Cだけど。JNIは普通(?)のJ…

Teeda Ajaxでハマる

Smart Deploy方式でTeeda Ajaxを試したのだが、AjaxError 500コンポーネントにはそんなメソッドねえぜ!という例外が出て動作しない。小一時間ほど悩んでajaxメソッドがPageではなくてActionに書いてあったことに気付き、Pageに移してみると動作した。ajaxメ…

役に立たないクラスを作成

JavaのWriterは、文字列の出力を文字ストリームという概念で扱って、データ出力先と出力の手続きを隠ぺいし、出力先が何であろうと同じメソッド呼び出しで出力することができるようにする抽象クラス。一般的に出力先となるのは標準出力やファイルだが、ネッ…

Jakarta Commonsもトップレベルに昇格?

Velocity、POIに続いてCommonsもトップレベルに昇格したようだ。 http://commons.apache.org/ プロジェクトサイトのURLとプロジェクト名が変更されている。いつの間に…

Rubyはかっこいい

Railsの作者は美しいコードが書けるからRubyを選んだそうだが、俺にとってのRubyは美しいというよりもカッコいい。かっこいいからRubyを使う。Railsに付属しているActiveSupportはTime等のオブジェクトに便利なメソッドを提供する。Railsユーザならご存知の…

無名クラス

無名クラスは、名前を持たないその場限りのクラス実装を作成する。通常はインターフェースの実装クラスや抽象クラスのサブクラスとして作成する。 String[] strs = new String[]{"bbb", "aa", "dddd", "ccccc"}; Arrays.sort(strs, new Comparator<String>(){ public</string>…

Seasar2のouter

Seasar2のインスタンス管理にはouterという指定がある。ドキュメントによると コンポーネントのインスタンスは、S2Container外で作成し、Dependency Injectionだけを行います。アスペクト、コンストラクタ・インジェクションは適用できません。 これはどう使…

Eclipse 3.3 Europa

Eclipse 3.3 正式版がリリースされていた。MacOSXにインストールした。

mod_proxy_balancerでTomcatクラスタを作る

mod_proxy_ajpを使ったTomcat連携にmod_proxy_balancerを加えると、ApacheをTomcatのロードバランサとして使えるようだ。モジュールだけでこんな事までできるとは、最近のApacheはとても高機能ですね。以下Apache 2.2 + Tomcat 5.5で試した設定。 ProxyRequ…

mod_proxy_ajpでTomcatと連携する

TomcatとApacheの連携といえばmod_jk、そして非常に面倒クサイというのが定番だったけど、今やJKなんてもう古い。mod_proxy_ajpを使用し、ApacheをTomcatのリバースプロキシとして使うのがApache2的な方式らしい。 LoadModule proxy_module modules/mod_prox…

Comet on Tomcat on MacOSX

MacOSX10.4環境でTomcat6のHttp11NioProtocolを使用するとリクエスト時にSocketExceptionがスローされる。java.io.Socket#setTrafficClassメソッドが正しく動作しないようだ。これは、JVM起動オプションを設定すると回避できる。 -Djava.net.preferIPv4Stack…

TomcatでComet

Tomcat 6では入出力処理をNIO APIに置き換えるなどして、I/O周りが大幅にパワーアップしているらしい。そして、新しいAdvanced IOを利用してCometなサーブレットを作成できるようになったそうだ。とりあえず遊んでみた。 catalina.jarをクラスパスに追加 Com…

字下げスタイル

一般的には使用している言語の開発者が規定した規約に従うことが多いかな。Java言語の場合、厳密な規定は無いようだが、 while (x > 0) { }と while (x > 0) { }ならば、Sunが推奨しているJava言語コーディング規約に従って後者を用いる事が多い。個人的には…

log4jのFileAppenderとか

<appender name="catalina" class="org.apache.log4j.DailyRollingFileAppender"> <param name="file" value="${catalina.home}/logs/hoge.log"/> </appender> <appender name="desktop" class="org.apache.log4j.DailyRollingFileAppender"> </appender>

SecurityFilter

SecurityFilterは、J2EE Webアプリケーションに認証・承認機能を追加できるライブラリ。Tomcatのようなサーブレットコンテナはそれ自身が認証機能を持っているが、SecurityFilterはどのコンテナでも使えるとか、自動ログインをサポートしているといった特典…

今日のプチハマリメモ

mayaa採用してぷちハマり。 mayaaでServletやStruts Actionから/WEB-INF/page/test.htmlにフォワードする場合は /WEB-INF/page/test.htmlではなくて /test.htmlにフォワードするように設定する。/WEB-INF/page/test.htmlにフォワードするとForbiddenPathExce…

S2Dao Tigerのbeanアノテーション

S2DaoをS2Dao Tigerに置き換えたところ、エラーが出るようになってしまった。スタックトレースを見るとbeanアノテーションで指定されたクラスがfinalクラスだった為にエラーとなったようだ。アスペクトしているわけではないので問題ないと思っていたが、普通…

デブサミ

Shibuya.pmやid:amachangのJavaScriptも聞いてきたが、既にネット各所でレポートが上がっているので、ここで書く必要あるまい。最近、偉大なるJavaの父ジェームズ・ゴスリンは、J2EEなんかウンコだぜと、エンタープライズ糞宣言をし、組み込み系Javaにご執心…

includeとextendその1

Rubyにはモジュールという機能があり、クラスの機能を分割、再利用できます。モジュールの機能をクラスに追加するにはincludeを使います。 module Fuga def execute puts "fuga" end end class Hoge include Fuga end hoge1 = Hoge.new hoge1.execute hoge2 …

丸山先生レクチャーシリーズ

金曜日、丸山先生レクチャーに逝ってきた。参加者が皆ラフな私服であった筑波大学のGoogleセミナーと違い、スーツ率が高い。イベントの性質の違いやWeb系と業務系の文化の違いもある。それにしても自分はどっちに所属しているのだろうか。最初の講演は「シス…

Java 6正式版リリース

http://journal.mycom.co.jp/news/2006/12/12/340.html 業務で使えるのは、しばらく先になりそう。 パフォーマンスがアップ JVMがかなり高速化されています。http://sugi.sakura.ne.jp/column/021108a.htmlこちらのバブルソートプログラムを要素数5万で計算…

JavaでJSON文字列をパースする

JSON出力クラスを作ったのだが、テストケースが出力結果文字列全体で比較するしかないというのが、なんとも厳しい。データ毎にきちんとテストケースを書きたいのだ。JSON文字列をパースして、Javaオブジェクトに変換するライブラリがあればいいのだが、検索…

入れ替え

if (a != b) { a = a ^ b; b = a ^ b; a = a ^ b; }おお、こんなやり方があったのか。同じ値で二回排他的論理和をとると元の値に戻るってヤツですかね。ま、今時役立つとは思えないけど、少ないメモリでやりくりしていた時代の知恵、おもしろいなぁ。 追記 X…

SimpleDateFormatは同期化されない

SimpleDateFormatは同期化されない。 // 悪い例 public class HogeBean { private Date date; private static final SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); public String getDateAsString() { return formatter.format(this.da…

Churaで遊んでみる。

昨日のSeasarカンファレンスのSuper Agileデモの真似事をして遊んでみる。Eclipseのアップデートにttp://eclipse.seasar.org/updates/3.1bate/を追加して、Doltengプラグインを落としてくればすぐ使える。私のEclipse 3.1環境でにDoltengプラグインを入れた…

@ITに載ってるJavaでダイジェスト生成のコードが気に入らない

もちろん分かっていて書いているんだろうけど。 int d = digest[i]; if (d < 0) {//byte型では128〜255が負値になっているので補正 d += 256; } この処理はbyteのビット列をそのままintの下位8ビットにコピーしたいということ。実は一行で書ける。 int d = 2…

インスタンスメソッドのアクセス制限2

Rubyのマニュアルには「privateは自クラス及びサブクラスからしか参照できません。」とあるが、正確には、自インスタンスの内部からしか参照できないような感じ。Javaでは、同一クラスであれば別のインスタンスのprivateメソッドも呼べるのであるが… public …