まるもの勉強日記。

実はSE目指してます。

MySQL

MySQLは、世界でもっとも利用されている「データベース管理システム」のこと。
しかも、オープンソースなのです。低コスト!

MySQLは、小さいアプリケーションから巨大なアプリケーションまですべてに対応できるほどの拡張性をもっている。
また、LinuxMacWindowsなどを問わず動作する。

 


MySQLのダウンロード(Windows環境)

MySQLサイトへ。

・上の[ダウンロード]をクリック。

・一番下にあるMySQL Community Edition (GPL)の[Community (GPL) Downloads »]をクリック。

・一番上の[MySQL Community Server]をクリック。

・次のようなページがあるので、

f:id:marumom16:20170721115117p:plain

↑の下にある青い[Go to Download Page >]をクリック。

MySQLインストーラには、上のWeb経由でダウンロードしながらインストールするインストーラと下のインターネットが繋がっていなくてもインストールできるインストーラがある。ここでは、Web経由でインストールするので上の[Download]をクリック。

・「Oracle Web account」のログインを促される。
ログインしなくても(アカウントを持っていなくても)インストーラをダウンロードできるので、その場合は下の方の[No thanks, just start my download.]をクリック。

 


MySQLのインストール(Windows環境)

・ダウンロードしたインストーラを実行。

・ライセンスの確認をして[Next]

・セットアップタイプの選択。

・インストールするものを選択する画面が表示される。

・必要なものを選択してから緑色の右矢印をクリック。右側に追加されていく。

MySQLをインストールするディレクトリとデータを設置するディレクトリのパスを設定する画面が表示される。終わったら[Next]をクリック。

・問題が無ければ[Execute]をクリック。インストールが開始される。

・インストールしたMySQLの初期設定を行う。[Next]をクリック。

コンフィギュレーションタイプとMySQLとの通信に関する設定画面が表示される。

・rootアカウントのパスワードの設定とユーザー追加の為の画面が表示される。rootアカウントのパスワードを設定をする。設定が終わったら[Next]をクリックする。

MySQLWindowsのサービスとして動かすかどうかの設定画面が表示される。

・最終確認画面で、問題がなければ[Execute]をクリック。

[Finish]で初期設定完了。

 


今回は必要最低限におさめました。

全てをアウトプットすればいいわけじゃないな~て思って。

にしても分かりずらいやね(笑)

まだまだ(笑)


<参考にしたもの>

【超初心者向け】MySQLとは?どこよりもわかりやすく解説

MySQLのダウンロードとインストール - Windows環境

MySQLインストール

PHP : フォーム処理

 

HTMLで構成されたフォームからデータを送信し、PHPプログラムで受信する。
HTMLフォームを処理する手段は、PHPの最も強力な機能のひとつ。

ちなみに、フォームと所定の形式をもった書式、入力欄のことね。

 


HTMLフォーム

まずは、HTMLフォームについて簡単に説明。

<form action="PHPプログラム" method="post">
名前: <input type="text" name="name" />
<input type="submit" />
</form>

▽▽▽▽▽▽▽▽▽▽こんな感じのフォーム▽▽▽▽▽▽▽▽▽▽

f:id:marumom16:20170630125119p:plain

これで簡単なフォーム完成。

 

作成方法はhtmlのファイルを作成し、上記のHTMLを書くだけ。

form タグを使用すると入力フォームを表示できる。

<form action="〇〇〇.php" method="post"></form>

action...データの送信先
method...データの送信方法

フォームでのデータの送信方法(PHPにおけるデータの受信方法)は二通り。
GETリクエスト…データがURLで引き渡される
POSTリクエスト…データがURLで引き渡されない

 

<input type="text" name="sample" />

input タグの type に text を指定すると、一行入力項目を表示する事ができる。
name で指定したキーワードを基に、PHPでデータを受け取る。

 

<input type="submit" />

input タグの type に submit を指定すると、データ送信ボタンを表示する
value で指定するとその語句がボタンに表示される

 


PHPでのデータ受信

PHPでは、フォームから送信されたデータは自動的に特別な連想配列に格納される。

ブラウザからPOSTメソッドで送信されたデータは、$_POSTという連想配列に格納される。

GETメソッドで送信されたデータは、$_GETという連想配列に格納される。

POST形式、GET形式のどちらも使用する場合には$_REQUESTが便利。POST形式のデータもGET形式のデータも両方格納される。

※$_REQUESTを使用した場合、せっかくPOST形式で送信しているデータをGET形式でURLから送信できる事になってしまい、セキュリティ的にあまりお勧めできないらしい。

送信されたデータを表示させる際、HTMLが反映されないようにしなければならない。

 

<,>,$," などをブラウザで文字列として表示させるには、 htmlspecialchars 関数を使用する。

htmlspecialchars($_POST["name"])

続けて ENT_QUOTES を入力すると ' (シングルクォート)も変換される。

この処理は、送信されたデータを表示させるときには必ず行うこと。
そのままにすると、HTML、JavaScriptをそのまま解釈してしまうので。

 

改行が含まれる文字列を表示させるには、 nl2br 関数を使用する。

nl2br($_POST["name"])

これで、文字列中の改行文字が
に変換されて返されるようになる。

 

PHPによっては ',",\ など自動的にエスケープすることがある。

それをなくすのは、 stripslashes 関数。

逆にエスケープするには addlashes 関数。

 


〈参考にしたもの〉

フォームからの入力 PHP Labo

フォームの処理

フォームとのやり取り そふぃのPHP入門

PHPでフォームからデータを受け取る方法(GETとPOST)

PHP : ファイルの入出力

PHPはデータ保存の際、データベースがよく利用されている。
が、テキストファイルにもデータを書き込むことができる。

ファイルを扱う命令はいくつかある。

 

まずは、 fopen 関数。
fopen 関数はファイルを新規作成したり開くことができる。
引数に「開きたいファイル」と「モード」を指定できる。

fopen("開きたいファイル"orパス,"モード");

〈主なモード一覧〉

モード 説明
r 読み込みのみ
r+ 読み込み/書き出し
w 書き出しのみ
w+ 読み込み/書き出し
a 書き出しのみ(追記)
a+ 読み込み/書き込み(追記)

また、開いたファイルは fclose 関数で閉じる。

$fp=fopen("開きたいファイル"orパス,"モード");
fclose($fp);

ファイルの読み込み

モードに r を指定すると読み込みモードになる。

引数に指定したファイルから1行読み込むことができる fgets 関数もここで紹介。

<?php

$fp=fopen("開きたいファイル","r");
while ($line = fgets($fp)) {
echo "$line<br />";
}
fclose($fp);

?>

これで開きたいファイルの内容が改行区切りですべて表示される。

 

ちなみに、ここででてきた while 文は繰り返し処理を行うもの。

while (条件式){
実行する処理1;
実行する処理2;
}

while 文は指定した条件式が真(true)の間は繰り返す。

(どこかでまた詳しくやるかも?)

ファイルへの書き込み

モードに w を指定すると書き込みモードになる。

書き込みモードでは、 fwrite 関数でファイルの内容を書き換えることができる。

<?php

$fp = fopen("開きたいファイル", "w");
fwrite($fp, "ファイルへの書き込み内容");
fclose($fp);

?>

開きたいファイルの内容が「ファイルへの書き込み内容」になる。
開きたいファイルには、書き込み権限を与えておくこと!

ファイルへの追記

モードに a を指定すると追記モードになる。

追記モードでは、 fwrite 関数でファイルの内容に追記できる。

<?php

$fp=fopen("開きたいファイル","a");
fwrite($fp,"ファイルの追記内容");
fclose($fp);

?>

追記モードは。プログラムが実行されるたびにファイルの末尾に追記が行われる。


 

ファイルを扱う方法の中にはもっと簡単にできるものがある。

<?php

echo file_get_contents("開きたいファイル");

?>

⇒「開きたいファイル」の内容が表示される。
各行末に改行タグを付加して順に表示することができない。

<?php

file_put_contents("開きたいファイル", "ファイルへの書き込み内容");

?>

⇒「開きたいファイル」に「ファイルの書き込み内容」が書き込まれる。
内容全体を書き換えてしまうのでファイルの末尾にデータを追記することはできない。

 


〈参考にしたもの〉

PHPでのファイル書き込みとパーミッションエラー解決法

PHP Labo ファイル入出力

PHP:文字列出力

PHPで文字列を出力するには、

echo
print

がある。

 

実際に書いてみると、

<?php
echo "Hello!";
?>

という感じ。

echoは、複数の文字列を続けて出力する場合にはカンマ(,)で区切って文字列を指定する。

echoは関数ではなくPHPの言語構造の1つらしい。
引数を括弧で括る必要はないけど、ただ関数のように括弧で括って記述することも可能。

 

ややこしいわ。

 

printもechoと同じく関数ではなくPHPの言語構造の1つ。
ただprintは、echoとは異なり複数の引数を指定できない。

FFFTPに関して

 

FFFTPフリーソフトで人気の高いFTP専用のファイル転送ソフト。

今回、FFFTPを使用することになったのでダウンロード方法などメモします。

メモと言っても、参考にしたURLを貼り付けるだけだけど(笑)

 

▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽

FFFTPのダウンロード・インストール方法

FFFTP の使い方

△△△△△△△△△△△△△△△△△△△△△△△

 

以上。

PHP基礎

 

PHPは、Web作成のために用いられることの多いプログラミング言語の1種。
Web開発に適している、オープンソースの汎用スクリプト言語
動的にHTMLデータを生成することによって動的なウェブページを実現。

HTMLはHyper Text Markup Language(ハイパーテキストマークアップ・ランゲージ)の略で、Webページを作るための最も基本的なマークアップ言語のひとつ。
ほとんどのWebページがHTMLCSSという言語で見た目が作られる。
WebページのほとんどがHTMLで作られている。

 


PHP記述方法

・開始タグと終了タグ

PHPスクリプト部分は

<? ~ ?>
<?php ~ ?>

どちらかで囲む。

最もシンプルなのが上のほう。
XMLXHTMLPHPを埋め込む場合は、下のほうを使用することが標準規格で決められてる。

<?php
print("Hello World!");
?>

print...関数 = 命令
("Hell World!)...引数、()で囲む = 関数に渡す情報
;(セミコロン)...きまりごと

関数が処理して戻り値という情報を返す。

とまぁ、こんな感じ。

・文の記述

PHPスクリプトは文で構成されている。
代入、関数呼び出し、条件文、空の文が使用できる。

命令文の最後のセミコロン(;)は任意。
複数の命令文はセミコロン(;)で区切る。

・コメントの記述

コメントアウトしたい部分は1行なら先頭に//をつける。
複数行なら/* ~ */ で囲む。


文字コード

文字コードは、コンピュータ上で文字を利用するために各文字に割り当てられるコードのこと。

いろんな種類の文字コードがある。

・ASCII
・JISコード
シフトJISコード
Unicode
EUC
UTF-8

などなどなど、、、

文字化けする理由に文字コードがある。
HTMLファイル自体の文字コードとブラウザが解釈した文字コードが異なるとき文字化けは起きる。

文字化け発生時にはファイルの文字コードを確認すること。
エディタによってデフォルトの文字コードは異なる点に注意。

 

_____

 

Linuxが落ち着いたところで、PHPの勉強を主流に始めていくことにしました。

なんかあっちこっち飛び回っている気がしないでもないけど、、(笑)

 

というかひとつ言いたい。LPICを取得するのに、まずお金をためないといけないという壁にぶちあたりました。あぁぁぁ。

 

1週間でLPICの基礎が学べる本〈7日目〉

 

プログラムはファイルの形でハードディスク上に保存されている。
プログラムを実行するとプログラムコードがコンピュータメモリ上に読み込まれCPUによって実行される。

メモリ上で実行中のプログラムをプロセスという。

 

プロセス情報を表示

[ps (オプション)]

~オプション~
・[a]...他のユーザーのプロセスも表示
・[u]...ユーザー名表示
・[x]...端末から実行されたものでないプロセスも表示

オプションなしだと実行したユーザーが端末上で起動したプロセスの一覧を表示する。

~[ps]コマンドの表示項目~
・PID...プロセスID(プロセスを起動ずるとプロセスごとに固有のID番号が割り当てられる)
・TTY...プロセス実行した端末名
・TIME...プロセスの実行時間
・CMD...実行コマンド

プロセスは他の実行中のプロセスから起動する。=フォーク
起動元を親プロセス
実行したものを子プロセス

このプロセスの親子関係を表示するのが

[pstree (オプション)]

プロセスの実行状況を確認するのが

[top]

「Q」キーで終了

~[top]コマンドの表示項目~
・PID...プロセスID
・USER...プロセスを実行しているユーザー
・%CPU...CPUを消費している割合
・%MEM...メモリを消費している割合
・COMMAND...実行されているコマンド

プログラムの実行が終了すると、プロセスは消滅してしまう。
中には明確に終了の支持しなければ動作をつづけるものもある。
その場合は、プロセスに停止信号を送って終了させる。
プロセスにおくる信号=シグナル

~主なシグナル~

シグナルID シグナル名 動作
9 KILL 強制終了
15 TERM 終了(デフォルト)
18 CONT 再開
19 STOP 一時停止

※KILLシグナルを使うのはTERMシグナルが有効にならなかった場合のみ使うこと。

 

シグナルを送信するには

[kill (シグナルID) プロセスID]
[kill -s (シグナル名) プロセスID]

[kill]コマンドはプロセスIDで指定しないといけない。
あらかじめ[ps]コマンドでプロセスIDを確認しておく必要がある。

[killall]コマンドを使うとプロセス名を指定できる。


 

コマンドを実行すると複数のプロセスが起動することがある。
必ずしも1対1ってわけじゃない。

ユーザー側の処理の単位をジョブという。
1つのジョブはコマンドラインに入力する1行を考えてOK。
パイプでいくつかのコマンドをつないで実行する場合、それで1つのジョブと考える。

フォアグラウンドジョブ…コマンド実行が終了するまで次のコマンドが入力できない。

バックグラウンドジョブコマンドラインの末尾に「&」をつける。すぐに次のコマンドを入力できる。
⇒効率的な操作ができる!

実行中のジョブを確認するには

[jobs]

・「Running」...バックグラウンドで実行中
・「Stopped」...バックグラウンドで停止中
・「+」...直前に実行していたジョブ
・「-」...その前のジョブ

フォアグラウンドで実行させるには

[fg (%ジョブID)]

フォアグラウンドでジョブが実行されている最中に、[Ctrl]+[Z]キーをおすと一時停止できる。

一時停止中のジョブの実行をバックグラウンドで再開させるには

[bg (%ジョブID)]

※ジョブIDは「%」つけて指定すること。


通信を行う上での取り決め=通信規約=プロトコル

最も一般的なプロトコルTCP/IP

TCPは信頼性を確保するためのプロトコル
パケットが届いたかどうか確認し、届いてなければパケットを再送するなどして信頼性の向上を図る。

IPはネットワーク上のIPアドレスを規定し、パケットが伝送されるネットワーク経路の制御を担当する。
IPアドレスには、32ビットのIPv4と128ビットのIPv6がある。

IPアドレスネットワーク部ホスト部から成り立つ。
2つの境界線はサブネットマスクを使って求められる。

ネットワーク部が同じであるIPアドレスは1つのネットワークに属する。
これをネットワークセグメントという。
1つのネットワークに属していると、直接通信を行うことが可能。

先頭のIPアドレスネットワークアドレス
末尾のIPアドレスブロードキャストアドレス

IPアドレスにはクラスという概念がある。
クラスはネットワーク部とホスト部をあらかじめ決められたビット数で分割し決められている。

 

インターネットでサーバを公開しようとすればそのサーバに割り当てるIPアドレスが必要になる。
インターネットで使われるIPアドレスは重複したりしないようICANNという非営利団体が管理していて、ブロバイダなど通じてユーザーに割り当てられるようになっている。これをグローバルアドレスという。

一方、企業内LANでパソコンをネットワークに接続する際にもIPアドレスは必要。
IPアドレスを割り当てるのが手間なので、プライベートアドレスを使う。

~プライベートアドレスの範囲~
・10.0.0.0~10.255.255.255
・172.16.0.0.~172.31.255.255
・192.168.0.0~192.168.255.255

 


 

1代のコンピュータ上ではWebブラウザとメールクライアントなど複数のネットワークアプリケーションが動作していることもある。
そこで、送信元や送信先のアプリケーションを識別するためにポート番号が使われる。
IPアドレスが住所だとすると、ポート番号は部屋番号みたいなものらしい。

~主なポート番号~

ポート番号 説明
20 FTPのデータ送信
21 FTPの制御情報
22 SSH接続
23 Telnet接続
25 電子メール送信
53 DNS
80 Web(HTTP)
110 電子メール受信

 

設定ファイルに設定を記述するとネットワーク設定は永続的なものになる。

/etc/hostsファイルIPアドレスとホスト名(コンピュータ名)との対応を記述する

/etc/resolv.confファイル…利用するDNSサーバやドメイン名を指定する

/etc/sysconfig/networkファイル…ネットワーク機能を有効にするかどうか、ネットワークの基本情報(ホスト名とか)を設定する

/etc/sysconfig/network-scripts/ifcfg-eth0IPアドレスサブネットマスクなどネットワークインタフェース「eth0」の設定を記述する

ネットワークサービスを再起動することで、設定ファイルの変更がネットワーク設定に反映される。

[service network restart]

 

ネットワーク経由で別のコンピュータにログインするためには

[telnet 接続先ホスト名 or IPアドレス]

しかし、[telnet]コマンドでの通信は暗号化されていない。
つまり、パスワードや通信内容が漏洩されてしまう恐れがある。

 

SSHは安全なリモート接続ができるプロトコル
[telnet]の代わりに[ssh]コマンドを使うと安全な通信が行える。

[ssh (ユーザー名@)接続先ホスト名 or IPアドレス]

SSHはたとえ盗聴されても大丈夫。
なぜなら公開鍵認証というパスワードを使わずして認証を行う仕組みがあるから。
パスワードの代わりに、公開鍵秘密鍵のペアで認証を行う。

公開鍵認証でログインする環境をととのえておけば第三者がログインすることはない。

指定したホストに向けてICMPパケットを送信

[ping 接続先ホスト名 or IPアドレス]

ホストが動作していれば反応が返ってくる。
つまりネットワークがつながっているってこと。
[Ctrl]+[C]キーを押すまでICMPパケットは送信される。

 


 

これで、「1週間でLPICの基礎が学べる本」終了です。
時間かかったなぁ、もぅ。

6・7日目あたりがちょっと理解が追い付かなくなった正直なところ。

これでもまだ基礎だもんな。(笑)