goo blog サービス終了のお知らせ 

エンタープライズアプリケーション志向

成功は気づきと行動から生まれる。

大規模なシステム構築時のポイント

2008年02月27日 23時47分27秒 | IT
やっとmixiやモバゲーのような1日に何百万アクセスがあるサイトの
システムをどう構築するかが理解できてきた。

ポイントは3つ。
・Webサーバの負荷分散
・DBサーバの負荷分散
・サーバのハードウェア故障が起きた場合の対応

Webサーバはセッションの共有の問題があったけど、
セッションをDBに保存することで解決。
アップロードされたファイルも同様。バイナリ形式でDBに保存。

DBサーバはレプリケーションすると
マスタ、スレーブで分かれるが、
更新系クエリが1極集中してしまう問題があったけど、
マスタを分割することで解決。

ハードウェア故障が起きたサーバは
負荷分散で割り振る対象から外す。
しかも、割り振る対象をDBで管理しておけば、
外す時はUPDATE文一発。

しかし、まだWebアプリケーションのバージョンアップを
サイト自体は無停止で、ユーザに迷惑をかけることなく
行う方法がわからない…

レスポンスは落ちるけど、システムを半分に分割して、
一時的に片方のみにアクセスを許可して、
もう片方でバージョンアップをして、
その逆をやればできる…か?
単純にやるとDBのレプリケーションがうまくいかない気がする。

デスクトップの表示を自作

2007年05月22日 23時00分51秒 | IT
クイック起動に「デスクトップに表示」ってありますよね。
あれを削除してしまったとか、何らかの理由で作りたい場合の手順です。

1、メモ帳を開く
2、以下の内容をコピペ
[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop

3、名前を付けて保存。その際、拡張しは「scf」

これで完成です。
ダブルクリックすると「デスクトップの表示」と同じ動作をします。

役立つツール:エクスプローラのタブ化&Mac風ランチャー

2007年05月16日 22時29分54秒 | IT
役立つツールの紹介。
今回のテーマはデスクトップカスタマイズ。

1つ目。
エクスプローラのタブ化ツール:QT TabBar
※.NET framework2.0が必要

最近では、FireFox,IEがタブブラウザ機能を備えたので、
その使い勝手は皆さん、享受してると思います。
QT TabBarはこのタブをエクスプローラで行うもの。

仕事でPCを使うと、常時、フォルダを3つとか開いたりしますが、
そういう時にかなり便利ですよ。

使用するにはインストール後、エクスプローラを開いて
ツールバーで右クリックしてQT Tab Barにチェックを付けて下さい。

2つ目。
Mac風ランチャー:RocketDoc
WindowsでMac風のランチャーが使えるツール。
クイック起動を多用する人なら、けっこうハマるかも。

社内ブックマーク共有

2007年04月25日 20時49分43秒 | IT
今日はこの記事について。

みずほ情報総研、ブックマーク共有で「気づき」を共有

社内でブックマークを共有するものです。

インターネットで公開されているものでははてなブックマークがありますが、
これのイントラ版ですね。
誰しも、仕事上、技術情報を調べたり、ちょっと気になったサイトをブックマークすると思います。
つまり、この社員、一人一人のブックマークを集めて分析することで、
社員がどのようなことに興味があるかなど、傾向を調べることが出来ます。

自分以外の人がどういうサイトを見ているのか興味が沸きませんか?

社内ナレッジを推進するにあたって、良い手段だと思います。
ただ、ブックマーク共有の弱点は
人は興味があるからといって、全てのサイトをブックマークするわけではないということ。

むしろ、後で見ようと思ったサイトをブックマークするのではないでしょうか。

時間があれば、その場で見て終わり。

何度もみ返すサイトというのはそうそうあるものではありません。
それこそ、誰でも知ってるような規模の大きいサイトになります。

繰り返しになりますが、社内ナレッジを推進する一つの手段になりますね。

WikiとSNS、ブログ連携の形

2007年04月23日 21時59分56秒 | IT
WikiをSNS、ブログと連携する場合、
何をどのように連携するのか考えた(というかフと思った)

日記に書いてある文章中に
Wikiにあるページのタイトルと同じものがあったら、
それをWikiへのリンクに置換したらいいんじゃないだろうか。

実装方法としては
記事を作成した時にWikiページとの連携処理(置換処理)を行う。

ただし、Wikiページが膨大な場合、処理が激重になるので、
対象とするWikiページは「SNS、ブログと連携する」に
チェックを付けたものだけ連携すればいいのではないか。
※デフォルトはチェックなしで。
そうすれば、膨大な量の置換処理にはならなそう。

弱点は記事作成時には存在していたページが
後で削除されていたりすると、Not Foundになってしまうこと。

形としては自然な連携だと思います。

APOP(MD5)の暗号化破られる

2007年04月19日 22時42分18秒 | IT
メールパスワードを暗号化して送信する規格「APOP」の
暗号解読方法を電気通信大学の太田和夫教授(暗号理論)の研究グループが発見しました。

メールパスワード暗号化規格「APOP」 日本人によって破られる

APOPの暗号化にはMD5が利用されているらしいですが、
そのMD5から元のパスワードに復元する方法を発見したとか。

MD5は文字列を不可逆的に暗号化できる方法として
広く知られており、
OSSのソフトではDBにパスワードを格納する際に使われることがあります。
これはDBのデータを盗まれたとしても
パスワードがわからないようにするため。

MD5は何年か前にその暗号化強度の弱さを指摘されたり、
現在ではあまり使われていないとか(よくわかりませんが)
とにかく、当事者は要対策ということで。

・情報元
IPA
CodeZine
YOMIURI ONLINE

ネットで調べてみたら、以下の情報が。
http://japan.cnet.com/news/sec/story/0,2000056024,20070525,00.htm
どうやら、2004年に弱点が指摘されていて、
それで、使わないようにしようという流れになっているらしい。

それにしても、あまりニュースにはなってないので、
それほど問題ではないのかもしれない。

とりあえず、傍観しておく。

グループウェア - desknet's with AJAX

2007年04月18日 23時25分54秒 | IT
株式会社ネオジャパンのグループウェア製品に
desknet's with AJAXがあります。

このdesknet'sは
日経ソリューションビジネス2007年 第9回パートナー満足度調査 グループウエア部門」において、
2年連続第1位を獲得しており、優秀なグループウェアソフトのようです。

また、操作性を説明したこんなビデオも公開されています。
CNET JAPAN

機能については単純なスケジュール共有以外には
空き時間検索、施設予約、Webメール、インフォメーションなどがあります。

個人的にいいと感じた機能は
スケジュールを表示したカレンダー上で
ドラッグ&ドロップで日時を変更できるというもの。
スケジュールを調整する営業さんには便利な機能です。

また、ZimbraやScalixなどのOSSのWebメール&グループウェアにもあるが、
カレンダーに表示したスケジュールの枠をドラッグ&ドロップで伸ばすことで、
実施時間を調整できる機能があります。

AJAXの特徴を取り入れた良い機能なので、勉強になりました。

ごちそうさま(^人^)

ZDNetのビデオ

2007年04月16日 22時47分11秒 | IT
今日、初めてZDNetにビデオ配信のニュースがあることを知りました。

最近のOSS動向や、仮想化、英語のニュースの読み方などのビデオがあります。

文章とは違い、ビデオなので、TVのように見ているだけでいいので
負担が少ないです。
それに話者が身振り手振り、ホワイトボードを使って説明してくれるので、
文章よりも理解し易い。

しかし、文章とは違い、全てを見ないと
全体を理解できないし、適切に読み飛ばすことが出来ないことが弱点。

まだ実験段階なのか、量が少ないようですが、
気軽に見れるので、今後も続いていって欲しいサービスです。

調べてはいませんが、Podcastでも配信すればいいんじゃないでしょうか。

平成19年度テクニカルエンジニア(データベース)受験

2007年04月14日 22時36分59秒 | IT
今日は情報処理のテクニカルエンジニア(データベース)を受験してきました。

結果は…惨敗。

基本情報は午前が通れば、午後もまぁ、だいたい通るというものなんですが、
データベースはまったく別物で、
午前は出来て当たり前、
午後1、午後2がホントの試験です。

特に午後1が鬼門。

試験前は論述の午後2が難しいと思ってましたが、
大問1を解くのに2時間与えられるので、
頭を悩ましながらも、とりあえず解答欄を埋めることが出来ました。
(当たっているかどうかはおいといて)

問題は午後1です。

こちらは大問4問中3問解くのですが、
大問1につき、与えられた時間はたったの30分。

全ての大問はそれぞれに3,4ページの問題文が与えられて
問題数が5,6個あります。

私は1問目でつまずき、やっと回答欄を埋めたと思ったら
既に30分が経過していました…

「これはもう無理だ…」

心が折れました。

午後1は時間との戦いです。

今回、当然、過去問を解いて試験に挑みましたが、
午後1が過去問の傾向とはだいず異なった出題形式だったと感じました。
そのせいで、ほとんど出来ませんでしたよ。えぇ。
来年こそは!

また、午後1、午後2の長文は当然、日本語で書いてあるのですが、
読んでも簡単には意味が頭に入ってきませんでした。
ひたすら業務要件が書いてあるので、それを全て理解して
その上で、問題を解かなければなりません。

実業務で要件定義からのDB設定をやったことのある人でないと
すぐには理解出来ないと思います。

業務知識がないとキツイ、
さらに経験もないと合格は難しいように感じました。

蛇足ですが、
基本情報とは違い、難関の資格ですので、
受験申し込みしたけど、当日来ないなんて人はほとんどいないんだろう
なんて思ってましたが、
違いました…

3分の2程度しか席は埋まってなかったので、
あまり、その辺の事情は変わらないようです。

nusoapを使ってSOAPで通信してみよう!

2007年04月12日 01時11分11秒 | IT
WEBサービスを使うために必須のSOAPというものがあります。

SOAPを簡単に使えるためのライブラリにnusoapというものがありますので
これを使って、SOAPで通信させる基本を説明します。

※注意
言語はPHPです。
エンコーディング文字などは全てUTF-8にしてください。
Apacheの環境があることが前提。

■1、nusoapを入手(ちょっと編集もする)
まずは、以下のnusoapの配布元からnusoapをダウンロード。
Dietrich Ayala

わかるとは思いますが、Download NuSOAPのリンクをクリックして
DLページからDLして下さい。

DLして解凍すると、lib,sampleというフォルダが作成されます。
※sampleを熟読すれば、使い方がよくわかると思います。

libフォルダにあるnusoap.phpを編集します。
ファイル内を「ISO-8859-1」で検索してヒットした箇所を全てUTF-8に書き換えて下さい。

ただし、以下の箇所は除きます。
1、コメント文
2、if(eregi('^(ISO-8859-1|US-ASCII|UTF-8)$',$enc)){

■2、サーバ、クライアント用のスクリプトファイルを作成する
SOAP通信させるためには通信先で実行される関数を作る必要があります。
つまり、サーバ側に関数を定義します。

次は、それを利用する側、つまり、クライアント側で
どのようにSOAPで定義した関数を利用するかを
スクリプトを記述する必要があります。

まとめると、サーバとクライアントで2つPHPファイルを作成する必要があります。

以下、具体的な内容です。

・サーバ側スクリプト(soap_server.php)
define("SERVICE_NAME", "TestService");
define("NAME_SPACE", "urn:TestService");
define("SOAP_ACTION", NAME_SPACE. "test");

/* SOAPライブラリの読み込み */
require_once 'nusoap/nusoap.php';

$server = new soap_server;
$server->configureWSDL(SERVICE_NAME, NAME_SPACE);
$server->wsdl->schemaTargetNamespace = NAME_SPACE;

//サービスの登録
$server->register('doEcho',
  array('string' => 'xsd:string'),
  array('return' => 'xsd:string'),
  NAME_SPACE
);

//WEBサービスとして提供するメソッドの定義
function doEcho($string)
{
  return "From Web Service: ".$string;
}

$HTTP_RAW_POST_DATA = (!isset($HTTP_RAW_POST_DATA))? $GLOBALS['HTTP_RAW_POST_DATA'] : $HTTP_RAW_POST_DATA;
$server->service($HTTP_RAW_POST_DATA);
?>

・クライアント側(soap_client.php)
/* 定数の宣言 */
define("WSDL_FILE", 'http://localhost/soap/soap_server.php');

/* SOAPライブラリの読み込み */
require_once 'nusoap/nusoap.php';

$client = new nusoapclient(WSDL_FILE, true);

//WEBサービスの実行結果をUTF-8でデコードするかどうかのフラグをセット
//今回はUTF-8の文字を、そのままUTF-8で通信するので、無効にする。
//trueにすると文字化けします。
$s->decodeUTF8(false);

$string = "WEBサービス実行!";

//SOAPにより、WEBサービスを実行
$result = $client->call("doEcho",$string );

//WEBサービスの実行結果を出力
if($client->getError()){
  echo "ERROR: ". $client->getError();
}else{
  echo "Result: ". $result;
}
?>

■3、実行!
作成したPHPとnusoapフォルダをApacheのhtdocs以下のように配置して下さい。

htdocs/soap/nusoap
htdocs/soap/soap_client.php
htdocs/soap/soap_server.php

後はブラウザから以下のURLにアクセスすればOK。
http://localhost/soap/soap_client.php

日本語も通ることがこれで確認できましたね。

■ライセンス
さて、最後に気になるのがnusoapのライセンスです。
このライセンスはLGPLというもので、緩いライセンスです。
改変&配布は自由で、改変しても公開の義務はありません(企業に優しい!)


後は、お好きにどうぞ!