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

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

HLS(HTTP Live Streaming) を構築する

HLS とは

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

導入環境

ソフトウェア バージョン
CentOS 6.8
Apache 2.2.15
続きを読む

jQuery における context の役割

jQuery には context という名のプロパティ、オプションがあります。
今回はこれの役割についてまとめてみます。

context とは

日本語にすると「文脈」とか「前後関係」なんて訳されます。
jQuery の中では、「関連付け」というような意味の役割を持っています。

続きを読む

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

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

<?php
class A
{
    public static $HOGE = 'hoge';
}

static 修飾子をつけたプロパティとそうでないプロパティは、何が違うのでしょうか。

実装条件

ソフトウェア バージョン
PHP 5.6.30
続きを読む

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

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

<?php
$mime_type = 'image/jpeg';
$image_data = base64_encode(file_get_contents("request-t.jpg"));
$img_tag = <<< EOF
<img src="data:$mime_type;base64,$image_data" />
EOF;
続きを読む

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

PHP でファイルを読み込む際 require_once や require を使うことになりますが、読み込むファイルが膨大になると大量の require_once / require を記述しなくてはいけなくなります。
spl_autoload_register() を使うと、読み込まれていないクラスをコールした際にこちらに登録されているメソッドが呼ばれるので、救済的なロジックを記述することができます。
さらに名前空間を最適に運用することで、少ない労力でクラスファイルのオートロードが実現できます。

名前空間について

PHP名前空間はバージョン5.3で追加されました。
クラスファイルに名前空間を設定することで、別の名前空間に同じクラス名のファイルを作成することができるようになります。

続きを読む

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

X種類のフルーツ中からランダムにn種類取り出す場合、PHPなら mt_rand() などの関数を使えばすぐに実装可能です。

実装条件

ソフトウェア バージョン
PHP 5.6.30
<?php
$X = [
  'orange',
  'apple',
  'banana',
  'melon',
  'pear',
  'pineapple'
];

$n = 3; // 3種類取り出す場合
$result = [];
for ($i = 0; $i < $n; $i++) {
  $key = mt_rand(0, count($X) - 1);
  $result[] = $X[$key];
  array_splice($X, $key, 1);
}
print_r($result);
続きを読む