awsのCloudFrontを試してみる
awsのCloudFront、要するにCDNですね。
今持っているアカウントが無料期間中なので、せっかくだから試してみました。
今回用意したコンテンツ自体がテキスト数行だった為、その速度向上については触れる事ができません。
CloudFrontの設定で少しハマったのでその点について少しだけ。
まず、CloudFrontの設定を変えて思った通りに動かない時、DistributionのStatusがDeployedになっているかを確認しましょう。何か設定を変えると10分~20分くらいは更新処理で反映されていない点に注意!
せっかちな私は設定を変えて「Save」ボタンを押したらすぐに反映すると思いこんで、思った通りに動かず、あーでもないこーでもないと無駄に時間を費やしてしまいました…。
きっとあちこちにあるサーバーに情報を同期させる為、時間がかかってしまうのでしょうね。
次に設定を変更してもそもそもキャッシュされたままだと反映されないやつもある。取り敢えずDistributionの詳細からInvalidationsタブを選択し、Create Invalidationから任意のObject Pathsを指定してInvalidateしてみましょう。
ちなみにこの処理も結構時間がかかります。StatusがCompletedになるまでしっかりと待ってから次の行動に移すのが吉です。
CloudFrontを使う場合はEC2やS3と連動させると思いますが、Distributionの詳細からBehaviorsタブでBehaviorを追加する事で、任意のパターンファイルを任意のEC2やS3から取って来る形に構成する事ができます。
例えば *.jpg は S3 から、*.php は EC2 から、といった感じです。ちなみにphpはキャッシュして欲しく無いのでBehaviorの設定でObjectCachingをCustomizeにし、Minimum TTLを0としたのですが、保存しても設定が反映されません。気付かずに何度か無駄に更新してしまいました。
CloudFrontのキャッシュ時間(TTL)はどの程度なのか | Developers.IO
上記のリンクにあるページから、headerでCache-Controlを使うのが順当なやり方だと知り、phpに
<?php header("Cache-Control: no-cache"); ?>
を付ける形でキャッシュさせないようにできました。
とりあえずここまで
著者:t.n
mysqldumpしたファイルを圧縮しつつ他のサーバーに飛ばす
とあるサーバー上でmysqldumpしたいけど、そのサーバーはHDDの容量が少なくて(この時点で問題があるように思うが…)他のサーバーに保存したい時のお話です。
相変わらずlinuxのストリーミング処理には関心させられますね。大助かりです。
コマンド例としては以下の通り
mysqldump -udbuser -pdbpass dbname | gzip | ssh -l username 123.123.123.123 'cat > ~/dump.sql.gz'
パラメータについて
dbにアクセス可能なユーザー名:dbuser
上記ユーザーのパスワード:dbpass
dumpするDB名:dbname
転送先サーバーのIPアドレス:123.123.123.123
転送先サーバーのユーザー名:username
転送先サーバー上の保管先:~/dump.sql.gz(ホームディレクトリ直下ですね)
mysqldumpした内容をgzipで圧縮しつつsshで接続先に飛ばしてその内容を保存するという流れですね。この例ではsshでパスワード認証を想定しており、コマンド実行後はパスワードを入力する必要があります。
ちなみにmysqldump側で-pの直後にDB側のパスワードを指定しない場合、最初のDBのパスワード、次にsshのパスワードを入力する必要があります。私の環境だけかもしれませんが、DBのパスワードを入れた直後は何も表示されなくなり、Enterを押すと「もう一度sshのパスワード入れて」と表示され、そこでsshのパスワードを入れると処理が開始されます。何かやり方を間違えているのでしょうかね…。
あと、このやり方だと、sshで鍵認証を使っている場合は秘密鍵をmysqldumpする側のサーバーに持って来て、ssh の -i で指定する必要がありそうですね。転送先のサーバーにログインして、取りに来るというやり方も出来るかと思いますが、結局転送元が鍵認証だったら同じ事になるので、まぁ臨機応変にという感じでしょうか。
著者:t.n
複数人でのunity開発に関して
unityを複数メンバーで開発する際、色々と注意する事がある。
そんな注意事項をまとめて下さっている素敵な記事をご紹介。
Unity開発者が複数人で開発を進める上で覚えておくと幸せになる9つの事 - テラシュールブログ
gitでファイルロックできないかな~(ひとりごと)
著者:t.n
.gitignoreについて
gitの管理対象外ファイルを指定する.gitignoreについて。
.gitignoreの書き方に関して、よく正規表現が使えるという記述があったりしますが、実際には簡易正規表現のようなもので、globパターンというものが使えるようです。
・空行あるいは # で始まる行は無視される
・標準の glob パターンを使用可能
・スラッシュ( / )で始まる場合はルートディレクトリからを表す
・ディレクトリを指定するには、パターンの最後にスラッシュ (/) をつける
・パターンを逆転させるには、最初に感嘆符 (!) をつける
・複数マッチするパターンがある場合は最後にマッチするものが優先
globパターンの主なもの
・* 任意の0文字以上の文字列
・? 任意の1文字
・[abc] a or b or cのいずれかに一致
・[a-d] aからdまでにいずれかに一致
例えば a*e であれば age, ace, abcde, axxxxxxxxxxe などが該当する。
例えば a?e であれば age, ace, axe などが該当する。
著者:t.n
linuxのsedが便利
圧縮状態で数GB、解凍したら数十GBもあるような巨大なテキストデータから特定の部分を削除したい場合に重宝する。
テキストエディタで開くのは非常に難しい。秀丸エディタでも部分指定して開くのが精いっぱい。しかも行番号は指定できない(ファイルを最初から読み進める事で行数を把握するだろうから当然と言えば当然)。
例えば圧縮されているファイルを展開しながら任意の範囲行を削除して再圧縮するにはこんな感じ。
# zcat a.sql.gz | sed -e '13456,25385!d' | gzip > b.sql.gz
これは13456行~25385行以外を削除する処理。
普通の手段でやろうとするとメモリに展開しようとしてメモリもスワップも食いつぶして大変な事に・・・。
著者:t.n
floatを使った時の左右のカラムの高さを揃える方法
floatを使用して左右のカラムに背景色や背景画像の指定をした時、コンテンツの量で左右の高さが合わなくて片方の背景が切れてしまう事が…。
無理に高さを指定しまうと変にスペースも出来てしまうし、いい方法がないかと検索してたらjQueryで簡単に高さを揃える方法がありました。
http://tukuruder.com/archives/1257#codesyntax_8
調べた中ではこれが一番簡単でわかりやすかったです。
著者:N.K
WinSCPで多段階接続をする
【ローカル】
→【踏み台1(鍵1認証)】
→【踏み台2(鍵2認証)】
→【ターゲット(鍵3認証)】
という構成でWinSCPをターゲットに繋げる方法の一つを紹介します。
重要なのはWinSCP単体ではなく、puttyも併用する点です。
予め puttyで多段階接続をする - 時雨に舞う を済ませておきましょう。
-----
(1)トンネル用puttyの設定を用意する
puttyで多段階接続をする - 時雨に舞う のセッションをコピーし、その内容に対して下記の設定を加えます。
[接続→SSH→トンネル]
ポートフォワーディング:源ポート:3000以上の任意の値(例:3111)
ポートフォワーディング:送り先:
[ターゲットのIPアドレスまたはホスト名]:[ターゲットの接続先ポート番号]
(例:example.com:22)
ラジオボタン1行目:ローカル
(※上記3個所を設定したら「追加」ボタンを押しておくこと)
(ここまでやったらセッションを保存しておきましょう)
-----
(2)接続用WinSCPの設定を用意する
[セッション]
ファイルプロトコル:SFTP
ホスト名:localhost
ポート番号:[上記(1)で源ポートに指定した値(例:3111)]
ユーザー名:[ターゲットでログインするユーザー名]
(ここまでやったらセッションを保存しておきましょう)
-----
(3)トンネル用puttyを起動する(プロンプトが出ている状態にしておく)
-----
(4)接続用WinSCPでログインボタンで接続できるはず・・・
参考にしたページ
Connect to FTP/SFTP Server Which Can Be Accessed via Another Server Only :: WinSCP
著者:t.n