2008年10月21日

Javaを書いてみよう!入門ソースコード

カテゴリー: Java — admin @ 12:55 AM

■ソースコード

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class samplewindows {
    /**
    * @param args
    */
    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ
        JFrame frame = new JFrame("リスト表示");
        AddListPanel panel1 = new AddListPanel();
        Container cont = frame.getContentPane();
        cont.add(panel1);
        //set up frame
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setBounds(0, 0, 300, 500);
        frame.setVisible(true);
    }
}
class AddListPanel extends JPanel implements ActionListener{
    private final long serialVersionUID = 1L;
    JButton button1, button2;
    JList list1;
    JTextField text1;
    DefaultListModel listModel;
    JLabel label1;
    AddListPanel(){
        button1 = new JButton("選択");
        button1.addActionListener(this);
        listModel = new DefaultListModel();
        listModel.addElement("りんご");
        list1 = new JList(listModel);
        list1.setFixedCellWidth(100);
        button2 = new JButton("追加");
        button2.addActionListener(this);
        JScrollPane scroll1 = new JScrollPane(list1);
        scroll1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        scroll1.setPreferredSize(new Dimension(240, 100));
        scroll1.setBorder(BorderFactory.createEtchedBorder());
        scroll1.setBorder(BorderFactory.createTitledBorder("果物"));
        text1 = new JTextField(12);
        label1 = new JLabel("ここに新しい項目を入力してください");
        JPanel p1  = new JPanel();
        p1.add(scroll1);
        p1.add(button1);
        JPanel p2 = new JPanel();
        p2.setLayout(new GridLayout(2, 1));
        p2.add(label1);
        p2.add(text1);
        JPanel p3 = new JPanel();
        p3.add(button2);
        this.setLayout(new GridLayout(3, 1));
        this.add(p1);
        this.add(p2);
        this.add(p3);
    }
    public void actionPerformed(ActionEvent el){
        if(el.getSource() == button1){
            JOptionPane.showMessageDialog(
                null,
                list1.getSelectedValue() + "が選択されました",
                "選択項目の表示",
                JOptionPane.INFORMATION_MESSAGE
            );
        }
        else if(el.getSource() == button2){
            if(text1.getText().compareTo("") != 0){
                listModel.addElement(text1.getText());
            }
            else{
                JOptionPane.showMessageDialog(
                    null,
                    "設定する項目が入力されていません",
                    "入力エラー",
                    JOptionPane.INFORMATION_MESSAGE
                );
            }
        }
    }
}

病み上がりだし、夜も遅いしで解説はマタ明日。。。

2008年10月20日

Javaを書いてみよう

カテゴリー: Java — admin @ 12:03 AM

■経緯

Web系言語以外にも手を出してみようと思った。Rubyとかも興味がある。AS3も極めたい。でもJavaにした。

■購入教材

実践マスターJava
基礎的な言語使用の解説と実践でのアプリ作成があるのでこれを選んだ。eclipseの使い方とか日本語化の仕方とかの解説があるのも嬉しい!なんといっても独学系プログラマは誰も周囲にSEが居ないから、開発環境の構築も解説してくれないと困るし。。。そんな理由もあってこの書籍を購入。

■サンプルコード

public class Chapter523 {
    /**
    * @param args
    */
    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ
        int answer;
        answer = 5 * 10;
        System.out.print("答えは" + answer + "です");
    }
}
//出力結果「答えは50です」

変数宣言時に変数の型を指定しなくちゃいけないわけですな!これはJavaScriptとかPHPとは違うわけよ!

■さらに

public class Chapter531 {
    /**
    * @param args
    */
    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ
        double answer = 0;
        answer = 10.0 / 3.0;
        System.out.print(answer);
    }
}
//出力結果「3.3333333333333335」

int型は整数しか代入できないので、double(倍精度浮動小数点型)で指定し、10/3でなく10.0/3.0と記述する。double answer = 0;で変数の初期化をする(変数の中身を確実にリセットしプログラムのバグが発生するのを防ぐ)

2008年10月15日

IT業界で働くと何が面白いか?

カテゴリー: 日記 — admin @ 10:57 PM

■個人的な見解だけど

凄まじいスピードで進化してるから、勉強しても勉強してもゴールがみえない。まぁ、これって大変なことでもあるんだけど、果てしなく成長できるから、それが楽しい。

2008年10月14日

CentOS5にパッケージ署名鍵をインストールしよう

カテゴリー: Linux — admin @ 4:04 PM

■実行コマンド

rpm –import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

V3 DSA signature: NOKEY, key ID xxxについて

この警告は署名が確認できなかったという事です。警告が出る方は上述のコマンドを実行しインストールしてください。

■参考文献

2008年10月14日

メーリングリストに誰でもメールを送れるように設定しよう

カテゴリー: Linux — admin @ 3:33 PM

この記事はplesk+postfix+mailmanを使っている方が対象です。

■ベストアンサー(kalu様、ご提供)

mailman設定:『動作が定義されていない非会員からの投稿に対する動作』の項目で『承認』の設定をする

■他の方法(mailman設定)

  • pleskで『ドメイン > (ドメイン) > メール > メーリングリスト』に行き、設定したいメーリングリストの右にある歯車アイコンをクリック
  • 『プライバシー・オプション>送信者フィルタ』で『自動的に投稿を承認すべき非会員のアドレス』に『^.+@.+』と入力(全てのメールアドレスを表す正規表現)

■それでも駄目なら

MXレコードの設定などを見直しましょう

2008年10月5日

mcryptをCentOS5にインストールしよう

カテゴリー: Linux — admin @ 6:04 PM

phpmyadminインストール後、ログイン画面で『mcrypt 拡張をロードできません』と表示される。

■対処方法

yumが使える方(yumのインストール方法

php-mcryptもインストールしたい方は以下のようにすれば依存関係を解決しつつインストールが完了する。(libmcryptが入ってない方も、yumが自動的にインストールしてくれるので心配はない)

yum install php-mcrypt

libmcryptだけインストールしたい方は以下のようにすれば良い。

yum install libmcrypt

yumが使えない方(rpmでインストールする方法)

mcryptをインストールする。さて、これにはphp-mcryptが必要になってくるわけだが、php-mcryptはlibmcryptに依存している。具体的には以下のような順序でインストールする。

  1. libmcryptをインストール
  2. php-mcryptをインストール
インストールする前にrpmの基礎知識

ファイル名が『libmcrypt-2.5.8-4.el5.centos.i386.rpm』とすると

  1. libmcryptがパッケージ名
  2. 2.5.8-4.el5がバージョン
  3. centos.i386がアーキテクチャ

特に3番目、OSとrpmパッケージのアーキテクチャが異なっているとインストールが失敗するので、コマンドライン(sshなど)でログインし、自分が使っているシステムが『x86_64』とか『i386』とか、どれに属するのか確認しておくこと!

システム情報を表示するコマンド

OSのバージョンや64bitシステム/32bitシステムを確認できる。

$uname -a

1.パッケージの準備(ダウンロード)

ダウンロードするパッケージのバージョンにはくれぐれも注意。

  1. 適切なRPMパッケージの準備。今回必要なのはphp-mcryptとlibmcrypt
  2. http://rpm.pbone.net/とかhttp://freshrpms.net/などを使って探す
  3. ダウンロードできたら、サーバーのルートディレクトリにでもアップロード
  4. 管理者権限でコマンドラインからログインし、rpmパッケージ(ファイル)をアップロードしたディレクトリに移動

2.libmcryptをインストール

libmcrypt-2.5.8-4.el5.xxxxxx.rpmについては自分が使ってるアーキテクチャに合ったパッケージをインストールすること(xxxxxx部分)。そして以下のコマンドを実行する。

rpm -ivh libmcrypt-2.5.8-4.el5.xxxxxx.rpm

3.php-mcryptをインストール

インストールするRPMパッケージのバージョンが、使っているphpのバージョンと同じになるようにすること。もちろんアーキテクチャにも注意する。

rpm -ivh php-mcrypt-xxx-xxxxxx.rpm
rpm -ivh でインストールする順番を間違えた場合
error: Failed dependencies:
libmcrypt.so.4 is needed by php-mcrypt-5.1.6-1.el5.i386

やり直してチャントlibmcryptからインストールすること!

参考:アーキテクチャの種類
i386 IA-32用バイナリRPMパッケージ
x86_64 AMD64/EMT64T用バイナリRPMパッケージ
ia64 IA-64用バイナリRPMパッケージ
Alpha ComacAlpha用バイナリパッケージ
s390 IBM S/390用バイナリRPMパッケージ
ppc32 PowerPC用バイナリRPMパッケージ
noarch アーキテクチャ非依存
src ソースRPMパッケージ