@84kurePHPのマニュアルにも細かい説明は無いんだけど。ビルドに含まれる標準関数セットで定義されています。stdClassオブジェクトへの型変換で作られる。Manualhttp://php.net/manual/ja/reserved.classes.phpクラス定義無しに、いきなり代入することで任意のメンバー変数が定義できるらしい。C++/C#に馴染んだ自分にはかなり不思議に見える。stdClass::$val2スコープを限った一時的な作業用に限定して使うといいかもしれない。@84kurePHPファイルがパスワード保護されたディレクトリに配置されているサイトで、ユーザがBasic認証を通過し、そのディレクトリ内の任意のPHPファイルに最初にアクセスしたときにログを取りたいというニーズあり。考え方Basic認証のユーザ名は$_SERVER[‘PHP_AUTH_USER’]で得られる。「任意のPHPファイルに最初にアクセスしたとき」となると、認証入力直後にアクセスされたPHPファイルでだけログを取る必要があるけど、これはクッキーを使うことで実現できそう。Basic認証セッションはブラウザを終了することでクリアされるが、有効期限指定無しで作成したクッキーもブラウザの終了と共にクリアされるので都合がいい。サンプルコードクッキーを食っていなければ初回アクセス、既に食っていたら初回ではないと判断。@84kureワークフローをきちんと決めずに開発環境の複製を繰り返したおかげで、現在携わっている案件の開発環境が随分と煩雑になってしまったので、ここで改めてウェブ系案件の開発環境を整理しておきたい。必要な開発環境は4つそれぞれの環境でテストが終わった機能を下流へ反映させていく。開発環境(ローカル)個々の開発者が開発に用いるローカル環境。開発者がコミットした内容を反映して、開発者がテストを行う環境。ローカル依存の問題を見つけ出すためにローカルと別に用意する。ステージング環境システムを公開する前に、動作や表示などについて最終的な確認を行うための環境。運用担当や実際のユーザ(すなわち顧客)がテストを行う。本番環境に近い、可能であれば同一の条件を持った環境を用意することが望ましい。本番環境(プロダクション環境)実際にシステムを稼動させている環境。Qiitahttp://qiita.com/suin/items/004679b27d4a1f8bcb36わかりやすくまとまっている。@84kureある案件でデータコレクタの導入を提案した。データコレクタは携帯用バーコードリーダーのようなもの。読み込んだバーコードデータを内部ストレージに蓄積しておき、PCに接続されるとデータを一括転送する。バーコードを読み取ることしかできないが、ハンディ端末と比べたら格段に小さいし、その分値段も安い。最近ではWi-FiやBluetoothなどのワイヤレスでバーコードデータを飛ばせる製品もあるようだけど、この案件ではリアルタイム性は重視されないので、母艦へのデータ転送はオフラインで充分。アメリカで「信頼できて気が利いたコンパクトな製品」を探すのは難しい。アメリカの産業メーカー製品は総じて大味だからだ。言って日本から調達すると送料分だけ割高になるし、もし故障が起きて代替品を調達する必要があった場合の不安もある。探してみたら、米国で販売されている日本メーカーの製品があった。こちらの要件にマッチしたので、これを使うことにする。Amazonでも売られていたので、依頼元に頼んで調達してもらった。Portalhttps://wiki.opticonusa.com/techsupport/en/OPN-2001以下セットアップの覚え書き。Drivers」(zip)をダウンロードする。Installer.exe」が現れるので、それを実行する。OPN-2001をUSBケーブルでPCに接続すると、デバイスが認識される。Application」(zip)をダウンロードする。Setup.exe」が現れるので、それを実行する。ライセンス契約の文面が一部文字化けしているのはいただけない。time]でデバイスに設定されている現在時刻が表示される。time]でPCの時刻がデバイスに設定される。data]エリアに表示される。(パスワードファイル)htpasswdコマンドはApacheのディレクトリ下のbinサブディレクトリにある。(設定ファイル)パスワードファイルへのパスの記述をWindows流で。@84kure設定手順覚え書き。(パスワードファイル)htpasswdコマンドを使ってパスワードファイルを作成する。.htpasswdguest:$apr1$RKYjSjws$j1SIA20B8o9so.d1onRsh/$パスワードファイルはブラウザで閲覧できるディレクトリには置かないこと。(設定ファイル)パスワード保護したいディレクトリに.htaccessファイルを配置する。@84kureSmartyを採用したサイト開発での話。フロントエンド担当から「テンプレートを変更してもフロントエンドに反映されない。templates_cディレクトリのファイルを全部削除すると反映されるんだけど」との相談あり。テンプレートを変えたのにコンパイルされていないんだなと予想。テンプレートを強制的に再コンパイルさせるにはSmartyのマニュアルを探すと以下の変数が見つかる。$force_compileテンプレートが呼び出される毎に強制的にコンパイル(再コンパイル)を行います。オーバーライドします。デフォルトの設定では無効になっています。運用環境で使用してはいけません。有効の場合はキャッシュファイルは毎回再生成されます。Smartyhttp://www.smarty.net/docsv2/ja/variable.force.compile.tpl「開発やデバッグの際に便利ですが」の言っている意味がわからないけど、この変数をtrueにセットすることで強制再コンパイルが行われるようになるらしい。テストサイトで、そのように設定してフロントエンド担当に挙動を見てもらうことにしよう。@84kurehtml5/videoエレメントベースの動画プレーヤーがSafariだけうまく動かないとの相談あり。JavaScriptで書かれたオープンソースの動画プレーヤーで、動画再生機能はvideoエレメントに委ねて、ロード中インジケータの表示やコントロールパネルの表示と制御、プレイリスト機能の追加などをJavaScriptで行っているみたい。JavaScript側ではブラウザから投げられたイベントを受けて処理を行っているので、Safariだけ挙動がおかしいということは他ブラウザとイベントの内容が違うのではないかと予想。html/videoのイベントをトレースするネットを検索したら参考ページが見つかったので以下にリンク。videoエレメントのメディアイベントの仕様はW3Cで見つかる。HTML5http://www.w3.org/TR/html5/embedded-content-0.html#mediaevents前者ページのJavaScriptコードをほぼそのまま頂いて、自分の環境でも試してみようと思う。