2011/03/31

[Java] SpringFrameworkのトランザクション管理について

概要

SpringFrameworkのトランザクション管理の方法について説明します。

動作環境

項目内容
OSMac OS X 10.06
DBMySQL 5.5
開発環境eclipse3.6
SpringFramework1.2
iBatis2.0

前提事項

・特になし

内容

Springでは、トランザクション管理に以下のクラスを使用するようです。
org.springframework.transaction.interceptor.TransactionProxyFactoryBean

こちらをapplicationContext.xmlに定義します。
こんな感じで実装しました。
  
      
        
      
      
        
      
      
        
          PROPAGATION_REQUIRED
        
      
  

重要なのは、上記の「transactionAttributes」です。
prop keyで指定するメソッドにて、トランザクションの状態を定義するようです。
この例だと、すべてのメソッドを同じようにトランザクション管理するという内容になります。

テスト

なし

参考情報


最後に

次回以降は、Swing+SpringFramework+iBatisを組み合わせたアプリケーションを作成します。

2011/03/30

[Java] SpringFrameworkとiBatisを連携させてみる

概要

今更ながら、SpringFrameworkとiBatisを連携を試してみます。
applicationContextの設定から、sqlMapの設定、テストまでを大まかに説明します。

動作環境

項目内容
OSMac OS X 10.06
DBMySQL 5.5
開発環境eclipse3.6
SpringFramework1.2
iBatis2.0

前提事項

・以下のテーブルを作成していること。
CREATE  TABLE `PERSON` (
  `PER_ID` INT NOT NULL ,
  `PER_FIRST_NAME` VARCHAR(40) NOT NULL ,
  `PER_LAST_NAME` VARCHAR(40) NOT NULL ,
  PRIMARY KEY (`PER_ID`) )
ENGINE = InnoDB;
・mysqlのJDBCドライバを入手済であること。

内容


1.SpringFrameworkのライブラリを入手する。
現時点の最新バージョンは3.0.5ですが、今回は1.2系のライブラリを入手します。
以下のURLより入手できますので、入手し適当な場所に解凍して下さい。
こちら

2.iBatisのライブラリを入手する。
現時点では「iBatis」と言う名前から「MyBatis」という名前に変更になっています。
入手についてはこちらを参考にして下さい。

3.Springの定義ファイルを作成する。

Springの定義ファイル「applicationContext-ibatis.xml」を作成します。
このファイルでは、
 ・データソースの設定
 ・iBatis設定ファイルの設定
 ・Daoに対してデータソースの設定
を行っています。



  
  
      
        com.mysql.jdbc.Driver
      
      
        jdbc:mysql://localhost/ibatis
      
      
        ibatis
      
      
        ibatis
      
  

  
      
        
      
  

  
      
        
          dao/sqlMapConfig.xml
        
      
  

  
      
        
      
      
        
      
  

  


4.iBatisの定義ファイルを作成する。

iBatisで使用する定義ファイル「sqlMapConfig.xml」を以下のように作成しました。




  


5.O/Rマッピングファイルを作成する。

O/Rマッピングファイル「PersonDao.xml」を以下のように作成しました。




  
  

上記は見ての通り、SQLです。
Hibernateだと、確かかけないんです。SQLを。
iBatisだとSQLを書けるのでSQLを良く使用しているエンジニアだと取っ付きやすいと思います。

6.DTOを作成する。
DBからの取得した結果を格納するためのDTOを作成します。
以下のようなクラスを作成しました。
public class Person {

 private int id;
 private String firstName;
 private String lastName;
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getFirstName() {
  return firstName;
 }
 public void setFirstName(String firstName) {
  this.firstName = firstName;
 }
 public String getLastName() {
  return lastName;
 }
 public void setLastName(String lastName) {
  this.lastName = lastName;
 }
}

7.Daoクラスを作成する。

今回の例では、インタフェースとその実装クラスそれぞれを作成しました。

・PersonDao
public interface PersonDao {
 public List selectAll();
}
・PersonDaoImpl
public class PersonDaoImpl extends SqlMapClientDaoSupport implements PersonDao {

 @Override
 public List selectAll() {
  return (List) getSqlMapClientTemplate().queryForList("selectAll");
 }
}


テスト

1〜7で使用する準備が整ったので、実際に使用できるか試してみます。
public class StartUp {

 public static void main(String[] args) {

  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-ibatis.xml");
  BeanFactory factory = (BeanFactory) context;
  PersonDao dao = (PersonDao) factory.getBean("personDao");
  List personList = dao.selectAll();
  System.out.println(personList.size());
 }
}

実行すると、以下のような感じでログが表示されました。
正常に連携できました。
2011/03/30 22:42:27 org.springframework.context.support.AbstractApplicationContext prepareRefresh
情報: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@39617189: display name [org.springframework.context.support.ClassPathXmlApplicationContext@39617189]; startup date [Wed Mar 30 22:42:27 JST 2011]; root of context hierarchy
2011/03/30 22:42:27 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
情報: Loading XML bean definitions from class path resource [applicationContext-ibatis.xml]
2011/03/30 22:42:27 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
情報: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@39617189]: org.springframework.beans.factory.support.DefaultListableBeanFactory@39b8d6f7
2011/03/30 22:42:27 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
情報: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@39b8d6f7: defining beans [dataSource,transactionManager,sqlMapClient,personDao]; root of factory hierarchy
2011/03/30 22:42:27 org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName
情報: Loaded JDBC driver: com.mysql.jdbc.Driver
1

参考情報

なし

最後に

説明をほとんどしませんでしたが、上記の内容をおのおのの環境に合わせて使って貰えれば動作すると思います。
次回以降、トランザクションに関して試してみたいと思います。

[Ubuntu] 起動時に共有フォルダをマウントする方法について

概要

Ubuntu起動時に共有フォルダをマウントする方法について説明します。


動作環境

項目内容
OSUbuntu10.04

前提事項

・マウント先がWindowsであること

内容

mountを定義しているファイルは「/etc/fstab」です。
こちらを編集して、Ubuntu起動時にマウントされるようにします。

1.fstabを編集する。

fstabファイルの末尾に以下の内容を追記します。
/マウント相手のIPアドレス/マウントしたいフォルダ名
 マウント先 smbfs username=相手先のユーザー名,password=相手先ユーザーのパスワード,
gid=相ファイルシステムのグループID,uid=ファイルシステムのユーザID,
codepage=cp932,iocharset=utf8,rw,defaults 0 0
これらを1行で記述します。

項目の詳細な内容は以下の通りです。
項目内容
マウント相手のIPアドレスマウント先のファイルサーバのIPアドレスを指定する。
マウントしたいフォルダ名マウント先のフォルダ名を指定する。
マウント先マウントしたいディレクトリを指定する。
相手先のユーザー名WindowsのユーザーID
相手先ユーザーのパスワードWindowsのパスワード
ファイルシステムのグループIDマウントするUbuntuユーザーの属するグループIDを指定する。
ファイルシステムのユーザIDマウントするUbuntuユーザーIDを指定する。
複数のマウント先がある場合、上記の内容を追記します。

2.Ubuntuを再起動する
設定が終わったら、再起動します。

3.テストする
うまくマウントできているか、確認します。

テスト

なし

参考情報

fstabにsmbfsの自動mountを定義
ファイルシステムのマウントとアンマウント、「/etc/fstab」がキモ

2011/03/29

[Windows Storage Server] Guestユーザーを有効にする方法について

概要

Windows Storage Server2008で作成した共有領域に、パスワードなしでアクセスする方法を紹介します。

動作環境

項目内容
OSWindows Storage Server2008

前提事項

なし

内容

アクセス可能な領域にアクセスすると、Guestユーザとして扱われます。
通常、Guestユーザでアクセス可能な領域にアクセスはできないため、
ユーザー認証するための確認ダイアログが表示されます。

その確認ダイアログを表示しないようにするためには、Guestユーザを有効とするように設定変更します。
以下、設定変更の仕方について説明します。
1.ローカルセキュリティポリシーを開く。
「コントロールパネル」-「管理ツール」-「ローカルセキュリティポリシー」

2.「セキュリティオプション」を選択する。
左側のツリーで、「セキュリティの設定」-「ローカルポリシー」-「セキュリティオプション」を選択します。

3.Guestアカウントの有効化する。
右側のリストで、「アカウント: Guest アカウントの状態」を「有効」にします。

テスト

なし

参考情報

Windows Server 2003の共有フォルダ

2011/03/28

[Java] iBatisの入手方法について

概要

iBatisのライブラリの入手方法について説明します。
本当はMyBatisに関して書きたかったのですが、現時点ではSpringFrameworkと連携できなさそうなので、iBatisについて書きます。

動作環境

項目内容
OSMac OS X 10.06
JavaJDK6
iBatis2.3.4
DBMySQL 5.5

前提事項

なし

内容

iBatisは現在「MyBatis」という名前に変わりライブラリの入手が困難になったようです。
MyBatisだと、SpringFrameworkと連携できないようなので、iBatisにはまだ需要があると思うのですが、、、。

iBatis2は以下のページから入手可能です。
そのうちページが見れなくなるかも知れません。
その頃には、SpringFrameworkと連携できるようになっているかもしれませんね。
こちら

テスト

なし

参考情報

[Java][iBATIS][mybatis]iBATIS2/iBATIS3/mybatis各種アーカイブ・ドキュメント一覧

[CentOS] インストールされたパッケージを確認する方法について

概要

インストールされたパッケージを確認する方法について説明します。

動作環境

なし

前提事項

なし

内容

インストールされているパッケージを確認するには、以下のコマンドを実行します。
rpm -qa

テスト

なし

参考情報

rpm -qa | grep httpd

[CentOS] OSバージョンを確認する方法について

概要

OSのバージョン情報を確認する方法について説明します。

動作環境

なし

前提事項

なし

内容

CentOSのバージョン情報を確認するには、ファイルをcatコマンド等で表示させます。
cat /etc/redhat-release

テスト

なし

参考情報

CentOSのバージョン確認

[CentOS] ホスト名の確認方法について

概要

CentOSのホスト名の確認方法について説明します。

動作環境

なし

前提事項

なし

内容

ホスト名が確認できるファイルがあるので、そちらをviエディタで開き確認します。
view /etc/sysconfig/network

テスト

なし

参考情報

[CentOS] ホスト名の変更

2011/03/27

[MySQL] Macでアンインストールする方法について

概要

MacにインストールされたMySQLをアンインストールする方法について説明します。

動作環境

項目内容
OSMac OS X 10.06
DBMySQL 5.5

前提事項

・特になし

内容

MySQL5.5をアンインストールするには、いくつか手順を踏まなくてはならないようです。
基本的には、インストール時に作成されたファイルをすべて消せばよいみたいです。

手順は以下の通りです。
sudo rm -rf /usr/local/mysql
sudo rm -rf /Library/StartupItems/MySQLCOM/

テスト

・なし

参考情報

MacからMySQLをアンインストールする方法

[Java] Swing:NetBeansでGUIコンポーネントをパレットに追加する

概要

今回は、作成したGUI コンポーネントをNetBeansのパレットに追加する方法について説明します。

動作環境

・Java SE 6
・NetBeans 6.9.1
・Mac OS X 10.6

前提事項

・特になし

内容

やり方は至って簡単です。
作成したGUIコンポーネントを選択し、「右クリック->ツール->パレットに追加」を選択します。
後は、パレットのどの位置にGUIコンポーネントを配置するか選択すればよいです。

テスト

・なし

参考情報

NetBeansでGUIコンポーネントをパレットに追加する

2011/03/25

[サーバ製品] DELL PowerVault-NX3100:初期パスワードでログインする方法について

概要

DELL PowerVault-NX3100の初期パスワードに「@」が含まれている場合があります。
NX3100にUSB日本語キーボードを接続しても、英語キーボードとして認識される場合があります。
日本語キーボードとキー配列が異なるため、英語キーボードの配列を知らないとはまります。
(私は小1時間はまってました。。。)
その場合の対処方法を説明します。


動作環境

・特になし。


前提事項

・特になし。


内容

英語キーボードで「@」を入力するには、「Shift + 2」をパンチします。
初期パスワードに「@」に含まれていても、上記のように入力してあげれば無事ログインできます。
なお、注意としては、初期設定時に画面に大きく表示されるパスワードを忘れないこと!
これを忘れちゃうと、、、ですよね。

なお、英語キーボードとして認識された日本語キーボードのドライバをインストールしようと
挑戦してみましたが、諦めました。。。


テスト

・特になし。


参考情報

・特になし。

[Java] Swing:JTableのセルにJButtonを追加する方法について

概要

今回は、SwingのJTableのセルにJButtonを追加する方法について試してみます。


動作環境

・Java SE 6
・NetBeans 6.9.1
・Mac OS X 10.6


前提事項

・特になし


内容

SwingのJTableのセルにJButtonを追加するには、大まかに以下の手順が必要です。
1.JButtonのサブクラスを作成する
2.TableCellRendererを実装したクラスを作成する
3.TableCellEditorを実装したクラスを作成する
4.JTableとTableCellRenderer、TableCellEditorを関連付ける

以下、サンプルプログラムを交えて説明します。
なお、サンプルプログラムは「削除ボタンを押下したら、行を削除する」という動作をします。

1.JButtonのサブクラスを作成する
手順2、3のために、JButtonのサブクラスを作成します。
サンプルでは、以下のような実装しました。
public class DeleteButton extends JButton {

    @Override
    public void updateUI() {
        super.updateUI();
        setFocusable(false);
        setText("削除");
    }
}

2.TableCellRendererを実装したクラスを作成する
1で作成したボタンのレンダリングに関する情報を設定します。

なお、TableCellRendererとは、JavaDocによると
「JTable のセルのレンダリングになる可能性のあるオブジェクトが要求するメソッドを定義します。」
というものです。

サンプルでは、以下のように実装しました。
public class DeleteButtonRenderer extends DeleteButton implements TableCellRenderer {

    public DeleteButtonRenderer() {
        super();
        setName("Table.cellRenderer");
    }

    public Component getTableCellRendererComponent(
            JTable jtable, Object o, boolean bln, boolean bln1, int i, int i1) {
        return this;
    }
}
セルに表示されるコンポーネントを返却するメソッド「getTableCellRendererComponent」で
「DeleteButton」自身を返却しています。
これにより、セルに「DeleteButton」が表示されることとなります。


3.TableCellEditorを実装したクラスを作成する
JButtonがユーザの入力やイベントを受信できるようにTableCellEditorを実装します。

public class DeleteButtonEditor extends DeleteButton implements TableCellEditor {

    public DeleteButtonEditor(final JTable table) {
        super();
        addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent ae) {
                int row = table.convertRowIndexToModel(table.getEditingRow());
                fireEditingStopped();
                ((DefaultTableModel)table.getModel()).removeRow(row);
            }
        });
    }
    
    public Component getTableCellEditorComponent(
            JTable jtable, Object o, boolean bln, int i, int i1) {
        return this;
    }

    public Object getCellEditorValue() {
        return "";
    }

    public boolean isCellEditable(EventObject eo) {
        return true;
    }

    public boolean shouldSelectCell(EventObject eo) {
        return true;
    }

    public boolean stopCellEditing() {
        fireEditingStopped();
        return true;
    }

    public void cancelCellEditing() {
        fireEditingCanceled();
    }

    public void addCellEditorListener(CellEditorListener cl) {
        listenerList.add(CellEditorListener.class, cl);
    }

    public void removeCellEditorListener(CellEditorListener cl) {
        listenerList.remove(CellEditorListener.class, cl);
    }
    public CellEditorListener[] getCellEditorListeners() {
        return (CellEditorListener[])listenerList.getListeners(CellEditorListener.class);
    }
    protected void fireEditingStopped() {
        // Guaranteed to return a non-null array
        Object[] listeners = listenerList.getListenerList();
        // Process the listeners last to first, notifying
        // those that are interested in this event
        for(int i = listeners.length-2; i>=0; i-=2) {
            if(listeners[i]==CellEditorListener.class) {
                // Lazily create the event:
                if(changeEvent == null) changeEvent = new ChangeEvent(this);
                ((CellEditorListener)listeners[i+1]).editingStopped(changeEvent);
            }
        }
    }
    protected void fireEditingCanceled() {
        // Guaranteed to return a non-null array
        Object[] listeners = listenerList.getListenerList();
        // Process the listeners last to first, notifying
        // those that are interested in this event
        for(int i = listeners.length-2; i>=0; i-=2) {
            if(listeners[i]==CellEditorListener.class) {
                // Lazily create the event:
                if(changeEvent == null) changeEvent = new ChangeEvent(this);
                ((CellEditorListener)listeners[i+1]).editingCanceled(changeEvent);
            }
        }
    }
}
DeleteButtonEditorのコンストラクタで、ボタン押下時のイベントを設定しています。
また、イベントを受信する必要があるため、isCellEditable、shouldSelectCellで「true」を返却しています。
fireEditingStopped、fireEditingCanceledはAbstractCellEditorクラスよりコピーしたものを使用しています。
こちらのメソッドはセルの編集の終了、キャンセルを感知し他のオブジェクトに通知するため使用されます。

4.JTableとTableCellRenderer、TableCellEditorを関連付ける
JTableに2、3で作成したオブジェクトを関連付けます。

関連付けの方法は、以下の通りです。
4.1.NetBeansのデザインビューを開き、テーブルを選択します。
4.2.右クリックし、表の内容を選択します。
4.3.列タブを選択し、ボタンを表示したい列を選択し、エディターの横のボタンをクリックします。

プルダウンでカスタムコードを選択し、以下のコードを入力します。
DeleteButtonEditorの引数には、JTableの変数名を指定します。
new widets.DeleteButtonEditor(jTable1)
※2011/05/20 追記
BeanBindingを使用しテーブルセルの設定を実施した場合、型が「null」となります。
nullのままだと、エディターがうまく動作しないため、何か適当な値を設定して下さい。

4.4.レンダラの横のボタンを押下し、レンダラを設定します。
プルダウンでカスタムコードを選択し、以下のコードを入力します。
new widets.DeleteButtonRenderer()

以上、で設定が完了です。


テスト

作成したプログラムが想定通り動作するか、検証します。

起動直後の画面は以下のようになりました。
ボタンがセルに表示されています。

削除ボタンを押下したら、行が削除されました。
実装内容が想定通り反映されました。


参考情報

この記事は以下を参考にさせて頂きました。
JTableのセルにJButtonを追加して行削除

[MS-DOS] 指定したフォルダおよびその内部のフォルダ、ファイルを削除する方法

エクスプローラーの右クリックで削除する方法だと、ファイル数が多い場合、かなり時間がかかります。
そこで、コマンドプロンプトを使用し、すばやく削除する方法について書きます。

コマンドプロンプトを立ち上げ、以下のコマンドを実行すればよいです。
rmdir /s /q ディレクトリ名
上記のコマンドだと/qオプションを指定しています。
このオプションを指定すると、確認メッセージを表示しないで削除してしまうため、
実行する前はよく確認してから実行するようにして下さい。

[MS-DOS] grepと同じような機能を持ったコマンド

コマンドプロンプトでgrepコマンドと同じような処理をしたい場合、
使用するのが「find」というコマンドです。

以下のように使用します。
find "検索したい文字列" *.txt
検索したい文字列をダブルクォーテション(”)で囲むのを忘れずに!

ただ、grep機能は、sakuraエディター等、高機能なエディターに標準で装備されていますので、
使用する機会はあまりなさそうですが。。

2011/03/24

[eclipse] VM引数について

eclipseを初期設定のまま、メモリを大量に使用するプログラムを実行すると、
時々「OutOfMemory」が発生します。

ついつい忘れがちになってしまうVM引数の設定についてのメモです。
書き方としては、このような感じです。
-Xms512m -Xmx512m
Xms:最小メモリ
Xmx:最大メモリ

VM引数には上記の他にも色々ありますが、上記は忘れずに設定しておきたい所です。
以下のブログには、詳しく書いてありましたので、リンクを貼ります。
こちら

[Excel VBA] プログラムを同期実行する方法

Shell関数を使用すれば、任意のプログラムを実行できます。
しかし、Shell関数は非同期での処理となります。
そのため、プログラムの終了を待たずに
Shell関数以降のステートメントが実行されます。

非同期での処理では都合が悪いケースがあるため、
同期実行する方法を以下に示します。

以下、ソースコードです。
Dim strShellCommand As String     ' シェルコマンド
Dim objWSH As Object              ' WSH

strShellCommand = " "             ' 実行したいコマンド
    
' WSHを使ってコマンドを実行する
Set objWSH = CreateObject("WScript.Shell")
objWSH.Run strShellCommand, vbNormalFocus, True ' 第3引数がTrueなら、同期実行
Set objWSH = Nothing              ' オブジェクトを解放

[Java] NetBeansでJTableで「Bean Binding」を使ってみる

NetBeansには、「Bean Binding」という便利な機能があって、
その機能を使えば簡単にJTableにデータを設定できるようです。

以下のような機能を持つサンプルを交え、「Bean Binding」を使用してみます。
・「追加」ボタンを押下するとJTableにDTOのデータが追加される。

1.ライブラリを追加する

Bean Bindingを使うので、ライブラリを追加します。
プロジェクトを選択し、右クリック->プロパティを選択します。
ダイアログが開くので、「ライブラリ」を選択します。
その後、ライブラリの追加を押下します。
「Beans Binding」というのがあるので、そちらを選択し追加します。

2.バインドさせるDTOを作成する

バインドさせるためのDTOを作成します。
今回はこんな感じのDTOを作成しました。
public class SampleDTO {

    private String userId;
    private String userName;

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserId() {
        return userId;
    }

    public String getUserName() {
        return userName;
    }
}

3.Bindさせるためのコードを作成する

1でリンクしたライブラリには、Bindを容易にするためのクラスが実装されています。
ObservableCollectionsというクラスで、こちらを使用してBindするためのコードを作成します。

以下のようなコードになります。
public class SampleTable {

    private List sampleDtoList = 
            ObservableCollections.observableList(new ArrayList());

    public List getSampleDtoList() {
        return this.sampleDtoList;
    }

    public void setSampleDtoList(List sampleDtoList) {
        this.sampleDtoList = sampleDtoList;
    }
 
 〜〜〜中略〜〜〜
}

4.追加ボタンのアクションを設定する

追加ボタンを押下したら、SampleTableのsampleDtoListにSampleDTOを追加するコードを作成します。
以下のようなコードになります。
    private void btnShowActionPerformed(java.awt.event.ActionEvent evt) {

        SampleDTO dto = new SampleDTO();
        dto.setUserId("1");
        dto.setUserName("しがのん");
        this.sampleDtoList.add(dto);
    }

5.JTableとDTOを紐付ける

JTableとDTOを紐付けるための設定をします。

JTableを右クリックし、表の内容を選択します。
表示されたダイアログの「バインド」を選択します。

「式をバインド」の箇所に「sampleDTOList」を設定するのがポイントです。

設定が終わったら、列の設定をします。

DTOのプロパティを記述するのがポイントです。

完了したら「閉じる」を押下して完了です。

6.テストする

以上1〜5で「Bean Binding」の設定が完了です。
早速テストしてみます。


追加を押下すると↓


行が追加されています。

すごいシンプルなコードでJTableにデータが追加できました。
この機能がなかったら、ごりごりコードを書くはめでしたが、この機能のおかげですごいシンプルに実装できました。
この機能を使ってDBの結果等もシンプルにJTableに設定できそうです。

[Java] NetBeansでJTableのレイアウトを変更するには

NetBeansのレイアウトビューを表示します。
JTableを選択し、右クリックをし「表の内容」を選択します。

すると、以下のダイアログが表示されるので、そちらからJTableのレイアウトが変更できます。

[Mac] バックスラッシュを入力する方法について

Macでバックスラッシュを入力するには、「Option + ¥」で入力できます。

2011/03/23

[MySQL] JDBCドライバの入手方法について

JavaからMySQLに接続するためには、JDBCドライバが必要です。
JDBCドライバとは、異なるデータベースに対するアクセスを行う際に、個々のデータベース毎にプログラムを書き換えなくていいように、データベースとJavaプログラムの間にあってデータベース毎の差を吸収してくれるものです。
こちらから、引用しました。。
こちら

ドライバは、以下より入手できます。
こちら

表示されたページの「Connector/J」をクリックしたら、ダウンロード画面が表示できますので、
そちらより入手することが可能です。

[Mac] MySQL5.5をインストール

Mac OS XにMySQLをインストールしてみます。
■環境
OS : Mac OS X 10.6
MySQL : 5.5

1.packegeをダウンロードする

以下のWEBページより、「MySQL Community Server」を選択します。
こちら

表示されたページの「Mac OS X ver. 10.6 (x86, 64-bit), DMG 」のダウンロードボタンを押下します。
すると、ダウンロードが始まります。

2.インストールする

ダウンロードしたファイルを実行し、インストールします。

3.起動する
コンソールを立ち上げて、コマンドを実行し、MySQLのプロセスを立ち上げます。

$ sudo /usr/local/mysql//bin/mysqld_safe

プロセスが立ち上がっているのを確認すればOKです。

4.ログインする
コンソールより、以下のコマンドを実行し、ログインします。
$ /usr/local/mysql//bin/mysql -u root
ログインできれば、OKです。

こちらが参考になります。
MySQLのインストール

2011/03/22

[Mac] 半角カタカナを入力する方法について

デフォルトの設定だと、半角カタカナが入力できません。
そこで、以下の操作をすることにより、半角カタカナを入力できるようにします。

1.システム環境設定をクリック

2.言語とテキストをクリック

3.入力ソースタブを選択

4.半角カタカナにチェックを入れる。

上記設定をすれば完了です。
実際に半角カタカナを入力するには、
日本語入力モードで半角カタカナに変換したい文字列を入力後「ctrl + ;」で変換できます。

2011/03/18

[JavaFX] JavaFXでTableを表示する

以下のWEBページを参考にやってみたら、Tableを表示することができました。
こちら

ちょっと表示が微妙なので、カスタマイズすれば使えるようになると思います。
それにしても、JavaFXの文法がよくわかりません。
どっか、いいページありませんかねぇ。
良さそうな本も出ていないし。

[Ubuntu] 使用したいポートを設定する方法

使用したいポートを設定するには、viエディターで「/etc/services」を編集します。

2011/03/17

[JavaFX] データバインドについて

NetBeansのHPに詳しく書いていました。
簡単な内容なので、30分程度でサンプルを試し理解を深めることができます。
こちら

それにしてもTableが簡単に使えないのは痛いです。。。
業務アプリに、Tableは必須なのに。。

[Ubuntu] sudoresファイルを編集する方法について

sudoresファイルの編集には、以下のコマンドを実行します。

sudo visudo

なお、sudoresファイルとは、sudoコマンドのための設定ファイルです。
こちらに設定しておくと、スーパーユーザー権限でないと実行できないプログラム(例えば、apt-getなど)
をsudoなしで実行できるようになります。

[Ubuntu] パッケージの削除(依存関係のあるパッケージも合わせて削除)について

パッケージおよび、依存関係のあるパッケージも削除するには、以下のコマンドを実行します。

apt-get purge パッケージ名

[Ubuntu] ユーザーを追加する方法について

ユーザーの作成は、adduserコマンドを使用します。
adduserコマンドにて、ユーザーを作成するとホームディレクトリも合わせて作成されます。

$ adduser USER_NAME

2011/03/15

[Ubuntu] ユーザー情報に関するファイルについて

Ubuntu10.04では、以下のファイルでユーザー情報を管理しているようです。

内容ファイル名
ユーザー/etc/passwd
パスワード/etc/shadow
グループ/etc/group

2011/03/14

[Java] Java Web Startを試してみる

今更ながら、Java Web Startを試してみます。
Java Web Startとは、Web ブラウザに関連付けて使用するヘルパーアプリケーションです。
詳細はこちらを参照ください。

「Java Web Startを試す」のゴールは、
「Webサイト経由でアプリケーションをダウンロードし、Swingの画面が表示される」
とします。
以下のような画面が表示されれば、OKとします。


なお、実験する環境は以下の通りです。
項目 内容
OS Mac OS X 10.06
Java Version 1.6.0_24
WEBサーバ Tomcat6.0
※WEBサーバはTomcatを使います。


■WEBサイトを設定する
Java Web Start は、HTTP プロトコルや Web サーバーといった既存のインターネットテクノロジを利用します。
アプリケーションをクライアントマシンに配備できるようにするには、アプリケーションを構成するすべてのファイルに Web サーバーからアクセスできる必要があります。

1. Java Web Start の MIME タイプを使用できるように Web サーバーを設定する
WEBサーバを設定して、拡張子「.jnlp」を持つすべてのファイルが「application/x-java-jnlp-file MIME タイプ」として設定されるようにします。

MIMEタイプの設定はWEBサーバごとに異なるようです。
実験する環境は「Tomcat」ですので、web.xmlに以下を追加します。

    jnlp
    application/x-java-jnlp-file
  

2. アプリケーションに対する JNLP ファイルを作成する
hello.jnlpというファイルを作成します。
以下のように記述しました。


  
    Hoge Test
    Shiganon
    
  

  
    
    
  

  



3. Web サーバー上でアプリケーションをアクセスできるようにする
SwingアプリのJarファイルをJNLPファイル内に記載されたURLのパスにコピーします。
JNLP ファイル内に記載された URL を使って、アプリケーションの JAR ファイルと JNLP ファイルにアクセスできることを確認してください。

4. アプリケーション起動用 Web ページを作成する
アプリケーションへのリンク元のHTMLを作成します。

■実行する


何かつるっとできちゃいました。

次のエントリー以降は、少し掘り下げた内容を実験していければと思います。

[Ubuntu] シャットダウンの方法について

以下のコマンドを実行すると、シャットダウンされます。
sudo shutdown -h now

以上です。

[Ubuntu] IPアドレスを固定する方法について

1.ネットワーク設定ファイルの編集
/etc/network/interfacesというファイルを以下のように書き換えます。

auto eth0
iface eth0 inet static
    address xxx.xxx.xxx.xxx    # IPアドレス
    netmask 255.255.255.0      # サブネットマスク
    network xxx.xxx.xxx.0      
    gateway xxx.xxx.xxx.yyy    # ゲートウェイ

書き換える際は、管理者権限にて行う必要があります。
sudo vi /etc/network/interfaces

2.ネットワーク設定の更新
以下のコマンドを実行し、ネットワーク設定を更新します。
sudo /etc/init.d/networking restart

以上です。

2011/03/10

[JavaFX] eclipseでJavaFXを開発できるよう設定する方法

JavaFXプラグインが提供されているので、eclipseにインストールします。


なお、設定した環境は以下になります。
環境
・OS:Mac OS X Snow Leopard 10.6
・eclipse:3.6
・JDK:6.0




[ヘルプ]->[新規ソフトウエアのインストール]を選択します。
表示されたダイアログの「追加」ボタンを押下し、以下のように入力します。

あとは、次へボタンを押下し、インストールを完了させます。
その後、eclipseを再起動し完了です。

追記:
サンプルアプリを作ってみましたが、動かない。。。
ちらっと表示されすぐ、ハングアップしました。
おとなしく、NetBeansでやるのがいいのかもしれません。

実行構成で引数に「${resource_name}」を追加すれば起動するようになりました。

[Ubuntu] インストールされているアプリケーション一覧を表示する方法

アプリケーションの一覧を表示させるには、コンソールにて以下のコマンドを実行します。

 # dpkg -l

これを実行すると、以下のように一覧表示されます。

各項目は左から、
 ・パッケージ名
 ・バージョン
 ・説明
となります。

2011/03/09

[Ubuntu] VirtualBox上で動いているUbuntuにsambaへアクセスする方法について

VirtualBox上で動作しているUbuntuのsambaへ、
アクセスする方法について試してみました。
※Ubuntuにsambaがインストールされていることを前提とします。

私の環境は以下の通りです。
・Ubuntu:10.04

・sambaの設定

1.共有ディレクトリを作成する

sambaで共有するディレクトリを作成します。
ここでは、「/var」直下にsambaというディレクトリを作成します。
> sudo mkdir -m 777 samba

2.sambaの設定ファイルを修正する

先ほど作ったディレクトリを共有できるように、設定ファイルを修正します。
設定ファイルは、以下の場所にあります。
/etc/samba/smb.conf

編集は以下のコマンドにて実行できます。
> sudo vi smb.conf

smb.confを以下のように修正します。
--
[global]
    map to guest = Bad User
〜〜〜 中略 〜〜〜
[share]
path = /var/samba
writeable = yes
force create mode = 0666
force directory mode = 0777
guest ok = yes
guest only = yes

--


3.sambaを再起動し設定を有効にする


再起動は以下のコマンドにて実施します。


> sudo service smbd restart


・接続テスト


macから接続してみます。
finderのサーバへ接続で接続してみます。


接続できました。



[Ubuntu] IPアドレスの確認方法について

UbuntuでIPアドレスを確認するには、以下のコマンドを使用します。
$ ifconfig

ターミナルで上記のコマンドを入力すると、以下のような結果が得られます。
そちらの「inetアドレス」というのがIPアドレスとなります。

[Windows] ネットワーク接続のキャッシュを削除する方法

ネットワーク接続を一度した場合、接続情報のキャッシュが残ります。
通常、ネットワークドライブの切断から削除できますが、
guestユーザでアクセスした場合は、この方法では削除できません。

キャッシュは、以下のように削除できます。

コマンドプロンプトを立ち上げて、以下のコマンドを入力するだけです。

> net use ネットワーク接続名 /delete

ネットワーク接続名を調べるには
> net use
コマンドを実行すれば良いです。

2011/03/08

[MySQL] 文字列を数値に変換する方法

Oracleには、TO_NUMBERという変換する関数がありますが、
MySQLには文字列を数値に変換する関数がありません。

ですので、文字列フィールドに1〜100までデータが登録されている場合に、
以下のクエリを実行すると。。。

■クエリ
select max(col1) from test_tbl;
■結果
99

上記のクエリだと、test_tblの中から一番大きい文字列を検索します。
一番大きい文字列は「100」ではなく、「99」なのでこのような結果となります。

数値としての最大値を取得するには、文字列フィールドを数値に変換する必要があります。
やり方は2通りあります。(もっとありそうですけどね。)

1.暗黙的な型変換を利用する方法

文字列フィールドに対して算術演算をすると、暗黙的に数値へ変換されます。
これを利用して、数値に変換し最大値を算出します。

先ほどのクエリに対して、この方法を実施すると。。。
■クエリ
select max(col1+0) from test_tbl;
■結果
100

上記のように暗黙的に数値変換されてから最大値が算出されるので、
数値としての最大値100が結果として取得できます。

2.CAST関数を利用する方法

上記1の方法でもできますが、プログラムのあちこちに上記のような暗黙変換するようなロジックがあるのは、個人的に気持ち悪いです。
あのようなコードがあると、プログラムの見通しも悪くなりますしね。

そこで、CAST関数を利用して明示的に変換する方法について説明します。

CAST関数を使用するとこのようなクエリになります。
■クエリ
select max(cast(col1 as SIGNED)) from test_tbl;
■結果
100

SIGNEDを指定して、col1を整数に変換しています。
SIGNEDの他にも色々オプションがあるようです。

2011/03/07

[Ubuntu] LAMP環境を導入するには

Ubuntuにはtaskselというよく使うインストールをまとめて実行するコマンドです。

コマンドにて、以下のコマンドを実施します。

$ sudo tasksel

後は自動的にダウンロードが始まり、インストールされます。



2011/03/06

[Ubuntu] シャットダウンするには

以下のコマンドを実行すれば良いです。

$ sudo shutdown -h 0

[Ubuntu] Server版インストール後にGUIを載っけるには

Ubuntu Serverをインストールしただけだと、CUIで何かと不便でした。
ですので、Serverインストール後、GUIを使えるように設定してみます。

なお、Ubuntuは以下のバージョンを使用しています。
・Ubuntu10.04 LTS

1.apt-getでdesktopをインストール

ubuntuには「apt-get」という便利なコマンドがあるので、そちらを使用してdesktopをインストールします。
※apt-getについては、こちらに詳しく書かれていますので、参照ください。
http://www.jitaku-server.net/apt_get_basic.html

コマンドは以下のようになります。

$ sudo apt-get install ubuntu-desktop


このコマンドを実行すると、以下のようにインストールが始まります。


完了しましたら、以下のコマンドにてDesktopが起動します。


 $ startx




こんな感じで起動します。

2011/03/05

[Javadoc] メソッドに対するコメントの基本

メソッドに対するコメントは、以下4つの内容から構成されます。

  • 主説明
  • 引数の説明
  • 返却値の説明
  • 例外の説明
・主説明
メソッドの仕様を文章として記述するものです。

・引数の説明
メソッドが受け取る引数それぞれについて、メソッドを呼び出す側が意識すべき制約を記述するものです。
使用するブロックタグ:@param

・返却値の説明
メソッドが返す値について説明するものです。
使用するブロックタグ:@return

・例外の説明
メソッドが発生させる可能性がある例外について説明するものです。
検査例外については記述が必須ですが、非検査例外(実行時例外:RuntimeExceptionなど)は省略可能です。
使用するブロックタグ:@throws

以上から、メソッドコメントはこのような形になります。

/**
 * (主説明)
 *
 * @param 引数名 説明
 * @return 戻り値の説明
 * @throws 例外名 例外の説明
 */

[mac] macにubuntuをインストールする

近々会社で、ubuntuのインストールをすることになりそうなので、
自宅で勉強がてら、インストールをしてみることにします。

不要なPCがあればそいつで実施しようと思いますが、そんな環境もないため、
持っている唯一のPCであるmacbookにインストールしてみます。

インストールするubuntuのバージョンは10.04 LTSです。

以下手順となります。

1.ubuntu(Ubuntu Server Edition)の入手〜ディスクの作成

サーバー版を入手するため、Get Ubuntu Server Edition Downloadのページを表示し、
イメージディスクを作成して下さい。


Start downloadをクリックすると自動的にダウンロードが始まります。
約684MBもあるので、完了まで気長に待ちましょう。

保存が完了しましたら、ファイルをCDにコピーします。
※CDではなく、USBメモリにイメージをコピーしてもOKなようです。

2.Ubuntu用のHDD容量を確保

Ubuntu用のHDD容量をMacに標準搭載されている「Bootcamp」で確保します。
※MacだとHDDにあちこちにファイルを作成するため、予めデフラグツールを使用して、
整理してから実行して下さい。

以下のように、適当に32GB確保します。

3.Ubuntuのインストール

一旦Macを落とし、1で作成したディスクを入れ起動します。
Macか、CDで起動するか聞いてくるので、CDで起動する。
あとは、Ubuntuをインストールし、完了です。