ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Javascriptで音を鳴らす(WAVファイルを再生する)サンプルプログラム

2007-12-16 23:51:18 | JavaとWeb

以下のプログラムをIE(インターネットエクスプローラー)でみると、
再生WAVファイルのあとに枠があって、「再生実行」というボタンが出てきます。
で、その枠にWAVファイルのありか(sound1.wavとか、URLでも可)を入れて
「再生実行」ボタンをクリックすると、

音が鳴ります。
<html>
<SCRIPT type=text/javascript>
//******************************//
//	再生します	     //
//******************************//
function saisei(fname)
{
	document.all.music.src=fname;
}
</script>

<head><title>Sound Test</title></head>
<body>
<form name=f1 id=f1>
再生WAVファイル名
<input type=text name=fname id=fname >
<input type=button name=zikko value="再生実行" onClick="saisei(document.f1.fname.value)">
</form>
<bgsound src="#" id=music loop=1 autostart="false">
</body>
</html>

(上記< >は、本当は半角なので、プログラムにつかうときは、半角にしてね)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Googleが、サンタ追跡プロジェクトに参加するそうなんだけど。。

2007-12-16 21:06:02 | Weblog

ここのスラッシュドットニュース
今年もサンタを追跡するぞ!
http://slashdot.jp/articles/07/12/14/0038209.shtml

によると(以下斜体は上記サイトより引用)


毎年恒例、NORAD(北アメリカ航空宇宙防衛司令部)のサンタ追跡プロジェクトが既に動き出しています。これは、世界中を超高速で飛び回るサンタクロースを追跡することが可能であるというデモを通してアメリカの力を示威する目的で、冷戦のさなかの1955年に開始されたものです。冷戦が終わって当初の目的は薄くなりましたが、超高速で動く機器の開発への関心など、様々な思惑から複数のスポンサーがこのプロジェクトを支えつづけています。
今年は13社がスポンサーとなっており、この中には検索エンジンで有名なGoogle社も含まれています。


で、

24日にサンタの移動経路を示すGoogle Earth用のファイルがダウンロードできるようになるそう

です。

ただ、サンタ追跡のはじまった理由なんだけど、Googleのブログ
Tracking Santa, then and now
http://googleblog.blogspot.com/2007/11/tracking-santa-then-and-now.html

には、こう書いてある(以下斜体は上記サイトより引用)


It was more than half a century ago, on Christmas Eve in 1955, that a Sears Roebuck & Co. store in Colorado Springs advertised a special hotline number for kids to call Santa. What the company didn't know at the time was that they had inadvertently misprinted the telephone number. Instead of Santa's workshop, the phone number put kids through to the North American Aerospace Defense Command (NORAD), the bi-national U.S.-Canadian military organization responsible for the aerospace defense of the U. S. and Canada. Worse, it wasn't just any number at NORAD: it was the commander-in-chief's operations hotline. In the spirit of the season, Colonel Harry Shoup, the director of operations at the time, had his staff check radar data for any indication of a sleigh making its way south from the North Pole. They found that indeed there were signs of Santa, and merrily gave the children who called an update on his location. Thus, a tradition was born, and NORAD has continued to help children track Santa on Christmas Eve ever since.


シアーズローバックの宣伝のミスプリントで、NORADのホットラインにつながっちゃって、そこから始まったっていう、この話のほうが、冷戦のどーのこーのっていうより、面白くていいよね
(つーか、意外と、こっちのほうが、本当だったりして!?)

Colonel Harry Shoup、Good Job! (^^)v




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

いろんなコンピューター言語の覚え方:その11 ネットワーク

2007-12-16 14:35:47 | 土日シリーズ

土日シリーズ「いろんなコンピューター言語の覚え方」、第3回に、コンピューター言語の覚え方の手順をかきました。

今回は、そこの「(5)入出力処理」の「ネットワーク」です。




■ソケットが基本で、HTTPアクセス用も

 基本的に、JavaやC,VC++などは、ネットワークプログラム用として、ソケットを利用したプログラムができるような機能を提供しています。
 このソケットプログラムは、サーバー用、クライアント用も普通提供しています。

 さらに、もっと簡単にHTTPプロトコルが使えるように、HTTPアクセス用のプログラム(クライアント側)を用意している言語(というかライブラリ)もあります。

 HTTPアクセス用のプログラムの例にかんしては、Javaのものなんですけど、以下のところ
URLConnectionを使い、POST型で、CGIを呼び出すには
http://www.geocities.jp/xmldtp/jv_post.htm

でも見てもらうこととして(ただし、言語によっては多少違います)、今回は、ソケットを利用する場合について書きます。





■ソケットプログラム(クライアント)

 ソケット版プログラムには、クライアントとサーバー側がありますが、
 まずは、クライアント版。

 Javaの場合のサンプルは、Javaの入出力:Socket通信(クライアント側)

 にありますが、以下の通りになります。

1.ソケットを生成する
2.ソケットのOutputStreamを取り出し、
3.出力する
4.ソケットのInputStreamを取り出し、
5.返り値が帰ってくるまで待ち、
6.帰ってきたら適当に処理して
7.処理が終わったらクローズする

ほかの言語でもやることは、大体同じだと思います。




■ソケットプログラム(サーバー)

 サーバーの場合は、一度に何人も処理しないといけません。
 そこで、Javaの入出力:Socket通信(サーバー側 その3:複数クライアント対応プログラム)。 にあるように、

(1)受け手の入り口となりプログラムでは


1.Threadクラスを生成して
2.渡したい引数があれば、渡して
3.startする(そうすると、スレッドのほうのrunが走る)


をおこない、そこからスレッドによって発生された1つ1つのプログラムでは

1.入力・出力ストリームを取得し
2.読み込み
3.書き出し
4.クローズ

を行います。




■ソケットと、その上と、OSIとの関係

ソケットはOSIによると、5層目のセッションに相当します。
で、その上は、コード変換などを行うプレゼンテーション層、
さらにその上は、アプリケーション層となります。

Javaのソケットプログラムにおいて、Socketの上は、
そのJavaの入出力:Socket通信(サーバー側 その3:複数クライアント対応プログラム)。 のプログラムに

InputStream is1 =socket.getInputStream();
InputStreamReader ir1 = new InputStreamReader(is1);
BufferedReader br1 = new BufferedReader(ir1);

とありますが、socketが5層目、InputStreamReaderは6層目(こいつが、コード変換とかをする)、その上のBufferedReaderとかは、7層目(アプリケーション)になります。

そして、OSIは、下の層がちがっていても、インターフェースが同じなら、上位層は同じものが使えます。

 それを敷衍した形になるのですが、ファイルは、ネットワークではないのでOSIモデルにははいりませんが、まあ、5層目と考えると、ファイルの入出力、FileInputStreamは、SocketInputStreamとおなじインターフェースInputStreamを持っているので(ここで言っているインターフェースはjavaのインターフェースの意味でななく、同じ入出力の切り口を持っているのでという意味)、6層目に相当するInputStreamReaderは、どちらも使えます。
 それが、Javaの入出力:ファイル以外の入力と、入力時、2ないし3つのクラスを重ねる理由。で書いた、

になってくるわけです。




 ソケットの方法は言語(というかライブラリ)によって、差異があります。
 今日の話は、その共通部分的なところになります。
 実際に書く場合には、言語ごとにしらべないといけません。

 ってことで、今日はここまで。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする