ブログ

投稿一覧

コーディング規約

2019年05月08日 00時05分

対象


・HTML
・CSS
・JavaScript
・PHP



文字コード


・UTF-8とする。


ファイル


・改行コードはLFとする。
・ファイルの最後に空行を入れる。



・120文字でゆるい文字数制限(絶対的な文字数制限はしない)を設ける。
・1行は80文字以内にするべき、80文字を越える場合は複数行に改行する。
・行末に空白文字列を記述してはいけない。
・読みやすくしたり、関連性を示すために適度に空行を加えてかまわない。
・1行は1ステートメントにする。



HTML


・インデント
 ✔2つの半角スペースを使用する。
 ✔タブを使用してはいけない。


CSS


・インデント
 ✔2つの半角スペースを使用する。
 ✔タブを使用してはいけない。


JavaScript


・インデント
 ✔4つの半角スペースを使用する。
 ✔タブを使用してはいけない。
 ✔<script>タグからインデントを開始する。
  <script>
  var x = 1;
  if (new Date().getHours() < 18) {
   document.getElementById("demo").innerHTML = "Good day!";
  }
  </script>
・文字列
 ✔文字列は、シングルクォーテーションで囲む
・文末のセミコロン
 ✔文末のセミコロンは記述しなくてもよい


PHP


・インデント
 ✔4つの半角スペースを使用する。
 ✔タブを使用してはいけない。
・予約語とtrue/false/null
 ✔予約語は小文字で記述する。
 ✔コンスタント値「true」「false」「null」は小文字で記述する。

PHPでのJSONのTips

2019年05月07日 23時05分

Unicodeにエンコードしない


json_encode($arr, JSON_UNESCAPED_UNICODE);


改行、インデントを挿入する


json_encode($arr, JSON_PRETTY_PRINT);


スラッシュをエスケープしない


json_encode($arr, JSON_UNESCAPED_SLASHES);


オブジェクトで返却


$obj = json_decode($json)


連想配列形式で返却


$arr = json_decode($json, true)

mysql.sh

2019年04月17日 08時04分
MySQL(MariaDB)用のシェル。

mysql.sh


#!/bin/bash

MYSQL_HOME=/var/lib/mysql
MYSQL_BIN=/usr/bin

MYSQL_USER=YOUR_USER
MYSQL_PASS=YOUR_PASS

MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_SOCK=$MYSQL_HOME/mysql.sock

MYSQL_DUMP=$MYSQL_HOME/dump
TODAY=`/bin/date +%F`
TENDAYSAGO=`/bin/date -d '10 days ago' +%F`

case "$1" in
"login")
$MYSQL_BIN/mysql --user=$MYSQL_USER --password=$MYSQL_PASS --host=$MYSQL_HOST $2
;;
"start")
systemctl start mysqld
;;
"restart")
systemctl restart mysqld
;;
"slavestart")
$MYSQL_BIN/mysqld_safe --relay-log=$MYSQL_HOME/relay-bin &
;;
"stop")
systemctl stop mysqld
;;
"dump")
if [ -a $MYSQL_DUMP/$2-$TENDAYSAGO.dump.gz ]; then
/bin/rm $MYSQL_DUMP/$2-$TENDAYSAGO.dump.gz
fi
$MYSQL_BIN/mysqldump --user=$MYSQL_USER --password=$MYSQL_PASS --host=$MYSQL_HOST --quote-names --skip-lock-tables --single-transaction --flush-logs --master-data=2 $2 > $MYSQL_DUMP/$2-$TODAY.dump
/bin/sleep 15
/bin/gzip -9f -S .gz $MYSQL_DUMP/$2-$TODAY.dump
;;
"dumpmulti")
for x in "$@"
do
if [ "dumpmulti" = $x ]; then
continue;
fi
if [ -a $MYSQL_DUMP/$x-$TENDAYSAGO.dump.gz ]; then
/bin/rm $MYSQL_DUMP/$x-$TENDAYSAGO.dump.gz
fi
$MYSQL_BIN/mysqldump --user=$MYSQL_USER --password=$MYSQL_PASS --host=$MYSQL_HOST --quote-names --skip-lock-tables --single-transaction --flush-logs --master-data=2 --databases $x > $MYSQL_DUMP/$x-$TODAY.dump
/bin/sleep 30
/bin/gzip -9f -S .gz $MYSQL_DUMP/$x-$TODAY.dump
done
;;
"dumpall")
if [ -a $MYSQL_DUMP/dumpall-$TENDAYSAGO.dump.gz ]; then
/bin/rm $MYSQL_DUMP/dumpall-$TENDAYSAGO.dump.gz
fi
$MYSQL_BIN/mysqldump --user=$MYSQL_USER --password=$MYSQL_PASS --host=$MYSQL_HOST --quote-names --flush-logs --master-data=2 --all-databases > $MYSQL_DUMP/dumpall-$TODAY.dump
/bin/sleep 15
/bin/gzip -9f -S .gz $MYSQL_DUMP/dumpall-$TODAY.dump
;;
"diff")
/usr/bin/mysqldiff --server1=$MYSQL_USER:$MYSQL_PASS@$MYSQL_HOST:$MYSQL_PORT:$MYSQL_SOCK --server2=$MYSQL_USER:$MYSQL_PASS@$MYSQL_HOST:$MYSQL_PORT:$MYSQL_SOCK $2$4:$3$4 --force --skip-table-options
;;
*)
echo "sh mysql.sh [login <dbname>|start|restart|slavestart|stop|dump <dbname>|dumpmulti <dbname1> <dbname2> ...|dumpall|diff <dbname1> <dbname2> <.table>]"
;;
esac




MariaDBのopen_files_limitの設定

2018年08月16日 09時08分

MariaDBのopen_files_limitの設定


$ sudo systemctl edit mariadb
---
[Service]
LimitNOFILE=65536

$ sudo systemctl daemon-reload
$ sudo systemctl restart mariadb

$ sudo cat /proc/`pidof mysqld`/limits | grep -i "max open files"
Max open files 65536 65536 files


上記設定を行うと、

/etc/systemd/system/mariadb.service.d/override.conf


として、ファイル保存される。

MariaDB側の設定も確認。

$ sh mysql.sh

MariaDB [(none)]> show variables like '%open_files_limit%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 65536 |
+------------------+-------+


mysql.sh は、こちら


Let's Encrypt

2018年07月02日 09時07分

certbot-auto install


$ sudo wget https://dl.eff.org/certbot-auto -O /usr/bin/certbot-auto
$ sudo chmod 755 /usr/bin/certbot-auto
$ certbot-auto --help


certbot-auto execute


$ certbot-auto certonly --webroot -w DOC_ROOT -d DOMAIN -m EMAIL --agree-tos


cron


$ crontab -e
###
### 毎月1日の午前4時に実行
###

# apache
00 04 01 * * /usr/bin/certbot-auto renew --force-renew && systemctl reload httpd

# nginx
# 00 04 01 * * /usr/bin/certbot-auto renew --force-renew && systemctl reload nginx


for conf : apache


<VirtualHost *:443>
:
:
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/DOMAIN/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/DOMAIN/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/DOMAIN/fullchain.pem
:
:
</VirtualHost>


for basic auth : apache


<Directory "/var/www/hoge/.well-known">
<RequireAll>
Require all granted
</RequireAll>
</Directory>


for conf : nginx


server {
:
:
listen 443;
:
:
ssl on;
ssl_certificate /etc/letsencrypt/live/DOMAIN/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/DOMAIN/privkey.pem;
:
:
}
</VirtualHost>


for basic auth : nginx


location ^~ /.well-known/acme-challenge/ {
auth_basic off;
}


certbot-auto wildcard


$ sudo certbot-auto certonly --manual -d *.DOMAIN -m EMAIL --agree-tos --manual-public-ip-logging-ok \
--preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory

-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.DOMAIN with the following value:

HjceQRWhJ1Bgo-Oy_p6QNlg7Vc0J_buFNVqeTpvdtfc

Before continuing, verify the record is deployed.
-------------------------------------------------------------------------------

DNSのTXTレコードに、上記を設定。その後、何かキーを押すと、ワイルドカード証明書が発行。

- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/DOMAIN/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/DOMAIN/privkey.pem
Your cert will expire on YYYY-MM-DD. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
"certbot-auto renew"



PAGE TOP