明滅するプログラマの思索

WEBエンジニアとして勤務している一介の男が、日々気づいたことをまとめるブログです

MySQL 8.0 GA を CentOS7 にインストールする

2018年4月19日に MySQL 8.0 GA(Generally Available) がリリースされました。 MySQL 5.7 に比べ最大で2倍の速度と謳っていますが、興味を惹かれるのはやはり GIS(地理情報システム)。 これを遊ぶために、CentOS7 にインストールしてみることにします。

Let's Encrypt の証明書インストールがすごく簡単になっていた

久しぶりに Let's Encrypt の証明書インストールをやったら、手順が非常に簡便になっていました。 certbot-autoというシェルスクリプトが基本的に全部やってくれます。 以下、その流れについてまとめます。

jQuery で CSS の filter プロパティをアニメーションさせる

CSS の filter 機能は非常に多くの便利な効果を持っているので、スマートな WEBデザインを実現するのによく使われています。 例えば、ぼかしを入れたい場合は以下のように書くことができます。 .blur { filter: blur(20px); }

前回のバックグラウンド移行が特定の時間より前なら Scene 移動する

最近cocos2d-xをいじる機会が多いです。 アプリ開発は、国内ではUnity一択な風潮がありますが、2Dメインだとか、WebViewメインなアプリの場合、cocos2d-xで開発したほうが楽な場合も多いなと思います。 今回は、前回のバックグラウンド移行(アプリを起動し…

ウェブビューアプリの表示領域が iPhone X で崩れる問題

ウェブビューをベースにしたアプリの表示領域が、iPhone X だと崩れてしまう場合があります。 早い話が、ウェブビューの表示領域内に余計なスクロールが生まれ、CSSなどで固定させても動かせてしまうような状態になります。 これは iPhone X で刷新された表…

jQuery の animate で背景色をアニメーションする

jQuery の animate メソッドは、CSSプロパティを指定することで徐々に変化するアニメーションを実現することができます。 ただ、color や background-color などの数値ではない値を持つプロパティの場合、アニメーションさせることができません。 jQuery は …

次の月曜日、前の日曜日を計算する方法

PHP

備忘録です。 PHPで次の月曜日や前の日曜日を計算する方法をまとめます。 次の月曜日 現在が日曜日なら翌日 現在が月曜日なら当日 現在が火曜日~土曜日なら翌週の月曜日 if (date('w') == 1) { // 今日が月曜日 $next_monday = date('Y/m/d'); } else { $ne…

swiper.js でスライド内に overflow を置いた場合スライド中前面に出てしまう問題

swiper.jsという Javascript ライブラリがあります。 Swiper - Most Modern Mobile Touch Slider WEBサイト中にスライドを埋め込めるライブラリは数多くありますが、swiper.js はオプションが非常に多く、柔軟な実装が可能なため、気に入って使っています。 …

PHPでゲームのフラグを管理する1つの手法

PHP

ゲーム開発をすると、様々なフラグを管理しなくてはいけない場面が出てきます。 特定のイベントをクリアしているかどうか、イベントアイテムを持っているかどうか、特定の操作を行っているか…、さまざまな条件を用意し、スイッチを切り替えることでダイナミ…

Console CommandLine を使って汎用的なコマンドを作る

PHP の PEAR にはConsole_CommandLineというライブラリが公開されています。 Console_CommandLineはPHPでコマンドライン型のアプリケーションを作成するためのライブラリで、引数やオプションを手軽に利用したり、出力時の強調機能、ヘルプ出力機能などを含…

IP制限をかけた VirtualHost に Let's Encrypt の SSL証明書を設定する

Let's Encrypt の SSL証明書を使用するには、サーバ側の DocumentRoot に Let's Encrypt のサーバからのリクエストを許可する必要があります。 Let's Encrypt が証明書を発行する処理の中で、DocumentRoot 直下に.well-knownというディレクトリが作られ、リ…

コマンドラインでPHPを実行した際の error_log() の挙動

PHPにはerror_log()という関数があります。 error_log() は、エラー時のメッセージを明示的に出力するための関数です。 error_log("エラーが発生しました"); 上記のように使用します。 error_log() コール時、WEBサーバ経由でPHPを実行していれば、WEBサーバ…

logwatch のファイル出力が実行されない場合の対処

CentOS7 で logwatch を使用し、結果をファイルに出力する場合、手動では以下のコマンドを実行することになります。 logwatch --output file --filename <file name> CentOS6 までは以下の書き方でした。 logwatch --save <file name> 正直、CentOS6 までのコマンドのほうが簡潔で</file></file>…

自作ライブラリをSubversionでバージョン管理し、composer でインストールする

自作のライブラリを composer 経由でインストールできるようにしたい。 ただし社内だけに公開したい。 そういった場合に、VCS(バージョン管理システム)にコミットしたものを composer 経由でインストール(チェックアウト)できます。 今回は、社内で VCS とし…

composer を使おう

composer とは、PHPのライブラリを依存パッケージごと管理するツールです。 これまでにも PHP のライブラリツールとしては PEAR がありましたが、現在では composer でインストール可能なものはこちらで管理する流れが出来上がっています。 今回は今更ですが…

ストリーミング動画のプレイリストを非同期に切り替える

3つ目の HLS(HTTP Live Streaming)ネタです。 HLSプレイリストをPCで再生する場合、video.js ライブラリを利用すると楽です。 <html> <head> <link href="https://vjs.zencdn.net/6.2.7/video-js.css" rel="stylesheet"> <script type="text/javascript" src="./js/jquery-2.1.1.min.js"></script> </head> <body> <div class="movie_content_cap"> </div></body></html>

PHP で Yahoo!ID連携v2 の認証を行う

Yahoo!ID連携は現在 v2 と呼ばれるバージョンで OpenId 認証が可能です。 それまで使用されていた v1 は2017年3月以降、新規の登録が不可能となりました。 Yahoo!ID連携v1 は、PHPのSDKが用意されており、実装が楽になっていますが、v2 では Javascript SDK …

PHPのMediaInfoパッケージを利用してHLS用に動画分割する

HTTP Live Streaming を実装する際、もともとの動画ファイルを分割し、プレイリストファイル(m3u8)を作成する必要があります。 HLS(HTTP Live Streaming) を構築する - 明滅するプログラマの思索 で分割する流れをまとめてありますが、今回はこれをPHPで自動…

Google Cloud Platform の負荷分散に Let's Encrypt のSSL証明書を設定する

Google Cloud Platform(以下 GCP)で利用可能なロードバランサでフロントをSSLにするために Let's Encrypt を利用することができます。 この件については、以下の参照先が大変参考になります。 qiita.com ここでは、参照先の内容を踏まえて気を付けるべき点と…

Apache ユーザに別のユーザとして処理を実行させる

Apacheで立てた Web サーバにリクエストを送り、それをトリガとしてサーバ上で操作を行う場合、その実行ユーザはデフォルトでは apache ユーザとなります。 これだと、そのファイルのユーザ・権限によっては、アクセス権がなく実行に失敗してしまうことが考…

Postfix を利用して外部の qmail サーバからメールを送信する

Google Compute Engine は、Google の制約によりメール送信が行えません。 すなわち、SMTP(25番ポート)・SMTPS(465番ポート)・Submission(587番ポート)が閉じられています。 メールを送信する場合、サードパーティのメール送信ツール SendGrid を利用するよ…

Nginx のリバースプロキシを利用し PHP 処理を Apache で行う

Nginx のシェアが堅調に伸びているようです。 Apache と違い、静的なコンテンツを大量にさばくのに適した Web サーバですが、サーバサイドスクリプトを実行する場合はちょっとしたテクニックが必要となります。 PHP の場合、php-fpm を起動し UNIXドメインソ…

jQuery で画面を暗転させる

画面の遷移やなんらかの効果を実装する際、いったん画面を暗転させて処理を施したいとします。 その場合、jQuery では以下のようなコードで実現できます。

ps ax|grep コマンドで自分自身を除く

ps コマンドと grep コマンドを使って、実行中のプロセスを確認するとき、結果にその実行コマンドも含まれてしまいます。 たとえば、httpd プロセスを確認するとき、以下のように書きますが、 $ ps ax|grep httpd 1468 ? Sl 1:11 /usr/sbin/httpd 1469 ? Sl …

HLS(HTTP Live Streaming) を構築する

HLS とは Apple が開発した動画ストリーミングのためのロジックです。 主にSmartphone向け、iPhone / Android3.0 以上で動作します。PCではデフォルトでは再生できませんが、Javascriptベースの再生可能なプレイヤーは開発されています。 特別なサーバを必要…

ディレクトリ内のファイルを一覧表示する

PHP

PHPを利用して、サーバ上の特定ディレクトリ内のファイルを一覧表示するスクリプトを書いてみます。 実装条件 ソフトウェア バージョン PHP 5.6.30

jQuery における context の役割

jQuery には context という名のプロパティ、オプションがあります。 今回はこれの役割についてまとめてみます。 context とは 日本語にすると「文脈」とか「前後関係」なんて訳されます。 jQuery の中では、「関連付け」というような意味の役割を持っていま…

クラス内 static プロパティについてまとめ

PHP のクラスが持つプロパティ(メンバ変数)には、static 修飾子を付けることができます。

画像をHTMLに直接埋め込む方法

HTMLで画像を表示する場合、<img />タグを使用します。 このとき、画像のバイナリデータが取得できるなら、以下のように書くことができます。 EOF;

PHPで require_once / require を使わずにクラスをロードする

PHP でファイルを読み込む際 require_once や require を使うことになりますが、読み込むファイルが膨大になると大量の require_once / require を記述しなくてはいけなくなります。 spl_autoload_register() を使うと、読み込まれていないクラスをコールし…