MySQL COUNT, SUM, GROUP BY, CASE WHEN THEN で集計する
概要
ECサイトに新しい決済機能の利用率出したいな
と思ったときのクエリです。
ちょうどいくつかの集計関数がまとまった1クエリとなったので
まとめました。
1 | SELECT |
- パッケージ = EC-CUBE 2.11.5
- 新決済ID = 12
結果

CASE文をさらっと書けるようになると少し大人になった気分になります。
心残りは比率部分の重複部分がまとまったらかっこいいかなと。
精進します。
ECサイトに新しい決済機能の利用率出したいな
と思ったときのクエリです。
ちょうどいくつかの集計関数がまとまった1クエリとなったので
まとめました。
1 | SELECT |
CASE文をさらっと書けるようになると少し大人になった気分になります。
心残りは比率部分の重複部分がまとまったらかっこいいかなと。
精進します。
Zabbix アラート を LINE Notify を利用して
LINE にメッセージを送るように設定しました。
[https://notify-bot.line.me/ja/]
この情報が審査されるということは特になかったですが
ある程度精度の高い情報を入力して登録しときました
1 | [Zabbix-Server]$ cd /usr/lib/zabbix/alertscripts # AlertScriptsPath |
テスト環境などで
Nginx の process が 1 つ以上になったらアラート出すように設定してみた結果
トークルームに参加するにも
LINE アカウントはプライベートアカウントなので
ちょっと知られたくないわ〜という時は
何とも言えない気持ちになる方もいることがわかりました。
ご利用は計画的に。
個人的に
Twilio みたいに LINE Notify で電話通知出来たら嬉しいです。
まずは障害がない世界を ♪
以上です。
みんなのGo言語を購入しまして
ghq でGit管理してみよう!
と心動いた方は多いはず
昔から peco で Git Repository 移動コマンドはしてたけど、
ghq を利用したリポジトリ管理は便利ですね。
そんな折、
ghq コマンドで git repository をクローンしようとした際に
掲題のエラーが発生しましたので備忘録。
1 | $ ghq get <git repository> |
利用している git が SSL 対応していないようです。
1 | $ brew reinstall git --with-brewed-curl --with-brewed-openssl |
1 | $ ghq get <git repository> |
無事できた♪
Curl: (56) SSLRead() return error -9806 - Need Help please slight_smile
新卒向けの説明として簡単な備忘録です。
-Item- | -Explain- |
---|---|
%user | ユーザー空間での CPU 使用率 |
%system | カーネル空間での CPU 使用率 |
%iowait | I/O 待ち時間の割合 |
%idle | I/O 待ち以外で CPU が何もしていない時間の割合 |
スワップが大量に発生している可能性がある。
1 | $ sar -W |
1 | $ free |
1 | $ top |
定期的に同時刻に発生した為crontab -l
でクーロン設定確認したら
誰も知らないバッチが動いていた汗
CPU 使用率が高い。
1 | $ top |
ほんの一部分ですが参考になれば何よりです。
以上です。
顔検知と顔認識は本質が異なる。
今回は後者の顔認識をする仕組みをまとめました。
以下5つのSTEPを順を追って実施しています。
機械学習では TensorFlow を利用してます。
① 以下 TensorFlow の Hello World 的な例題とコピペすればすぐ動作するコードが記載されてます。
② すぎゃーんさんの記事は非常に参考になりました。
やっていることもシンプルでわかりやすく、且つ、Webエンジニアの発想でサービス化してる所が興味持って望めました。
元々やりたかったことは
Raspberry PI で顔認識して家族だと判定したら「おはよう」と挨拶させる、
なのでその顔認識部分の基礎を今回は学びました。
今後は実際にRaspberry PI とどう今回の仕組みを連結させるかを
やってみようと思います。
とはいえ家族の写真はそう簡単には集まらないので
SMAPで基礎作りをもうちょい頑張ってみよう!
Linux サーバで DB で集計して CSV ファイルをレポートする
なんてことがあるかと思います。
CSV ファイルを Linux サーバで作成し
Windows, Mac にメール添付して送信すると
どちらも CSV ファイルを開くと文字化けしてしまう問題に遭遇しました。
この問題を解決すべく調査しました。
CSV ファイルは Windows, Mac では基本 Excel が起動し開きますが
デフォルト Shift_Jis として開こうとします。
テキストファイルに一旦開いてコピーしてエクセルに貼り付ける対策を紹介しているブログもありましたが
クライアント様がお相手となる場合やファイルサイズが非常に大きい場合は
一手間かける方法は NG です。
1 | $ echo '大崎,yoshi,浜田,moto,松本' > sjis.csv |
1 | $ nkf -g sjis.csv |
あれ? Shift_JIS にエンコードして送ったんだけど UTF-8 になってる
1 | $ echo '大崎,yoshi,浜田,moto,松本' > jis.csv |
1 | $ nkf -g jis.csv |
ISO-2022-JP で文字コードが変更されず送信されたけど…
やっぱり文字化け…
1 | $ echo '大崎,yoshi,浜田,moto,松本' > utf8.csv |
1 | $ nkf -g utf8.csv |
当然文字化け…
1 | $ echo '大崎,yoshi,浜田,moto,松本' > utf8-bom.csv |
1 | $ nkf -g utf8-bom.csv |
JIS と同様の結果…
1 | $ echo '大崎,yoshi,浜田,moto,松本' > euc.csv |
1 | $ nkf -g euc.csv |
ファイルエンコードではうまくいきませんでした。
もっと具体的にいうと 圧縮ファイルを送ってみる
Shift_JIS で CSV が開かれるので Shift_JIS にエンコードします。
1 | $ echo '大崎,yoshi,浜田,moto,松本' > sjis.csv |
1 | $ nkf -g sjis.zip |
Shift_JIS のままダウンロードできてる!
これは期待できそう!
うまくいった!
Email アドレスのフォーマットチェックとして PHP には検証フィルタが用意されています。
こんな使い方しますね。
1 | if (filter_var($email, FILTER_VALIDATE_EMAIL)) { |
以下 php.net ではこのように記述されている。
http://php.net/manual/ja/filter.filters.validate.php
値が妥当な e-mail アドレスであるかどうかを検証します。
この検証は、e-mail アドレスが RFC 822 に沿った形式であるかどうかを確かめます。 ただし、コメントおよび空白の折り返し (whitespace folding) には対応していません。
1 | [OK (^-^) EMAIL LIST] |
NGとしたいような Emailアドレス を通してしまいます。
&abc@xyz.ab
PHP 検証フィルタ FILTER_VALIDATE_EMAIL によるバリデーションは
社内システムで利用するアカウントでのEmailアドレス検証程度であれば利用可能か。
商用サービスとして検証フィルタのみでバリデーションするのは危険かなと思いました。
1 | function checkEmailwithDNS($email, $check_dns = false) { |
ほぼ弾いてくれます〜
1 | [OK (^-^) EMAIL LIST] |
そろそろメールアドレスを正規表現だけでチェックするのは終わりにしませんか?
以上です。
1 | SSL証明書の有効期限切れでサイトにアクセスができなくなってしまった。 |
なんてことが発生しない様にする為に実装しました。
※実際には Jenins で実行しており
ビルドパラメータでドメイン追加を簡単にしています。
Qiita に記事がありました。
1 週間を切ったら電話通知も設定できますし
対策は何にせよしておくと気持ちが落ち着きます。
以上です。
fluentd でエラーログを Slack へ通知 の続きです。
MySQL DB サーバ の SlowQuery 状況を
リアルタイムに Slack で確認できるようにする為に導入しました。
今回必要モジュールをインストールします。
1 | # td-agent-gem install fluent-plugin-nata2 |
fluent-plugin-nata2
fluent-plugin-mysql_explain
fluent-plugin-sql_fingerprint
fluent-plugin-sql_fingerprint で利用する fingersprint をインストールします。
1 | # rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm |
以下ファイル設定するとします。
1 | <source> |
※slowquery のパス、DB のアクセスアカウントなどは各環境により変更してください。
1 | # service td-agent restart |
SlowQuery を発行し、Slack に通知されるか確認します。
1 | mysql > SELECT count(*), sleep(3) FROM <table>; |
Slack に通知されました!
show more をクリックすると Explain が通知されているのがわかる。
リアルタイム通知は
特に新規開発時に効果的でした。
また
ElasticSearch へ蓄積し時間軸で分析するのは
サイトのイベントとの相関性が見え面白いです。
その環境と状況により発生するスロークエリが見えてきます。
以上です。
みんなが幸せになれるhiraku さんの究極の 1 ライナーです。
1 | $ composer config -g repositories.packagist composer http://packagist.jp |
composer による インストールが劇的に早くなります。
遅い理由は 特に packagist.org が フランスにある からとのこと
早速上記 1 ライナーを実行!!
すると…
1 | You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebug |
xdeug が enabled になっているぞと怒られている。。
1 | $ php -i | grep xdebug |
/etc/php.d/xdebug.ini で 設定していた。
※環境によっては php.ini で設定している等あるので注意
自分の PHP 実行環境では xdebug を利用する必要性がなかった為、
/etc/php.d/xdebug.ini 退避
1 | mv /etc/php.d/xdebug.ini /etc/php.d/xdebug.ini.org |
あれ… また出てきた… 今度は、
1 | Do not run Composer as root/super user! See https://getcomposer.org/root for details |
root ユーザで実行するなと怒られている。。
1 | # su - <user> |
成功した!
1 | $ composer config -g repos.packagist composer https://packagist.jp |
packagist url が https://packagist.jp
になっていることを確認
1 | $ cat .composer/config.json |
良き PHP ライフを!