・通信をするためのプロトコル
httpはブラウザとサーバ間で利用するプロトコル(通信の決まりごと)。
リクエストとレスポンス。
tcp/ip
名前解決、デフォルト・ゲートウェイ
通信はパケットで行う。(TVはストリーミング。)
httpリクエストは改行をはさんで、ヘッダとボディに分けられる。
ヘッダーの先頭をリクエストラインと呼ぶ。
情報は全てテキストで記述されている。
ヘッダーは「こちらの状態はこういう状態なので、適切な形態でコンテンツを返してください」というもの。絶対に必要なものではない。

レスポンスも改行をはさんで、ヘッダとボディに大分類できる。
ヘッダーの1行目をステータスラインと呼ぶ。
ステータスコード
100 処理中ステータス
200 リクエスト承認
300 リクエスト情報不足
400 リクエスト側不備
500 サーバー側不備
ボディにはクライアントか要求されたファイルそのものが入っている。
クライアントはレスポンスのボディに含まれたファイルのデータを受け取り
ブラウザで表示等する。
ヘッダとボディの区切りは、その通信で初めての空改行。←初めての、最初のがポイント、絶対。
あくまで一番最初に出てきた空の改行が、ヘッダとボディの区切り。
リクエストは基本的に"GET {欲しいファイル名} HTTP/1.1"だけ。
バイナリファイルもHTTPで転送できる。
HTTPはリクエストとレスポンスの組み合わせでできており、やり取りはいつもリクエストから。

x-www-form-urlencoded…通常のHTTP通信では送信できない文字列をサーバに送るために変換していますよということを表している。urlエンコード

・HTMLやXMLなどのデータ形式や表現方法
xml…プログラムで処理しやすい形?
・データベースの扱い

linuxunixなどosの扱い

use strict; #変数のmy宣言漏れやスペルミスをコンパイル時に発見できる.
?コンパイル時ってことはモジュール作成時のみ効果ありなのか?
#自己解決
use CGI::Carp qw(fatalsToBrowser); #この1行でコンパイル時のエラーをブラウザへ出力してくれる.

use warning; #未使用の変数も検出.
use Carp; #エラーハンドリング記述.

use version; our $VERSION = qv('0.0.3');

windows環境下での"Module::Starter"によるperlモジュールの作成

cpanの初期化
コマンドプロンプトで、
> perl -MCPAN -e shell
もしくは、
> cpan
と入力。→cpanシェルの画面へ。

cpan > o conf init
と入力。
各設定を自動でまかせるもよし、手動で行うもよし。
cpan >q
で、再びDOS窓画面へ。

②Module::Starter::PBP、および動作に必要な関連モジュールのインストール
cpan -i Module::Starter::PBP
と入力し、"Module::Starter::PBP"および、動作に必要な関連モジュールをインストール。
cpanシェルの画面で、
cpan >install Module::Starter::PBP
と入力してもよい。

すると、c:\perl\cpan\buildフォルダに各モジュールが展開されるので、
できあがっている各libフォルダ、binフォルダ、.pmファイルを手動で、
perlフォルダの下(独立した.pmファイルはperl/libフォルダの下)へコピー。
※本当は手動でコピーする必要はないのかもしれないけど、私の環境では
各モジュールがc:\perl\cpan\buildフォルダに展開されるのみだったので、
手動でコピーするしかありませんでした。
#解決方法ご存知の方がおられましたら教えてください。

↑自己解決
コマンドラインから、予め
ppm install Clone
と、入力しておく。

③Module::Starter::PBP、セットアップ
コマンドラインから、
perl -MModule::Starter::PBP=setup
と入力。
すると、自分の名前とメールアドレスを求められるので、入力する。
すると、自分のホームディレクトリ直下に.module-starterフォルダが作成され、
その中に設定ファイルが作成される。

sql2

演算子
BETWEEN a AND b (>=と<=を論理演算子ANDで結んだものと結果は同じだが、この方が簡潔)
日付/時刻型の値を扱って「期間や時間も指定できる」
IN( a, b, … ) …個別の値を指定。どれか1つと合致する行を抽出。
※条件として指定する値が連続している場合はBETWEEN、バラバラの場合はIN演算子を使う!
LIKE…文字列を対象に値の比較(パターン・マッチング)を行う。
NOT LIKE
%…0個以上の文字で構成される任意の文字列と合致
[か-こ]%…文字範囲を指定できる。
[^あ-の]%…^はNOTを意味する。
%[ABDF]…[]内に文字を列挙することができる!その中の文字が含まれている行が抽出される。
_…任意の一文字を指定
'_____'…指定した文字数のデータを探すこともできる!
※文字列を格納するデータ型には可変長と固定長の2種類がある
固定長の場合は、予め確保されている桁数の分、スペースで埋められるため、
char(20)の場合、'まいちえもん'は'まいちえもん__________'←(10個分の半角スペース)と保存されている。
全角半角の区別はむずかしいので、(汗)
基本的に固定長の文字列は、コード番号など、すべてが半角文字の列だけを対象とした方がよい。

IS NULL
IS NOT NULL
NULL値を扱う処理全般では、RDBMS毎に動作が異なる場合があるので、それぞれの癖を把握しておく必要がある。
なのでなるべくNULL値を使わず、値が未定の列には初期値(0や空文字)を設定しておくとよい。

?シノニム