ITP1_2 Branch on Condition
この本、kindleセールの時に買ってみた。
初歩の本だったみたい。けどスラスラ読み進められて楽しい。
C++のiostreamすげー便利。
ScalaでStdIn.readlineを連発するより簡単に標準入力を取り込めるので、プロコン的な奴で便利な気がした。
長方形の中の円 | プログラミング入門 | Aizu Online Judge
#include<iostream> using namespace std; // ITP1_2 Branch on Condition // D: A Circle in a Rectangle int main() { int W, H, x, y, r; cin >> W >> H >> x >> y >> r; bool isOver = false; // X軸 if (x - r < 0) isOver = true; if (W < x + r) isOver = true; // Y軸 if (y - r < 0) isOver = true; if (H < y + r) isOver = true; if (!isOver) cout << "Yes" << endl; else cout << "No" << endl; return 0; }
カジュアルにlivereload
軽くHTMLをコーディングしたかった。
ライブリロードしたいけどgulp使ったりザ・フロントエンドみたいなことはしたくない…
goemon使ってみよーと思ったら超簡単だった。
goemon -g > goemon.yml # pathとか修正 vim goemon.yml echo '<script src="http://localhost:35730/livereload.js"></script>' > index.html goemon -- open index.html #ファイルを変更したらライブリロードされる echo "hello world" >> index.html
はかどる
memcachedコードリーディング(1)
memcachedをコード・リーディングしてみることにした。
まずはgithubからコードを取得し、はじめのコミットに戻りコンパイルしてみるところまで。
# コード取得 git clone git@github.com:memcached/memcached.git cd memcached # first commit まで戻る git reset --hard 32f382b605b4565bddfae5c9d082af3bfd30cf02 # ライブラリインストール brew install libevent brew install judy # -staticオプションはcrt0.oがないyoと怒られるので外す gcc -g -I. -L. -o memcached-debug memcached.c -levent -lJudy
gcc-2.95でコンパイルされることを前提にしたコードのようで、返り値にintが定義された関数のreturnで0を省略するとコンパイルエラーになってしまう。微修正。
git diff diff --git a/memcached.c b/memcached.c index 8ba15e9..d1e9fc2 100644 --- a/memcached.c +++ b/memcached.c @@ -758,7 +758,7 @@ int try_read_network(conn *c) { int update_event(conn *c, int new_flags) { if (c->ev_flags == new_flags) - return; + return 1; if (event_del(&c->event) == -1) return 0; event_set(&c->event, c->sfd, new_flags, event_handler, (void *)c); c->ev_flags = new_flags; @@ -1190,6 +1190,6 @@ int main (int argc, char **argv) { /* enter the loop */ event_loop(0); - return; + return 1; }
telnetでつなぐ
$ telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. set hoge 0 0 3 foo STORED get hoge VALUE hoge 0 3 foo END stats cachedump 13 1000 ITEM hoge [3 b; 1461908919 s] END
動いとる^^
無料SSL証明書のLet’s Encryptを使ってみた
nginxでlet's encrypt使ってみました。
# 準備 git clone https://github.com/letsencrypt/letsencrypt.git cd letsencrypt ./letsencrypt-auto --help # nginxに設定(letsencryptとやり取りするために使う) location ^~ /.well-known { alias /var/letsencrypt/.well-known; } # ディレクトリ作成 mkdir /var/letsencrypt # 作成 ./letsencrypt-auto certonly --webroot --webroot-path /var/letsencrypt -d takuan.me # 証明書 /etc/letsencrypt/live/takuan.me/fullchain.pem #秘密鍵 /etc/letsencrypt/live/takuan.me/private.pem
的な感じで。
90日で期限が切れるので、cron等で自動更新させるのが通っぽい。
0 2 1 * * $SCRIPT_PATH/letsencrypt-auto --force-renew certonly --webroot --webroot-path /var/letsencrypt -d takuan.me >> $LOG 2>&1
無料のSSL証明書、便利ですなー。
CentOS 7のFirewall
iptablesに代わってfirewallというのができたらしい。
#設定確認 firewall-cmd --list-all # httpsを許可(一時的に) firewall-cmd --add-service=https --zone=public # httpsを許可(永続的に、再起動しても適用) firewall-cmd --add-service=https --zone=public --permanent # httpsを許可(サービスを削除、非許可にする) firewall-cmd --remove-service=http --zone=public
CodeDeploy + Github + AutoDeployでくっそハマった。
Amazonの英語のチュートリアルをおうだけなんですねどねー
英語読めないわしにはつらい。
所感をメモっとくと・・・
- EC2にはCodeDeployのAgentをインストールしないと行けない(これは必須みたい)
- appspec.yml にdeploy script的なものを呼び出す記述をするが、ここでエラーになると原因が追いづらく感じたので小さく作っていったほうがいい(慣れの問題?ログがわかりづらい気がした。Agentのログが出ているのでちゃんと見ればそれで原因は追えそう)
- GithubとAWS CodeDeployが直接連携できる。AccessKeyとか渡すので、連携用にIAM作るのがベター。
- トリガーにはGitHub Auto-DeploymentとかいうService使う。デフォルトのブランチしかhockできないっぽい。
- デフォルト以外のブランチでもCodeDeployフックさせるなら適当なCIサービス使わないとダメかなー
- AWSCodeDeployRole をEC2のiam-roleに紐付ける
- ログの場所 /opt/codedeploy-agent/deployment-root/deployment-logs/codedeploy-agent-deployments.log
基本amazonのdocument見ればok。なんとなくどこまでやってくれるサービスなのか掴めてなかった。
一瞬hockの方法がわからなかった(Github -> CodeDeployの連携ができることを知らなかった)ので、Webhock -> API Gateway -> Lambda -> CodeDeploy ? とか思ってめんどくせーなーと思ったけどそんなことなかった。
まとめ
- CodeDeployとGithubを組み合わせて、JenkinsやCI不要で自動デプロイができる。
- また、AutoScalingグループに対してローリングデプロイみたいなことができるのでこれ便利。