ついに日本でもiTunes in the Cloudが

ついに日本でもiTunes in the Cloudが始まりました。

これで購入した曲が自動的に全部のデバイスにダウンロードさせることができます。前に買った曲も全部再ダウンロードも。前にiPhoneで曲を購入してMacにうつさずにリストアしたときは泣きそうだったけど(しかもその曲がマルマルモリモリ)、今後はそんなときでも救済されます。

自分でCDから取り込んだ曲もiTunesの曲と結びつけてiTunesで購入したのと同じような状態にしてくれるiTunes Matchという年間25ドルの有料サービスは日本ではまだのよう。日本では権利関係が面倒そうなので相当時間がかかると思っていましたが、iTunes in the Cloudは意外にすんなり始まったのでちょっと期待してしまいます。

iTunesのiTunes Storeの一番右にある「購入済み」のところでこれまでの購入履歴を確認&再ダウンロードできます。(マルマルモリモリも無事再ダウンロードできた)

ちなみに、iOS側での設定は「設定アプリ」から「Store」で「自動的ダウンロード」のところに「ミュージック」というのが追加されているのでこれをオンにします。
それにしてもiTunesではほとんど曲は買っていないと思い込んでいたのに374曲もかっていたとは…。

mysql の utf8_general_ci と utf8_unicode_ci の混在でエラー

Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation ‘=’

というエラーがでてた。

なんだ?と思ったら同じDBにutf8_general_ci と utf8_unicode_ci のテーブルが混在してて、クエリで接続してた。

Geeklog1.4.0, 1.4.1,1.5.0,1.5.1からGeeklog1.5.2にアップグレードする方法によると
utf8_unicode_ciにすると,~や機種依存文字の①②がすべて ? に置き換わってしまいます。
ということなのでutf8_general_ciに統一した。

※今回の問題とgeeklogとは全く関係なし。たまたま上記サイトを見つけただけ。

jquery の click と change

jqueryのclickとchangeでちょっとはまりそうになったのでメモ。

select とか radio とかIEでは click で判定した方がいいらしい。
なので基本全部clickにしてしまえばいいのだけど、selectに関してはGoogle Chrome でclickでは正常に動作しなかった。
なので、こんな感じにした。

  $("select[name=abc]").bind(($.browser.msie ? "click" : "change"), function(){
    doSomething();
  });

ちなみにradioなどその他は

  $("input[name=abc]").click(function(){
    doSomething();
  });

でChromeでも動いた。

CentOS 4.8 に apache2.2をインストールすることにした。
まずは必要になりそうなパッケージをyumで。

yum install openssl-devel

この時点で最新ソースをダウンロードして展開してconfigureしてコンパイル。
configureは既存のapache2.0.52と競合しないようにprefixだけ指定。

wget http://ftp.kddilabs.jp/infosystems/apache/httpd/httpd-2.2.15.tar.gz
tar xvzf httpd-2.2.15.tar.gz
cd httpd-2.2.15
./configure --prefix=/usr/local/httpd --enable-mods-shared=all --enable-ssl=shared --enable-suexec --with-suexec-caller=apache --with-suexec-uidmin=1000 --with-suexec-gidmin=1000 --with-suexec-docroot=/home
make
make install

これで/usr/local/httpd/にインストールされる。
–enable-mods-shared=allにしておけば必要になったときに設定ファイルだけでいつでも追加できる。
–enable-ssl=sharedはallでも入らなかったのでいれた。
suexec関係はバーチャルホストで利用しているのでいれた。

/etc/httpd/conf.d ディレクトリを
/usr/local/httpd/conf.d としてコピー

/usr/local/httpd/conf/httpd.confの修正

User daemon
Group daemon

User apache
Group apache
に変更。

ServerRoot “/usr/local/httpd”
の下あたりに
PidFile /var/run/httpd.pid
を追加。
これは/etc/init.d/httpdの変更をできるだけ少なくするため。

ServerAdmin に指定してあるメールアドレスを適切に変更。

DocumentRoot “/var/www/html”
に変更。どっちでもいいんだけどあまりいろいろ変更したくないので。
それに合わせて



に変更

Include conf.d/*.conf
を追加

下記行のコメントをはずす
Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-languages.conf
Include conf/extra/httpd-default.conf
include conf/extra/httpd-ssl.conf (sslを使ってる場合) ただしこのファイルの
DocumentRoot "/usr/local/httpd/htdocs"
ServerName www.example.com:443
ServerAdmin you@example.com
ErrorLog "/usr/local/httpd/logs/error_log"
TransferLog "/usr/local/httpd/logs/access_log"

このあたりは各バーチャルホストの設定ファイルに書いているのでコメントアウト。

SSLを使ってる場合は
server.keyやserver.crtを/usr/local/httpd/conf内に設置

/etc/init.d/httpd

/etc/init.d/httpd.orgとしてコピー

/etc/init.d/httpd
を変更
apachectl=/usr/sbin/apachectl

apachectl=/usr/local/httpd/bin/apachectl
httpd=${HTTPD-/usr/sbin/httpd}

httpd=${HTTPD-/usr/local/httpd/bin/httpd}

ここでphpを再コンパイルした。というかちょうどアップデートがでていたので最新バージョンをコンパイル。その際configureのオプションで
‘–with-apxs2=/usr/sbin/apxs’
の部分を
‘–with-apxs2=/usr/local/httpd/bin/apxs’
にしてconfigure、make、make installするとちゃんと新しいhttpd.confに
LoadModule php5_module modules/libphp5.so
を追加してくれる。

これだけだとphpはちゃんと動かないのでさらに
AddType application/x-httpd-php .php .phtml
を追加。

以上で設定は全部完了。

/etc/init.d/httpd.org stop
で今動いてる古いapacheを停止。

/etc/init.d/httpd start
で新しいのを起動。

と走り書きしましたが、いつかちゃんと読みやすく成形したいけど今はちょっと時間がなくてやってられないのですみません。必要なかたは頑張って読んでください。

Flash CS5 iPhone FAQ 適当訳

Flash CS5 iPhone FAQ。http://theflashblog.com/?p=1513 誰か翻訳して

とtwitterでつぶやかれているのを見たので適当訳。かなり意訳しているけど本来の意味は崩していないと思います。訂正があったらコメントくれると嬉しいです。

沢山の人がFlash CS5でiPhoneアプリを作るチュートリアルを楽しんでくれて嬉しいよ。予想通り大量の質問がきたので中でも特に多かった質問に答えましょう。

お断り:ここの情報は変わるかもしれないよ。

Flash BuilderでiPhoneアプリが作れるの?

作れるようになるよ。Airみたいにね。コマンドラインでコンパイルもできるよ。SWFファイルとアプリXMLファイルをコンパイラに指定すればIPAファイルができるんだ。

なんで普通のiPhoneアプリよりファイルサイズがでかくなるの?

Flashライブラリもアプリに含まなきゃならないからだよ。将来はできるだけ小さいサイズにしようとは思ってるけど。まあ、でもFlashを使うからには多少普通より大きくなるのは知っておいて。

この方法に適さないアプリはある?

もちろん。ハードウェアアクセラレーションはサポートしてるけど、3Dバリバリのゲームとかは作らないほうがいいね。Infared5が作ったStar Warsゲームみたいなやつとか。そういうゲームはFlashで作らない方がいいと思うよ。

いつ使えるようになるの?

バブリックベータを今年中に出す予定。まだ確定じゃないから細かいことは言えないけど。しかもこの予定も変更する可能性あり。

Adobeは加速度センサーとかをデスクトップでテストする方法を提供してくれる?

うん、デスクトップでiPhoneの機能をテストするいろんな方法を提供したいと思ってる。次のバージョンのDevice Centarlは加速度計とGPSをテストできるようになるよ。でもそれがこのiPhoneアプリ作成用に使えるようになるかは未定。

なんでコンパイルにそんなに時間がかかるの?

いまここでコンパイル中になにが起きてるかとか、なんで遅いかとか細かい話をするつもりはないけど、もちろんできるだけ早くコンパイルできるようにがんばるよ。でも、このコンパイラーはやることがいっぱいあるからしかたないっちゃしかたないんだ。

iPhoneのハードウェアアクセラレーションをどうやって使ってるの?

cacheAsBitmapに似てる新しいAPIがあってそれが拡大縮小、回転、3D、透明度の変化とかがあったときにGPUにdisplay objectをキャッシュしてくれたりするんだ。まだ実際のAPIは変更されたりするからまだ細かいことは書けないんだけどね。

もうちょっと詳細を知ることはできない?

Mike Chambersがもっと細かいスライドをもってるから、ダウンロードしてみてよ。きっと疑問を解消してくれるよ。

これってもうiPhone用のFlashはつくらないってこと?

もちろんそんなことはないよ。これからもFlash PlayerをiPhoneにのせるよう努力するよ。でもそうするにはAppleの協力が必要なんだよね。

Lee

Symfony と WordPressの連携の際に重なってしまう関数

Symfony と WordPressの連携の際に重なってしまう関数として esc_js()がある。

Symfonyのコアファイルのlib/helper/EscapingHelper.phpで定義されている。

これをdefine(‘ESC_JS’, ‘esc_js’);とともにコメントアウトしてしまえば大丈夫なのだけど、こうするとコアファイルをいじることになるので、アップグレードの時に面倒になる。

ほんとはコアファイルに手をいれずに変更できればいいのだけど、EscapingHelper.phpの読み込みはlib/view/sfPHPView.class.phpの44行目あたりの

    $helpers = array_unique(array_merge(array('Helper', 'Url', 'Asset', 'Tag', 'Escaping'), sfConfig::get('sf_standard_helpers')));

で指定されていて、settings.ymlのstandard_helpersで指定しても追加されるだけになってしまう。

と思いきやlib/config/sfApplicationConfiguration.class.phpをみるとgetHelperDirsでhelperを読み込むディレクトリをとってきてる。というわけでプロジェクトディレクトリのapps/front/lib/helper/にEscapingHelper.phpをコピーして該当行をコメントアウトすることで対応できた。

ただ、このファイルがバージョンアップしたときには、ここにコピーし直して同じ作業を擦る必要があるので注意しておかないとまずそう。

symfonyをウェブルートディレクトリではなく、一つ下の階層に入れた場合とかの設定(特にルーティング)のメモ

久々に書きますが、時間がないのでメモレベルで。
いつか時間とニーズがあればWordPressとSymfonyの連携の方法なんかも書いてみたいと思ってます。

たとえば、symfonyをabcというディレクトリに入れたとして、

apps/front/config/factories.yml

inc:
  routing:
    param:
      context:
        prefix:                         '/shop'

のようにして

symfony以外のプログラム(たとえばwordpressとか)では、ファイルの最初に

< ?php
//autoload symfony core class
require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');

sfCoreAutoload::register();
// add autoload my project class
$dir = dirname(__FILE__).'/../';
$sfSimpleAutoload = sfSimpleAutoload::getInstance();
$sfSimpleAutoload->addDirectory($dir);
$sfSimpleAutoload->register();

$configuration = ProjectConfiguration::getApplicationConfiguration('front', 'inc', true);
sfContext::createInstance($configuration);
?>
とかいうのを書いとく。
そうすれば、たとえばテンプレートで
< ?php
echo sfContext::getInstance()->getController()->getPresentationFor('parts','sidebar');
?>

とかしたときに、url_for()とかで指定したリンク先が
/index.php/test/aaa
とかならずに
/abc/test/aaa
となってくれる。

iPhoneフリーズと対応策

iPhoneがフリーズしました。

まぁ、PCみたいなものだからときどきあるのは仕方がないですが、 その再起動方法が分からずちょっと焦ったのでメモ。

前に一度とまったように感じたときは、電源ボタンの長押しで電源がきれたのですが、今回はそれでは切れませんでした。

電源ボタンとホームボタンを同時に長押ししたところ、無事に再起動がかかりました。

どんどん熱くなるし、当然電源も消費していくだろうしでちょっと焦りましたが無事に復旧しました。

iPhoneって何?

iPhoneが好意的に騒がれている一方で、非常に冷めた目で「何がいいのか理解できない」「高すぎる」「足りない機能が多すぎる」「日本の携帯の方が進んでいる」「騒がれているのは今だけ」という意見も多くあるようです。

iPhoneのことを本当に理解しているのは、やはりコンピュータやインターネットを日常的に利用しているある程度詳しい方だけなんだなというのを痛感します。

iPhoneは「iPodが入っているインターフェースの使いやすい携帯」という理解は間違っていると思います。もちろんそういう使い方をする人もいらっしゃるでしょうが、iPhoneの特徴一つはやはりSafariだと思います。このレベルのブラウザを載せることでウェブアプリケーションが利用できるようになり、ということは、(iPhoneアプリという方法以外にも)いくらでも機能追加ができるということになります。

これから続々iPhoneに特化した、まるでiPhoneの一機能であるかのように動くサイトがでてくるでしょう。(そしてこれらをホーム画面にアイコンとしておくことができるのが、またいいですね。)

開発者としてもiPhoneはとても面白いです。AppStoreで正式に許可される前から、Jailbreak(ハッキング)をしなければインストールすらできないソフトウェアが数百(数千?)ありました。こんな携帯、これまでにあったでしょうか。iPhoneは新しいプラットフォームとしてますます面白くなりそうです。

年末か年明けにはAndroidがでてきます。そちらもとても楽しみです。

いづれにしても携帯電話はこのような方向に動いていくのでしょう。となると、これまでの携帯用サイトはかなり貧弱になってしまうので、作り直しが迫られますね。これから大きなモバイル端末用サイトの作成の波がくるでしょう。私もそれに合わせてスキル・知識・経験を積んでいます。

間もなくiPhone用の天気予報サイトをリリースする予定です。 その際にはぜひ利用してくれると嬉しいです。ご要望があれば、それに続いてiPhoneアプリも公開したいと思っています。

iPhone購入

iPhoneiPhoneを購入しました。

だいぶ前にソフトバンクのショップに予約をしておいたのだけど、発売日前日に電話があり、前の前の人で割り当て分が終わってしまい、次の入荷は20日を予定しているとのことでした。その前にも入ってくる可能性はあるということで、まぁ、仕方ないかと思っていたのですが、近くのビックカメラで抽選販売をするということで、もしかしたら・・と思い申し込んだところみごと当選!

実は今iPhoneのサイトを作っていてその意味でもぜひ当日に欲しかったのです。なぜか「絶対にあたる」という思いがあったのですが、本当にあたってしまいました。これからはiPhone関連の開発に力をいれろということか・・・。

というわけで(本当は発売日当日に間に合わせたかったのですが)近々iPhoneサイトをリリースします。こちらのドメインにちなんでというわけではありませんが、「天気予報」関連サイトです。iPhoneを購入された方、購入予定の方はぜひ利用してもらえると嬉しいです。