調べたこと 第十九回
スピンコントロール(上下の矢印が付いている、入力欄のようなもの。)
や、カレンダーを作るのは大変なので、ライブラリを使って作ることができる。
jQueryがベースとなった、jQueryUI
こんな感じでコードを書ける↓
$("#myspiner").spinner(); →入力フィールドにスピンコントロールが入る。
$.datepicker.setDefaults($.datepicker.regional["ja"]); →カレンダーより前に日本語化
$("#myinput").datepicker(); →カレンダー化する
<inputo id="myspiner" type="text">
<inputo id="myinput" type="text">
スピンコントロールやカレンダーはテキストフィールドを装飾しているに過ぎない。
CDNとは
「キャッシュされており、高速にダウンロードできるサーバ」のこと
(インターネット上の各種サーバーのデータを一時的に保存しておき、ユーザーからの要求に応じて本来のサーバーの代わりにデータを送る。)
最高負荷の日に合わせてサーバやネットワークを用意すると、低負荷の日も最高負荷に備えたサーバを運用する必要があるので非常にコストがかかります。この場合のコストとは、電気代や回線代からサーバの保守費用、有償OSを使っている場合はそのライセンス費用などですね。1台のサーバには実にたくさんのコストがかかります。そこで、最高負荷の日だけサーバとネットワークを借りられたらどんなに楽だろう!というニーズに応えたのがCDNです。
CDNは簡単に言うと負荷を肩代わりしてくれるレンタルサーバのようなものです。上図のように一部の負荷を肩代わりしてもらうおかげで自分のサーバの負荷が下がり、安定してサービスを提供できるようになるわけです。
jQueryもHTMLやPHPと同じサーバに設置するのが一般的ですが、
CDNによって提供されているライブラリを使うことで、自分のサーバではなく
CDNのサイトからライブラリをダウンロードするようになり、負担が軽くなる。
調べたこと 第十八回
CSSとJavaScriptで装飾する
今一度、、
CSSは、要素に対して、色、サイズ、位置 などを装飾する仕組み
JavaScriptは、Webブラウザの中でプログラムを実行する仕組み
この2つを合わせて、素敵なページにする。
例
<div id="mydiv">というクラスがついた四角い要素に対して、JavaScriptで動きを出す
function move(){
document.getElementById("mydiv").style.left="100px";
}
<input type="button" onclick="move()"; value="移動">
これで、移動 というボタンを押すと左に100px分動くという動きをつけることができる。
これらの装飾で厄介なのが、ウェブブラウザによって動きが異なるということ。
ウェブブラウザごとに、またバージョンによっても動きが違うことがあり、いちいち
動作確認を取るのが現実的でないので、
「フレームワーク」というのが登場する。
これには、ブラウザごとに切り替える処理が内蔵されていて、プログラマが違いを知っておく必要はない。
フレームワークを常に最新版にしておけば、新しいブラウザにも対応。
このフレームワークとして、よく使われているものの中に、「jQuery」がある。
jQueryを読み込むとき、こんな書き方↓
<script language="javascript" src="jquery-1.11.2.min.js"></script>
読み込んでから、プログラムを書くときの内容はこうなる↓
function move(){
$(#mydiv).animate({ ←animateはアニメーションになるので、ゆっくり100px動く
left:"100px"
});
}
調べたこと 第十七回
出力のテンプレート化
テンプレートには、「値が入る場所」を特別なタグで埋め込んで、プログラムからはそこに値を差し込む。
最近のプログラムにはほとんどテンプレート化が使われている。
なぜ必要か?
○ テンプレートを見ればどんな出力がされるかだいたい分かる。
○ 変更する時にテンプレートだけを修正すればいい。
○ デザイナーとプログラマの共同作業がしやすい。
で、テンプレートを処理するにはとくていのライブラリを使わないといけない。
(テンプレートエンジン)
これで、有名なのがスマーティというエンジン。
ダウンロードしたら、ファイルを展開して、PHPファイルを配置する場所にコピーする。
で、テンプレートを作っていくけど、プログラムとは別のディレクトリに配置することが勧められている。
テンプレートを置くディレクトリを作って、テンプレートファイルは拡張子に .tpl
をつける。
このファイルをテキストエディタで編集していくけど、
制御したい部分に「{タグ名}」という特殊なタグを埋め込むことで指示をする。
スマーティにはほかにも必要なディレクトリがある。
templates_c → テンプレートがコンパイルされたものの保存先
cache → キャッシュに使うディレクトリ
注意!!
スマーティのディレクトリはWEBから見えないディレクトリに置くこと!
で、このテンプレートを使って出力するプログラムを作る。こんな感じ
<? php
require_once('libs/Smarty.class.php'); →libsはスマーティがあるのがこのディレクトリ
下だから。smartyのライブラリを読み込み
$smarty = new Smarty(); smartyはオブジェクトとして構成されている。
$smarty->template_dir ='templates/'; ディレクトリの場所を設定↓
$smarty-> complite_dir ='templates_c/';
$smarty->config_dir ='configs/';
$smarty->cache_dir ='cache/';
ここまでで、smartyが使えるようになった↑
$a = array("りんご","ばなな","みかん","じゃがいも","とまと");
$smarty->assign("items",$a); →itemsという名称で参照できる配列を作成
$smarty->display("〜.tpl"); →画面に表示されるようにするにはこのdisplayメソッド
?> を呼び出す。
html
<body>
<table border ='1'>
{foreach from=$items item=val} → itemsに値を設定 ループ展開してvalに代入
<tr><td>{$val}</td></tr> → valを出力
{foreach}
</table>
</body>
調べたこと 第十六回
文字列を分割したり置換したりするのに正規表現を使う
例 メールアドレス
HTML
<input type =" text " name= "email"> (入力されたメールアドレスは、
PHP masayo@example.co.jp)
$email1 = $_POST['email']; (一番目の$matches , 二番目の$matches)
if(preg_match( ↓このカッコで、三番目の引数に配列としてそれぞれ渡される
"/^([a-zA-Z0-9¥._¥-]+)@([a-zA-Z0-9_¥-]+¥.[a-zA-Z0-9¥._¥-]+)$/", $email, $matches)){
↑3番目の引数
$username = $matches[1];
$domain = $matches[2];
echo "ユーザー名:". $username."<br>";
echo "ドメイン名:". $domain."<br>";
}
else{
echo "書式が正しくありません。";
}
?>
このように表示される。
ユーザー名: masayo
ドメイン名: example.co.jp
調べたこと 第十四回
ライブラリ
プログラミング言語を拡張するもの。インストールして、利用できる関数を増やす。
API (アプリケーション・プログラミング・インターフェース)
ソフトウェアやアプリケーションと第三者が開発したソフトウェアと機能を共有できるようにしてくれるもの。
ライブラリ
使用頻度の高い機能や効果などのプログラムをまとめたもの。
ライブラリより上の、設計までも行ってくれるもの。
これらをインストールする方法
1,ソースコードをコピー
2, プログラミング言語のインストールするコマンドを使ってインストールする
3, ソースコードをダウンロードして、コンパイルしてインストールする。
(代表的なライブラリは、OSのパッケージとして提供されるので、そういったも
のは、OSのコマンドを使うだけでダウンロードできる)
コンパイルー> プログラミング言語で書かれた文字列をコンピュータ上で実行可能な形式にすること。
ビルドー> コンパイルしたのを、最終的に実行可能なファイルを作成すること。
またそういった過程で生成されたソフトウェア。
Linuxはそのままでは動作しないので、ユーザーが手軽に利用できるようにOS動作に必要なライブラリーやソフトウェアをまとめたパッケージ。
例 CentOS Redhat Debiana Ubuntu
一部のライブラリにはプログラミング言語と一体化したものがあって、それをModule
と呼ぶ。 その言語で何が利用できるかを調べる関数がある。
正規表現で書式をチェック
正規表現の関数はPCREライブラリに含まれていて、デフォルトでだいたい有効になっている。
例 「行頭」「数字が3つ」「ーがあってもなくてもいい」「数字が4つ」「行末」
^¥d{ 3 }¥-?¥d{ 4 }$
^¥[ 0123456789]{ 3 }¥-?[0123456789]{ 4 }$
^¥[0-9]{ 3 ]¥-?[0-9]{ 4 }$
この3つすべて同じチェックをしている。
調べたこと 第十三回
条件判定の方法
入力フォームをHTMLで作って、そのフォームからsubmitボタンを押すことで、PHPが実行されるという仕組みの場合、
直接PHPファイルを呼び出すと、Noticeメッセージというものが表示される。
なぜかというと、、、、
PHP側で表示させるためにHTMLで受け取らなければいけないフィールドがないから。
そこで、$_POSTが設定されていなければエラーメッセージを表示するという仕組みをIf文で作れば、Noticeメッセージを表示させないで済む。
論理演算子
ときには条件を組み合わせた結果を出したいことがある、そのときには論理演算子を使うことができる。
!→ 成り立たない &&→且つ ||→ または
「ある条件だったときには①を、そうでないときは②を採用する」
という構文。
例 $_POSTが設定されていないときはエラーメッセージを表示するのではなく、
「0」として扱う場合はこうなる。↓
if(isset($_POST["val1"])){
$val1=$_POST["val1"];
}else {
$val1=0; -> ②を採用するという部分。
}
三項演算子 をつかうと、、、、、
$val1=
isset($_POST["val1"]) ? $_POST["val1"] : 0; → ここだけが②を採用するとい
う意味になる。
で表すことができる。
調べたこと 第十二回
関数について
PHPのdate関数が、タイムゾーンの設定により9時間ずれて表示されることがある。
それを調整する方法が、
1、php.iniファイルの date.timezone = "............"の部分をAsia/Tokyo に変更する。
2、管理者権限のない場合は、ini_set関数でシステム設定を上書きすることができる。
<?php
ini_set("date.timezone", "Asia/Tokyo");
?>
とすると上書きできる。
型
プログラミング言語では”型”というものを重視していて、文字列型や整数や小数を表す型がある。
型の種類
・論理型(boolean) 真偽のどちらかを表す。
・整数(integer)整数を表す。
・浮動小数点数(float, double)小数を表す。
・文字列(string)文字列を表す。
・配列(array)配列や ハッシュ(連想配列)を表す。
・ヌル(null)値が設定されていないを表す。 etc........
ver_dump 関数を使うと、変数にどんな型のデータとして保存されているか調べることができる。これは、プログラマが変数に正しい値が入っているかどうかを調べる時に使う手法。
でも、プログラミング言語によっては型の変換が勝手にされることもある。これを暗黙的な型変換という。
でも、プログラマが予想した結果にならないこともあるので、型を意識している必要がある。