RIAトピックス
リッチクライアント/RIAを主テーマに取り扱います。Flex、Ajax、AIR、Silverlight、JavaFX、etc。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【Java】Arrays.asList(String[])の注意点
先日、配列をListに変換するメソッドArrays.asList(String string)で、はまった事象がありましたのでまずは以下のソースをご覧下さい。

String[] str = new String[] {"aaa", "bbb"};
List list = Arrays.asList(str);
list.remove(0);


↑これを実行するとUnsupportedOperationExceptionが発生します。
発生場所は「list.remove(0);」になります。

どういう事かというと、Arrays.asList(String[])で返されるListにはremoveやaddメソッドが実装されていないんです。(add/removeメソッドは任意のオペレーション)
removeやaddは一般的なメソッドですし、eclipseのデバックで型を見ると「Arrays$ArrayList」となっているのでしばらく原因がわかりませんでした。

解決策としては↓の通りで、ArrayListなどの実装されているクラスでラップしてあげて下さい。

List list = new ArrayList(Arrays.asList(str));

例外が起こってみればすぐわかることですが、開発中にもよくありそうな事象ですのでArrays.asList(String[])を使用するときには思い出して使用してください。

Java の java.util.Arrays.asList について少し調べてみた 【お だ のスペースより】
http://d.hatena.ne.jp/odashinsuke/20090623/1245762058

配列から任意の項目を削除する方法について 【@IT より】
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10048&forum=12

K.Y

テーマ:プログラミング - ジャンル:コンピュータ

足し算引き算で10を作るゲームと部分和問題、DP
足し算引き算で10を作るゲームと部分和問題、DP  【素人がプログラミングを勉強するブログより】
http://d.hatena.ne.jp/javascripter/20091220/1261322631

切符の4桁の整理番号(?)で10を作るプログラム。
前提部分を読んで作成してみましたが、35分もかかってしまいました。。。
簡単そうに見えて結構難しいので是非チャレンジをしてみてください。

K.Y

テーマ:プログラミング - ジャンル:コンピュータ

10分コーディング
10分でコーディング
http://ameblo.jp/programming/entry-10001721422.html

ぱっと浮かばなかったのでかなり焦りつつも、最終的にバグってて凹みました…
とっさにやろうとすると焦ってダメですね。
こういうの勉強になるなぁ

カード配り問題 【素人がプログラミングを勉強するブログより】
http://d.hatena.ne.jp/javascripter/20091216/1260974183

K.Y

テーマ:プログラミング - ジャンル:コンピュータ

ニコニコ動画でみつけた動画
なんとなしにニコニコしていたら、面白いのがいくつかあったので紹介。
投稿日時がかなり前なので見たことあるのもあるかも。
とか言ってる私も一番上の1曲終わるまでにシリーズは昔見た記憶あり。
こうやって楽しく作るっていいですよね

自作プログラム 【ニコニコ動画(9)より】
http://www.nicovideo.jp/mylist/2614110

20分かからずにあのゲームをプログラミング 【ニコニコ動画(9)より】
http://www.nicovideo.jp/watch/sm3585609

【プログラミング】テトリスを1時間強で作ってみた【実況解説】 【ニコニコ動画(9)より】 
http://www.nicovideo.jp/watch/sm8517855

K.Y

テーマ:プログラミング - ジャンル:コンピュータ

equals()実装時に必要なhashCode() について
Javaでequalsメソッドを実装する際にはhashCode()も同時にオーバーライドしなければなりません。
hashCode()とequals()の関係性は知っていましたが、hashCode()がどのような意味を持っていてどうして実装する必要があるのかよくわかりませんでした。

今回equals()を実装する事になったのでこれではいけないという事で調べてみました。

まず、hashCode()で返す値は以下の条件を満たす必要があります。
1.equalsで等しいと判定されたオブジェクトは等しいハッシュ値を持つ
2.equalsで等価性の判定に用いられたフィールドに変更がない限り常に同じハッシュ値を持つ

で、hashCode()の意味ですがこれはequals()の速度向上のためなどのindexの役目をするらしいです。
だから、hashCode()が等しくてもequals()がtrueを返す必要はないという訳ですね。
調べてもこの事が調べても意外と出てこなかったので記事にしてみました。

equals(), hashCode() の実装 【cleverwareの日記より】
http://d.hatena.ne.jp/cleverware/20090408/1239193207

java規約について【質問&回答 (Q&A) コミュニティ - 教えて!gooより】
http://oshiete1.goo.ne.jp/qa675605.html

K.Y

テーマ:Webサービス - ジャンル:コンピュータ

【じゅんいち☆かとうの技術日誌】小数点の計算をやるからといってすぐにfloatやdoubleを使ってはいけない
http://d.hatena.ne.jp/j5ik2o/20091024/1256369305

Javaの場合、小数点が含まれる数値にはdoubleやfloatを使うのが一般的ですが、それらだと特性上計算結果に誤差が生じてしまうので、精密な計算が求められる場合にはBigDecimalを使った方が良いようです。

それを確かめるためのサンプルコードも上記エントリには書かれていますので、是非体験した上で型選択の重要性について、もう一度再考してみて下さい。



ヨウイチ

テーマ:プログラミング - ジャンル:コンピュータ

【特定非営利活動法人Seasarファウンデーション】Seasar Conference 2009 Autumn
http://event.seasarfoundation.org/sc2009autumn/

当blogでも以前紹介したように、9/12にSeasarカンファレンス2009Autumnが開催されました。

今回は今までの「業務にすぐ使えるJavaフレームワーク」という以外にも、「クラウド」「HTML5」といった最新のキーワードが随所に盛り込まれたセッションが多かったと思います。また、以前までですと1セッション完結型の発表が多かったのに対し、今回は「1セッションだけ聞いてもいいけどできればその後の1~2セッションも一緒に聞いた方がタメになるよ」というセッションが多かったように思います。
やっぱり一番人気はひがさんのSlim3を活用したクラウドに関するセッション群でしたが、他にも興味深いセッションが多く開かれていました。

資料は随時公開されているようですので、参加された方も残念ながら会場にいけなかった方も是非チェックしてみて下さい。


【よねのはてな】SeasarCon終了とT2のデモ
【c9日記】SeasarConference Autumn終了
【おおたに6号機blog】SeasarConに登壇しました。
【おおたに6号機blog】話題?のデモ集
【kaisehのブログ】『Blogopolisの裏側』発表資料
【4Gトピックス】Seasarカンファレンス



ヨウイチ

テーマ:システム開発 - ジャンル:コンピュータ

【おおたに6号機blog】SDLoaderがめちゃ便利な件
http://d.hatena.ne.jp/shot6/20090908#1252372192

当blogでも以前軽く紹介させて頂いたSDLoaderは、デスクトップ上で簡単にWebアプリを動かす事の出来るサーブレットコンテナです。

一般的にサーブレットコンテナといえばTomcatですが、起動に時間もかかるし設定もやや手間が必要です。ところがこのSDLoaderであれば本当にわずかの手間でWebアプリを動かす事ができます。その代わり、デスクトップ内に閉じていますので、他のPCからネットワーク越しにアプリを確認する、という事はできません。

確か以前のプレゼンで、「USBで持ち歩けるWebサンプルデモ実行環境」と謳っていらっしゃった記憶があります。顧客先でサンプルを動かす必要がある際には、非常に便利なんじゃないでしょうか?

開発中のRIA用サーバーサイドFW「T2」の公開デモアプリにも採用されており、私もちょっとだけ触ってみましたが、殆ど手間無しでサンプルを動かす事ができました。これは本当に凄い!! しかも起動が早い!

開発の時には大きな助けとなってくれると思います。是非一度使ってみて下さい。


【c9日記】v0_3_02リリース


ヨウイチ

テーマ:システム開発 - ジャンル:コンピュータ

【ITpro】GCを気にせずJavaアプリケーションを設計してはいけない
http://itpro.nikkeibp.co.jp/article/COLUMN/20090818/335664/

掲題のままですが、Javaでシステム開発するときにはガベージコレクション(以下、GC)の存在を忘れるな、というお話です。

Javaで不要なメモリを綺麗にしてくれるのがGCですが、その実行コストはかなりかかります。それがフルGCだと相当なもので、大規模なシステムであれば1秒近く要してしまうそうです。

たかが1秒、されどひっきりになしにアクセスを処理する大規模システムにとって1秒はかなりの致命傷。いかにしてフルGCの回数を減らすか、また、フルGC発動中にいかにシステムを堅持するかは開発時の設計次第です。

システムは開発はせいぜい長くて1年、しかし運用は10年以上の場合がほとんどです。開発者はつい運用フェーズを忘れがちですが、長く手軽に運用できるように設計するのもSEの重要な努めですよ。



ヨウイチ

テーマ:システム開発 - ジャンル:コンピュータ

【C9日記】知っ得納得Webフレームワーク勉強会第6回終了
http://d.hatena.ne.jp/c9katayama/20090829/1251517718

大体月1回のペースでSeasar系プロダクトを開発されている方が巷のWebフレームワークを解説してくれる「知っ得納得Webフレームワーク勉強会」ですが、今回は「Struts2」と「Griffon(GroovyベースのSwingフレームワーク)」が扱われたようです。

Struts2は「Struts」と名が付き、実際にStrutsの後継として生まれたのですが中身はやや別物で、Strutsだと思って採用すると混乱するんじゃないかとの事。GriffonはSwingながらJavaFxのような感覚で開発できるそうですが、まだ出来たばかりで色々と不足もあるようです。個人的にはGriffonはちょっと興味があるんですが、今のところWebで資料公開はされてないみたいですね。もし可能であれば是非拝見したいところです。

知っ得納得Webフレームワーク勉強会」はまた9月末にも予定されているようなので、興味のある方は継続チェックしてみて下さい。


【おおたに6号機blog】知っとく納得Webフレームワーク勉強会のStruts2資料でけた
【C9日記】知っとく納得Webフレームワーク勉強会第6回
【おおたに6号機blog】知っとく納得Webフレームワーク勉強会第6回



ヨウイチ

テーマ:システム開発 - ジャンル:コンピュータ

copyright © 2005 RIAトピックス all rights reserved.
Powered by FC2ブログ.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。