2009年10月24日土曜日

Apache Wicket

Apache WicketはJavaのWebアプリケーションフレームワークの一つです。JavaのWepAppフレームワークといったらStrutsなんかが有名ですが、従来のWebアプリケーション開発と違うところは

1. JSPを書かない
2. GET、POSTを気にしなくてよい
3. awt、swingのように開発できる

という所ですね。JSPを書かなくてよいということは、MVCモデルのViewはWebデザイナーが、ModelとControllはプログラマがという形で分離できるというところですかね。登場したのが2005年6月らしい。たまたまCodezineのJavaで軽快に使える「軽量フレームワーク」特集~Apache Wicketで簡単Webアプリ作成(1)で紹介されていたので遊んでみましたが、なかなか使いやすいですね!

「GET、POSTを知らなくても実装できる」となっていますが、通信量とその処理パフォーマンスの関係は知っておきたいかな・・・あとはこいつのセッション管理はどーすんだろう(;・∀・)

いろいろ調べてると、Eclipseプラグインとして「Wicket Bench」というのがあるらしいので、今度はそれを使っていじってみますかねぇ

※このサイトが不親切なのか、俺が無知なのかよく分からないけど、コードを書いた後に実際に動かすためには、プロジェクト名を右クリックして、「実行」→「サーバで実行」を選択し、「サーバーの選択方法」では「手動で新規サーバーを定義」にし、「サーバーのタイプを選択」では、「基本」→「J2EE プレビュー」で動きますよ

2009年10月17日土曜日

MCP(マイクロソフト認定プログラム)まとめ

科目が多い上に、資格習得のためには下位ランクの必須科目も取らないといけなかったり、なんだかややこしいのでまとめてみた。

①MCPとは
マイクロソフト認定プログラムの略。マイクロソフト関連技術の資格の総称

②資格概要
表:資格マップ
MCITP(マイクロソフト認定ITプロフェッショナル)MCPD(マイクロソフト認定プロフェッショナルデベロッパー)
MCTS(マイクロソフト認定テクノロジースペシャリスト)

・MCTSが土台というか基本の位置づけで、上位としてMCITP、MCPDがある。
・1つの資格に対して、試験を1つ2つ受けて合格する必要がある。
・MCITPとMCPDで資格を取得したいときはMCTSで該当する資格を取得しておく必要がある。

③MCTSの科目(興味あるやつだけ)
資格必須試験の番号必須試験の名前
.NET Framework 3.5 Windows フォーム アプリケーション70-536.NET Framework 2.0 - Application Development Foundation
70-505.NET Framework 3.5 - Windows Forms Applicatioin Development
.NET Framework 3.5 Windows ADO.NET アプリケーション70-536.NET Framework 2.0 - Application Development Foundation
70-561.NET Framework 3.5 - ADO.NET Application Development
.NET Framework 3.5 ASP.NET アプリケーション70-536.NET Framework 2.0 - Application Development Foundation
70-562.NET Framework 3.5 - ASP.NET Application Development
.NET Framework 2.0 Windows アプリケーション70-536.NET Framework 2.0 - Application Development Foundation
70-526.NET Framework 2.0 - Windows-Based Client Development
.NET Framework 2.0 Web アプリケーション70-536.NET Framework 2.0 - Application Development Foundation
70-528.NET Framework 2.0 - Web-based Client Development
.NET Framework 2.0 分散アプリケーション70-536.NET Framework 2.0 - Application Development Foundation
70-529.NET Framework 2.0 - Distributed Application Development

70-536は必須なわけね

※その他は
こちら

2009年10月12日月曜日

[JavaScript] JavaScriptで気をつけるべきこと

・ブロックレベルのスコープが存在しない

if (何かしらの条件) {
var i = 5;
}
document.writeln(i);
C++やjavaなら、if文の中で宣言されている変数はその中でしか使用できないが、JavaScriptはブロックレベルのスコープが無いので、上の例のようにif分の外でも参照できるんだそうです


・関数のスコープ処理の違いについて
JavaScriptでは関数の定義の仕方が3種類(通常のfunction文、Functionコンストラクタ、匿名関数)あるんですが、どうもスコープの処理が違うらしい

var scope = '外のスコープ';

function checkScope() {
var scope = '内のスコープ';

function normalFunc() { return scope; } // (1)
var anonymousFunc = function() { return scope; }; // (2)
var constructFunc = new Function('return scope'); // (3)

document.writeln(normalFunc()); // (1)を実行して表示
document.writeln(anonymousFunc()); // (2)を実行して表示
document.writeln(constructFunc()); // (3)を実行して表示
}

checkScope();

まず外側に「外のスコープ」を表す変数scopeがあり、更にcheckScope関数の中に「内のスコープ」を表す変数scopeがあります。更に中では通常の関数(1)と、匿名関数(2)、Functionコンストラクタ(3)をそれぞれ定義してます。ただ単にscopeの中身を返すだけです。その後にそれぞれ画面に表示させて見ます。すると、(1)と(2)は「内のスコープ」が表示されましたが、(3)だけ「外のスコープ」と表示されました。

理由はFunctionコンストラクタでは「グローバルオブジェクトからなるスコープチェーンを引き渡す」という仕様で、ようは一番外側のグローバルオブジェクト関連の情報が渡されて、その中にあるscopeを表示するという流れだということです

このコードを書いてて気づいたんですが、関数の中に関数を定義できるんですね。JavaScriptは関数もデータ型として扱ってるからかなぁ

2009年10月4日日曜日

Google Chromeでローカルのファイルをオープンする方法

Google Chromeの上で、「ctrlキー」+「Oキー」を同時に押せば、「ファイルを開く」ダイアログが出てくるので、あとはオープンしたいファイルを選択すればおk

[JavaScript] getYear()とgetFullYear()

JavaScriptの本を参考に勉強してるところですが、時間処理でいきなり「getFullYear()」という関数が出てきまして、「ただ単に年を取得したいのならgetYear()だよなぁ」と思って調べてみると、getFullYearもgetYearも存在するんですね。


var dat = new Date(2009, 9, 4, 16, 33, 00, 000);
document.writeln(dat.getYear());
document.writeln(dat.getFullYear());


どんな結果が返ってくるのだろうと思い、上のようなコードを書きました(インスタンスは2009年10月4日16時33分00秒の000msecです)。getFullYear()の方は、データインスタンスに入ってる年(上の例で言うなら2009)が返されるのですが、getYear()の方はブラウザによって出力結果がまちまちです。

ブラウザ出力結果
InternetExplorer 82009
FireFox 3.0109
FireFox 3.5109
Google Chrome 3.0109

getYear()の定義としては、「1900年からの差分を取得する」だそうですが、IEだけ「データインスタンスに入ってる年を取得する」として定義してるんですね

2009年10月3日土曜日

test2

タイトルをtwitterへ通知するためのテスト

このブログの更新をtwitterに通知してみる

せっかくだから?このブログを更新した際にtwitterに通知して、フォローしている人達に見てもらおう

1. http://twitterfeed.com/へアクセス


2. 「Sign In with OpenID」をクリックして、自分が普段使ってるID(OpenID)を選択

 基本的にはGoogleのアカウントやYahoo!のアカウントが使えるので、普段そのサイトを利用している人は新規発行しなくても使えるはず
 Bloggerのアカウント(ていうか、Googleのアカウントだけど)も使えるので、 僕はこれにしてみました。


3. 前述の2.で選んだアカウントの入力画面が現れるので、ユーザ名とパスワードを入力

 Bloggerを選んだ人はブログのトップのURLを入れる。
 僕のブログのURLはhttp://kawara-tan.blogspot.com/なので、それを入力しました。


4. 「Step 1: Create new feed to」で、「twitter」を選択


5. その右にある「Connect your feed to your Twitter Account」でTwitterアカウントを自動的に取得


6. 「Step 2: Give your feed a name and add the URL」で「Feed Name」と「RSS Feed URL」を入力

 「Feed Name」はただ単にこのフィードの名前をテキトーに決めて入力すればおkで、「RSS Feed URL」はBloggerの場合は以下のようになる。

 http://kawara-tan.blogspot.com/feeds/posts/default?alt=rss

 ようは、ブログトップのURLに「feeds/posts/default?alt=rss」を追記した形ですね。その後に右側の「test rss feed」を押せばURLが正しいかどうかをチェックしてくれる。


7. 細かい設定をしたければ「Advanced Settings」を押して、適当に設定


8. 「Create Feed」ボタンをクリックして完成


これでtwitterfeedが設定した時間になったら(デフォルトでは1時間おき)ブログを見に行き、タイトルと内容?をtwitterでつぶやいてくれます(・∀・)

参考URL
twitterに自分のブログの更新情報を流す方法・・・ http://mitaimon.cocolog-nifty.com/blog/2007/05/twitter_17d4.html

用語解説

JSEclipseを導入する

あまりJavaScriptに詳しくないので勉強しとこうと思いまして、まずは環境構築から始めました。
とりあえず、Adobeが出してるJSEclipseを入れてみました。

IDE : Eclipse 3.5 Galileo
プラグイン : Adobe JSEclipse 1.5.5


1. Eclipseを起動して、「ヘルプ」→「新規ソフトウェアのインストール」をクリックしていき、
 「作業対象」のテキストボックスに以下のURLを入れる。

 http://download.macromedia.com/pub/labs/jseclipse/autoinstall

2. リストに現れた「AJAX」にチェックし、「次へ」ボタンを押す。
 ※ネットで調べると、どうもこのリストに出てくる名前が違ったりする…

3. その後は「次へ」を押したり、ライセンスに同意したり、「終了」ボタンを押せばインストールが始まる。

意外と簡単でした(・∀・)

この後はいよいよEclipseでコーディング