ギター好きブログ

アプリ開発(ハンズオン) 2

f:id:dicoffe:20171004102822p:plain

今回は2行目の「$stmt」の中身について解読していきたいと思います。

まず「$this」の右にある「->」(マイナス記号と不等号記号)とはなに?と思ったのですが、これは「アロー演算子」といって、オブジェクト指向で扱う「クラス」の「メソッド」や「フィールド」にアクセスするための演算子です。
授業でやったやつですね。大雑把にいうと「クラス」が教室の名前、「メソッド」が授業するとか休憩するとかの操作を表す、「フィールド」が1組、2組とか教室の中での細かい区分けになるんでしょうか。

アロー演算子は、例えば、クラスを$class(=教室)として、その中の$oneにアクセスしたいときは
$class -> $one

というように表記します。

つまり、
$this -> db -> prepare(“~”)
とは、$thisというクラスの中のdbがもつprepare(“~”)を、$stmtに代入しているということですね。合ってるかなぁ・・・


さらに
prepare(“INSERT INTO `user`(`username`, `passwd`)VALUES(?, ?);”);
について、prepareはプリペアドステートメントと呼ばれるものを利用するための関数です。
プリペアドステートメントとは、SQL文を最初に用意しておいて、その後はクエリ内のパラメータの値だけを変更してクエリを実行できる機能のことです。
クエリとは、「問い合わせる」という意味で、抽出などの要求を送信することができます。パラメータの値を変更する、この場合だとユーザーネームを変更するだけでアカウントを登録することができます。
この機能を利用することでクエリの解析やコンパイル等にかかる時間は最初の一回だけで良くなり、より高速に実行することができます。


次にINSERT INTO num VALUES (a,b);とはレコードの追加を表す分です。
Numというレコード(データ)を(a,b)に追加します。
この場合、`user(=ユーザーネーム)`と`(user,passwd)(=それに対応するパスワード)`を、(?, ?)の場所に追加するという文になります。

入れる場所が「?」だと入れられないのではと思ったのですが、(?, ?)の「?」は後から値を入れるために仮に置いておくもので、指定は別のプログラムが行います。


長くなりましたが、つまり$stmtに代入されるのはユーザーネームとそれに対応するパスワードが格納された、$thisの中のdbというものにある(?,?)を代入します。




次は
return $stmt -> execute(array($this->userName, password_hash($this->passwd, PASSWORD_DEFAULT)));
についてです。

前回のfunctionとは再帰関数のことなので、求めた値をメインプログラムに戻す作業があります。
その戻す作業をどこで行うかを指定するのが「return」です。
「return」に記述された命令が終了した時点で、値はメインプログラムに返されます。




Returnの文を解読するのは大変なので、分からなかった「execute」、「array」について調べていきます。




まず「execute(=実行)」とは同一セッション内に「prepare」文を前もって作成してからでないと実行できません。
Prepare文でパラメータが指定されている場合、それをexecuteが受け取り実行される必要があるからです。

例えばユーザーネーム、パスワードを入力してから、prepareで入力された情報を読み込んでからでないと、executeはパラメータの情報を取得できません。



次に「array(=整列)」とは、配列を生成するための関数です。
例えば配列「$class」に要素'one’、’two’、’three’のみっつを入れたいとすると、

$class = array(‘one’,’two’,’three’);

と記述されます。

つまりこの場合
$this->username、 password_hash($this->passwd,、PASSWORD_DEFAULT
の3つの要素が入った配列がメインプログラムに返される、という命令です。




ここまででアカウントの登録ができるようになりました。
解読していくと意味が解って、すごい面白かったです。
でも疲れたので残りふたつのプログラムは内容ができたらブログにあげます・・・。



以上!

アプリ開発(ハンズオン)

今回はWEBアプリを作ってみようという授業でした。
ローカルの掲示板を利用して、「アカウント登録」、「テキストの読み込み」、「テキストの出力」の3つをプログラムしました。

最初はアカウント登録(ユーザーネームとパスワード)を可能にするためのプログラムを書き込みました。

コード↓
f:id:dicoffe:20171004102822p:plain

これを埋め込みました。



まずこれは再帰関数で、この時「Public」を宣言しておくと、プロジェクトのどこからでも呼び出せる関数になります。
Public = 公開。つまりこのプログラムの情報を、外部のプログラムからコードにアクセスし、読み書きすることができるようになります、と命令しているのです。
例えばほかに「private(非公開)」というものがあるのですがこれを宣言すると、外部からコードにアクセスすることができず「エラー」が表示されます。
今回はユーザ登録のためのプログラムなので、このコードにアクセスできないとエラーになってしまうので「public」と宣言しているのですね。



次はfunction registration(){~}についてです。
これは自分で関数を作れる関数で、事前に
function 関数名(){~}
と宣言しておくことでその後「registration()」と記述するだけで{~}の中身を実行してくれるのです。
例えば「Hello World」と画面に出力したいとき、



とHTML内に記述するだけで「Hello World」と表示されます。



次に行く前に、nameとかの単語の前についてる「$」とはなにかについてで、これは「$」のあとの文字は「変数」ですよと認識させるためのものです。

例えば、10+3を変数xでやろうとすると、
$x =10
$x +=3
と、xの前に「$」をつける必要があります。
でも、事前にこれは変数ですよ、と宣言しなくていいのはすごい楽々さんですね。

以上を踏まえると、「$stmt」とは変数である、ということがわかります。



なら次はその中身は何か、なのですが長い。とても長い。

ので、一旦切ります。




以上!

マイコンボード(ハンズオン)

今回はラズベリーパイを利用して、LEDを色々な方法で光らせることをやりました。

まず配られたものがラズベリーパイ。(以下「ラズパイ」)
f:id:dicoffe:20171002125508j:plain

特徴としては、もともと教材として開発されたものなので、「安価」で「小さい」マイコンボードです。

既に「マウス」「キーボード」(←USB接続)、「ディスプレイ端子(←変換器付)」、「電源アダプタ」が接続されています。
電源とディスプレイ端子が接続された時点でPCにラズベリーが表示され、これでラズパイにプログラムを組むための準備が完了されています。(本当は初期設定しなければならないらしいのですが、先輩がやってくれたみたいです?)

またズラッと並んでいる針みたいなものは「ピン」といい、ここと後述の「ブレッドボード」を接続します。
この二つをつなぐことで、ブレッドボードに接続された電子部品をラズパイで制御して動かすことができます。




次が、ブレッドボードという電子部品を接続するための盤です。
f:id:dicoffe:20171002125506j:plain

これにLEDやスイッチやなんやら繋ぐことで、前述通り動かすことができます。
特徴として、縦に銅線が通っているのでその線上に電子部品を指すことで電力が流れます。


次に、ブレッドボードとラズパイを繋ぐための線「ジャンパ」です。
構成は「銅線」と、作成者が感電しないための「メッキ」。
f:id:dicoffe:20171002125459j:plain

これはブレッドボードに接続した出力したい物、例えば光らせたいLEDのプラス側に1本、抵抗の外側に1本、それぞれの同じ線上にさします。
f:id:dicoffe:20171003135411j:plain

そして、鞘みたいな形の端子(メス)をラズパイのピンに差し込みます。
f:id:dicoffe:20171003135957j:plain


ブレッドボード上は同じ線上に差していれば、どのような配置でも構わないのですが、ピンは差し込む場所に意味があり、用途に合わせて差し込む場所を選ばなければなりません。

意味については先輩のものをコピペさせてもらいますm(_)m
f:id:dicoffe:20171003143548p:plain

メスを差し込むと、LEDは光りました。すごい/(。ω。)\





純粋にLEDを光らせることができたら、スイッチをつけると光るようにします。

f:id:dicoffe:20171002125511j:plain

次は、抵抗一つとジャンパが3本増えます。
スイッチの両側と抵抗の外側のそれぞれ同線上にジャンパを差し込み、ピンにもさします。

これでスイッチを押すと光らせることができるようになりました。





これはプログラミングしなくてもできるのですが、次回はプログラムを組んでLEDを様々な方法で光るようにします。






以上!

マイコンボード(ハンズオン) 2

次はいよいよPCでプログラムを書いて実行します。

使用言語はPythonです。
初めて扱ったのですが、C言語と比べると行数も少なく、私的には繰り返しなどのやり方が簡単だなーと思いました。





まずは、スイッチを取り外して最初のLEDが光る回路にします。
f:id:dicoffe:20171003135411j:plain


そしてPC側でプログラムを書き込みます。

コードは↓で、sleeptimeに代入された数字の秒数だけLEDを光らせる、というプログラムです。
f:id:dicoffe:20171003141107j:plain

プログラムを実行すると光りませんでした・・・
回路の問題だったようで、いじると無事光りました。やったね。



次は、2秒間光る を 「3回」2秒間光る プログラムにします。

コードは↓です。
f:id:dicoffe:20171003141255j:plain

これは一発で光りました。
どこがループを表しているのかとても分かりやすくて、Python知らなくてもアルゴリズムさえ知っていればできそうだなーと思いました。




最後に一度押したら光り続け、もう一度押したら消光するプログラムです。

次はスイッチを取り付けます。

コードは↓です。
f:id:dicoffe:20171003141419j:plain

1回目は回路の問題で光らなかったのですが、いじると2回目は光りました。
時間による指定があったのか、押したら消えるがうまくできなかったのですが、光り続けさせることはできました。





感想

ラズパイは前々から触れてみたかったので、触れてうれしかったです。
接続自体は持ち前の不器用さで簡単なところを難しくしてしまいましたが、問題なく進み、マイコンとはどのようなものなのか、実物をみたことで理解が深まったと思います。

一番苦戦したのはブレッドボードで、それぞれの穴は銅線でつながっているのは簡単だったのですが、ジャンパで一つの回路を作るのは事前知識をしっかり持ってないと大変だなと感じました。
物理って大事。

色々失敗もしましたが、試行錯誤で解決していくことでより知識が深まった気がします。
私の目標、「エフェクタ作成」に通ずるものがたくさん学べたので、またやりたいです。




以上!!

PCメンテナンス知識 5

次は電源についてです。

電源は電源ユニットによって制御されます。
コンセントなどから流れる電気(交流)を、コンピュータが使う電気(直流)に変換するためのものです。

これの重要なところは、電気が不足するとコンピュータは不安定になったり、最悪動かなくなったりしてしまうため、消費電力にあう電源ユニットを合わせなければならないことです。
周辺機器や、CPU、GPUにも大きな電力を必要とするので、電源ユニットにも気を配らなければならなくなりました。
全然気にしていなかった分野なので、おどろき(。ω。)



最後はバスについてです。

バス(Bus)とは経路のことで、
例えば、CPUからメインメモリへ、メインメモリからハードディスクへ、というようにデータが行ったり来たりしている、その通り道のことです。

バスには、内部バス、外部バスなどがあります。

内部バスとは、CPU内部のデータ経路のことで、キャッシュメモリや計算するための演算装置をつないでいるバスのことです。
外部バスとは、CPUとメモリ、内蔵ハードディスクをつなぐ経路のことです。

また、バスは接続できるものが決まっており、

ISAバス ・・・安定性は高いが低速のバス
PCIバス ・・・ISAバスより高速な外部入出力装置と接続できる
AGPバス ・・・バスグラフィックカード専用に作られた、
USBバス ・・・まとめて使える

などがあります。

PCメンテナンス知識 4

次は光学メディアの規格についてです。

 

まず光学メディアとは、光の反射によって情報を読み書きする情報媒体のことで、CDやDVD、ブルーレイディスクのことです。

 

光学メディアは、取り扱いの便利さ、大量生産の容易さが評価され幅広く普及しています。

読み込み専用の光学メディア(ROM)や、一度だけ書き込み可能な光学メディア(R)、読み書き可能な光学メディア(RAM)などがあります。

ROMはアーティストのCDや映画のDVDなど書き込みのできないもののことです。Rは長期にわたり変更が起きない情報の保存に向きます。RAMはRの書き込む前の試し書きや、データの短期間保存に向きます。

 

データが保存されている光学メディアを廃棄する際はディスクシュレッダーにかけたり、専門の業者に依頼するなど、データを流出させないような処分方法が必要です。

 

 

次は無線LANについてです。

 

LANとは「Local Area Network」つまり「同一の敷地またはや建物内等に構築されたネットワーク」です。
インターネットはルーターに接続され、ルーターを中心に各端末をLANで結びます。ルーターは各端末とインターネットの中継役を果たし、外部からの不正なアクセスを遮断する役割も持っています。

そして、このルータに接続するものを、有線から電波でやりとりする無線通信にしたものが無線LANです。

今はみんな当然のように使ってますね、便利(*^ω^*)

 

 

 

次はディスプレイ端子についてです。

 

これは、パソコンとディスプレイをつなぐための規格のことです。

「映像、音声、USB信号」を送信することができます。

 

代表的なものとして、

      

D-Subミニ15(VGA

f:id:dicoffe:20170929140331g:plain

 

と、

DVIなどがあります。

 

D-Subミニ15、別名「VGA」は、コンピュータの映像をディスプレイに送信するための、アナログ信号でやり取りをするディスプレイ端子です。

 

DVIは、さらにDVI-IとDVI-Dにわかれます。

 

f:id:dicoffe:20170929140452g:plain DVI-D

 

f:id:dicoffe:20170929140511g:plain DVI-I

 

DVI-Iはデジタル+アナログ、両方の信号でやりとりします。変換アダプタをつけることで、VGAのディスプレイ(アナログディスプレイ)とデジタルディスプレイ両方に接続することができます。

DVI-Dはデジタル信号のみで、変換してVGAディスプレイにも接続するということはできません。

 

アナログ信号に比べ、デジタル信号だと表示する色が増えるごとに送信するデータ量が増えるため、現在ではVGAが主流に使われています。

 

 

PCメンテナンス知識 3

第二回目。(・ω・`)

 

まずはPC用のCPUについてです。

 

CPUとはCentral Processing Unitの略で、制御・演算を行うコンピュータの中枢となる部分です。

日本語では、「中央処理装置」と呼ばれます。

 

CPUの性能によってコンピュータの良し悪しが変わるといっても過言ではないほど重要な部分で、性能がいいほど処理の速度、安定性が高まります。

 

性能の見方として、クロック数というものがあります。

これは一秒間に動作がどれだけ行えるかを表しており、単位は[Hz(1/秒)]です。

 例えば、クロック数が「32GHz」のCPUならば、「一秒間に32*10^9回」行えるという意味です。

 

 

また、複数のコアを備えたコンピュータもあり、総称して「マルチコア」と呼ばれます。

コアの数によって「デュアル(2つ)コア」、「クアド(4つ)コア」などと呼び名が変わります。

 

CPUが多ければ多いほど分担して作業が行え、処理速度や信頼性の甲状につながります。

近年では「オクタ(8つ)コア」というのも出ており、これだけあったら熱量すごそうですね。大きいファンが必要だし、コンピュータの重量が何キロになるんでしょうか・・・( ^ω^)

 

 

次はメインメモリについてです。

 

メインメモリは、マザーボードに装着されている、一時的にデータを保存しておくための装置です。CPUはこのメモリとやりとりをして処理を行います。

 

HDDと直接やりとりをするよりも処理が速く行えるので、メインメモリに入らなかったデータはHDDに保存されるため、メインメモリの容量を上げることで処理速度の低下を防ぐことができます。

 

しかし、マザーボードの種類によって装着できないメモリがあるので注意が必要となります。

 

 

次は補助記憶装置についてです。

 

メインメモリの容量は小さく高価なので、容量不足を補うために安価で大容量の補助記憶装置が使用されます。

またメインメモリは電源を落とすとデータが消えてしまうため、長期間保存したいデータは補助記憶装置に保存します。

 

補助記憶装置にはいくつか種類があるのでまとめてみました。

 

f:id:dicoffe:20170929111506p:plain

 

光ディスクドライブはほとんどのコンピュータに備わっている、CDを見るための補助記憶装置ですが、HDDとSSDはどちらかがコンピュータに備わっている、前述したとおりメインメモリの容量不足を補うための補助記憶装置です。

SSDは多少高価ですが、値下がりのスピードが速いみたいで、いう程手が届かないなんてことはないようです。

 

 

 

 

 

 

以上!