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

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

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

swiper.jsという Javascript ライブラリがあります。

Swiper - Most Modern Mobile Touch Slider

WEBサイト中にスライドを埋め込めるライブラリは数多くありますが、swiper.js はオプションが非常に多く、柔軟な実装が可能なため、気に入って使っています。
これを使ってハマったことを今回まとめてみます。

続きを読む

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

ゲーム開発をすると、様々なフラグを管理しなくてはいけない場面が出てきます。
特定のイベントをクリアしているかどうか、イベントアイテムを持っているかどうか、特定の操作を行っているか…、さまざまな条件を用意し、スイッチを切り替えることでダイナミックな進行を表現できるようになるのです。
フラグの管理はどのようにするのが良いでしょうか。
RDBを利用して、正規化されたフラグを1つ1つ丁寧に格納するのも方法ではあるでしょう。
ただ、ゲームがアップデートを繰り返すような場合、当初に想定したフラグ数ではとても足りなくなる、そんな場合も考えられます。
その分だけDBのカラム数を増やしても良いですが、限界はあります。
今回は、1つの文字列を使ってフラグを管理する方法について、自分なりの解を以下にまとめてみました。

導入環境

ソフトウェア バージョン
PHP 5.6

※ PDO を利用しています。

続きを読む

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

PHPPEAR にはConsole_CommandLineというライブラリが公開されています。
Console_CommandLinePHPコマンドライン型のアプリケーションを作成するためのライブラリで、引数やオプションを手軽に利用したり、出力時の強調機能、ヘルプ出力機能などを含んでいます。
今回は、Console_CommandLineを利用して、引数により処理を切り替えられる汎用的なコマンドの実装を行ってみます。

目標としては、以下のような状況を考えます。

  • コマンド用スクリプトを用意し、1つ目の引数に実際に行いたい処理を指定します。
  • 実際の処理は、引数ごとに用意された別々のスクリプトが受け持ちます。
  • 2つ目以降の引数・オプションは、対応する処理スクリプトで任意に指定できるようにします。

コマンド用スクリプト php_command.php を用意します。
引数には実際に実行する処理を指定します。
以下のような感じです。

php php_command.php insert_table "Hello" -m test

ここで、実際に実行する処理 insert_table は別スクリプト command_insert_table.php が担当することにします。

導入環境

ソフトウェア バージョン
PHP 5.6

PEAR のライブラリ Console_CommandLine を利用します。

続きを読む

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

Let's Encrypt の SSL証明書を使用するには、サーバ側の DocumentRoot に Let's Encrypt のサーバからのリクエストを許可する必要があります。
Let's Encrypt が証明書を発行する処理の中で、DocumentRoot 直下に.well-knownというディレクトリが作られ、リモートでアクセスすることで対象ドメインが実行サーバに向いていることを確認するのです。

このときIP制限その他のアクセス制限をかけている場合、Let's Encrypt のサーバのアクセスも遮断してしまうため、証明書の発行(自動更新も)が失敗してしまいます。
今回は、この回避方法について記述します。
といっても、難しいことはありません。

続きを読む

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

PHPにはerror_log()という関数があります。
error_log() は、エラー時のメッセージを明示的に出力するための関数です。

error_log("エラーが発生しました");

上記のように使用します。
error_log() コール時、WEBサーバ経由でPHPを実行していれば、WEBサーバに設定したエラーログファイルに追記されます。
では、コマンドラインからPHPを実行した場合、error_log() はどこにエラーメッセージを出力するでしょうか。

続きを読む

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

CentOS7 で logwatch を使用し、結果をファイルに出力する場合、手動では以下のコマンドを実行することになります。

logwatch --output file --filename <file name>

CentOS6 までは以下の書き方でした。

logwatch --save <file name>

正直、CentOS6 までのコマンドのほうが簡潔で好きですが、
--output stdout(標準出力)に対応するため、仕方のない変更だったのでしょう。
なお、ファイル出力を crond で実行する場合、
/etc/logwatch/conf/logwatch.confの記述は以下となります。

続きを読む

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

自作のライブラリを composer 経由でインストールできるようにしたい。
ただし社内だけに公開したい。

そういった場合に、VCS(バージョン管理システム)にコミットしたものを composer 経由でインストール(チェックアウト)できます。
今回は、社内で VCS として Subversion を利用している場合の構築についてまとめます。

続きを読む