MySQLで最後にINSERTしたAutoIncrementのidを取得する

生のSQLで取得する場合は、

で取得できます。

DBIを使用している場合は、以下のようにステートメントハンドルから取得できます。

 

参考URL)

 

CentOS7でのサービス起動・停止・自動起動設定など

  • サービス一覧と自動起動設定の確認

CentOS6まで

CentOS7から

enabled →自動起動有効
disabled →自動起動無効
static →単体で自動起動設定ができないサービス

 

  • 個別に確認したい場合

CentOS6まで

CentOS7から

例:sshdの状態確認

“…/”Unit名”; eabled;” →自動起動有効
“…/”Unit名”; disabled;” →自動起動無効

Active: active (running) →サービス起動中
Active: inactive (dead) →サービス停止中

 

  • 自動起動の設定

CentOS6まで

CentOS7から

例:sshdの自動起動設定

 

  • 起動・停止・リスタート・リロード

CentOS6まで

CentOS7から

例:sshdを起動するとき

 

参考URL)
http://qiita.com/haisaihiroki/items/c38cb3c0a331db9b6f69

メール本文にピリオド(.)のみの行がある場合の対処

今更感がありますが、、。

SMTP通信上は、原則ピリオドのみの行(正確にはCRLF.CRLF)はメールの終わりを意味します。

本文にこれらが含まれていた場合、以降のデータが無視されてしまいますので、SMTPとPOPのルール上は、本文にピリオドのみの行があった場合には、送信時にピリオドをさらに1つつけ、受信時(POP処理時)には1つピリオドを落とします。

sendmailでは-iオプションで送信時に上記の処理を勝手にやってくれます。(逆に-iオプションを付けないとデフォルトでピリオドだけの行を終端と見なし以降は無視される、という仕様に驚き)

 

qmailやPostfixで、sendmailラッパを利用している場合でも、きちんと動作します。

 

参考サイト)

https://fumiyas.github.io/2014/12/13/sendmail.postfix-advent-calendar.html

とても便利なGROUP_CONCAT()

今まであまり使う機会がなく知らなかったのだが、グループ化したカラム以外のカラム値をつなげて返してくれるこの関数はとても便利。
しかもDISTINCTも使えるのが最高に良い。(DISTINCTはUNIONでしか使えないと思っていた。。。)

使用例
tb_family

id
1
2
3

tb_parent

id parent_name family_id
1 山田 太郎 1
2 鈴木 花子 2
3 佐藤 次郎 3
4 山田 よしこ 1

tb_student

id student_name family_id
1 山田 息子 1
2 鈴木 息子 2
3 佐藤 息子 3
4 鈴木 娘 2

同じ家庭の保護者(parent)をグループ化して表示

結果

family_id all_parent
1 山田 太郎,山田 よしこ
2 鈴木 花子
3 佐藤 次郎

同じ家庭の保護者(parent)と学生(student)をグループ化して表示

結果

family_id all_parent all_student
1 山田 太郎,山田 よしこ 山田 息子,山田 息子
2 鈴木 花子,鈴木 花子 鈴木 娘,鈴木 息子
3 佐藤 次郎 佐藤 息子

このままだと保護者と学生の列数分ダブってしまうので、、、
同じ家庭の保護者(parent)と学生(student)をグループ化し、重複値は1つにまとめて表示

結果

family_id all_parent all_student
1 山田 太郎,山田 よしこ 山田 息子
2 鈴木 花子 鈴木 娘,鈴木 息子
3 佐藤 次郎 佐藤 息子

Linuxコマンドのワンライナー集

全文検索

で、指定したパス以下の全文検索が実行され、結果には対象のファイルと行番号が表示される。

使用例:hogeディレクトリ以下の、内容に「fuga」という文字列を含んだファイルを検索

 

指定のディレクトリ以下を再帰的にパーミッション変更

使用例:hogeディレクトリ以下の、すべてのディレクトリのパーミッションを755に変更

 

指定のディレクトリ以下の特定の名前のファイルを再帰的に削除

使用例:hogeディレクトリ以下の、desktop.iniファイルを全て削除

使用例:hogeディレクトリ以下の、拡張子が「.ini」のファイルを全て削除

 

OpenSSLでPKCS12ファイルの解凍

主にSSLサーバ証明書の設置や更新のための1手段。

まず、対象のPKCS12ファイルを、WinSCPなどのFTPクライアントやSSHクライアントを使い、サーバのユーザホームディレクトリ等に転送。

ここでは、
転送したPKCS12ファイルの場所を、
/home/userdir/PKCS12.pfx
サーバ証明書と中間証明書の展開先を、
/etc/httpd/conf/ssl.crt/
秘密鍵の展開先を、
/etc/httpd/conf/ssl.key/
とする。

展開時にファイルは上書きされるので、過去のものがあれば念のため各ファイルのバックアップ取得
# cp /etc/httpd/conf/ssl.crt/clcert.crt /etc/httpd/conf/ssl.crt/clcert.crt.bak
# cp /etc/httpd/conf/ssl.crt/cacert.cer /etc/httpd/conf/ssl.crt/cacert.cer.bak
# cp /etc/httpd/conf/ssl.key/privatekey.key /etc/httpd/conf/ssl.key/privatekey.key.bak

#サーバ証明書解凍
# openssl pkcs12 -in /home/userdir/PKCS12.pfx -clcerts -nokeys -out /etc/httpd/conf/ssl.crt/clcert.crt

#中間証明書解凍
# openssl pkcs12 -in /home/userdir/PKCS12.pfx -cacerts -nokeys -out /etc/httpd/conf/ssl.crt/cacert.cer

#秘密鍵解凍
# openssl pkcs12 -in /home/userdir/PKCS12.pfx -nocerts -nodes -out /etc/httpd/conf/ssl.key/privatekey.key

上記各々のコマンドで、解凍パスワードを求められるので入力すると、目的の場所にファイルが展開される。

後は、必要に応じて、ssl.conf内の各ファイルのパスを指定し、WEBサーバのリロードまたは再起動。

# リロードする前に文法チェック
# service httpd configtest

# リロード
# service httpd reload