k-holyのPHPとか諸々メモ

Webで働くk-holyがPHP(スクリプト言語)とか諸々のことをメモしていきます。ソースコードはだいたいWindowsで動かしてます。

TECHSCORE BLOGに『PostgreSQLのUUID型とpgcryptoモジュールを使って会員パスワード認証を実装してみる』を掲載していただきました

TECHSCORE BLOG に記事を掲載していただきました。 PostgreSQLのUUID型とpgcryptoモジュールを使って会員パスワード認証を実装してみる 普段の業務では主にLAMPおじさんとしてPHP + MySQLで動く小規模なWebアプリケーションばかり開発している私ですが、TECH…

Windows7+VirtualBox+Vagrant再入門

Vagrantは2013年の記事 Windows7にVirtualBoxとVagrantをインストールしたメモ でインストールはしてみたものの、日々の開発作業に追われるまま長らく使っていませんでした。 実はこのブログでは一番人気の記事で、言及リンクしていただいた数も最も多いので…

画像アップロード(4)IEでもドラッグ&ドロップ対応、Ajax化しつつJavaScript無効の環境にも対応

前回の記事 画像アップロード(3)ドラッグ&ドロップ対応(IE除く) の続きです。 画像アップロード(1)Canvasでプレビューして普通に画像をアップロード 画像アップロード(2)クライアント側で簡易バリデーション、複数ファイル対応 画像アップロード(3)ドラッ…

画像アップロード(3)ドラッグ&ドロップ対応(IE除く)

前回の記事 画像アップロード(2)クライアント側で簡易バリデーション、複数ファイル対応 の続きです。 画像アップロード(1)Canvasでプレビューして普通に画像をアップロード 画像アップロード(2)クライアント側で簡易バリデーション、複数ファイル対応 画像…

画像アップロード(2)クライアント側で簡易バリデーション、複数ファイル対応

前回の記事 画像アップロード(1)Canvasでプレビューして普通に画像をアップロード の続きです。 画像アップロード(1)Canvasでプレビューして普通に画像をアップロード 画像アップロード(2)クライアント側で簡易バリデーション、複数ファイル対応 画像アップ…

画像アップロード(1)Canvasでプレビューして普通に画像をアップロード

AJAXとかドラッグ&ドロップといったややこしい処理はおいといて、HTML5のCanvasを使ってクライアント側でプレビューしてみるテストです。 画像アップロード(1)Canvasでプレビューして普通に画像をアップロード 画像アップロード(2)クライアント側で簡易バリ…

Windowsでgitコミット差分抽出+ZIPアーカイブを生成するバッチファイル

git diff コマンドと git archive コマンドを利用した差分抽出については知ってはいたんですが、しばらくFTPでのアップロードが必要なプロジェクトから逃れていたこともあり、あまり追求していませんでした。 今回再びそのような環境に携わることになりまし…

PHPUnit 4.1系で \Symfony\Component\HttpFoundation\File\UploadedFile のモックオブジェクトを作成しようとすると "Erroneous data format for unserializing" のエラーが発生した件

PHPUnit 4.1系で \Symfony\Component\HttpFoundation\File\UploadedFile のモックオブジェクトを作成しようとすると "Erroneous data format for unserializing" のエラーが発生します。 PHP 5.6.1 + PHPUnit 4.1.6 で確認しました。 エラーメッセージで検索…

グラフ描画ライブラリ Chart.js で凡例を表示する

JavaScriptのグラフ描画ライブラリ Chart.js サンプルが綺麗でシンプルなためかデザイナーの方に人気のようで、いろんなブログで紹介されてます。 しかしサンプルではラベルを設定しているにも関わらず凡例が表示されておらず、「凡例を表示する機能がない」…

Bowerを使ってみたメモ

まず node.js が必要らしい。 node.js 最新バージョンのインストーラ http://nodejs.org/dist/v0.10.33/node-v0.10.33-x86.msi を取得して、全部デフォルトのままインストール。パス環境変数への追加なども勝手にやってくれるみたい。 以下、シェルは NYAOS …

Windows環境のPHPで日本語ファイルパスを扱う場合の注意点

まず手元の Windows7 + PHP 5.6.0 で検証した上での結論を書くと 「Windows で日本語ファイルパスを扱う場合 SplFileInfo は使うな」 です。 ロケール設定を適切に行うことで basename() や pathinfo() に関しては、Shift_JISのコード表に起因するいわゆる「…

ローカル開発環境(Windows7)のPHPを5.5.16から5.6.0に更新した

ローカル開発環境(32bit Windows7)でのPHP 5.6への更新作業メモです。 アーカイブを展開してシンボリックリンクを切り替える 最新リリース版をダウンロード PHP 5.6.0 VC11 x86 Thread Safe (2014-Aug-27 21:52:22) 過去バージョンの動作環境もそのまま残…

手動でシンボリックリンク切替デプロイしてみたメモ

コマンドは許可されてるけど訳ありでFTP/SCPアップロードから逃れられない、でもComposerだって普通に使いたい、vendorディレクトリ以下を一括アップロードなんてしたくない…。 そこで、手動シンボリックリンク切り替えデプロイを断行してみました。 以下の…

Composerでプロジェクトグローバルにインストールした Stagehand_TestRunner + PHPUnit を ver.4 に更新(Windows7 + NYAOS編)

PHPUnit 4 に対応、PEARおよびPHPUnit3.6のサポートを終えた Stagehand_TestRunner V4 をローカル開発環境 (Windows7) に入れたメモです。特に新しいことはしていません。 内容的には Composerでプロジェクトグローバルに Stagehand_TestRunner + PHPUnit を…

PHPTALテンプレート変数のパス参照でPHPTAL_VariableNotFoundExceptionがスローされる件

PHPTALにおけるテンプレート変数のパス記述に関するメモです。多分他の人にはあまり役に立たないと思います。 PHPTAL_Context::path() におけるパス参照時の PHPTAL_VariableNotFoundException発生条件 ソースはここ PHPTAL/classes/PHPTAL/Context.php パス…

Entity Object + Value Object 実践中

現在、データベースのレコード単位で一意に識別されるデータを不変オブジェクトをベースにしたEntity Objectと、その属性となるValue Objectの設計を実践中ですが、やったこと&やっていることのメモです。 内容的には Traitで不変オブジェクトにしてキャッ…

SparkleShareをWindows7に入れてみたメモ

SparkleShare をWindows7に入れて使ってみたメモです。 SparkleShareが何なのかは、ちょっと古いですがこちらの記事が分かりやすかったです。 SparkleShareメモ - nofuture.tv SparkleShareは、バージョン管理システムGitを利用したリアルタイムファイル共有…

mysqliのコンストラクタで"No such file or directory"のエラー

mysqli::__construct() で以下のエラーが発生。 mysqli::mysqli(): (HY000/2002): No such file or directory 調べてみると、MySQLのソケットファイル(mysql.sock)が見当たらない場合にこのエラーが発生することがあるようです。 パッケージでインストールし…

Composerでプロジェクトグローバルに Stagehand_TestRunner + PHPUnit をインストール(Windows7 + NYAOS編)

今度はローカル開発環境の Windows7 + NYAOS で composer global install してみました。 以下、シェルは NYAOS を使っています。 Composerをインストール 当然すでにcomposerは導入済みなのですが、Linuxの場合と同じ手順を踏んでやってみます。 PHPのイン…

Composerでプロジェクトグローバルに Stagehand_TestRunner + PHPUnit をインストール

久々にお仕事でroot権限のあるLinuxサーバ (CentOS 6.5)を使えることになったのでComposerで Stagehand_TestRunner(3.6.2) + PHPUnit(3.7.37) をインストールしたメモ。 Composerをインストール 作業用ユーザー(application)のホームディレクトリ以下にプロ…

Apache2.2.20でBasic認証しまくったら警告を吐いて止まらなくなった話

今時Basic認証かよ、などと思われそうですが、むしろ今時HTTPSでない認証はあり得ないので、明示的なログアウト/再ログインが必要のないケースであればBasic認証で問題ないんじゃないかというわけで。 非ブラウザのHTTPクライアントアプリケーションと連携し…

Traitで不変オブジェクトにしてキャッシュ可能なクラスを作る

PHP

Qiitaに投稿した PHP Advent Calendar 2013 20日目の記事 PDOでオブジェクトをフェッチ&JSONとCSVファイル出力 の補足…というか、むしろ当初はこちらが本題の予定だったものです。 名著と評判の『Effective Java 第2版』を何年か前に読んで、不変オブジェク…

噂のPhalcon FrameworkをWindowsで動かしてみた

"The fastest PHP Framework" を標榜する Phalcon フレームワーク、実はWindows版もあるんです。 Phalcon for Windows を入れる extension として実装されてるわけですが、Windowsの場合は DLL ファイルを置くだけなのである意味Linux版よりもインストールは…

GitHubに置いてるライブラリをCoverallsに対応した

自分のライブラリを Travis CI でのユニットテストに対応しましたが、このたびカバレッジレポートを公開できるサービス Coveralls にも対応したメモです。 恥ずかしながらこれまでカバレッジレポートの意義が理解できてなかったんですが、 php-coveralls を…

マイクロフレームワークをつくろう - Pimpleの上に (フォームオブジェクトとドメインデータで投稿フォーム)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 記事にはしていないものの、コードの方は頻繁に更新しています。 フレームワーク全体に影響する部分としては以下の…

php --rf 関数名

PHP

昨日の昼ごろから突然、下のような状態になって php.net が見られなくなってしまったわけですが…。 どうしよう $haystack と $needle の順番が分からない! そんな時も安心、実はCLIのphpコマンドで関数のリフレクションが見られるのでした…! http://jp.php…

GitHubに置いてるライブラリをTravis CIに対応した

PHP

自分のライブラリをTravis CIでテストしてみたメモです。 ほぼ自分専用だし、別に困ってないし…と思って今まで手を付けてなかったんですが、個人ライブラリではユニットテストもそこそこ書くようになってて、 業務でも PHP 5.3系 / 5.4系 プロジェクトが併存…

offsetExistとPHPTALの罠

テンプレートをValidに書けることが売りの(?)テンプレートエンジン PHPTAL で、 マジックメソッド、ArrayAccessインタフェースを実装した配列風オブジェクトを使った時に引っかかった罠についてメモです。 内容的には ArrayAccess + マジックメソッドで公…

issetとemptyとoffsetExist

タイトルは「いとしさとせつなさと…」みたいな感じで読んでください。 マジックメソッド、ArrayAccessインタフェース、Traversableインタフェースを実装した配列風のクラスを作成する際に引っかかりがちな(?)、__isset() と offsetExists() の仕様上の罠…

ArrayAccess + マジックメソッドで公開する値と内部の値を変換するクラスにTraversableを実装する際の注意点

とてもターゲットの狭い記事ですが、ほぼ自分用メモです。 たとえば、外部からセットされたDateTimeオブジェクトを内部的にUnixTimestampに変換して保持し、外部に返す際は再びDateTimeオブジェクトに変換して返すようなオブジェクト。 そのために、マジック…

Vagrant + シェルスクリプトでPHP開発環境をプロビジョニングしてみたメモ

私はシェルスクリプト力が皆無なので、タイトルはほぼ釣りです。(でも他に表現のしようがないし…) AnsibleやFabricといった自動化ツールとの連携を検討していたんですが、ひとまずVagrant単体でできるプロビジョニングを試してみたメモです。 新原さんのス…

Windows7にVirtualBoxとVagrantをインストールしたメモ

開発環境に便利と話題のVirtualBoxとVagrantを、ようやくインストールしてみたメモです。 こちらの記事を参考にしました。 WindowsでVagrantする - みんなのちからになりたい Window 7 でVagrantでCent OS 6.3入れてみた - 僕の車輪の再発明 VirtualBoxを入…

k-holy.netドメインを取得してGehirn DNSとRS2に登録したメモ

いつかやると思いつつ、プライベートでアプリケーションを公開したいという意志が薄弱なため、なかなか実行に移れなかったのですが、ようやく k-holy.net ドメインを取得しました。 これを機に現在利用しているホスティングサービス、 Gehirn RS2 にDNSの設…

3つのテンプレートエンジンを共通のインタフェースで利用するためのライブラリ Volcanus_TemplateRenderer

Smarty3, PHPTAL, Twigを共通のインタフェースで利用するためのライブラリ Volcanus_TemplateRenderer を公開しました。 k-holy/volcanus-template-renderer 既存のフレームワークを使ってる大多数の人には何の役にも立たない、誰得なライブラリですが…。 Pa…

SilexでUrlGeneratorを使ったサブディレクトリ運用でサブリクエスト

相変わらずSilexとPimpleを拡張した自作フレームワークを行ったり来たりしています。 SilexアプリケーションでUrlGeneratorを使ったサブディレクトリ運用への対応(たとえば http://example.com/foo/ 以下をアプリケーションのルートとする)で、コントロー…

SqaleのPHPアプリケーションでSilexのサービスプロバイダ用Traitを使ってみたメモ

クラウドホスティングサービス Sqale では国内ホスティングサービスとしては珍しく(?)、動作環境にPHP5.4を選択できます。 せっかくなので、以前に書いたSilexアプリケーションのコードをSilex付属のサービスプロバイダ用Traitを利用したものに書き換える…

SqaleのPHPアプリケーションで.user.iniを使ってみたメモ

クラウドホスティングサービス Sqale がPHP対応された際にキャンペーンで無料アプリケーションを1個いただいて、色々試してみましたが、その後しばらく触ってませんでした。 久しぶりに公式の Sqale - PHPアプリケーションのマニュアル を見てみると、PHPア…

マイクロフレームワークをつくろう - Pimpleの上に(システム日付編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に(Pimple拡張編) マイクロフレームワークをつくろう - Pimpleの…

マイクロフレームワークをつくろう - Pimpleの上に(Monolog導入・エラーログとスタックトレース出力編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に(Pimple拡張編) マイクロフレームワークをつくろう - Pimpleの…

マイクロフレームワークをつくろう - Pimpleの上に(ルーティング編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に(Pimple拡張編) マイクロフレームワークをつくろう - Pimpleの…

マイクロフレームワークをつくろう - Pimpleの上に(Symfony HttpFoundationでフラッシュメッセージとCSRF対策編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に(Pimple拡張編) マイクロフレームワークをつくろう - Pimpleの…

マイクロフレームワークをつくろう - Pimpleの上に(例外処理とエラー画面・Twitter Bootstrap導入編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に(Pimple拡張編) マイクロフレームワークをつくろう - Pimpleの…

マイクロフレームワークをつくろう - Pimpleの上に(PHPTAL導入編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に(Pimple拡張編) マイクロフレームワークをつくろう - Pimpleの…

マイクロフレームワークをつくろう - Pimpleの上に(RESTインタフェース編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に(Pimple拡張編) マイクロフレームワークをつくろう - Pimpleの…

マイクロフレームワークをつくろう - Pimpleの上に(Rendererクラス作成編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に マイクロフレームワークをつくろう - Pimpleの上に(とりあえず…

マイクロフレームワークをつくろう - Pimpleの上に(Symfony HttpFoundation導入編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に マイクロフレームワークをつくろう - Pimpleの上に(とりあえず…

マイクロフレームワークをつくろう - Pimpleの上に(とりあえずフォーム編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に コードはWindows版 PHP5.4 ビルトインWebサーバにて動作確認して…

マイクロフレームワークをつくろう - Pimpleの上に(Pimple拡張編)

DIコンテナの効能が謳われだして久しい昨今、業務でもSilexでいくつか小さなアプリケーションを作ったりする中で、ようやくその利点を実感するようになりました。 そのうち、実は自分が惚れたのはSilexではなくて、その母体たるPimpleだったんじゃないかと考…

Fabricタスクをモジュール分割して楽々composer更新

Windows7 (MinGW / MSYS) で Fabric シリーズ記事です。 Windows7 (MinGW / MSYS) に Python 2.7 + virtualenv + Fabric を入れたメモ Windows7 (MinGW / MSYS) に virtualenvwrapper を入れたメモ Fabricで接続情報を指定する方法いろいろ&FabricからPHPス…

真性PHPerでも分かった?FabricでWindowsからファイルアップロード

Windows7 (MinGW / MSYS) で Fabric の続きです。 Windows7 (MinGW / MSYS) に Python 2.7 + virtualenv + Fabric を入れたメモ Windows7 (MinGW / MSYS) に virtualenvwrapper を入れたメモ Fabricで接続情報を指定する方法いろいろ&FabricからPHPスクリプ…