読者です 読者をやめる 読者になる 読者になる

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…

GitLab 5.0 を CentOS 6.4 にインストールした

追記 2013/04/08 単に GitLab を動かすだけなら ruby をシステムグローバルにインストールする必要は無いので rvm とか rbenv とか、もしくは /home/git/ruby-1.9.3/ あたりにインストールする方がいいかもしれない。 なんかいろいろ変わったらしいので入れ…

SIGCHLD を SIG_IGN すると mail 関数が false を返す

PHP

以下のコードを実行すると mail 関数が false を返します。

remi リポジトリから入れた MySQL を CentOS リポジトリのものに戻す

諸事情で remi リポジトリから入れていた MySQL 5.5 を CentOS リポジトリの 5.1 に戻しました。 remi から MySQL をインストールする手順は下記の 方法2 標準リポジトリの優先度を remi より高く で行なっている前提です。 CentOS6 で remi から php や my…

PHP vld を使ってみた

PHP

今月に入ってから 1 回もブログを書いていなかったのでわりとどうでもいい小ネタを。 はじめに PHP vld を使うと opcode が簡単に表示できて便利です。 PECL :: Package :: vld PHP vld インストール - yoyaのメモ インストール方法とか使い方はリンク先参照…

MySQLのデフォルトのトランザクション分離レベルは SELECT がスナップショットを参照する

MySQL の InnoDB のデフォルトのトランザクション分離レベルは REPEATABLE READ で、ファジーリードしないようにトランザクション中の SELECT はトランザクションを開始してから最初の SELECT の時点のスナップショットから行われます。 そのため、次のやり…

php 5.3 の Cannot use string offset as an array の詳細

PHP

Qiita に投稿した内容ですが、次のコードは php 5.3 と 5.4 で結果が異なります。 $str = "hoge"; var_dump($str[0][0]); 5.4 の場合 string(1) "h" 5.3 の場合 Fatal error: Cannot use string offset as an array もっと調べた php 5.3 では $str[0] のよ…

PHP のシグナルハンドラのいろいろ

PHP

ここ数年、PHP でシグナルを使う機会が多かったので、気づいた点などを整理してみます。 本当のシグナルハンドラと PHP のシグナルハンドラ pcntl_signal() で登録する PHP のシグナルハンドラは、本当の意味でのシグナルハンドラではありません。なので、シ…

PHP 5.5.0 alpha を使ってみた

PHP

今更感ありますが、PHP 5.5 の目玉機能である finally、ジェネレータ、コルーチンを使ってみました。 finally これまでの PHP の例外処理だと fclose などの後処理を確実に行うためには try ブロックの最後と catch ブロックの両方に書く必要がありました。 …

yum でインストールしているパッケージでリポジトリを作成

開発の案件で、本番環境・ステージング環境・みんなで使う共通の開発環境・テスト環境・各自が開発に使用するVM、のように複数の環境を構築することはよくありますが、構築した時期(yum update のタイミングとか)によって微妙にパッケージのバージョンが異…

Windows で Git の環境設定 (msysgit, TortoiseGit)

Git

PC を整理していたら以前社内勉強会で使ったメモが出てきたので、折角なので少し整理してブログに載っけることにしました。 msysgit まず最初に msysgit をインストールします。下記サイトからダウンロード出来ます。 http://code.google.com/p/msysgit/down…

良いお年を!

今年ももう終わりですね。なんとなくこの一年を振り返ってみます。 全体的なこと 今年の出来事で一番大きかったことは @ngyuki ←このアカウントで本格的に Twitter 始めたことですかね。後 GitHub とか Qiita とか QA@IT とか。 東京に来てPHPやRDBMS界隈の…

Git. remote HEAD is ambiguous, may be one of the following

git

git remote show origin でタイトルのようなメッセージが出てきて何なのか気になったのでメモ。 Git. Remote HEAD is ambiguous - Stack Overflow。 リモートの master と development が同じコミットを指しているので「リモートの HEAD がどちらなのかを特…

FreeNAS 8.2.0 の init: getty repeating too quickly on port /dev/ttyv0, sleeping 30 secs

困った FreeNAS を 8.2.0 にアップデートしたところ、ログに次のようなメッセージが延々と繰り返し表示されるようになりました(>_<) Dec 4 09:30:51 freenas init: getty repeating too quickly on port /dev/ttyv0, sleeping 30 secs 恐らく・・・ (init) g…

PHP 5.3.1 以前では fclose で明示的にアンロックされてしまう

PHP

この記事「PHP5.3.2以降ではfcloseで自動的にアンロックされない - 徳丸浩のtumblr」で PHP 5.3.2 から fclose で自動的に flock が呼ばれなくなったというのを知り衝撃を受けました。 衝撃だったのは PHP 5.3.1 以前は fclose で明示的に flock されている …

CentOS5 の KVM ゲストを VMware ゲストに移行

VMware vCenter Converter で簡単に出来るかと思ったのですが上手くいきませんでした (P2V はできるけれど V2V は出来ないのでしょうか? あるいはディスクが virtio だったからなのかもしれません)。 しかたがないので手作業で試行錯誤して頑張りました!…