いまさらメモ
プロンプトって;つけないでEnterすると改行できるんDA!
てか気づくの遅EEEEEEEEEEEE
desc テーブル名;で各カラムのステ内容がでてくる。
☆ テーブルの正規化(参照フォルダは1227)
・システム設計の最初に行うこと
・テーブルを一定のルールで変形し利用効率をあげる=正規化
・第1~第5段階まであるが、最近は第2段階までの利用が多い。
★非正規化(素)
・Excelでセルに複数個
★★間違った修正★★
横に足さない!! 一度つくったテーブルにカラム追加はありえない!!
★正規化手順1
データは縦に足す。
1レコードのデータがすべてユニークになるように変更。
問題点
カラムごとの重複データが生じる。
★正規化手順2
受講者情報を格納したテーブルと講座情報を格納したテーブルに分割し独立。
◆これだけだと関連付けがないので、今回は受講者番号と口座番号のみのテーブルを別途作成。
第2正規化 受講だと第1正規化のシートとイコールになる。joinで連結できる。
これでtextの重複データをなくし、軽いintでの管理が可能となる。
◆VARCHARとCHARとTEXTの違い
CHARは固定文字列。CHAR(2)なら二文字必ず入力。
固定化したほうがメモリを食わないのでコストパフォーマンスに優れる。
最大の違い。
VARCHAR、CHARのカラムはindex可。
TEXT型のカラムにはindex不可。
indexをつけたいカラムの文字列はあらかじめVARCHARにしておく。
★1227フォルダのテーブルとデータインポート。復習のため記述省略
◆単純結合joinで練習~※途中※
select
student.id,
student.name,
address.student_id,
course.course_name,
jyukou.jyukou_name
from
student,
jyukou,
course
where
address.student_id = jyukou.jyukou_id
and address.course_id = .course_id;
★単純結合join超わかりやすいサンプル
SELECT
j.jyukou_id as "受講ID",
s.s_name as "受講者名",
s.s_address as "受講者住所",
s.s_tel as "受講者TEL",
c.c_name as "コース名",
c.c_place as "開講場所",
c.c_day as "開講日",
c.c_teacher as "担当講師"
FROM
student as s,
course as c,
jyukou as j
WHERE
j.s_num = s.s_num
and
j.c_num = c.c_num
ORDER BY
j.jyukou_id asc
;
◆鎌倉校だけ抜き出す
and c.c_place like '鎌倉%'
◆英語講座だけ抜き出す
and c.c_name like'英語基礎%'
◆データを削除した場合
※素朴に忘れてた削除命令;
delete from テーブル名 where カラム名;
削除すると結合時に存在しないデータの影響で不整合が起きてしまう。
☆リレーションシップ 関連付け
上記のままだと各個単独のテーブルのため、つど関連付けをするのは効率が悪い。
そのため外部参照という処理で親テーブルと子テーブルに設定すると連携できる。
正規化とセットで動くかなり一般的な手法なので覚えておこう。
◆外部キー参照のcreate tableで再生成。
◆指定したいカラムはnot nullで主キーかuniqueキー必須。
◆親テーブルには検索対象カラムにはindex必須。
ついでに検索対象になりうる項目も指定する。(上記条件クリアのテーブル限定)
↓index前の名前は変数みたいなの。好きにつけられる。
INDEX studentIndex ( s_num, s_name, s_tel ) ←カラムは複数可能
◆メリットとデメリット
メリット:誤削除、不要な追加不可→不整合なデータが存在しない。
削除しようとしてもこんなエラーが出る
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint
fails (`study`.`jyukou`, CONSTRAINT `jyukou_ibfk_2` FOREIGN KEY (`c_num`)
REFERENCES `course` (`c_num`))
削除は先に子テーブルの関係するidから削除する。
courseのid6を削除したいなら、先にjyukouのidが6のものを削除。
追加は先に親テーブルのカラムにデータを追加する
デメリット:NULL値利用不可。NULL値がどうしても入ってしまうテーブルなら外部参照は不向き。
※外部参照なくてもphpで制御する手法もある
参照先は子テーブルで設定する
FOREIGN (フォーリン):外部の
REFERENCES (リファレンス):参照
FOREIGN KEY ( s_num ) REFERENCES student ( s_num ),
FOREIGN KEY ( c_num ) REFERENCES course ( c_num )
◆ENGINE=InnoDB ??
MySQLにはいくつかのエンジンがあり、デフォルトはMyISAMだが、
外部参照を使うための拡張オプションとしてInnoDBに指定する必要がある。
ソースの一番最後でおk。
ENGINE=InnoDB
★定義の文書化 正規化手順.ods参照
いわゆるコードまとめと注釈。現場で提出要求あるので作成するくせをつけよう。
★ER図。相関図 正規化手順.ods参照
リンクツリーみたいなの。大規模システムだと必須。(つか視覚化ソフトありそう;)
★練習問題
正規化ステップ
1.縦にグループ化
2.重複データを排除
3.1テーブルにuniqueな番号をつけて、primaryキーに設定。
4.整数型で紐付ける。
☆eclipseとは?
IBMが開発した総合開発環境=IDE eclipse解説はここ
IDEて?
・プロジェクト管理
・チーム開発
・作成補助
・コンパイラ
・テキストエディタ
・ビルド、デバッガ
をひとくくりでできるソフト。
eclipseで初期プロジェクトちょっと作った。明日はもっと触りそう。
2010年12月27日月曜日
2010年12月24日金曜日
12/24覚書
★12/23欠席分の復習
プロンプトの環境変数にcd c:\pleiades\xampp\mysql\binを追加。
これでプロンプト起動させてすぐアクセス可能。
◆mysql -u ユーザー名 -p -bでbeep音消えるYO!
◆set names sjis;で日本語出るよ。プロンプト起動のたび設定だけど;
メールのサンプルデータ入れてカラム結合。
select
address.id,
address.name,
address.busyo_id,
busyo.busyo_name,
yakusyo.yakusyoku_name
from
address,
busyo,
yakusyoku
where
address.busyo_id = busyo.busyo_id
and address.yakusyoku_id = yakusyoku.yakusyoku_id;
where~=~は右側IDと同じ条件のIDを検索して、って意味。
and~は条件追加。
★amazonで色々。
mysql -u ユーザー名 -p < amazon_products.sql ←インポートしたいファイル
パスワード入力して
show tables;
で
\Gはselect分の表示方法。表の表示から縦表示で見やすくなるよ。
☆phpで表示させてみるよん。
<pre>タグできれいに出るよ。
<pre>
<?php
//mysql に接続する
$db = mysql_connect('localhost','ユーザー名','パスワード');
// データベースを選択する
$sdb = mysql_select_db('Study');
// クエリを送信する
$sql = "select * from amazon_products limit 1;";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
print_r($row);
}
?>
</pre>
◆printはインデント(TABキー)でレイアウトを整えるくせをつける。
◆print_rはデバッグ用タグ。カラムごとの内容がコマンドで出てくるよ。
★画像を出してみよう
<?php
//mysql に接続する
$db = mysql_connect('localhost','ユーザー名','パスワード');
// データベースを選択する
$sdb = mysql_select_db('Study'); ←use database;と同じ
// クエリを送信する
$sql = "select * from amazon_products limit 1;";
$result = mysql_query($sql); ←
while ($row = mysql_fetch_array($result)) {
print '<img src="'.$row["mediumimageurl"].'"><br>'; ←rowは1行表示
}
?>
★画像を大きくして……はやっちゃったので;
商品名と価格を出してみるよ。
上記にこの2行足すよ。
print $row["name"]."<br>";
print $row["price"]."円"."<br>";
カラムは()じゃなくて[]で囲うよ~……そこがわかんなかった;
★nullを除外、名前と画像
$sql = "select * from amazon_products where price is not null limit 10;";
sqlの箇所に入れ替え~~。
whereが先になる。limitて多分一番最後;
★preをprintに入れる。
print "<pre>";
print_r ($row);
print "</pre>";
★メールの練習問題
比較演算子
<= ***** ~まで
SELECT * FROM amazon_products WHERE price is not null AND price <= 30000 ORDER BY price DESC LIMIT 10
ソート
ascが昇順、descが降順
前文検索CANON
SELECT * FROM amazon_products WHERE price is not null AND name like '%Canon%' ORDER BY price DESC LIMIT 10
後方検索SONY
SELECT * FROM amazon_products WHERE price is not null AND name like 'sony%' ORDER BY price DESC LIMIT 10
limit →件数の指定
offset →~件目を指定。limitの後につく。
SELECT * FROM amazon_products WHERE price is not null ORDER BY price DESC LIMIT 100 offset 15
★画像にURLでジャンプ
print '<td>'.'<a href="'.$row["url"].'"><img border="0" src="'.$row["mediumimageurl"].'"></a>'.'</td>';
ここはさすがにわかたよー。つづりはここ参照www
phpで文字列を出したいときは''で。HTMLタグの中は""でくくるよん。
ぶっちゃけテンプレートエンジンでphpとhtmlを分けて作るからそんなに気にしないでおk。
釣りコーナーも更新予定。多分。
プロンプトの環境変数にcd c:\pleiades\xampp\mysql\binを追加。
これでプロンプト起動させてすぐアクセス可能。
◆mysql -u ユーザー名 -p -bでbeep音消えるYO!
◆set names sjis;で日本語出るよ。プロンプト起動のたび設定だけど;
メールのサンプルデータ入れてカラム結合。
select
address.id,
address.name,
address.busyo_id,
busyo.busyo_name,
yakusyo.yakusyoku_name
from
address,
busyo,
yakusyoku
where
address.busyo_id = busyo.busyo_id
and address.yakusyoku_id = yakusyoku.yakusyoku_id;
where~=~は右側IDと同じ条件のIDを検索して、って意味。
and~は条件追加。
★amazonで色々。
mysql -u ユーザー名 -p < amazon_products.sql ←インポートしたいファイル
パスワード入力して
show tables;
で
SELECT *
FROM `amazon_products`
←表示したいテーブル名
LIMIT 0 , 1;
で1レコードだけ出るよ
SELECT *
FROM `amazon_products`
LIMIT 0 , 1\G
\Gはselect分の表示方法。表の表示から縦表示で見やすくなるよ。
☆phpで表示させてみるよん。
<pre>タグできれいに出るよ。
<pre>
<?php
//mysql に接続する
$db = mysql_connect('localhost','ユーザー名','パスワード');
// データベースを選択する
$sdb = mysql_select_db('Study');
// クエリを送信する
$sql = "select * from amazon_products limit 1;";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
print_r($row);
}
?>
</pre>
◆printはインデント(TABキー)でレイアウトを整えるくせをつける。
◆print_rはデバッグ用タグ。カラムごとの内容がコマンドで出てくるよ。
★画像を出してみよう
<?php
//mysql に接続する
$db = mysql_connect('localhost','ユーザー名','パスワード');
// データベースを選択する
$sdb = mysql_select_db('Study'); ←use database;と同じ
// クエリを送信する
$sql = "select * from amazon_products limit 1;";
$result = mysql_query($sql); ←
while ($row = mysql_fetch_array($result)) {
print '<img src="'.$row["mediumimageurl"].'"><br>'; ←rowは1行表示
}
?>
★画像を大きくして……はやっちゃったので;
商品名と価格を出してみるよ。
上記にこの2行足すよ。
print $row["name"]."<br>";
print $row["price"]."円"."<br>";
カラムは()じゃなくて[]で囲うよ~……そこがわかんなかった;
★nullを除外、名前と画像
$sql = "select * from amazon_products where price is not null limit 10;";
sqlの箇所に入れ替え~~。
whereが先になる。limitて多分一番最後;
★preをprintに入れる。
print "<pre>";
print_r ($row);
print "</pre>";
★メールの練習問題
比較演算子
<= ***** ~まで
SELECT * FROM amazon_products WHERE price is not null AND price <= 30000 ORDER BY price DESC LIMIT 10
ソート
ascが昇順、descが降順
前文検索CANON
SELECT * FROM amazon_products WHERE price is not null AND name like '%Canon%' ORDER BY price DESC LIMIT 10
後方検索SONY
SELECT * FROM amazon_products WHERE price is not null AND name like 'sony%' ORDER BY price DESC LIMIT 10
limit →件数の指定
offset →~件目を指定。limitの後につく。
SELECT * FROM amazon_products WHERE price is not null ORDER BY price DESC LIMIT 100 offset 15
★画像にURLでジャンプ
print '<td>'.'<a href="'.$row["url"].'"><img border="0" src="'.$row["mediumimageurl"].'"></a>'.'</td>';
ここはさすがにわかたよー。つづりはここ参照www
phpで文字列を出したいときは''で。HTMLタグの中は""でくくるよん。
ぶっちゃけテンプレートエンジンでphpとhtmlを分けて作るからそんなに気にしないでおk。
釣りコーナーも更新予定。多分。
2010年12月22日水曜日
12/22覚書
☆MySQL基本操作
・XAMPP起動
・データベース作成
・プロンプトで
cd c:\pleiades\xampp\mysql\bin
mysql -u root
でコマンドラインでMySQL実行常態にする
・create database study;
データベース名studyでデータベース作成。
show databases;で作成確認。
・grant all on *.* to『ユーザー名』 @"localhost" identified by "パスワード";
でログイン用ユーザー名とパスワード作成
・flush privileges;
設定
・cd c:\pleiades\xampp\mysql\bin
mysql -u root ユーザー名 -p
パスワード要求出るので入力。
・show databases;で作成確認。
・statusでステ確認。
・create table member (id int not null auto_increment,name text,age int,primary kty (id));
テーブルにmemberって名前をつけて、
カラムはid(null無し、数値型)とname(文字列型)とage(数値型)にして、
idに主キーをつけるよ、と。
☆データベース操作一覧
・MySQLの実行(フォルダに移行してから)
mysql -u ユーザー名 -p
とパスワード入力。
・MySQLの終了
quit;かexit;
・データベース一覧表示
show databases; ←sがつくよ。
こんなの。
+--------------------+
| Database |
+--------------------+
| information_schema |
| cdcol |
| mysql |
| phpmyadmin |
| study |
| test |
+--------------------+
・データベース選択
use データベース名
・テーブル一覧表示
show tables; ←ここもs。
★データ入力
・カラムnameとageに自分の名前を入れてみるよ。
insert into member (name,age) values ('yamazaki','33');
テーブルmemberにカラムnameとageに入れるよ。
Query OKと出れば成功。
★セレクト
select name,age from member;
select 取得したいカラム from テーブル名; で名前と年齢がコマンドラインに出るよ。
こんな感じ
+----------+------+
| name | age |
+----------+------+
| yamazaki | 33 |
+----------+------+
1 row in set (0.00 sec)
★テーブル内全表示
select * from member;
ワイルドカードなのか~。
★更新
既存データ更新
update member set age =40
だと全員なっちゃう
※rollback; で戻る。
・条件付け更新。条件はwhereをつける。
update member set age = 20 where id = 5
・条件付け選択
select * from member where id = 1 or id = 2; 1番と2番
select * from member where id = 1 or || = 2; 1番と2番
select * from member where id <= 2; 2番目以降
select * from member where id >=2 2番目まで
・idが1番でyamazakiの条件に合うものを出す。
select * from member where id = 1 and name = 'yamazaki';
・何番目~何番目まで表示
select * from member where id >=4 and id < 9;
★空文字を入れてみるよ。
insert into member (age) values('');
・NULLを入れてみるよ
insert into member (age) values(null);
◆空文字とNULLは別物だよ。
上記の空文字だと文字列はNULL数字の場合はゼロ。
※ただしnullと入れればnullとして扱える
※※not null を作成時に指定した場合を除く
select * from member where name is null;
+----+------+------+
| id | name | age |
+----+------+------+
| 15 | NULL | 0 |
+----+------+------+
1 row in set (0.00 sec)
・NULL以外を表示してみるよ
select * from member where name is not null;
★ソート
・ID昇順ソート
select * from member order by id asc;
・ID降順ソート
select * from member order by id desc;
・あわせてソート
select * from member order by name asc, id desc;
★パターン検索
・前方一致
aaa%
select * from member where name like 'yama%';
+----+----------+------+
| id | name | age |
+----+----------+------+
| 1 | yamazaki | 33 |
+----+----------+------+
1 row in set (0.16 sec)
・後方一致
%aaa
select * from member where name like '%a';
+----+---------+------+
| id | name | age |
+----+---------+------+
| 3 | chihaya | 15 |
| 4 | haruka | 16 |
| 10 | azusa | 20 |
+----+---------+------+
3 rows in set (0.00 sec)
・すべて
%aaa%
select * from member where name like '%a%';
+----+----------+------+
| id | name | age |
+----+----------+------+
| 1 | yamazaki | 33 |
| 2 | ai | 15 |
| 3 | chihaya | 15 |
| 4 | haruka | 16 |
| 6 | makoto | 16 |
| 8 | yayoi | 14 |
| 10 | azusa | 20 |
| 13 | ami | 12 |
| 14 | mami | 12 |
+----+----------+------+
9 rows in set (0.00 sec)
★行数だけ取得
select count(*) from member;
★ID指定で修正。カラム変えればおk。
update member set age = 20 where id =10;
・NULLの名前を修正
update member set name = 'takagi' where name is null;
・空文字の名前を修正
update member set name = 'takagi' where name = '';
・テーブル追加
alter table member add address text;
alter table テーブル名 add 追加したいカラム名 種別;
☆練習 アドレス帳
1.create文を作成。コピペ禁止
その場で作成→エラー→一旦memberのテーブルから出て作成→エラー→単純にスペース不足;
create table memberz (id int not null auto_increment,name text,
address text,tel text,up int,primary key ( id ));
zだけ追加w
2.各カラムのデータ型を考える
id int not null auto_increment,name text,address text,tel text,up int,
upを更新日にしたかったが、日付はまた別のタイプだとすっかり忘れ;
alter table memberz modify up data;
modifyでカラムタイプ変更。
Ex.カラムの後にカラムを追加し型指定。参考ここ
◆運用中のカラムに追加するのは大トラブルの元!◆
◆なので練習できるうちにたくさん失敗しておこう◆
3.insratでデータを自分で考える
mysql> insert into memberz (name,address,tel,up) values('haruka','yamanote','03-
1111-1111','2010/12/20');
んでこんなのできた。
+----+---------+-----------+--------------+------------+
| id | name | address | tel | up |
+----+---------+-----------+--------------+------------+
| 1 | haruka | akasaka | 03-1111-1111 | 2010-12-22 |
| 2 | thihaya | yamanote | 03-7777-2222 | 2010-12-22 |
| 3 | rituko | odaiba | 03-1515-4545 | 2010-12-22 |
| 4 | ryo | akihabara | 03-2525-4545 | 2010-12-22 |
+----+---------+-----------+--------------+------------+
4 rows in set (0.00 sec)
今日はなんかすんなりできた……。
関数がネックだというのがよ~~~~くわかりました;
1~100までのテストで後一歩まちがえたあああああああああ
丸暗記したと思ってたのに><
あああああ明日が怖ぇえええええええ
・・・・・・・・・・・・でも息抜きじゃねえっすYO;
・XAMPP起動
・データベース作成
・プロンプトで
cd c:\pleiades\xampp\mysql\bin
mysql -u root
でコマンドラインでMySQL実行常態にする
・create database study;
データベース名studyでデータベース作成。
show databases;で作成確認。
・grant all on *.* to『ユーザー名』 @"localhost" identified by "パスワード";
でログイン用ユーザー名とパスワード作成
・flush privileges;
設定
・cd c:\pleiades\xampp\mysql\bin
mysql -u root ユーザー名 -p
パスワード要求出るので入力。
・show databases;で作成確認。
・statusでステ確認。
・create table member (id int not null auto_increment,name text,age int,primary kty (id));
テーブルにmemberって名前をつけて、
カラムはid(null無し、数値型)とname(文字列型)とage(数値型)にして、
idに主キーをつけるよ、と。
☆データベース操作一覧
・MySQLの実行(フォルダに移行してから)
mysql -u ユーザー名 -p
とパスワード入力。
・MySQLの終了
quit;かexit;
・データベース一覧表示
show databases; ←sがつくよ。
こんなの。
+--------------------+
| Database |
+--------------------+
| information_schema |
| cdcol |
| mysql |
| phpmyadmin |
| study |
| test |
+--------------------+
・データベース選択
use データベース名
・テーブル一覧表示
show tables; ←ここもs。
★データ入力
・カラムnameとageに自分の名前を入れてみるよ。
insert into member (name,age) values ('yamazaki','33');
テーブルmemberにカラムnameとageに入れるよ。
Query OKと出れば成功。
★セレクト
select name,age from member;
select 取得したいカラム from テーブル名; で名前と年齢がコマンドラインに出るよ。
こんな感じ
+----------+------+
| name | age |
+----------+------+
| yamazaki | 33 |
+----------+------+
1 row in set (0.00 sec)
★テーブル内全表示
select * from member;
ワイルドカードなのか~。
★更新
既存データ更新
update member set age =40
だと全員なっちゃう
※rollback; で戻る。
・条件付け更新。条件はwhereをつける。
update member set age = 20 where id = 5
・条件付け選択
select * from member where id = 1 or id = 2; 1番と2番
select * from member where id = 1 or || = 2; 1番と2番
select * from member where id <= 2; 2番目以降
select * from member where id >=2 2番目まで
・idが1番でyamazakiの条件に合うものを出す。
select * from member where id = 1 and name = 'yamazaki';
・何番目~何番目まで表示
select * from member where id >=4 and id < 9;
★空文字を入れてみるよ。
insert into member (age) values('');
・NULLを入れてみるよ
insert into member (age) values(null);
◆空文字とNULLは別物だよ。
上記の空文字だと文字列はNULL数字の場合はゼロ。
※ただしnullと入れればnullとして扱える
※※not null を作成時に指定した場合を除く
select * from member where name is null;
+----+------+------+
| id | name | age |
+----+------+------+
| 15 | NULL | 0 |
+----+------+------+
1 row in set (0.00 sec)
・NULL以外を表示してみるよ
select * from member where name is not null;
★ソート
・ID昇順ソート
select * from member order by id asc;
・ID降順ソート
select * from member order by id desc;
・あわせてソート
select * from member order by name asc, id desc;
★パターン検索
・前方一致
aaa%
select * from member where name like 'yama%';
+----+----------+------+
| id | name | age |
+----+----------+------+
| 1 | yamazaki | 33 |
+----+----------+------+
1 row in set (0.16 sec)
・後方一致
%aaa
select * from member where name like '%a';
+----+---------+------+
| id | name | age |
+----+---------+------+
| 3 | chihaya | 15 |
| 4 | haruka | 16 |
| 10 | azusa | 20 |
+----+---------+------+
3 rows in set (0.00 sec)
・すべて
%aaa%
select * from member where name like '%a%';
+----+----------+------+
| id | name | age |
+----+----------+------+
| 1 | yamazaki | 33 |
| 2 | ai | 15 |
| 3 | chihaya | 15 |
| 4 | haruka | 16 |
| 6 | makoto | 16 |
| 8 | yayoi | 14 |
| 10 | azusa | 20 |
| 13 | ami | 12 |
| 14 | mami | 12 |
+----+----------+------+
9 rows in set (0.00 sec)
★行数だけ取得
select count(*) from member;
★ID指定で修正。カラム変えればおk。
update member set age = 20 where id =10;
・NULLの名前を修正
update member set name = 'takagi' where name is null;
・空文字の名前を修正
update member set name = 'takagi' where name = '';
・テーブル追加
alter table member add address text;
alter table テーブル名 add 追加したいカラム名 種別;
☆練習 アドレス帳
1.create文を作成。コピペ禁止
その場で作成→エラー→一旦memberのテーブルから出て作成→エラー→単純にスペース不足;
create table memberz (id int not null auto_increment,name text,
address text,tel text,up int,primary key ( id ));
zだけ追加w
2.各カラムのデータ型を考える
id int not null auto_increment,name text,address text,tel text,up int,
upを更新日にしたかったが、日付はまた別のタイプだとすっかり忘れ;
alter table memberz modify up data;
modifyでカラムタイプ変更。
Ex.カラムの後にカラムを追加し型指定。参考ここ
ALTER TABLE テーブル名 ADD 追加するカラム名 型 AFTER カラム名;
◆運用中のカラムに追加するのは大トラブルの元!◆
◆なので練習できるうちにたくさん失敗しておこう◆
3.insratでデータを自分で考える
mysql> insert into memberz (name,address,tel,up) values('haruka','yamanote','03-
1111-1111','2010/12/20');
んでこんなのできた。
+----+---------+-----------+--------------+------------+
| id | name | address | tel | up |
+----+---------+-----------+--------------+------------+
| 1 | haruka | akasaka | 03-1111-1111 | 2010-12-22 |
| 2 | thihaya | yamanote | 03-7777-2222 | 2010-12-22 |
| 3 | rituko | odaiba | 03-1515-4545 | 2010-12-22 |
| 4 | ryo | akihabara | 03-2525-4545 | 2010-12-22 |
+----+---------+-----------+--------------+------------+
4 rows in set (0.00 sec)
今日はなんかすんなりできた……。
関数がネックだというのがよ~~~~くわかりました;
1~100までのテストで後一歩まちがえたあああああああああ
丸暗記したと思ってたのに><
あああああ明日が怖ぇえええええええ
・・・・・・・・・・・・でも息抜きじゃねえっすYO;
2010年12月21日火曜日
12/21覚書
予定
・classの続き
・開発の流れ
・クラスの続き2
継承・オーバーライド
・php理解度テスト
・データベース
MySQL環境開発
☆システム開発
ウォーターフォールモデル
順に行うモデル
・基本設計
システム化計画を作成する(どこをシステム化したいか。クライアントの要求をリストアップし定義)
プロジェクト実行計画を作成する(費用、作成期間、必要人数)。
・外部設計
画面、出力設計(サイトデザイン、データの出力)。
コード設計。
・内部設計
物理データの設計。
入出力詳細設計。
・製造
プログラムの構造化設計。
コーディング。
単体テスト(買い物とかログイン)。
・各テスト
設計段階で設定された機能、性能用件を満たしているかのテスト。
会員登録→検索→購入→発送。
負荷テスト、障害およびその回復テスト。
クレジット決済中のサーバーダウンで決済はキャンセルできたか。
・運用
プロトタイプモデル
クライアント提出用モデル
・試作を行う。
・要求された内容で満足されているか?
・満足されない場合、改造を行っていく。
・それらを繰り返しながら完成させていく。
スパイラルモデル
・ウォーターフォールモデルで作成し、運用しながらプロトタイプモデルで開発していく。
たいていの企業は今この手法。mixiも。
ラウンドトリップモデル
・分析
・設計
・プログラミング
・各工程をフィードバックしながら循環的に作業を行う。
アジャイル(XP開発手法byWiki)
・細かい規定を作らない。
・開発手順、ドキュメントは細かく定義しない。
・短期間に最優先の項目を少人数で進行。
・メリットを失って本質を見失ってグダグダになることも多かったそうな。
☆練習問題 電卓。読解力がないことを痛感。
◆コンストラクタでset出来てる。
◆get、setはわかりやすい(CCSのclassのように)命名したもの。
今回はgetの代わりにplus。
◆つかこのclassでの記述って昨日のとどっちがよいのだろ?
→CSSとHTMLのようにclassと実行ファイルは別々に作成することが多く、
記述の順序は問わない。
class Den{
#メンバ変数(=宣言)
private $a;
private $b;
//コンストラクタ
function Den($a, $b) {
$this->a = $a;
$this->b = $b;
}
#+返す
function plus(){
return $this->a + $this->b;
}
#-返す
function minus(){
return $this->a - $this->b;
}
#*返す
function multiply(){
return $this->a * $this->b;
}
#/返す
function division(){
return $this->a / $this->b;
}
}
#############
#実行
#############
#インスタンス化
$den = new Den(10,2);
#計算
print "足し算:" . $den->plus()."<br>\n";
print "引き算:" . $den->Minus()."<br>\n";
print "掛け算:" . $den->Multiply()."<br>\n";
print "割り算:" . $den->Division()."<br>\n";
elseifのパターンも勉強しよ。
if並べるよりデータの処理が早いそうな。
☆継承
あるクラスの型を引き継いだ新しいクラスを作ること
基本クラスの機能に対して新たな機能を追加したり、
一部の機能をカスタマイズする目的で行われ、
その他の機能に関しては、基本クラスの機能はそっくりそのまま「継承」する。
extendsを使う。
親クラスをスーパークラス。
子供をサブクラスと呼ぶ。
☆オーバーライド
親クラスのメソッドと同じ名前のメソッドを定義して上書きすること。
class Tokei {
function getTime() {
return date('H:i:s');
}
}
時計クラス(親)に目覚まし時計クラス(子)を継承
class MezamashiTokei extends Tokei {
function getBell() {
return "リンリンリン !";
}
}
☆復習~
for($i = 1; $i <= 101; $i++){
if($i%3==0){
print "  Fizz!\n";
}
if($i%5==0){
print "  Buzz!\n";
}
if(($i%3 != 0) && ($i%5 != 0)){
print $i. "  \n";
}
print "<br>\n";
}
===は型まで正しいか判定する演算子。
☆データベース
データベースとは?
・携帯の電話帳
データベースソフト
・Excel
データベース アドレスなど
MySQL データベースサーバー
SQL データベースソフト
テーブル=Excelのシート
縦列=カラム(column)、フィールド Ex.カラム名、フィールド名
横行=レコード(record)
データベース型には大分類で数値型、日付型、文字列型に分けられる。
読み方はここ
データベース名、テーブル名、カラム名は英数字で指定。
・主キー(プライマリキー)=要任意設定。ただし絶対に重複しないカラムの値。
基本的にひとつのテーブルに主キーが設定される。(主キーがないテーブルもあるが今は除外
通例としてnumber、社員番号
・NULL ぬるぽガッのヌル?
データが空の状態をNULLという。Ex.「NULL値が入っている」=何も入っていない
主キーにはNULL値の許可はありえない。
・ユニーク=ただひとつの、の意。
・ロック(排他制御)
レコード単位でアクセス制限。ほかのレコードはおk。
設定によって変更可能だがレコードごとにかけるのが一般的。
☆SQLとは
・データベースに命令するための言語。
・方言あり、全データベースで共通する標準語をANSI基準という。Ex.有名どころでORACLE
・有料サーバーはサポート有。
・データ操作言語 4つしかないから覚えやすい、きっと。
新規データの追加
insert into テーブル名(カラム名) values 値;
・既存データの検索
SELECT フィールド名 FROM テーブル名 WHERE 条件式 ;
・既存データの更新
UPDATE テーブル名 SET フィールド名 = 値 ;
・既存データの削除
DELETE FROM テーブル名 WHERE 条件式 ;
代表的なデータ定義言語( DDL )
・新規データベースの作成
CREATE DATABASE データベース名 ;
・新規テーブルの作成
CREATE TABLE テーブル名 (フィールド名 データ型) ;
・既存テーブルの変更
ALTER TABLE テーブル名 ADD フィールド名等 ;
・データベースの表示/テーブルの表示
SHOW DATABASES ; / SHOW TABLES ;
☆MySQLとPHPの関係 シンプル図解
DB←PHP
↓
HTML
☆MySQLに設定 文字化け防止
[mysqld]に追加。
defalt-character-set = utf8
skip-chsracter-set-client-handshake
character-set-server = utf8
collation-server =utf8_general_ci
init-connect =SET NAMES utf8
[client]と[mysql]と[mysqldump]に
defalt-character-set = utf8
☆utf-8になってるか調べる
・ MySQLサーバー起動を確認
・プロンプトで
cd c:\pleiades\xampp\mysql\bin
mysql -u root
status
まで実行。
show variables like "char%";
を実行。
文字コードがutf-8になってたら終了…のはずが。
ApacheでMySQLサーバーが動かない…windows再起動も無理。
別の人からiniファイルもらって上書きで成功。
・classの続き
・開発の流れ
・クラスの続き2
継承・オーバーライド
・php理解度テスト
・データベース
MySQL環境開発
☆システム開発
ウォーターフォールモデル
順に行うモデル
・基本設計
システム化計画を作成する(どこをシステム化したいか。クライアントの要求をリストアップし定義)
プロジェクト実行計画を作成する(費用、作成期間、必要人数)。
・外部設計
画面、出力設計(サイトデザイン、データの出力)。
コード設計。
・内部設計
物理データの設計。
入出力詳細設計。
・製造
プログラムの構造化設計。
コーディング。
単体テスト(買い物とかログイン)。
・各テスト
設計段階で設定された機能、性能用件を満たしているかのテスト。
会員登録→検索→購入→発送。
負荷テスト、障害およびその回復テスト。
クレジット決済中のサーバーダウンで決済はキャンセルできたか。
・運用
プロトタイプモデル
クライアント提出用モデル
・試作を行う。
・要求された内容で満足されているか?
・満足されない場合、改造を行っていく。
・それらを繰り返しながら完成させていく。
スパイラルモデル
・ウォーターフォールモデルで作成し、運用しながらプロトタイプモデルで開発していく。
たいていの企業は今この手法。mixiも。
ラウンドトリップモデル
・分析
・設計
・プログラミング
・各工程をフィードバックしながら循環的に作業を行う。
アジャイル(XP開発手法byWiki)
・細かい規定を作らない。
・開発手順、ドキュメントは細かく定義しない。
・短期間に最優先の項目を少人数で進行。
・メリットを失って本質を見失ってグダグダになることも多かったそうな。
☆練習問題 電卓。読解力がないことを痛感。
◆コンストラクタでset出来てる。
◆get、setはわかりやすい(CCSのclassのように)命名したもの。
今回はgetの代わりにplus。
◆つかこのclassでの記述って昨日のとどっちがよいのだろ?
→CSSとHTMLのようにclassと実行ファイルは別々に作成することが多く、
記述の順序は問わない。
class Den{
#メンバ変数(=宣言)
private $a;
private $b;
//コンストラクタ
function Den($a, $b) {
$this->a = $a;
$this->b = $b;
}
#+返す
function plus(){
return $this->a + $this->b;
}
#-返す
function minus(){
return $this->a - $this->b;
}
#*返す
function multiply(){
return $this->a * $this->b;
}
#/返す
function division(){
return $this->a / $this->b;
}
}
#############
#実行
#############
#インスタンス化
$den = new Den(10,2);
#計算
print "足し算:" . $den->plus()."<br>\n";
print "引き算:" . $den->Minus()."<br>\n";
print "掛け算:" . $den->Multiply()."<br>\n";
print "割り算:" . $den->Division()."<br>\n";
elseifのパターンも勉強しよ。
if並べるよりデータの処理が早いそうな。
☆継承
あるクラスの型を引き継いだ新しいクラスを作ること
基本クラスの機能に対して新たな機能を追加したり、
一部の機能をカスタマイズする目的で行われ、
その他の機能に関しては、基本クラスの機能はそっくりそのまま「継承」する。
extendsを使う。
親クラスをスーパークラス。
子供をサブクラスと呼ぶ。
☆オーバーライド
親クラスのメソッドと同じ名前のメソッドを定義して上書きすること。
class Tokei {
function getTime() {
return date('H:i:s');
}
}
時計クラス(親)に目覚まし時計クラス(子)を継承
class MezamashiTokei extends Tokei {
function getBell() {
return "リンリンリン !";
}
}
☆復習~
for($i = 1; $i <= 101; $i++){
if($i%3==0){
print "  Fizz!\n";
}
if($i%5==0){
print "  Buzz!\n";
}
if(($i%3 != 0) && ($i%5 != 0)){
print $i. "  \n";
}
print "<br>\n";
}
===は型まで正しいか判定する演算子。
☆データベース
データベースとは?
・携帯の電話帳
データベースソフト
・Excel
データベース アドレスなど
MySQL データベースサーバー
SQL データベースソフト
テーブル=Excelのシート
縦列=カラム(column)、フィールド Ex.カラム名、フィールド名
横行=レコード(record)
データベース型には大分類で数値型、日付型、文字列型に分けられる。
読み方はここ
データベース名、テーブル名、カラム名は英数字で指定。
・主キー(プライマリキー)=要任意設定。ただし絶対に重複しないカラムの値。
基本的にひとつのテーブルに主キーが設定される。(主キーがないテーブルもあるが今は除外
通例としてnumber、社員番号
・NULL ぬるぽガッのヌル?
データが空の状態をNULLという。Ex.「NULL値が入っている」=何も入っていない
主キーにはNULL値の許可はありえない。
・ユニーク=ただひとつの、の意。
・ロック(排他制御)
レコード単位でアクセス制限。ほかのレコードはおk。
設定によって変更可能だがレコードごとにかけるのが一般的。
☆SQLとは
・データベースに命令するための言語。
・方言あり、全データベースで共通する標準語をANSI基準という。Ex.有名どころでORACLE
・有料サーバーはサポート有。
・データ操作言語 4つしかないから覚えやすい、きっと。
新規データの追加
insert into テーブル名(カラム名) values 値;
・既存データの検索
SELECT フィールド名 FROM テーブル名 WHERE 条件式 ;
・既存データの更新
UPDATE テーブル名 SET フィールド名 = 値 ;
・既存データの削除
DELETE FROM テーブル名 WHERE 条件式 ;
代表的なデータ定義言語( DDL )
・新規データベースの作成
CREATE DATABASE データベース名 ;
・新規テーブルの作成
CREATE TABLE テーブル名 (フィールド名 データ型) ;
・既存テーブルの変更
ALTER TABLE テーブル名 ADD フィールド名等 ;
・データベースの表示/テーブルの表示
SHOW DATABASES ; / SHOW TABLES ;
☆MySQLとPHPの関係 シンプル図解
DB←PHP
↓
HTML
☆MySQLに設定 文字化け防止
[mysqld]に追加。
defalt-character-set = utf8
skip-chsracter-set-client-handshake
character-set-server = utf8
collation-server =utf8_general_ci
init-connect =SET NAMES utf8
[client]と[mysql]と[mysqldump]に
defalt-character-set = utf8
☆utf-8になってるか調べる
・ MySQLサーバー起動を確認
・プロンプトで
cd c:\pleiades\xampp\mysql\bin
mysql -u root
status
まで実行。
show variables like "char%";
を実行。
文字コードがutf-8になってたら終了…のはずが。
ApacheでMySQLサーバーが動かない…windows再起動も無理。
別の人からiniファイルもらって上書きで成功。
2010年12月20日月曜日
12/20覚書
☆練習問題
作ってみたら2重括弧と最後の構文でつまづいてた。
個別ならある程度わかってきたけど組み立てるところで「???」ってなてます;;;
function saiten($namae,$kokugo,$sansuu,$rika,$syakai){
//まず合計と平均を求めます
$goukei = ($kokugo+$sansuu+$rika+$syakai);
$heikin = ($goukei / 4);
//平均点をもとに、出来具合を判定します
if ($heikin >= 80){
$hantei = "たいへんよくできました。";
}
elseif ($heikin >= 60 && $heikin < 80){
$hantei = "もう少しがんばりましょう。";
}
elseif ($heikin > 60){
$hantei = "補習を受けてください。";
}
//文系or理系の判定をします
if (($kokugo + $syakai) > ($sansuu + $rika)){
$type = "文系";
}
elseif (($kokugo + $syakai) < ($sansuu + $rika)){
$type = "理系";
}
else{
$type = "文理系";
}
//戻り値(最終的にやりたいこと)を記述します
return print("{$name}さんの判定結果<br>合計点は{$goukei}点です<br>平均点は{$heikin}点です<br>{$hantei}<br>");
}
//「saiten」関数を使用する
saiten("桑山",85,35,50,75);
saiten("一戸",65,95,85,80);
saiten("田中マルクス闘莉王",30,40,25,35);
解説
if ($heikin >= 80){
>=で80以上
($heikin >= 60 && $heikin < 80)
>= 60 && $heikin < 80
>=60以上 &&かつ <80未満
ていうか&&つかった問題やってなかったよなぁ…。
☆クラス
・考え方としては鯛焼きの鋳型と材料と出来上がった鯛焼き。
人
・名前:■■■
・住所:■■■
・性別:■■■
・何系: 文/理
■■■の部分を作っていく。
☆ここで資料の雛形べた打ち~
・関数のことをメソッドという。
・get宣言の最初の文字は大文字。クラス規約で適宜決まる。
・複数の変数を出すときには?
・priveteはこのクラスのみ適用。publicはクラス外でも適用。
function set~の前にもつけられる。verもある。
・$this->nameはクラス内の変数。$nameとは別。
・->をアロー演算子と呼ぶようです。
・クラス宣言のコメントは/**ではじめることが多い。
・$human = new Human();の記述がobject型の宣言。
☆練習問題 住所も実際に出してみよう
雛形にsetとgetを追加するだけだお。
#インスタンス化
$human = new Human();
#名前と住所のセット
$human->setName("いちのへあつし<br>");
$human->setAddress("江ノ島");
#名前と住所を返す
print $human->getName();
print $human->getAddress();
class Human{
#名前の宣言
private $name;
#住所の宣言
private $address;
#名前をセットする
function setName($name){
$this->name = $name;
}
#名前を返す
function getName(){
return $this->name;
}
#住所をセットする
function setAddress($address){
$this->address = $address;
}
#住所を返す
function getAddress(){
return $this->address;
}
}
☆練習問題3 Dogでクラスを定義。
コピペで。
#インスタンス化
$dog = new Dog();
#鳴き声のセット
$dog->setVoice("わんわん<br>");
#鳴き声を返す
print $dog->getVoice();
class Dog{
#鳴き声の宣言
private $voice;
#鳴き声をセットする
function setVoice($voice){
$this->voice = $voice;
}
#鳴き声を返す
function getVoice(){
return $this->voice;
}
}
タイプミス多し……気をつけねば;
☆練習問題 野菜の値段と割引
★と★で関係します。
#インスタンス化
$ninjin = new Yasai();
#価格のセット
$ninjin->setVeg(100);
#価格を返す
print "ninjinの値段:". $ninjin->getVeg();
print "<br>";
#割引を返す
★print "割引価格" .$ninjin->getYasaiwari(0.5);
class Yasai{
#宣言
private $ninjin;
#価格をセットする
function setVeg($veg){
$this->veg = $veg;
}
#価格を返す
function getVeg(){
return $this->veg;
}
#割引を返す
★ function getYasaiwari($yasaiwari){
return $this->veg * $yasaiwari;
※ここで整数を入れないのがポイント
function getWaribikiPrice($waribiki) {
return $this->price * $waribiki;
☆コンストラクタ new Human()の()のこと。
function Human($name, $age) {
$this->name = $name;
$this->age = $age;
}
☆練習問題 鳴き声や名前、犬種
#インスタンス化
$dog = new Dog("わんわん<br>","モモ<br>","ビーグル<br>");
#鳴き声のセット
//$dog->setVoice("わんわん<br>");
#鳴き声を返す
print "鳴き声:". $dog->getVoice() ;
print "名前:". $dog->getDogname() ;
print "種類:". $dog->getDogtype() ;
class Dog{
#鳴き声の宣言
private $voice;
private $dogname;
private $dogtype;
//コンストラクタ
function Dog($voice, $dogname, $dogtype) {
$this->voice = $voice;
$this->dogname = $dogname;
$this->dogtype = $dogtype;
}
#鳴き声をセットする
function setVoice($voice){
$this->voice = $voice;
}
#鳴き声を返す
function getVoice(){
return $this->voice;
}
#名前をセットする
function setDogname($dogname){
$this->dogname = $dogname;
}
#名前を返す
function getDogname(){
return $this->dogname;
}
#種類をセットする
function setDogtype($dogtype){
$this->dogtype = $dogtype;
}
#種類を返す
function getDogtype(){
return $this->dogtype;
}
}
作ってみたら2重括弧と最後の構文でつまづいてた。
個別ならある程度わかってきたけど組み立てるところで「???」ってなてます;;;
function saiten($namae,$kokugo,$sansuu,$rika,$syakai){
//まず合計と平均を求めます
$goukei = ($kokugo+$sansuu+$rika+$syakai);
$heikin = ($goukei / 4);
//平均点をもとに、出来具合を判定します
if ($heikin >= 80){
$hantei = "たいへんよくできました。";
}
elseif ($heikin >= 60 && $heikin < 80){
$hantei = "もう少しがんばりましょう。";
}
elseif ($heikin > 60){
$hantei = "補習を受けてください。";
}
//文系or理系の判定をします
if (($kokugo + $syakai) > ($sansuu + $rika)){
$type = "文系";
}
elseif (($kokugo + $syakai) < ($sansuu + $rika)){
$type = "理系";
}
else{
$type = "文理系";
}
//戻り値(最終的にやりたいこと)を記述します
return print("{$name}さんの判定結果<br>合計点は{$goukei}点です<br>平均点は{$heikin}点です<br>{$hantei}<br>");
}
//「saiten」関数を使用する
saiten("桑山",85,35,50,75);
saiten("一戸",65,95,85,80);
saiten("田中マルクス闘莉王",30,40,25,35);
解説
if ($heikin >= 80){
>=で80以上
($heikin >= 60 && $heikin < 80)
>= 60 && $heikin < 80
>=60以上 &&かつ <80未満
ていうか&&つかった問題やってなかったよなぁ…。
☆クラス
・考え方としては鯛焼きの鋳型と材料と出来上がった鯛焼き。
人
・名前:■■■
・住所:■■■
・性別:■■■
・何系: 文/理
■■■の部分を作っていく。
☆ここで資料の雛形べた打ち~
・関数のことをメソッドという。
・get宣言の最初の文字は大文字。クラス規約で適宜決まる。
・複数の変数を出すときには?
・priveteはこのクラスのみ適用。publicはクラス外でも適用。
function set~の前にもつけられる。verもある。
・$this->nameはクラス内の変数。$nameとは別。
・->をアロー演算子と呼ぶようです。
・クラス宣言のコメントは/**ではじめることが多い。
・$human = new Human();の記述がobject型の宣言。
☆練習問題 住所も実際に出してみよう
雛形にsetとgetを追加するだけだお。
#インスタンス化
$human = new Human();
#名前と住所のセット
$human->setName("いちのへあつし<br>");
$human->setAddress("江ノ島");
#名前と住所を返す
print $human->getName();
print $human->getAddress();
class Human{
#名前の宣言
private $name;
#住所の宣言
private $address;
#名前をセットする
function setName($name){
$this->name = $name;
}
#名前を返す
function getName(){
return $this->name;
}
#住所をセットする
function setAddress($address){
$this->address = $address;
}
#住所を返す
function getAddress(){
return $this->address;
}
}
☆練習問題3 Dogでクラスを定義。
コピペで。
#インスタンス化
$dog = new Dog();
#鳴き声のセット
$dog->setVoice("わんわん<br>");
#鳴き声を返す
print $dog->getVoice();
class Dog{
#鳴き声の宣言
private $voice;
#鳴き声をセットする
function setVoice($voice){
$this->voice = $voice;
}
#鳴き声を返す
function getVoice(){
return $this->voice;
}
}
タイプミス多し……気をつけねば;
☆練習問題 野菜の値段と割引
★と★で関係します。
#インスタンス化
$ninjin = new Yasai();
#価格のセット
$ninjin->setVeg(100);
#価格を返す
print "ninjinの値段:". $ninjin->getVeg();
print "<br>";
#割引を返す
★print "割引価格" .$ninjin->getYasaiwari(0.5);
class Yasai{
#宣言
private $ninjin;
#価格をセットする
function setVeg($veg){
$this->veg = $veg;
}
#価格を返す
function getVeg(){
return $this->veg;
}
#割引を返す
★ function getYasaiwari($yasaiwari){
return $this->veg * $yasaiwari;
※ここで整数を入れないのがポイント
function getWaribikiPrice($waribiki) {
return $this->price * $waribiki;
☆コンストラクタ new Human()の()のこと。
function Human($name, $age) {
$this->name = $name;
$this->age = $age;
}
☆練習問題 鳴き声や名前、犬種
#インスタンス化
$dog = new Dog("わんわん<br>","モモ<br>","ビーグル<br>");
#鳴き声のセット
//$dog->setVoice("わんわん<br>");
#鳴き声を返す
print "鳴き声:". $dog->getVoice() ;
print "名前:". $dog->getDogname() ;
print "種類:". $dog->getDogtype() ;
class Dog{
#鳴き声の宣言
private $voice;
private $dogname;
private $dogtype;
//コンストラクタ
function Dog($voice, $dogname, $dogtype) {
$this->voice = $voice;
$this->dogname = $dogname;
$this->dogtype = $dogtype;
}
#鳴き声をセットする
function setVoice($voice){
$this->voice = $voice;
}
#鳴き声を返す
function getVoice(){
return $this->voice;
}
#名前をセットする
function setDogname($dogname){
$this->dogname = $dogname;
}
#名前を返す
function getDogname(){
return $this->dogname;
}
#種類をセットする
function setDogtype($dogtype){
$this->dogtype = $dogtype;
}
#種類を返す
function getDogtype(){
return $this->dogtype;
}
}
2010年12月17日金曜日
12/17覚書
☆発展問題 forの中にforを入れる。入れ子
for($i = 0; $i <= 10; $i++){
for($a = 10; $a < 100000; $a*=2){
print "i = ".$i. " /";
print "a = ".$a;
print "<br>";
}
}
akatukiさんから教えてもらいました!
赤い字の箇所が入れ子(と見やすくするための箇所)です。
$a = 10スタートで最大100000まで$a*=2で×2の掛け算して! って命令。
引き算なら$a=--だけど、赤太字を変えなきゃいけないのです。
割り算も$a/=2だけど…。 実際に書いてみてくだしあ。
うっとりするほど苦手な数学です。
そんなわたしでもPHPやりたいんですー! 覚えたいんです!!
この部分については、ここのサイトが非常にわかりやすいです。
☆2500まできたらcool!と入れて改行~テストと入れ子の例その1
iからaのループ処理をして改行したいから、
最初の『{』のすぐあとでprint"<br>\n"で改行。
$data = array(1,2,3,4,5,6,7,8,9,10);
$bee = array(1,2,3,4,5);
$c = 2500;
for($i = 0; $i <= 10; $i++){
for($a = 10000; $a > 100; $a/=2){
print "i = ".$i. " /";
print "a = ".$a ;
if($a == $c){
print "  cool!\n";
}
print "<br>\n";
}
}
☆break 例は5回目で愛してるの命令ストップ!
そして入れ子の例その2
breakはよく使うようです。
for($i=0; $i<10; $i++){
print $i ;
print"愛してる!";
print"<br>";
if($i==5){
break;
}
}
☆連想配列
連想配列とは?…配列(部屋)に名前をつける
→普通の配列は部屋番号(0~)が自動的に割り振られる
→連想配列は、部屋に文字列をつけられる
ただの配列だと[]には何も入れなかったが・・・
$profile["namae"] = "くわやまひろたつ";
$profile["sei"] = "男";
$profile["toshi"] = 37;
$profile["syumi"] = "旅行";
print $profile["namae"] ;
print "<br>";
print $profile["sei"];
print "<br>";
print $profile["toshi"];
print "<br>";
print $profile["syumi"];
arrayを使うと、,のほかに=>を必ず使う。
$profile = array( "namae" => "くわやまひろたつ" , "sei" => "男" , "toshi" => 37 , "syumi" => "旅行" );
print $profile["namae"] ;
print "<br>";
print $profile["sei"];
print "<br>";
print $profile["toshi"];
print "<br>";
print $profile["syumi"];
☆練習問題 トマトとにんじんとキャベツで。
' tomato'の部分はキーとかバリューと呼ばれる。
$yasai = array(' tomato' => ' トマト', ' carrot' => ' にんじん',' cabbage' => ' キャベツ',);
$yasai["tomato"] = "トマト";
$yasai["carrot"] = "にんじん";
$yasai["cabbage"] = "キャベツ";
print $yasai["tomato"];
print "<br>\n";
print $yasai["carrot"];
print "<br>\n";
print $yasai["cabbage"];
print "<br>\n";
☆forのように連想配列を全部表示させるforeach
foreachについて
「配列に入っている部屋(key)と値(value)を、最初から最後まで全て取り出す」
for/whileは何に達成するまで何回ループさせるか
foreachはkey分だけループさせる。
foreach($変数名 as $key => $value){ 赤字は固定。$keyと$valueは変数だから変更可能だけど、
一般的にそのまま使うことが多い。(サイト管理は複数でやるし。独自変数多用は混乱の元。)
print "{$key}~も出せるけど別に出さなくてもよい。これができるよということ。
$profile = array( "namae" => "くわやま" , "sei" => "男" , "toshi" => 37 , "syumi" => "旅行" );
foreach($profile as $key => $value){
print "{$key}は{$value}です<br>";
☆関数
■関数の作り方
・関数の宣言は「function」(変数宣言の「$」と同じ考え方)で始める
・関数名は任意(変数と同じ考え方)
・関数には引数(素材)が必要
・引数(素材)はいろんなものが与えられる可能性があるので変数にする
・与えられた引数(素材)を元に、出来上がったものを「return」する(返す)
function 関数名 (引数=変数){
return 「引数を加工したもの」
}
こんな感じ
function mixer($sozai){
return $sozai."ジュースができました!";
}
print mixer("りんごっぽい");
print "<br>\n";
function mixer2($sozai){
return "とてもおいしい".$sozai. "ジュースができました!";
}
print mixer2("りんごっぽい");
print "<br>\n";
print mixer2("厨二?");
print "<br>\n";
print mixer2("ゆっくり");
※あまりやらないが、変数の前に「&」マークをつけると、「値」という指定になる。
キーもすべて使う目的が多いため、そんなにやらない。
$profile = array( "namae" => "くわやま" , "sei" => "男" , "toshi" => 37 , "syumi" => "旅行" );
foreach($profile as &$value){
print "{$value}です<br>\n";
☆引数の複数
・引数は何個設定してもよい
・関数は同じプログラム内で引数を変えて何度も使うことができる
→何度も使う処理を関数にすればおk。ていうか関数の目的。
function mixer($sozai1,$sozai2){
return $sozai1."と".$sozai2."のミックスジュースができました!<br>オイシィ~!<br>";
}
print mixer("りんご","バナナ");
print mixer("いちご","ミルク");
print mixer("いちのへ","くわやま");
※最後はコトリザバス様大喜びw
☆練習問題 引き算
function syouhizei($a,$b){
return $a-$b;
}
print syouhizei(10000,500);
print "<br>\n";
その2 文字列込み引き算
文字列を入れるときはprintで入れたほうがスムーズだが、
文字列を入れて計算したいときは()でくくる。
function syouhizei($a,$b,$c){
return "結果=".($a - $b - $c)."です。";
}
print syouhizei(10000,14,2);
print "<br>\n";
☆内蔵関数
パッケージ化されたソース。
string date ( string $format [, int $timestamp ] )
※()の部分は省略可能の意味。
stringがreturnの意。dateがパッケージ化されたソース。
サイトにありがちな時計表示のいくつか。おいはjava scliptでやってたなぁ。
print date("Y/m/d");
print "<br>";
print date("y/m/d");
print "<br>";
print date("H:i:s");
※printって関数だったそうな。
print ("こんにちは");って書かなくても出てくるから省略なんだって。
☆if+条件分岐
&&は「且つ」の意。
function korekatte($kakaku){
if( $kakaku <= 10000 ){
return "うん、買ってあげるよ!<br>" ;
}
elseif( $kakaku > 10000 && $kakaku <= 50000 ){
return "う、うん、買ってあげるね、今度…<br>" ;
}
elseif( $kakaku > 50000 && $kakaku <= 100000 ){
return "もう少し安いのにしようよ…<br>" ;
}
elseif( $kakaku > 100000 ){
return "もうキミとは付き合ってられないよ!<br>" ;
}
}
print korekatte(9000);
print korekatte(30000);
print korekatte(66000);
print korekatte(500000);
☆練習問題 BMI体重。22に近いほどいいそうな。
指数の求め方
体重(kg) ÷( 身長(m)× 身長(m) )
作り方
・関数名は「bmi」
・引数は身長($shincyou)と体重($taijyuu)の2つ
→引数を入力する際の単位は、身長がcm、体重がkgとする
・戻り値がBMI指数
・身長(m)× 身長(m)の部分は、身長(m)の2乗で考える
→ベキ乗を求める内部関数「pow」を使用する
次はおまけ(後回しでよい)
・小数点以下は第一位までを表示させる
function bmi($shincyou,$taijyuu){
return round($taijyuu / pow($shincyou/100,2));
}
print bmi(152,43.3)
powをroundで入れ込む。のがミソでしたあああああああ><
練習問題変えてやてみます……。
for($i = 0; $i <= 10; $i++){
for($a = 10; $a < 100000; $a*=2){
print "i = ".$i. " /";
print "a = ".$a;
print "<br>";
}
}
akatukiさんから教えてもらいました!
赤い字の箇所が入れ子(と見やすくするための箇所)です。
$a = 10スタートで最大100000まで$a*=2で×2の掛け算して! って命令。
引き算なら$a=--だけど、赤太字を変えなきゃいけないのです。
割り算も$a/=2だけど…。 実際に書いてみてくだしあ。
うっとりするほど苦手な数学です。
そんなわたしでもPHPやりたいんですー! 覚えたいんです!!
この部分については、ここのサイトが非常にわかりやすいです。
☆2500まできたらcool!と入れて改行~テストと入れ子の例その1
iからaのループ処理をして改行したいから、
最初の『{』のすぐあとでprint"<br>\n"で改行。
$data = array(1,2,3,4,5,6,7,8,9,10);
$bee = array(1,2,3,4,5);
$c = 2500;
for($i = 0; $i <= 10; $i++){
for($a = 10000; $a > 100; $a/=2){
print "i = ".$i. " /";
print "a = ".$a ;
if($a == $c){
print "  cool!\n";
}
print "<br>\n";
}
}
☆break 例は5回目で愛してるの命令ストップ!
そして入れ子の例その2
breakはよく使うようです。
for($i=0; $i<10; $i++){
print $i ;
print"愛してる!";
print"<br>";
if($i==5){
break;
}
}
☆連想配列
連想配列とは?…配列(部屋)に名前をつける
→普通の配列は部屋番号(0~)が自動的に割り振られる
→連想配列は、部屋に文字列をつけられる
ただの配列だと[]には何も入れなかったが・・・
$profile["namae"] = "くわやまひろたつ";
$profile["sei"] = "男";
$profile["toshi"] = 37;
$profile["syumi"] = "旅行";
print $profile["namae"] ;
print "<br>";
print $profile["sei"];
print "<br>";
print $profile["toshi"];
print "<br>";
print $profile["syumi"];
arrayを使うと、,のほかに=>を必ず使う。
$profile = array( "namae" => "くわやまひろたつ" , "sei" => "男" , "toshi" => 37 , "syumi" => "旅行" );
print $profile["namae"] ;
print "<br>";
print $profile["sei"];
print "<br>";
print $profile["toshi"];
print "<br>";
print $profile["syumi"];
☆練習問題 トマトとにんじんとキャベツで。
' tomato'の部分はキーとかバリューと呼ばれる。
$yasai = array(' tomato' => ' トマト', ' carrot' => ' にんじん',' cabbage' => ' キャベツ',);
$yasai["tomato"] = "トマト";
$yasai["carrot"] = "にんじん";
$yasai["cabbage"] = "キャベツ";
print $yasai["tomato"];
print "<br>\n";
print $yasai["carrot"];
print "<br>\n";
print $yasai["cabbage"];
print "<br>\n";
☆forのように連想配列を全部表示させるforeach
foreachについて
「配列に入っている部屋(key)と値(value)を、最初から最後まで全て取り出す」
for/whileは何に達成するまで何回ループさせるか
foreachはkey分だけループさせる。
foreach($変数名 as $key => $value){ 赤字は固定。$keyと$valueは変数だから変更可能だけど、
一般的にそのまま使うことが多い。(サイト管理は複数でやるし。独自変数多用は混乱の元。)
print "{$key}~も出せるけど別に出さなくてもよい。これができるよということ。
$profile = array( "namae" => "くわやま" , "sei" => "男" , "toshi" => 37 , "syumi" => "旅行" );
foreach($profile as $key => $value){
print "{$key}は{$value}です<br>";
☆関数
■関数の作り方
・関数の宣言は「function」(変数宣言の「$」と同じ考え方)で始める
・関数名は任意(変数と同じ考え方)
・関数には引数(素材)が必要
・引数(素材)はいろんなものが与えられる可能性があるので変数にする
・与えられた引数(素材)を元に、出来上がったものを「return」する(返す)
function 関数名 (引数=変数){
return 「引数を加工したもの」
}
こんな感じ
function mixer($sozai){
return $sozai."ジュースができました!";
}
print mixer("りんごっぽい");
print "<br>\n";
function mixer2($sozai){
return "とてもおいしい".$sozai. "ジュースができました!";
}
print mixer2("りんごっぽい");
print "<br>\n";
print mixer2("厨二?");
print "<br>\n";
print mixer2("ゆっくり");
※あまりやらないが、変数の前に「&」マークをつけると、「値」という指定になる。
キーもすべて使う目的が多いため、そんなにやらない。
$profile = array( "namae" => "くわやま" , "sei" => "男" , "toshi" => 37 , "syumi" => "旅行" );
foreach($profile as &$value){
print "{$value}です<br>\n";
☆引数の複数
・引数は何個設定してもよい
・関数は同じプログラム内で引数を変えて何度も使うことができる
→何度も使う処理を関数にすればおk。ていうか関数の目的。
function mixer($sozai1,$sozai2){
return $sozai1."と".$sozai2."のミックスジュースができました!<br>オイシィ~!<br>";
}
print mixer("りんご","バナナ");
print mixer("いちご","ミルク");
print mixer("いちのへ","くわやま");
※最後はコトリザバス様大喜びw
☆練習問題 引き算
function syouhizei($a,$b){
return $a-$b;
}
print syouhizei(10000,500);
print "<br>\n";
その2 文字列込み引き算
文字列を入れるときはprintで入れたほうがスムーズだが、
文字列を入れて計算したいときは()でくくる。
function syouhizei($a,$b,$c){
return "結果=".($a - $b - $c)."です。";
}
print syouhizei(10000,14,2);
print "<br>\n";
☆内蔵関数
パッケージ化されたソース。
string date ( string $format [, int $timestamp ] )
※()の部分は省略可能の意味。
stringがreturnの意。dateがパッケージ化されたソース。
サイトにありがちな時計表示のいくつか。おいはjava scliptでやってたなぁ。
print date("Y/m/d");
print "<br>";
print date("y/m/d");
print "<br>";
print date("H:i:s");
※printって関数だったそうな。
print ("こんにちは");って書かなくても出てくるから省略なんだって。
☆if+条件分岐
&&は「且つ」の意。
function korekatte($kakaku){
if( $kakaku <= 10000 ){
return "うん、買ってあげるよ!<br>" ;
}
elseif( $kakaku > 10000 && $kakaku <= 50000 ){
return "う、うん、買ってあげるね、今度…<br>" ;
}
elseif( $kakaku > 50000 && $kakaku <= 100000 ){
return "もう少し安いのにしようよ…<br>" ;
}
elseif( $kakaku > 100000 ){
return "もうキミとは付き合ってられないよ!<br>" ;
}
}
print korekatte(9000);
print korekatte(30000);
print korekatte(66000);
print korekatte(500000);
☆練習問題 BMI体重。22に近いほどいいそうな。
指数の求め方
体重(kg) ÷( 身長(m)× 身長(m) )
作り方
・関数名は「bmi」
・引数は身長($shincyou)と体重($taijyuu)の2つ
→引数を入力する際の単位は、身長がcm、体重がkgとする
・戻り値がBMI指数
・身長(m)× 身長(m)の部分は、身長(m)の2乗で考える
→ベキ乗を求める内部関数「pow」を使用する
次はおまけ(後回しでよい)
・小数点以下は第一位までを表示させる
function bmi($shincyou,$taijyuu){
return round($taijyuu / pow($shincyou/100,2));
}
print bmi(152,43.3)
powをroundで入れ込む。のがミソでしたあああああああ><
練習問題変えてやてみます……。
2010年12月16日木曜日
12/16覚書
☆そもそもeclipseやXAMPP、Apacheってなに?
コンビ芸人(クライアントとサーバーね。)→ピン芸人でひとりボケツッコミ。
Apacheの初期設定でindex.phpにアクセスする。
C:\pleiades\xampp\apache\conf\httpd.confで変更可能。
ブラウザではhtdocs(ルートフォルダとして指定されたフォルダ)は非表示になる。
しかし、htdocs内の各フォルダ(ルートディレクトリ)のURLは指定が必要。
XAMPPはOS問わずApache(WEBサーバー)やMySQL(DBサーバー)、
PHP(プログラムソフト)を動作できるようにするための集合体。
PHPはWEBサービスの多くを製作でき、、HTMLと混在でき他言語よりも構文が単純と優れた言語。
☆プログラムの原則
ソースは上から下へ。
☆phpとHTMLを混在させる時のためにも、?>で閉じる癖をつける
""の文字列内なら<br >タグつけられて楽だよー。
練習問題の変数を変えて出力してみよう。
☆型???
文字列とか整数のことでした; 文字列型、整数型と言う。
""で囲わないと整数型となる。PHPは型宣言がない。型宣言はSQLで使用。
PHPは代入した変数によって自由に変化する。
※<?phpと?>省略。あと改行\nここより追加。
☆ループ・繰り返し
構文はセミコロンで区切る。forは繰り返す。$i=0; $i<100;は『ゼロから99まで繰り返す』
$i++の++はインクリメント(increment)。整数に対して1を足す。
$i=0に対して+1していく動きをする。
ていうか$iって? iは整数の頭文字。変数だけどここは一般的
プログラムは0から数えるので初期値はゼロ。ここも一般的。
100回も0から数えるので99+0で100となる。
なので100回愛してる!もphpだと簡単w
for($i=0; $i<100; $i++) {
print" 愛してる!<br>\n";
だけ。
for($i=0; $i<100; $i++) {
print" 愛してる!".$i."回目<br>\n";
}
for( 初期値設定; 条件; 増分) {
繰り返しただけ何をするか。
}
ここで出てくる演算子。『= <> ++』←比較演算子
回目~のように文字列と変数をつなぐ場合は『..』ドットをつける。
☆練習問題。101回プロポーズしたら僕は死にませぇんと言ってみるテスト。
コツは別々に記述することだたYO!
for($i=0; $i<101; $i++) {
print" 結婚して!".$i."回目<br>\n";
}
print("<br />");
for($i=0; $i<1; $i++) {
print" 僕は死にませぇんといってみるテスト<br>\n";
}
僕は~のところはprintで直打ちでもおk。練習なので変数使いました。
☆練習問題2
まず偶数や奇数とかを数式で表すってどないせえっちゅーんじゃ;
↓助けてGoogle先生ー!
偶数は、『0,2,4,6,8,10…』という様な、「2n」で表せる数です。(nは0を含む自然数)
奇数は、『1,3,5,7,9,11…』という様な、「2n+1」で表せる数です。(nは0を含む自然数)
だ、そうです。数学が苦手な私にはわかりませんでした。ありがたいブログ
for($cnt = 0; $cnt <= 100; $cnt++){
if(($cnt % 2) === 0){ print $cnt." <br>\n";}
}
または
for($i = 0; $i <= 100; $i++){
if($i%2==0){
print $i;
print "<br>\n";
}
}
短っ!<br>含めると結果が一文字ずつ改行入って見づらい。
<=**にすると**を含むという意味。
forの()は;で3つにして区切る構文。公式のように固定。
あとif使わない方法。
for($cnt = 2; $cnt <= 100; $cnt += 2){
print $cnt."\n";
}
とりあえず考えるなりgoogle先生に聞くなりやってみる。意味は後からついて来るZE!
☆繰り返しその2
$変数1
$変数2
$while($変数1の条件) {
繰り返しただけ何をするか。
}
☆練習問題 101回プロポーズのwhile版。
print $変数2
$i = 0;
$pw = "結婚してください";
$an = "※ただしイケメンに限る";
while($i<101){
print $pw;
print "<br>\n";
$i++;
}
print $an;
forもwhileもほとんど同じだが、forは先に処理され、whileは後からの処理もできる。
☆文字列の扱い
・/*~*/で囲った内容はいくら改行してもただのテキスト。
×①''で囲むと変数は展開されない
○②''の外に変数を出してあげると展開される
△③""で囲むと変数が展開される、ただし変数の前後に半角が必要
×④変数の前後に半角スペースがないので「$kudamonoです。」と認識されている
◎⑤変数の前後に{}をつけると半角スペースは不要⇒これがベスト!
☆配列
arreyで区切ったぶんだけboxをつくる。区切り。デリミタっていうそうな。
$data[0];
0から始まるのはプログラムの決まりごと。
例1
$data = array(1,2,3);
print $data[0];
print "<br>\n";
print $data[1];
print "<br>\n";
print $data[2];
例2
$data[] = 1;
$data[] = 2;
$data[] = 3;
print $data[0];
[]がarrayと同じ意味。
☆練習問題1 10個作って5番目の値を出そう。
$data = array(1,2,3,4,5,6,7,8,9,10);
print $data[4];
または
$data[] = 1;
$data[] = 2;
$data[] = 3;
$data[] = 4;
$data[] = 5;
$data[] = 6;
$data[] = 7;
$data[] = 8;
$data[] = 9;
$data[] = 10;
print $data[4];
2番目無駄に長いね;
☆練習問題2 上記の全項目をfor文ですべて表示
$dataと$iの扱いがPOINTでした;
$data = array(1,2,3,4,5,6,7,8,9,10);
for($i = 0; $i <= 10; $i++){
print $**[$**];
print "<br>\n";
**の部分でどっちにdataとi入れればいいのかが不安だったです;
んで正解↓
$data = array(1,2,3,4,5,6,7,8,9,10);
for($i = 0; $i <= 10; $i++){
print $data[$i];
print "<br>\n";
$dataを繰り返し出すために、変数$iを使う。
変数の理解がまだ甘い…練習します;
☆明日の予定
連想配列。
こんなんらしい。
$yasai = array(' tomato' => ' トマト',
' carrot' => ' にんじん',
' cabbage' => ' キャベツ',);
$yasai["tomato"] = "トマト";
$yasai["carrot"] = "にんじん";
$yasai["cabbage"] = "キャベツ";
print $yasai["cabbage"];
print "<br>\n";
コンビ芸人(クライアントとサーバーね。)→ピン芸人でひとりボケツッコミ。
Apacheの初期設定でindex.phpにアクセスする。
C:\pleiades\xampp\apache\conf\httpd.confで変更可能。
ブラウザではhtdocs(ルートフォルダとして指定されたフォルダ)は非表示になる。
しかし、htdocs内の各フォルダ(ルートディレクトリ)のURLは指定が必要。
XAMPPはOS問わずApache(WEBサーバー)やMySQL(DBサーバー)、
PHP(プログラムソフト)を動作できるようにするための集合体。
PHPはWEBサービスの多くを製作でき、、HTMLと混在でき他言語よりも構文が単純と優れた言語。
☆プログラムの原則
ソースは上から下へ。
☆phpとHTMLを混在させる時のためにも、?>で閉じる癖をつける
""の文字列内なら<br >タグつけられて楽だよー。
練習問題の変数を変えて出力してみよう。
☆型???
文字列とか整数のことでした; 文字列型、整数型と言う。
""で囲わないと整数型となる。PHPは型宣言がない。型宣言はSQLで使用。
PHPは代入した変数によって自由に変化する。
※<?phpと?>省略。あと改行\nここより追加。
☆ループ・繰り返し
構文はセミコロンで区切る。forは繰り返す。$i=0; $i<100;は『ゼロから99まで繰り返す』
$i++の++はインクリメント(increment)。整数に対して1を足す。
$i=0に対して+1していく動きをする。
ていうか$iって? iは整数の頭文字。変数だけどここは一般的
プログラムは0から数えるので初期値はゼロ。ここも一般的。
100回も0から数えるので99+0で100となる。
なので100回愛してる!もphpだと簡単w
for($i=0; $i<100; $i++) {
print" 愛してる!<br>\n";
だけ。
for($i=0; $i<100; $i++) {
print" 愛してる!".$i."回目<br>\n";
}
for( 初期値設定; 条件; 増分) {
繰り返しただけ何をするか。
}
ここで出てくる演算子。『= <> ++』←比較演算子
回目~のように文字列と変数をつなぐ場合は『..』ドットをつける。
☆練習問題。101回プロポーズしたら僕は死にませぇんと言ってみるテスト。
コツは別々に記述することだたYO!
for($i=0; $i<101; $i++) {
print" 結婚して!".$i."回目<br>\n";
}
print("<br />");
for($i=0; $i<1; $i++) {
print" 僕は死にませぇんといってみるテスト<br>\n";
}
僕は~のところはprintで直打ちでもおk。練習なので変数使いました。
☆練習問題2
まず偶数や奇数とかを数式で表すってどないせえっちゅーんじゃ;
↓助けてGoogle先生ー!
偶数は、『0,2,4,6,8,10…』という様な、「2n」で表せる数です。(nは0を含む自然数)
奇数は、『1,3,5,7,9,11…』という様な、「2n+1」で表せる数です。(nは0を含む自然数)
だ、そうです。数学が苦手な私にはわかりませんでした。ありがたいブログ
for($cnt = 0; $cnt <= 100; $cnt++){
if(($cnt % 2) === 0){ print $cnt." <br>\n";}
}
または
for($i = 0; $i <= 100; $i++){
if($i%2==0){
print $i;
print "<br>\n";
}
}
短っ!<br>含めると結果が一文字ずつ改行入って見づらい。
<=**にすると**を含むという意味。
forの()は;で3つにして区切る構文。公式のように固定。
あとif使わない方法。
for($cnt = 2; $cnt <= 100; $cnt += 2){
print $cnt."\n";
}
とりあえず考えるなりgoogle先生に聞くなりやってみる。意味は後からついて来るZE!
☆繰り返しその2
$変数1
$変数2
$while($変数1の条件) {
繰り返しただけ何をするか。
}
☆練習問題 101回プロポーズのwhile版。
print $変数2
$i = 0;
$pw = "結婚してください";
$an = "※ただしイケメンに限る";
while($i<101){
print $pw;
print "<br>\n";
$i++;
}
print $an;
forもwhileもほとんど同じだが、forは先に処理され、whileは後からの処理もできる。
☆文字列の扱い
・/*~*/で囲った内容はいくら改行してもただのテキスト。
×①''で囲むと変数は展開されない
○②''の外に変数を出してあげると展開される
△③""で囲むと変数が展開される、ただし変数の前後に半角が必要
×④変数の前後に半角スペースがないので「$kudamonoです。」と認識されている
◎⑤変数の前後に{}をつけると半角スペースは不要⇒これがベスト!
☆配列
arreyで区切ったぶんだけboxをつくる。区切り。デリミタっていうそうな。
$data[0];
0から始まるのはプログラムの決まりごと。
例1
$data = array(1,2,3);
print $data[0];
print "<br>\n";
print $data[1];
print "<br>\n";
print $data[2];
例2
$data[] = 1;
$data[] = 2;
$data[] = 3;
print $data[0];
[]がarrayと同じ意味。
☆練習問題1 10個作って5番目の値を出そう。
$data = array(1,2,3,4,5,6,7,8,9,10);
print $data[4];
または
$data[] = 1;
$data[] = 2;
$data[] = 3;
$data[] = 4;
$data[] = 5;
$data[] = 6;
$data[] = 7;
$data[] = 8;
$data[] = 9;
$data[] = 10;
print $data[4];
2番目無駄に長いね;
☆練習問題2 上記の全項目をfor文ですべて表示
$dataと$iの扱いがPOINTでした;
$data = array(1,2,3,4,5,6,7,8,9,10);
for($i = 0; $i <= 10; $i++){
print $**[$**];
print "<br>\n";
**の部分でどっちにdataとi入れればいいのかが不安だったです;
んで正解↓
$data = array(1,2,3,4,5,6,7,8,9,10);
for($i = 0; $i <= 10; $i++){
print $data[$i];
print "<br>\n";
$dataを繰り返し出すために、変数$iを使う。
変数の理解がまだ甘い…練習します;
☆明日の予定
連想配列。
こんなんらしい。
$yasai = array(' tomato' => ' トマト',
' carrot' => ' にんじん',
' cabbage' => ' キャベツ',);
$yasai["tomato"] = "トマト";
$yasai["carrot"] = "にんじん";
$yasai["cabbage"] = "キャベツ";
print $yasai["cabbage"];
print "<br>\n";
2010年12月15日水曜日
12/15覚書
※短くまとめるなんてエロい人に任せたよー。
予定
・XAMPPを使用しPHPから表示
・PHP変数について
・PHP構文について
いじょ
☆情報と情報処理。
・講座における情報の意味
文字や記号によって伝達されるもの。
利用者にとって意味もしくは価値のあるもの。
・情報とコミュニケーション
レベルC 効果的問題
レベルB 視覚的問題
レベルA 技術的問題
・情報の機能(大雑把)
ヒト、モノ、カネなどの企業自体の至るまでを含み、企業経営には不可欠。
☆情報の分類
・データ 数値や文字列の並び
・情報 データに意味を付加したもの
・知識 情報がまとまって体系したもの
***-****-****も頭にTELという情報を付加すれば電話番号になる。
・情報処理とは?
獲得され、編集され、蓄積され、それらの情報を使用する過程を情報処理という。
※Googleの検索結果も情報処理
☆情報処理の流れ
情報の獲得
・創造
・入力
↓
情報の編集
・意味の解釈
・分類。整列
・削除
・選択
・整形
↓
情報の蓄積
・出力
ブラウザに置き換えて考えてみよう
☆XAMPPを使用しPHPから表示
C:\pleiades\xampp\htdocs\index.phpをサクラエディタで開き
(元indexは2にリネームして別途保存)、中身を全消しして
<?php
plint "hello Enoshima";
と入力。
全力でジャンピング誤字orz LじゃNEEEEE!
正しくは
<?php
print "hello Enoshima";
最初の一歩でつまづいたから何でも来い!とは言えません。
;でひとつの文の終わりかー。
今後はhtdocsフォルダにデータを入れていくそうな。
以降<?php宣言は省略~
☆変数
数字や文字列などのデータを格納しておく箱
$data=12; phpのイコールは代入の意味
C:\pleiades\xampp\htdocs\practiceに練習用index.php作成。
以降はhttp://localhost/practice/を見る。
変数例題
<?php
$data = 12;
print $data;
http://localhost/practice/で見ると・・・ただ12だけ出てくる。
練習問題。続けて記述している。
<?php
$name = "自分の名前";
print $name;
$**の**は変数。printやnameなどいわゆるタグ付けしておく。
文字列は""か''で囲うのがルール。整数は囲わない。
http://localhost/practice/で見れば、『12自分の名前』が出る。
代入したデータだけが帰ってくる、シンプルな構文。
これをHTMLでどこに出すのかでデザインするのかな?
やぎぬまさんに教えてもらったいい感じのPHPスクリプト講座
やさしい語り口でわかりやすいです~。
TIPS☆エディタで保存の際はコード形式をUTF-8で保存しよう! 文字化けを防ぐよ!
※携帯サイトだとS-JIS指定みたい。不思議。
『12自分の名前』は気持ち悪い; 改行したい~って時は
各構文の間に
print("<br />");
をつけてあげませう。
そうすればあらすっきり。
12
自分の名前
になりました☆
まとめ
・代入するデータの雛形
12(整数)""で囲わない。
自分の名前("文字列")*『''』でもおk。各php講座サイト見ると文字列は""がよさげー。
☆練習問題2
practiceフォルダにrensyu2.phpを別途生成し、自分で設定した変数を用いて出力。
参照はhttp://localhost/practice/rensyu2.phpで行う。
<?php
//php基礎練習問題2
$todaylunch = "今日のランチ";
print $todaylunch;
print("<br />");
$menu = "鳥の照り焼き丼";
print $menu;
変数=ニコ動でいうタグを付けるっていうのに近い。
桑山さんの消費税サンプルphp欲しいなぁ。概念理解にわかりやすい。
☆演算子 ここで見直します; ※表示の数字は例え
1~4番目 四則演算をphpで計算してもらうよー
$a = 1+1
$b = 10-4
#c = 2*3
$d = 9/3
以降比較演算子
5番目 $e = 10%3; 余り
6番目 $b = =$c; 比較式(値が同じ)
7番目 $b != $d; 比較式(値が異なる)
8番目 $a < $b; bが大きければ正しい/正しくない
9番目 $b > $d; bが小さければ正しい/正しくない
10番目 $a <= $b; aがbより大きければ正しい/正しくない。~以上
11番目 $b =>$d; bがdより小さければ正しい/正しくない~未満
$a === $b; 片方を比較する。a = 1とb = "1"は正しくない。
練習問題 rensyu2-1.phpを作成し2+3+4を変数aで代入。
$a = 2+3+4;
print $a;
ブラウザでは9とだけ出てきます。
練習問題2 続けて上記$aに$b = 3を代入し$cを表示。
$a = 2+3+4;
$b = 3;
$c = $a+$b;
print $c;
print $c;をC;にしてたYO! ああああ自分のばかああああorz
$c = は+だけでなく色々使えるのですね。単価や税率とか。
☆条件分岐
もし~だったらのif
if(一定の条件){
処理
}
例題 もし雨だったら傘を持って行こう。
$tenki = "rain";
if($tenki == "rain") {
print " 傘を持って行こう。";
}
==の意味
1==1=true(正しい)
1==2=false(正しくない)
else if(一定の条件){
処理
}
※else ifは別条件として複数追加可能。
例題2
$tenki = "hare";
if($tenki == "rain"){//雨
print "傘を持って行こう";
}
else if ($tenki =="hare"){//晴れ
print "帽子を持って行こう";
}
else{//指定がない
print "手ぶらで行こう";
}
$tenki = ""の条件次第で結果が分岐するという構文。
当然この前にはもし~に相当する条件が必要なのでこれ単体での処理はあまりないかと。
(でないと文脈が無くなる;)
☆練習問題2 隣の席が…
$seat = "ako";
if ( $seat == "ako"){//隣がA子ちゃん
print "嬉しい。";
}
else if ( $seat == "bko"){//隣がB子ちゃん
print "まあ嬉しい。";
}
else{//指定がない
print "悲しい。";
}
最初問題文の意味がわからず、答え合わせで理解。構文自体は合ってた;
明日の練習問題。以下ネタバレw
☆ループ・繰り返し
100回愛してる!もphpだと簡単w
for($i=0; $i<100; $i++) {
print" 愛してる!";
だけ。
for($i=0; $i<100; $i++) {
print" 愛してる!".$i."回目";
}
for( 初期値設定; 条件; 増分) {
繰り返しただけ何をするか。
}
ここで出てくる演算子。『= <> ++』←比較演算子
☆練習問題。101回プロポーズしたら僕は死にませぇんと言ってみるテスト。
コツは別々に記述することだたYO!
for($i=0; $i<101; $i++) {
print" 結婚して!".$i."回目";
print("<br />");
}
print("<br />");
for($i=0; $i<1; $i++) {
print" 僕は死にませぇんといってみるテスト";
print("<br />");
}
予定
・XAMPPを使用しPHPから表示
・PHP変数について
・PHP構文について
いじょ
☆情報と情報処理。
・講座における情報の意味
文字や記号によって伝達されるもの。
利用者にとって意味もしくは価値のあるもの。
・情報とコミュニケーション
レベルC 効果的問題
レベルB 視覚的問題
レベルA 技術的問題
・情報の機能(大雑把)
ヒト、モノ、カネなどの企業自体の至るまでを含み、企業経営には不可欠。
☆情報の分類
・データ 数値や文字列の並び
・情報 データに意味を付加したもの
・知識 情報がまとまって体系したもの
***-****-****も頭にTELという情報を付加すれば電話番号になる。
・情報処理とは?
獲得され、編集され、蓄積され、それらの情報を使用する過程を情報処理という。
※Googleの検索結果も情報処理
☆情報処理の流れ
情報の獲得
・創造
・入力
↓
情報の編集
・意味の解釈
・分類。整列
・削除
・選択
・整形
↓
情報の蓄積
・出力
ブラウザに置き換えて考えてみよう
☆XAMPPを使用しPHPから表示
C:\pleiades\xampp\htdocs\index.phpをサクラエディタで開き
(元indexは2にリネームして別途保存)、中身を全消しして
<?php
plint "hello Enoshima";
と入力。
全力でジャンピング誤字orz LじゃNEEEEE!
正しくは
<?php
print "hello Enoshima";
最初の一歩でつまづいたから何でも来い!とは言えません。
;でひとつの文の終わりかー。
今後はhtdocsフォルダにデータを入れていくそうな。
以降<?php宣言は省略~
☆変数
数字や文字列などのデータを格納しておく箱
$data=12; phpのイコールは代入の意味
C:\pleiades\xampp\htdocs\practiceに練習用index.php作成。
以降はhttp://localhost/practice/を見る。
変数例題
<?php
$data = 12;
print $data;
http://localhost/practice/で見ると・・・ただ12だけ出てくる。
練習問題。続けて記述している。
<?php
$name = "自分の名前";
print $name;
$**の**は変数。printやnameなどいわゆるタグ付けしておく。
文字列は""か''で囲うのがルール。整数は囲わない。
http://localhost/practice/で見れば、『12自分の名前』が出る。
代入したデータだけが帰ってくる、シンプルな構文。
これをHTMLでどこに出すのかでデザインするのかな?
やぎぬまさんに教えてもらったいい感じのPHPスクリプト講座
やさしい語り口でわかりやすいです~。
TIPS☆エディタで保存の際はコード形式をUTF-8で保存しよう! 文字化けを防ぐよ!
※携帯サイトだとS-JIS指定みたい。不思議。
『12自分の名前』は気持ち悪い; 改行したい~って時は
各構文の間に
print("<br />");
をつけてあげませう。
そうすればあらすっきり。
12
自分の名前
になりました☆
まとめ
・代入するデータの雛形
12(整数)""で囲わない。
自分の名前("文字列")*『''』でもおk。各php講座サイト見ると文字列は""がよさげー。
☆練習問題2
practiceフォルダにrensyu2.phpを別途生成し、自分で設定した変数を用いて出力。
参照はhttp://localhost/practice/rensyu2.phpで行う。
<?php
//php基礎練習問題2
$todaylunch = "今日のランチ";
print $todaylunch;
print("<br />");
$menu = "鳥の照り焼き丼";
print $menu;
変数=ニコ動でいうタグを付けるっていうのに近い。
桑山さんの消費税サンプルphp欲しいなぁ。概念理解にわかりやすい。
☆演算子 ここで見直します; ※表示の数字は例え
1~4番目 四則演算をphpで計算してもらうよー
$a = 1+1
$b = 10-4
#c = 2*3
$d = 9/3
以降比較演算子
5番目 $e = 10%3; 余り
6番目 $b = =$c; 比較式(値が同じ)
7番目 $b != $d; 比較式(値が異なる)
8番目 $a < $b; bが大きければ正しい/正しくない
9番目 $b > $d; bが小さければ正しい/正しくない
10番目 $a <= $b; aがbより大きければ正しい/正しくない。~以上
11番目 $b =>$d; bがdより小さければ正しい/正しくない~未満
$a === $b; 片方を比較する。a = 1とb = "1"は正しくない。
練習問題 rensyu2-1.phpを作成し2+3+4を変数aで代入。
$a = 2+3+4;
print $a;
ブラウザでは9とだけ出てきます。
練習問題2 続けて上記$aに$b = 3を代入し$cを表示。
$a = 2+3+4;
$b = 3;
$c = $a+$b;
print $c;
print $c;をC;にしてたYO! ああああ自分のばかああああorz
$c = は+だけでなく色々使えるのですね。単価や税率とか。
☆条件分岐
もし~だったらのif
if(一定の条件){
処理
}
例題 もし雨だったら傘を持って行こう。
$tenki = "rain";
if($tenki == "rain") {
print " 傘を持って行こう。";
}
==の意味
1==1=true(正しい)
1==2=false(正しくない)
else if(一定の条件){
処理
}
※else ifは別条件として複数追加可能。
例題2
$tenki = "hare";
if($tenki == "rain"){//雨
print "傘を持って行こう";
}
else if ($tenki =="hare"){//晴れ
print "帽子を持って行こう";
}
else{//指定がない
print "手ぶらで行こう";
}
$tenki = ""の条件次第で結果が分岐するという構文。
当然この前にはもし~に相当する条件が必要なのでこれ単体での処理はあまりないかと。
(でないと文脈が無くなる;)
☆練習問題2 隣の席が…
$seat = "ako";
if ( $seat == "ako"){//隣がA子ちゃん
print "嬉しい。";
}
else if ( $seat == "bko"){//隣がB子ちゃん
print "まあ嬉しい。";
}
else{//指定がない
print "悲しい。";
}
最初問題文の意味がわからず、答え合わせで理解。構文自体は合ってた;
明日の練習問題。以下ネタバレw
☆ループ・繰り返し
100回愛してる!もphpだと簡単w
for($i=0; $i<100; $i++) {
print" 愛してる!";
だけ。
for($i=0; $i<100; $i++) {
print" 愛してる!".$i."回目";
}
for( 初期値設定; 条件; 増分) {
繰り返しただけ何をするか。
}
ここで出てくる演算子。『= <> ++』←比較演算子
☆練習問題。101回プロポーズしたら僕は死にませぇんと言ってみるテスト。
コツは別々に記述することだたYO!
for($i=0; $i<101; $i++) {
print" 結婚して!".$i."回目";
print("<br />");
}
print("<br />");
for($i=0; $i<1; $i++) {
print" 僕は死にませぇんといってみるテスト";
print("<br />");
}
2010年12月14日火曜日
12/14覚書
・CSSタグの解説。
・HTML+CSSでサイトを作ってみよう~
TIPS
地味に混乱;
HTML / XHTML入門〜上位階層へのリンク
CSSの各階層のリンクにてこずった;
今回の場合はindexはcss/mystyle.cssだった…マジぎりぎりで決まった;
ほかページは../css/mystyle.cssで普通に出た;;
文字幅padding left/right
<h1>で空白が出る→ググったページ消えた;まあいいか。後日追記予定。
12/15追記→<h1 style="margin-bottom:0">でいい感じ。ただCSSにもh1指定必要
練習サイト
view source with
ソース見やすくするのかなーと。
live http headers
使い方と解説はこちら もっと細かいのはこちら
CraftLaunch
ランチャーソフトってなかなか使わないけど、これは便利そうだなぁ。
ESCで未入力→時計になるよ。
ショートカットドラッグでソフト登録可能。
ID Manager
ID/Pass管理。ネットワーク上で共有できるから楽っちゃ楽。
eclipse、XAMPP
Pleiades All in One 日本語ディストリビューション (zip) ダウンロード
PHP、MySQL…、だよね。
とりあえずサーバー起動させてスタートアップ登録…したいが重いんだよなぁ;
localhostでとりあえず初期画面開けた。
予想としてはeclipseでソースコード書いて、XAMPPで見る、動かすなんだろうなあ。
PuTTY
Windows上で動作するSSHクライアントだそうな。まだ意味不明……。
いよいよ本格的なPHP/SQL講座になってきますた。明日もがんばるぞー!
・HTML+CSSでサイトを作ってみよう~
TIPS
地味に混乱;
HTML / XHTML入門〜上位階層へのリンク
CSSの各階層のリンクにてこずった;
今回の場合はindexはcss/mystyle.cssだった…マジぎりぎりで決まった;
ほかページは../css/mystyle.cssで普通に出た;;
文字幅padding left/right
<h1>で空白が出る→ググったページ消えた;まあいいか。後日追記予定。
12/15追記→<h1 style="margin-bottom:0">でいい感じ。ただCSSにもh1指定必要
練習サイト
view source with
ソース見やすくするのかなーと。
live http headers
使い方と解説はこちら もっと細かいのはこちら
CraftLaunch
ランチャーソフトってなかなか使わないけど、これは便利そうだなぁ。
ESCで未入力→時計になるよ。
ショートカットドラッグでソフト登録可能。
ID Manager
ID/Pass管理。ネットワーク上で共有できるから楽っちゃ楽。
eclipse、XAMPP
Pleiades All in One 日本語ディストリビューション (zip) ダウンロード
PHP、MySQL…、だよね。
とりあえずサーバー起動させてスタートアップ登録…したいが重いんだよなぁ;
localhostでとりあえず初期画面開けた。
予想としてはeclipseでソースコード書いて、XAMPPで見る、動かすなんだろうなあ。
PuTTY
Windows上で動作するSSHクライアントだそうな。まだ意味不明……。
いよいよ本格的なPHP/SQL講座になってきますた。明日もがんばるぞー!
2010年12月13日月曜日
12/13覚書
・各アプリをstartupに登録。楽をしよう。
・クライアントとサーバー、ネットワークについて
サーバー用OS Windows2003やLinux Fedra cent OS Deban
サーバーソフト WEB Apache
DBサーバーソフト my SQL
FTPサーバーソフト
・PC呼称変更。以降統一。
ユーザー側 クライアント 企業側 ホスト
・ TCP/IPでデータのやり取りが行われる(超大雑把)。WEBはport80を使用。
mailも同じだが暗号化が入るので初期値はいらない子。
・WEBでクリックする行為をHTTPリクエスト、サーバーが返す処理をHTTPレスポンス
・HTTPとHTMLの言葉の意味。HTMLがHTTPを通りますよ、と。詳しい意味はググれ。
・PING打つの久々~
昔は散々お世話になりましたw
・FFFTPインスコ。ローカルはc\1213
10数年ぶりの利用だけど変わってないなぁw
無料で広告入らないスペース探すの面倒だった~><
10数年ぶりの利用だけど変わってないなぁw
無料で広告入らないスペース探すの面倒だった~><
あとなぜか小文字でjpgうpするのに大文字になってて非表示とかね。いまだに謎。
・Adobe Reader入れ忘れてたのでDL
・いちおLhaplusも最新版インスコ
・ブログよりもtwittrが気楽。なんでTwit導入。
・Adobe Reader入れ忘れてたのでDL
・いちおLhaplusも最新版インスコ
・ブログよりもtwittrが気楽。なんでTwit導入。
・phpはWEBサーバーがレスを返すのでブラウザ&ローカルで直接は見れない。
Apache等いれてから初めて表示可能。
・XHTMLソース講釈
・XHTMLソース講釈
<!--覚書タグ-->←このテキスト量でページの半分ぐらい使うよねw
・タグ読み方
HTMLタグの読み方辞典 -CoolWebWindow-
・あと基本タグとか。イントラ作成初期にお世話になったところ~
【HTMLタグの簡単検索】TAG index - ホームページ作成情報
HTMLタグの読み方辞典 -CoolWebWindow-
・あと基本タグとか。イントラ作成初期にお世話になったところ~
【HTMLタグの簡単検索】TAG index - ホームページ作成情報
・headでFont宣言は一番最初に。まあテンプレ。
つか基本以外のテキスト使うとかえって見づらいんだよね;
・tableタグ解説。消えつつありますが。重いしcssでdivが便利だからね。
ようやくIdとclassの違いがわかった…。
<div Id=></div>がhtmlのId。1ページに一箇所だけ。body関連入れとくと楽。
<div class=></>がclass。タイトルやナビバー等のコンテンツ用。
基本講座斜め読みしたけどわかりやすかった。
<DIV>をタテヨコに段組していこう -2step脱テーブルスタイルシートCSSレイアウト講座-
そういやあタグの文字基本小文字だよね、まだ。大文字ってなんか気持ち悪い・・・。
・addressタグ Copyright © 2010 MIS. All Rights Reserved.
2010~のところは企業名。Copyright © とAll Rights Reserved.が著作権ありますよーって宣言です。
・とほほのHTMLはHTML4向けなので/閉じだけ気をつけませう。
・cssコメ/* 内容 */ これもなつい~
・CSSから色見本に。16進数ていうかR**G**B**で色度合い変えられるよ~。
チラ見の色見本 WEB色見本 原色大辞典 - HTML Color Names
つか基本以外のテキスト使うとかえって見づらいんだよね;
・tableタグ解説。消えつつありますが。重いしcssでdivが便利だからね。
ようやくIdとclassの違いがわかった…。
<div Id=></div>がhtmlのId。1ページに一箇所だけ。body関連入れとくと楽。
<div class=></>がclass。タイトルやナビバー等のコンテンツ用。
基本講座斜め読みしたけどわかりやすかった。
<DIV>をタテヨコに段組していこう -2step脱テーブルスタイルシートCSSレイアウト講座-
そういやあタグの文字基本小文字だよね、まだ。大文字ってなんか気持ち悪い・・・。
・addressタグ Copyright © 2010 MIS. All Rights Reserved.
2010~のところは企業名。Copyright © とAll Rights Reserved.が著作権ありますよーって宣言です。
・とほほのHTMLはHTML4向けなので/閉じだけ気をつけませう。
・cssコメ/* 内容 */ これもなつい~
・CSSから色見本に。16進数ていうかR**G**B**で色度合い変えられるよ~。
チラ見の色見本 WEB色見本 原色大辞典 - HTML Color Names
・font-familyは指定したい順で記述。最後はsans-serif(どのPCでも対応可)
・Idで指定したwidth属性のサイズ内でclassのwidthの大きさを決める。flort属性でleft、rightどちらかに回り込む。
・display :inline;で水平バー作成。テンプレをこつこつ作っていくか、サイトで探すか。
・Idで指定したwidth属性のサイズ内でclassのwidthの大きさを決める。flort属性でleft、rightどちらかに回り込む。
・display :inline;で水平バー作成。テンプレをこつこつ作っていくか、サイトで探すか。
うん。サイトで探します。今日載せたリンクの中に商用利用も無料のテンプレサイトあるんです。
興味ある方は探してみてくだされ。
2010年12月10日金曜日
習い事覚書12/10
Fierfox導入→Gmail取得→Thunderbird導入→Evernote導入→座学以下分→ブログ作成→座学→ブログ投稿いまここ
WEB閲覧の仕組み
サーバー(HTML/PHP)――DNS――PC(HTMLで表示された情報を閲覧および利用)
|―DB(PHPでデータを呼び出す)
SEOとは【Search Engine Optimization】 - 意味/解説/説明/定義
SEOとは【Search Engine Optimization】 - 意味/解説/説明/定義
yahooはかつて申請式だった。ポータルサイトで申請式というのも今から見ると非効率だなあ。
代わってGoogleが検索ロボットエンジンで自動収集すると飛躍的にヒットしやすくなり、検索は結果Googleの一人勝ち。
2010年11月にyahooも検索エンジンをGoogleに変更。
SEO対策
<meta name="keywords" content=""/>検索エンジンにヒットさせる為のタグ
HTMLのメタ情報、整理された構築→内部対策 他サイトからの紹介、相互リンク、被link→外部対策
GooglePageRank、はてなブックマーク(同日のリンク過多は垢BANのようだ)、
デリシャスで被link補完→魅力あるコンテンツが必要。
ロングテール - Wikipedia
オンライン小売店がニッチ商品を幅広く売ることで売り上げを向上させる理論。
ただし、ニッチ商品を保持できるだけの企業体力やある程度のターゲットを絞らないと
死に筋になる。 アクセス解析 GoogleAnalytics Google Analytics | 公式ウェブサイト アクセス解析に便利なFirefoxアドオン10選 面白そうなの フリーで使えるPHP+MySQLで構築されたショッピングカートシステム「Zeuscart」
SBMカウンタ http://miniturbo.org/products/sbmcounter/
RSS今まで一度も使ったことがなかった。
ニュースソースにもうちょっと歩み寄ろう…。
とりあえず。
登録:
投稿 (Atom)