いちりんのアウトプットブログ

インフラエンジニアです。まだまだ勉強中の身。わからないこと、気になる事を随時調べてアウトプットします。

PHPの勉強その4

フォームのデータを受け取る

cookie

  • setcookie(“key”, “value")
  • cookieはブラウザに保存される

  • _COOKIEという定義済みの変数がある

  • そこにusernameをセットすると、ブラウザに保存された変数が取得できる

  • time()でcookieの有効期限を設定できる

  • 設定しなければブラウザを閉じるまでが有効期限となる

AS is なに?

先輩との会話で出てきたBGPの意味がわからず、調べたら結構ネットワークの知識がないと理解が難しそうだったので、 ひとまず知識が曖昧な部分から理解していく。

ASって?

ネットワークの自律システムのこと。Autonomous Systemの略。

なんなの?

ASは統一されたルーティングポリシーによって運営されるIPネットワークやルータ群のこと。 一般的には,一つのプロバイダのネットワークや,企業ネットワークがそれに該当する。 インターネットはASを単位として構成されており、つまりインターネットはASの集合体として考えることができる。

それぞれのネットワークでAS番号が割り振られており、それは全世界で一意である(被らない) AS番号は16ビット(2バイト)あるいは32ビット(4バイト)の値で各地域のRIR(Regional Internet Registry/アジア太平洋地域はAPNIC)を通じて各国NIC(Network Information Center/日本はJPNIC)に配布され、NICから各組織へ割り当てられる。

インターネット上でのパケットの経路制御(ルーティング)はAS間とAS内で分かれている。 AS内ではIGP(Interior Gateway Protocol)と呼ばれ、代表的なものにRIP,OSPFがある。 AS間ではEGP(Exterior Gateway Protocol)と呼ばれ、通常はBGP4が使用されている。

PHPの勉強 その3

  • アクセス権

    • private...そのクラス内からのみアクセス可能
    • protected...そのクラス+親クラス内からのみアクセス可能
    • public...どこからでもアクセス可能
    • アクセスさせたくないプロパティやメソッドがある場合などに使える
  • static

    • インスタンス化しなくても使えるメソッドやプロパティを定義
    • クラス名::staticで定義したメソッド とすれば呼び出せる
    • インスタンスを呼ばれた数をカウントするには、コンストラクタに変数を設定しクラス名::変数++とすればいい
    • なお、クラス内から同じクラスの名前を呼び出すときはselfというキーワードが使える
  • 抽象クラス

    • これ自身をインスタンス化することはできない
    • 抽象クラスで共通の定義をすれば子クラスの実装をシンプルにしたりできる

NAT/NAPT is 何?

何なの?

IPアドレスを変換する技術。グローバルIP↔︎ローカルIP
DHCPと勘違いしそうになるが、あれはIPアドレスを自動的に割り振ってくれるシステム

何で必要なの?

インターネット上のルータは、宛先IPアドレスにプライベートIPアドレスを用いたパケットを受け取ると破棄してしまう。
すなわち、ローカルな組織のホストは、プライベートIPアドレスを使用してインターネットに接続できない。
そのためNATを用いてプライベートIPアドレスグローバルIPアドレスの変換を行い、インターネットに接続する

変換の方法

スタティック変換は、内部ネットワークのサーバーを外部にも公開する場合にも用いる。 サーバーのドメイン名は、DNSによって変換されるため、外部のホストから見たグローバルIPアドレスが常に一定である必要があるためである。

  • ダイナミック変換
    • 複数のローカルアドレスをどのホストのどの通信かを識別するために、ポート番号と組み合わせて一つのグローバルアドレスに変換する。
    • IPマスカレードとも呼ばれる

ルータはNAT機能とIPマスカレード機能を組み合わせて機能しており、そのために複数のPCが同時接続できるようになっている。

ARP is なに?

ARP とは

ARP(Address Resolution Protocol) は、MACアドレスをあて先のIPアドレスから求めるためのTCP/IPプロトコルである

何なの?

宛先IPアドレスを用いたネットワーク層のルーティングにより、目的のサブネットに到着したパケットを最終的に宛先ホストに転送するためには、
データリンク層の処理で用いるMACアドレスが必要である。
しかし、イーサネット内に接続されたホストのMACアドレスは不明である。
このプロトコルは指定したIPアドレスを持つホストのMACアドレスを問い合わせるプロトコルである。

仕組み

  1. 送信元のホストは、ARP要求パケットに対象ホストのIPアドレスを設定して送信

  2. 宛先ノードのMACアドレスは不明であるので、宛先MACアドレスの値をオール1(ブロードキャストアドレス)とする。

  3. ブロードキャストアドレスを受け取ったホストは自分あてのフレームとして処理をし、ARP要求で指定されたIPアドレスと自分のIPアドレスを比較する。

  4. 異なっていればARP要求を無視。同一であれば、自分の宛先MACアドレスを指定したARP応答パケットを送信元ホストに返信する

問い合わせを行ったホストは得られたMACアドレスARPキャッシュに記憶する。
以後、このホストはキャッシュを参照するので同じ宛先ホストに対するMACアドレスの問い合わせは不要となる。一定時間経つとクリアされる。

PHPを学んでみる 2

h1. 命令

  • 数字切り上げの命令

    • ceil() 小数点以下切り上げ
    • floor() 小数点以下切り捨て
    • round() 四捨五入
    • rand() 乱数を生成
  • 文字列に関する命令

    • strlen() 文字列数え上げ
    • mb_strlen() 日本語文字列数え上げ
    • printfはCと同じような感じ
  • その他命令

    • count() 配列の個数を数える
    • implode() 配列の文字を指定した文字で区切って表示

h2. クラス

  • クラスには特殊なメソッドがある

    • クラスがインスタンス化されるときに必ず呼ばれるConstructorという命令がある
  • クラスを作るときはclassキーワードを使いそのあとにクラス名をかく(最初は大文字)

  • クラスにはプロパティ、コンストラクタ、メソッドなどをかいていく

    • コンストラクタはメソッドの一種なので宣言するときはfunctionと宣言
  • クラスの中のプロパティやメソッドにアクセスするときは$thisを使用する

  • クラスの継承は class 継承先クラス名 extends 継承元

    • メソッドやプロパティを継承先でオーバーライドできる

PHPを学んでみる

PHPほぼミリしらなのにレビュワーに入れられたりしたので急遽勉強 ドットインストールのphp入門15回目までの学習内容

  • ワンライナーでビルドインwebサーバーの立ち上げ方

    • ip aでlocalhostのIPを調べて php -S IP:port で立ち上げられる
  • <?php で宣言する

    • htmlに埋め込む場合は<?php ?>で囲う(?)
  • var_dumpで型と値がそのまま表示される

  • 定数を定義するにはdefine("変数名", "値")

    • すでに定義されている変数もある(LINE,FILEなど)
  • 変数を展開する際、他の文字列とごっちゃにならないように{}で明示的に囲うこともできる(表示結果に差異はない)

  • 真偽値

    • 数値が0や0.0,文字列が空または"",論理値がfalse, 配列の要素の数が0,nullの場合はfalseになる
  • 配列でkeyとvalueのペアを入れて結びつけるには=>という表現を使う

    • keyは省略することもできる。その場合は0からの連番になる
  • foreach

    • 配列の内容をループ処理で取り出してくれる
  • コロン構文を使用することで、PHPとHTMLを混在して記述するときに視認性を向上させることができる。