@blog.justoneplanet.info

日々勉強

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

■ソースコード

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
                );
            }
        }
    }
}

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

Javaを書いてみよう

■経緯

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;で変数の初期化をする(変数の中身を確実にリセットしプログラムのバグが発生するのを防ぐ)

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

■実行コマンド

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

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

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

■参考文献

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

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

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

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

■他の方法(mailman設定)

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

■それでも駄目なら

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

androidのコンポーネント

Intent コンポーネント間で非同期メッセージを送る際に利用される
Activity 画面、UI、関連するロジック
Content Provider 他のアプリケーションとデータを共有する
Service バックグラウンド処理をする。サービスはIntentを用いるかActivityにbindさせることで起動させる。また、manifestファイルに記述する必要がある。処理後もインスタンスは破棄されない
Broadcast Receiver ブロードキャストされた暗黙的Intentを受信して処理する。処理後にインスタンスは破棄される

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

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

■yumでインストール

php-mcrypt(とlibmcryptの両方)をインストールしたい場合、以下のコマンドを実行することで(依存関係を解決しつつ)インストールできる。

yum install php-mcrypt

ちなみに、libmcryptが入ってない場合、自動的にインストールしてくれる。また、libmcryptだけインストールしたい方は以下のコマンドを実行する。

yum install libmcrypt

以上でインストールが完了する。

yum自体のインストール

(参考:yumのインストール

■rpmでインストール

時にはyumなどのツールが使えないこともある。そんな時はrpmでインストールするのが良いかもしれない。但し、php-mcryptとlibmcryptは依存関係があるため、以下の順序でインストールする。

  1. libmcryptをインストール
  2. php-mcryptをインストール

インストール前にrpmの基礎知識

ファイル名が『libmcrypt-2.5.8-4.el5.centos.i386.rpm』とすると以下のようになる。

libmcrypt
パッケージ名
2.5.8-4.el5
バージョン
centos
ディストリビューション
i386
アーキテクチャ。i386が32bit版。x64_86が64bit版

使用しているOSとrpmパッケージのアーキテクチャが異なっているとインストールが失敗する。従って、自分が使っているシステムのアーキテクチャを事前に確認する必要がある。

システム情報の表示

以下のコマンドで、OSのバージョンや64bitシステム・32bitシステムを確認できる。

$uname -a

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

ダウンロード先は、http://rpm.pbone.net/とかhttp://freshrpms.net/などを使って探すのが良いと思う。パッケージのバージョンに注意してダウンロードしたら、サーバー上にアップロードする。

2.libmcryptをインストール

アップロードしたディレクトリに移動し、以下のコマンドを実行する。ちなみに以下のlibmcrypt-2.5.8-4.el5.xxxxxx.rpmについては、各々が使ってるアーキテクチャに合ったアーキテクチャやバージョンである。

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パッケージ