(wat-aro)

生きてます

Nginxでsites-enabledが読み込まれない

nginx version: nginx/1.8.1

www26.atwiki.jp

ここを見ながらnginxでVirtual Host を構築しようとしていました.
ただここのやり方では /etc/nginx/conf.d/default.conf が読み込まれてしまうのその対処方法を書きます.

/etc/nginx/nginx.confを開くとこうなっているはずです.

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    tcp_nopush     on;

    keepalive_timeout  65;

    gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

http内のincludeの次の行に新しくincludeを追加します.

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    tcp_nopush     on;

    keepalive_timeout  65;

    gzip  on;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

Debian 8 に MySQL 5.7.11をインストール

MySQL :: Download MySQL APT Repository

f:id:wat-aro:20160309021040p:plain ここの数字を確認する. 数字が変わっていれば以下のmysql-apt-config_NUMBER_all.debのNUMBER部分を変更する.

$ mkdir ~/src
$ cd ~/src
$ wget http://dev.mysql.com/get/mysql-apt-config_0.6.0-1_all.deb

 
次にこのダウンロードしたdebパッケージをdpkgでインストールする.

$ sudo dpkg -i mysql-apt-config_0.6.0-1_all.deb

 
mysql-5.7を選択 f:id:wat-aro:20160309022815p:plain  
mysql-5.7を選択 f:id:wat-aro:20160309022822p:plain  
applyを選択 f:id:wat-aro:20160309022829p:plain  

# リポジトリのアップデート
$ sudo apt-get update
# mysqlのインストール
$ sudo apt-get install mysql-server

mysqlサーバのrootのpasswordを聞かれるので入力する.  

インストールの確認

$ sudo service mysql status
$ sudo service mysql stop
$ sudo service mysql start

 
問題がなければ完了. /etc/init.d/mysqld がないけど,5.7ではないの?
よくわからず5時間くらい探しまわった.

ここに書いた内容は公式サイトから.

MySQL :: A Quick Guide to Using the MySQL APT Repository

MySQL5.7.11でユーザを追加できない.

環境はdebian8, mysql5.7.11.

mysql> grant all on blog_app.* to 'foo'@localhost identified by 'hogehoge';
ERROR 1054 (42S22): Unknown column 'password_last_changed' in 'mysql.user'

以上のようなエラーが出ました.
対処方法は以下になります.

$ sudo mysql_upgrade -u root -p

$ sudo systemctl restart mysql

MySQL unknown column 'password_last_changed' - Stack Overflow

Rubyの正規表現でそれぞれのケースへの変換

今日は正規表現に苦しんだので練習しました。
snake_case、camel_Case、Pascal_Caseのそれぞれへの変換です。
capitalizeなくても書けるけど一応。
m[0].upcase + m[1..-1]はちょっと汚いですしね。
Rubular使えばテストケースが期待通りのマッチになるまで簡単に トライ&エラーが出来ていいです。

class String
  def snake_to_camel
    self.gsub(/\b[a-z][a-z\d]*[a-z_\d]*\b/) do |match|
      match.gsub(/_[a-z\d]/) { |m| m[1..-1].capitalize}
    end
  end

  def snake_to_pascal
    self.gsub(/\b[a-z][a-z\d]*[a-z_\d]*\b/) do |match|
      match.gsub(/[a-z][a-z\d]*/) { |m| m.capitalize }
    end
  end

  def camel_to_snake
    self.gsub(/\b[a-z]+[A-Z][a-z\d]+\b/) do |match|
      match.gsub(/[A-Z][a-z\d]+/) { |m| "_" + m.downcase }
    end
  end

  def camel_to_pascal
    self.gsub(/\b[a-z]+[A-Z][a-z\d]+\b/) do |match|
      match.capitalize
    end
  end

  def pascal_to_snake
    self.gsub(/\b[A-Z][a-z\d]*([A-Z][a-z\d]+)*\b/) do |match|
      match.gsub(/[A-Z][a-z\d]*/) { |m| "_" + m }.downcase[1..-1]
    end
  end

  def pascal_to_camel
    self.gsub(/\b[A-Z][a-z\d]+([A-Z][a-z\d]+)*\b/) do |match|
      match.gsub(/\b[A-Z][a-z\d]*/) { |m| m.downcase }
    end
  end
end

FLEXBOX FROGGYチートシート

FLEXBOX FROGGYをクリアしたのでやりながらまとめたものを貼ります.
Flexboxはここでやった部分しかしりませんが,これだけでも便利ですね.

コンテナ全体

  • justify-content 水平方向への寄せなど
    • flex-start: 左寄せ
    • flex-end: 右寄せ
    • center: 中央寄せ
    • space-between: 要素間にスペースを入れる
    • space-around: 要素の前後にスペースを入れる
  • align-content 垂直方向への寄せなど
    • flex-start 上寄せ
    • flex-end 下寄せ
    • center 中央寄せ
    • space-between: 要素間にスペースを入れる
    • space-around: 要素の前後にスペースを入れる
  • align-items
    • flex-start: 上部に表示
    • flex-end: 下部に表示
    • center: 上下の中央に表示
    • baseline: コンテナのベースラインに表示
    • stretch: よくわからない
  • flex-direction (先頭の方向を変えるのでjustify-content, align-itemsの挙動が変わる)
    • row: 左から右に並べる
    • row-reverse: 右から左に並べる
    • column: 上から下に並べる
    • column-reverse: 下から上に並べる
  • flex-wrap
    • nowrap: 一行で表示
    • wrap: 行端までいくと新たに行を追加して表示する
    • wrap-reverse: 反対から表示し,行端までいけば新たに行を追加して表示する
  • flex-flow
    • flex-directionとflex-wrapを同時に使える.値はスペスで区切って書く.

個別の要素に対して

  • order
    • 現在位置を 0 として順番をずらす.一つ後ろにずらすなら1,一つ前なら-1.
  • align-self
    • 垂直方向の位置を変える.コマンドはalign-itemsと同じ.

プログラミングの基礎を読み終わった.

プログラミングの基礎 (Computer Science Library)

プログラミングの基礎 (Computer Science Library)

演習問題をほぼ解いて一週間くらいかかりました.   
タイトルどおりに丁寧にプログラミングの基礎を習得出来る本でした.
デザインレシピを通して,プログラムの書き方を学んでいきます.
このデザインレシピがよく出来ていて,
簡単な関数ならこのやり方のまま迷わずに書いていけます.
さらに実行して期待する型が出力できる段階まで書けると,テストを書くようになっているので.
テストファーストも体験できます.
何度も問題を解いていくうちに型をちゃんと意識するようになりました.
SICPやっていた時も面倒なバグは大体型がおかしくなっていることに起因していたのですごくためになります.
再帰やリスト操作自体は慣れていましたが,パターンマッチによって操作していくのはおもしろかったです.
プログラミング初心者にも関数型言語初心者にもおすすめな内容だと思います.