MySQL の where 狙いと order by 狙い

わたしは参加していないのですが YAPC::Asia Tokyo 2014 で次のような発表があったようです。 Where狙いのキー、order by狙いのキー このセッションを聞いている人を WHERE gender = 'male' なら ORDER BY を狙った方がいいだろうし、WHERE gender = 'female…

AWS で WordPress を RDS とか s3fs とか使って動かしてみる

AWS

前回は WordPress にアップロードされた画像などのファイルを AWS SDK for PHP の S3 ストリームラッパーを使って無理やり S3 に保存しましたが、 AWS で WordPress を RDS とか S3 とか使って動かしてみる s3fs-fuse を使えばもっと簡単そうなのでやってみ…

AWS で WordPress を RDS とか S3 とか使って動かしてみる

AWS

少し前に AWS で DRBD やら Pacemaker やら Heartbeat やら GlusterFS を使って WordPress を HA 構成にしてみましたが、 AWS で HA クラスタで WordPress を動かす なんで RDS とか S3 とか使わないの? 馬鹿なの? 死ぬの? とセルフツッコミが入ったので …

Zend Framework 2 で Smarty を使うためのモジュール

そういえばだいぶ前に Zend Framework 2 で Smarty を使うためのモジュールを作りました。 ngyuki/zf2-smarty なお、ZfcTwig を大いに参考にしました。 最初に作ったのは1年ぐらい前だったと思います。その当時に GitHub とかで同じようなものを探してみた…

AWS で HA クラスタで WordPress を動かす

最近お仕事でも AWS を使わざるを得ない状況になってきたので、ためしに AWS で WordPress を HA 構成にしてみました。 なお、RDS や S3 は使っていないのであまり AWS っぽくはありません(オンプレをできるだけそのまま AWS に移行する想定だったので)。 …

ISC dhcpd で IP アドレスに基いてホスト名を自動設定

AWS EC2 のインスタンスを立ち上げたとき、(AMI によるかもしれませんが)DHCP で付与された IP アドレスに基いて ip-10-11-12-13 のようにホスト名が設定されるのを見て、さすが AWS は不思議なチカラでよくわからんことをしよる、と思いました。 と、思っ…

CentOS 7 の dhcpd で DDNS が失敗する

次のような感じで、リースした IP アドレスを Dynamic DNS でネームサーバに登録する DHCP サーバを CentOS 6 で作っていたのですが、なぜか CentOS 7 にすると同じような設定でも DDNS での更新が失敗するようになりました。 dhcpd.conf log-facility daemo…

PHP のクラス定数のちょっと奇妙な話

PHP

このコードは Notice なく実行できる。よく考えると奇妙じゃない?

MySQL で ORDER BY 狙いのインデックスがある列で NULL を下に持ってくる

MySQL で ORDER BY で NULL を下に持ってくるには下記の記事のような SQL で出来ますが、 MySQL の ORDER BY で NULL を先にもってきて NULL 以外は降順にする « をぶろぐ MySQL で NULL を一番最後にして昇順にソートする | Sun Limited Mt. MySQLでNULLを…

CentOS 7 を KickStart でインストールする ISO を作る

最近は開発用の VM の構築には Packer や Vagrant が流行っているようですが、自社では諸事情で VirtualBox や VMware で個別に VM を作るのが主流です。 が、VM を作るたびに CentOS のインストーラーの GUI をぽちぽちするのは苦痛なので、KickStart で一…

uopz 拡張で DI っぽいことしてみる

PHP

opcache のオプションを確認するために PHP のマニュアルを見ていたら uopz という面白そうな拡張を見つけたので試してみました。 PHP: uopz - Manual PECL :: Package :: uopz krakjoe/uopz インストール Linux な人は pecl でインストールできます。 $ pec…

Linux で Windows のバイナリを作成

口内炎が痛くてやるきでないので、気晴らしにクロスコンパイルしてみました。 クロスコンパイル、名前は知っていましたがやったことありません。なんだか必殺技みたいでかっこいいです。 試した環境は CentOS 6.5 です。 まず mingw32-gcc というものが必要…

mysql_use_result と Server Sent Events でデータをストリーム的にブラウザに返す

まず下記のような手順で 1000 万件のレコードを持つテーブルを作ります。 MySQL に大量のデータを手っ取り早く挿入する - Qiita $ mysql test -e " create table t ( id int not null primary key, str text not null ) " $ seq 10000000 | mysql test -e " …

PHP の FTP 関数のクソい動作

PHP

2年ぐらい前に書いてたネタを発掘したのでポスト、2年たってもクソいものはクソいです。 ある環境の PHP(5.3.2) の FTP 関数で、パッシブモードを指定しているはずなのに FTP サーバのログに PORT コマンドが残っていることがありました。 PHP の FTP 関数…

phpenv 環境で composer global でパッケージをバージョン別にインストールするプラグイン

PHP

Composer とても便利ですよね。 composer global require を使えばユーザーグローバルにもインストールできるので、phpunit などのインストールに pear の代わりに使えます。 PHP - composer global - Qiita がしかし、phpenv で複数の php を切り替えられる…

Redmine のシンタックスハイライトを Rouge にするプラグイン(他3点)

ここ最近、必要に迫られて ruby も rails もよく知らないのに Redmine のプラグインを何個か作ったので紹介します。 redmine_rouge https://github.com/ngyuki/redmine_rouge Redmine のシンタックスハイライトエンジンを Rouge に変更します。 Redmine はデ…

OpenShift Online に CandyCane をデプロイする

前回 OpenShift Online で PHP を使ってみましたが、無料枠で MySQL も使えるので試しに CandyCane をデプロイしてみました。 なお、CakePHP も CandyCane もまともに触ったこと無いので色々おかしいかもしれませんがご了承ください。 手順 前回と同じ手順で…

RedHat OpenShift で PHP を使う

はじめに RedHat の PaaS である OpenShift Online を触ってみました。 OpenShift へのサインアップはだいぶ前にやっていたので、サインアップの方法やドメインの登録、公開鍵の登録、などの手順はもう忘れました。 多分下記ページの右上の「SIGN UP」から見…

Google App Engine で PHP を使う

昨年の 10 月ごろに Google App Engine for PHP がオープンになったらしいので触ってみました。 SDK のインストール まずはローカルでアプリを実行したり Google App Engine へデプロイするために必要な SDK をインストールします。 Python 2.7 普段使ってい…

MySQL でクライアントが突然死したらロックが残ったままになった

珍しい現象に遭遇しました。冷静に考えると当たり前のことだし、MySQL に限ったことでは無いと思いますが。 MySQL のサーバとクライアントが別のホストになっているものとします(仮に DB サーバ と AP サーバ)。 192.0.2.1 => DB サーバ 192.0.2.2 => AP …

PHPUnit Selenium2 で phpunit.xml にリスナー指定でスクリーンショットを取得

PHP

下記の記事を見て PHPUnit_Extensions_Selenium2TestCase_ScreenshotListener はリスナーなので phpunit.xml で指定した方が良いかと思って試しました。 PHPUnit Selenium2で失敗時にスクリーンショットを取得する方法 — A Day in Serenity (Reloaded) — PHP…

Composer が PSR-4 に対応していた

PHP

Composer が PSR-4 に対応していたので試してみました。 PSR-4 - Composer PSR-0 と PSR-4 PSR-4 はオートローダーに関する規約で PSR-0 を置き換えるものです。 PSR-0 PSR-4 ざっくり PSR-0 と比べると次のような違いがあります。 クラス名に含まれるアンダ…

PHP の E_RECOVERABLE_ERROR エラーレベル

PHP

PHP Advent Calendar 2013 in Adventar の24日目です。 PHP は set_error_handler で↓のようにエラーをハンドリングできます。

Visual Studio Express 2013 で PHP をステップ実行する

PHP

PHP Advent Calendar 2013 in Adventar の20日目です。 今日は IDE を使って PHP をステップ実行してみたいと思います。 Eclipse PDT? PHPStorm? いいえ、そういうのは使いません。 使うのは↓コレです。PHP のスクリプトではなく PHP そのものをステップ実…

PHP の Windows 版でのみ発生する is_dir の奇妙な現象

PHP

PHP Advent Calendar 2013 in Adventar の16日目です。 下記のコード、Windows で実行するとどうなると思いますか?

PHP の参照のあれ

PHP

PHP の参照のあれ PHPが糞言語なのはどう考えても参照をポインタだと思っているお前らが悪い - なんたらノート第三期ベータ もっと単純にすると次の結果を比べると判りやすい。

PHP と Grunt で ブラウザのアドオンを使わずに LiveReload する

PHP Advent Calendar 2013 in Adventar の13日目です。 前日は @Mankin_jp さんの PHP 〜5.5の入り口として〜 便利なパスワードハッシュ関数を使おう! でした。 ちなみにまだ 5.4 な人は password-compat を使うといいと思います。私はまだメインが 5.4 な…

~/.ssh/config の IdentityFile に秘密鍵ではなく公開鍵を指定する

SSH でログインするときは user@host とか、あるいは -l オプションとかでアカウント名を指定します。 $ ssh ore@example.com # Logged in as ore $ ssh are@example.com # Logged in as are が、たまに同じアカウント名でも認証に使用された公開鍵で実際の…

CentOS6 で libvirt で LXC を使ってみる

少し前に CentOS6 で LXC を使ってみたので、次は libvirt を絡めて LXC を使ってみます。 CentOS6 で LXC を使ってみる - ngの日記 なお、今回もほとんど参考サイトの写経です。 参考にしたサイト http://wiki.centos.org/HowTos/LXC-on-CentOS6 前提 CentO…

ファイルの更新を監視してコマンドを実行するワンライナー

phpunit を実行させるために Grunt を使いましたが・・・ PHP 開発でも Grunt を使う - ngの日記 まあファイルの更新を監視して phpunit(に限らず任意のコマンド)を実行するだけならワンライナーです。 $ inotifywait -e create,delete,modify,move -mr sr…

PHP 開発でも Grunt を使う

PHP Advent Calendar 2013 in Adventar の3日目です。 前日は @matsubo さんの コピペで出来るComposer導入 でした。Composer、私も使ってます。 Grunt とは Node.js で作られた色々な作業を自動化するためのツールです。 普通は Node.js での開発や js と…

MySQL で sql_mode が Strict なときの ENUM 型

下記の2つの記事を読んで「でも sql_mode が Strict なときに ENUM に Invalid な値? 整数値が 0 である値? を合法的に入れる方法あったっけ?」と思ってやってみたら妙なことに・・・ MySQLにおいて真とされる値を調べた - tagomorisのメモ置き場 メモ:…

CentOS6 で LXC を使ってみる

下記の記事で Docker というものを知って少し気になったのですが、Docker を試してみる前に LXC がどんなものなのか試してみたほうがいいかなーと思ったので、手元の CentOS6 で使ってみました。 コンテナ型仮想化「Docker 0.7」リリース。主要Linuxディスト…

virt-install と Kickstart で KVM に CentOS をインストールする

はじめに virt-install と Kickstart を使って X Window なしで KVM に CentOS をインストールします。 Kickstart 定義ファイル Kickstart 定義ファイルを作成します。 RHEL や CentOS を普通にインストールすると /root/anaconda-ks.cfg に Kickstart 定義…

クロージャーの static 変数はインスタンス変数なのか?

PHP

次のコードを実行すると、

Zend Framework 2 でテストごとにDB接続してコネクションが枯渇する

はじめに この記事 の続きです。 Zend Framework 1 で発生した、テストの実行時にDBのコネクションを使い果たしてしまう問題は Zend Framework 2 でも同じように発生します。 この問題に気づいたのは Zend Framework 2 のチュートリアル で Album モジュール…

Zend Framework 1 でテストごとにDB接続してコネクションが枯渇する

はじめに 最近 Qiita に↓このようなものを投稿しましたが、どちらも Zend Framework 2 を使っていて気づいたものです。 PHPUnit の TestCase のメンバはテストが完了するまで解放されない - Qiita [キータ] PHP - SPLのコンテナクラスで循環参照するとGCで回…

CentOS で GitLab を 5.3 から 6.1 にバージョンアップ

CentOS で GitLab を 5.3 から 6.1 にバージョンアップしたのでそのときの手順を残しておきます。 参考 https://github.com/gitlabhq/gitlabhq/blob/master/doc/update/5.3-to-5.4.md https://github.com/gitlabhq/gitlabhq/blob/master/doc/update/5.4-to-6…

cifs でマウントした先の一部ディレクトリを mount --bind

Windows 上で PHP のコードを書いているプログラマの戯言ですが、非Windows、非PHP でも関係あるかもしれません RHEL 系ディストリだけでしか使えないかもしれません 私は普段 Windows 上でコーティングを行い、そのコードを仮想環境の Linux で動かしていま…

Poderosa で Home/End/Ctrl+→/Ctrl+← を使えるようにする

メインメニューから「オプション → 操作」を開いて、追加キー定義に次の通りに指定します。 Home=0x1b[1~, End=0x1b[4~, Ctrl+Right=0x1b[5C, Ctrl+Left=0x1b[5D 次のキー入力が有効になります。 キー readline のコマンド名 説明 Home beginning-of-line 行…

はてブコメントをニコニコ動画風に表示する Chrome 拡張機能

はじめての拡張機能 ~はてブコメントをニコニコ動画風に表示~ Chrome 拡張機能を作ってみたくなったので練習がてらはてブコメントをニコニコ動画風に表示する拡張機能を作ってみました。 ジョークアプリなので役にはたちません(´・ω・`) インストール 下…

Thunderbirdで自動既読にする技

仕事をしていると「まったく必要ないんだけれど色々なシガラミで受信しなければならないメール」というものがたまにあります。 そういう邪魔なメールを Thunderbird-17.0.6 のメッセージフィルタで上手いこと自動で既読にする方法です。 はじめに 自動既読す…

phpenv を Windows の msysgit で動かす

PHP

phpenv を Windows の msysgit で動かしてみました。 ただし php-build は使わないので PHP そのもののインストールは手動です・・・単にバージョンを切り替えるだけです。 なお、全ての作業は msysgit の bash で行います。 readlink まずは readlink コマ…

MySQL で実行計画によってデッドロックしたりしなかったりするクエリ

わりと珍しそうなデッドロックに遭遇しました。 BEGIN/COMMIT/ROLLBACK などのトランザクション関連のコマンドは使っていない 2接続で SELECT ~ FOR UPDATE だけでデッドロック 外部キー制約やトリガは使っていない 実行計画によってはデッドロックしない…

Zend Framework 2 の ZendDeveloperTools で GitHub API の 403 エラーが表示される

Zend Framework 2.1.5 でデバッグツールバー(ZendDeveloperTools)を入れてみたところ、次のようなエラーが表示されました。 Warning: file_get_contents(https://api.github.com/repos/zendframework/zf2/git/refs/tags/release-): failed to open stream:…

プロキシ環境下で composer でインストール出来なくなった(HTTP/1.0 400 Bad Request)

PHP

なぜか自社の社内から zf2 や phpunit が composer でインストール出来ない・・・少し前まで出来ていたはずなのに $ cat composer.json { "require": { "zendframework/zendframework": ">2.1.3" } } $ php composer.phar install -vvv Downloading composer…

MySQL の `NO_ZERO_DATE` と `NO_ZERO_IN_DATE` で無効な日時を禁止

MySQL は、次のような変な日時を DATETIME に挿入出来てしまいます。 create table tt (dd datetime); insert into tt value (0); /* 0000-00-00 00:00:00 */ insert into tt value (''); /* 0000-00-00 00:00:00 */ insert into tt value ('9999-99-99 99:9…

Poderosa で top コマンドで画面がガタガタに崩れるのをどうにかする

私はデスクトップ機には Windows を使用しているので、ターミナルソフトには Poderosa を使っています。 Poderosa | Free software downloads at SourceForge.net 複数タブが非常に便利なのですが、なぜか top コマンドでタスクの一覧を逐次表示させると表示…

LOCK IN SHARE MODE の使いドコロを間違えてデッドロック

先日、作っていたシステムでデッドロックがわりかし頻繁に発生することが判りました。 RDBMS のデッドロックは必ずしもバグでは無く、無理に対応するよりアプリケーション側でハンドリングしてトランザクションのリトライなどを行った方がいい場合もあると思…

外部キー制約の定義順で DELETE が成功したり失敗したり

2013/04/16 追記 次のようなテーブル定義がありました。 CREATE TABLE t1 ( a INT NOT NULL, PRIMARY KEY (a) ); CREATE TABLE t2 ( a INT NOT NULL, b INT NOT NULL, PRIMARY KEY (a, b) ); CREATE TABLE t3 ( a INT NOT NULL, b INT NOT NULL, c INT NOT N…