調べたこと 第八回

プログラミング言語には、インタプリタ形式とコンパイラ形式の2つの種類がある。

インタプリタ ー> プログラマが記述したプログラムを解釈しながら実行

テキストエディタさえあれば書けて、修正しやすいという利点。

速度がおそいので、文法ミスがあるか分かるのも遅い。

 

コンパイラ ー> バイナリコード(機械にしかわからないコード)に変換したプログラムで、処理速度が早くなる。(コンパイルするということをビルドするという)

プログラムを隠しておける。文法ミスがあれば、コンパイルする時点で発見できる。

コンパイラを用意しないといけない。(Javaなどが含まれる。)

 

Webサーバでどのようにプログラムが実行されているか?

まず、Webサーバソフトがポート80番や443番などで待っている。

そこに、クライアントがコマンドを送って来たら、その送られてきた内容を返すという仕組みになっている。

 

CGI 

サーバ上のプログラムを実行するときに使う。

#!/ usr /bin/○○○  -> この丸のところにプログラムの名前を入れるとどのプログラム

echo         でも実行できる。

echo

(ちゃんと画像データなども返すことができる)

 

大きな2つの問題がある

1,#!プログラム名 とするだけで、実行できることからセキュリティ的に弱い

2,アクセスしているユーザーの数だけCGIが作られるので、大きなメモリが必要と

  なり、実行環境の読み込みにも時間がかかることからパフォーマンスが良くない

              ↓ そこで

モジュール

アパッチなどのWebサーバにあらかじめ、それぞれのプログラムの環境を組んでおくしくみのこと。

すでにWebサーバと動いていて要求に応じて読み込む必要がなく、ユーザーの数だけ実行されるわけではないので、CGIの問題をカバーしている。

 

 

 

入力フォームの仕組み

HTMLでおなじみの<form>~</form>で囲われてるとこ。

inputタグの name='' はサーバ側でその名前として取得できる。

formタグのmethod にはGET or POST を指定できる。

GET ー> search.php?username=入力された値&email=入力された値

                   ↑

             クエリ文字列(querystring)

⦿キャッシュされる。

⦿大きなデータを送信できない。

⦿検索エンジンの結果などに使われる。

   

POST ー> search.php?username の後、入力されたデータを要求に続けて送信する。

⦿キャッシュが残らない。

⦿大きなデータを送信できる。

⦿申し込みページや購入ページなどに使われる。

 

これら2つの方法でデータが送信されるときには、URLエンコードという特別な変換がされる。

?や& が入力フォームのフィールドで区切りとして使われるので、混同を防ぐために、最初から漢字や記号は%16進数で表される。