とうとう、この日が来ました。
今日は、結婚式です。
会場準備中!!
2008/05/31
[javascript]functionをfunction内部で定義する
昨日の、Bugle Diary: [scheme]ネストでカプセル化で書いたのですが、schemeでは、宣言したプロシージャーの中に、さらにプロシージャーを宣言することができて、一般に、これをblock structureって呼ばれているんだけど、同じようなことがjavascriptでできることがわかりました。
<script type="text/javascript"> |
と書くことができて、この場合、hoge1を実行すると、testが返ってきます。
ためしに、ソースを導入しました。
是非、お試しあれ。
2008/05/30
[scheme]ネストでカプセル化
前に、Bugle Diary: [scheme][algorithm]ニュートン法によるルート計算という記事で、ニュートン法を使ったルートの計算を紹介しました。
その時、最後に、「ネストされると()が増えてわかりにくい」ということを書いたのですが、よくよくソースを見てみると、「これってひょっとしたらカプセル化なのでは??」と思い、再度、考察してみることにしました。
例えば、下の場合が、そのネストされているプロシージャーなのですが、
(define (hoge1 x) |
これは、hoge1で与えた引数に2を足した値を返すプロシージャーで、ネストされるプロシージャーの特徴として、hoge1プロシージャーの中に、hoge2のプロシージャを宣言しておいて、hoge1がhoge2を使っているんだけど、hoge1を運用する人は、hoge2の挙動を気にする必要がないんだよね。
hoge2は、外からわかならいというわけで、「これってカプセル化じゃーん」と思ったのです。
ただ、書籍には、カプセル化とは書かれていなかったので、違う呼び方をするのかもしれません。
うーん、でも、やっぱり、外で宣言したほうが、見やすいんじゃーないのかなーって思うんだけど。
2008/05/29
[word]これは便利、改ページ
ページの途中で新しいページに移りたくなる場合があります。
今までは、ずーと「改行」、「改行」、「改行」の連呼だったのですが、なんと改ページで一気にいけるということを知りました。
(今更かよ!!)
ページの途中で、改ページしたくなったとき、【改行】【改行】【改行】と、
何回も【改行】して改ページしたという人もいるかもしれません。
でも、めちゃくちゃ簡単に改行が出来ます。「Ctrl」と「Enter」を押せばいいんです。
「挿入」→「改ページ」という手もありますが、それよりもっと簡単!簡潔!お試しください。
「Ctrl」+「Enter」を押すと、改ページと記されて、その後の文章は次のページに行くのです。
via:Word実践編:《改ページをキー操作で》
と書かれていて、実際に試したら、ガチでできた。
わーい、わーい\(^▽^)/
2008/05/28
[javascript]<![CDATA[ ・・・ ]]>の記述
たま~~~に見かけるんだけど、javascriptの中に<![CDATA[ ・・・ ]]>って書いてあって、「これって何?」って気になってしまい、ちょこっとぐぐってみたら、初めてのJAVASCRIPTの原則「CDATAセクションを使う」に解答がありました。
via:原則「CDATAセクションを使う」
DOCTYPEとしてXHTMLを指定する場合は、埋め込み型のJavaScriptブロッ
クをCDATAセクションで囲み、さらにCDATAセクションをJavaScriptのコメント
を使って「コメントアウト」します。
・
・
・
//<![CDATA[
var dt = Date();
var msg ='<h3>Hello, World! Today is ' + dt + '</h3gt;';
document.writeln(msg);
//]]>
と書いてありました。
つまり、XHTMLでプログラムを書きたいとき、scriptのタグの中に、<![CDATA[]]>を入れて、さらにその中に、ソースを書かないといけないということ。
XHTMLでjavascriptを入れる場合、注意するところですね。
2008/05/27
[oracle]sql plusコマンド、PROMPT
初めて使った、「PROMPT」コマンド
機能
via:おらおら※plus:PROMPT
メッセージを表示します。
文法
PRO メッセージ
解説
例:
PRO こんちわ ・・・・・・ 'こんちわ'を画面に出力します。
上を参考にして、「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> |
ソースをブログに埋め込んじゃった。
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]演算子は、特殊なプロシージャー
さっきの記事を書いていて思ったのですが、「=」、「>」、「<」などは、定義をしなくても使える特殊なプロシージャなのかもしれません。
というのも、
で、これを見ると「<」、「>」は、ifや、condが使われていないのに、「#t」や「()」が戻っています。
なので、「>」、「<」は、ブール値「#t」、「()」を返すプロシージャということになります。
だんだん、頭の中がクリアーになってきました。
話は変わるけど、なんで、falseが「()」でしょう??
教科書では、「#f」と書かれているのに。。。
「#f」の方がわかりやすいと思うんだけどなーーー。
[scheme](= 1 2)は、false
昨日、(= a b)が、なぜ、()を返してしまうのか?について書いたのですが、教科書を読んでいるうちに、、ひょっとしたら、falseを意味しているのかもしれません。
というのも、下の場合、#tを返したからです。
というわけで、例えば、(= 1 2)は、falseなので、「#f」でなく、()を返すということなんですね。
納得、納得。
テキストが難しい~。
(= a b)は、問題で、実行した結果を確認すればそれで済むのですが、「どうしてそのような結果になるのか?」というところまで、考えると難しい。
まだ、20ページぐらいしか進んでいないのに、今年中に終わらせることができるのかなー( ・◇・)
2008/05/20
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> |
で、いざ、「Run」ボタンを押しても何もおきませんでした。
というわけで答えは、何も起こらないでした。
2008/05/16
基本情報技術者に合格
今日、合格発表の日だったのですが、なんとか基本情報技術者試験に合格することができました(* ̄∇ ̄*)
まじで超うれしんだけどー♪
いっぱい、いっぱい、勉強したから、受からなかったらどーしよーと思っていたのですが。
合格者番号にのっていたいて、、ほっと一安心しました。
先輩社員から、「次は、ソフトウエア開発だな!!」とおっしゃったのですが、果たして、受けるのかどうか迷っております。
きっと難しいんだろうなー。。。
2008/05/15
2008/05/14
[scheme]簡単な条件文を作成
条件分岐を表現する方法がわかったので、頭の中を整理するために、書いていきたいと思います。
一般的には、下のように表現します。
(cond (<p1> <e1>) (<p2> <e2>) ・ ・ (<pn> <en>) ) |
そして、本には、絶対値の算出方法が記載されていました。
実行結果は、以下の通り。
と実行すると、9と返ってきて、
と実行しても、9と返ってきて、
と書くと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プロシージャを作成。
上の式は、hoge = 2*x+1という1次方程式で、xに3を入れるときは、
と書きます。
すると、hogeプロシージャが7を返してくれます。
だんだん中身が濃くなってきたなー。
2008/05/11
[coldfusion]バグレポート日本語版作成
前回、研修用のドキュメントを日本語化したので、バグレポートの日本語版を作成しました。
こちらから見ることができます。
研修用のシステムでまだ、バグが発見できてないので、何も書いてないけど。
何か発見した際には、書き込んでいただけたら幸いです。
2008/05/10
[coldfusion]新人研修-トレーニングシステムリリース
先日、会社からColdFusionの研修を頼まれました。
で、どーしようかなーと悩んだ結果、何かアプリを作ってもらうのが一番いいかなーと思い、研修用のトレーニングシステムを作成しました。
そこで、自社だけ使われるのはいやだなーと思ったので、今回、ColdFusion-addonにオープンソースとして公開しました。
もちろん、特許のことを考え、趣味の一環として土日に作成しました。
ここに仕様とテーブル定義などを書きましたので、ColdFusionの新人研修等でお困りの方がいっらしゃったら、是非、使っていただけたらと思っております。
さらに、今回、初の日本語ドキュメントにしました。
後々、ドキュメントは英語にしたいなー。
模範解答として、DownLoadsにソースも公開しましたので、答えあわせ時に使っていただけたらと思います。
2008/05/09
2008/05/08
[scheme]変数宣言
毎日、本を読みながらソースを作って楽しんでいるのですが、変数宣言がわかりました。
(Define 変数名 value) |
でいけます。
試しに画像をのっけました。
値の表示をしたい場合は、そのまま変数名を書けばオッケーのようです。
先が楽しみです。
2008/05/07
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認証モード」にチェックを入れる。
「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
2008/05/04
[scheme]scheme の処理系、インストール完了
もうひとつの Scheme 入門を参考にして、処理系をインストールしました。
以下の手順でインストールします。インストーラーをダウンロードしてダブルクリックするだけでインストールできます。
via:3.1. MIT-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 風のエディタです。
これを使っても良いし、自分のお気に入りのエディタを使っても良いでしょう。
実際、mit-scheme-7.7.1-ix86-win32.exeはここにありました。
インストールは完了したのですが、さらに設定に続きがあって、
このままでもすぐに使い始められますが、ついでに scheme.ini を作成します。
via:3.1. MIT-Scheme のインストールの手順
環境変数 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 という命令の短縮形を定義しています。
と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文
via:Database Linkの作成
CREATE [PUBLIC] DATABASE LINK dblink
[CONNECT TO user IDENTIFIED BY password]
[USING connect_string];
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句は、接続文字列を設定します。ここは、''で接続文字列を囲む必要があるんですねー。
うーん(+ +)
''がなくてもいいような気がするのですが。。。
まぁ~~~、接続文字列ですから、必要なのかもしれないなー。