基礎セミナー サーバサイドJavaに参加してきたー。
先日、日本 Java ユーザグループ主催の勉強会( 基礎セミナー サーバサイドJava )に参加してきた。
(http://www.java-users.jp/contents/events/basicseminar/201001core/index.html)
場所は恵比寿ガーデンプレイスタワーの「地下1階」。
開始20分前(開場とは別)という時間帯に余裕を持って恵比寿に着く事ができた。
ただ、「勉強会の会場」と「勉強会の会場を提供する会社」の階が違い、
僕は、「場所を提供する会社」の受付で10分近くうろついていた。受付の電話も何回か鳴らしてみた。
しかし、受付の電話には誰も出てくれない。
「こ、これはおかしい」
そんなことを思った時に、別の部屋からその会社の人らしき人を捕まえて、意を決して聞き、
やっとで、勉強会の会場が地下の1階ということを知った。
あたふたしながら、勉強会の会場に遅刻をして到着。
まだ、オリエンテーション中だったので、ハンカチで汗を拭いながら、メモの準備をした。
では、以下内容と感想。
内容( powerpointタイトル抜粋 )
■前半( 19:00~20:00 )
前半は主に、「JAVA EEで何ができるのかということ」と「WEBアプリケーションって何かね」をしゃべってた。
- 前回の軽いあらすじ
- サーバーサイドテクノロジーとは?
- 動的コンテンツの仕組み
- JAVA EEに含まれるバージョン(servlet,jsp,ejb etc)
- JavaEEに含まれる仕様(その1)
- JavaEEに含まれる仕様(その2)
- DIの概要
- 永続化の概要
- トランザクションの概要
- クライアントの構成
- webサーバーの構成
■後半( 20:10~21:00 )
後半は主に、「HTTPって何かということ」と「HTTPリクエストからWEBサーバーは、それをどう処理してHTTPレスポンスを返すのか」
- HTTPとは
- HTTPメソッド
- GETメソッド
- POSTメソッド
- HTTPリクエストの構成
- HTTPレスポンスの構成
- HTTPメソッドの種類
- HTTPステータスコードの紹介
- Telnetコマンドを利用して、実際にHTTPリクエストをみてみる。
感想
日本 Java ユーザグループ・・・通称、JJUG(ジェイジャグ)
JJUGを僕はずっと読めなかったので、勉強になった。
一人で来ている人の方が圧倒的に多かったし、
別に周りの人と話す事もなく、
誰かを当てて話させるということもなかったので、
僕がやっていたのは、
講師の話を聞く
スライドをみて、メモを取る。という感じだったので、
非常に参加しやすいかと。
ましてや、JAVAを勉強するのが初めてな人が多かったので、
敷居が低かった。
( 年齢層はスーツの人が多かった。学生っぽい私服の人もぽつぽついました )
んで、勉強になった。笑
一言で今回の内容を言ってしまうとすれば、
サーバーサイドJavaってこんな技術(概要)を使っていて、
WEBサーバーってこんな感じで動いているのだよー。
って感じ。まさに、今回の勉強会の主旨通りでした。
telnetでhttpの中身は学生の授業の時に、やって楽しかった思い出を振り返りつつ、
既にある知識の確認と修正にすごく役立った。
POJOとEODについては新しくインプットできたし。
ただ、これだけの内容を2時間でやるものだから、
初めての人が理解するまでには至るのは難しいものだなと思った。
それなので、「この勉強会で知った言葉をメモをして、
自宅で調べる」ということは必要かも。
実際に、休憩中の時に、トイレに向かう人の中にこう発言している人がいたし。(知り合いときている人だった)
「DIって結局何?あれだけじゃわかなんないよ、もっと説明してほしいわ」
また、何かのイベントに参加してみやす。
まだまだ、今回みたいなセミナータイプを考えてますが。
今週の土曜日にでも、買収が完了したOracleBronzeのDBA受けてみやす。( 案外、むずい。 )
SQL基礎の方は既に受かったので、DBAを受けた後にでも、
気が向いたらエントリーするのだ。
あと、資格勉強だけでなく、またコーディングの方も再開したい。(新しい知識を学びつつ)
2010年1月の夢「msi u100 vogueというネットブックで、snow leopardをインストールした夢」
まず、このエントリーは「magic mouse」を随所に使いながら書いている。
つい先日、注文をしていたmagic mouseを入荷したという電話があり、
僕は荒くなった鼻息を抑えながら、magic mouseを買った。
スワイプの動きに僕は魅せられている。
って、本題。
簡単だが、msi u100vogueにsnow leopardインストールした夢のめも。
■使用したもの
・msi u100 vouge
確か保証含めて4万前後。
・外付けドライブ buffalo
7000円ぐらい。
http://buffalo.jp/products/catalog/storage/dvsm-p58u2_b/
・リテールDVD(ファミリーパック版)
5600円ぐらい。
・CD焼く用のパソコン
去年購入時でモニタ付きで7万円。
・たった一枚の空CD
一枚あたり50円とか?計算していない。
・ネットの情報。
プライスレス
以下のページのコメント欄参考
http://blog.goo.ne.jp/gooyuzo000/e/9381d212f029564faaf65e5be106aa1c#comment-list
■注意する事。
・試行錯誤しているので、おそらく説明する手順通りでいくとは限らない。
・夢を見た結果、windowsパーティションが消えた。
windowsを残す方法もあるっぽい。
・このメモは、あくまでも僕がみた夢物語
僕が好きな歌手は、いきものがかり。
韻を踏んでみた。
■手順
○ブートローダーCDを作成する。
http://osx.mechdrew.com/downloads/
「NetbookCD 0.8.3 RC4: ISO 」上記のページからダウンロードして、cdに焼く。
直リンク
http://osx.mechdrew.com/downloads/NetbookCD_0.8.3RC4.iso
○試行錯誤しながらのインストール作業
・作成したブートローダーCDを外付けのドライブにセットして、u100 vogueを再起動。
・windowsが起動する前に、F11を連打。外付けのドライブを選択して起動させる。
○すると、ブートローダーの画面が立ち上がる。
○立ち上がったら、ブートローダーCDとリテールCDを入れ替える。
○F5を押して、リテールCDを選択して、Enter。
( F5を押さないでリテールCDを選択すると、
can't find match kernel 的なメッセージが出て、
インストール画面まで進めない。僕はカーネルがないというだけに、
ケンタッキーまでフライドチキンを買いに行くところだった。
)
んで、なぜかmacのロゴにびっくりマークが・・・
これには、僕もびっくり。
しばらくして、強制終了して、
もう一度、F11を押しながらブートローダーの画面まで行き、
F5を押して、リテールCDを選択してEnter。
これを3回ぐらい繰り返したら、
なぜかびっくりマークが出現せず、インストール画面まで進めたのだ。
○インストール画面では通常のインストールと同じなので、
以下のサイトが参考になった。
http://netafull.net/macosx/031843.html
*)ここからちょっと苦労した・・・
画面の解像度が足りないので、押したいボタン(OKとか続ける)が押せないのだ。
それなので、tabキーを何回か押して、
押したいボタンだろうと思われるところで、
スペースキー(Enterキー代わりだった)を押す。
ということをやっていた。
んで、インストールする場所を決める画面で、
hddがmac用のフォーマットになっていなかったため、
僕はここでwindowsのパーティションを消して、
mac用にフォーマットし直した。
苦渋の選択だった。
進めていき、
インストールが開始されて、1時間ぐらいたったら、
macのインストールに失敗しました画面になる。
でも、これで成功。
割と、通常に使えている。
動作が重いというようなことも感じていない。
あとは、参考URLの通りにブートローダーをHDDに仕込む作業。
以下、抜粋
終了後、焼いたDVDをクリックをして『Tool』をクリック
するとNetbook installer0.8.3RC4がありますのでそちらを
入れて下さい。(ちょっとインストに時間がかかります。)
こ のままだと再起動後は焼いたDVDがないと
再起動しないので焼いたDVDをクリックをして『Extra』を
クリックをし て『Perboot.dmg』をひらくと『Extra』が
ありますのでその中の『10.6』をひらくと
『Extensions.mkext』 がありますのでこちらと元々のもの
と入れ替えると焼いたDVDなしで立ち上がります。
これで、インストールが出来た夢は終わり。
あとは、以下の設定をしましたが、
今日はこれでおしまい。気が向いたら、以下の設定も投稿する。
・解像度の設定
・インターネットの設定(僕はインストール後、インターネットがつながらなかった)
・キーボードの設定
駆け足で書いたから、これまた雑なエントリーになってしまったのだった。
mac mini と ディスプレイを買った。2009年の年末に。そして、SJC-Pの結果。
ほ、放置プレイになってしまった。
ごめんよ、it-tech-dmのブログ。
タイトル通りに、去年の年末にmac miniを買った。
macOSが欲しくなったのは、前からジョブズのアップル製品に興味を持っていたし、
HTML5の勉強会(同期と2人で参加)に行ってパネラーがみんなmacだったから踏ん切りがついた。
手持ちのRGBディスプレイで接続できなくて、
「でゅあるでぃすぷれい」も実現できるから、
ついでに、DVI-D対応のディスプレイ(三菱のRDT231WLM)も買った。
ついでに、年が明けてから、mac用の無線のキーボードも買った。
勢いで、magic mouseも注文した。在庫切れているけど、しっかり買えるのだろうか。気になって夜も眠れない。
実は、このエントリーもMACから投稿している。
このことを察することができるのは、ジョブズぐらいだろうか。
ーーーーーーーークリリン線(区切り線)ーーーーーー
時系列が前後するが、12月中旬のことで
SJC-P(310-065)に合格した。ギリギリの60%だが。。。
スペック
○プログラムレベル
DB連携の小規模なサイトをPHPで書ける。
Java暦は半年ぐらい。
思ったよりもずっと大変だった。
○勉強期間
みっちり、2ヶ月。1日8時間ぐらい。
勉強の際に使用した参考書。
1回だけ通して、勉強する。
下で紹介する本だけだと知識が、より資格仕様になるので、
この本で補完できた気がする。
http://www.amazon.co.jp/Sun-SJC-P%E8%AA%8D%E5%AE%9A%E3%82%AC%E3%82%A4%E3%83%89-310-055%E5%AF%BE%E5%BF%9C-Kathy-Sierra/dp/4822282775
勉強の際に使用した問題集
2周。結局、得意分野で90%、
苦手なジェネリクスとスレッドで50%〜60%
その他は70%の正答率で受けた。この問題集のおかげで受かった。
http://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5-Java2-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E5%95%8F%E9%A1%8C%E9%9B%86-Platform5-0-IT%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5/dp/4844323385/ref=sr_1_6?ie=UTF8&s=books&qid=1263221768&sr=1-6
また、気が向いたら書こう。
有力なネタは、
msi u100 vogueというネットブックで、snow leopardをインストールした夢をみたということかしら。
おやすみん
からまわーる
うむ、気合の使い方がうまくないので、
自分の時間(11月14日〜11月20日) でだいぶ空回った。
気合を入れると、興味の対象が増えてしまい、
あれこれ手を出して、結局中途半端に終わる。
加えて、時間がないから、焦ってしまう
学生の時だと、時間があるから気合が入っている中でも気持ちにいい意味でのゆとりがあり、
割と消化できていたのだが・・・
ちなみに、今年の8月もこんな感じで土日を過ごしていました。
というわけで、思い描いている時間をすごせず、
3連休は自暴自棄になり、最近映画化された「カイジ」を読んでいた。
11月も残り2週間。
1つのこと(SJC-Pの勉強) を基本に、すぐ消化できそうなことを2つ3つに抑えて、
重そうな興味は後回しにして、
こっから、人生の逆転や!
環境構築
memo
解凍したmavenのディレクト以下の「conf」ディレクトリにある、
settings.xmlでローカルリポジトリを設定できる。
参考URL
http://muimi.com/j/apache/maven/
プロジェクトを作成したい所で、以下のコマンドを打つ
mvn archetype:generate -DarchetypeCatalog=http://cubby.seasar.org/
例)C:\hwproject\workspace>mvn archetype:generate -DarchetypeCatalog=http://cubby.se
asar.org/
S2Daoを使用するために、「作成するプロジェクトのパッケージを入力」を求められる場面で、
「N」を選択
~~
package: test
Y: : N
Define value for java-target-version: 1.6: : 1.6;
Define value for cubby-version: 2.0.3: : 2.0.3
Define value for s2container-version: 2.4.40: : 2.4.40
Define value for s2dao-version: 1.0.50: : 1.0.50
Define value for use-s2dao: false: : true
Define value for use-s2jdbc: true: : false
Define value for use-oval: true: : true
Define value for groupId: : bar.foo
Define value for artifactId: : hw
Define value for version: 1.0-SNAPSHOT: : 1.0-SNAPSHOT
Define value for package: bar.foo: : bar.foo
Confirm properties configuration:
java-source-version: 1.6
java-target-version: 1.6;
cubby-version: 2.0.3
s2container-version: 2.4.40
s2dao-version: 1.0.50
use-s2dao: true
use-s2jdbc: false
use-oval: true
groupId: bar.foo
artifactId: hw
version: 1.0-SNAPSHOT
package: bar.foo
Y: : Y
C:\hwproject\workspace>mvn clean package -Pproduction
Tomcat起動
C:\hwproject\workspace>cd hw
C:\hwproject\workspace\hw>mvn tomcat:run
tomcatが起動すると、以下のURLでアクセスできる
http://localhost:8080/hw/
C:\hwproject\workspace\hw>mvn war:inplace
C:\hwproject\workspace\hw>mvn clean package -Pproduction
Eclipse開発用設定
C:\hwproject\workspace\hw>mvn eclipse:configure-workspace -Declipse.workspace="C:\hwproject\workspace"
C:\hwproject\workspace\hw>mvn eclipse:eclipse
プロジェクトを Eclipse のワークスペースへインポートします。
・Fileメニュー → Importを選択します。
・General → Existing Project Into Workspace を選択します。
・Select root directoryでプロジェクトのルートディレクトリを指定します。
・Finishを押します。
プロジェクトがインポートされます。
eclipseのプラグイン準備
更新サイト:http://eclipse.seasar.org/updates/3.2/
入れるプラグイン
windows -> Preferencesからtomcatの設定をする。
設定後、プロジェクトを右クリック -> Properties -> Tomcat
全般タブ
開発用のクラスローダーのクラスパスタブで以下の3つをチェック
プロジェクトを右クリック -> Tomcatプロジェクト -> コンテキスト定義を更新
雰囲気でしておく。
m2eclipse-lightのインストール。
更新サイト:http://eclipse.seasar.org/updates/3.3/
Ymirカテゴリの中からm2eclipse-light
プロジェクトを右クリック -> maven-light -> Enable Dependency Management
プロジェクトを右クリック -> Properties -> Java Build Path -> Librariesタブ
M2_REPOから始まっているものを「Remove」
C:\hwproject\workspace\hw\src\main\webapp\WEB-INF以下の「lib」「classes」の2つのフォルダを削除
JRE System Libratyを右クリックして、自分の環境に適した設定をする。
例)Execution enviroment:JavaSE-1.6
途中何度かEclipseの再起動とかしてます〜。
http://cubby.seasar.org/20x/s2container.html
http://cubby.seasar.org/20x/setup.html#%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90
http://cubby.seasar.org/
http://s2container.seasar.org/2.4/ja/setup.html
http://journal.mycom.co.jp/column/ide/042/index.html
以下、環境構築で出たエラー。
maven eclipse [INFO] User settings file does not exist
windows -> Preferences -> Maven-light -> Installations
UserSettingsの所から、mavenをインストールしたディレクトリのconfディレクトリ以下にある、
settings.xmlを設定する
フィルタ s2container の起動中の例外です
フィルタ cubby の起動中の例外です
フィルタ senderror の起動中の例外です
フィルタ hotdeploy の起動中の例外です
上記のエラーが出たら、以下のことをすると解決する。
pom.xmlからgeronimo-servletの記述を消す
HelloActionTest.javaが赤いバッテンつきます。
あぁ、普通のスタートになってしまったよ。
mavenを用いてcubbyの環境を整えるのにけっこう時間費やした。
いろいろと意識することが増えたから時間がかかったのも比較的前向きに捉えられるのだ。
そして、環境が整ったところで、ざっくりあぷりを今日作成した。
この前作ったRSSを基にして、cubbyへ適当に組み込んだ。
取得したRSSデータをs2daoでDBに登録して、
登録したやつを表示するまで。
このアプリの今後として、
・CRUDの質を上げる。
・RSSに対応していないサイトへのスクレイピング機能をつける。
などなどですな。
今週の土日には、
cubbyなどの環境構築とかを僕の備忘録として残しておこうと思う。
10月中までに、javaとseasarを理解したいところまで到達できていなかったため、
少々、気持ちを張り詰めて11月を過ごすっすよ。
CodeIgniterのチュートリアルをやってみた。
mavenちゃんの気分が優れないから、気分転換に久しぶりにPHPを組んでみた。
PHPのフレームワークの一つである「CodeIgniter」を触ってみたよ。
うん、軽い。いろんな意味で。
公式のサイトのチュートリアル( やっつけのブログです )に基づいて作成したソースをだらっとはっつけます。
僕もチュートリアルに負けじとやっつけなエントリーを書きます。
チュートリアル概要
DBを用いて簡易なブログを作成して、
ブログ毎にコメントを表示するアプリケーション
テーブルの作成 ( MySQL )
「ブログのエントリー用のテーブル」
create table entry(
id int not null auto_increment,
title varchar(128),
body text,
primary key(id)
);
「エントリーにひもづくコメントテーブル」
create table comments(
id int not null auto_increment,
entry_id int,
body text,
author varchar(100),
primary key(id)
);
テストデータを挿入
mysql> insert into entry values(1,'test title1','test body1');
mysql> insert into entry values(2,'test title2','test body2');
ここまで、DBの準備。
こっから、CodeIgniterの設定
データベース設定
/system/application/config/database.php
db['default']['hostname'] = "localhost";
$db['default']['username'] = "*****";
$db['default']['password'] = "+++++";
$db['default']['database'] = "-----";
$db['default']['dbdriver'] = "mysql";
コントローラ
/system/application/controllers/blog.php
<?php class Blog extends Controller { function Blog(){ parent::Controller(); //ヘルパの追加 $this->load->helper('url'); $this->load->helper('form'); } function index() { $data['title'] = "My Real Title"; $data['heading'] = "My Real Heading"; $data['query'] = $this->db->get('entry'); //select * from entry; $this->load->view('blog_view', $data); } function comments() { $data['title'] = "comment Title"; $data['heading'] = "comment Heading"; $this->db->where('entry_id',$this->uri->segment(3)); $data['query'] = $this->db->get('comments'); $this->load->view('comment_view', $data); } function comment_insert() { $this->db->insert('comments',$_POST); redirect('blog/comments/'.$_POST['entry_id']); } } ?>
ブログ一覧ページ
system/application/views/blog_view.php
<html> <head> <title><?php echo $title;?></title> </head> <body> <h1><?php echo $heading;?></h1> <table border=1> <tr> <th>タイトル</th> <th>内容</th> <th>コメント</th> </tr> <?php foreach($query->result() as $row): ?> <tr> <td><?=$row->title ?></td> <td><?=$row->body ?></td> <td><?=anchor('blog/comments/'.$row->id,'Comments'); ?></td> </tr> <?php endforeach; ?> </body> </html>
コメント表示ページ
system/application/views/comment_view.php
<html> <head> <title><?php echo $title;?></title> </head> <body> <h1><?php echo $heading;?></h1> <?php if ($query->num_rows() > 0 ): ?> <table border=1> <tr> <th>コメント人</th> <th>コメント</th> </tr> <?php foreach($query->result() as $row): ?> <tr> <td><?=$row->author ?></td> <td><?=$row->body ?></td> </tr> <?php endforeach; ?> <?php endif; ?> <p><?=anchor('blog','back to blog'); ?></p> <table border=1> <?=form_open('blog/comment_insert'); ?> <?=form_hidden('entry_id',$this->uri->segment(3)); ?> <tr> <td>コメント人</td><td><input type="text" name="author"></td> </tr> <tr> <td>コメントの内容</td> <td><textarea name="body" rows="10"></textarea></td> </tr> <tr> <td colspan="2"><input type="submit" value="こめんと"></td> </tr> </table> </body> </html>
さて、ちょっと休憩してmavenちゃんやります。
参考URL
http://codeigniter.com/tutorials/
$this->db->where('entry_id',$this->uri->segment(3));
http://codeigniter.jp/user_guide_ja/libraries/uri.html
$this->db->get('entry');
http://codeigniter.jp/user_guide_ja/database/active_record.html