ブラウザの横幅が変わった時の複数画像表示

横幅320pxの画像を1枚表示
viewportはinitial-scale=1.0とする

<!DOCTYPE html>
<html lang="ja">
<head>
	 <meta charset="UTF-8">
	 <title>画像の縮小</title>
         <meta name="viewport" content="initial-scale=1.0,width=device-width">
<style>
	.center {
		text-align:center;
	}
</style>
</head>
<body>
  <div class="center">
	<img src="img/cat.jpeg">
  </div>
</body>
</html>

PC版:画像よりも広いブラウザで閲覧
当然、ブラウザの横幅におさまる

PC版:画像よりも狭いブラウザで閲覧
ブラウザに収まらない 例:287pxのブラウザでみてみる

mobile版:画像よりも狭いブラウザで閲覧
view-portを設定しているので、画面幅で表示される

画像を2枚にします

<body>
  <div class="center">
	<img src="img/cat.jpeg">
	<img src="img/frog.jpeg">
  </div>
</body>

PC版:複数画像よりも広いブラウザで閲覧

PC版:複数画像よりも狭いブラウザで閲覧
収まらないので、改行されて表示される

mobile版
収まらないので、改行されて表示される

ブラウザ幅に合わせて画像サイズを自動調整したい

<head>
	 <meta charset="UTF-8">
	 <title>画像の縮小</title>
	 <meta name="viewport" content="initial-scale=1.0,width=device-width">
<style>
	.center {
		text-align:center;
	}
	.center img {
		width:45%;
	}
</style>
</head>
<body>
  <div class="center">
	<img src="img/cat.jpeg">
	<img src="img/frog.jpeg">
  </div>
</body>

widthを%で指定すれば、ブラウザサイズに合わせて自動縮小される。

ただ、これ、画像が可変だと、例えば3マイになったらあかんやん。。

phpで文頭半角ドット(.)を正規表現(preg_match)

まず文章を用意します。
test.txt

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

1行ずつ正規表現でみていき、文頭に半角ドットがあった場合は、エラーをアラートメッセージを出します。

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

if($file){
	while($line = fgets($file)){
		if(preg_match('/^./', $line)){
			echo "文頭に半角ドットが含まれています". "<br>";
		} else {
			echo $line . "<br>";
		}	
	}
}

fclose($file);

なに!? 半角ドットがエスケープされていない。

if($file){
	while($line = fgets($file)){
		if(preg_match('/^\./', $line)){
			echo "文頭に半角ドットが含まれています". "<br>";
		} else {
			echo $line . "<br>";
		}	
	}
}

出来たー

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とは別の話になってしまいましたね。