<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/ME2.2.3" -->
<rss version="0.92">
<channel>
	<title>思ったこと、調べたこと、学んだことメモ</title>
	<link>http://tech.tenki.cc</link>
	<description>学びはとまらない</description>
	<lastBuildDate>Sun, 18 Apr 2010 23:09:40 +0900</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>ja</language>
	
	<item>
		<title>mysql の utf8_general_ci と utf8_unicode_ci の混在でエラー</title>
		<description>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とは全く関係なし。たまたま上記サイトを見つけただけ。 </description>
		<link>http://tech.tenki.cc/archives/36</link>
			</item>
	<item>
		<title>jquery の click と change</title>
		<description>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でも動いた。 </description>
		<link>http://tech.tenki.cc/archives/35</link>
			</item>
	<item>
		<title></title>
		<description>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     ...</description>
		<link>http://tech.tenki.cc/archives/34</link>
			</item>
	<item>
		<title>Flash CS5 iPhone FAQ 適当訳</title>
		<description>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 
 </description>
		<link>http://tech.tenki.cc/archives/33</link>
			</item>
	<item>
		<title>Symfony と WordPressの連携の際に重なってしまう関数</title>
		<description>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をコピーして該当行をコメントアウトすることで対応できた。

ただ、このファイルがバージョンアップしたときには、ここにコピーし直して同じ作業を擦る必要があるので注意しておかないとまずそう。 </description>
		<link>http://tech.tenki.cc/archives/32</link>
			</item>
	<item>
		<title>symfonyをウェブルートディレクトリではなく、一つ下の階層に入れた場合とかの設定（特にルーティング）のメモ</title>
		<description>久々に書きますが、時間がないのでメモレベルで。
いつか時間とニーズがあればWordPressとSymfonyの連携の方法なんかも書いてみたいと思ってます。

たとえば、symfonyをabcというディレクトリに入れたとして、

apps/front/config/factories.yml
で

inc:
  routing:
    param:
      context:
        prefix:                         '/shop'
のようにして

symfony以外のプログラム（たとえばwordpressとか）では、ファイルの最初に

&#60; ?php
//autoload symfony core class
require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');

sfCoreAutoload::register();
// ...</description>
		<link>http://tech.tenki.cc/archives/31</link>
			</item>
	<item>
		<title>iPhoneフリーズと対応策</title>
		<description>iPhoneがフリーズしました。

まぁ、PCみたいなものだからときどきあるのは仕方がないですが、 その再起動方法が分からずちょっと焦ったのでメモ。

前に一度とまったように感じたときは、電源ボタンの長押しで電源がきれたのですが、今回はそれでは切れませんでした。

電源ボタンとホームボタンを同時に長押ししたところ、無事に再起動がかかりました。

どんどん熱くなるし、当然電源も消費していくだろうしでちょっと焦りましたが無事に復旧しました。 </description>
		<link>http://tech.tenki.cc/archives/28</link>
			</item>
	<item>
		<title>iPhoneって何？</title>
		<description>iPhoneが好意的に騒がれている一方で、非常に冷めた目で「何がいいのか理解できない」「高すぎる」「足りない機能が多すぎる」「日本の携帯の方が進んでいる」「騒がれているのは今だけ」という意見も多くあるようです。

iPhoneのことを本当に理解しているのは、やはりコンピュータやインターネットを日常的に利用しているある程度詳しい方だけなんだなというのを痛感します。

iPhoneは「iPodが入っているインターフェースの使いやすい携帯」という理解は間違っていると思います。もちろんそういう使い方をする人もいらっしゃるでしょうが、iPhoneの特徴一つはやはりSafariだと思います。このレベルのブラウザを載せることでウェブアプリケーションが利用できるようになり、ということは、（iPhoneアプリという方法以外にも）いくらでも機能追加ができるということになります。

これから続々iPhoneに特化した、まるでiPhoneの一機能であるかのように動くサイトがでてくるでしょう。（そしてこれらをホーム画面にアイコンとしておくことができるのが、またいいですね。）

開発者としてもiPhoneはとても面白いです。AppStoreで正式に許可される前から、Jailbreak（ハッキング）をしなければインストールすらできないソフトウェアが数百（数千？）ありました。こんな携帯、これまでにあったでしょうか。iPhoneは新しいプラットフォームとしてますます面白くなりそうです。

年末か年明けにはAndroidがでてきます。そちらもとても楽しみです。

いづれにしても携帯電話はこのような方向に動いていくのでしょう。となると、これまでの携帯用サイトはかなり貧弱になってしまうので、作り直しが迫られますね。これから大きなモバイル端末用サイトの作成の波がくるでしょう。私もそれに合わせてスキル・知識・経験を積んでいます。

間もなくiPhone用の天気予報サイトをリリースする予定です。 その際にはぜひ利用してくれると嬉しいです。ご要望があれば、それに続いてiPhoneアプリも公開したいと思っています。 </description>
		<link>http://tech.tenki.cc/archives/27</link>
			</item>
	<item>
		<title>iPhone購入</title>
		<description>iPhoneを購入しました。

だいぶ前にソフトバンクのショップに予約をしておいたのだけど、発売日前日に電話があり、前の前の人で割り当て分が終わってしまい、次の入荷は20日を予定しているとのことでした。その前にも入ってくる可能性はあるということで、まぁ、仕方ないかと思っていたのですが、近くのビックカメラで抽選販売をするということで、もしかしたら・・と思い申し込んだところみごと当選！

実は今iPhoneのサイトを作っていてその意味でもぜひ当日に欲しかったのです。なぜか「絶対にあたる」という思いがあったのですが、本当にあたってしまいました。これからはiPhone関連の開発に力をいれろということか・・・。

というわけで（本当は発売日当日に間に合わせたかったのですが）近々iPhoneサイトをリリースします。こちらのドメインにちなんでというわけではありませんが、「天気予報」関連サイトです。iPhoneを購入された方、購入予定の方はぜひ利用してもらえると嬉しいです。 </description>
		<link>http://tech.tenki.cc/archives/25</link>
			</item>
	<item>
		<title>symfony 1.1 でのsfFormを使用する際の文字化けの解消</title>
		<description>symfony 1.1 のフォームを使用すると、明らかな文字化けではないが、文字列の最後に？がつくなどの文字化けをすることがありました。

原因は、サイトの都合上、phpの内部コードと外部コードを別々にしなければならない案件があり、外はSJIS、中はEUCとしていたため、htmlspecialcharsでの文字コード指定時に外側用のSJISとして適用されていたためだったようです。これを調べる過程でどこかのサイトで、理論的にはhtmlspecialcharsで文字コードの指定をしても、日本語については何の意味もないというような記事があったが、実際には変わるようです。少なくとも今回はそれで解消しました。

実際に行ったのは、下記のコードをeucForm.class.phpとして、（このフォームの使用範囲に応じて）symfonyプロジェクトディレクトリ直下のlibか、apps/appname/libか、モジュールのlibかにおいて、フォームを使用する際はsfFormをextendsして使うのではなくeucFormをextendsして使用すれば大丈夫です。他にももしかしたら方法があるのかもしれませんが、時間もなかったのでとりあえずこれで切り抜けました。

&#60; ?php

/**
 * eucForm class
 *
 * 文字コードの指定(EUC-JP)
 *
 */
class eucForm extends sfForm
{
  public function setup()
  {
    //文字コードの指定
    foreach($this-&#62;widgetSchema-&#62;getFields() as $widget){
      $widget-&#62;setCharset('EUC-JP');
    }
    parent::setup();
  }

}
これだけです。このEUC-JPと直接書きこんでいるところを、設定ファイルからsfConfig::get('app_internalencoding')などとやって、app.ymlにinternalencoding: EUC-JP と書くことで汎用性を持たせるのもありかもしれませんが、そもそも内部コードにSJISを持たせることは考えにくいし、UTF-8なら変換の必要はないし、と考えるとこのようなことをやらなければならないのは、内EUC-JP、外SJISに限られるかなと思ってEUC-JP専用にしてしまいました。

symfonyを使用する際はできるだけ外も内もUTF-8を使用するようにしていますが、いろいろな都合でそうもいかないことも時にはあります。 それでもphp.iniや.htaccessで文字コードを適切に指定しておけば、あまり問題が起こることはないのですが、今回のように問題になることもあります。 </description>
		<link>http://tech.tenki.cc/archives/22</link>
			</item>
</channel>
</rss>

