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

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

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 は今年の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() を使うと、読み込まれていないクラスをコールし…

確率による重みづけをしてn個のものを取り出す

X種類のフルーツ中からランダムにn種類取り出す場合、PHPなら mt_rand() などの関数を使えばすぐに実装可能です。 実装条件 ソフトウェア バージョン PHP 5.6.30

親ウィンドウのhtml要素・関数を操作する

Javascript の window.open() 関数を利用して開いた子ウィンドウ上で、親ウィンドウ上の html要素を操作する方法です。 Javascript での記述 Javascript では次のように記述すれば可能です。 <script> // 親ウィンドウの id=hoge 要素の value 属性を変更する obj = </script>…

data属性で JSON データを管理する

Javascript では JSON データを簡単に扱うことができます。 今回の記事では、ページ内の一時的な情報を JSON オブジェクトとしてキャッシュし、それを HTML5 の data 属性で管理してみます。 実装条件 ソフトウェア バージョン jQuery 2.2.4 Browser Chrome

qmail で特定のメール送信に失敗する問題

古いネタです。 メールサーバとして qmail を利用している環境において、特定のメール送信に失敗することがあります。 そのとき、クライアント側に帰ってくるエラーに451 See http://pobox.com/~djb/docs/smtplf.html.が含まれている場合、Bare LFs 問題と呼…

PHP でウィザード形式のページ遷移を実現する trait

Wizard とは ウィザードとは、対話形式で遷移を踏みつつ処理を進めさせるためのユーザインターフェイスのことです。 ウェブでは、複数ページにまたがるフォームなどで実装されています。 ウィザードを実装するためには、遷移途中の入力データや今どのページ…

背景色に対する文字色を明度の差で動的に決定する

背景色を動的に変更したい、そのうえで、文字も見えづらくならないように動的に変更したい、という場合があるとします。 たとえば、とある表があって、各セルの背景色を任意に指定できる場合、文字色も併せて変更しないと、文字がつぶれて見えなくなってしま…

PC と Smartphone で共有のクリック時イベントを実装する

jQuery を使って、ある要素をクリックしたときのイベントを実装する場合、PC と Smartphone で同じ挙動を実装しようとすると、ちょっとした問題にぶつかります。 それは、イベントハンドラを何にすればよいか?という問題です。 PC 向けであれば click イベ…