タグ

javaに関するmiya2000のブックマーク (142)

  • Eclipse のライブラリを流用して diff 系ツールを自作する方法 - toyfish.blog

    「また明日から 2 つのデータの差分を目視で見つける仕事が始まるお……」 「ほんとは diff を使って速度も精度も上げたいんだお……」 「でもこの PC には JDK と Eclipse しか入れちゃいけないお……」 「……だから Eclipse を使って diff っぽいツールを自作するお!!」 ほんとは WinMerge とか入れられればいいんですけどね。「WinMerge 入れられない! 入れにくい!!」な環境でなんとかしてみようと思ったわけです。 使うライブラリ Eclipse には「比較エディタ」という機能があり、2 つのファイルの差分を見ることができます。このとき差分検出に使われているライブラリ (というかプラグイン) は、classpath を通せば、自分のアプリケーションからも使えるっぽいです。 Eclipse 3.2 の場合でいうと、plugins ディレクトリにあるこ

    Eclipse のライブラリを流用して diff 系ツールを自作する方法 - toyfish.blog
  • 【レビュー】これはすごい! WebでEclipseばりのコードブラウジングSorcerer (1) 新世代のSorcerer (MYCOMジャーナル)

    Javaのソースコードに特定の表記にしたがってコメントを書いておくと、javadocユーティリティを使ってクラス関係やコメント、APIマニュアルを生成することができる。開発で使われるAPIリファレンスの多くはこの方法で生成されたものだ。 同様にしてJavaソースコードをAPIマニュアルのように加工するソフトウェアにMavenで採用されているJXRなどをあげることができる。稿ではこれに近いソフトウェアのひとつとして「Sorcerer」を紹介したい。19日(米国時間)に公開されたできたてほやほやのプロジェクトで、まだ開発がはじまって間もないが今後の展開が大いに期待できる。 図.1 毎度お世話になっているJDK 1.5 APIリファレンス 図.2 Sorcererで加工されたリッチなJavaソースコードリファレンス

  • GoogleのMapReduceアルゴリズムをJavaで理解する

    GoogleMapReduceアルゴリズムをJavaで理解する:いま再注目の分散処理技術(前編)(1/2 ページ) 最近注目を浴びている分散処理技術MapReduce」の利点をサンプルからアルゴリズムレベルで理解し、昔からあるJava関連の分散処理技術を見直す特集企画(編集部) いま注目の大規模分散処理アルゴリズム 最近、大規模分散処理が注目を浴びています。特に、「MapReduce」というアルゴリズムについて目にすることが多くなりました。Googleの膨大なサーバ処理で使われているということで、ここ数年の分散処理技術の中では特に注目を浴びているようです(参考「見えるグーグル、見えないグーグル」)。MapReduceアルゴリズムを使う利点とは、いったい何なのでしょうか。なぜ、いま注目を浴びているのでしょうか。 その詳細は「MapReduce : Simplified Data Proc

    GoogleのMapReduceアルゴリズムをJavaで理解する
  • XStreamを利用して簡単にディープコピー - kaisehのブログ

    XStreamで書き出し→読み込みすれば、どんなオブジェクトでもディープコピーできるんだなあ。 import com.thoughtworks.xstream.XStream; public class CopyUtils { public static <T> T deepCopy(T obj) { XStream xs = new XStream(); return (T) xs.fromXML(xs.toXML(obj)); } } XStreamなら、対象のオブジェクトがSerializableを実装していなくても書き出せるのがポイントですね。

    XStreamを利用して簡単にディープコピー - kaisehのブログ
  • Eclipse 3.4の新機能は? (1/4) - @IT

    【改訂版】EclipseではじめるプログラミングNew! これからプログラミングを学習したい方、Javaは難しそうでとっつきづらいという方のためのJavaプログラミング超入門連載です。最新のEclipse 3.4とJava 6を使い大幅に情報量を増やした、連載「Eclipseではじめるプログラミング」の改訂版となります Eclipseの星座は、“かに座” 2008年6月26日に、Eclipseの新バージョンEclipse 3.4(コードネーム「Ganymede(ガニメデ)」)がリリースされました。3.3がリリースされたのが2007年6月29日ですから、ちょうど1年間隔ててのリリースとなります。ちなみに、3.2が2007年6月29日、3.1が2005年6月27日、3.0が2004年6月25日ですから、6月の下旬に1年置きにコンスタントにEclipseの新版がリリースされています。Eclip

    Eclipse 3.4の新機能は? (1/4) - @IT
  • 要素の挿入、削除、ランダムアクセスが全部高速なリストを作った - kaisehのブログ

    スキップリスト(Skip List)は1990年に発表された比較的新しいアルゴリズムで、要素の挿入や削除、検索を平衡木と同等のパフォーマンスで実行可能なリスト構造です。 Skip Listは連結リストの多層構成になっています。路線に例えると、最下層のリンクは各駅停車のように、全要素を結んでいます。一方、上層のリンクは急行や特急のように、途中の要素をスキップするようになっています。この路線を特急→急行→…→各駅と乗り継ぐことで、目的の要素に高速に到達できる仕組みです。もっと詳しい解説はこちらやこちらにあります。 で、ここからが題です。Skip Listの実装はいくつも出ているんですが、Sorted Listとしての実装ばかりで、要素を任意順序で格納できてランダムアクセス(indexを指定してのアクセス)可能なSkip Listが見つからなかったので、自分で作ってみました。 通常のSkip

    要素の挿入、削除、ランダムアクセスが全部高速なリストを作った - kaisehのブログ
  • Javaのメソッドコード長制限とLLへの影響 - kaisehのブログ

    Javaには、1つのメソッドのコード長が65535バイトを超えられないという制限があり、64KB以上のメソッドを含むコードはコンパイルエラーになります。 ということは、JVM上で動くLLにも、この制限が課される可能性があるわけです。 例えば以下のコード、Pythonでは実行可能ですが、Jythonではエラーを吐きます。 i = 0 i = i + 1 i = i + 1 i = i + 1 ... (100000回繰り返し) print i Groovyでも、以下のコードはコンパイル不能です。 def i = 0 i++ i++ i++ ... (100000回繰り返し) println iそんな巨大なメソッドを手動で書くことはあり得ないんですが、LLのコードを自動生成するケースでは問題になるなと思いました。というか、実際に問題になった。巨大なデータをハッシュマップに代入してごにょごにょす

    Javaのメソッドコード長制限とLLへの影響 - kaisehのブログ
    miya2000
    miya2000 2008/07/03
    知らんかった
  • Cより速いJava - kenmazの日記

    今日友達と飯をっていて、俺が「CよりJavaのほうが速い場合がある」と言ったら友達が信じられない、という反応を示した。俺も「どっかでそんなことが聞いたことあるな」レベルで喋っていたので「どういう場合に速いのか」は説明できなかった。たしか、どっかにそういう話があったはず・・、ということで寝る前に少しだけググってみたら以下を発見。 http://www.idiom.com/~zilla/Computer/javaCbenchmark.html この論文で以下のよーなことを主張している(意訳。あやしい)。 ポインタによって最適化が難しくなる場合 「Cコード中に変数xを指すポインタpが定義されている場合、Cコンパイラはxの値をレジスタに格納できないので、キャッシュに保持して必要なときに読み込むようにする必要がある。一方でJavaだとポインタがないから変数は必ずレジスタに格納される。Cだとキャッシ

    Cより速いJava - kenmazの日記
  • http://www.csg.is.titech.ac.jp/~chiba/javassist/html/index.html

  • Javassistを使って実行時のクラス拡張をやってみた。 - うなの日記

    Javassistを使うと、実行時のクラス拡張(コンパイル済みのクラスをJavaプログラム実行時に改変し、メソッドに処理を追加したり、フィールドを追加したりすること。)ができます。以下は簡単なサンプルとはまったところについてのメモです。 簡単なサンプル "com.example.Kitten"を"名前を話すcom.example.Kitten"に拡張してみます。基的な手順は次の通り。Javassistは3.4を使用しています。 ClassPoolを作る。 CtClassを作る。 CtClassのAPIを呼び出し、クラスを拡張する。 CtClass#getDeclaredMethod(String)で修正するメソッドを取得。 CtMethod#setBody(String)でメソッドの体を修正。 CtClass#toClass(ClassLoader, ProtectionDomain)

    Javassistを使って実行時のクラス拡張をやってみた。 - うなの日記
  • Javassistチュートリアル 4.イントロスペクションとカスタマイズ

    miya2000
    miya2000 2008/06/26
    特殊変数
  • 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

  • SWTで作ったテーブルの内容をコピー&ペーストしたい - OKWAVE

    こんばんわ ちょうど今日実装しましたよ とても面倒でした。 1. Tableを作るときにTableItemにデータをセット 2. TableにaddKeyListener 3. KeyEventでCTRL+Cを拾う 4. 3のイベントでClipboardにTableItemからgetしたデータを転送 以下を参考にしました。 ■Key拾う http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet25.java?rev=HEAD&content-type=text/vnd.viewcvs-markup ■Clipboard転送 http://amateras.sourceforge.jp/cgi-bin/fswiki/wiki.cgi/swt?pa

    SWTで作ったテーブルの内容をコピー&ペーストしたい - OKWAVE
  • HIP (HTTP IRC Proxy)

    HIPより高機能なIRCボットを作成しました。HIPと同じ機能を持っていますので、ぜひ下記をご利用ください。 IRCbot Console HIP(HTTP IRC Proxy)は、HTTPリクエストで、IRCボットに発言をさせることが出来るサーバです。 HIPを利用することにより、他のアプリケーションからIRCにメッセージを流すことが、簡単に出来るようになると思います。 例えば、FirefoxのGreasemonkeyスクリプトから、GM_xmlhttpRequestを使ってHIPに対してメッセージを送信し、IRCボットに発言させるといったことも可能です。 IRCにちょっとメッセージを流したいって時に、わざわざそのためにIRCボットを実装するのは面倒なので、HIPを使うことにより、その手間を省くことができると考えています。 また、HIPを使うことにより、複数のアプリケーションからのメッセ

  • 四角形による平面充填 - sawatのブログ

    平面充填(へいめんじゅうてん)とは充填の一種で、平面内を多角形などで隙間なく敷き詰める操作である。 (略) 全ての合同な平行六辺形(3組の対辺が平行で等しい六角形)は平面敷き詰め可能である。また、平行四辺形以外の全ての四角形は、合同なものを二つ組み合わせることで平行六辺形となる。従って、全ての四角形は平面敷き詰め可能である。 平面充填 -- Wikipedia というのをプログラムで作ってみた。 ソース import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.geom.AffineTransform; import java.util.Random; import javax.swing.JComponent; import javax.

    四角形による平面充填 - sawatのブログ
  • Greasemonkey: Javadoc Incremental Search User Script

    Updated: 2006-07-09 15:53:00+0900 [Home] This Greasemonkey script adds Incremental Search function to Javadoc 'all classes' frame. Download javadoc_isearch.user.js (2006/07/09 v0.5) Demo Screen Demo (Flash) Features wildcard search (N*P*Exception) Camel Case Search (NPE, NuPoEx) Anchor Search Mode: Press '#' to enter anchor search mode. You can search method and field names from the current select

  • Layout Log4J -TECHSCORE-

    SQL データベース操作言語SQLについて、またRDBMSの持つ機能について詳しく解説します。 DB概要、SQL、テーブル操作、データ操作 ... 特集:replication PostgreSQLのレプリケーションシステムを紹介し、それらの機能を比較していきます。 特集:pgbench PostgreSQLのベンチマークテストに用いられるプログラムである pgbench について解説します。 SQL演習問題 各章に用意された演習問題を集めました。

  • 「log4jのgetLoggerに指定するクラス名について」(1) Java Solution - @IT

    IT 会議室 Indexリンク Windows Server Insider Insider.NET System Insider XML & SOA Linux Square Master of IP Network Java Solution Security & Trust Database Expert RFID+IC リッチクライアント & 帳票 Server & Storage Coding Edge @ITクラブ Cafe VB業務アプリケーション開発研究 @IT SpecialPR

  • Javaの知られざる欠陥(下)

    最後に,複数のクラスの実装を継承できない問題を取り上げる。この問題の原因は,Javaが多重継承を許していないことにある。 Javaでは多重継承ができない。これは,デメリットと言うよりもメリットとして語られることが多い。C++は多重継承を許しているが,その結果プログラムが複雑になり難解なバグを生んだ。 多重継承は実装を引き継げるが複雑 多重継承は,次のような点で混乱を招く。一つが名前の衝突である。同じ名前のメソッドを持つ別のクラスを継承した場合,どちらのメソッドが呼び出されるかわからない(図5[拡大表示])。これは,一つのクラスを継承した二つのクラスを,さらに一つのクラスが継承するときによく起こる。これをダイヤモンド継承という(図6[拡大表示])。一番上位のクラスのメソッドを別々にオーバライドしていて,それを最下層のクラスが呼び出すと問題が起こる。 図5●同じ名前のメソッド名を持つ二つのスー

    Javaの知られざる欠陥(下)
    miya2000
    miya2000 2008/06/03
    mix-in
  • 2004年1月の技術日記

    Topic一覧 ・1/4 : 脆弱性報告と~の壁 ・1/8 : 続・脆弱性報告 / Pnuts, JavaCC ・1/18 : JavaGUI構築 / ソフトウエアの自由 ・1/27 : ウイルスまみれ / Bluetooth 携帯 / Dual Monitor で VNC ・1/29 : JavaでMixin ・1/31 : JNIとNIOとパフォーマンス [過去のトピック一覧] / [RSS] 2003 [ 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12 ] 2004 [ 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12 ] 「ネットの脆弱さに警鐘」国立大研究員が個人情報を公表(by 朝日) 事の顛末自体は11月に出ていた。今頃になって1面に出たのは何かの意図があるのか。とりあえず、今回のoff

    miya2000
    miya2000 2008/06/03
    委譲、AOP。