技術メモ

【Apache】htpasswdでBasic認証を掛ける。

メモ。

  • まずはBasic認証を掛けたいディレクトリに.htaccessファイルを下記内容で作成。

AuthUserFile.htpasswdファイルまでのパスをサーバールートから絶対パスで指定しないといけないので注意。
AuthNameは自由に。

  • 次に.htpasswdファイルを作成。

書き方はusername:passwordの書式で記述する。この際passwordはBase64で符号化されたものでないとだめなので下記サイトのようなサービスを用いて符号化されたパスワードを取得する。

http://tech-unlimited.com/makehtpasswd.html

符号化されたパスワードを取得できたら、下記のように.htpasswdを作成する。

これでブラウザからアクセスした際に認証が求められるようになる。

【CentOS7】Muninインストール手順まとめ。

muninとmunin-nodeを入れる

完了すると/var/www/html以下にmuninフォルダが生成されるので、ここをブラウザから見れるようにセットアップする。 ※バーチャルホストなりなんなりでのぞけるようにしてもいいし、フォルダを辿っていってもOK。

監視間隔を変更する

/etc/munin/munin.confに追記。

/etc/cron.d/muninを編集

munin-nodeを再起動する。

これで更新間隔が5分から1分に変更される。

【PHP】privateなメソッドを外部から実行する。

PHP5.4から実装されたClosure::bind()を用いる。

たとえば下記のようなコード。

当然Fatal error: Call to private method hello::world() from contextと怒られる。

しかしClosure::bind()を次のように用いると。

なんと画面にhello Worldが表示される。

第1引数に渡した関数内の処理は、第3引数に渡した名前のクラス内で実行されているものとして扱われるため、正常に関数を呼び出すことができている。 そう、Closure::bind()無名関数に限り実行時コンテキストを動的に変更できるというチート機能を有しているのである。

これを応用すると、PHPUnitでのテストケースにおいてもprivateな関数をテストすることができるようになるため、非常に強力な機能の一つであると言える。

【MySQL】大量にランダムなデータを作成する際の方法いろいろ。

知っとくと便利なので自分用にメモ。

1 or 2 などの2値をランダムに設定する

※この例だと1 or 2がセットされる。whenthenを増やしていけば複数の値に対応可能。

datetime型をランダムに設定

  • 現在時刻から1年後までの日付をランダムに生成
  • 指定日時から1年間の日付をランダムに生成

※2010-06-06をスタートとした場合

ランダムな文字列を生成する

  • 32文字のランダムな文字列を生成
  • 100文字のランダムな文字列を生成
  • 500文字!

※これ以上はconcat()をマンパワーで足していくくらいしか思い浮かばない。単に長さがほしいだけならrepeat()とかでもいいかも。

100万件のレコードを生成する

※20行繰り返すところがポイント。

【PHP】Xdebugのvar_dump()を通常のものに戻す。

Xdebugがインストールされている環境でvar_dump()を使用すると、なんだか無駄にごちゃごちゃしてて挙句の果てにはmore elementsとかいう世紀末な状態になっていたので戻す方法をメモ。

php.iniに下記を追記。

これでサーバーを再起動すればOK。

発狂せずに済んだね。

【htaccess】さくらのレンタルサーバーに設置したhtaccessでOptionsが使えない問題。

さくらインターネットのレンタルサーバーで、ディレクトリ一覧表示を禁止しようとした際に発覚。

通常ディレクトリの一覧表示を禁止しようとすると.htaccess

とするが、サクラのレンタルサーバーではOptionsが使えず、500エラーに成ってしまうので、下記のように対応する。

こうすることで同様の効果を得られる。

【jQuery】手っ取り早くScrollToTopを実装する。

ぺたり。

秒数は好みで。

【PHP】のコンパイル時にライブラリが足りないよと怒られたら。

だいたいは怒られているパッケージ名に-develがついたパッケージをyumでいれてやれば解決する。
指摘されているパッケージそのものをinstallとかreinstallとかしても一向に解決しないので注意。