java 配列 まとめ

■配列の宣言

(1)型名[] 変数名;

 int[] n; 推奨
 int n[]; 非推奨

変数宣言では[]をつけて配列型であることを示します。宣言は変数を作るだけです。
まだ要素がないので、その場所を示す参照もありません。変数はからっぽです。

(2)配列変数 = new 型名[要素数];

 n = new int[3];

new 演算子は配列オブジェクトを作成し、参照を返します。
すべての配列要素を既定値で初期化します。
この例では、int型の配列要素を3個作成し、オブジェクト倉庫に起きます。
要素はすべてint型配列要素の既定値 0 です。その参照を返します。
配列要素nには、その参照を代入しています。

■宣言と同時にオブジェクトの作成も行なう書き方

 int [] n = new int[3];

■既定値
byte(0) short(0) int(0) long(0) float(0.0) double(0.0)
boolean(false) char(\u0000) String(null)

■配列の初期化

 int[] n = {1,2,3};

■無名配列

 int [] n;
 n = new int[] {1,2,3};

オブジェクトを先に作成し、その参照をnに代入している。
先に作られたオブジェクトには名前が無い為、無名配列と呼ぶ。
(参考)無名クラス

■null

 nullとは「有効でない参照」

■配列の長さ

 int n_len = n.length;

■参照値のコピー

 int[] base = {3,2,5};
 int[] copy = base;

※これは参照のコピーであり、実質「共有」であり、コピーではない。

 (1)オリジナルと同じサイズの配列を作成し、newで初期化しておく。
 (2)オリジナルの配列要素をコピー先の配列要素へひとつずつコピーする。

 ※copy[i] = base[i];

■配列変数はキャストできない

■多重配列

 int[][] a = {{1,2},{4,5,6}};

 a[0] → {1,2}
 a[1] → {4,5,6}

 a[0].length → 2
 a[1].length → 3

 a[0][0]  → 1
 a[0][1] → 2

 int[][] a = new int[2][3];
Filed under: java — pavane 10:27 PM  Comments (0)

Java 規則 まとめ

◎Java規則まとめ

■プログラムの分かち書きの原則
・;、{、}、を書いたら改行する
・{ }内のブロック文はそれまでの開始位置から4文字分下げする
・} は4文字分左に戻して書く
・上記以外では、書き始めの位置は直前の行と同じにする

■インテントキーはTabキーで入力する

■コメント文

1)複数行に渡るコメント
/*
 * 最初の例題(入れ子にするとエラーになる)
 */

2)説明書を作成するためのコメント(ドキュメンテーションコメント)
/**
 * javadoc プログラムが読み込んで説明書を作成するのに利用される
 * @param args
 */

3)一行だけのコメント
// TODO Auto-generated method stub 行の途中から文末までも可能。

■データ型の種類

1)基本データ型[ビット幅]:例 int=-2^31~2^31-1
	整数型(byte[8]、short[16]、int[32]、long[64])
	浮動小数点型(double[32]、float[64])
	文字型(char[16])
	論理型(boolean[true,false])

2)参照型
	配列型
	クラス型(String[文字型]はココ)
	インターフェース型

■変数の名前

	利用可能な文字
		([a-z],[A-Z],[0-9],_,$)

    規則
		・数字から始まってはならない
		・英字の大文字と小文字は異なる文字として扱われる
		・予約語は使えない(class、final、import、while 等)
		・名前の長さに事実上制限はない(文字列の長さの制限と同じ)

	慣用
		・基本的に小文字を使う
		・2つ以上の単語を連ねる時は2つ目以降の単語の先頭のみ大文字。

		 ※クラス名は大文字で始める。

■char 型の表現

	char ch1, ch2, ch3, ch4;
	ch1 = 'あ';	//文字
	ch2 = '\u3042';	//ユニコードエスケープ
	ch3 = 0x3042;	//16進数(16進数は頭に0xをつける)
	ch2 = 12354;	//10進数
	すべて同じもの「あ」を表す。

■エスケープ文字

	\\ = 「\」、\' = 「'」、\" = 「"」

■複合代入演算子

	x++ ;	//計算してから、xに+1。
	++y ;	//計算する前に、yに+1。

	a += b	⇒ a = a + b;
	a -= b	⇒ a = a - b;
	a *= b	⇒ a = a * b;
	a /= b	⇒ a = a / b;
	a %= b	⇒ a = a % b;

■多重代入 a = b = c; のような書き方が可能

	int a, b, c;
	c = 10;
	a = b = c;
Filed under: java — pavane 2:22 AM  Comments (0)

Ruby のDevKit導入 for redmine and AsakusaSatellite (3)

AsakusaSatellite をインストールしてみます。
(redmineにチャットをつける為)

URL : http://www.codefirst.org/AsakusaSatellite/

Windowsでは、以下のアドオンのインストールが必要です。
•DevKit (http://rubyinstaller.org/downloads/)
と書かれているので、入れてみる。

DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe をダウンロードし、DevKitのディレクトリを作り、
そこへ解凍(exeファイルのクリック)。

あとはマニュアル通りに進める。

c:\Ruby187\DevKit>ruby dk.rb init

[INFO] found RubyInstaller v1.8.7 at C:/Ruby187

Initialization complete! Please review and modify the auto-generated
‘config.yml’ file to ensure it contains the root directories to all
of the installed Rubies you want enhanced by the DevKit.

c:\Ruby187\DevKit>ruby dk.rb review

Based upon the settings in the ‘config.yml’ file generated
from running ‘ruby dk.rb init’ and any of your customizations,
DevKit functionality will be injected into the following Rubies
when you run ‘ruby dk.rb install’.

C:/Ruby187

c:\Ruby187\DevKit>ruby dk.rb install

[INFO] Updating convenience notice gem override for ‘C:/Ruby187′
[INFO] Installing ‘C:/Ruby187/lib/ruby/site_ruby/devkit.rb’

Filed under: 未分類 — pavane 11:21 PM  Comments (0)

windows mysql 設定 for redmine (2)

mysqlのインストールは他のページに任せます。

redmineのインストールは基本的に、ここを参照
 ⇒ http://redmine.jp/guide/RedmineInstall/

■redmine のインストール

http://www.redmine.jp/download/

redmineのインストールは、落として、展開するだけ。
適当な場所へフォルダごと設置してください。
C:\redmine-1.3.2 等。

■MYSQL インストール後からの設定方法

空のデータベースとそのデータベースに接続するためのユーザー(例: redmine )を作成。

MySQLの場合:

mysql> create database redmine character set utf8;
Query OK, 1 row affected (0.01 sec)

mysql> create user ‘redmine’@'localhost’ identified by ‘my_password’;
Query OK, 0 rows affected (0.09 sec)

mysql> grant all privileges on redmine.* to ‘redmine’@'localhost’;
Query OK, 0 rows affected (0.02 sec)

■redmineフォルダ内の、config/database.example.yml をコピーして config/database.yml を作成。
config/database.yml を編集し、”production”環境用のデータベース設定を行う。

MySQLの場合:
production:
adapter: mysql
database: redmine
host: localhost
username: redmine
password: my_password
encoding: utf8

 ※今回、他は削除

■ libmysql.dll を、ruby/binディレクトリにコピー

下記からダウンロード

http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll

■RubyGemsのダウングレード

このまま進めていくと
NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01.
なるエラーが大量発生

rubyの中の、RubyGemsが新しすぎるみたい。というわけで、RubyGemsのダウングレードが必要。

◎バージョンの確認
c:\>gem -v
1.8.16

◎ダウングレード
c:\>gem update –system 1.6.2
Updating rubygems-update
Fetching: rubygems-update-1.6.2.gem (100%)
Successfully installed rubygems-update-1.6.2
Installing RubyGems 1.6.2
RubyGems 1.6.2 installed
・ソ=== 1.6.2 / 2011-03-08
Bug Fixes:
* require of an activated gem could cause activation conflicts. Fixes
Bug #29056 by Dave Verwer.
* `gem outdated` now works with up-to-date prerelease gems.
——————————————————————————
RubyGems installed the following executables:
C:/Ruby187/bin/gem

RubyGems system software updated

◎バージョンの確認
c:\>gem -v
1.6.2

■ MySQLのC bindingをインストール。

 gem install mysql を実行すればインストールできます。

これをしないと、
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.rake aborted!
のエラーが発生。説明には、速度が上がるだけで、しなくても良さそうな書き方だが。。

うまくいかない人は、ここ参照?

http://d.hatena.ne.jp/tohtas/20081207/1228668226

■セッションストア秘密鍵を生成。

c:\redmine-1.3.2>rake config/initializers/session_store.rb

■データベース上にテーブルを作成

c:\redmine-1.3.2>set RAILS_ENV=production
c:\redmine-1.3.2>rake db:migrate
c:\redmine-1.3.2>rake redmine:load_default_data

最後のコマンドを打ったとき、言語を聞いてくるので、ja と入力。

※rake db:migrate で、はじめの方で作成したredmineのDBへテーブルが作成される。

■redmineの起動

c:\redmine-1.3.2>ruby script/server webrick -e production
で、webrickを起動した後に、ブラウザで、http://localhost:3000/ へアクセスすれば起動!

最初の管理者のユーザー名とパスワードは
ユーザー名:admin
パスワード:admin

です!とりあえず、おつかれさまでした。

Filed under: redmine — pavane 3:17 AM  Comments (0)

windows ruby インストール(install) for redmine (1)

redmineを入れる準備としてのruby のインストール。
redmineの組み合わせとして、

Redmineのバージョン 1.3.x
ruby 1.8.6, 1.8.7
Rails 2.3.14
Rack 1.1.1

ということなので、それに従ってインストール。

■ RUBY の HPから、ダウンロード
(http://rubyinstaller.org/downloads/)
rubyinstaller-1.8.7-p358

ここがわかりやすいのかな?

http://www.rubylife.jp/install/

■ Railsをインストール

※コマンドプロンプトからインストール
c:\>gem install rails -v=2.3.14
Fetching: rake-0.9.2.2.gem (100%)
Fetching: activesupport-2.3.14.gem (100%)
Fetching: activerecord-2.3.14.gem (100%)
Fetching: rack-1.1.3.gem (100%)
Fetching: actionpack-2.3.14.gem (100%)
Fetching: actionmailer-2.3.14.gem (100%)
Fetching: activeresource-2.3.14.gem (100%)
Fetching: rails-2.3.14.gem (100%)
Successfully installed rake-0.9.2.2
Successfully installed activesupport-2.3.14
Successfully installed activerecord-2.3.14
Successfully installed rack-1.1.3
Successfully installed actionpack-2.3.14
Successfully installed actionmailer-2.3.14
Successfully installed activeresource-2.3.14
Successfully installed rails-2.3.14
8 gems installed
Installing ri documentation for rake-0.9.2.2…
Installing ri documentation for activesupport-2.3.14…
Installing ri documentation for activerecord-2.3.14…
Installing ri documentation for rack-1.1.3…
Installing ri documentation for actionpack-2.3.14…
Installing ri documentation for actionmailer-2.3.14…
Installing ri documentation for activeresource-2.3.14…
Installing ri documentation for rails-2.3.14…
Installing RDoc documentation for rake-0.9.2.2…
Installing RDoc documentation for activesupport-2.3.14…
Installing RDoc documentation for activerecord-2.3.14…
Installing RDoc documentation for rack-1.1.3…
Installing RDoc documentation for actionpack-2.3.14…
Installing RDoc documentation for actionmailer-2.3.14…
Installing RDoc documentation for activeresource-2.3.14…
Installing RDoc documentation for rails-2.3.14…

■ Rackをインストール

※コマンドプロンプトからインストール
c:\>gem install rack -v=1.1.1
Fetching: rack-1.1.1.gem (100%)
Successfully installed rack-1.1.1
1 gem installed
Installing ri documentation for rack-1.1.1…
Installing RDoc documentation for rack-1.1.1…

インストールの時に「Add Ruby executables to your PATH」にチェックをされていると自動的にPATHが設定されますが、
されていなければPATHの追加。
上と同様 http://www.rubylife.jp/install/ のPATH設定を参照。

■ rubyのインストール確認

c:\>ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [i386-mingw32]

Filed under: redmine — pavane 3:15 AM  Comments (0)

テキストファイルのアクセス

package jp.rdy.pavane.samplefile;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class SampleFile extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
JButton b1,b2;
JTextArea ta;

public SampleFile(){
this.setSize(300,200);
ta = new JTextArea();
JScrollPane scroll = new JScrollPane(ta);
this.add(scroll,BorderLayout.CENTER);
b1 = new JButton(“Load”);
b1.addActionListener(this);
b2 = new JButton(“Save”);
b2.addActionListener(this);
JPanel p = new JPanel();
p.add(b1);
p.add(b2);
this.add(p,BorderLayout.SOUTH);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}

public static void main(String[] args) {
new SampleFile();
}

public void actionPerformed(ActionEvent ev){
if (ev.getSource() == b1)
this.load();
else if (ev.getSource() == b2)
this.save();
}

public void load(){
FileReader fr = null;
BufferedReader br = null;
try{
fr = new FileReader(“sample.txt”);
br = new BufferedReader(fr);
String str = “”;
String rstr = “”;
while((rstr = br.readLine()) != null)
str += rstr + “\r\n”;
ta.setText(str);
} catch(Exception ex){
ex.printStackTrace();
} finally {
try {
br.close();
}catch(Exception ex2){
ex2.printStackTrace();
}
}
}

public void save(){
FileWriter fw = null;
BufferedWriter bw = null;
try {
fw = new FileWriter(“sample.txt”);
bw = new BufferedWriter(fw);
bw.write(ta.getText());
bw.flush();
}catch(Exception ex){
ex.printStackTrace();
} finally {
try {
bw.close();
} catch(Exception ex2){
ex2.printStackTrace();
}
}
}
}

Filed under: java — pavane 7:31 PM  Comments (0)

ダブルバッファリング

package jp.rdy.pavane.SampleApp;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class SampleApp extends JFrame{
private static final long serialVersionUID = 1L;

public SampleApp(){
DrawPanel panel = new DrawPanel();
this.add(panel,BorderLayout.CENTER);
this.setSize(300,200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}

public static void main(String[] args){
new SampleApp();
}
}
class DrawPanel extends JPanel {
private static final long serialVersionUID = 1L;
Image im = null;
Graphics g2 = null;

public DrawPanel() {
this.addMouseListener(new MyMouseAdapter());
}

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (im == null){
im = this.createImage(this.getWidth(),this.getHeight());
g2 = im.getGraphics();
}
g.drawImage(im,0,0,this);
}

class MyMouseAdapter extends MouseAdapter {
public void mouseClicked(MouseEvent ev){
int x = ev.getX();
int y = ev.getY();
for (int i=0;i < 10;i++){
g2.setColor(new Color(255,i*25,i*25));
g2.drawOval(x-i*3, y-i*3, i*3*2, i*3*2);
}
repaint();
}
}
}

Filed under: java — pavane 6:13 PM  Comments (0)

Imageの取り込み

package jp.rdy.pavane.SampleApp;

import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.ImageProducer;
import java.net.URL;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class SampleApp extends JFrame{
private static final long serialVersionUID = 1L;

public SampleApp(){
DrawPanel panel = new DrawPanel();
this.add(panel,BorderLayout.CENTER);
this.setSize(300,200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}

public static void main(String[] args){
new SampleApp();
}
}
class DrawPanel extends JPanel {

private static final long serialVersionUID = 1L;
private Image im = null;
public DrawPanel() {
URL url = this.getClass().getResource(“/jp/rdy/pavane/SampleApp/captyar.GIF”);
try{
im = this.createImage((ImageProducer)url.getContent());
}catch(Exception ex){}
}
//または、ImageIOの利用
// public DrawPanel() {
// URL url;
// try{
// url = this.getClass().getResource(“/jp/rdy/pavane/SampleApp/captyar.GIF”);
// im = ImageIO.read(url);
// }catch(Exception ex){}
// }
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(im,50,50,this);
}

}

Filed under: java — pavane 11:31 AM  Comments (0)

マウスとキーイベント

package jp.rdy.pavane.samplemouse;

import java.awt.BorderLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class SampleMouse extends JFrame{
private static final long serialVersionUID = 1L;
JLabel l1,l2;
JTextField t1;

public SampleMouse(){
this.setSize(300,200);
l1 = new JLabel();
this.add(l1, BorderLayout.NORTH);
this.addMouseListener(new MyMouseAdapter());

t1 = new JTextField();
t1.setName(“SOUTHのJTExtField”);
t1.addKeyListener(new MyKeyAdapter());
this.add(t1,BorderLayout.SOUTH);

l2 = new JLabel();
this.add(l2,BorderLayout.CENTER);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}

public static void main(String[] args) {
new SampleMouse();
}
class MyMouseAdapter extends MouseAdapter {
public void mouseClicked(MouseEvent ev){
int x = ev.getX();
int y = ev.getY();
int n = ev.getClickCount();
String str = “X:”+ x;
str += ” Y:”+ y;
str += ” click:”+ n;
l1.setText(str);
}
}
class MyKeyAdapter extends KeyAdapter {
public void keyTyped(KeyEvent ev){
char c = ev.getKeyChar();
JTextField t = (JTextField)ev.getComponent();
String name = t.getName();
l2.setText(“\”"+c+”\”\t”+name);
}
}
}

Filed under: java — pavane 8:39 PM  Comments (0)

【備忘録】httpd.conf php.ini の設定

[httpd.conf]
最後に下記の3行を追加

LoadModule php5_module “C:\php\php5apache2_2.dll”
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

[php.ini]
;output_handler =

output_handler = mb_output_handler

;default_charset = “iso-8859-1″

default_charset = “UTF8″

;mbstring.internal_encoding = EUC-JP

mbstring.internal_encoding = UTF8

;mbstring.http_input = auto

mbstring.http_input = auto

;mbstring.http_output = SJIS

mbstring.http_output = UTF8

;mbstring.encoding_translation = Off

mbstring.encoding_translation = On

;mbstring.detect_order = auto

mbstring.detect_order = auto

;mbstring.substitute_character = none;

mbstring.substitute_character = none;

Filed under: PHP — pavane 10:09 AM  Comments (0)