2008/05/31

[思い出]今日は、結婚式

とうとう、この日が来ました。
今日は、結婚式です。

会場準備中!!

Photobucket

[javascript]functionをfunction内部で定義する

昨日の、Bugle Diary: [scheme]ネストでカプセル化で書いたのですが、schemeでは、宣言したプロシージャーの中に、さらにプロシージャーを宣言することができて、一般に、これをblock structureって呼ばれているんだけど、同じようなことがjavascriptでできることがわかりました。

<script type="text/javascript">
function hoge1(){

function hoge2(){
alert('test');

}

hoge2();

}
</script>

と書くことができて、この場合、hoge1を実行すると、testが返ってきます。

ためしに、ソースを導入しました。



是非、お試しあれ。

2008/05/30

[思い出]明日は、いよいよ結婚式

いよいよ、明日は結婚式だー。

場所は、ここです。

よろしくお願いします。

[scheme]ネストでカプセル化

前に、Bugle Diary: [scheme][algorithm]ニュートン法によるルート計算という記事で、ニュートン法を使ったルートの計算を紹介しました。

その時、最後に、「ネストされると()が増えてわかりにくい」ということを書いたのですが、よくよくソースを見てみると、「これってひょっとしたらカプセル化なのでは??」と思い、再度、考察してみることにしました。

例えば、下の場合が、そのネストされているプロシージャーなのですが、

(define (hoge1 x)
(define (hoge2 y)
(+ x y)
)
(hoge2 2)
)

これは、hoge1で与えた引数に2を足した値を返すプロシージャーで、ネストされるプロシージャーの特徴として、hoge1プロシージャーの中に、hoge2のプロシージャを宣言しておいて、hoge1がhoge2を使っているんだけど、hoge1を運用する人は、hoge2の挙動を気にする必要がないんだよね。

hoge2は、外からわかならいというわけで、「これってカプセル化じゃーん」と思ったのです。

ただ、書籍には、カプセル化とは書かれていなかったので、違う呼び方をするのかもしれません。

うーん、でも、やっぱり、外で宣言したほうが、見やすいんじゃーないのかなーって思うんだけど。

2008/05/29

[word]これは便利、改ページ

ページの途中で新しいページに移りたくなる場合があります。

今までは、ずーと「改行」、「改行」、「改行」の連呼だったのですが、なんと改ページで一気にいけるということを知りました。
(今更かよ!!)


ページの途中で、改ページしたくなったとき、【改行】【改行】【改行】と、
何回も【改行】して改ページしたという人もいるかもしれません。
でも、めちゃくちゃ簡単に改行が出来ます。「Ctrl」と「Enter」を押せばいいんです。
「挿入」→「改ページ」という手もありますが、それよりもっと簡単!簡潔!お試しください。
「Ctrl」+「Enter」を押すと、改ページと記されて、その後の文章は次のページに行くのです。


via:Word実践編:《改ページをキー操作で》

と書かれていて、実際に試したら、ガチでできた。

Photobucket

わーい、わーい\(^▽^)/

2008/05/28

[javascript]<![CDATA[ ・・・ ]]>の記述

たま~~~に見かけるんだけど、javascriptの中に<![CDATA[ ・・・ ]]>って書いてあって、「これって何?」って気になってしまい、ちょこっとぐぐってみたら、初めてのJAVASCRIPTの原則「CDATAセクションを使う」に解答がありました。


DOCTYPEとしてXHTMLを指定する場合は、埋め込み型のJavaScriptブロッ
クをCDATAセクションで囲み、さらにCDATAセクションをJavaScriptのコメント
を使って「コメントアウト」します。



//<![CDATA[

var dt = Date();
var msg ='<h3>Hello, World! Today is ' + dt + '</h3gt;';
document.writeln(msg);

//]]>

via:原則「CDATAセクションを使う」

と書いてありました。
つまり、XHTMLでプログラムを書きたいとき、scriptのタグの中に、<![CDATA[]]>を入れて、さらにその中に、ソースを書かないといけないということ。

XHTMLでjavascriptを入れる場合、注意するところですね。

2008/05/27

[oracle]sql plusコマンド、PROMPT

初めて使った、「PROMPT」コマンド

機能
メッセージを表示します。

文法
PRO メッセージ

解説
例:

 PRO こんちわ ・・・・・・ 'こんちわ'を画面に出力します。

via:おらおら※plus:PROMPT

上を参考にして、「PROMPT Hello Oracle」と書いて実行したら、まんま表示されました。

SET SERVEROUTPUT ONを実行していなくても画面に表示できるので、ちょっとしたものを表示するのに便利かなと。

2008/05/26

[scheme][algorithm]ニュートン法によるルート計算

Structure and Interpretation of Computer Programsにニュートン法による、√計算の例題が掲載されていました。

これで、sqrtにvalueをセットすると、√の値を計算してくれます。


(define (square x) (* x x))
(define (abs x)
(cond ((> x 0) x)
((= x 0) 0)
((< x 0) (- x))
)
)

(define (average x y) (/ (+ x y) 2))

(define (improve guess x)
(average guess (/ x guess))
)

(define (good-enough? guess x)
(< (abs (- (square guess) x)) 0.001)
)

(define (sqrt-iter guess x)
(if (good-enough? guess x)
guess
(sqrt-iter (improve guess x) x)
)
)

(define (sqrt x)
(sqrt-iter 1.0 x)
)


via:Structure and Interpretation of Computer Programs

本書では、この例題を通して、ネストされたプロシージャが書かれていたのですが、ネストされていると「()」の数がものすごく多くなってしまっていてわかりにくいなーと思いました。

2008/05/25

合格証明書が届きました。

ネット上ではすでにわかっていたのですが、本日、合格証明書が届きました。

紙できてよりいっそう達成感を感じました。

今月は、ずっと前から準備を進めていたCFの研修、結婚式が終わるので、達成感を得られたらなと思いました。

2008/05/24

[Javascript]var 変数名=function(){}

さっき、ZdnetのJavaScriptの変数のスコープについて学ぶ

という記事を読んだら、下の書き方は同じ挙動を示すことがわかりました。

<HTML>
<HEAD>
<TITLE>JavaScript Test</TITLE>
<SCRIPT type="text/javascript">
var test1 = function(){
alert("hoge1");
};

function test2(){
alert("hoge2");
}
</SCRIPT>
</HEAD>
<BODY>
<INPUT type="button" onClick="test1();" value="Run1">
<BR>
<INPUT type="button" onClick="test2();" value="Run2">
</BODY>
</HTML>

ソースをブログに埋め込んじゃった。





Let's Enjoy

2008/05/23

[facebook]始めました

facebookが日本語化されました。

というわけで、さっそく参加しました。

ここにいます。

っていうか、仕事先で、昼休みみたいなーって思っても、フィルターがかかって確認できないんだけどー。

orz

2008/05/22

[scheme]評価の仕方によって、結果が変わる

今までのところ、schemeの評価の仕方には、2種類あって、一つは、「normal-order evaluation」、「applicative-order evaluation」で、時間があったら、このエントリーで後日追加して書きたいと思います。

驚いたのは、それぞれで最後の結果が変わってしまうこと。

よく、javascriptのevalや、ColdFusionのevaluate関数なんてあるけど、ひょっとしたら、難解な数式を突っ込んだら、評価の結果が変わってしまうのかなーと思ったりしました。

2008/05/21

[scheme]演算子は、特殊なプロシージャー

さっきの記事を書いていて思ったのですが、「=」、「>」、「<」などは、定義をしなくても使える特殊なプロシージャなのかもしれません。

というのも、

Photobucket

で、これを見ると「<」、「>」は、ifや、condが使われていないのに、「#t」や「()」が戻っています。

なので、「>」、「<」は、ブール値「#t」、「()」を返すプロシージャということになります。

だんだん、頭の中がクリアーになってきました。

話は変わるけど、なんで、falseが「()」でしょう??

教科書では、「#f」と書かれているのに。。。

「#f」の方がわかりやすいと思うんだけどなーーー。

[scheme](= 1 2)は、false

昨日、(= a b)が、なぜ、()を返してしまうのか?について書いたのですが、教科書を読んでいるうちに、、ひょっとしたら、falseを意味しているのかもしれません。

というのも、下の場合、#tを返したからです。

Photobucket
というわけで、例えば、(= 1 2)は、falseなので、「#f」でなく、()を返すということなんですね。

納得、納得。

テキストが難しい~。

(= a b)は、問題で、実行した結果を確認すればそれで済むのですが、「どうしてそのような結果になるのか?」というところまで、考えると難しい。

まだ、20ページぐらいしか進んでいないのに、今年中に終わらせることができるのかなー( ・◇・)

2008/05/20

[scheme]何故ジャー??

なぜ、最後の結果が、()になるんだろー??

Photobucket

2008/05/19

[oracle]10gから、新機能PURGE(パージ)

DBのデータを変更するときに、気をつけなくちゃーいけないのが、drop文を発行しちゃうこと。

一度、これをしてしまうと、復元するのが、ものすごく大変なので、間違って実行してしまわないようにしているのですが、
先輩社員から、10gから、tableにゴミ箱機能が付くことを教えていただきました。

これは何かというと、dropしても、windowsのようにゴミ箱からファイルを戻すような感じで、tableの情報も元に戻るという優れもの。

ぐぐってみると、~ ORACLEいろいろメモメモ ~に構文が載ってました。

PURGE TABLE 削除テーブル名

via:□ PURGE(パージ)(10g ゴミ箱機能)

でdropしたtableの情報がゴミ箱に行くことになります。

また、この機能がうざい場合は、

PURGE RECYCLEBIN;

via:□ PURGE(パージ)(10g ゴミ箱機能)

で、ゴミ箱のテーブルが完全に消去されてしまうようです。

肝心の復元方法ですが、

FLASHBACK TABLE 削除前テーブル名 TO BEFORE DROP ;

via:□ PURGE(パージ)(10g ゴミ箱機能)

あまり、出会いたくはないですが、いざ何か起きたときに便利かなと思いました。

2008/05/18

[scheme]schemeを始めた理由

最近、いろいろな方から、「どうしてschemeを始めたの?」という意見を頂く機会が多いので、今回、考えをまとめてみました。

きっかけとなったのは、404 Blo Not Found:初心者向け言語もいろいろ

で、メタから下りて少しマジレスすると、Computer Scienceをきちんと教えている学校の多くは、最初の一年の前半に scheme を教えて、後半に C と assembly language を教えている。

via:初心者向け言語もいろいろ

確か、小飼さんが通っていた学校は、カリフォルニア大学バークレー校で海外の学校だったんですよね。

海外の大学生は、上のようの体系的にプログラムを勉強して、その後、ものすごいサービスを提供する会社を作ったり、入社したりして、成功してしまう。

もちろん他の要因もあると思うのですが、やはり体系的に勉強すると、いろいろと応用が利くんじゃーないのかなーと思ったのが、勉強する理由の一つとなりました。

さらに続いて、

たしかにこの組み合わせは、コンピューターに囲まれた現代生活からはかなり「禁欲的」ではある。「その場で使えるプログラム」を書くにはかなり辛いのだから。しかしこの二つをしっかりやっておけば、他の言語の習得はずっと簡単だ。

via:初心者向け言語もいろいろ

今、CFで開発を行っているのですが、今後も、CFが残っているかどうか、ものすごく疑問で、他の言語もできるようにしたいなーと思ったのも理由の一つです。

追記
schemeを先に学ぶことが、なぜ重要なのかは、小飼さんのいきなりCの方がよっぽど難しいにも書かれています。
とても参考になりますので、是非、一読してみてはどうでしょうか?

2008/05/17

[html]formタグの外側のsubmitは送信されない。

先週の木曜日に、研修のときに、後輩から、「Formタグの外側にsubmitボタンがあった場合、どのFormタグが送信されるんですか?」という質問について、しょーじき答えがわからなかったので、実際に検証してみました。

ファイルの拡張子は「.cfm」ですが、ソースを下のように実装しました。

<HTML>
<HEAD>
<TITLE>Test</TITLE>
</HEAD>
<BODY>
<FORM name="FrmMain" action="" method="post">
<INPUT type="text" name="hoge1" value="20080518">
</FORM>
<BR>
<FORM name="FrmSub" action="" method="post">
<INPUT type="text" name="hoge1" value="20080531">
</FORM>
<BR>
<INPUT type="submit" value="Run">
</BODY>
</HTML>

で、いざ、「Run」ボタンを押しても何もおきませんでした。

というわけで答えは、何も起こらないでした。

2008/05/16

基本情報技術者に合格

今日、合格発表の日だったのですが、なんとか基本情報技術者試験に合格することができました(* ̄∇ ̄*)

まじで超うれしんだけどー♪

いっぱい、いっぱい、勉強したから、受からなかったらどーしよーと思っていたのですが。

合格者番号にのっていたいて、、ほっと一安心しました。

先輩社員から、「次は、ソフトウエア開発だな!!」とおっしゃったのですが、果たして、受けるのかどうか迷っております。

きっと難しいんだろうなー。。。

2008/05/15

[ColdFusion]新人研修-アンケート用紙作成

ColdFusionの研修用のアンケート用紙を作成!!

ここからダウンロードできます。

是非、是非。

2008/05/14

[scheme]簡単な条件文を作成

条件分岐を表現する方法がわかったので、頭の中を整理するために、書いていきたいと思います。

一般的には、下のように表現します。

(cond (<p1> <e1>)
  (<p2> <e2>)


  (<pn> <en>)
)

そして、本には、絶対値の算出方法が記載されていました。

Photobucket
実行結果は、以下の通り。

Photobucket
と実行すると、9と返ってきて、

Photobucket
と実行しても、9と返ってきて、

Photobucket
と書くと0が返ってきました。

いろいろな条件を作って遊んでみるのもおもしろいかなと

2008/05/13

[oracle]ORA-01795発生

初めて知ったんですけど、where句のIN条件で使える要素数が、なんと1000までしか対応していないそうです。

1000よりも大きい要素を並べると、「ORA-01795:リストに指定できる式の最大数は1000です。」というエラーが返ってきます。

とりあえず、


  カラム = 要素1
OR カラム = 要素2
OR カラム = 要素3





OR カラム = 要素1001

で対応しできたけど、他に方法ってあるのかなー??

2008/05/12

[scheme]簡単なプロシージャ

schemeがすごくおもしろい。

画面に計算式を打ち込んで、結果が表示されるんだけど、ずーと、htmlやjsをやっていたので、ものすごく新鮮に感じます。

しかも、本を読みながら書かれているソースを実行しているので、なんか、ちゃんと勉強しているような感じです。

そこで、今日、簡単なプロシージャ(だと思う。。。)の作り方について書いてみたいと思います。

一般式はこんな感じ、

(define (変数名 引数) (プロシージャの具体的な処理内容))

そこで、試しにhogeプロシージャを作成。

Photobucket
上の式は、hoge = 2*x+1という1次方程式で、xに3を入れるときは、

Photobucket

と書きます。

すると、hogeプロシージャが7を返してくれます。

だんだん中身が濃くなってきたなー。

2008/05/11

[coldfusion]バグレポート日本語版作成

前回、研修用のドキュメントを日本語化したので、バグレポートの日本語版を作成しました。

こちらから見ることができます。

研修用のシステムでまだ、バグが発見できてないので、何も書いてないけど。

何か発見した際には、書き込んでいただけたら幸いです。

2008/05/10

[coldfusion]新人研修-トレーニングシステムリリース

先日、会社からColdFusionの研修を頼まれました。

で、どーしようかなーと悩んだ結果、何かアプリを作ってもらうのが一番いいかなーと思い、研修用のトレーニングシステムを作成しました。

そこで、自社だけ使われるのはいやだなーと思ったので、今回、ColdFusion-addonにオープンソースとして公開しました。

もちろん、特許のことを考え、趣味の一環として土日に作成しました。

ここに仕様とテーブル定義などを書きましたので、ColdFusionの新人研修等でお困りの方がいっらしゃったら、是非、使っていただけたらと思っております。

さらに、今回、初の日本語ドキュメントにしました。

後々、ドキュメントは英語にしたいなー。

模範解答として、DownLoadsにソースも公開しましたので、答えあわせ時に使っていただけたらと思います。

2008/05/09

[scheme]評価を木構造で表現

schemeは、ネストされた式を表現するのに、木構造が利用されるんだー。

2008/05/08

[scheme]変数宣言

毎日、を読みながらソースを作って楽しんでいるのですが、変数宣言がわかりました。

(Define 変数名 value)

でいけます。

試しに画像をのっけました。

Photobucket
値の表示をしたい場合は、そのまま変数名を書けばオッケーのようです。

先が楽しみです。


2008/05/07

[scheme]四則演算

本を読みながら、やっとこさ、四則演算ができました。

Photobucket

2008/05/06

[coldfusion][sql server]sql express editionのデータソース登録

今月、新人研修のインストラクタを頼まれたのですが、使うDBが、sql serverなので、家で久々に使おうと思ったら、データソースの登録仕方を忘れてしまったので、書き留めておきたいと思います。

対象となるDBは、windows sql server 2005 express editionです。

まず、sql server側で、サーバー認証を、sql server認証モードと、windows認証モードに変更する。
一番頭のdatabase上で、右クリックをして、プロパティを選択し、「セキュリティ」の「サーバー認証」を「sql server認証モードとwindows認証モード」にチェックを入れる。

Photobucket

「OK」を押す。

一番頭のdatabase直下にある「セキュリティ」の「ログイン」上で、右クリックを行い、「新しいログイン」を選択する。

ログイン名を入力し、SQL Server認証にチェックを入れて、パスワードを入力し、最後に「OK」を押す。

すべてのプログラム→Microsoft SQL SERVER 2005→構成ツール→SQL SERVER セキュリティを選択する。

SQLExpressのDATABASE Engineのリモート接続を選択し、「ローカル接続およびリモート接続」の「TCP/IPおよび名前付きパイプを使用する。」にチェックを入れて「適用」ボタンを押す。

すべてのプログラム→Microsoft SQL SERVER 2005→構成ツール→SQL SERVER 構成マネージャの順で選ぶ。

SQLEXPRESSのプロトコルを選択し、プロトコル名「TCP/IP」を選択する。

IPアドレスの「IP1」のIPアドレスと「IPALL」のTCP動的ポートをメモする。

ColdFusion administratorのデータベースで、任意のデータソース名を入力した後、Microsoft SQL Serverを選択する。

sql server直下に作成したデータベースをデータソース欄に記入し、メモしたIPアドレスとポート番号を入力する。

sql server認証のできるユーザー名とパスワードを入力して、「送信」ボタンを押せばオッケーです。

ここまでくるのにものすごく時間がかかってしまいました。

2008/05/05

[shceme]処理系が動いた!!

ヤタ!!
Photobucket

ちゃんと動いてる♪

ガンガン先に進みたいっすo(*^▽^*)o~♪

2008/05/04

[scheme]scheme の処理系、インストール完了

もうひとつの Scheme 入門を参考にして、処理系をインストールしました。

以下の手順でインストールします。インストーラーをダウンロードしてダブルクリックするだけでインストールできます。
まず、MIT/GNU Scheme のホームページに行って Windows binary をダウンロードします。
mit-scheme-7.7.1-ix86-win32.exe (2005/7/30 現在) がダウンロードされるのでそれをダブルクリックすればインストールされます。
インストールするディレクトリなどを聞いてきますので、全てデフォルトで良いでしょう。
インストールがすむと、Scheme, Compiler, Edwin, Documentation の4つのショートカットができます。
Scheme, Compiler, Edwin は実は同じプログラムを違うオプションで呼び出したものです。
Compiler を使えばネイティブコードに コンパイルされ、実行が早くなります。
ただし、Compiler の方がメモリを消費します。
Edwin は Scheme のコードを編集するための Emacs 風のエディタです。
これを使っても良いし、自分のお気に入りのエディタを使っても良いでしょう。

via:3.1. MIT-Scheme のインストールの手順

実際、mit-scheme-7.7.1-ix86-win32.exeはここにありました。

インストールは完了したのですが、さらに設定に続きがあって、

このままでもすぐに使い始められますが、ついでに scheme.ini を作成します。
環境変数 HOMEPATH で指定されたディレクトリに [code 1] に示すような scheme.ini を作ります。
HOMEPATH の値は DOS プロンプトを開いて、

>set HOMEPATH

とすれば確かめられます。 WinXP では初めから
\Document and Setting\username
に設定されています。もし、設定されていない場合は、
With Emacs: システム環境変数の設定 などを参考にして設定して下さい。

[code 1] scheme.ini の設定例

(cd "C:\\doc\\scheme")
(define call/cc call-with-current-continuation)

最初の行は C:\doc\scheme にディレクトリを移動しています。
Scheme プログラムのソースコードを保存するディレクトリに移動させましょう。
そうするとプログラムをロードするときフルパスを指定しなくてすみます
2行目は call-with-current-continuation という命令の短縮形を定義しています。

via:3.1. MIT-Scheme のインストールの手順

とOSがXPなので、書かれている通りにファイルを作成しました。

2008/05/03

[oracle]database linkの削除

昨日は、作成方法について書いたので、今日は、削除の方法を書きたいと思います。

大抵のobjectは、dropで削除できるので、database linkもおそらくdropでいけるとかと思って、ぐぐってみたら、sqlCommandのDROP DATABASE LINK

DROP DATABASE LINK dblink

via:DROP DATABASE LINK

そして、public database linkは、

DROP PUBLIC DATABASE LINK database link名

でいけるようです。

もちろん、それぞれの権限が必要なので要注意ですね。

2008/05/02

[oracle]database linkの作成

今日、database linkを作る機会があったので、作成方法について書きたいと思います。

MAKOCHI'S DATABASEのDatabase Linkの作成より

1.CREATE DATABASE LINK文
  CREATE [PUBLIC] DATABASE LINK dblink
   [CONNECT TO user IDENTIFIED BY password]
   [USING connect_string];

via:Database Linkの作成

PUBLICをつけると、PUBLICスキーマにdatabase linkが作成されます。

この時、重要なのは、SQLを実行するスキーマにCREATE PUBLIC DATABASE LINK権限があること。
CREATE DATABASE LINK権限とは違うので注意っす。

PUBLICをつけずに作成する場合は、CREATE DATABASE LINK権限で、作成することが可能です。

CONNECT TOは、何のユーザーで接続するかを設定するのですが、''を使う必要がないのが注意するところだと思います。

仮に、testユーザーでリンクを作る場合は、

CONNECT TO 'test'

ではなく、

CONNECT TO test

でOKということ。

パスワードは、IDENTIFIED BYで設定をするのですが、CONNECT TOと同じように''を使う必要がないので注意です。

USING句は、接続文字列を設定します。ここは、''で接続文字列を囲む必要があるんですねー。

うーん(+ +)

''がなくてもいいような気がするのですが。。。
まぁ~~~、接続文字列ですから、必要なのかもしれないなー。