phpでif文で1行ずつ取得して出力する

まずテキストファイルを作成します。
test.txt

Linuxは無料です。あなたの時間に価値が無いなら。
Jamie Zawinski

phpで1行ずつ読み込む

ini_set('mbstring.internal_encoding' , 'UTF-8');
$file = fopen("test.txt", "r");

if($file){
	while($line = fgets($file)){
		echo $line . "<br>";
	}
}

fclose($file);
?>

続いて、正規表現で、「半角ドット(.)」「半角スペース( )」「ダブルクォート(“)」が含まれていた場合の処理をやりたいと思います。

バッチ処理(英語ではBatch proccessing)とは

今更感がありますが。。
バッチ処理:英語ではBatch proccessing

– 一つの流れのプログラムを順次実行すること。
– 予め定められた処理を一度に行う。

PC起動時の処理などもバッチ処理という。
というこは、クローンタブで時間を定めて処理することだけをバッチ処理とは言わない、もっと広義な意味を含めているようですな。

ざっくりというと、まとめて処理ですが、場面によって微妙に違いますね。

Mysql “ENCLOSED BY”

mysqlのENCLOSED BYって何?

mysql5.6のリファレンスマニュアルを覗いてみます。
LOAD DATE INFILE構文
optionallyでENCLOSED BY ‘char’と記載があります。

LOAD DATA INFILEは、高速にテキストファイルからテーブルに行を読み取る。
TSVやCSVからMySQLにロードする方法なのね。

サンプルのコマンドを見てみましょう。

mysql> SET character_set_server= utf8mb4;
mysql> SET NAMES utf8mb4;
mysql> use databasename
mysql>  LOAD DATA INFILE 'hoge.CSV' INTO TABLE foo
    ->  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    ->  ( @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    ->  SET created_at = CURRENT_TIMESTAMP;

LOAD DATA INFILE でファイルを読み込んで、INTO TABLEで指定したデータベースに値を入れてますね。

まずデータを用意します。配当利回りトップのデータにしておきましょう。dividen.csvで保存します。

/home/vagrantにdividen.csvを保存します。
/home/vagrant/dividen.csvの状態

続いて、databaseを作ります。
mysql> create database equity;

mysql> use equity;
Database changed

mysql> create table dividen(
-> code int,
-> name varchar(30),
-> yeild float
-> );
Query OK, 0 rows affected (0.29 sec)

コードはこれでいいのかな?

LOAD DATA INFILE '/home/vagrant/dividen.csv' INTO TABLE dividen
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ''
(code, name, yeild)

では行きましょう。

mysql> LOAD DATA INFILE '/home/vagrant/dividen.csv' INTO TABLE dividen
    -> FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ''
    -> (code, name, yeild);
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

なにいいいいいいいいいいいいいいいいいい

だが、使い方は解った^^

windowsでのSequel Proの使い方

Sequel ProとはMySQLの管理ツール
phpMyAdminのようなものだと思ってよいでしょう。

まず、公式サイトに行ってみましょう。
Sequel Pro

なんかホットケーキみたいになってますね。
4つ特徴の記載があります。
full mysql support
flexible connectivity
perfect web development companion
easy installation

あれ、Downloadが osx 10.6 or higherとなっていて、macのみですな。Windowsはどうすればいいのでしょう?

sequel pro windowsで探してみます。
Sequel Pro Windows – Is it available yet?
The answer is no. There’s no Sequel Pro on Windows.
なにいいいいいいいいいいいいいいいい

これは。。。
まあ、macはunix系なので納得と言えば納得ですが。。ひどいですね。

ssh接続コマンドのオプション -L, -N

コマンドラインにて以下のように打った時

ssh -N -L hogehoge foofoo

-p ポート番号
接続に使用するポート番号を指定

-l ユーザー名
接続に使用するユーザ名を指定

-L リモート側ソケットに与えられたローカル(クライアント)ホスト上の指定のTCPポートまたはUnixソケットが、与えられたリモートホスト上のポートに転送されるよう指定する。ローカル側で、TCPポートにlisten用のソケットを割り当てることにより行われる。

-N リモートコマンドを実行しない。

オプションはほかにも、 -1, -2, -4, -6 など色々ある模様。
うーん、ややこしーーーー

AWS cloudfrontによるアクセスログの解析

AWS cloudfrontによるアクセスログの解析をしたい

まずS3にバケットを作成します
バケット名は適当にaccess-logdataとします。

続いてcloudfrontを開きます

あれ、なんか英語だ。。 

Select a delivery method for your content
Create a web distribution if you want to:なのでWebを選択

Create Distribution
– origin domain name, origin path?
 

なんだこれは。。
viewer protocol policy, allowed http methodなど細かく設定できるようです。
すげーなこれは。

Amazon CloudFrontとは?

AWS CoudFrontは、CDNサービス
DDos軽減のため、Shield, S3のオリジンとしてELB、edgeなどと連携

DDos攻撃とは、複数のコンピュータから標的のサーバに、ネットワークを介した大量の処理要求を送ることでサービスを停止させてしまう攻撃。

— フラッド型
プロトコルを攻略して大量データを送り付けることで、攻撃対象が処理できない状態に持ち込む

— 脆弱性型
サーバやアプリケーションの脆弱性を利用して不正処理を行わせる

F5アタック:httpリクエストはキャッシュを保存せずに情報をリクエストできる

CloudFrontの料金

CloudFrontの料金を見てみましょう。
cloudfront

ページ中段のオンデマンド料金(GB単位)
10TBまで 0.110USD
10TB-50TB 0.105
50-150TB 0.090
150-500TB 0.08
500TB-1024TB 0.060
1PB-5PB 0.050
5TB超 0.04
ん? GB単位ってことは、3GBで3.4USDくらい!? なんかCDNにしては高いような気がする。

HTTPメソッドのリクエスト料金 1万件あたり0.060USD
100万リクエストで6ドル? 100万リクエストなんて、直ぐに行くでしょうから、これもそこそこ高いような。。

専用IPカスタムSSL 毎月600ドル
SSL証明書だと、ものによるが、1年で数万もかからないのに、謎に高いな。
CRSなんて簡単につくれるのに、いやーなビジネスのにおいがしますね。

オリジンサーバーからCloudFrontへオリジンフェッチ
エッジロケーションへのデータ転送が無料? 

Webソケットは無料
インターネットでは、TCP/IPと呼ぶ通信プロトコルを使用するが、そのTCP/IPを利用するには特別な出入り口が必要なる。その出入口がソケット
電話番号や郵便のようなイメージ

ソケット通信を使用すると、HTTPよりも下を使用することができる。
なんか、Cloudfrontとは別の話になってしまいましたね。

aws athenaの使い方

athenaとは: S3でのデータの直接分析を簡易化

AWSのヘッダから[サービス]を押下すると、AWSのサービス一覧が表示されます。
athenaは分析の下にあります。

以下のように記載があります。petabyteは凄いですね。ペタバイトは1024テラバイト、1兆バイトです。
>Amazon Athena is a fast, cost-effective, interactive query service that makes it easy to analyze petabytes of data in S3 with no data warehouses or clusters to manage.

get startedを押下します。
To query the ELB log files, you need to define a corresponding table in Athena.
ELBに対応するテーブルを定義する必要がある。

database, table nameは適当。
Location of input data setにs3のURLを入れる
s3://athena-examples-us-east-1/path/to/data/

CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs (
  `Date` DATE,
  Time STRING,
  Location STRING,
  Bytes INT,
  RequestIP STRING,
  Method STRING,
  Host STRING,
  Uri STRING,
  Status INT,
  Referrer STRING,
  os STRING,
  Browser STRING,
  BrowserVersion STRING
  ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
  WITH SERDEPROPERTIES (
  "input.regex" = "^(?!#)([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+[^\(]+[\(]([^\;]+).*\%20([^\/]+)[\/](.*)$"
  ) LOCATION 's3://athena-examples-myregion/cloudfront/plaintext/';

ELBのログって書いてあるけど、table nameはcloudfrontだ。何故だ??

エンジニアがamazon欲しい物リストを考えるとこうなる

欲しい物リスト
http://amzn.asia/0W51meS

基本物欲ないからなーーーーー 特に欲しい物ない。。
なんだろーほんとにないな。 

1位:macbook pro 123,984円 i5, 256GBくらいあれば良し。
欲しい。

2位:コーヒーメーカー 18,800円
うーん、まずまず欲しいかも。

他は。。。

そんなものかなー
絞りだしても出てこないなー
むしろ、なんか捨てたいなー。。

うーん、ないぞ。むしろ、財布はノーブランドにグレードダウンしたい。
しかし、やすっぽい財布もなかなかないなー

ということで、結論、欲しい物リストはそんなにない。

こんな感じ http://amzn.asia/0W51meS