サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大そうじへの備え
okinaka.hatenablog.com
実際には foreach を使えばいいだけの話だが、 array_map(), array_keys(), array_values() の 3つの関数を組み合わせると、配列のキーと要素に対して処理できる。 例: <?php $a = array('a' => 'valueA', 'b' => 'valueB'); $result = array_map(function ($key, $value) { return $key . '.' . $value; }, array_keys($a), array_values($a)); var_dump($result); 結果: array(2) { [0]=> string(8) "a.valueA" [1]=> string(8) "b.valueB" }array_map() 関数だけで出来ないのが残念。
Vagrant のベースBOX 作成手順をネットで探すとたいていの場合、 veewee を使用していますが、無理に使用する必要はありません。 全自動化できれば便利ではあるのですが、個人的には手作業で作成するほうが手軽で気に入っています。 http://d.hatena.ne.jp/okinaka/20110805/1312474847 で一連の流れはつかめていましたが、Debian wheezy リリースに伴い、Vagrant のベースBOX を久々におさらいしてみました。 なお Vagrant のバージョンは、1.0.7 です。(1.2 系はまだ試していません。) VirtualBox の画面から仮想マシンの新規作成 名前 debian-wheezy OS Linux バージョン Debian(64bit) メインメモリ 512 MB チップセット PIIX3 オーディオ 無効 USB
Capistrano は、ssh でアクセスするので、他のサーバにアクセスするのとほとんど変わらない訳だが、Vagrant の特徴に合わせて設定する必要がある。設定ポイントとしては、 ユーザー名 SSH Port 秘密鍵 を指定すること。設定内容は、vagrant ssh-config コマンドで確認する。 Capfile設定例 # ユーザ名 と Port を指定 role :vagrant, '127.0.0.1', :user => 'vagrant', :port => 2222 # 秘密鍵の設定 ssh_options[:keys] = [ "#{ENV['HOME']}/.ssh/id_rsa", "#{ENV['HOME']}/.vagrant.d/insecure_private_key" ] 後は何かタスクを追加して動作を確認。apache をリスタートしてみる。 task
一つのシステムで複数のサーバで構成されるのは、よくあることだ。 Vagrant では、一つの設定ファイルで複数の仮想サーバを管理する仕組みも用意してある。 http://docs-v1.vagrantup.com/v1/docs/multivm.html Vagrantfile という設定ファイルで管理されている。マルチVMの設定例は以下の通り。 Vagrant::Config.run do |config| config.vm.box = "base" config.vm.define :web do |web_config| end config.vm.define :db do |db_config| end end 上記の例では、web と db の2つの仮想マシンを定義した。 それぞれの仮想マシンを起動する場合、vagrant up コマンドにVM名を付けて実行する。 vagra
Blueprint タイポブラフィーやプラグインシステムを備えオールマイティに活躍 http://www.blueprintcss.org/ TwitterBootstrap レスポンシブからモック作成まで汎用性が高く幅広い層から支持 http://twitter.github.com/bootstrap/ 960 Grid System http://960.gs/ Blue Trip 複数のフレームワークのいいとこ取り http://bluetrip.org/ Kube framework 必要最小限で超軽量 http://imperavi.com/kube/ 52framework ブラウザの差異を吸収し HTML5/CSS3 を利用できる http://www.52framework.com/ iUI ネイティブな iOS風のUI http://www.iui-js.org/ Ha
結合テストは、以下の方法が一番簡単だが、integration-test フェーズで結合テストが実行されないのが何となく気持ち悪かった。 http://d.hatena.ne.jp/okinaka/20120413/1334292605 以下の記事を参考に、integration-test フェーズにて結合テストが実行できることが確認できた。 http://johndobie.blogspot.co.uk/2012/04/unit-and-integration-tests-with-maven.html 記事中の pom.xml やソースの記述に不備があり、やや手間取った。一度手順を整理しようと思う。 サンプルコード svn co https://designbycontract.googlecode.com/svn/trunk/examples/maven/categories cd
以前、veewee で vagrant 用の仮想サーバ(box)を自動作成 にて、veewee 0.2.0 の動作を確認した。今回は、開発版である 0.3.0.alpha9 を使って CentOS 6.2 のベースBOXを作成してみた。 今回動作確認した環境は、 Windows 7 (64bit) VirtualBox 4.1.16 vagrant 1.0.3 veewee 0.3.0.alpha9 0.2.0 系は、vagrant 0.8 向けのプラグインとして開発されていたが、今開発中の 0.3.0 は、単独で動作し、VMWare や KVM などの VirtualBox 以外の仮想マシンの自動作成への対応を目指している。とりあえず、VirtualBox (+vagrant 1.0.3) ではちゃんと動作することが確認できた。 veewee 0.3.0.alpha9 をインストール g
Jenkins ユーザーデータベースのアカウントの削除やパスワードリセットは、開発者のページの左メニューに「設定」「削除」のリンクがあるのでこちらから変更できた。 設定をミスしてどうにもならなくなった場合、セキュリティ機能を停止するには、 https://wiki.jenkins-ci.org/display/JA/Disable+security に書いてある通りに <useSecurity> を false にしてもダメで…。 <authroizationStrategy>や<securityRealm>をコメントアウトすることで、無効化できた。 Ubuntu のパッケージからインストールした場合、/var/lib/jenkins/config.xml が設定ファイル。
ちまたで人気の Composer を試してみた。 http://getcomposer.org/ だが、pear 経由では PHPUnit がインストールに失敗する。もしかしたら Composer の不具合かもしれないが、どうやら PHPUnit のpear の管理情報 (packages.json) に問題(?)があるらしい。 https://gist.github.com/2433139 を参考にして、インストールしてみた。 composer.json: リポジトリをローカル指定し、url の先に PHPUnit 用の packages.json を配置する。 { "repositories" : [ { "type" : "composer", "url" : "file:///path/to/repositories/phpunit" } ], "require" : { "pea
dbdeploy 並みにシンプルで、PHP でわりと汎用的に使えるマイグレーションツールはないかと探しているところ。 初めは、 http://www.ryuzee.com/contents/blog/4268 を参考に Doctrine1 を試してみたのだが、ORM用ファイルがたくさん生成されるのが気に入らなかった。また、Doctrin1 独特の制約もあり、イマイチ使いづらい感じがした。 ググってみたら、PHP のマイクロフレームワーク Silex で使うと良さそうなDBマイグレーションツールを見つけた。 https://github.com/davedevelopment/phpmig http://davedevelopment.co.uk/2011/11/01/phpmig-simple-migrations-for-php.html DB接続に Doctrine の DBAL や
久々に Google グループを読んで知ったのだが、Vagrant 用に公式の Ubuntu 12.04 ベースBOX が出たらしい。 http://files.vagrantup.com/precise32.box http://files.vagrantup.com/precise64.box vagrant 1.0.3 より古いバージョンは不具合があってネットワークがうまく設定できないらしい。 「puppet 動かないよ」という報告があったりしたので、ベースBOXにも不具合が残っているかもしれない。 Wiki: https://github.com/mitchellh/vagrant/wiki/Available-Vagrant-Boxes
Windows 上で vagrant を利用しているのだが、バージョン1.0 が公開されても、相変わらず vagrant ssh が使えないのが結構面倒。 Windows では、ssh クライアントが入っていたとしても、以下のようなメッセージが表示され、 vagrant ssh が通らない。これはMinGW 環境でも同様。PuTTY などの利用を想定しているためだろう。 $ vagrant ssh `vagrant ssh` isn't available on the Windows platform. You are still able to SSH into the virtual machine if you get a Windows SSH client (such as PuTTY). The authentication information is shown belo
http://d.hatena.ne.jp/mikeda/20090228/1235839592 より、浮動小数点数(float型)を文字列に変換する場合、printf(), spfintf()を使おう。 結果が意図した書式にならない場合(科学表記)になることがある。 <?php $f = 0.00001; echo $f, "\n"; # => 1.0E-5 echo sprintf('%f', $f), "\n" # => 0.00001 echo sprintf('%E', $f), "\n" # => 1.000000E-5 整数を使っているつもりでも、大きな数値の場合は、浮動小数点数に切り替わっていることもあるので、要注意。
Debian や Ubuntu では通常、dpkg-reconfigure を使ってタイムゾーンの設定をするのだが、設定変更を対話的に行わずにコマンド実行のみで完結したい。-f オプションをつけるといいみたい。 root 権限で、 echo "Asia/Tokyo" > /etc/timezone dpkg-reconfigure -f noninteractive tzdata sudo を使うなら、 echo "Asia/Tokyo" | sudo tee /etc/timezone sudo dpkg-reconfigure --frontend noninteractive tzdata Chef などで設定の自動化をするときに役立ちそう。
自分で作成した Debian 6.0 (squeeze) のベースBOX を作成したのだが、 Debian パッケージの更新 VirtualBox Guest Addition の更新 Chef の更新 を度々手動で行うのが面倒くさくなった。自動実行したいので、lucid64.box 内の postinstall.sh スクリプトを参考に自分で作ってみた。それを vagrant up で更新 vagrant package で BOX 作成 vagrant box add で新規 BOX を追加 の流れができればしめたもの。 bin/provision.sh #!/bin/sh #Updating the box apt-get -y update apt-get --force-yes -y upgrade apt-get -y install linux-headers-$(uname
PostgreSQL の様な本格的なデータベース管理ソフトは、インストールした後の操作が厄介。 opscode のクックブック集にある database ( https://github.com/opscode/cookbooks/tree/master/database )は、PostgreSQL 以外にも対応した汎用的なDB操作を集めたクックブック。PostgreSQL のほかに MySQL や SQL Server に対応している。これを使えば、比較的に簡単にデータベースやユーザを作成してくれる。 bar というデータベースを作成するなら以下のようなレシピを作成すればよい。 include_recipe "build-essential" include_recipe "postgresql::server" include_recipe "database" postgresql_
CakePHP 2.0 で、簡易的ではあるが PDF を作成する方法を2つ試してみた。 View (PdfViewクラス) を作成する方法 View レイアウト (pdf.ctp) を作成する方法 [オススメ] HTML から PDF が生成できるのであれば、CakePHP の View の変更で HTML/PDF を切り替えできれば便利なのではないかと考えた。例えば、プレビュー時は HTML で、最終的には PDF で出力するなどの機能が作れる。 http://d.hatena.ne.jp/okinaka/20101019/1287454452 で、mPDF を使って PDF を作成することを確認した。 mPDF の設定 2つの方法ともに、とりあえず mPDF が使えるようにする必要がある。 http://www.mpdf1.com/mpdf/download から最新の mPDF をダ
Debian squeeze 上で、nginx をフロントサーバとして、プロクシ経由で Jenkins を動作させたい。 https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu を参考に、サクッと Jenkins をインストールする。 http://localhost:8080/ にアクセスすると、動作していることが確認できる。 http://localhost:8080/jenkins と、プレフィックスをつけるように設定(--prefix=/jenkins)を追加した。 /etc/default/jenkins JENKINS_ARGS="--prefix=/jenkins --webroot=/var/run/jenkins/war --httpPort=$HTTP_PORT --ajp13Po
http://www.vagrantup.com/ とても素晴らしいコンセプトで、手放せなくなりつつある Vagrant。ネタにしてもいまいち反応が薄いのはなぜだろう?とりあえず、思いつくものを列挙。 知名度が圧倒的に低い。 VMWare に対応していない。 Chef や Puppet はハードルが高い。 まだまだ不安定。デグレードも頻繁。 私が Vagrant という名前を知ったのは去年の今頃で、試し始めたのは半年前からなので、あまり偉そうなことは言えないのだが、一番悩ましいのは、まだちゃんと動いてくれないことw Linux や MacOS X なら比較的安心して利用できるのだが、Windows での完全な動作は期待しない方がいい。(例えば Windows で vagrant ssh が使えないのは仕様だしw) バージョンアップで不安定になることもよくある。複数の製品を組み合わせている関
CakePHP 1.3 では、何でも App::import() 関数を使ってライブラリを読み込んでいたが、CakePHP 2.0 は、若干手が加えられている。 App::import() は、引き続き利用可能ではあるが、新たに App::uses() 関数が追加された。ネーミング的に前バージョンまでよく利用されていたグローバル関数 uses() と似ているが、仕様が異なるため注意が必要。 App::uses() この App::uses() 関数は、クラスの読み込みを専門としている。読み込みたいものの多くはクラスだから、通常この関数を使って読み込むといいはず。クラスではないライブラリの場合は、今まで通り App::import() 関数を利用することになる。 http://book.cakephp.org/2.0/en/core-utility-libraries/app.html#lo
目的 別々に 2つの Git リポジトリがある。この2つを統合して一つのリポジトリにしたい。これらは元々同一のソースコードを管理しているものなのだが、リポジトリとして作成された時期が異なり、別々に存在していた。 経緯 ソースコードの運用者が変わったことで、一時的に VCS を利用していない期間があった。 Subversion で管理していた期間 (前々任者) VCS を何も使用していない期間 (前任者) Git で管理している期間 (現在) 我々が Git を使い始めたときには、古い Subversion のリポジトリは手に入らなかったため、最新のソースを元に新規のリポジトリとして管理を開始した。後に Subversion リポジトリが Git 形式に変換された形で手に入ったため、2つのリポジトリを統合しようということになった。 手順 http://d.hatena.ne.jp/gnarl
Vagrant の有用性については、Vagrant で開発環境構築を自動化しよう で、熱く語ってみたのだが、一つだけ足りない機能があった。それは、仮想サーバのひな形であるベースBOXの作成は自動化されておらず、Vagrant に必要な環境を整えるのは意外と面倒なことであった。 veewee は、Vagrant の ベースBOX を自動作成するためのツール。vagrant コマンドのプラグインとして動作する。ディストリビューションが配布しているインストールイメージを元に完全に自動で Vagrant の仮想サーバとして必要な環境を作成してくれる。 今回は、 MacOS X 10.6 VirtualBox 4.1.0 vagrant 0.8.6 veewee 0.2.0 で動作を確認してみた。 インストールや使い方は、 https://github.com/jedi4ever/veewee の
元ネタはこちら、http://oshiete.chance.com/qa6564701.html イベントが空っぽだと寂しいのでGoogleカレンダーの日本の祝日を表示してみた。 前月、次月に移動するボタンも追加した。 <html> <head> <link rel='stylesheet' type='text/css' href='../fullcalendar/fullcalendar.css' /> <link rel='stylesheet' type='text/css' href='../fullcalendar/fullcalendar.print.css' media='print' /> <script type='text/javascript' src='../jquery/jquery-1.5.2.min.js'></script> <script type='t
Vagrant 関連を一通りマスターしたところで、そろそろ Chef の調査を再開しようと思う。 以前、PHP をインストールするところまでやった。 http://d.hatena.ne.jp/okinaka/20110705/1309830735 今回は、Apache の VirtualHost の設定を行う。 Opscode の apache2 用 cookbook に仕組みが用意されているので、これを利用することにした。 VirtualHost の設定は、Webアプリケーション特有のものになるため、独自の cookbook を用意する。仮に myproj という名前で作成してみた。 $ cd /var/chef-solo $ rake new_cookbook COOKBOOK=myprojapache2 の cookbook から VirtualHost のテンプレートファイルをコ
Scientific Linux 6.1 のベース BOX を自分で作成してみた。 http://docs-v1.vagrantup.com/v1/docs/base_boxes.html まずは VirtualBox 上で VM を作成する。そして、vagrant package コマンドでパッケージ化する。 以下から、最新のインストールDVDイメージをダウンロードしてくる。 http://www.scientificlinux.org/ VirtualBox の画面から仮想マシンの新規作成 名前 vagrant-sl6 OS Linux バージョン RedHat メインメモリ 512 MB チップセット PIIX3 オーディオ 無効 USB 無効 ネットワーク NAT ストレージ(HDD) 80GB (動的拡張VMDK形式) ストレージ(CDROM) インストールDVDイメージを割り当
Vagrant をインストールした後は、 公式サイト上に Ubuntu 10.04 のイメージが用意してあるので、 これをもとに仮想マシンを起動してみた。 実行環境は、Mac OS X 10.6。 vagrant box add base http://files.vagrantup.com/lucid32.box mkdir test cd test vagrant init vagrant up本来ならこれで VM が利用できるようになっているはずだが、 MacOS Xではなぜか、SSHで接続できない。 [default] Failed to connect to VM! Failed to connect to VM via SSH. Please verify the VM successfully booted by looking at the VirtualBox GUI.仕
CentOS 5.6 に Chef-Solo をインストールしてみた。 http://wiki.opscode.com/display/chef/Installation+with+RubyGems の通り。 CentOS 5 の標準の Ruby バージョンは 1.8.5 と古いため、最新版の RubyGems がインストールできないとのこと。RubyGems 経由でインストールするためには、Ruby 1.8.7 以上が必要。 システム要件: http://wiki.opscode.com/display/chef/Installation#Installation-SystemRequirements Git をインストールするために EPEL 設定 rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-relea
世間では、それほど注目されていないようだが、Vagrant というとてもすばらしいツールがあることを知った。実は同様のツールを自作しようとしていたが、このツールにすべて機能がそろっていた。 Vagrant とは Vagrant は、Ruby で組まれたスクリプトで、仮想マシン上の開発環境の構築・配布の自動化を支援するためのツール。仮想マシン環境(VirtualBox) と構成管理ツール(Chef, Puppet)を利用することで実現している。これを使えば、コマンド一つで、開発に必要な環境を用意できるようになる。 Vagrant: http://www.vagrantup.com/ 日本語の記事: http://docs.komagata.org/4673 物理マシン上での開発の悩み 実際に、開発環境を用意するとなると結構な手間がかかってしまう。しかも、開発者が複数いる場合は、各自に同じ作業
FullCalendar で、曜日やイベントの色を指定してみた。今回、FullCalendar 1.5.1 が前提。古いバージョンの場合、指定方法が異なる場合がある。 曜日の色を指定する 土曜日や日曜日などは色を変えたい。CSS を指定すればよい。 .fc-sun { color: red; } /* 日曜日 */ .fc-sat { color: blue; } /* 土曜日 */ イベントの色を指定する (その1) CSS でクラス名を指定して色を変更する。以下では、クラス名 fooEvent に対して、文字と背景の色を指定している。 fooEvent, fooEvent .fc-event-skin { color: black; background-color: yellow; border-color: yellow; } イベントの色を指定する (その2) FullCalen
次のページ
このページを最初にブックマークしてみませんか?
『エンジニアきまぐれTips』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く