約 2,879,000 件
https://w.atwiki.jp/drip122/pages/39.html
Java Web Startを作成しよう! ■概要 1. Jarファイル作成 2. JNLPファイル作成 3. HTTPサーバに配置 ■詳細 1. Swingアプリケーション作成(mainから実行可能なクラスでもOK) .classをJarにパッケージする。 Eclipseのエクスポート機能で作成するのが簡単 コンソールで $jar cf hello.jar . としても作成可能 2. アプリケーション用のJNLPファイルを作成する jnlp spec="1.0+" codebase="http //localhost 8080/jws" href="hello.jnlp" information titile Test /title vender Test.com /vender /information resources j2se version="1.5"/ jar href="hello.jar"/ /resources application-desc main-class="hello.Hello"/ /jnlp JNLPはjar要素に記述してあるもののみをclasspathに通す。 依存関係にあるjarはすべてjar要素に記述すること。 起動時にPropertyPermissionに対するエラーが発生する場合は、 jarファイルに著名を行うこと。 2.1 jarへの著名 C /tomcat/webapps/jws配下で以下のコマンドを実行して著名する。 ①キーストアの作成 keytool -genkey -alias OriginalAP -keystore application.dat ②jarに著名 jarsigner -keystore application.dat -storepass pass swingx.jar OriginalAP ・・・ 略 3. HTTPサーバに配置 C /tomcat/Tomcat 5.5/webapp/jws/hello.jar http //localhost 8080/jws/hello.jnlp にアクセスするとjavaアプリが動作する。 htmlを作成して、 a href="hello.jnlp" サンプルが動きます。 ■参考資料 JWSで自動ダウンロードを可能にする! http //www.nurs.or.jp/~sug/soft/rich/rich5.htm
https://w.atwiki.jp/designmatome/pages/19.html
■テーブル■ テーブル作成 +JavaScript+動的にテーブルを作成 テーブル幅変更 リンク名 一行ごとに色変える http //semooh.jp/jquery/ref/cont/stripe_table/
https://w.atwiki.jp/ce00582/pages/3614.html
import java.awt.*; import java.awt.event.*; class game0422 extends Frame implements Runnable{ double x,y,z; double rx,ry; double x1,x2,x3,y1,y2,y3; double px[][][]=new double[2][2][2]; double py[][][]=new double[2][2][2]; int m1,m2,m3; public static void main(String [] args) { Frame f=new game0422(); f.setTitle("game0422"); f.setSize(700,700); f.setBackground(Color.yellow); f.setVisible(true); } game0422(){ for (m1=0;m1 2;m1++){ for (m2=0;m2 2;m2++){ for (m3=0;m3 2;m3++){ x=100+m1*100; y=100+m2*100; z=100+m3*100; rot(x,y,z); px[m1][m2][m3]=rx; py[m1][m2][m3]=ry; } } } Thread th=new Thread(this); th.start(); addWindowListener(new stopwin()); } class stopwin extends WindowAdapter{ public void windowClosing(WindowEvent we){System.exit(0);} } public void run(){ int t; t=1; while(t 100){ repaint(); try{ Thread.sleep(1000); }catch(InterruptedException e){} t=t+1; } repaint(); } public void paint(Graphics g){ int gx1,gy1,gx2,gy2,gx3,gy3,gx4,gy4; int xx[]=new int[4]; int yy[]=new int[4]; xx[0]=seekgx(px[0][0][0]); yy[0]=seekgy(py[0][0][0]); xx[1]=seekgx(px[1][0][0]); yy[1]=seekgy(py[1][0][0]); xx[2]=seekgx(px[1][1][0]); yy[2]=seekgy(py[1][1][0]); xx[3]=seekgx(px[0][1][0]); yy[3]=seekgy(py[0][1][0]); g.drawPolygon(xx,yy,4); } public int seekgx(double x){ return (int)(100+x); } public int seekgy(double y){ return (int)(400-y); } public void rot(double x,double y,double z){ double theta,phi; double a1,a2,a3,a4; theta = -40*Math.PI/180; phi=60*Math.PI/180; a1=Math.cos(theta); a2=Math.sin(theta); a3=Math.cos(phi); a4=Math.sin(phi); rx=-a2*x+a1*y; ry=-a1*a4*x-a2*a3*y+a4*z; } }
https://w.atwiki.jp/ce00582/pages/3213.html
import java.awt.*; import java.awt.event.*; class game0106 extends Frame implements Runnable{ int t; Image img1,img2; public static void main(String [] args) { Frame f=new game0106(); f.setTitle("game0106"); f.setSize(700,700); f.setBackground(Color.yellow); f.setVisible(true); } game0106(){ img1 = Toolkit.getDefaultToolkit().getImage("a1.jpg"); img2 = Toolkit.getDefaultToolkit().getImage("a2.jpg"); t=0; Thread th=new Thread(this); th.start(); addWindowListener(new stopwin()); } class stopwin extends WindowAdapter{ public void windowClosing(WindowEvent we){System.exit(0);} } public void run(){ double x; t=1; while(t 4){ repaint(); try{ Thread.sleep(5000); }catch(InterruptedException e){} t=t+1; } } public void paint(Graphics g){ g.setColor(Color.yellow); g.fillRect(0,0,700,700); if (t==1)g.drawImage(img1,100,100,500,500,this); if (t==2)g.drawImage(img2,100,100,500,500,this); if (t==3)g.drawImage(img1,100,100,500,500,this); g.setColor(Color.white); g.fillRect(100,600,500,100); g.setColor(Color.black); if(t==1)g.drawString("太郎君でしょう。ゆかりの友達のさつきよ",100,650); if(t==2)g.drawString("どうしてわかったんですか",100,650); if(t==3)g.drawString("太郎君のように、かわいい男の子なんて滅多にいないわ",100,650); } }
https://w.atwiki.jp/n-3104/pages/12.html
前提 特徴 とりあえず使ってみるiBATIS SQL Maps チュートリアル For SQL Maps Version 2.0 February 18, 2006 ibatis-2.3.0.677.zipに付属のsimple_example トランザクション iBATIS-SqlMaps-2_ja.pdf Abator概要 Eclipseプラグインインストール手順 使い方 前提 ibatis-2.3.0.677.zip j2sdk1.4.2_11 Microsoft SQL Server 2000 Eclipse SDK バージョン 3.1.1 Abator code generator for iBATIS 1.0.0 特徴 SQL文を記述するO/Rマッピングフレームワーク。参照系SQLの検索結果とJavaBeansのマッピングを設定ファイルで行うことが出来きる。SQLを直接記述できるためチューニングが容易であるが、特定のDBに依存してしまう。 SQL文を外部ファイルで管理できる。 動的SQL用の独自の構文をサポートしている。 検索結果のJavaBeansのキャッシュ機能がある。 あるBeanのプロパティのBeanについてもまとめて検索できる。この際の方法は以下の2通り。遅延ローディング join とりあえず使ってみる iBATIS SQL Maps チュートリアル For SQL Maps Version 2.0 February 18, 2006 iBATISのサイトで配布されている「iBATIS-SqlMaps-2-Tutorial_ja.pdf」を参考にとりあえず動かしてみようとした。だが、チュートリアルの時点で以下の点で誤植(?)があった。 クラス名は MyAppSqlConfig だが使用例では MyAppSqlMapConfig で、Mapが増えている。 MyAppSqlConfig の resource の値が com/ibatis/example/sqlMap-config.xml となっているが、それまで紹介されたものは examples/sqlmap/maps/SqlMapConfigExample.xml である。 しかも、SQLServer2000の場合は、JDBCドライバのコネクションURLに SelectMethod=Cursor を追加する必要があり、これに気付かず1時間近く嵌ってしまった。まぁ、これもiBATIS-SqlMaps-2_ja.pdfに明記されてはいたが。 http //support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B313181 そして、setBirthDate(null)にするとエラーとなってしまう。newPerson.setBirthDate(new java.sql.Date(new Date().getTime()))とかすればエラーにはならなかったが。 Person newPerson = new Person(); newPerson.setId(12); // you would normally get the ID from a sequence or custom table // newPerson.setBirthDate(null); newPerson.setBirthDate(new java.sql.Date(new Date().getTime())); null を指定できるようにするには、xmlファイルにおいてjdbcTypeを指定する必要がある。前述のガイドでも触れられているが、null値を指定する場合はjdbcTypeを明示的に指定しないとエラーになる場合があるらしい。具体的にはPerson.xmlのinsertPersonにおいてbirthDateにjdbcTypeとしてDATEを追加すればよい。 #birthDate# → #birthDate DATE# ibatis-2.3.0.677.zipに付属のsimple_example チュートリアルがうまく動かなかったので、zipファイルに付属している使用例を使ってみようとしたが、Account.xmlの insertAccount で values の前に ) がついていなかった。。 トランザクション SqlMapClient+startTransaction をしなければ、オートコミットの挙動になった。以下のソースでstartTransactionメソッドを呼ばなければ、insertについてもコミットされていた SqlMapClient sqlMap = MyAppSqlMapConfig.getSqlMapInstance(); sqlMap.startTransaction(); // トランザクションの開始 Person person = new Person(); ... sqlMap.delete ("deletePerson", person); sqlMap.commitTransaction(); // この時点で一旦コミット sqlMap.insert("insertPerson", person); sqlMap.endTransaction(); // insertについてはロールバックされる また、dataSourceのJDBC.DefaultAutoCommitプロパティの値はstartTransactionでトランザクションを開始した場合には有効であるが、開始していない場合は無視された。 transactionManager type="JDBC" dataSource type="SIMPLE" property name="JDBC.Driver" value="${driver}"/ property name="JDBC.ConnectionURL" value="${url}"/ property name="JDBC.Username" value="${username}"/ property name="JDBC.Password" value="${password}"/ property name="JDBC.DefaultAutoCommit" value="false"/ /dataSource /transactionManager iBATIS-SqlMaps-2_ja.pdf 短いが、非常に良くまとまっている。不明点があれば参照すべきガイドである。 Abator 概要 iBATIS用の設定ファイルとソースコードを自動生成してくれるツール。Eclipse用のプラグインも存在する。 Eclipseプラグイン インストール手順 http //ibatis.apache.org/abator.html を参照。更新アクセス先サイトを追加するだけで簡単に追加できる。 使い方 新規メニューの中に "Abator For iBATIS Configuration File" が追加されるので、それをクリックすると abatorConfig.xml の雛形が生成される。この中身を適切に設定すれば自動生成できる。 abatorConfig.xml abatorConfiguration abatorContext jdbcConnection driverClass="com.microsoft.jdbc.sqlserver.SQLServerDriver" connectionURL="jdbc microsoft sqlserver //localhost 1433;databaseName=test;SelectMethod=Cursor" userId="???" password="???" classPathEntry location="C /workspace/iBatis/msbase.jar" / classPathEntry location="C /workspace/iBatis/mssqlserver.jar" / classPathEntry location="C /workspace/iBatis/msutil.jar" / /jdbcConnection javaModelGenerator targetPackage="hoge.bean" targetProject="iBatis/src" / sqlMapGenerator targetPackage="hoge.map" targetProject="iBatis/src" / daoGenerator type="IBATIS" targetPackage="hoge.dao" targetProject="iBatis/src" / table tableName="PERSON"/ /abatorContext /abatorConfiguration ポイントは以下の通り。細かい情報は http //ibatis.apache.org/docs/tools/abator/ を参照。 classPathEntryは絶対パスが無難 targetProjectはEclipseのプロジェクト名+ソースフォルダ名 tableにschema属性をつけたらうまく動かなかった。 また、生成されたDAOは iBATIS DAO framework を前提としているためコンパイルエラーになる。iBATISは 2.3 から DAO framework 廃止し、Spring framework に移行することを推奨しているが、Abatorはまだ対応していないようだ。
https://w.atwiki.jp/ce00582/pages/3593.html
import java.awt.*; import java.awt.event.*; class game0412 extends Frame implements Runnable{ int s; double x[]=new double[11]; double y[]=new double[11]; double x1[]=new double[11]; double y1[]=new double[11]; public static void main(String [] args) { Frame f=new game0412(); f.setTitle("game0412"); f.setSize(700,700); f.setBackground(Color.yellow); f.setVisible(true); } game0412(){ for(s=1;s 11;s++){ x[s]=10*s; y[s]=10*s; } Thread th=new Thread(this); th.start(); addWindowListener(new stopwin()); } class stopwin extends WindowAdapter{ public void windowClosing(WindowEvent we){System.exit(0);} } public void run(){ double kakudo; int t; kakudo=0; t=1; while(t 360){ kakudo=kakudo+1; for(s=1;s 11;s++){ x1[s]=rotx(kakudo,x[s],y[s]); y1[s]=roty(kakudo,x[s],y[s]); } repaint(); try{ Thread.sleep(100); }catch(InterruptedException e){} t=t+1; } repaint(); } public void paint(Graphics g){ int gx,gy; for(s=1;s 11;s++){ gx=(int)x1[s]; gy=(int)y1[s]; g.fillRect(100+gx,600-gy,10,10); } } public static double rotx(double kakudo,double x,double y){ double kaku; double a1,a2,a3,a4; double x1,y1; kaku = kakudo*Math.PI/180; a1=Math.cos(kaku); a2=-Math.sin(kaku); a3=Math.sin(kaku); a4=Math.cos(kaku); x1=a1*x+a2*y; y1=a3*x+a4*y; return x1; } public static double roty(double kakudo,double x,double y){ double kaku; double a1,a2,a3,a4; double x1,y1; kaku = kakudo*Math.PI/180; a1=Math.cos(kaku); a2=-Math.sin(kaku); a3=Math.sin(kaku); a4=Math.cos(kaku); x1=a1*x+a2*y; y1=a3*x+a4*y; return y1; } }
https://w.atwiki.jp/katsuhiro/pages/16.html
JavaTips
https://w.atwiki.jp/trinityt/pages/12.html
Javaチェックシート 規約 ソースコード規約 必ず開発メンバー内で統一すること。※オブジェクト倶楽部のJavaコーディング規約が参考になる。 パッケージ&クラス分け パッケージ分け、クラス分けは開発メンバが後から入った時にとても重要なので、十分に推敲すること。 Seasar2などはパッケージやクラスの推奨値があるので、基本はそれに従う。 デザインパターン デザインパターンを利用しましょう。 ※後述の本が理解、適用に役に立つ テストコード 必ず書くこと。 適用範囲の中心となるのはModel層。(Controller層とView層は費用対効果が少な目) S2Unit、djUnitなどを利用。 リファクタリング まずいコードを見つけたらすぐにリファクタリングすること。→定期的なコードレビューが必要。 ユニットテストがあることが前提なので、開発当初からテストを書きましょう。 CIのススメ Hudsonで定期テスト&ビルド、エラー報告する。 オススメ本 Effective Java Java言語で学ぶデザインパターン入門 Java言語で学ぶリファクタリング入門 パターン指向リファクタリング入門 フレームワーク どのフレームワークを採用するか? 日本語情報量が多いSeasar2がオススメ。SAStruts+S2JDBC+S2JDBC-Genが今のトレンド。 ライブラリ ApacheCommons Seasar2の各種ライブラリ Maven2で呼べるようにするべき。 Maven2の利用 特に問題なければ以下のような機能が使えるためMaven2を利用するべき。 環境に合わせた自動デプロイ ライブラリ管理 (必ずバージョン番号は固定で使用する。) サーブレットコンテナ どのサーブレットコンテナを使用するか? 情報が多いTomcat推奨。 パラメータ設定 特に重要な以下のパラメータ設定に気をつける maxThreads connectionTimeout webサーバとの連携 採用する予定の連携モジュールは? 推奨はmod_proxy_ajp mod_jk mod_proxy_ajp & mod_proxy_balancer mod_cluster お役立ちサイト http //commons.apache.org/ http //d.hatena.ne.jp/dewa/20080625/1214344199 http //www.seasar.org/index.html http //s2container.seasar.org/2.4/ja/s2jdbc_gen/index.html http //s2container.seasar.org/2.4/s2-framework/ja/apidocs/org/seasar/framework/util/package-tree.html
https://w.atwiki.jp/java_pro/pages/48.html
public class Ougi extends Circle{ double rad; Ougi(){ super(5); setRad(45.0); } Ougi(int radius){ super(radius); setRad(4.5); } Ougi(double rad){ } Ougi(int radius, double rad){ super(radius); setRad(rad); } private void setRad(double rad){ if ((rad = Math.abs(rad)) 360.0){ rad %= 360; } this.rad = rad; } @Override double getArea(){ return super.getArea() * (this.rad /360.0); } @Override public String toString(){ return "[半径 " + this.radius + ", 中心角 " + this.rad + "度]"; } public static void main(String[] args){ Ougi a = new Ougi(4, 360); Circle b = new Circle(4); System.out.println(a.toString() + "面積は" + a.getArea()); System.out.println(b.toString() + "面積は" + b.getArea()); } }
https://w.atwiki.jp/ce00582/pages/3103.html
import java.awt.*; import java.awt.event.*; class game06 extends Frame implements Runnable{ int px,py; int m,n; int z[][]=new int[11][11]; public static void main(String [] args) { Frame f=new game06(); f.setTitle("game06"); f.setSize(700,700); f.setBackground(Color.yellow); f.setVisible(true); } game06(){ Thread th=new Thread(this); th.start(); addWindowListener(new stopwin()); } class stopwin extends WindowAdapter{ public void windowClosing(WindowEvent we){System.exit(0);} } public void run(){ int t,coin; t=1; for (m=1;m 11;m++){ for (n=1;n 11;n++){ z[m][n]=1; } } px=1; py=1; while(t 500){ coin=(int)(4*Math.random())+1; if (coin==1)px=px+1; if (coin==2)px=px-1; if (coin==3)py=py+1; if (coin==4)py=py-1; if (px 1)px=1; if (px 10)px=10; if (py 1)py=1; if (py 10)py=10; repaint(); try{ Thread.sleep(500); }catch(InterruptedException e){} t=t+1; } } public void paint(Graphics g){ g.fillRect(100+50*px,100+50*py,50,50); for (m=1;m 11;m++){ for (n=1;n 11;n++){ if (z[m][n]==1)g.fillRect(100+50*m,100+50*n,10,10); } } } }