MAMP with homebrew 2

前のエントリ bmblog: MAMP with homebrew に引き続いてPHPのインストール。
PHPはあらかじめFormulaが用意されていない。
が、野良のFormulaがあるのでそれを元にインストールしてみる
インストール

$ brew install https://raw.github.com/adamv/homebrew-alt/master/duplicates/php.rb --with-mysql --with-pgsql --with-apache --with-intl

足りないconfig optionはここで追加する。
gettextなど依存しているパッケージをいくつか入れるので、多少時間がかかる。
CLIの実行のためのPATHの追記
普通にコマンドラインからphpを実行するとOSXにプリインストールされているphpを呼んでしまう

$ which php
/usr/sbin/php

そのため、PATHを書き換える
~/.bash_profileに以下を追記

export PATH=/usr/local/bin/php:$PATH
$ which php
/usr/local/bin/php
$php -version
PHP 5.3.8 (cli) (built: Sep  5 2011 15:43:55)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies

httpd.confへの追記
apacheからPHPを呼ぶようにhttpd.confを修正
/usr/local/Cellar/httpd/2.2.20/conf/httpd.conf に以下を追記

LoadModule php5_module    /usr/local/Cellar/php/5.3.8/libexec/apache2/libphp5.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

apacheに設定ファイルを読み込ませる

$ /usr/local/Cellar/httpd/2.2.20/bin/apachectl graceful
httpd: Syntax error on line 285 of /usr/local/Cellar/httpd/2.2.20/conf/httpd.conf: Cannot load /usr/local/Cellar/php/5.3.8/libexec/apache2/libphp5.so into server: dlopen(/usr/local/Cellar/php/5.3.8/libexec/apache2/libphp5.so, 10): Symbol not found: _ap_loaded_modules\n  Referenced from: /usr/local/Cellar/php/5.3.8/libexec/apache2/libphp5.so\n  Expected in: /usr/local/Cellar/httpd/2.2.20/bin/httpd\n in /usr/local/Cellar/php/5.3.8/libexec/apache2/libphp5.so

エラーが出て、PHPがアクティブにならず。
その後いろいろ試すもこのエラーが消えず。
apacheを同じソースから手でコンパイルして見たらうまくいったので、原因はphpでなくapacheにある様子。homebrewがコンパイル時に何か悪さをしているようだ。
apacheを手でコンパイル
homebrewがダウンロードしたソースは
~/Library/Caches/Homebrew
にキャッシュされている

$ cd ~/Library/Caches/Homebrew
$ tar xvzf httpd-2.2.20.tar.gz
$ ./configure -enable-shared=max --enable-rewrite --prefix=/usr/local/Cellar/httpd/2.2.20
$ make
$ make install

でコンパイル。
httpd.confを上述のように書き換えたら無事に起動し、phpも実行された。
homebrewさんお手製のhttpdの何が悪いのかは、後日調査。

Read More

MAMP with homebrew

メインのmacをSnowLeopard(10.6)からLion(10.7)にアップデートして以来、起動が遅い、すぐにレインボーボールが出るなどで散々だったのを昨夜”えいやっ”とクリーンインストール。
クリーンインストールのやり方はこちら。
Creating a bootable OS X 10.7 Lion USB stick and DVD
しかし、買ったOSのインストールすら個人blogたどって裏口っぽいやり方をいないといけないのはどうも住み心地の悪い世の中になった。
せっかくなので、パッケージ管理をMacPortsからHomebrewに移行してみた。
使い方メモ。
homebrewで管理するにはXcodeがインストールされている必要あり。
homebrew自体はxcodeに依存しないが、homebrewがパッケージをコンパイルするときに必要になる。
Homebrewのインストール

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"

これだけ。

Homebrewのアップデート

$ brew update

気が向いたときに。
Formula
HomebrewはFormulaと呼ばれるパッケージコンパイルのためのメタ情報を使ってパッケージ管理を行っている。実態はrubyのスクリプト。
Formulaは
/usr/local/Library/Formula/
以下に置かれる。
Mysqlのインストール
mysqlは上のディレクトリにFormulaが存在するので

$brew install mysql

でインストール可能。
インストール時の表示にそってinitdb等を行う

$ unset TMPDIR
$ mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

サーバの起動は
$ mysql.server start
もしくは
$ /usr/local/Cellar/mysql/5.5.14/bin/mysqld_safe &
サーバの停止は
$ mysql.server stop
起動が確認できたら /etc/my.ini を記述。
apache2.2のインストール
apacheはFormulaが用意されていないので自作する。
と言っても簡単。
大元のソースのURLを調べる
今回はこちら: http://ftp.kddilabs.jp/infosystems/apache//httpd/httpd-2.2.20.tar.gz
Formulaのひな形を作る

$ brew create http://ftp.kddilabs.jp/infosystems/apache//httpd/httpd-2.2.20.tar.gz

/usr/local/Library/Formula/httpd.rb が作られ、エディタ($EDITOR)で開かれる。

require 'formula'
class Httpd < Formula
url 'http://ftp.kddilabs.jp/infosystems/apache//httpd/httpd-2.2.20.tar.gz'
homepage ''
md5 '4504934464c5ee51018dbafa6d99810d'
# depends_on 'cmake'
def install
system "./configure", "--disable-debug", "--disable-dependency-tracking",
"--prefix=#{prefix}"
# system "cmake . #{std_cmake_parameters}"
system "make install"
end
def test
# this will fail we won't accept that, make it test the program works!
system "/usr/bin/false"
end
end

homepage とconfigureのところを書き換える
(homepageのところは書き換えなくても良い)

require 'formula'
class Httpd < Formula
url 'http://ftp.kddilabs.jp/infosystems/apache//httpd/httpd-2.2.20.tar.gz'
homepage 'http://httpd.apache.org/'
md5 '4504934464c5ee51018dbafa6d99810d'
# depends_on 'cmake'
def install
#system "./configure", "--disable-debug", "--disable-dependency-tracking",
#                      "--prefix=#{prefix}"
system "./configure", "-enable-shared=max", "--enable-rewrite", "--prefix=#{prefix}"
# system "cmake . #{std_cmake_parameters}"
system "make install"
end
def test
# this will fail we won't accept that, make it test the program works!
system "/usr/bin/false"
end
end

Formulaが出来たら、mysqlと同様にコンパイル。

$brew install httpd

PHPのコンパイルについてはそのうちに。
MacPortsはあれもこれも入れてくれちゃってぐちゃぐちゃになるのでHomebrewの方がわかりやすい。

Read More

ダイナースクラブ フランス レストランウィークマップ

たろちゃんのサイトでふと見つけたエントリ
ダイナースクラブ フランス レストランウィークのFacebookページができました | TAROSITE.NET
がbmが使ってるカードのものだったのでLikeしたあとなんとなく眺めていたら、オフィシャルサイトのレストラン一覧がExcel打ち出しただけのPDFで残念な感じでした。
市区町村でソートされているわけでもないので、これじゃどこか行こうと思っても選べないじゃん。
と思ったので、仕事の合間の現実逃避がてら、地図に起こしました

データは関東地方のものだけ。
ドラッグするとレストランのプロットが追随します。
PDFをパースして表をテキストに落として正規表現でざっとデータを抜いてgoogleでジオコーディングして作ったデータなので嘘が含まれてる可能性高し。内容無保証。
firefox,safari,chromeでざっと動作確認しました。
IEで動くかはわかりません。
すてきなレストラン見つけて下さい。
どれかにbmを連れて行きたい人も大歓迎です。
しかし、ひらまつがディナー5000円で出しちゃって良いのかしら。
地図サービス単体は
http://frw2011.totoro.ws/
にあります。

Read More

taking screenshot of Android 3.0

AndroidはiOSのように本体のボタンでスクリーンショットが撮れない。
以下、Android OS 3.0でのスクリーンショットの撮り方。
結論から言うと、やり方はAndroid 2.xと同じ

端末をPCにつなぐ

USBで、いつも通り。

 

USB debugを許可

settingパネルから Applications を表示
taking screenshot on Android 3.0
“Development”をタップ
taking screenshot on Android 3.0
USB debuggingをタップしてチェック。

DDMSからスクリーンショットを撮る

ターミナルからandroid SDKのddmsを起動。

$ ddms

pathが通っていなければ

$ /Developer/ddms

taking screenshot on Android 3.0
メニューの “Device” -> “Screen Capture”
taking screenshot on Android 3.0
“save”ボタンでスクリーンショット保存。
taking screenshot on Android 3.0
アプリ起動中も。
この記事もその方法で作成。
追記
本体だけでscreen shotを撮る方法発見
taking screenshot on Android 3.0
Settingの Application メニューで”Screenshot”をenableに。
これで、左下のApplication Historyボタン長押しでスクリーンショット取得可能に。

(さらに…)

Read More

Eclipseでandroid開発環境構築 (Mac OSX)

eee pad transformerを購入したので開発環境構築
eee pad transformer

Eclipseをインストール

Eclipse Downloadsから Eclipse IDE for Java Developers または Eclipse Classic をダウンロード。
ダウンロード完了したらダブルクリックして展開し、できたeclipseフォルダをApplication(アプリケーション)フォルダにドラッグして移動。

SDKインストール

1. Android SDK | Android DevelopersからプラットフォームごとのSDKをダウンロード。Macの場合は現在 android-sdk_r11-mac_x86.zip
ダブルクリックして展開し、できた android-sdk-mac_x86 フォルダを/Developerフォルダに移動
2. toolsフォルダにパスを通す
ホームディレクトリの.bashrc もしくは .bash_profile に以下を追記

export PATH=$PATH:/Developer/android-sdk-mac_x86/tools

PATHを通す

$ source ~/.bashrc

もしくは

$ source ~/.bash_profile

Android Managerを起動してみる

$ android

EclipseにADTをインストール

1. Eclipseを起動
2. ADTインストール
メニューの Help(ヘルプ) -> Install New Software(新規ソフトウェアのインストール)
ADT on Eclipse
右上のAdd ボタンクリック
ADT on Eclipse
Name: ADT plugin (何でもよい)
Location: https://dl-ssl.google.com/android/eclipse/ (httpsでうまくいかなかったらhttpで。)
後は適当にNext押しまくってインストール

ADT アップデート

ターミナルから

$ android update sdk

ADT on Eclipse
“Accept All”していろいろアップデート
これで一通り完了。

Read More

install older version of mac ports package

macportsでPHP5のAPCをインストールしたら、以下のエラーで動かなかった。
Fatal error: Unknown: apc_fcntl_unlock failed: in Unknown on line 0
ググってみるとどうやらAPC 3.1.8のバグらしい。
というわけで3.1.7にダウングレード。
古いバージョンのパッケージの入れ方、オフィシャルページに書いてある
howto/InstallingOlderPort – MacPorts
けれど少々面倒なのでメモ。

インストールされているバージョンの確認

$ port installed php5-apc
The following ports are currently installed:
php5-apc @3.1.8_0 (active)

インストールしたいバージョンのパッケージのrevisionを確認

/trunk/dports – MacPorts
ここからパッケージのパッケージを探す
APCは php5-apc
右肩の”Revision Log”からインストールしたいバージョンのrevision番号を見つける
/trunk/dports/php/php5-apc (log) – MacPorts
php5-apc_3.1.7_log
3.1.7は 75420

いざインストール

前のページ(*)に戻って、Portfileをクリック。
遷移先ページ下部の “Original Format”からPortfile ファイルをダウンロード。
ターミナルでダウンロード先のディレクトリに移動

$ cd ~/Downloads

先ほど調べたバージョンのpackageをsubversionでcheckout

$ svn co -r 78666 http://svn.macports.org/repository/macports/trunk/dports/php/php5-apc

(/dpors/ 以下はパッケージごとに異なる。 PortfileダウンロードしたページのURL参照)
portコマンドでインストール

$ cd php5-apc
$ sudo port install

インストールしたバージョンをactivate

今activeなバージョンをdeactivate

$ sudo port deactivate php5-apc@3.1.8_0

インストールしたバージョンをactivate

$sudo port activate php5-apc@3.1.7_0

apacheを再起動

$ sudo /opt/local/apache2/bin/apachectl graceful

Read More

[Flash] “SecurityError: Error #2000: アクティブなセキュリティコンテキストがありません。” への対処

ActionScript3でファイルのロードなどをしていると出くわすエラー
SecurityError: Error #2000: アクティブなセキュリティコンテキストがありません。
player10.1までは出なかった(気がする)が10.2にすると出てくる。
原因はエラー処理をサボっていること。

public function setPhoto(filename:String):void{
var loader = new Loader();
var urlreq:URLRequest = new URLRequest('./images/test.jpg');
var loaderInfo:LoaderInfo = imageLoader.contentLoaderInfo;
imgInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
imageLoader.load(imageURLreq);
}
protected function onIOError(e:IOErrorEvent): void {
//bra bra bra
}

太字の部分がポイント。
Flashもどんどんうるさくなってくる。
そんな時代。

Read More

Language Switcher

SnowLeopardになって、アプリケーションごとに言語環境を設定できなくなった。
多言語のアプリを作るときにスクリーンショットが取れなくて困ったぞ、ということでアプリを発見
TJ-HD Software – Language Switcher
Language Switcher
Language Switcher
こんな風にアプリケーションごとに言語を選んで起動することができる.
一度終了して再度起動すると元(OS)の設定に戻ってしまうので、あくまで一時的な変更。
リストアップされるアプリはApplicationフォルダの直下にある物だけだがメニューの”ファイル”->”追加”でその他のアプリも言語環境変更できる。
Language Switcher
なぜかbmのiTunesはもとおりポルトガル語で動いていたらしい。

Read More

LoopVideoのiOS4.2への対応

LoopVideoをiOS4.2に対応させるためにしたこと。
LoopVideoはアプリの起動時に素材をチェックして新しい素材があったらサムネイルを作ったりようにしてる。
iOS4.2になってマルチタスクになったので、今までのアプリの終了はスリープになり、2度目以降の起動がハイバネートに変更された。
そのために”アプリの起動”はiPadの電源を入れた直後1度だけで、このタイミング以降にアップロードされた素材がリストに表示されなくなってしまう。
というわけで試行錯誤。
そもそもLoopVideoはスリープ中、バックエンドで何かするようなアプリではないのでスリープしないようにすることで解決。
その方が無駄なメモリも食わないし。お掃除重要。
アプリをスリープしない用にするにには
info.plistに
“Application does not run in background iPhone”を追加してYESにすればよい。
info.plist
Keyで言うと “UIApplicationExitsOnSuspend”。

<key>UIApplicationExitsOnSuspend</key>
<true/>

これだけ。
(実際のLV1.1.2では別のところも少しずついじってるけど。)
でも、なぜかマルチタスクバーには残ってしまう不思議。
iPad 4.2 screenshot

Read More

InnoDB on mysql 5.1

Mysql5.0まではデフォルトでInnoDBが入ったが、5.1では入らなくなった。
探してみると配布ソースには含まれている。
そのため、InnoDBを使う場合はconfigオプションでInnoDBをアクティブにする必要あり。
–with-innodb オプションは5.1.9以降だとremoveされているのでunrecognizedされてしまう
そのため
–with-plugins=max
をつける

$ ./configure –prefix=/usr/local/mysql5 –with-charset=utf8 –with-extra-char
sets=all –with-plugins=max
$ make
$ sudo make install

でplug-inのInnnoDB組み込まれる
なんでこんな変更されたんだろう
InnoDB、実はあまり使われていない?
トランザクション、不要?
もっと優秀なストレージエンジンができた?

Read More