2011年6月30日木曜日

sedコマンドを使う

シェルを使って、sqlファイルのある行を削除することをしました。

具体的に何がしたかったのか、というと
$ cat hogehoge.sql

@@atypes_2.1.0-2.2.0.sql                      
@@atypes_2.2.0-2.3.0.sql
@@atypes_2.3.0-2.4.0.sql
@@atypes_2.4.0-2.5.0.sql
@@atypes_2.5.0-2.6.0.sql
@@atypes_2.6.0-3.0.0.sql
@@atypes_3.0.0-3.0.1.sql
EXIT


上のデータを持つhogehoge.sqlに、2.4.5の引数を与えると、繰り下げをした値より小さい値(ex. 2.3.8)が含まれているデータの行を削除して、下記の出力をするシェルを書く必要がありました。

$ cat hogehoge.sql

@@atypes_2.4.0-2.5.0.sql                    
@@atypes_2.5.0-2.6.0.sql
@@atypes_2.6.0-3.0.0.sql
@@atypes_3.0.0-3.0.1.sql
EXIT

これは、awkとsedを使って実現することができます。
そのときのコードです。( \ はエスケープを表しています。Windows系だと、¥に相当することに注意しください)



sql_edit.sh
P_VER=$1

P_NUM=`echo ${P_VER} | sed -e 's/\(.\)\.\(.\)\.\(.\)/\1\2\3/'`

while :
do
ATYPES=`awk 'NR==1' /Users/Taichi/perl_data/sh_sample/hogehoge.sql`                  
ATYPES_NUM=`echo ${ATYPES} | sed -e 's/@@atypes_.\..\..-\(.\).\(.\)\.\(.\)\.sql/\1\2\3/' `                          
if [ ${P_NUM} -lt ${ATYPES_NUM} ];then
        break
fi
sed -i -e '1d' /Users/Taichi/perl_data/sh_sample/hogehoge.sql
done


実行してみます。
$ ./sql_edit.sh 2.5.1
$ cat hogehoge.sql

@@atypes_2.5.0-2.6.0.sql                          
@@atypes_2.6.0-3.0.0.sql
@@atypes_3.0.0-3.0.1.sql
EXIT


■解説
1.
P_NUM=`echo ${P_VER} | sed -e 's/\(.\)\.\(.\)\.\(.\)/\1\2\3/'`
引数として与えた "2.5.1" からコロンを抜いて "251" を P_NUMに与えています。

sedで、特定の文字列を抜き出すことができます。
echo '置換したい文字' | 'sed -e 's/置換条件/置換文字/'
置換条件で、"\(" と "\)" でくくられた文字列が置き換え文字として、順番に \1, \2, ... に代入されます

参考)http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231161/


2. while の中で if条件を使う
while [ 条件 ]
do
if [ 条件 ];then
        break
fi
done

上記のように、指定します。
実際のコードでwhileの隣にある “:” は常に真になるため、breakを指定しなければ無限ループするので気をつけましょう。

参考)http://shellscript.sunone.me/while.html


3. ATYPES=`awk 'NR==1' /Users/Taichi/perl_data/sh_sample/hogehoge.sql`
hogehoge.sqlの1行目のデータを抽出して、ATYPESに渡しています。

# ファイルのある行のデータを抜き取る
awk ‘NR== (行目) ’ ファイル名

参考)http://uguisu.skr.jp/Windows/awk.html


4. 条件分岐
if [ ${P_NUM} -lt ${ATYPES_NUM} ];then
        break
fi

比較の演算子がなかなか覚えられない・・・
-lt (より小さい)
-le (以下)
-eq (等しい)
-gt (より大きい)
-ge (以上)
-ne (等しくない)

参考)http://akitosblog.seesaa.net/article/186865411.html


5. sed -i -e '1d' /Users/Taichi/perl_data/sh_sample/hogehoge.sql
hogehoge.sqlの1行目を削除して、上書きしています。

# 単一行の削除
sed -i -e '行番号d' ファイル名

参考)http://shellscript.sunone.me/filter_sed.html

2011年6月29日水曜日

CGIを使う

CGI (Common Gateway Interface) とは、ApacheといったWebサーバが特定のプログラムを実行して、出力結果をユーザに返す、ものです。
CGIを利用することで、動的なコンテンツを作成することができます。
Perl・PHP・Rubyなどの言語がよく使われています。


■CGIを利用するための設定(Apache)
Apacheの設定ファイルの編集で、CGIを使えるようになります。

httpd.confに赤字の部分を追加しましょう。

# CGIプログラムを置くディレクトリ
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
# CGIの実行を許可
<Directory "/var/www/cgi-bin">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
# 拡張子 .cgi と .pl をCGIのファイルとする
AddHandler cgi-script .cgi .pl

これでCGIを使えるようになりました。

ホスト名:hoge.com
構成ディレクトリ:/var/www/cgi-bin/test.cgi
クライアント側からtest.cgi には、下記のURLでアクセスできます。
http://hoge.com/cgi-bin/test.cgi

*スクリプトをCGIとして実行するためには、CGIファイルにchmodコマンドで権限を与える必要があります。


■ユーザディレクトリでCGIを使う
/var/www/cgi-bin/ のデフォルトの所有者はrootユーザになります。
FTPやSSHでrootユーザでのログインが推奨されていないことを考えると、ユーザのホームディレクトリにCGIスクリプトを置いて、Webから実行できる仕組みにしておくと便利です。
Apacheの設定ファイルで実現できます。

① httpd.confに赤字を追加しましょう。
ScriptAliasMatch ^/~([a-zA-Z0-9_-]+)/cgi-bin/(.*) /home/$1/cgi-bin/$2
<Directory /home/*/cgi/>
Options +ExecCGI
</Directory>

② ディレクトリを作成します。
例) # mkdir /home/shindo_t/cgi-bin

③ディレクトリにアクセス権の設定をします。
例) # chmod 701 /home/shindo_t/cgi-bin

ホスト名:hoge.com
構成ディレクトリ:/home/shindo_t/cgi-bin/test.cgi
クライアント側からtest.cgiには、下記のURLでアクセスできます。
http://hoge.com/~shindo_t/cgi-bin/test.cgi

ユーザごとの公開ディレクトリを作りたい

前回、DocumentRoot以外のディレクトリを公開したい を紹介しましたが、別の方法で公開用ディレクトリを作成することもできます。
サーバを管理していく上で、ユーザの数が増えてきたとき、公開用ファイルが1つだけ、というのは現実的でありません。
各々ユーザに公開用ファイルを配置するディレクトリを用意します。

具体例
ホスト名:hoge.com
ユーザ:shindo_t

手順
① httpd.confの設定に赤字を追加します。
(ユーザshindo_t にだけ公開用ディレクトリを用意する場合)
UserDir disabled
UserDir enabled shindo_t
UserDir public_html

② ディレクトリを作成
[shindo_t@hoge ~]$ mkdir ~/public_html

③ 権限の設定
[shindo_t@hoge ~]$ chmod 701 ~/public_html

これで完成です。
shindo_t ホームディレクトリにある pubilc_html/test.html にアクセスしたいときは、下記のURLを入力します。
http://hoge.com/~shindo_t/test.html


*あるユーザ(yamada_t)だけ公開ディレクトリを禁止することもできます。
上記の手順①で、下記の設定とすれば良いです。
UserDir enabled
UserDir disabled yamada_t
UserDir public_html

*各々環境
Linuxでは、公開ファイルは、public_htmlがデフォルトであることが多いです。
Windowsでは、My Documents¥My Website がデフォルトであることが多いです。
Windowsだと、②の作業はExploreで新規フォルダ "My Website" を作成すればよいです。③は必要ないです。

2011年6月28日火曜日

『面白くて眠れなくなる数学』桜井進

題名に魅かれて買いました。
著者は、僕の通う大学の卒業生です。OBの著書を読むのは、なぜか緊張します。

PastedGraphic1-2011-06-28-22-31.jpg

内容は、数学の歴史・数学者・名言を引用して数学の面白いトピックを紹介する、といったものです。
文系のかたが抵抗なく読める内容です。
著者は、これをきっかけに数学に興味を持つ人が増えることを期待しているのでしょう。


“無理数”に関して、とても面白かったので紹介します。
今でこそ、πや√2 は割り切れない数(無理数)であることが知られています。
しかし、この無理数を理解することは、非常に困難でした。
円周率πが無理数であることが証明されたのは1761年になってからのことでした。

なぜか?
無理数は、受け入れがたい存在だったからです。

古代ギリシャの数学者ピタゴラスは、「万物の根源は数なり」と言いました。
この数は、自然数のことです。ピタゴラスの時代、自然数こそが計算できる数、「理性の象徴」というべき存在と捉えられていました。
そうでない数は「非理性的」とまで言われ排除されるべき存在だったのです。
(古代ギリシャで、√2 が無理数であることを証明したヒッパソスは、神の手により海で溺れて命を失ったという逸話も残っているほどです)

円周率πは、長い間、22/7 といった分数で表されていました。
(7月22日は、円周率の日と言われる所以です。)
今からおよそ400年前、小数点が発明されたことで、ようやく分数を超えて無理数への挑戦が始まり、円周率が無理数であることを発見するに至ったわけです。

ほとんど全ての実数が無理数であるにも関わらず、無理数が扱われるようになったのはつい最近である、というのは非常に興味深いことです。


最後に著書に書かれている、僕が気に入った名言でくくりたいと思います。
数学を知らない者には、本当の深い自然の美しさをとらえることはむずかしい(ファインマン)”

DocumentRoot以外のディレクトリを公開したい

DocumentRootの下にあるコンテンツを、Webサーバーは公開します。
DocumentRoot以下にHTMLファイルをおく

しかし、DocumentRoot以外のディレクトリを公開したい場合もあります。
そのための機能が、Aliasです。

例えば、linuxの場合、/var/www/html のディレクトリは所有者がrootユーザであることがほとんどです。
FTPやSSHを使ったファイル転送の場合、rootユーザが禁止されていることを考えれば、/home/ 以下のディレクトリを公開しておく方が都合の良いこともあります。

具体的に
DocumentRoot:/var/www/html/
公開したいディレクトリ:/home/shindo_t/html_file/

httpd.confのファイル内に下記の赤字を追加します。
Alias /hogehoge/ “/home/shindo_t/html_file/“

公開されるWebページのURLは下記の通りです。
http:// (ホスト名) /hogehoge/ (/home/shindo_t/html_file/ を省略した、それ以下の相対パス)


上記の設定をした場合
ホスト名:host.com
公開したいファイル:/home/shindo_t/html_file/huga.html

公開されるWebページのURLは、下記の通りです。
http://host.com/hogehoge/huga.html


パーミッションエラーと出たら、chmodコマンドで権限を与えましょう。

DocumentRoot以下にHTMLファイルをおく

Webページに使うHTMLファイルは、Webサーバの特定のディレクトリに置きます。
Webページのファイルを置くルートディレクトリの場所をDocumentRootと呼びます。
DocumentRootに置かれたファイルはWebページとして公開されます。

Apacheの基本設定で、DocumentRootを指定することができます。
例えば linuxで、/var/www/html をDocumentRootに指定する場合、

[root@lovemoe conf]# vi httpd.conf

httpd.confのファイル内に赤字の1行を指定します。
DocumentRoot "/var/www/html"

httpd.confの設定を反映させるため、Apacheを再起動します。
[root@lovemoe conf]# service httpd restart



具体的に例を挙げると、
ホスト名:hoge.com
ディレクトリ構成:
/var/www/html
                 |- index.html
                 |- html_file
                          |- hoge.html

DocumentRootは、/var/www/htmlで指定しているので、公開されるWebページのURLは下記になります。
http://hoge.com/index.html
http://hoge.com/html_file/hoge.html


公開されるWebページのURLは、下記の通りです。
http:// (ホスト名) / (DocumentRootを省略した、それ以下の相対パス)

2011年6月27日月曜日

LAN内で、DNSに登録したサーバにアクセスする

自宅の無線LANで、サーバを構築するとき、誰しもがつまづくところだと思います。

サーバをDNS登録したことだし、手元にあるPCから、そのサーバにホスト名でアクセスしてみるか。
あれ?おかしいな? IPアドレスだとアクセスできるのに、ホスト名でアクセスできない?
ルータの管理画面が開く・・・。

そんなときは、サーバーのIPアドレスとホスト名を対応づければ良いのです。

クライアントのhostsファイルで設定します。(サーバ側ではないです)
環境によってhostsファイルの場所は違いますが、下記を参考にしてみてください。
Linux・Unixでは、/etc/hosts
Windowsでは、c:¥WINDOWS¥System32¥drivers¥etc

アクセスするサーバの情報
サーバーのIPアドレス:192.168.11.4
サーバーのホスト名:hoge.co.jp

hostsファイル (赤字の1行を追加してください)
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.                                                
##
127.0.0.1 localhost
255.255.255.255 broadcasthost

192.168.11.4 hoge.co.jp

これで、手元にあるPC(クライアント)からサーバにホスト名でアクセスできます。

Cookieを利用して訪問数とユーザ名を取得

前回、Cookieを利用して訪問数を表示 で、訪問数のデータをCookieを利用して表示しました。
今回は、訪問数+ユーザ情報をCookieを利用して表示するページを作ってみました。

ここでのユーザ情報は、クライアント側で入力したユーザの名前とします。
Cookieを利用して、訪問数+ユーザ情報を表示

コードです。

<html>
<head>
<meta http-equiv="content-type" content="text/html;                         
                charset=UTF-8"
/>
<title>Cookie Test</title>
<script type="text/javascript">
<!--
function getCookie(key){
        var tmp1 = document.cookie + ";";
        var index1 = tmp1.indexOf(key, 0);
        if(tmp1 != -1){
                tmp1 = tmp1.substring(index1, tmp1.length);
                var index2 = tmp1.indexOf("=", 0) + 1;
                var index3 = tmp1.indexOf(";", index2);
                return unescape(tmp1.substring(index2, index3));
        }
        return ("");
}

function setCookie(key, val){
        var tmp1 = key + "=" + escape(val) + "; ";
        document.cookie = tmp1;
}

var access1 = getCookie("Access");
if(access1 == ""){
        access1 = 0;
}

document.write("<h2>訪問回数</h2>");

var name = getCookie("Name");
if(name == ""){
        inputName();
}

setCookie("Access", ++access1);
setCookie("Name", name);

document.write(name + "さん、" + access1 + " 回目の訪問です");

function inputName(){
        name = prompt("名前を入力してください", "user");
        if(name == null){
                inputName()
        }
}

//-->
</script>
</head>
</html>


前回の Cookieを利用して訪問数を表示 を利用して複数のデータが持てるように書き換えただけです。

2011年6月25日土曜日

『タクシードライバー』マーティン・スコセッシ 監督

1976年公開のアメリカ映画。
主演はロバート・デ・ニーロ。第26回カンヌ国際映画祭パルム・ドール受賞作品。

PastedGraphic-2011-06-25-23-08.jpg


■あらすじ
ベトナム戦争から帰国した元海兵隊員のトラヴィス(ロバート・デ・ニーロ)は、仕事を探し、タクシードライバーに就職。何となく働く彼の心の中で、社会に対する怒りやいらだちが募ってきていた。

そんなある日、次期大統領候補者バランタインの選挙事務所で働く女性ベッツィーに一目惚れ。
しかし、事が上手く運ばず、ベッツィに嫌われることになる。
さらに追い打ちをかけるかのように、幼い売春婦アイリスの不満を耳にすることになる。

そして、トラヴィスは決心する。

まず、次期大統領候補者バランタインの射殺を試みたものの失敗に終わる。
その夜、幼い売春婦アイリスをかこうスポーツを射殺。アイリスの客も立て続けに射殺。

本来ならば、狂気の殺人者として扱われるはずが、アイリスを売春婦から救ったとして英雄扱いされ、この映画は幕を閉じる。


■気になったこと
*ベトナムから帰国した兵士は、英雄扱いされるどころか、社会復帰すらできない?
『タクシードライバー』のシーンの一つに、ベトナム帰還兵トラヴィスが、職業斡旋所で職を探している場面があります。
職業斡旋所で職を探さなければならないほど、アメリカは不景気だったのでしょうか。
背景として、ベトナム戦争帰還兵が祖国で冷たく扱われていた、ということがあります。

ベトナム戦争は、アメリカ社会を大きく変えてしまったことを念頭に置いておかなければなりません。
ベトナム戦争は、戦場の映像がテレビを通して伝えられた戦争でもありました。
報道の自由を重視するアメリカ軍は、報道陣の同行を許可し、あらゆる便宜をはかっています。
その結果、アメリカ軍の残虐な行為、アメリカ軍の若者の死体も全てがテレビに映し出されることになりました。
これが、アメリカ国民にベトナム戦争への懐疑心をかきたてることになったのです。
(後に、アメリカ軍は戦場をメディアに報道されないように規制しています)

帰還兵が冷たく扱われた原因はそこにあります。
アメリカ兵の残虐な行為を、テレビを通じてアメリカ国民に伝えられました。
ベトナム帰りというだけで、「お前もベトナムで残虐行為をしていたんだろ」と疑われ、再就職が困難だった若者が数多くいます。

ベトナム戦争は、アメリカ社会に後遺症をもたらしたのです。



*どうして殺人を犯したトラヴィスが英雄として扱われたの?
ここに、陪審と報道における問題が出てきています。
報道による陪審の影響をいかに防ぐか、という問題です。

イギリスでは、評決が下されるまでの間、事件に関する報道を厳しく制限しています。
陪審員に偏見が与えられと、公正な審理が妨げられるからです。

これに対してアメリカでは、報道の自由の観点から、報道を制限することは限られた場合でしか認められていません。
(報道による偏見を防ぐために、弁護士や検察官のマスメディアに対する発言を制限している)

結局のところ、大多数の意見が、人を犯罪者にも英雄にもするのです。
『タクシードライバー』では、売春婦アイリスが家出をしていること、まだ12歳であること、アイリスの親がトラヴィスに感謝の手紙を送ったこと、をメディアが取り上げ、トラヴィスは売春婦から立ち直らせた英雄として扱われました。
大衆の意見が陪審に影響して、トラヴィスは無罪釈放。

もし、大統領立候補者の射殺が成立したとすると、間違いなく犯罪者として世間から白い目で見られることになります。
もし、アイリスに両親がいなくて、ということであれば、3人を射殺した狂気と化した殺人者として扱われることでしょう。



■感想
一度は離れていったベッツィーが英雄となったトラヴィスに近寄るラストシーンで、ミラー越しのトラヴィスのするどい視線は何を意味しているのか、が僕は気になっています。
『タクシードライバー』が何を表現したかったのか、を探るにはあの視線に答えがあるような気がします。

社会に対して、自分の存在を主張したいがゆえ、殺人に走ったのか。
社会に対する苛立ちを解消すべく、その苛立ちの原因となる人を消したかっただけなのか。

静かに淡々と進められていく映画だからこそ、一つ一つのシーンに意味があるような気がして、それが印象に残った映画でした。

2011年6月23日木曜日

Cookieを利用して訪問数を表示

Cookieは、Cookieとは で説明したとおり、WebページにアクセスしたユーザのPCに、個別データを一定期間書き込む仕組みです。

Cookieの機能を使用して、訪問数を表示してみました。
JavaScript + Cookie で訪問数を表示


<html>
<head>
<meta http-equiv="content-type" content="text/html;                                            
                charset=UTF-8"
/>
<title>Cookie Test</title>

<script type="text/javascript">
<!--
str = "count_now";

function getCookie(){
        var tmp = document.cookie;
        var index1 = tmp.indexOf("=", 0) + 1;
        var count = unescape(tmp.substring(index1));
     
        if(count == ""){
                count = 1;
        }
        return count;     
}

function setCookie(val){
        document.cookie = str + "=" + escape(++val);
}

var access = getCookie();
setCookie(access);

document.write("<h2>訪問回数</h2>");
document.write(access + " 回目の訪問です ");
//-->
</script>
</head>
</body>
</html>



■Cookieの読み込み
function getCookie(){
        var tmp = document.cookie;
        var index1 = tmp.indexOf("=", 0) + 1;
        var count = unescape(tmp.substring(index1));
     
        if(count == ""){
                count = 1;
        }
        return count;     
}

JavaScriptを使ってCookieの値を読み込むには、document.cookie を使います。
上の処理は、書き込まれたCookieに対して、訪問数(count)の値だけ抜きとって返す、ことをやっています。

■Cookieの書き込み
function setCookie(val){
        document.cookie = str + "=" + escape(++val);
}

Cookieを書き込むには、下記の書式で行います。
document.cookie = “name = 値; expire=値; domain=値; path=値; secure”;


■気になった事(時間があるときに調べる)

*ローカルでのテストで、FireFoxとChromeの動きが違っていました。
FireFoxだと、Web上にアップロードしていなくてもCookieの値の書き込みができていました。
Chromeだと、その状態では、Cookieの値が1から増えませんでした。
書き込みがうまくいっていないみたいでした。

htmlファイルをWeb上にアップロードすると、どちらも正しい動きをしています。
設定の問題?


*訪問数(count)の数を抜き出す作業にeval()関数を使ってたのですが、Chromeだとものすごく重かったです。
調べてみると、eval()関数の危険性についてのサイトが結構ありました。
http://www.atmarkit.co.jp/fcoding/articles/webapp/05/webapp05b.html
http://d.hatena.ne.jp/snaka72/20090617/1245247514

2011年6月20日月曜日

Cookieとは

Cookieの仕組みを説明します。
Webサーバが、アクセスしてきた人(クライアント)のPCにテキスト形式の情報(Cookie)を保存します。
そうすることで、Webサーバはクライアントが接続したときに、前回Webサーバが保存したCookieを読み込み、個人を特定することが可能になります。
(ここでの特定とは、名前や住所といった個人情報ではありません。)
もし、WebサーバがCookieを読み込めなかったら初めてサイトにアクセスしてきた人と判断します。

インターネットを使っていれば、掲示板や会員制サイトでID・PWを入力してログインすることがあります。
しかし、一度ログインしておけば、ID・PWを毎回入力しなくてもログインできるサイトがあることは、何となくご存知でしょう。

この仕組みにはCookieが使われています。
サイトを訪問すると、私たちのPC(クライアント)にサイトのログイン情報(Cookie)が自動的に保存されます。
Webサーバは、Cookieを読み込んで、ログイン情報を確認してID・PWの入力ステップをとばすことができます。


■Cookieの危険性
『インターネットカフェでの会員制のアクセスは、そのPCにCookie情報が残るから危険』
PCを使っている人ならば、誰でも聞いたことがあるのではないでしょうか。

事実です。
クッキー情報が残っていれば、次使う人がそのサイトにアクセスしたときに自動的にログインされます。

ショッピングサイト・オンライン銀行といった他人にログインされて困るサイトは、自分専用のPC・携帯からアクセスするようにしましょう。

公共のPCでどうしても会員制サイトにアクセスしなければなれない場面があるかもしれません。
(そんな場面に出くわしたことがないから、具体例が出ないけど・・・)
そういう時は、使い終わったら必ずログアウトしておきましょう。
そうすることで、自動ログインは防ぐことができます。


■Cookieの確認
どのブラウザからもCookieの情報を確認することができます。

FireFox (MacOS)
FireFox>環境設定>プライバシー>”Cookieを個別に削除”
を選択

Crome (MacOS)
Chrome>環境設定>高度な設定>プライバシーの”コンテンツの設定”>”すべてのCookieとサイトデータ”
を選択


■最後に
Cookieのおかげで、毎回同じ情報を登録する煩わしさから解放されます。
CookieがOFFになっていると、認証が必要なサイトが利用できなかったりもします。

Cookieはもはや必要不可欠なものになりつつあります。
セキュリティとして問題があるから、Cookieなんて排除しろ、と考える人がいるかもしれません。
そんな考えはナンセンスです。

インターネットを扱うならば、常にセキュリティを意識しておかなければなりません。
悪用される危険性を理解し、対策をすることが大切ではないでしょうか。
今一度、ブラウザになされている設定を確認してみては。

Cookieとセキュリティの関係が詳しく書かれています
http://secure.blog.ocn.ne.jp/column/2009/06/post_9305.html


参考)
http://eazyfox.homelinux.org/security/Security18.html
http://www.tohoho-web.com/wwwcook.htm

2011年6月19日日曜日

『生物と無生物のあいだ』福岡伸一著

かなり前に流行った本ですが、読んでみました。

僕は、生物に関してほとんど無知ですが、それでも楽しめる本でした。
生物史っていうのでしょうか、生物学の発展と貢献した科学者の紹介をふまえた文書を読んでいる最中は、興奮しっぱなしでした。

PastedGraphic12-2011-06-19-20-43.jpg


僕の印象に残った科学者を二人紹介します。

■オズワルド・エイブリー
1940年代、オズワルド・エイブリーは実験により、核酸に形質転換の性質があることを発見しました。
この発見は、遺伝子の正体は核酸(DNA)ではないのか、ということを示唆しています。

彼は、肺炎双球菌の不思議な性質を調べることで、世紀の大発見をするのです。

実験をまとめてみます。
肺炎双球菌 S型:強い病原性を持つ
R型:病原性を持たない

・S型の菌を加熱して殺す→動物に注入→肺炎を起こさない
・加熱で殺されたS型の菌+R型の菌→動物に注入→肺炎を起こす→体内からS型の菌が見つかる

この結果は、菌の性質を変える物質が存在しているということです。

エイブリーは、S型の菌から様々な物質を取り出し、どの物質がR型菌をS型菌に変化させるのかを調べます。
そして結果は、核酸(DNA)でした。
つまり、核酸は、形質転換という遺伝子の性質をもっているということです。


ここからが悲劇です。
1940年代、遺伝子は形質に関する大量の情報を担っていることから、複雑な高分子構造をしているタンパク質ではないのか、と考えられていました。
核酸は高分子ですが、たった4つの要素しかない単純な物質です。

そういった時代背景もあり、エイブリーは慎重にならざるをえなかったのです。
核酸には形質転換の性質があるとの論文を出したときは、多くの科学者に非難されています。
核酸は遺伝子ではないのか、と示唆する論文を、多くの科学者は受け入れられなかったのです。


その後、時代は流れ、遺伝子の正体は核酸(DNA)であるとの論文を載せたワトソンとクリックは、ノーベル賞が与えられることになりました。


■ルドルフ・シェーンハイマー
時同じくして、体内に入り込んだアミノ酸の行方を調べた科学者がいます。

どのように調べたのか。
タンパク質を構成するアミノ酸には全て窒素が含まれています。
自然界に存在するほとんどの窒素の質量数は14(陽子:7 中性子:7)です。
しかし、わずかに代わり種もいて、質量数が15(陽子:7 中性子:8)の重窒素と呼ばれるものもいます。

そこに目を付けたルドルフ・シェーンハイマーは、重窒素をアミノ酸の窒素原子として挿入すれば、他のアミノ酸と区別できるので、追跡が可能になることを思いつきました。

ネズミに重窒素を含むエサを与え、重窒素を含むアミノ酸を追跡しました。
彼は、『成熟したネズミは、それ以上大きくなる必要がないので、生命維持のためのエネルギーとなって燃やされる』と予想していました。

結果は予想を裏切るものでした。
ネズミの体重は変わっていないが、与えられた重窒素の半分以上が身体のあらゆる部分のタンパク質の中に取り込まれていたのです。

事実として、ひとつのタンパク質を合成するためには一からアミノ酸をつなぎ合わせなければなりません。

その事実と実験結果は、多数のタンパク質が作られると同時に、その同じ量のタンパク質がアミノ酸に分解され、体外に捨てられることを示唆しているのです。

私たちの体内のタンパク質は日々置き換えられていることが、発見された瞬間でした。


■最後に
科学史に残る発見というものは、予想を裏切った結果を真摯に認め、考察していくところから始まります。
結果をあらゆる面から考察し、純化し、原因を突き止める。
この作業は、科学に限らず、どの分野でも大切だと思います。

『プリティ プリンセス』ゲイリー・マーシャル 監督

前回、ひたすらアン・ハサウェイで、アン・ハサウェイの魅力を語りすぎて肝心の作品紹介できなかったので、ここに紹介することにします。

2001年のアメリカ映画、アン・ハサウェイの映画デビュー作『プリティ プリンセス』。

『プリティ プリンセス』を生み出したゲイリー・マーシャル監督は、ジュニア・ロバーツのデビュー作であり、彼女の名を世界に広めた『プリティ・ウーマン』の監督でもあります。
そのような経緯から、『プリティ プリンセス』の大ヒット後に、アン・ハサウェイは第二のジュニア・ロバーツと呼ばれ、ハリウッドの期待を一身に集めることになります。

ゲイリー・マーシャルといえば、去年『バレンタインデー』を制作し、キャストとしてアン・ハサウェイ、ジュリア・ロバーツが主演しています。
キャストが豪華であることで話題を読んだ作品です。
ぜひ、ご覧あれ。

PastedGraphic4-2011-06-19-15-15.jpg


『プリティ プリンセス』は、ごく普通の女子高生、いや、ダサクて地味で内気な女子高生ミア(アン・ハサウェイ)が、ある日突然、ヨーロッパにあるジェノヴィア国の王女であることが明かされ、シンデレラロードを歩む作品です。

ミア(アン・ハサウェイ)の、本当にみすぼらしい姿で映画は始まります。
ある日、ジェノヴィア国の王女であることを明かされ、祖母ジェノヴィア国女王はミアのプリンセス教育を始めます。
教育のひとつとして、ビューティー・エキスパートの手により美しい姿に変身(アン・ハサウェイの元の姿に戻っただけなんだが)します。
王女を継承することに迷い、真実の愛を探し求める、ミアの複雑な心境が描かれています。


印象に残ったシーンとして、亡き父がミアのために残した手紙を読むシーンがあります。
手紙には、こうあります。

勇気とは恐れないことじゃない、むしろ勇気とは、何か他のものが恐れることよりも大切だと判断することだ。
勇気のある人が永遠に生きられるわけじゃないが、臆病だったら全く生きていけない。
これから君は、思い描いている自分と現実になれる自分との間を旅することになるだろう。
最も重要なのは、君自身がその旅をしていくということだ。

心に響くフレーズです。
この手紙で、ミアはジェノヴィア国の王女を継承する決心をします。


暖かみのある映画でした。
本当の自分を好きになりたい。素敵なプリンセスになりたい。
多くの女性の共感を得た理由が分かる気がします。

『大奥<男女逆転>』金子文紀 監督

二宮和也、柴咲コウ、堀北真希、大倉忠義、玉木宏といった豪華キャストが話題をよんだ作品です。

PastedGraphic3-2011-06-19-04-31.jpg


あらすじとしては、江戸時代、男性のみがかかる疫病により男性の人口が急速に現象。
そのため、男女の立場が入れ替わり、社会運営の根幹や権力が女性に移っていく。
江戸城では、将軍職を引き継いだ女性が、将軍の威光の証であるがごとく、希少な美男3000人を従える。

主人公 水野裕之進(二宮和也)は、幼なじみであるお信(堀北真希)に恋をよせるが、身分の違いから結婚を諦め、彼女への思いを断ち切るために大奥にあがり、徳川吉宗(柴崎コウ)に従える。
といった内容です。


あまりにむちゃくちゃな内容でしたが、ストーリ自体はうまくまとまったのではないでしょうか。
BL(boys love)と思わしきシーンが出てきたときは、ちゃんちゃらおかしくて笑えました。
ここ最近、はからずしも同性愛を描く映画を引き当ててしまいます。いやです。


残念だったのは、二宮和也の演じた水野裕之進は、美男子で粗暴な言動が目立つ、腕のたつ剣豪というキャラですが、二宮和也のキャラとはほど遠かったということです。
大奥では、鶴岡(大倉忠義)や松島(玉木宏)といった美男・高身長に囲まれ、水野裕之進(二宮和也)の存在感が薄い・・・。
がんばって粗暴な言動をとろうとしているが、言葉の一つ一つが軽い。
剣術の達人だと言われても、二宮和也が華奢な体をしているので説得力に欠けます。
(佐々木望を奪った二宮和也に恨みがあるわけではありません。)


最後に、美男・美女の揃った映画で、内容はどうあれ目の保養になります。
特に、お信(堀北真希)が可愛いくて、水野の前では強がりながらも時に見せる愛情表現(ツンデレ?)に心ひかれました。
堀北真希のキャラとは少しずれていたところが、男性陣の心をひきつける結果を生んだと思います。

2011年6月18日土曜日

『魔法少女まどか☆マギカ』新房昭之 監督

「今、魔法少女が熱い」
先輩の一言にのせられ、全12話見てみました。

PastedGraphic2-2011-06-18-23-43.jpg


漫画やライトノベルの原作が深夜アニメの主流になっている中、『魔法少女まどか☆マギカ』は貴重なオリジナル作品です。
最終回を前に、東北地震が起き放送中止になりましたが、ファンの熱い思いが伝わり、2011年4月21日に放送されることが決まりました。
そのことを大々的に告知されたので、そこで興味を持った人も多いのではないでしょうか。

ストーリとしては、どんな願い事も一つだけ叶えることを引き換えに、魔法少女となった美少女たちが、世に仇なす魔女を倒す戦いを続けるというものです。

アニメが進むにつれて明らかになる謎、先の読めないストーリに夢中になりました。
シャフトの制作するアニメを見たのは、これが初めてですが、噂通りの映像・カメラワークに感動しました。
確かに、他の制作会社とは全く違います。

シャフトの制作するアニメをたくさん見たいです。

『システム管理者の眠れない夜』柳原秀基

システム管理者とは、システムを運用している人のことをいいます。
業務に必要な情報システムを、円滑に運用・管理する”縁の下の力持ち”的な存在です。

最近の話題として、みずほ銀行がシステム障害の影響でATMが停止し深刻な問題になった、ことがあります。
ATMのように動いて当然と思われているシステムに不具合が発生することは、企業として価値を下げることにも繋がります。

そのため、ネット上に社内システムを接続している組織では、システムの障害を起こさないためにも、または障害が起きたときに迅速に対応するためにも、部署や人材としてシステム管理者を確保しています。
システムは動いて当然という認識がある以上、システム管理者の重要性は高いといえるでしょう。

PastedGraphic1-2011-06-18-23-21.jpg


著書『システム管理者の眠れない夜』では、システムを円滑に運営していくため休日を返上して働き続けるシステム管理者の姿が描かれています。

10年も前に出版された本だけあって、低スペックPCの扱いや、PCの使い方を全く知らないユーザの存在など今では考えられないことも書かれていますが、内容自体は今でも十分通じるし理解できます。

印象に残ったこととしては、下のようなことです。
  1. 思いもよらないことをしでかす一般ユーザの存在
  2. PCに関して詳しい人が引き起こすシステム障害
  3. 2000年問題への対応


■思いもよらないことをしでかす一般ユーザの存在
著書のほとんどの内容が、一般ユーザの信じられない行動により引き起こされるシステム管理者の休日出勤です。

一部を取り上げると、
・サーバからケーブルを引き抜き、そのまま放置
・無防備な場所に勝手にフォルダを作成して、ウイルスの格好のまとに

こういったことからシステム障害・情報漏洩に繋がるんだろうな、システム管理者の苦悩が伺えます。
PCに詳しくない人でも、職場に1人1台のPCが与えられる時代です。
システム管理者は、思わぬハプニングにも対処していく必要があるんですね・・・。


■PCに関して詳しい人が引き起こすシステム障害
PCに詳しいことはシステム管理者の業務の手助けをすることもあるので、貴重な存在である、と著者は言っています。
しかし、PCになまじ詳しいがゆえに、システム管理者を困らすこともあります。

具体的に、会社のPCを勝手に分解してメモリの増設をしたり、ソフトウェアをインストールすることで、引き起こされたトラブルなどです。

会社で扱うPCである以上、自宅のPCと同じ扱いをしてはいけません。
インストールしていいソフトウェアは決められているはずです。
会社のPCを分解するなんてもってのほかです。


■2000年問題
何の問題もなく過ぎ去った2000年問題。
どこの企業でも、システム障害があってはまずいと、様々な対策がなされていました。
システム管理者である著書は、2000年1月1日、もちろん休日出勤をしています。

2000年問題に対する対策、振り回される人々の姿がふんだんに書かれています。
とても面白い内容でした。

様々なシステム管理者から話を聞きたいです。
・実際に起こるのか見当もつかない問題に対して、どう予算が割り当てられたのか。
・もしシステムがストップしたら、どのような対策を考えていたのか。
・無事に乗り越えた後、何を思ったのか。

次、似たようなことが起こるのは、2038年問題ではないでしょうか。
気が早いと思うかもしれませんが、ちょうど今の世代が担当する問題に思えて仕方ありません。
そのときの参考になればと思います。



最後に、著者は『システム管理者になるのはお薦めしない』『ITは人を幸福にしない』といっていますが、とても楽しそうにシステムの管理をしている、と感じました。
著書を読んで、システム管理者やってみたいかも、と思う自分がいました。

もっともっと詳しくなりたい。知識にどん欲でいたい。

2011年6月17日金曜日

『むかし僕が死んだ家』東野圭吾

ここ最近、東野圭吾さんの小説にはまっています。

今回読んだ本は、『むかし僕が死んだ家』。

PastedGraphic-2011-06-17-05-48.jpg


登場人物は、名もなき主人公と、幼い頃の記憶がない元恋人・沙也加の二人だけ。
主人公の視点から描かれた作品になっています。

沙也加の幼い頃の記憶を取り戻すため、山の中にひそむ小さな家へ二人は訪れます。
その家の中にひそむ数々の伏線が、最終的にある真実に導きます。

この小説は、登場人物が二人だけ・山中の家の中だけ・2日間だけの出来事と、制約だらけです。
家の中にある手がかりや、会話のひとつひとつが、すべてがある真実にたどりつくための伏線になっています。
なにげなく読んでいた場面・セリフ全てが連続して絡み合っていたんだ、と気付いたときには唖然としました。

『虐待』をテーマとして書かれているだけあって、読み終えた後のすっきりというのはないです。
誰かが幸せになった、というのはありません。
ただ、これがミステリー小説であるという点から、一つ一つの事象から結論にたどりつく過程が論理的であったので、非常に満足しています。

東野圭吾さんは理系出身であったため、文章も歯切れが良く、ストーリは論理的に展開されます。
理系の人が読んでも面白い小説に分類されると思います。
お薦めします。

2011年6月16日木曜日

Mozilla Thunderbirdが使いやすい

メールソフトは何を使っていますか?

僕は、お家では、MacOS付属のmail.appを使っています。
mail.appは、MacOSの他のアプリーション(ical)との連携が素晴らしいので、手放せないです。

ですが、MacOS以外のPCには、Mozilla Thunderbirdをメールソフトとして使っています。
Windowsを使っている人は、Mozilla Thunderbirdをお薦めします。
http://mozilla.jp/thunderbird/

Mozilla Thunderbirdの利点
・メールアカウントの設定が簡単
・拡張機能が豊富
・大量のメールでもさくさく動く



■メールアカウントの設定が簡単
インストールして、Thunderbirdを立ち上げると、メールアカウント設定画面がよばれます。
%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%2525882011-06-174.37.55-2011-06-16-23-45.png

受信者に表示される名前・メールアドレス・パスワードを入直すると、自動的にアカウントを作成してくれます。
POPやSMTPの設定が一切いりません。

%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%2525882011-06-175.29.12-2011-06-16-23-45.png

mail.appでアカウントを設定するときは、POPやSMTPの設定をするのに、googleで調べながらで大変だった思い出があるので、それに比べてはるかにラクでした。


■拡張機能が豊富
例えば、僕の気に入っている機能としてデスクトップ通知があります。(オプションから設定する必要あり)
しかし、デスクトップ通知は一定の時間が経つと消えてしまいます。

そこでアドオンを使って、通知を自動的に閉じない設定に拡張します。
https://addons.mozilla.org/ja/thunderbird/addon/blinking-alert/

上のURLからダウンロードして、Thunderbirdのツール>アドオンを選択で、こんな画面がでるので、そこにダウンロードしたファイルをドラッグアンドドロップすれば、自動的にインストールされます。

%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%2525882011-06-175.07.41-2011-06-16-23-45.png

Thunderbirdを再起動させた後、再びツール>アドオンを選択。“設定”のボタンを選択します。
下の画面が現れるので、”自動的に閉じない”にチェックを入れておきます。

%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%2525882011-06-175.14.54-2011-06-16-23-45.png

このように、拡張機能が容易です。
すでに多くのアドオンが出回っているので、”こんな機能が欲しい”と思ったとき調べればすぐに出てきます


■大量のメールでもさくさく動く
これは使っていて実感しています。
検索結果も別タブで表示されたりと、検索や動作に関しては、mail.appより優れていると思います。

2011年6月14日火曜日

WindowsのサービスからApacheが起動しない

WindowsのサービスからApacheを起動しようとすると、エラーが出て起動しない。
焦ってはいけません。たいていの原因はこんなとこです。
  1. Apacheの設定(httpd.conf)が間違っている
  2. 別のアプリケーションが使っているポートと重複している

1. まず最初に、httpd.confの設定が間違っていないかを確認します。

Apacheをインストールすると、c:¥Program Files¥Apache2.2¥bin¥httpd.exeといったディレクトリが出来ます。binの下までコマンドプロンプトで移動して、下記のコマンドをたたく。

> cd c:¥Program Files¥Apache2.2¥bin
> httpd.exe -t

例えば、Syntax error on line ... といったエラーが出たら、エラーの内容に従って修正します。
Syntax がOKと出たら、httpd.confの設定は問題ないです。


2. それでも起動しなければ、次に疑うのは、ポート番号の重複です。

例えば、Apacheはデフォルトで80番ポートを使うので、先の80番ポートを使っているアプリケーションがあれば、Apacheは起動しません。
(Apacheが使うポートは、httpd.confのListenのとこで確認できる)

> netstat コマンドを使って、Apacheの使うポートで動いているアプリケーションがあれば、そのアプリケーションのプロセスを切るか、Apacheの使うポートを変更することでApacheは起動します。



ほかに僕が経験したのに下のようなこともあったけど、たいていの原因は1と2のようなことです。
・Apacheを起動するときの所有者が原因
        (ログすら出てこなかったことで気付く)
・Apacheをサービスに登録するときの設定ミス。
        (コマンドからは起動できるが、サービスからは起動できなかったことで気付く)

2011年6月13日月曜日

SPOOLで実行結果を書き出す

SQLを流したあとによく見かける “SPOOL” これは一体何を表しているのだろうか。

SPOOLを使うことで、SQL*Plusで出力した画面の結果をテキストファイルに保存できます。

例)spool.sql
SPOOL file.txt
SELECT * FROM 社員;
SPOOL OFF

上記のsqlをSQL*Plusで接続して、実行すると、SELECT * FROM 社員; の実行結果が書き出されたfile.txtが出力されます。


■CSVファイルとして出力
アプリケーション間のデータのやり取りとして利用されるCSV。
SPOOLを使って、CSV形式としてファイルを出力することもできます。

SELECTで呼び出した実行結果をカンマで区切ってCSVとして出力します

例)spool_csv.sql
SET COLSEP ‘,’
SPOOL file.csv
SELECT * FROM 社員;
SPOOL OFF

2011年6月12日日曜日

酒座景虎

6月11日の僕の誕生日、後輩から日本酒をプレゼントされました。
以前、居酒屋で飲んで以来忘れられないお酒、『越乃景虎』。
『酒座景虎』は『越乃景虎』正規特約店の中からさらに選抜された店でしか取り扱われていない限定商品です。

RIMG0227-2011-06-12-00-42.JPG

「酒座」とは酒盛り場や酒宴の席のことを言います。

ラベルの説明書きとして下のことが書かれています。
『料理の味を際立たせ、あえて自己主張をしない。食事の席では「黒子」に徹する。そんな理想の食中酒を目指したのが「酒座景虎」です。』

今回は、昆布と椎茸を肴に、冷やして飲みました。
癖のない日本酒です。
新潟のお酒は、切れ味するどい辛口で真っ向勝負してくる、という認識が僕の中でありますが、『酒座景虎』は辛さを感じさせないすっきりとした味わいです。
軽やかで飲み飽きない、すっきりとした越後のお酒でした。

ちなみに、『景虎』とは、越後の戦国武将、上杉謙信の元服名(長尾景虎)にちなんで名付けられたものです。
生涯にわたって酒を愛した上杉謙信の青年武将時代の「景虎」の名をしのび、越乃景虎と命名されました。

2011年6月8日水曜日

VMware Fusionを使って、MacでWindowsを動かす

普段はVMware Esxiを使って仮想マシンを動かすことが多いのですが、今日VMware Player を使う機会がありました。
違いは、VMware Esxiはサーバ上に組み込んで仮想マシンを動かすのに対し、VMware PlayerはOS上で仮想マシンを動かすということです。

要は、VMware EsxiはOSを必要としていないですが、VMware Playerを使うにはWindowsなりMacなりといったOSが必要ということです。
サーバを持っていない人でも、WindowsでMac・Linuxを動かせるなんて素敵ですね。

自宅にあるMacのパソコンでWindowsを動かせないか?
調べてみると、Mac向けの製品のVMware Fusionというものがあるみたいです。
http://www.vmware.com/jp/products/fusion/overview.html
(今回は、WindowsのOSを持っていないので、ホストOSがMacで、CentOSを仮想マシンとして動かしました。)

さっそく、体験版をインストールしました。

画面に従って、メールアドレスを登録してダウンロード。

ダウンロードしたVMware-Fusion-3.1.3-416484-light.mgを開くと下の画面が出ます
“VMware Fusion のインストール.app”を選択

%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%2525882011-06-0823.56.02-2011-06-8-23-56.png

画面に従って進めていき、シリアル番号には、送られてきたメールのリンク先にあるシリアル番号を入力。

%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%2525882011-06-0823.58.39-2011-06-8-23-56.png

インストール完了

アプリケーションフォルダのVMwara Fusion.appを開き、概要の上から2番目の、
『Windows または別のオペレーティング システムを新しい仮想マシンにインストールします。』
を選択

%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%2525882011-06-090.19.08-2011-06-8-23-56.png

『ディスクを使用せずに続行』を選択
%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%2525882011-06-090.24.15-2011-06-8-23-56.png

『オペレーティングシステムのインストールディスクを使用:』を選択して『続ける』を選択
%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%2525882011-06-090.25.53-2011-06-8-23-56.png


オペレーティング システムに『Apple Mac OS X』
バージョンに『Mac OS X Server 10.5』
を選択して、『続ける』をクリック
(WindowsのOSが手元にある人は、Windowsを選択してください)
%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%2525882011-06-090.54.57-2011-06-8-23-56.png


『終了』を選択。
%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%2525882011-06-090.55.03-2011-06-8-23-56.png


下の画面が立ち上がります。CentOSのイメージを焼いたDVDをPCに取り込む。
右下のCDのアイコンから、『CD/DVDを接続』を選択

あとは、インストール画面が立ち上がるので、適当に環境を構築して完成です。

%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%2525882011-06-091.36.34-2011-06-8-23-56.png

2011年6月7日火曜日

ビューを利用する

CREATE TABLEで作成された表は実表とよばれます。ビューは実表ではありません。間違いが許されないデータベース管理にとって、実表を守るという意味でビューは重要な役割を果たします。

■ビューの作成
必要な表の必要な列だけを、必要な条件で抜き出したものです。

SQL> CREATE VIEW ビューの名前
                AS SELECT 列名 条件;

例)
SQL> select * from 社員;
社員番号    社員名                職務         上司    入社日         給与   歩合給 部門番号
---------- -------------------- ------------------ ---------- -------------- ---------------- ---------- ----------
7900      田中                 業務         7698 01-12-03        195000      30
7902      桜井                 主任         7566 01-12-03         300000      20
7934      田村                 業務         7782 02-01-03    230000      10

3行が選択されました。

SQL> create view 給与は秘密
2         as select 社員番号,社員名,職務,上司,入社日,部門番号
3         from 社員;

ビューが作成されました。

SQL> select * from 給与は秘密;

社員番号 社員名                職務                         上司  入社日 部門番号
---------- -------------------- ------------------ --------------- ------------- --------------
7900 田中                 業務                         7698  01-12-03         30
7902 桜井                 主任                         7566  01-12-03         20
7934 田村                 業務                         7782  02-01-03         10

3行が選択されました。


■ビューと元になる表の関係
元になる表の値が更新されると、ビューの値も更新されます。

例)
SQL> INSERT INTO 社員 VALUES('9999','おらくる','主任','','','1000000','1000','20');

1行が作成されました。

SQL> select * from 給与は秘密;

社員番号 社員名                職務                         上司 入社日         部門番号
-------------- -------------------- ----------------- ---------- -------------- --------------
9999 おらくる                主任                                              20
7876 長谷川                SE                         7788  07-07-13         20
7900 田中                 業務                         7698  01-12-03         30
7902 桜井                 主任                         7566  01-12-03         20
7934 田村                 業務                         7782  02-01-03         10

5行が選択されました。

■ビューの確認
ビューの存在は、USER_VIEWSで確認することができます。
ビューの名前はVIEW_NAME、ビューの内容はTEXTに保存されています。

例)
SQL> select VIEW_NAME,TEXT FROM USER_VIEWS
2                 WHERE VIEW_NAME='給与は秘密';

VIEW_NAME                                                TEXT
---------------------------------------------------- --------------------------------------------------------------------------------
給与は秘密                                                select 社員番号,社員名,職務,上司,入社日,部門番号 from 社員


■ビューの削除
DROPコマンドを使います。
SQL> DROP VIEW ビューの名前;

例)
SQL> DROP VIEW 給与は秘密;

ビューが削除されました。

参考)
『基礎からのOracle』 西沢夢路著

2011年6月6日月曜日

RabbitMQって何?

“クラスタリング環境で、通信を同期したいからRabbitMQをインストールしておいてください”
依頼されたもののMQって何だ?

wiki引用
RabbitMQ(ラビットエムキュー)は、Advanced Message Queuing Protocol(AMQP)を使用した、オープンソースのメッセージ指向ミドルウェアである。

どうやらRabbitMQを使うことで、クラスタリング環境でのキャッシュの同期・スキーマの同期といったことが実装できるみたいです。

どういう仕組みなのか、興味ありです。
週末あたりにでも、手元でクラスタリング環境作って、実際に動かしてみます。

参考:
Sun Java System Message Queue 3 2005Q1 技術の概要
http://download.oracle.com/docs/cd/E19435-01/819-2221/broker_clusters.html

2011年6月4日土曜日

ひたすらアン・ハサウェイ

今日は、アン・ハサウェイだけを見ていたい。
ということで、彼女の主演している映画を見ることにしました。

アン・ハサウェイのファンになるきっかけとなった名作『プラダ着た悪魔』以降、彼女が主演する映画は欠かさずチェックしている僕ですが、それ以前のものは、まだ見たことがありませんでした。そんなことでは、ファンを名乗る資格などありませんね。
ということで、デビュー作である『プリティ・プリンセス』『ブロークバックマウンテン』『裸の天使』をレンタルしました。


PastedGraphic-2011-06-4-00-21.jpgPastedGraphic2-2011-06-4-00-21.jpgPastedGraphic1-2011-06-4-00-21.jpg


今回の映画を見るまで、ぼくの中のアンハサウェイのイメージは、『優等生』でした。デビュー作である『プリティ・プリンセス』もなかなかの優等生ぶりで、彼女を見ているだけで幸せになれました。

しかし、『ブロークバック・マウンテン』と『裸の天使』で、僕のアンハサウェイに対するイメージはこなごなに破壊されました。

同性愛者の妻や不良少女を演じているアンハサウェイ。
出し惜しみしない放漫な胸。
映像に映し出される淫らな姿。
その姿を見ているだけで苦しくなりました。


2005年に上映された2本の映画(『ブロークバック・マウンテン』と『裸の天使』)で多くのファンは彼女から離れていったに違いありません。

アン・ハサウェイのプロフィールによると、当時、『プリティ・プリンセス』の優等生というイメージが払拭できず、違うタイプの役柄のオファーがとれず、ハリウッド女優として低迷していたそうです。彼女は苦しんでいました。イメージを変えることは、これまでついていたファンが離れていく可能性もある。それを考えると、『裸の天使』でこれまでのイメージと正反対の役を演じることは彼女にとっても大変な決断だったと思います。



そして、彼女は再び光を取り戻しました。次の年、名作『プラダを着た悪魔』で世界的ヒットを生み出すのです。

僕は彼女の主演する作品を見るたびに夢中になっていきます。
アンハサウェイは、大きな目で童顔で、アニメ好きの日本人に好まれる外見をしています。なので、日本で知名度が低いことが残念で仕方ありません。

僕は、彼女を一生応援します。
来年には、僕の好きな映画監督であるクリストファーノーランの作品にアンハサウェイが主演します。バットマン・シリーズ完結編の『ダークナイト・ライジング』です。


みんなぜひぜひ、見て下さい。あの美人がアンハサウェイです。

2011年6月3日金曜日

ユーザと権限

実運用のデータベースでは、強力な権限をもつSYSTEMユーザやSYSユーザで操作は好ましくなりません。
どのようなユーザが、どこまでデータを利用できるのか、を明確にすることが大事です。

■管理者ユーザと一般ユーザ
Oracleの管理者ユーザはDBAと呼ばれ、SYSユーザ・SYSTEMユーザがそれにあたります。

一般ユーザは、管理者によって作成されるユーザのことです。
権限を与えない限りは、データベースに対して何の操作もできません。
ユーザを作成するのは、下記のコマンドです(SYSTEMユーザまたはSYSユーザでSQL*Plusに接続します)

SQL> CREATE USER ユーザ名 IDENTIFIED BY パスワード;


■権限
Oracleには、システム権限とオブジェクト権限という2種類があります。

システム権限
データベースの操作に対する許可を与えます。
SELECTやDROPといった操作ができるようになります。

システム権限を付与するには、下記のコマンドを使います。
SQL> GRANT システム権限名 TO ユーザ名

システム権限名としては、ざっと以下のものがあります(本当はもっと複雑で多いけども省略)
・CREATE SESSION(データベースに接続できる権限)
・CREATE TABLE(表を作成できる権限)
・CREATE ANY TABLE(別のスキーマも含めて表を作成できる権限)
・SYSDBA(データベースの起動・停止、オブジェクトの作成など何でもできる権限)
・ALL PRIVILEGES(何でもできる権限)


オブジェクト権限
特定のユーザのオブジェクトを利用する許可を与えます。
つまり、別のユーザのスキーマを利用することができます。

オブジェクト権限を付与するには、下記のコマンドを使います。
SQL> GRANT オブジェクト権限名 ON オブジェクト名 TO ユーザー名

オブジェクト権限名としは、ざっと以下のものがあります
・SELECT(検索)
・INSERT(挿入)
・ALTER(変更)
・INDEX(索引作成)


権限の確認
与えられている権限は下記のようにして確認できます。
権限を見たいユーザでSQL*Plusにつなぐ。
SQL> SELECT * FROM USER_SYS_PRIVS;


権限の削除
設定されている権限を削除します。

SQL> REVOKE 権限 [ON オブジェクト名] FROM 対象ユーザ名;

オブジェクト権限を削除するときに、[ON オブジェクト名] を指定します。
権限に、ALL PRIVIREGES を指定すると、全ての権限を削除することができます。

参考) 基礎からのOracle

2011年6月2日木曜日

インデックスの設定

インデックス(index)とは、表を効率よく検索するための”索引”です。
日常生活で多く使われています。
例えば、本を使ってある語句を調べる際に、本の末尾にある索引から目的の語句が記載されているページの情報を得る、といったものです。
索引を使うことで素早く情報を得られることは容易に理解できると思います。

Oracle内にある大量のデータが保管されている表を検索するとき、どうすれば早く検索できるでしょうか。
そう、検索に表そのものではなく、インデックスを利用すれば良いのです。
基本的にデータベースの行は、規則性のない並び方をしているのだから、規則的に並べられたデータであるインデックスを利用することで、検索の時間が短縮される、という考え方です。


■インデックスの設定
SQL> CREATE INDEX インデックス名 ON 表名(列名);

例)
SQL> desc 社員;
名前                                                                 NULL? 型
----------------------------------------------------------------- -------- --------------------------------------------
社員番号                                                         NOT NULL     NUMBER(4)
社員名                                                                                  VARCHAR2(10)
職務                                                                                     VARCHAR2(9)
上司                                                                                     NUMBER(4)
入社日                                                                                  DATE
給与                                                                                     NUMBER(9)
歩合給                                                                                  NUMBER(9)
部門番号                                                                               NUMBER(2)

SQL> CREATE INDEX PK_社員 ON 社員(社員番号);


■インデックスの削除
SQL> DROP INDEX インデックス名;

例)
SQL> DROP INDEX PK_社員;


■インデックスの再構築
索引は、表からは独立していますが、Oracleによって自動的に維持されます。
つまり、表にデータが挿入されれば、索引にも自動的に値が入ります。
そのさいにOracleは検索のしやすい、バランスのよい構造を作ろうと頑張ってくれます。
しかし、何度も更新されることで、次第にアンバランスで検索に時間がかかる索引になります。

そこで、元のバランスの良い索引に戻すための仕組みが ”インデックスの再構築” です。

SQL> ALTER INDEX インデックス名 REBUILD ONLINE;

例)
SQL> ALTER INDEX PK_社員 REBUILD ONLINE;
索引が変更されました。

気になるのは、どのタイミングでインデックスを再構築するか、ではないでしょうか。
http://www.itmedia.co.jp/enterprise/articles/0606/02/news106.html
なるほど。


■使用していないインデックスの検出方法
http://blogs.oracle.com/oracle4engineer/entry/index
インデックスの増加はパフォーマンスの低下にもつながります。
監視してみて、あるインデックスが使用されないと分かれば、削除していくことも考える必要があります。

2011年6月1日水曜日

6月!これしたい、あれしたい

6月になりました。

今月の目標というか意思表示として、ひらすらOracleを勉強したいと思います。
Oracleの資格の勉強や、SQL*Plusのコマンドを覚えていきます。

今のとこデータベースのエラーが出るとどう対処すべきか自分では判断できない状況にあります。
その状況を打破したい、それがOracleを勉強する目的です。


Oracleとは別に、今現在考えているのは、うちの大学専用のSNSを作りたい、ということです。
間違いなくソーシャルネットワークにそそのかされています。

facebookやmixiもありだけど、大学専用であればより特殊なことができると思いました。
理工系の大学とだけあって、情報の発信、情報の検索に積極的な学生が多いので、その特徴を上手く生かせるSNSを作れば普及するのでは、と思っています。
課題の解法、講義の議事録などを簡単にアップロードでき、検索できるシステムがあれば、サポートと宣伝次第でうまくいくのでは。
まわりに声かけてみよう。

今『フェイスブック 若き天才の野望』を読んでいる最中ですが、システムを1から作り運用していく作業は大変みたいです。
ユーザが増えればそれだけシステムに負荷がかかるし、要望も増える。責任も伴ってくる。
それらのサポートをうまくできず、すぐに消えていくシステムがほとんどです。
そんな中、間違った方向に進めばあっというまに消えてなくなりそうなシステムを世界中に広めたザッカーバーグは本当にすごい。
ザッカーバーグは迷うことなく決断し、正しい方向に導く、生まれ持ったリーダだと感じました。

経験値が少ないというハンデをどう補ったのか、この本から学びたいことの一つです。