2011-01-01から1年間の記事一覧

PHP の配列演算子(結合)について

PHP

配列演算子の仕様で(使えるかどうかは不明だが)オモシロい?挙動をすることが分かった。http://www.php.net/manual/ja/language.operators.array.php より + 演算子は、右側の配列を左側の配列に追加したものを返します。 両方の配列に存在するキーについ…

Vagrant 0.8.8 がリリースされたが・・・

Vagrant 0.8.8 がリリースされた。私が報告したバグも解消されているらしい。 早速 Mac OS X (Lion)で試してみたが、どうもうまく動かない。ssh 周りでファイル権限が無いというエラーで止まってしまう。今までは、vagrant コマンドは管理者権限なしでいけて…

PHP で月の末日を取得する

PHP

指定した月の末日を取得する方法として、 「翌月1日の前日」 というロジックが常套手段だったが、 「指定した月の日数」 という考え方もできる。こちらのほうがシンプル。PHP の場合、 date() 関数のフォーマット "t"を用いて簡単に取得できる。

CakePHP 2.0.3 の PaginatorHelper の不具合?

CakePHP 2.0.3 のページングのリンク先が、どうもおかしい。PaginatorHelper::prev() や next() で、複数のソート条件がある場合は、正しく動作してくれない。良くわからないのだが、PaginatorHelper::link() の一部をコメントアウトして対処。多分副作用が…

Windows 7 上の Vagrant で Chef-Soloプロビジョニング

Vagrant 0.8.7 で用意されているプロビジョニングの仕組みは、 Puppet Chef (solo/client) Shell の3種類ほど。chef-solo を使いたかったのだが、Windows 7 ではどうしても失敗してしまう。 (関連:現在の Vagrant の Windows 7 対応状況) ローカルのディレ…

Debian squeeze で Jenkins + nginx 環境を作る

Debian squeeze 上で、nginx をフロントサーバとして、プロクシ経由で Jenkins を動作させたい。https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu を参考に、サクッと Jenkins をインストールする。http://localhost:8080/ にアク…

Vagrant がいまいち人気がない理由

http://www.vagrantup.com/とても素晴らしいコンセプトで、手放せなくなりつつある Vagrant。ネタにしてもいまいち反応が薄いのはなぜだろう?とりあえず、思いつくものを列挙。 知名度が圧倒的に低い。 VMWare に対応していない。 Chef や Puppet はハード…

Debian squeeze の nginx 上で CakePHP を動かしてみた

さくらVPS で一番安いサービスを利用するときにネックになるのがメモリ消費量。 メインメモリが 512MBしかなく、apache2 ではやや不安なので、nginx を使ってみようかと画策中。Debian squeeze の nginx 上で php の環境を作るときに、参考にしたのがこちら…

CakePHP で簡易なPDFを作成する

CakePHP 2.0 で、簡易的ではあるが PDF を作成する方法を2つ試してみた。 View (PdfViewクラス) を作成する方法 View レイアウト (pdf.ctp) を作成する方法 [オススメ] HTML から PDF が生成できるのであれば、CakePHP の View の変更で HTML/PDF を切り替…

CakePHP 2.0.1 の Content-Length がおかしい?

CakePHP 2.0.1 がリリースされたわけだが、Content-Length がおかしいのではないかとのこと。 ソースをのぞいてみると・・・lib/Cake/Network/CakeResponse.php @@ -347,7 +350,11 @@ class CakeResponse { $codeMessage = $this->_statusCodes[$this->_stat…

CakePHP でバッチ処理を組むときの注意

CakePHP でバッチ処理を組む際、Model::cacheQueries が true の状態で、Model::find() を繰り返すとあっという間にメモリ不足に陥ってしまった。バッチ処理中に同じクエリを利用することはないため、クエリのキャッシュを無効化した。例1: バッチ処理のため…

携帯の Referer 対応状況

もはやスマートフォンの時代ではあるが、携帯の仕様を把握しておく必要があったのでメモ。 au 全機種対応? docomo iモード2.0 以降対応 (2009年夏モデル以降) http://www.nttdocomo.co.jp/service/developer/make/content/browser/browser2/new_function/#…

プロセスアカウンティングでコマンド履歴を残す (あとで試す)

Linux のコマンド履歴をより詳細に取ることができるらしい。http://www.usupi.org/sysad/139.html http://www.usupi.org/sysad/140.html

CakePHP 2.0 でライブラリの読み込み

CakePHP 1.3 では、何でも App::import() 関数を使ってライブラリを読み込んでいたが、CakePHP 2.0 は、若干手が加えられている。 App::import() は、引き続き利用可能ではあるが、新たに App::uses() 関数が追加された。ネーミング的に前バージョンまでよく…

Apache prefork では mod_mem_cache は効果がない

結論は、タイトル通り。 経緯 PHP のために Apache prefork に設定しているサーバで mod_mem_cache を有効にしていてハマった。デバッグログを見るとキャッシュはされているようだが、キャッシュを再利用(recall) されている形跡がない。 原因 mod_mem_cache…

Git リポジトリの統合

目的 別々に 2つの Git リポジトリがある。この2つを統合して一つのリポジトリにしたい。これらは元々同一のソースコードを管理しているものなのだが、リポジトリとして作成された時期が異なり、別々に存在していた。 経緯 ソースコードの運用者が変わった…

HtmlHelper::loadConfig() にハマる (CakePHP 2.0.0-RC3)

CakePHP 2.0.0-RC3 で早速つまづいた。はじめは、バグなのかドキュメントの誤りなのか、判断できずにいたのだが、HtmlHelper で生成されるタグを変更するために HtmlHelper::loadConfig() を使おうとして、うまく動かせられなかった。(APIドキュメント側の誤…

コーディングテスト

(1) 4種類のアルファベット "A,C,G,T" から成る3文字の文字列を全て列挙するプログラムを書きなさい。ただし、文字列内に同じアルファベットが出現しても構わないものとし、出力順序は問わないものとします。 修正)コーディングテスト 例題を解いてみた よ…

CakePHP 2.0 はじめました

CakePHP は、1.2.0-beta2 から利用し始めて 3年くらいになるけど、最近はちょっと気持ちが離れていました。 CakePHP 2.0 の RC2 がリリースされたことで、いい機会なので、今度準備中のシステムに使おうと画策中。 リハビリがてら、ざっくり管理画面系を作っ…

Ruby で grep モドキの実装

日本語対応の grep がほしいなと思ったので、Ruby でざっくり組んでみた。 require 'optparse' require 'kconv' regexp = ''; OptionParser.new {|opt| opt.on('-e VAL', '--regexp VAL') {|v| regexp = v.toutf8} opt.parse!(ARGV) } rule = Regexp.new(reg…

msysGit で日本語コミットログ対応

Windows の Git Bash (msysGit) 上で日本語対応してみた。 msysGit 日本語でコミットログを表示する Windows の Git Bash (msysGit)上でコミットログを見るときに日本語(UTF-8)が文字化けしてしまうので、 git config --global core.pager "nkf -s | LESSCHA…

veewee で CentOS のベースBOX作成に失敗する件

veewee で CentOS 6.0 のベースBOX を作成しようとすると "vagrant basebox validate" に失敗する。OS は起動するが、gem と puppet と chef がインストールされていない。どうも puppet をパッケージでインストールしようとして失敗しているようだ。puppet …

veewee で vagrant 用の仮想サーバ(box)を自動作成

Vagrant の有用性については、Vagrant で開発環境構築を自動化しよう で、熱く語ってみたのだが、一つだけ足りない機能があった。それは、仮想サーバのひな形であるベースBOXの作成は自動化されておらず、Vagrant に必要な環境を整えるのは意外と面倒なこと…

PostgreSQL で日本語全文検索

http://textsearch-ja.projects.postgresql.org/textsearch_ja.htmlPostgreSQL 8.3 から全文検索がサポートされた。日本語はデフォルトでは組み込まれていないため textsearch-ja をソースからインストールしてみた。Debian (squeeze) にて確認した。とりあ…

現在の Vagrant の Windows 7 対応状況

Vagrant は、最新バージョンは 0.8.5 なのだが、MacOS X や Linux では動作する。 Windows 7 (64bit) では、jruby ライブラリの関係で、安定して動作するのは、0.7.8 。 0.8.5 では chef-solo がうまく動作してくれない。vagrant 0.7.8 は、VirtualBox 4.0.1…

Windows 7 のデスクトップアイコンの大きさ変更

Windows 7 のデフォルト状態では、デスクトップアイコンのサイズが大きすぎるような気がしたので変更。 デスクトップ上で、右クリック。 「表示」>「小アイコン」を選択。

Scientific Linux の yum リポジトリ

http://itpro.nikkeibp.co.jp/article/COLUMN/20110811/365081/yum リポジトリの設定ファイル2つ /etc/yum.repos.d/sl.repo /etc/yum.repos.d/sl-others.repo baseurl をミラーである http://ftp.riken.jp/Linux/scientific/ に書き換える。

テストコードのクラス命名規約

レガシーコード改善ガイド 18章より 単体テスト用クラスは、 [クラス名] + Test 擬装クラス名は、Fake + [クラス名] テスト用サブクラスは、 Testing + [クラス名] 擬装クラスとは、テスト対象のクラスで利用される協調クラスを模したもののこと。 単体テス…

FullCalendar の複数カレンダー表示

元ネタはこちら、http://oshiete.chance.com/qa6564701.htmlイベントが空っぽだと寂しいのでGoogleカレンダーの日本の祝日を表示してみた。 前月、次月に移動するボタンも追加した。 <html> <head> <link rel='stylesheet' type='text/css' href='../fullcalendar/fullcalendar.css' /> </link></head></html>

Chef-Solo で Apache の VirtualHost を設定する

Vagrant 関連を一通りマスターしたところで、そろそろ Chef の調査を再開しようと思う。 以前、PHP をインストールするところまでやった。 http://d.hatena.ne.jp/okinaka/20110705/1309830735今回は、Apache の VirtualHost の設定を行う。 Opscode の apac…