タグ

javaに関するvoidy21のブックマーク (275)

  • ジェネリクス型変数と型階層 - プログラマーの脳みそ

    @masaru_b_cl とジェネリクスの話をしていて、継承の際に型変数に具体的な型をバインドして単純化したりするんだよ、みたいな話をしていたのだけど、コード例がないとイメージしにくいと思うのでちょっと書いておこう。 二つの型変数 I, O をもつinterfaceがあったとする。 public interface Executor<I, O> { O exec(I in); } この実装クラスとしてListを受け取って合計を返すSumIntegerクラスを考えよう。 public class SumInteger implements Executor<List<Integer>, Integer>{ public Integer exec(List<Integer> in) { int ret = 0; for (int value : in) { ret += value; } re

    ジェネリクス型変数と型階層 - プログラマーの脳みそ
    voidy21
    voidy21 2009/10/09
  • FizzBuzz ループ→再帰→Composite→Strategy→Visitor - プログラマーの脳みそ

    最近FizzBuzzをblogで書くといいよみたいな流れになっている(曲解)ので FizzBuzz - 文殊堂 と id:monjudoh が言ったからというわけではないのだけど、FizzBuzzとアルゴリズムの書き換えの話をしよう。 やや昔のエントリになるけどもJavaでFizzBuzzを再帰で作ったというエントリをみつけた。 public class FizzBazzSaiki{ public static void main(String[] args){ System.out.println(func(args.length>0?Integer.parseInt(args[0]):30)); } public static String func(int i){ if(i == 1) return "1"; System.out.println(func(i-1)); return

    FizzBuzz ループ→再帰→Composite→Strategy→Visitor - プログラマーの脳みそ
    voidy21
    voidy21 2009/10/06
  • 連載: IBM Watson Workspace #鬼わか アプリケーション開発: 第 7 回: IBM Watson Workspace で AI を利用したアプリ連携の実現 #鬼わか 解説(前編)

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    連載: IBM Watson Workspace #鬼わか アプリケーション開発: 第 7 回: IBM Watson Workspace で AI を利用したアプリ連携の実現 #鬼わか 解説(前編)
  • Javassist 入門

    Java Press vol. 35, pp.76--85, March 2004. Java プログラムの"舞台裏"大追跡 Javassist -- Java バイトコードを操作するクラスライブラリ -- 入門 先端J2EE サーバJBoss が,人知れず内部で行っていること 千葉 滋 東京工業大学・大学院情報理工学研究科 はじめに Java バイトコードを変換するライブラリとしては Jakarta BCEL が有名です。BCEL は Java クラスファイルのデータ構造を直接操作する場合には便利ですが、Java クラスファイルの内部仕様、つまり Java バイトコードに詳しくないと使いこなせません。一方、Java バイトコードにあまり詳しくない開発者でもバイトコード変換を実装できるようにするライブラリが Javassist です。 バイトコード変換 はっきりいって、つい最近までJava

    voidy21
    voidy21 2009/09/27
  • JavaからWin32 APIを簡単に呼べるnlinkを使ってみた - kaisehのブログ

    Windowsのファイルにhidden属性を付けたかったんですが、Pure Javaではそのようなことができないので、JavaからWin32 APIを呼び出せるnlinkを使ってみたら、ものすごく簡単でした。これは便利! 以下のようにするだけで使えます。 MSDNとかで、呼びたいAPIのシグネチャを調べる。 APIのDLLと同名のインタフェースを作って@DllClassアノテーションを付ける。 シグネチャに合わせたメソッドを定義して@DllMethodアノテーションを付ける。 NLink.create()でインタフェースのプロキシを生成して呼び出す。 ファイルにhidden属性を付けるコードは、次のようになります。 Kernel32.java @DllClass public interface Kernel32 { public static final int FILE_ATTRIBU

    JavaからWin32 APIを簡単に呼べるnlinkを使ってみた - kaisehのブログ
  • GAE/J + githubでどこでもプログラミング! - そうだ?Blogを書こう?

    2009-09-29追記 ssh-keyの追加に関する記述が誤っていたのを修正 2009-10-01追記 多環境間のリポジトリのマージについて追記 最近趣味開発で、Eclipce上からgithubとGAE/Jを使って開発する環境を作りました。 こいつが実に素敵滅法なので簡単にまとめたいと思います。 いろいろスッ飛ばしていますがご了承下さい・・・ GAE/Jって何さ EclipseでJava版App Engineを始めるための基礎知識 (1/4):Google App Engineで手軽に試すJavaクラウド(1) - @IT Google App Engineという、Googleが提供するレンタルサーバーみたいなものです。 (レンタルサーバーほど自由度はありませんが簡単で、レンタルサーブレットコンテナといった感じです) インターネット上でJavaアプリケーションをデプロイして、簡単にWeb

    GAE/J + githubでどこでもプログラミング! - そうだ?Blogを書こう?
  • 簡単、OpenCV+Javaで「顔認識プログラム」を作ってみよう! - レベルエンター山本大のブログ

    OpenCVで顔認識をするのが、いろんな言語で流行ってるけど、Javaでやってるのはあんまり見かけません。 と言うことで顔の部分を認識して四角で囲むってのをやってみます。 出来上がりはこんな感じ。 ハマったところはあったけど、出来上がってみると簡単。 OpenCVとは まずOpenCVをしらない人のために簡単に説明。 OpenCV(おーぷんしーぶい)とはインテルが開発・公開しているオープンソースのコンピュータビジョン向けライブラリ。 http://ja.wikipedia.org/wiki/OpenCV ただし、提供されているのはC++のライブラリなのでJavaなどから利用するのはちょっと手間です。 以下のサイトで、Javaから利用できるOpenCVのブリッジライブラリが提供されているのでここを参考にしてサンプルを作ってみます。 ただし、現時点ではまだOpenCVのすべての機能を、このライ

    簡単、OpenCV+Javaで「顔認識プログラム」を作ってみよう! - レベルエンター山本大のブログ
    voidy21
    voidy21 2009/09/26
  • Java の enum - ぐるぐる~

    イマドキの Java には enum があるんですよ実は、という話。 知ってるよそんなこと!な人は読むまでもないかも。 enum って? 列挙型のこと。C とか C++ とか C# とかでおなじみのアレ。 単純な enum は Java でもこれらの言語の enum と同じような記述になるけど、これらの言語の enum が整数型をベースにしているのに対して、Java ではオブジェクトをベースにしている点が異なる。 まぁその話は後ほど・・・ 単純な enum ただ列挙するだけの enum なら、当に C や C++ や C# とほとんど変わらない。 // 信号機の色 enum SignalColor { RED, BLUE, YELLOW } ただこれだけ。末尾には、余分なカンマがあってもいい。 enum SignalColor { RED, BLUE, YELLOW, } 更に、末尾にセ

    Java の enum - ぐるぐる~
    voidy21
    voidy21 2009/09/20
  • 過去のコード資産なんて負債 - NullPointer's

    もう文章まとめるの面倒くさいので思いつきの断片そのまま Javaは冗長だからダメ、という意見を良く聞くけど、たぶん当にJavaがダメな理由はコード記述の冗長性なんかじゃなくて、フレームワークが巨大だったり重量級で取り回しが面倒って事じゃないだろうか。 元々スクリプト言語はその出自からして特定の領域の問題をさっくり片づけるための言語だから、フレームワークも同様の軽量な思想で作られているものが多い。Railsなんかが良い例。 Railsが軽いかといわれれば疑問だが、Light Weight Language のlightと同じ意味での軽さ Javaって「Write once, Run Anywhere」というスローガンからはじまったためなのか知らんけど汎用である事をよしとする思想が強いように思う。依存性のないPOJOマンセーというPOJO信仰もその一種か。しかし、汎用性を重視しすぎたためにフ

    過去のコード資産なんて負債 - NullPointer's
  • GWTでTwitter - hidecheckの日記

    GWTを使って、発言、検索、TLの表示をするアプリを作成する ■アプリ概要 ページを開くとTimeLineの取得をする Sayボタンを押すとTextBoxの内容をつぶやく Searchボタンを押すとTextBoxの内容を検索する 更新ボタンを押すとTimeLineを更新する ■レイアウト RootPane SendPanel TextBox SendButton SearchPanek TextBox SendButton TLPanel 更新Button ■プロジェクト概要 プロジェクト名:GwtTwitter ■作成手順 twitter4jの追加 Beansの作成 twitterのラッパークラスを用意してRPC通信をする ユーザ名、つぶやき、Icon、などをフィールドにもつ Service・ServiceAsync作成 つぶやきメソッド定義 検索メソッド定義 TL取得定義 Cliant

    GWTでTwitter - hidecheckの日記
  • 【読者参加型企画】2,000行のJavaソースコードを読むのに何分かかりますか?

    ソースコード読解力は個人差が大きい コードレビューなどで、他の人のソースコードを読んだり理解したりする速度が気になることはありませんか? また、読む速度や理解する速度がとても速い人がいると感じたり、自分が周りの人よりも速いと思ったりすることがあるのではないでしょうか。私たちの研究グループで実施した観察でもソースコードを読む速度は個人差が大きいことを確認しており、同じソースコードを理解するための時間に6倍の差がある事例を確認しています。 では、自分自身のソースコードを読む速度や理解する速度が、平均と比べて速いのか遅いのかを知るためにはどうしたらよいでしょうか? 最も簡単な方法は、社内などの身の周りの人とコードレビュー時間を比べてみることでしょう。他にも、参加者全員でソースコードを読むような社外勉強会に参加する方法もありそうです。 文献からは大まかな速度を知ることができる 書籍、標準、論文の情

    【読者参加型企画】2,000行のJavaソースコードを読むのに何分かかりますか?
    voidy21
    voidy21 2009/09/12
  • Javaアプリケーション開発におけるコード生成の役割

    原文(投稿日:2009/09/03)へのリンク SpringSourceのSpring Roo、Skyway Builder Community Edition 6.3、Blu AgeのM2Springといった最近リリースされたコード生成ツールを見ると分かるのは、エンタープライズJavaアプリケーションの開発におけるコード生成の役割に再び関心が集まっているということだ。 コード生成も含んだモデル駆動開発(MDD)は、ますます関心を集めつつある。それは一般的なJavaアプリケーションで自動生成できるものがいくつもあるからだ。一般的なウェブJavaウェブアプリケーションはDAOのようなクラス、XMLのマッピングファイル、SpringやLog4Jの設定ファイルを利用するが、これらはどれも自動生成が向いている。 Rooは双方向型のコード生成フレームワークで、Springベースのウェブアプリケーショ

    Javaアプリケーション開発におけるコード生成の役割
    voidy21
    voidy21 2009/09/10
  • 第6回 XMLの扱い方

    今回は,商品一覧を表示する簡単なツールの作成を通じて,データ表現形式の主流になりつつあるXMLファイルをJavaでどう扱うかを見ていくことにします。多くの場面で使われるXMLファイルの扱い方を覚えれば,仕事の幅も広がること間違いなしです。 皆さんこんにちは,kikainekoです。この連載では,日々の定型的な業務をJavaで自動化してラクする方法を紹介しています。前回は,Wordファイルの扱い方を説明してきました。Javaによるファイル操作には,ずいぶん慣れてきたのではないでしょうか。 今回は,データ表現形式の主流と言っても過言ではないXMLファイルを取り上げます。XMLで記述されたファイルを,Javaからどのように操作するかを一緒に学びましょう! XMLファイルを操作するといっても,特に身構える必要はありません。実は,皆さんの周りにはすでにXMLで記述された文書が数多く存在しています。例

    第6回 XMLの扱い方
    voidy21
    voidy21 2009/09/10
  • Android(HT-03A)でiPhone版ニコニコ動画にアクセスする(1) - 発火後忘失

    パケット解析結果の妥当性検証のため、Javaで実際にHTTP通信を行ってみた。デスクトップPCからアクセスしても面白味に欠けるため、Android端末であるdocomoのGoogleケータイHT-03Aからアクセスし、実際に画像表示までを行っている。 ただし、Androidプログラミングについては、私自身が学習を始めてから間がなく、説明したとしても誤りを多く含んでしまう懸念があるため、ポイントのみ提示することとした。 前半はJakarta Commons HttpClient4.0を用いたHTTP通信について説明する。この部分についてはAndroid SDKには依存しない(ただし注意点あり。後半に記述)ためデスクトップのJDKで実行可能である。 後半ではAndroid上で実行する際のポイントを説明する。 今回用いたソフト/ハードは以下の通り。 HttpClient4.0及び依存ライブラリ

    Android(HT-03A)でiPhone版ニコニコ動画にアクセスする(1) - 発火後忘失
  • 八角研究所 :

    Android とは、Googleが発表した携帯電話向けのプラットフォームの名称です。2007年11月に発表され、2009年夏までには各社から実機がリリースされる予定です。既にAndroid の SDK が無償で配布されており、これを利用して、多くのアプリケーションが公開されています。Android は、Java で自作ソフトを開発できる点も話題になっています。連載では、Android をきっかけに、かつてやったことのある Java プログラミングを再開しようというものです。

  • Groovy 1.5の新機能

    今日では、あらゆるメジャーなエンタープライズフレームワークはアノテーションやEnum、ジェネリックスと言った機能を必要としており、それらが使用される範囲は最大限広げられつつあります。幸運なことにGroovy 1.5ではこうしたJava 5の機能が全てサポートされ、開発者はプロジェクト内においてそのメリットを享受することができます。アノテーションやEnum、ジェネリックスが Groovyでどのように使われているかを見ていきましょう。 Java 5の追加機能 Groovy コンパイラは常に、より古いJava VMと互換性のあるJavaバイトコードを生成しますが、Groovyが使用するコアライブラリはJDK1.4に依存しています。しかし、これらJava 5の追加機能のうち一部の機能のためには、Java 5のバイトコードを使用する必要があります。例えば生成されるクラスは、ランタイムリテンションポリ

    voidy21
    voidy21 2009/09/01
    エルビス演算子
  • AndroidでJNIを使う方法 - Android(アンドロイド)情報-ブリリアントサービス

    AndroidでJNIを使う方法をドキュメントにまとめました。 PDF版はこちら Androidのコンパイル環境を構築されていることが前提です。 よろしければAndroidのコンパイル環境を整える方法にあるPDFのコンパイル環境構築資料をご覧ください。 AndroidでJNI – Android meets JNI 株式会社ブリリアントサービス 勉どろいどチーム 和泉憲二 門口敏広 藤田竜史 このドキュメントでは、androidアプリケーション(Dalvik VM)からJNI(Java Native Interface)を使用して、C/C++言語で作成した共有ライブラリのJNIメソッドをコールする、一連の方法について解説します。 開発環境 ドキュメントでは、以下の開発環境が用意されている事を前提に、説明を進めます。 用意する環境 ドキュメントにおける確認済みの環境 androidアプリ

    AndroidでJNIを使う方法 - Android(アンドロイド)情報-ブリリアントサービス
  • JTropyを作り直した(Google App Engine for Java上で動くTroppyクローン) - ツカサのチラシのウラ

    Java版のTropyクローン(JTropy)を自宅サーバで公開していたが、 入院してしまい自宅サーバの維持ができなくなったので、GAE上で動くように作り直した。 http://jtropy.appspot.com/ 元のソースは自宅サーバでのみ管理していて引っ張りだせなかったのでスクラッチから書き直した。 今回作り直したソースをGitHub上で晒す。 http://wiki.github.com/2ca3/JTropy JDOを始めて使ってみたので、嵌った所をメモ。 JDOQLのcountは小文字でなければいけない。 SELECT等のステートメントは大文字小文字どちらでも良い。 OK SELECT count(id) FROM hoge; OK select count(id) from hoge; NG SELECT COUNT(id) FROM hoge; JDOQLの結果で0件また

    JTropyを作り直した(Google App Engine for Java上で動くTroppyクローン) - ツカサのチラシのウラ
  • throw Life - AndroidのHandlerとは何か?

    AndroidでWeb APIを使う場合、マルチスレッドによるユーザビリティ向上を以前のエントリで説明しました。 AndroidアプリのUIはシングル・スレッド モデルです。 単純にマルチスレッドにしてUIの操作をしてしまうと、CalledFromWrongThreadExceptionでアプリがダウンしてしまいます。 これを回避する仕組みがHandlerです。 Handlerの仕組みを簡単に説明しようと思ったのですが、 またもや長くなってしまったので、先にまとめます。 AndroidUI操作はシングル・スレッド モデル ユーザビリティ向上の為にはマルチスレッドが必要 Handlerで実現 Handlerを使わない場合に起きる例外は実行スレッドのチェックで発生 Handlerを使うと、UI Threadの持つキューにジョブを登録できる キューはUI Threadにより実行される

  • 【Google App Engine】 Entityとトランザクション3

    Scaleするかどうか、それが問題だで主張したとおり、クラウドではスケールしなければ意味がない。以下は、GAEで大規模な処理をやって、特にトランザクション処理で悪戦苦闘した際のメモである。日の発表資料=>ココにも含まれている。 大量データをINSERTできない件について 先日、Entityとトランザクション2において、Ownedな関連を使ったUpdateサンプルを紹介したわけだが、実はこれ、大量データをINSERTすると急激に遅くなるという問題を含んでいることがわかった。実際にテストしてみたところ、15000件を超えた時点でタイムアウトが頻発、15300件からはとうとう1件も登録できなくなってしまった。 com.google.apphosting.runtime.HardDeadlineExceededError: This request (c1fe232d20adabba) star

    【Google App Engine】 Entityとトランザクション3