2011-10-30

Conversion to Dalvik format failed with error 1



EclipseでAndroidアプリのビルドを試みたら、「Conversion to Dalvik format failed with error 1」というエラーになってしまい困っていたが、
    eclipse.exe -clean
というように起動オプションをつけてeclipseのキャッシュを消去したら解決した。


*後日わかったことだが、このやり方ではエラーが解決しない場合もある。エラーで困って検索しているうちに、この記事に辿り着いてしまった方は、こちらの記事も読んでいただけると解決に近づくかもしれない。http://hello-hello-world.blogspot.com/2011/11/conversion-to-dalvik-format-failed-with.html

2011-10-24

Django1.3の管理サイトが便利すぎる



Djangoの管理コンソールは昔から便利だと思っていたが、久しぶりに最新版の1.3.1を試してみたら、管理コンソールが進化してものすごく便利になっていた。

とくに、ユーザが自分で生成したオブジェクトだけを表示・編集できるようになったことはすばらしい。
バージョン1.3がリリースされてから、かなり時間が経つが、ドキュメントが日本語化されていないようなので、このことを知らない人もいるかもしれない。
以前の管理コンソールは、すべてのオブジェクトにアクセス可能なサイト運営者用にしか使えない印象だったが、いまはサイトにユーザ登録した利用者用にも使えそうだ。

ユーザが生成したオジェクトのみを管理サイトでアクセス可能にするには、django.contrib.admin.ModelAdminを継承してたクラスを定義して、queryset、has_add_permission、has_change_permission、has_delete_permissionなどをオーバーライドする。querysetをオーバーライドするだけで、表示を絞り込むことはできるが、has_add_permissionなどで権限を正しく設定しておかないといけない。
ドロップダウンリストなどに他のユーザのオブジェクトが表示されてしまうのを直したい場合は、さらに、formfield_for_foreignkeyなどをオーバーライドすればよい。

Djangoの管理サイトは、以前よりもさらに便利で強力になった。しかし、もちろんすべてのニーズを満たすというわけではない。
たとえば、list_filterで絞り込みを設定した場合にも、他のユーザのオブジェクトが表示されてしまうのだが、これを防ぐ簡単な手立てはどうやらなさそうだ。
また、DBのテーブルを列挙するページ構成は、ユーザにとって使い勝手が悪い場合が多そうだ。ページ構成は、オブジェクトの階層構造に対応していることが望ましいと思うのだが、これを実現するには割りと大掛かりなカスタマイズが必要になると思われる。

2011-10-22

MySQL-pythonをインストール

djangoをMySQLで動かすには、MySQLdbが必要みたいなので、
pip install MySQLdb
とか、
pip install MySQL-python
とか打ってみたのだがエラーになる。

次のサイトで見つけたwindows用のインストーラ実行したら無事にインストールできた。
http://servut.us/akx/2010/09/mysqldb-windows-binaries-python-26-27/



CentOSでも、pipを使うとエラーになってしまったが、
yum -y install MySQL-python
とやってインストールできた。

2011-10-05

Snow Leopard + python2.5に、PILとsslモジュールを入れる



MacBook ProにWindows7をインストールするために、Boot Campでパーティションを切ろうとしたら失敗したため、リカバリしてOSX Snow Leopardを再インストールすることになった。開発環境を再構築するのには時間がかかるし神経も消耗する。

Google AppEngine(Python)の開発環境を整えるのがとくに大変だ。PILとsslをインストールしようとしたのだが、easy_installを使っても、setup.pyを使っても失敗してしまった。昔どうやってインストールしたのかよく覚えていないが、gcc4.0を使ってコンパイルしたような記憶がおぼろげにある。おそらく、python2.5が古いXcodeでビルドされているため、gcc4.0を使ってコンパイルしないとインストールできないということなのだろう。

Xcode4にはgcc4.0が含まれていないので、まずはXcode3をインストールした(gcc-4.0のためだけにXcode3をまるごと入れた)。そして、
    export CC=/usr/bin/gcc-4.0
とターミナルに入力してから、easy_installやらsetup.pyやらを使ったら、なんとかインストールできたようだ。