投稿

5月, 2019の投稿を表示しています

PHPStormでESLintを使って文法チェック

イメージ
PHPStormを使うようになってからは、PHPStormの機能だけでJavaScriptの文法チェックをしていたけど、ちゃんとlintツールを使うように設定したときの覚書。 環境: Windows 10, PHPStorm 2019.1.2 lintはバグの原因になるような曖昧な記述を警告してくれるプログラム(の総称)。 lint - Wikipedia JavaScriptのLintツールは今なら「ESLint」を使っておけば間違いない。 まずは公式のスタートガイドを読む。 ESLint - Pluggable JavaScript linter Getting Started with ESLint - ESLint - Pluggable JavaScript linter npmでインストールする。 # npm install --save-dev eslint 設定ファイルを作る # vi .eslintrc.json {   "extends": ["eslint:recommended"],   "env": {     "browser": true,     "jquery": true   },   "rules": {     "strict": ["error", "function"],     "no-console": "error"   } } PHPStormの設定 公式サイトのヘルプを参考に。 ESLint - Help | WebStorm ESLintを「Manual ESLint configuration」にする。 .eslintrc.jsonをPHPStormで編集した後は右クリックで「Apply ESLint Code Style Rules」で読み込む。 単独のjsファイルは問題ないのだけれど、PHPファイル内のscriptタグにはESLintでチェックされない? JavaScriptのコーデ

Postfixのメール送信が遅れる。IPv4の接続を優先する設定

メールログを見ていて下記エラーが目に留まった時の覚書。 環境: CentOS 7.6, Postfix 2.10.1 postfix/smtp[13310]: connect to gmail-smtp-in.l.google.com[2404:6800:4008:c01::1a]:25: Connection timed out postfix/smtp[13310]: Trusted TLS connection established to gmail-smtp-in.l.google.com[108.177.125.26]:25: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits) 最初のログはIPv6で接続しようとしていてタイムアウトしている。 タイムアウトを待つ分だけメール送信に時間が掛かっていた。 IPv6を無効にするのも何となく不安なので、IPv4から先に試すように設定。 「smtp_address_preference」を使う。Postfix 2.8から使える設定。 Postfix Configuration Parameters Postfixのバージョンを確認 # yum info postfix postconfを使う方法もある # postconf -d | grep version 設定ファイルを編集 # less /etc/postfix/main.cf # Enable IPv4, and IPv6 if supported inet_protocols = all # Try IPv4 first smtp_address_preference = ipv4 testしてサービス再起動 # postfix check # systemctl restart postfix ログを監視しながら動作確認 # tail -f /var/log/maillog # mail hoge@gmail.com 【関連記事】 CentOS7で/var/log/maillogを作るrsyslogのインストールと設定 CentOS7 + Nginx + PHP7 + MariaDB + Node

CentOS7で/var/log/maillogを作るrsyslogのインストールと設定

KagoyaのVPSの最小構成で作成したCentOS7がmaillogを作ってくれず、しばらく放置していたけど、rsyslogをインストール/設定したときの覚書。 環境: CentOS 7.6, rsyslog 8.24.0 rsyslogのインストール # yum install rsyslog 設定の確認 # less /etc/rsyslog.conf # less /etc/rsyslog.d/listen.conf 初期設定でjournalを監視してくれている。 サービス起動と自動起動設定。 # systemctl start rsyslog # systemctl enable rsyslog 前に設定したjournaldの設定変更。 # less /etc/systemd/journald.conf #Storage=persistent サービス再起動 # systemctl restart systemd-journald rsyslogの稼働状況を確認 # systemctl status rsyslog rsyslogd[12874]: imjournal: begin to drop messages due to rate-limiting rsyslogd[12874]: imjournal: 198872 messages lost due to rate-limiting メッセージが捨てられているようなログ。 Ratelimit.Interval(デフォルトで600秒)の間にRatelimit.Burst(デフォルトで20000)のメッセージ数を超えていると出力されるらしい(参考: imjournal: Systemd Journal Input Module | rsyslog 80488ad docs )。 この設定を変更する。 # less /etc/rsyslog.conf # @see https://www.rsyslog.com/doc/v8-stable/configuration/modules/imjournal.html $imjournalRatelimitInterval 60 $imjournalRatelimitBurst 2

WordPressのwp_mailをSMTP経由にする

特定の機能から送ったメールだけSMTP経由で送信したかったので、調べた時の覚書。 環境: WordPress 5.2.0, PHP 7.2.18 全部のメールをSMTP経由にする場合はプラグインを使った方がいいかもしれない。 WP Mail SMTP by WPForms | WordPress プラグイン | WordPress.org 公式ページに「phpmailer_init」にフックするやり方がある。Gistも参考に。 wp_mail() | Function | WordPress Developer Resources Configure WordPress wp_mail function to send through SMTP server http://b.utler.co/Y3 | Gist ソースコードはwp-includes/pluggable.phpの484行目あたり。 PHPmailerの仕様はwp-includes/class-phpmailer.phpを見れば分かる。 【関連記事】 PostfixにSPFとDKIMと暗号化の設定まとめ Gmail(Google Apps)経由でメールを送信するPostfixのSMTP設定

IE9での表示確認。ホームページ制作で対応すべきIEのバージョンは?

今(2019年5月)だとどこまでのIEに対応してないといけないか調査したときの覚書。 期限の切れたブラウザは大幅にレイアウトが崩れなければOK。 Googleアナリティクスでシェアを確認 とあるサイトで確認した結果(Google Analyticsの実データ)。 IEのシェアは全体の1割程度 。 さらにその中の割合 IE11: 83.9%(全体の8.4%) IE9: 15.2%(全体の1.5%) IE10: 0.5%(全体の0.05%) IE8: 0.1%(全体の0.01%) IE7: 0.1%(全体の0.01%) 意外にIE9が多い。 たぶんWindows VistaがIE9までだからだと思う。 今後はIE9までにすることにした(今まではIE8まで)。 各IEのサポート期限は公式サイトを参考に。 Windows 10 に搭載される 2 つの Webブラウザ、Microsoft EdgeとInternet Explorer 11 - Windows Blog for Japan ちなみにTLSのバージョンも考慮する必要がある。 Template:ウェブブラウザにおけるTLS/SSLの対応状況の変化 - Wikipedia ホームページ制作ではあと数年Bootstrap v3にお世話になりそう。 IE9のVMをダウンロード Microsoft公式サイトから仮想マシンをダウンロードする。 Free Virtual Machines from IE8 to MS Edge - Microsoft Edge Development VMwareはimportに失敗したので、Hyper-Vをダウンロード。 起動すると(なぜか)IE8だったので、Windows7用IE9のインストーラーを 公式サイト からダウンロードしてインストール。 (公式サイトにIEでアクセスすると固まるのでFirefoxをインストールした) インストール完了後は「checkpoint」しておく。 デスクトップの壁紙風の値 IE Version: 9.0.8080.16413RC OS Version: Windows 7 Service Pack: Service Pack 1 IE9対応 IE9から

CentOSのMariaDBを10.1から10.3にアップグレード

MariaDBを10.1から10.3にアップグレードした時の覚書。 環境: CentOS7.6, MariaDB 10.1.40 10.1のサポートは2020年10月まで。 参考: Maintenance Policy - MariaDB.org 手順は公式サイトを参考に。 Upgrading from MariaDB 10.2 to MariaDB 10.3 - MariaDB Knowledge Base 1.バックアップ mariadbbackupというツールがあるのでインストールして使ってみる。 参考:  Full Backup and Restore with Mariabackup - MariaDB Knowledge Base # yum install MariaDB-backup 保存する場所を作ってバックアップ実行 # mkdir /home/backup # mariabackup --backup --target-dir=/home/backup/20190515 --user=root --password=mypassword 容量(サイズ)の確認 # du -hx --max-depth=1 /home/backup/20190515/ 念のためphpMyAdminからもエクスポートしておく。 2.アンインストール サービスを停止 # systemctl status mariadb # systemctl stop mariadb YUMでアンインストール # yum remove MariaDB-server 3.インストール YUMのリポジトリを修正(参考: MariaDB - Setting up MariaDB Repositories - MariaDB ) # less /etc/yum.repos.d/MariaDB.repo # MariaDB 10.1 CentOS repository list - created 2016-04-07 10:30 UTC # http://mariadb.org/mariadb/repositories/ #[mariadb] #name = MariaDB #baseurl

システムからSMS(ショートメール)を送るAPI調査

予約システムを設計しているときに、登録したスマホ(電話番号)にSMSを送れないかと調査したときの覚書。 有名どころではTwilioというサービスがいいらしい。 SMS, Short Message Service | Text Messaging for Mobile & Web Apps Twilio を介した SMS サービスと音声サービス | PHP の App Engine スタンダード環境 | Google Cloud 日本ではKDDIが代理店になっている。 Twilio for KDDI Web Communications  | コミュニケーションAPI Asterisk(PBX)で試した人の記事 Asteriskで普通の外線電話を作る - Qiita AWSのAmazon SNSを使う方法もある。 受信者が携帯電話番号の場合のユーザー通知に Amazon SNS を使用する (SMS 送信) - Amazon Simple Notification Service その他のアイデア Androidの SmsMnager , MessageClient を使った自作アプリと連携する仕組みを作る Line APIを使う方が日本ではいいかもしれない 【関連記事】 Google Voice, Asterisk, Androidで面白いことが出来そうな予感

Google Compute Engineの無料枠を使ってサーバーの死活監視

オフィス出るときに開発サーバーをShutdownするつもりが本番サーバーをShutdownしてしまったので、常にサーバーを監視してアラートを送る仕組みを作ろうとしているときの覚書。 やりたいこと 別サーバーから本番サーバーを監視 無料 死活監視(Ping) Pingが通らなかったらメール通知 bash + cronがいい。複雑なことしない。 プラスアルファでウェブサイトの表示確認ができたら嬉しい。 本番サーバーは別でリソースモニターがあるのでそちらで十分 調べてみるとサーバー監視ソフトのZABBIXが良さそう Zabbixオフィシャル日本語サイト :: エンタープライズクラスの分散監視オープンソースソリューション 試してみたくはなるけど、ここまでの機能は必要ない。 Pingを並列処理できるfpingを使えば良さそう。 fping Homepage でも結局使わなかった。 参考にしたシェルスクリプト UNIX / Linux Shell Script For Monitoring System network with ping command | nixCraft A simple bash script to watch packets loss using ping on Unix/Linux | Gist Write the bash shell script to test the ping against multiple server and send the report to email for unresponsive servers - Stack Overflow 監視サーバーはGoogle Cloud PlatformのVMインスタンスの無料枠を使うことにした。 インストールと設定は長くなったので別記事にまとめた。 Google Cloud PlatformのGCEでCentOS7のVMインスタンスをインストールしてメール送信設定 作成したシェルスクリプトはGitLabに保存。 Gistにあったのからほとんど変えてない。 GCEのVMインスタンスでgit cloneする。 5分毎にcrondで定期実行する。 rootになってから。 $ sudo su

Google Cloud PlatformのGCEでCentOS7のVMインスタンスをインストールしてメール送信設定

本番サーバーに対してPing死活監視するサーバーを準備しているときの覚書。 GCE(Google Compute Engine)の無料枠を使う。 参考サイト よくある質問 | Google Cloud Platform の無料枠 | Google Cloud これから始めるGCP(GCE) 安全に無料枠を使い倒せ - Qiita 無料枠にするための注意点 マシンタイプを「f1-micro」を選ぶ リージョンを「us-west1」を選ぶ(us-east1, us-central1も無料枠の対象) 条件が変わる可能性が大いにあるので、公式ドキュメントをよく読む このVMには頻繁にログインしないので「ブラウザからのSSH」で十分。 どうしてもTeratermでログインしたい場合は結構面倒くさい作業が必要。 高度な方法を使用してインスタンスに接続する | Compute Engine ドキュメント | Google Cloud 稼働中のサービス確認 $ systemctl list-units --type=service 登録されている全サービス確認 $ systemctl list-unit-files --type=service サブドメインをCloud DNSで管理する設定 Cloud DNSを使うと良さそうな気がしたのでやってみた。 Cloud DNSでゾーンを作成した後にName Serverが表示されるので、レジストラのDNSを変更する。 value-domainの場合の例。 ns gcp ns-cloud-a1.googledomains.com. ns gcp ns-cloud-a2.googledomains.com. ns gcp ns-cloud-a3.googledomains.com. ns gcp ns-cloud-a4.googledomains.com. エフェメラル(ephemeral)な外部IPをCloud DNSで動的に変更したい エフェメラルだとVMが再起動したときに変わってしまう(参考: IP アドレス | Compute Engine ドキュメント | Google Cloud )。 Cloud DNSを使うと簡単に設定できるかと思っ