MacBook Airを買った
買っちゃいました。酔った勢いで。11インチのやつを。
いままで勉強会に参加するときとか外出時はネットブック(VAIO W)を使ってたけどスペックや重量に不満があって、それについ最近おしごとでiPhoneアプリつくりはじめてて、そこへきてのMacBook Air発売なもんで値段もリーズナブルだし買っちゃうか!と。正直買わない理由がなかった。
初めてのMacだけど思ってたほど戸惑いなく使えてます。Ubuntuで非Windows環境にそこそこ慣れてたせいかもしれません。
今日一日持ち歩いてみたけど重量的には全く負担ないです。バッテリーの持ちもいいし、閉じてスリープ開いて復帰な運用が快適で、もう非の打ち所がないんだけどどうしよう。
いまのところインストールしたものは以下の通り。
ずっと憧れてたおしゃれ通知ソフトGrowlがやっと使える!あと夜フクロウが気になってるのであとでいれてみる。
最後にちょっと気になってることなど。
いまのところいちばんの問題が、なぜか無線LANが繋がりにくいこと。アクセスポイント自体は認識してるのに、接続がタイムアウトしてしまう。同じ環境でVAIO Wは繋がるのに。何度か試すと繋がるので何とかなってるけど。
それとMacPortsでのパッケージのインストールにとても時間かかるのがびっくりした。
総じて特に問題なく快適に使えてるので、買って三日ですが大変満足しています。
ということで
Macデビューしました!
IO_SWFをラップしてSWFをいじるクラスを書いた
GREE Engineers' Blogで連載中の「SWFバイナリ編集のススメ」を参考にIO_SWFを使ってSWFをいじってみたけど、わりとローレベルな知識や操作を要求されるのでそのへんを簡単にできるようにしてみた。
JPEG以外の画像の処理はかなりあやしいので今後の連載の解説をもとにアップデートする予定。
動作環境確認をコマンドラインで
動作環境確認用のcheck.phpはコマンドラインでも動くみたい
$ php web/check.php ******************************** * * * Symfony requirements check * * * ******************************** php.ini used by PHP: /etc/php5/cli/php.ini ** WARNING ** * The PHP CLI can use a different php.ini file * than the one used with your web server. * If this is the case, please ALSO launch this * utility from your web server. ** WARNING ** ** Mandatory requirements ** OK Checking that PHP version is at least 5.3.2 (5.3.2-1ubuntu4.5 installed) OK Checking that the "date.timezone" setting is set OK Checking that cache/ directory is writable OK Checking that the logs/ directory is writable ** Optional checks ** OK Checking that the PHP-XML module is installed OK Checking that the token_get_all() function is available OK Checking that the mb_strlen() function is available OK Checking that the iconv() function is available OK Checking that the utf8_decode() is available OK Checking that the posix_isatty() is available [[WARNING]] Checking that that a PHP accelerator is installed: FAILED *** Install a PHP accelerator like APC (highly recommended) *** [[WARNING]] Checking that php.ini has short_open_tag set to off: FAILED *** Set short_open_tag to off in php.ini *** OK Checking that php.ini has magic_quotes_gpc set to off OK Checking that php.ini has register_globals set to off OK Checking that php.ini has session.auto_start set to off ** Optional checks (Propel/Doctrine) ** OK Checking that PDO is installed OK Checking that PDO has some drivers installed: mysql, pgsql, sqlite, sqlite2 [[WARNING]] Checking that XSL module is installed: FAILED *** Install the XSL module (recommended for Propel) ***
あ、なんか警告でてる...
Symfony2事始め
こんどのPHP MatsuriではSymfony2で何か作ろうと思うので、その下調べ。
ちなみに環境はUbuntu.10.04 & PHP 5.3.2。
Quick Tourに沿ってすすめていく。
http://docs.symfony-reloaded.org/quick_tour/index.html
とりあえず作業ディレクトリを用意。
$ cd ~/public_html $ mkdir symfony2 $ cd symfony2
sandboxをダウンロード、展開。
$ wget http://symfony-reloaded.org/downloads/sandbox_2_0_PR3.tgz $ tar xvfz sandbox_2_0_PR3.tgz
「sandbox」というディレクトリができる。
動作環境チェック。
http://localhost/~okonomi/symfony2/sandbox/web/check.phpにアクセス。
php.iniのdate.timezoneの設定と、ログとキャッシュディレクトリのパーミッションでエラーが出たので対応。
$ sudo vi /etc/php5/apache2/php.ini [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = Asia/Tokyo ; <- 追記 $ sudo /etc/init.d/apache2 restart $ chmod 777 hello/cache hello/logs
ぜんぶチェックが通ったので、いよいよhttp://localhost/~okonomi/symfony2/sandbox/web/index_dev.phpにアクセス。
「Congratulations!」ていうメッセージが表示されればひとまずOKらしい。
ひとまずここまで。現時点で分からないことは
- ファイル構成
- Bundleって?
- 1.xのときにあったmoduleはどこへ?
といったところ。少しずつ理解していこう。
いままでPEARのコマンドにショートカットがあるのを知らなかった
PEARコマンドって
$ pear install ほげほげ
とか
$ pear list-upgrades
とか打ちますが、まあこれで別に疑問に思わなかったんですが、何気なくヘルプを見たら
$ pear help Commands: 〜省略〜 Usage: pear [options] command [command-options] <parameters> Type "pear help options" to list all options. Type "pear help shortcuts" to list all command shortcuts. Type "pear help <command>" to get the help for the specified command.
ん、「pear help shortcuts」!?
$ pear help shortcuts Shortcuts: b build bun bundle c2 convert ca channel-add cc clear-cache cd cvsdiff cde channel-delete cg config-get ch config-help cha channel-alias ci channel-info cli channel-login clo channel-logout coc config-create cs config-set csh config-show ct cvstag cu channel-update d download da download-all di channel-discover fl list-files i install in info l list la list-all lc list-channels li login lo logout lu list-upgrades p package pd package-dependencies pi pickle pv package-validate ri remote-info rl remote-list rpm makerpm rs run-scripts rt run-tests si sign sp search st shell-test sv svntag ua upgrade-all uc update-channels un uninstall up upgrade
おおお
$ pear lu Channel pear.ethna.jp: No upgrades available Channel pear.php.net: No upgrades available
おおおお
というわけでもう「install」とか「upgrade-all」とかだらだらと入力する日々にはさよならして、これからはもっと有意義な人生を送ろうと思います。
DB接続設定を連想配列で
ひさしぶりにEthnaで小ネタ。
etc/sample-ini.php
<?php $config => array( //...snip... // @see http://pear.php.net/manual/ja/package.database.db.intro-connect.php 'dsn' => array( 'phptype' => 'mysql', 'username' => 'rw_user', 'password' => 'password', 'hostspec' => 'master', 'database' => 'database', ), 'dsn_r' => array( array( 'phptype' => 'mysql', 'username' => 'ro_user', 'password' => 'password', 'hostspec' => 'slave1', 'database' => 'database', ), array( 'phptype' => 'mysql', 'username' => 'ro_user', 'password' => 'password', 'hostspec' => 'slave2', 'database' => 'database', ), ), //...snip... ); ?>
app/Sample_Controller.php
<?php class Sample_Controller extends Ethna_Controller { //...snip... // @override function _prepareDSN() { $r = array(); foreach ($this->db as $key => $value) { $config_key = "dsn"; if ($key != "") { $config_key .= "_$key"; } $dsn = $this->config->get($config_key); if (is_array($dsn) && is_int(key($dsn))) { // 種別1つにつき複数DSNが定義されている場合はアクセス分岐 $dsn = $this->_selectDSN($key, $dsn); } $r[$key] = $dsn; } return $r; } //...snip... } ?>
Ethna_Controller::_prepareDSN()をオーバーライドして、DSNが配列だったときの判定を追加。(「is_int(key($dsn))」のところ)
Openpearをローカルで動かす(未完)
id:cocoitiさんのエントリを参考に、Openpearをローカルで動かしてみました。
openpear いれてみた - 個々一番のHTTP通信
作業環境はこんな感じです。
作業ディレクトリからweb公開ディレクトリにシンボリックリンクはって、http://localhost/~okonomi/openpear/みたいなURLでアクセスできるようにします。
あと、あらかじめMySQLでデータベースを作っておきます。今回はこんな感じで。
それとrhacoはPDOでデータベースアクセスするので、これもインストールしておきます。
sudo aptitude install php5-mysql
さて、まずはclone。
cd ~/work/github git clone git://github.com/nequal/Openpear.git ln -s ~/work/github/Openepar ~/public_html/openpear
githubからソース落としてきて、シンボリックリンクはります。
次に初期設定。
cd Openpear
mkdir work
php setup.php
core path[/home/okonomi/work/github/Openpear/core/]:
install application:
application url [http://localhost/Openpear]: http://localhost/~okonomi/openpear
working directory [/home/okonomi/work/github/Openpear/work/]:
application mode: dev
setup.phpをCLIで実行します。いろいろ聞かれます。
- install application
- ?
- application url
- 公開するURL?
- working directory
- ここにログとかが出力されるみたい
- application mode
- devにするとworking directoryにログが出力されたりする?
次は設定。
__settings__.phpに、__settings__.php.defaultを参考にDB接続設定を書いておきます。
<?php // DB Settings def("org.rhaco.storage.db.Dbc@org.openpear.flow.parts.Openpear", "type=org.rhaco.storage.db.module.DbcMysql,host=localhost,dbname=openpear,user=root,password=,encode=utf8");
最後に作業ディレクトリのパーミッションを調整します。
apacheの実行ユーザーが書き込めるようにしておくと、はじめてOpenpearにアクセスした時に必要なパッケージを自動的にインストールしてくれます。
chgrp -R www-data . chmod -R g+w .
http://localhost/~okonomi/openpear/にアクセスしてページが表示されたら成功!
あと、
php setup.php -log on -level debug
ってしとくとwork/logにログが出力されました。
今のままだとほかのページを見ようとすると404になってしまうので、mod_rewriteの設定をします。
php setup.php -htaccess /~okonomi/openpear
で.htaccessが生成されます。これで他のページも見られるはず。
これでとりあえずページを見ることはできるようになりました。
まだユーザー登録できない状態なので、次はここを解決しないとなー。
解決できたらまた書きます。