検索

カレンダー

2012年5月
« 4月    
 123456
78910111213
14151617181920
21222324252627
28293031  

広告

ブログランキング・にほんブログ村へ
にほんブログ村

東電電力供給情報

カテゴリー

最近のコメント

リンク

Ubuntu 10.04 LTSにOracle(Sun) Java6 JDK インストール

投稿者:yasu 更新日時:2011年12月5日 22時04分21秒
カテゴリJava, Ubuntu

今日は改めてJavaの勉強をする為に環境構築をしたいと思います。
せっかくなので普段使っていないUbuntu 10.04 LTSにJava6 SEをインストールしてみます。

[アプリケーション]-[アクセサリ]-[端末]から端末を起動します。

ubuntu@ubuntu:~$ sudo apt-get install sun-java6-jdk
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
gsfonts-x11 java-common odbcinst odbcinst1debian1 sun-java6-bin sun-java6-jre unixodbc
提案パッケージ:
default-jre equivs sun-java6-demo default-jdk-doc sun-java6-source sun-java6-plugin ia32-sun-java6-plugin sun-java6-fonts
ttf-kochi-gothic ttf-sazanami-gothic ttf-kochi-mincho ttf-sazanami-mincho ttf-arphic-uming libmyodbc odbc-postgresql tdsodbc unixodbc-bin
以下のパッケージが新たにインストールされます:
gsfonts-x11 java-common odbcinst odbcinst1debian1 sun-java6-bin sun-java6-jdk sun-java6-jre unixodbc
アップグレード: 0 個、新規インストール: 8 個、削除: 0 個、保留: 0 個。
55.9MB のアーカイブを取得する必要があります。
この操作後に追加で 165MB のディスク容量が消費されます。
続行しますか [Y/n]? Y
取得:1 http://jp.archive.ubuntu.com/ubuntu/ lucid/main java-common 0.34 [80.3kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ lucid/main odbcinst 2.2.11-21 [35.5kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu/ lucid/main odbcinst1debian1 2.2.11-21 [66.6kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu/ lucid/main unixodbc 2.2.11-21 [209kB]
取得:5 http://jp.archive.ubuntu.com/ubuntu/ lucid/main gsfonts-x11 0.21 [10.5kB]
取得:6 http://archive.canonical.com/ubuntu/ lucid/partner sun-java6-jre 6.26-1lucid1 [6,371kB]
取得:7 http://archive.canonical.com/ubuntu/ lucid/partner sun-java6-bin 6.26-1lucid1 [28.7MB]
取得:8 http://archive.canonical.com/ubuntu/ lucid/partner sun-java6-jdk 6.26-1lucid1 [20.4MB]
55.9MB を 2分 9秒 で取得しました (431kB/s)
パッケージを事前設定しています ...
未選択パッケージ java-common を選択しています。
(データベースを読み込んでいます ... 現在 194902 個のファイルとディレクトリがインストールされています。)
(.../java-common_0.34_all.deb から) java-common を展開しています...
未選択パッケージ sun-java6-jre を選択しています。ubuntu-10-04-lts-3
(.../sun-java6-jre_6.26-1lucid1_all.deb から) sun-java6-jre を展開しています...
未選択パッケージ odbcinst を選択しています。
(.../odbcinst_2.2.11-21_amd64.deb から) odbcinst を展開しています...
未選択パッケージ odbcinst1debian1 を選択しています。
(.../odbcinst1debian1_2.2.11-21_amd64.deb から) odbcinst1debian1 を展開しています...
未選択パッケージ unixodbc を選択しています。
(.../unixodbc_2.2.11-21_amd64.deb から) unixodbc を展開しています...
未選択パッケージ sun-java6-bin を選択しています。
(.../sun-java6-bin_6.26-1lucid1_amd64.deb から) sun-java6-bin を展開しています...
sun-dlj-v1-1 license has already been accepted
未選択パッケージ sun-java6-jdk を選択しています。
(.../sun-java6-jdk_6.26-1lucid1_amd64.deb から) sun-java6-jdk を展開しています...
sun-dlj-v1-1 license has already been accepted
未選択パッケージ gsfonts-x11 を選択しています。
(.../gsfonts-x11_0.21_all.deb から) gsfonts-x11 を展開しています...
doc-base のトリガを処理しています ...
Processing 3 added doc-base file(s)...
Registering documents with scrollkeeper...
man-db のトリガを処理しています ...
shared-mime-info のトリガを処理しています ...
desktop-file-utils のトリガを処理しています ...
python-gmenu のトリガを処理しています ...
Rebuilding /usr/share/applications/desktop.ja_JP.utf8.cache...
fontconfig のトリガを処理しています ...
python-support のトリガを処理しています ...
java-common (0.34) を設定しています ...
gsfonts-x11 (0.21) を設定しています ...

odbcinst (2.2.11-21) を設定しています ...
odbcinst1debian1 (2.2.11-21) を設定しています ...

unixodbc (2.2.11-21) を設定しています ...

sun-java6-bin (6.26-1lucid1) を設定しています ...
update-alternatives: /usr/bin/ControlPanel (ControlPanel) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/jre/bin/ControlPanel を使います。
update-alternatives: /usr/bin/java (java) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/jre/bin/java を使います。

たぶんこのあたりで下記のような表示になります。

一番下までスクロールして[Tab]キーを押下して<了解>に遷移したら[Enter]キーを押下します。

[Tab]キーを押下して[はい]に遷移したら[Enter]キーを押下します。

update-alternatives: /usr/bin/java_vm (java_vm) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/jre/bin/java_vm を使います。
update-alternatives: /usr/bin/javaws (javaws) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/jre/bin/javaws を使います。
update-alternatives: /usr/bin/jcontrol (jcontrol) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/jre/bin/jcontrol を使います。
update-alternatives: /usr/bin/keytool (keytool) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/jre/bin/keytool を使います。
update-alternatives: /usr/bin/pack200 (pack200) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/jre/bin/pack200 を使います。
update-alternatives: /usr/bin/policytool (policytool) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/jre/bin/policytool を使います。
update-alternatives: /usr/bin/rmid (rmid) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/jre/bin/rmid を使います。
update-alternatives: /usr/bin/rmiregistry (rmiregistry) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/jre/bin/rmiregistry を使います。
update-alternatives: /usr/bin/unpack200 (unpack200) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/jre/bin/unpack200 を使います。
update-alternatives: /usr/bin/orbd (orbd) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/jre/bin/orbd を使います。
update-alternatives: /usr/bin/servertool (servertool) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/jre/bin/servertool を使います。
update-alternatives: /usr/bin/tnameserv (tnameserv) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/jre/bin/tnameserv を使います。
update-alternatives: /usr/bin/jexec (jexec) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/jre/lib/jexec を使います。

sun-java6-jre (6.26-1lucid1) を設定しています ...

sun-java6-jdk (6.26-1lucid1) を設定しています ...
update-alternatives: /usr/bin/HtmlConverter (HtmlConverter) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/HtmlConverter を使います。
update-alternatives: /usr/bin/appletviewer (appletviewer) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/appletviewer を使います。
update-alternatives: /usr/bin/apt (apt) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/apt を使います。
update-alternatives: /usr/bin/extcheck (extcheck) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/extcheck を使います。
update-alternatives: /usr/bin/idlj (idlj) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/idlj を使います。
update-alternatives: /usr/bin/jar (jar) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/jar を使います。
update-alternatives: /usr/bin/jarsigner (jarsigner) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/jarsigner を使います。
update-alternatives: /usr/bin/javac (javac) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/javac を使います。
update-alternatives: /usr/bin/javadoc (javadoc) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/javadoc を使います。
update-alternatives: /usr/bin/javah (javah) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/javah を使います。
update-alternatives: /usr/bin/javap (javap) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/javap を使います。
update-alternatives: /usr/bin/jconsole (jconsole) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/jconsole を使います。
update-alternatives: /usr/bin/jdb (jdb) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/jdb を使います。
update-alternatives: /usr/bin/jhat (jhat) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/jhat を使います。
update-alternatives: /usr/bin/jinfo (jinfo) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/jinfo を使います。
update-alternatives: /usr/bin/jmap (jmap) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/jmap を使います。
update-alternatives: /usr/bin/jps (jps) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/jps を使います。
update-alternatives: /usr/bin/jrunscript (jrunscript) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/jrunscript を使います。
update-alternatives: /usr/bin/jsadebugd (jsadebugd) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/jsadebugd を使います。
update-alternatives: /usr/bin/jstack (jstack) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/jstack を使います。
update-alternatives: /usr/bin/jstat (jstat) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/jstat を使います。
update-alternatives: /usr/bin/jstatd (jstatd) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/jstatd を使います。
update-alternatives: /usr/bin/native2ascii (native2ascii) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/native2ascii を使います。
update-alternatives: /usr/bin/rmic (rmic) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/rmic を使います。
update-alternatives: /usr/bin/schemagen (schemagen) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/schemagen を使います。
update-alternatives: /usr/bin/serialver (serialver) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/serialver を使います。
update-alternatives: /usr/bin/wsgen (wsgen) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/wsgen を使います。
update-alternatives: /usr/bin/wsimport (wsimport) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/wsimport を使います。
update-alternatives: /usr/bin/xjc (xjc) を提供するために 自動モード で /usr/lib/jvm/java-6-sun/bin/xjc を使います。

libc-bin のトリガを処理しています ...
ldconfig deferred processing now taking place

JDKのインストールが終わったところで次回へ続きます。

ASP.NETの例外処理を考える

投稿者:yasu 更新日時:2011年11月16日 0時55分28秒
カテゴリプログラム

最近ASP.NETで入力フォームを作る仕事がありまして、1からプログラムをしこしこと書いている訳ですが、例外制御をどうしようかずっと悩んでいました。

今まではどちらかというと例外制御があまり必要でないプログラムっていうんですかね。
いわゆるパーツ類の作成が多かったのでちゃんとした例外処理はメインプログラムにまかせて、パーツ類はとにかく処理全体をtry-catchで囲ってcatchはExceptionでひとまとめに例外処理をするって方法でかなりおおざっぱにやっていたのですが、今回は入力フォームの作成なのであまりおおざっぱに作ると後で苦労すると思い、これぞ例外制御っていう手法を探していたのですが例外制御の手法として参考になりそうなブログがありました。

.NETの例外処理 Part.1 - とあるコンサルタントのつぶやき - Site Home - MSDN Blogs
.NETの例外処理 Part.2 - とあるコンサルタントのつぶやき - Site Home - MSDN Blogs
.NETの例外処理 Part. 3 - とあるコンサルタントのつぶやき - Site Home - MSDN Blogs

今まではtry-catchかtry-catch-finallyってやる事しか考えていなかったのですが、局面によってtry-catchとtry-finallyを使い分けるのがいいやり方みたいです。
try-catch ブロックは

・例外が発生しうる『1 行』のみ(囲っても2〜3行程度←こういうケースもあるだろうという想像を含む)を囲む。
・一般例外(Exception クラス)ではなく、特定の例外(SqlException など)のみを捕捉する。
・catch した後には、必ず後処理(業務エラーへの変換など)を記述する。

一方、try-finally ブロックは

・try-finally ブロックは、アプリケーション全体を囲む。
・一般例外(Exception クラス)すべてに対して有効になるように記述する。
・catch ブロックは書かない。

っていうのを気をつけて使うのがいいみたい。

あと別にwikiにも例外処理の設計ガイドなるものが。
MSDN:例外処理の設計ガイド(要約) - isla-plata.org Wiki
こっちには自前の例外クラスの設計思想が記載されていました。

クラス名は末尾にExceptionをつけること
コンストラクタを以下のように3つ作るのが望ましい

デフォルトコンストラクタ(空)
文字列1つ(メッセージ)を引数に持つコンストラクタ
文字列一つ(メッセージ)と、ラップする例外を引数に持つコンストラクタ

自分が担当しているシステムは元々大きなシステムベンダーに作って貰ったんだけど、そのベンダーも自前例外クラスを作っていてソースみたけど例外の種類によって○○ExceptionだのxxExceptionだのクラスが5つか6つくらいあって、そのどれもが「どうやって使い分けてるんだ!?」ってくらいコンストラクタが(たしか20個くらい)あって、でもこれがデファクトスタンダードなんだろうって思い込んでたんだけど、そうでもないって事がわかっただけでも収獲かな。

何はともあれ例外処理の実装をしてみる事にします。

Scientific Linux 6で自宅サーバー構築 その13 Apache PHP MySQLをインストール

投稿者:yasu 更新日時:2011年8月20日 18時31分44秒
カテゴリApache, Linux, MySQL, PHP, Scientific Linux, 自宅サーバー

今回はWebサーバとDatabaseサーバをインストール・設定していきます。

Apache、PHP、MySQLインストール

Apache、PHP、MySQL、関連パッケージをインストールします。

[root@sl6 ~]# yum -y install httpd php php-mbstring mod_ssl mysql-server php-mysql php-gd
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.2.15-5.sl6 set to be updated
--> Processing Dependency: httpd-tools = 2.2.15-5.sl6 for package: httpd-2.2.15-5.sl6.x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.2.15-5.sl6.x86_64
--> Processing Dependency: apr-util-ldap for package: httpd-2.2.15-5.sl6.x86_64
--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.2.15-5.sl6.x86_64
--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.2.15-5.sl6.x86_64
---> Package mod_ssl.x86_64 1:2.2.15-5.sl6 set to be updated
---> Package mysql-server.x86_64 0:5.1.52-1.el6_0.1 set to be updated
--> Processing Dependency: mysql = 5.1.52-1.el6_0.1 for package: mysql-server-5.1.52-1.el6_0.1.x86_64
--> Processing Dependency: perl-DBD-MySQL for package: mysql-server-5.1.52-1.el6_0.1.x86_64
--> Processing Dependency: perl(DBI) for package: mysql-server-5.1.52-1.el6_0.1.x86_64
--> Processing Dependency: perl-DBI for package: mysql-server-5.1.52-1.el6_0.1.x86_64
---> Package php.x86_64 0:5.3.2-6.el6_0.1 set to be updated
--> Processing Dependency: php-cli = 5.3.2-6.el6_0.1 for package: php-5.3.2-6.el6_0.1.x86_64
--> Processing Dependency: php-common = 5.3.2-6.el6_0.1 for package: php-5.3.2-6.el6_0.1.x86_64
---> Package php-gd.x86_64 0:5.3.2-6.el6_0.1 set to be updated
--> Processing Dependency: libXpm.so.4()(64bit) for package: php-gd-5.3.2-6.el6_0.1.x86_64
---> Package php-mbstring.x86_64 0:5.3.2-6.el6_0.1 set to be updated
---> Package php-mysql.x86_64 0:5.3.2-6.el6_0.1 set to be updated
--> Processing Dependency: php-pdo for package: php-mysql-5.3.2-6.el6_0.1.x86_64
--> Running transaction check
---> Package apr.x86_64 0:1.3.9-3.el6_1.2 set to be updated
---> Package apr-util.x86_64 0:1.3.9-3.el6_0.1 set to be updated
---> Package apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 set to be updated
---> Package httpd-tools.x86_64 0:2.2.15-5.sl6 set to be updated
---> Package libXpm.x86_64 0:3.5.8-2.el6 set to be updated
---> Package mailcap.noarch 0:2.1.31-1.1.el6 set to be updated
---> Package mysql.x86_64 0:5.1.52-1.el6_0.1 set to be updated
---> Package perl-DBD-MySQL.x86_64 0:4.013-3.el6 set to be updated
---> Package perl-DBI.x86_64 0:1.609-4.el6 set to be updated
---> Package php-cli.x86_64 0:5.3.2-6.el6_0.1 set to be updated
---> Package php-common.x86_64 0:5.3.2-6.el6_0.1 set to be updated
---> Package php-pdo.x86_64 0:5.3.2-6.el6_0.1 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

============================================================
Package Arch Version Repository Size
============================================================
Installing:
httpd x86_64 2.2.15-5.sl6 sl 810 k
mod_ssl x86_64 1:2.2.15-5.sl6 sl 84 k
mysql-server x86_64 5.1.52-1.el6_0.1 sl-security 8.1 M
php x86_64 5.3.2-6.el6_0.1 sl-security 1.1 M
php-gd x86_64 5.3.2-6.el6_0.1 sl-security 102 k
php-mbstring x86_64 5.3.2-6.el6_0.1 sl-security 503 k
php-mysql x86_64 5.3.2-6.el6_0.1 sl-security 75 k
Installing for dependencies:
apr x86_64 1.3.9-3.el6_1.2 sl-security 122 k
apr-util x86_64 1.3.9-3.el6_0.1 sl-security 86 k
apr-util-ldap x86_64 1.3.9-3.el6_0.1 sl-security 15 k
httpd-tools x86_64 2.2.15-5.sl6 sl 67 k
libXpm x86_64 3.5.8-2.el6 sl 58 k
mailcap noarch 2.1.31-1.1.el6 sl 26 k
mysql x86_64 5.1.52-1.el6_0.1 sl-security 888 k
perl-DBD-MySQL x86_64 4.013-3.el6 sl 133 k
perl-DBI x86_64 1.609-4.el6 sl 704 k
php-cli x86_64 5.3.2-6.el6_0.1 sl-security 2.2 M
php-common x86_64 5.3.2-6.el6_0.1 sl-security 515 k
php-pdo x86_64 5.3.2-6.el6_0.1 sl-security 71 k

Transaction Summary
============================================================
Install 19 Package(s)
Upgrade 0 Package(s)

Total download size: 16 M
Installed size: 47 M
Downloading Packages:
(1/19): apr-1.3.9-3.el6_1.2.x86_64.rpm | 122 kB 00:01
(2/19): apr-util-1.3.9-3.el6_0.1.x86_64.rpm | 86 kB 00:00
(3/19): apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm | 15 kB 00:00
(4/19): httpd-2.2.15-5.sl6.x86_64.rpm | 810 kB 00:00
(5/19): httpd-tools-2.2.15-5.sl6.x86_64.rpm | 67 kB 00:00
(6/19): libXpm-3.5.8-2.el6.x86_64.rpm | 58 kB 00:00
(7/19): mailcap-2.1.31-1.1.el6.noarch.rpm | 26 kB 00:00
(8/19): mod_ssl-2.2.15-5.sl6.x86_64.rpm | 84 kB 00:00
(9/19): mysql-5.1.52-1.el6_0.1.x86_64.rpm | 888 kB 00:00
(10/19): mysql-server-5.1.52-1.el6_0.1.x86_64.rpm | 8.1 MB 00:18
(11/19): perl-DBD-MySQL-4.013-3.el6.x86_64.rpm | 133 kB 00:00
(12/19): perl-DBI-1.609-4.el6.x86_64.rpm | 704 kB 00:01
(13/19): php-5.3.2-6.el6_0.1.x86_64.rpm | 1.1 MB 00:04
(14/19): php-cli-5.3.2-6.el6_0.1.x86_64.rpm | 2.2 MB 00:14
(15/19): php-common-5.3.2-6.el6_0.1.x86_64.rpm | 515 kB 00:03
(16/19): php-gd-5.3.2-6.el6_0.1.x86_64.rpm | 102 kB 00:00
(17/19): php-mbstring-5.3.2-6.el6_0.1.x86_64.rpm | 503 kB 00:01
(18/19): php-mysql-5.3.2-6.el6_0.1.x86_64.rpm | 75 kB 00:00
(19/19): php-pdo-5.3.2-6.el6_0.1.x86_64.rpm | 71 kB 00:00
------------------------------------------------------------
Total 306 kB/s | 16 MB 00:51
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : php-common-5.3.2-6.el6_0.1.x86_64 1/19
Installing : apr-1.3.9-3.el6_1.2.x86_64 2/19
Installing : apr-util-1.3.9-3.el6_0.1.x86_64 3/19
Installing : perl-DBI-1.609-4.el6.x86_64 4/19
Installing : perl-DBD-MySQL-4.013-3.el6.x86_64 5/19
Installing : httpd-tools-2.2.15-5.sl6.x86_64 6/19
Installing : apr-util-ldap-1.3.9-3.el6_0.1.x86_64 7/19
Installing : php-cli-5.3.2-6.el6_0.1.x86_64 8/19
Installing : php-pdo-5.3.2-6.el6_0.1.x86_64 9/19
Installing : mysql-5.1.52-1.el6_0.1.x86_64 10/19
Installing : libXpm-3.5.8-2.el6.x86_64 11/19
Installing : mailcap-2.1.31-1.1.el6.noarch 12/19
Installing : httpd-2.2.15-5.sl6.x86_64 13/19
Installing : 1:mod_ssl-2.2.15-5.sl6.x86_64 14/19
Installing : php-5.3.2-6.el6_0.1.x86_64 15/19
Installing : php-gd-5.3.2-6.el6_0.1.x86_64 16/19
Installing : mysql-server-5.1.52-1.el6_0.1.x86_64 17/19
Installing : php-mysql-5.3.2-6.el6_0.1.x86_64 18/19
Installing : php-mbstring-5.3.2-6.el6_0.1.x86_64 19/19

Installed:
httpd.x86_64 0:2.2.15-5.sl6 mod_ssl.x86_64 1:2.2.15-5.sl6 mysql-server.x86_64 0:5.1.52-1.el6_0.1 php.x86_64 0:5.3.2-6.el6_0.1 php-gd.x86_64 0:5.3.2-6.el6_0.1
php-mbstring.x86_64 0:5.3.2-6.el6_0.1 php-mysql.x86_64 0:5.3.2-6.el6_0.1

Dependency Installed:
apr.x86_64 0:1.3.9-3.el6_1.2 apr-util.x86_64 0:1.3.9-3.el6_0.1 apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 httpd-tools.x86_64 0:2.2.15-5.sl6 libXpm.x86_64 0:3.5.8-2.el6
mailcap.noarch 0:2.1.31-1.1.el6 mysql.x86_64 0:5.1.52-1.el6_0.1 perl-DBD-MySQL.x86_64 0:4.013-3.el6 perl-DBI.x86_64 0:1.609-4.el6 php-cli.x86_64 0:5.3.2-6.el6_0.1
php-common.x86_64 0:5.3.2-6.el6_0.1 php-pdo.x86_64 0:5.3.2-6.el6_0.1

Complete!

Apacheの設定

[root@sl6 ~]# vi /etc/httpd/conf/httpd.conf
#
# Don't give away too much information about all the subcomponents
# we are running. Comment out this line if you don't mind remote sites
# finding out what major optional modules you are running
# HTTPヘッダーやエラーページにApacheのバージョンやOSの情報が表示されないようにOS から Prod に変更
ServerTokens Prod # OSからProdに変更

#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
#
# 管理者メールアドレスを変更します
ServerAdmin root@sa-sa-ki.jp # ドメイン名をlocalhostからsa-sa-ki.jpに変更

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If this is not set to valid DNS name for your host, server-generated
# redirections will not work. See also the UseCanonicalName directive.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
# You will have to access it by its address anyway, and this will make
# redirections work in a sensible way.
#
# FQDNを変更します
ServerName www.sa-sa-ki.jp:80 # コメント解除してWebサーバーのFQDNに変更

#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# features.
#

Options None # FollowSymLinksからNoneに変更
AllowOverride None
Order deny,allow # 追加
  Deny from all# 追加

#
# This should be changed to whatever you set DocumentRoot to.
#

#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
# ドキュメントルートのファイル一覧を表示しないようにします
Options ExecCGI FollowSymLinks # IndexesからExecCGIに変更

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
# NoneからAllに変更してファイルアクセス(.htaccess)の使用可能な指示子を全て許可にします
AllowOverride All # NoneからAllに変更

#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all

#
# AddHandler allows you to map certain file extensions to "handlers":
# actions unrelated to filetype. These can be either built into the server
# or added with the Action directive (see below)
#
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#
# CGIスクリプトに拡張子.plを追加します
AddHandler cgi-script .cgi .pl # コメント解除して.plを追加

#
# Optionally add a line containing the server version and virtual host
# name to server-generated pages (internal error documents, FTP directory
# listings, mod_status and mod_info output etc., but not CGI generated
# documents or custom error documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of: On | Off | EMail
#
# エラーページにApacheのバージョンを表示しないようにOn から Off に変更
ServerSignature Off # OnからOffに変更

#
# Aliases: Add here as many aliases as you need (with no limit). The format is
# Alias fakename realname
#
# Note that if you include a trailing / on fakename then the server will
# require it to be present in the URL. So "/icons" isn't aliased in this
# example, only "/icons/". If the fakename is slash-terminated, then the
# realname must also be slash terminated, and if the fakename omits the
# trailing slash, the realname must also omit it.
#
# We include the /icons/ alias for FancyIndexed directory listings. If you
# do not use FancyIndexing, you may comment this out.
#
Alias /icons/ "/var/www/icons/"


# Options Indexesを削除してiconsディレクトリのファイル一覧を表示しないようにします
Options MultiViews FollowSymLinks # Indexesを削除
AllowOverride None
Order allow,deny
Allow from all

# 保存してviエディタを終了します

ドキュメントルートの権限変更

ドキュメントルートの権限を変更します。

[root@sl6 ~]# chown -R apache.apache /var/www
[root@sl6 ~]# ls -la /var/www
合計 24
drwxr-xr-x. 6 apache apache 4096 6月 18 20:35 2011 .
drwxr-xr-x. 22 root root 4096 6月 18 20:35 2011 ..
drwxr-xr-x. 2 apache apache 4096 11月 24 01:37 2010 cgi-bin
drwxr-xr-x. 3 apache apache 4096 6月 18 20:35 2011 error
drwxr-xr-x. 2 apache apache 4096 11月 24 01:37 2010 html
drwxr-xr-x. 3 apache apache 4096 6月 18 20:35 2011 icons

# 所有者・所有グループがapacheになっていることを確認する

PHP設定

[root@sl6 ~]# vi /etc/php.ini
;;;;;;;;;;;;;;;;;
; Miscellaneous ;
;;;;;;;;;;;;;;;;;

; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header). It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
; http://www.php.net/manual/en/ini.core.php#ini.expose-php
# HTTPヘッダーにPHPのバージョンを表示しないようにOn から Off に変更
expose_php = Off # OnからOffに変更

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

; Whether to allow HTTP file uploads.
; http://www.php.net/manual/en/ini.core.php#ini.file-uploads
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; http://www.php.net/manual/en/ini.core.php#ini.upload-tmp-dir
;upload_tmp_dir =

; Maximum allowed size for uploaded files.
; http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize
# WordPressでアップロード可能なファイルサイズを10MBに変更
upload_max_filesize = 10M # 2Mから10Mに変更

# 保存してviエディタを終了します

ファイヤーウォールの設定変更

Apacheのポート番号のアクセス許可設定を行います。

[root@sl6 ~]# vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT # 追加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 123 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

# 保存してviエディタを終了します

[root@sl6 ~]# /etc/rc.d/init.d/iptables restart
iptables: ファイアウォールルールを消去中: [ OK ]
iptables: チェインをポリシー ACCEPT へ設定中filter [ OK ]
iptables: モジュールを取り外し中: [ OK ]
iptables: ファイアウォールルールを適用中: [ OK ]

ルータの設定変更

ルータがない場合は不要な手順になりますが、yasuの家にはCTUとサーバーの間にルータがありますので併せてNAT設定で80番ポートをサーバーに向けます。
設定方法はルータの設定手順に従ってください。

Apache起動

Apacheの起動と自動起動の設定を行います。

[root@sl6 ~]# /etc/rc.d/init.d/httpd start
httpd を起動中: [ OK ]

[root@sl6 ~]# chkconfig httpd on
[root@sl6 ~]# chkconfig --list | grep httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

MySQLの設定

MySQLの設定を行います。

# MySQL初回起動時に名前解決ができずエラーが発生したのでhostsファイルにホスト名を追記

[root@sl6 ~]# vi /etc/hosts
127.0.0.1   sl6.sa-sa-ki.jp localhost localhost.localdomain localhost4 localhost4.localdomain4 # ホスト名を追加(先頭に追加)
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

# 保存してviエディタを終了します

# MySQL起動
[root@sl6 ~]# /etc/rc.d/init.d/mysqld start
MySQL データベースを初期化中:  Installing MySQL system tables...

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h sl6.sa-sa-ki.jp password 'new-password'

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!

                                                           [  OK  ]
mysqld を起動中:                                           [  OK  ]

# MySQL自動起動設定
[root@sl6 ~]# chkconfig mysqld on
[root@sl6 ~]# chkconfig --list mysqld
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off

# MySQL初期設定
# MySQLにrootでログインします
[root@sl6 ~]# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.52 Source distribution

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

# ユーザー一覧を検索します
mysql> select user,host,password from mysql.user;
+------+-----------------+----------+
| user | host            | password |
+------+-----------------+----------+
| root | localhost       |          |
| root | sl6.sa-sa-ki.jp |          |
| root | 127.0.0.1       |          |
|      | localhost       |          |
|      | sl6.sa-sa-ki.jp |          |
+------+-----------------+----------+
5 rows in set (0.00 sec)

# パスワードを登録していきます
mysql> set password for root@localhost=password('パスワード');
Query OK, 0 rows affected (0.00 sec)

mysql> set password for root@"sl6.sa-sa-ki.jp"=password('パスワード');
Query OK, 0 rows affected (0.00 sec)

mysql> set password for root@127.0.0.1=password('パスワード');
Query OK, 0 rows affected (0.00 sec)

mysql> select user,host,password from mysql.user;
+------+-----------------+-------------------------------------------+
| user | host            | password                                  |
+------+-----------------+-------------------------------------------+
| root | localhost       | *パスワード |
| root | sl6.sa-sa-ki.jp | *パスワード |
| root | 127.0.0.1       | *パスワード |
|      | localhost       |                                           |
|      | sl6.sa-sa-ki.jp |                                           |
+------+-----------------+-------------------------------------------+
5 rows in set (0.00 sec)

mysql> exit
bye

# rootユーザでログインします
[root@sl6 ~]# mysql -u root -p
Enter password:rootユーザのパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.1.52 Source distribution

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

# データベースの一覧を表示します
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)

# testデータベースは不要なので削除します
mysql> drop database test;
Query OK, 0 rows affected (0.04 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
+--------------------+
2 rows in set (0.00 sec)

mysql> exit
bye

■関連記事
Scientific Linux 6で自宅サーバー構築 その1 サーバー機Express 5800 GT110bのオンボードRAIDでRAID1設定
Scientific Linux 6で自宅サーバー構築 その2 Scientific Linux 6をExpress5800/GT110bにインストール
Scientific Linux 6で自宅サーバー構築 その3 Scientific Linux 6インストール後の初期設定
Scientific Linux 6で自宅サーバー構築 番外編その1 Scientific Linux 6のcronについて
Scientific Linux 6で自宅サーバー構築 その4 Scientific Linux 6 にClamAVをインストールしてウィルス対策
Scientific Linux 6で自宅サーバー構築 その5 Scientific Linux 6 にTripwireをインストールしてファイル改ざんを検知する
Scientific Linux 6で自宅サーバー構築 その6 Scientific Linux 6 にchkrootkitをインストールしてrootkit感染を検知する
Scientific Linux 6で自宅サーバー構築 その7 NTPサーバーで自動時刻合わせ
Scientific Linux 6で自宅サーバー構築 その8 バッファオーバーフロー攻撃対策を行う
Scientific Linux 6で自宅サーバー構築 その9 logwatchでサーバー監視
Scientific Linux 6で自宅サーバー構築 その10 DNSサーバーを構築
Scientific Linux 6で自宅サーバー構築 番外編その2 Scientific Linuxを6.0から6.1にアップグレードする
Scientific Linux 6で自宅サーバー構築 その11 PostfixとDovecotとSMTP-AUTHでメールサーバーを構築する
Scientific Linux 6で自宅サーバー構築 その12 メールサーバーにSSLを導入する
Scientific Linux 6で自宅サーバー構築 その13 Apache PHP MySQLをインストール
Scientific Linux 6で自宅サーバー構築 その14 WebサーバーにSSLを導入する
Scientific Linux 6で自宅サーバー構築 その15 WordPressを導入する
Scientific Linux 6で自宅サーバー構築 その16 Piwikでアクセスログ集計
Scientific Linux 6で自宅サーバー構築 その17 Squidをインストール
Scientific Linux 6で自宅サーバー構築 その18 sshで鍵認証を導入
Scientific Linux 6で自宅サーバー構築 その19 WebDavの設定
Scientific Linux 6で自宅サーバー構築 その20 lm_sensorをインストール

JavaScriptで入力フォームのマウス右クリック、コピー、ペーストを制御するには

投稿者:yasu 更新日時:2010年8月4日 10時40分40秒
カテゴリJavaScript

入力フォームの改修でメールアドレスの再入力項目を追加する事になりそうです。
できれば再入力項目なのでメールアドレスをコピー&ペーストできないようにしたいところ。

そこでJavaScriptで制御できないか調べてみました。

HTML:
  1. <title>キーイベント</title>
  2. </head>
  3. マウス右クリック禁止、コピー禁止、ペースト禁止<br>
  4. <input type="text" oncontextmenu="return false;" oncopy="return false;" onpaste="return false;">
  5. </form>
  6. </body>
  7. </html>

inputタグに記載した
oncontextmenu="terurn false;" はマウスの右クリックを禁止します。
oncopy="return false;" はコピーを禁止します。
onpaste="return false;" はペーストを禁止します。

OS/Browser IE6 IE7 IE8 Firefox3.6 Safari4 Safari5 Google
Chrome5
Opera10 Opera
Mini5
Windows XP
Windows Vista
Windows 7
Mac OS X 10.6
Ubuntu 10.04
iOS4 × ×
Android2.1(※1) × ×

○・・・マウス右クリック禁止、コピー禁止、ペースト禁止全て制御可能
△・・・マウス右クリック禁止、コピー禁止、ペースト禁止一部制御可能
×・・・マウス右クリック禁止、コピー禁止、ペースト禁止全て制御不可
※1・・・Android2.1に標準インストールされているブラウザはSafariと同じWebKitベースなのでSafariの欄に制御状況を記載

PCのIE、Firefox、Safari、Google Chromeは制御可能でOperaはマウス右クリックだけ制御可能でした。
またiOSやAndroidのSafari、Opera Miniはコピー・ペーストとも制御不可でした(タッチパネルの為、右クリックはイベント制御不可)。

Java for Mac OS X 10.6 アップデート 2

投稿者:yasu 更新日時:2010年5月20日 10時39分52秒
カテゴリApple, Java, OS X

Snow LeopardのJavaのアップデートがあった。

Java for Mac OS X 10.6 アップデート 2 で Java SE 6 を 1.6.0_20 にアップデートすることによって、互換性、セキュリティ、信頼性が向上します。

このアップデートをインストールする前に、Web ブラウザと Java アプリケーションを終了してください。

このアップデートについて詳しくは、次の Web サイトをご覧ください:http://support.apple.com/kb/HT4141?viewlocale=ja_JP

このアップデートのセキュリティコンテンツについては、次の Web サイトをご覧ください:http://support.apple.com/kb/HT1222?viewlocale=ja_JP

jQueryを使ったゲームを作ってみた

投稿者:yasu 更新日時:2010年4月28日 22時43分11秒
カテゴリGame, jQuery

前々から興味のあったjQueryを使ってゲームを作ってみました。
ゲームの内容は5×5マスに1~25までランダムに表示されている番号を順番にクリックして時間を計測するものです。
せっかくだからどこかに公開できないか考え中です。

iPhoneアプリを作ってみるぞ その1

投稿者:yasu 更新日時:2010年4月2日 0時06分52秒
カテゴリiPhone/iPod touch/iPad, Objective-C

やるぞやるぞと言い始めてもう1年以上が経過してしまったのだけれど、とにかく人のまね・簡単なものからiPhoneアプリを作ってみたいと思います。

アプリのネタもないので、まずは足し算アプリを作ってみたいと思います。

カテゴリ:アプリ開発入門 - もとまかのiPhone・iPod touch戯れ日記

何はともあれ、まずiPhoneアプリのプロジェクトを作ってみます。
Finderから/Developer/Xcode.appを起動します。

Xcodeが起動したら[新規Xcodeプロジェクトを作成]を選択します。

続いて新規プロジェクトのテンプレートを選択します。
ここでは[View-bsed Application]を選択して[選択]ボタンをクリックします。

プロジェクトの名前を入力します。
ここでは Calc として[保存]ボタンをクリックします。

これで Calc というプロジェクトが作成されます。

えーっと、第一回目はこれで終了です。
はえーよって怒らないでください。

次回はInterface Builderを使って、画面にテキストエリアやボタンを設置してみたいと思います。

Android開発環境構築 その4

投稿者:yasu 更新日時:2010年3月19日 0時43分58秒
カテゴリAndroid, Java, Mobile, Windows

今回はAndroid開発環境でHello Worldを試してみたいと思います。

まずAVD(Android Virtual Devices)という、Androidの仮想環境を作成してからアプリの作成を行います。

AVD(Android Virtual Devices)の作成

Eclipseを起動し、メニューバーより[ウィンドウ(W)]-[Android SDK and AVG Manager]をクリックします。

Android SDK and AVG Managerが表示されたらわかるのですが、Virtual Devicesは未登録ですので[New]ボタンをクリックして仮想環境を作成します。

とりあえずHello Worldと表示するだけですので、以下のように入力・設定して[Create AVD]ボタンをクリックします。
 Name:SmartQ5
 Target:Android 2.0.1 - API Level 6
 SD Card:Size:100MiB
 Skin: Built-in: WVGA800
 Hardware:Abstracted LCD density 24、Max VM application heap size 24

作成したAVDの確認ダイアログが表示されたら[OK]ボタンをクリックします。

Virtual Devicesの一覧に今登録した仮想環境が表示されていればOKなので、Android SDK and AVG Manageを終了します。

AVDの詳細な設定は下記ページが参考になるかと思います。
5.5 Android 仮想デバイス ( AVD ) (ソフトウェア技術ドキュメントを勝手に翻訳)

Eclipseのメニューバーから[ファイル(F)]-[新規(N)]-[プロジェクト(R)]をクリックします。

新規プロジェクトダイアログが表示されたら[Android]-[Android Project]を選択して[次へ(N)]ボタンをクリックします。

Project name、Build Target、Application name、Package name、Create Activityを以下のように入力して[終了(F)]ボタンをクリックします。
 Project name:HelloWorld
 Build Target:Android 2.0.1
 Application name:HelloWorld
 Package name:test.helloworld
 Create Activity:HelloWorld

Eclipseのメニューバーから[ウィンドウ(W)]-[ビューの表示(V)]-[パッケージ・エクスプローラー]をクリックします。

一番左のペインにパッケージ・エクスプローラーが表示されますので、[HelloWorld]のパッケージで右クリックし[実行(R)]-[1 Android Application]をクリックします。

するとAndroidの仮想環境が起動して、HelloWorldのアプリが動きます。

プロジェクト作成してそのままビルドしただけなので、HelloWorldアプリを作ったというのはちょっと違うかもしれませんが、一応雰囲気だけは感じられたのではないかと思います。

次はどうしようかな。
このHelloWorldアプリをSmartQ5に転送して実機で動かせるか試してみたいと思います。

■関連記事■
Android開発環境構築 その1 » sa-sa-ki.jpのblog
Android開発環境構築 その2 » sa-sa-ki.jpのblog
Android開発環境構築 その3 » sa-sa-ki.jpのblog
Android開発環境構築 その4 » sa-sa-ki.jpのblog

Sun MicrosystemsのServlet/JSP研修3日目

投稿者:yasu 更新日時:2010年3月17日 19時23分53秒
カテゴリJava

Servlet/JSP研修の最終日です。

今日はJSPとJavaBeansの復習とカスタムタグ、Strutsを勉強してきました。

現場は独自カスタムタグを使ってるのでカスタムタグの章はしっかりやりたかったんだけど、コアなカスタムタグの利用方法しか講義にはでてきませんでした。
新規で作ったりとかやりたかったなぁ。

研修終わっての感想としては「Javaは面白い」っていうのが分かっただけでも大収穫でした。

Sun MicrosystemsのServlet/JSP研修2日目

投稿者:yasu 更新日時:2010年3月16日 19時14分47秒
カテゴリJava

研修2日目です。

今日はセッション管理、フィルタリング、JSP、JavaBeansを勉強してきました。
色々あってさすがに頭がパンクしそうな感じですが、今日の講習を受けて感じたのはServletやJSPを使うと作るWebアプリケーションが自然とMVCモデルになるんだと思いました。
自分が今までやってきた.NetFramework1.1のASP.NetはページとイベントありきのコーディングであんまりMVCモデルってのを意識しなかったし。

講習は明日で終わりなんだけど、新しい言語を覚えるのってやっぱり楽しいって事を再確認できてよかったかも。

まだまだ自分が覚えたい言語はActionScriptとかPerl、PHP、Python、Ruby、Curlとキリがありません。