OctoCat のステッカー可愛い。PCとかに貼りまくりたい。
でも Github Shop で買うしかないみたい。
ということで注文してみた。
購入したのは・・・
- ステッカー1、2 $5 × 2
- コースター(4つ入り) $5 × 1
送料は・・・
- 国際便 $15.34
商品より高い!\(^o^)/
でもさ、仕事でもプライベートでもお世話になってるしさ。いいよね。うん。
届いたらまた写真upします。
OctoCat のステッカー可愛い。PCとかに貼りまくりたい。
でも Github Shop で買うしかないみたい。
ということで注文してみた。
商品より高い!\(^o^)/
でもさ、仕事でもプライベートでもお世話になってるしさ。いいよね。うん。
届いたらまた写真upします。
試作サイトを職場でURL公開したら、
みなさんのアクセス(大した量じゃない)で
サイトがダウンするという悲しいできことがありました。
その時に Apache + Passenger + Rails で作ったというと
何人かの方々に nginx + unicorn で worker を複数立てた方がいいんじゃない
とアドバイスもらい構築しなおしました…
sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
sudo yum install -y nginx --disablerepo=* --enablerepo=nginx
nginx -v
nginx version: nginx/1.8.0
cd /home/dir_name/app_name/
vim Gemfile
## 追記内容 gem 'unicorn'
bundle install
cd config/
vim unicorn.rb
### unicorn.rbの内容 application = 'app_name' worker_processes 2 # 立ち上げるworker数 working_directory "/home/dir_name/#{application}" listen "/var/run/unicorn/unicorn_#{application}.sock" # Unix Domain Socket pid "/var/run/unicorn/unicorn_#{application}.pid" # PIDファイル出力先 timeout 60 preload_app true stdout_path "/var/log/unicorn/unicorn.stdout_#{application}.log" # 標準出力ログ出力先 stderr_path "/var/log/unicorn/unicorn.stderr_#{application}.log" # 標準エラー出力ログ出力先 GC.respond_to?(:copy_on_write_friendly=) and GC.copy_on_write_friendly = true before_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! old_pid = "#{server.config[:pid]}.oldbin" if old_pid != server.pid begin sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU Process.kill(sig, File.read(old_pid).to_i) rescue Errno::ENOENT, Errno::ESRCH end end sleep 1 end after_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection end
ここらへんを参考にSSL自己証明書を作成
Apache/SSL自己証明書の作成とmod sslの設定 - maruko2 Note.
cd /etc/nginx/conf.d # default.confはリネームした mv default.conf _default.conf.bak vim app_name.conf
### app_name.conf の内容 (もっと良い書き方があるはず) upstream backend-unicorn { server unix:/var/run/unicorn/unicorn_app_name.sock fail_timeout=0; } # http server { listen 80; server_name app_domain; root /home/dir_name/app_name/public; index index.html; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { try_files $uri @proxy; } location @proxy { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://backend-unicorn; } location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ { expires 1y; } } # https server { listen 443 ssl; server_name app_domain; root /home/dir_name/app_name/public; index index.html; access_log /var/log/nginx/ssl_access.log; error_log /var/log/nginx/ssl_error.log; ssl on; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; ssl_session_timeout 10m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { try_files $uri @proxy; } location @proxy { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto https; proxy_redirect off; proxy_pass http://backend-unicorn; } location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ { expires 1y; } }
# 起動 sudo service nginx start # 再起動 sudo service nginx restart
# 起動 bundle exec unicorn_rails -c /home/dir_name/app_name/config/unicorn.rb -E production -D -p 13000 # 再起動 kill -HUP `cat /var/run/unicorn/unicorn_app_name.pid`
ps aux | grep unicorn
趣味で作成中のサイトに、アムステルダム辺りから謎アクセスが結構きていた。
# 例) [18/Jul/2015:04:06:34 +0900] "GET //phpMyAdmin/scripts/setup.php HTTP/1.1" 404 1564 "-" "-" [18/Jul/2015:04:06:34 +0900] "GET /muieblackcat HTTP/1.1" 404 1564 "-" "-" [18/Jul/2015:04:06:34 +0900] "GET //phpmyadmin/scripts/setup.php HTTP/1.1" 404 1564 "-" "-" [18/Jul/2015:04:06:34 +0900] "GET //myadmin/scripts/setup.php HTTP/1.1" 404 1564 "-" "-"
調べたらphpMyAdminの脆弱性をついた攻撃だった。 もともと2009年に報告されている脆弱性だが、 今でも放置されているサイトがごまんとある為、乗っ取りを狙ったアクセスが絶えない模様。
ていうかまだ全然コンテンツとしてはリリースしてないんだけど、 ドメイン名から辿り着くのかな。
簡潔で短いコード < 理解しやすいコード
理解しやすいコードを意識しよう
(2章以降を読んで書けるようになろう)
NG)情報の一部を名前にする ↓↓↓ 必要な情報を名前にする
get, send, find, start, make
tmp, retval, results
i, j, k
UpperCamelCase
lowerCamelCase
lower_separated
UPPER_CASE
他の意味にとらえられる、曖昧になる名前は使うべからず
filter, Clip(text, length)
limit
-> 以下?未満?max
-> 以下!start, stop
-> stopは範囲内?外?first, last
-> lastは範囲内begin, end
-> endは範囲外is・has・can・should
等をつけるget(), size()
->は軽量なメソッドが期待される