Xcodeを4.6.1にアップデートしてビルドすると、
PCH file built from a different branch ((clang-425.0.24)) than the compiler ((clang-425.0.27))
とかいうエラーになった。
[Product]メニューから[Clean]を選択して、再ビルドすると成功した。
しかし、ビルドの設定を変えた方がいいという警告が出ていた。詳細はよく分からないまま、Xcodeの言いなりで[Perform Change]を行った。たぶんこれで問題ないと思う。
2013-04-07
AppStoreでXcodeをアップデートできない
AppStoreアプリでXcodeをアップデートしようとすると、「ほかのアカウントで使用可能なアップデートがあります」「このアプリケーションをアップデートするには、購入時に使用したアカウントでサインインしてください」というメッセージが出て、アップデートができないで困った。
ネットで検索すると、Spotlightのインデックスを再構築をするとアップデート可能になるという情報があったので試してみたのだが、これにインデックスの再構築に数時間かかった上にアップデートできないままだった。
Xcode.appをゴミ箱に入れて再インストールすることで解決できた。再インストールは、AppStoreアプリから行える。
ネットで検索すると、Spotlightのインデックスを再構築をするとアップデート可能になるという情報があったので試してみたのだが、これにインデックスの再構築に数時間かかった上にアップデートできないままだった。
Xcode.appをゴミ箱に入れて再インストールすることで解決できた。再インストールは、AppStoreアプリから行える。
2012-11-19
VirtualBoxにインストールしたAndroid-x86をネットにつなぐ
Androidを起動したあと、ALT + F1 を押して、コンソールで、
このとき。VirtualBoxのネットワークの設定は、次のとおり、
Androidで、ALT + F1 のあと、
Android-x86のダウンロードはこちら(広告が大きいので注意)
インストールなどは、次の記事が参考になる。
http://d.hatena.ne.jp/goriponsoft/20110212/1297510921
http://d.hatena.ne.jp/kikupi084/20100712/1278948166
http://stackoverflow.com/questions/10069121/no-network-in-android-x86-on-virtualbox-4-1-2
***
と、書いてきたのだが、次のサイトでVirtualBox用に最適化されたAndroid-x86が配布されている模様。これを使うのが良さそうだ。
http://www.buildroid.org/blog/?page_id=121
# netcfg eth0 dhcpとやる。元の画面に戻るには、ALT + F7 を押す。
# setprop net.dns1 8.8.8.8
このとき。VirtualBoxのネットワークの設定は、次のとおり、
Adapter 1: PCnet-FAST III (Bridged adapter, en0: Ethernet)WiFiでなくて、ケーブルで繋いでいるのでちょっと不便かもしれないが、これでネットワークに繋がるはず。
Androidで、ALT + F1 のあと、
# netcfg eth0とやればIPアドレスを取得できるので、そのIPアドレスを使ってホストマシーンで、
adb connect {取得したIPアドレス}とすれば、デバッグなどもできるようになる。
Android-x86のダウンロードはこちら(広告が大きいので注意)
インストールなどは、次の記事が参考になる。
http://d.hatena.ne.jp/goriponsoft/20110212/1297510921
http://d.hatena.ne.jp/kikupi084/20100712/1278948166
http://stackoverflow.com/questions/10069121/no-network-in-android-x86-on-virtualbox-4-1-2
***
と、書いてきたのだが、次のサイトでVirtualBox用に最適化されたAndroid-x86が配布されている模様。これを使うのが良さそうだ。
http://www.buildroid.org/blog/?page_id=121
2012-10-25
iPad mini対応は何もやらなくてOK
最近ようやく自作のアプリのいくつかをiPadに対応させました。たとえば一挙に韓国語翻訳などです。
新たにiPad miniなるものが世に出るということで、これの対応も考えなくてはいけないのかと思って、Mac App StoreでXcodeのアップデートを確認して見ましたが、リリースはありませんでした。
これからアップデートがあるかもしれないと思って調べてみたのですが、どうやらiPad mini対応をする必要はまったくなさそうです。シミュレータは新しいのが出るでしょうが、Xcodeの更新はないでしょう。
なぜかというと、iPad miniは画面のサイズがこれまでよりも小さい7.9インチになるものの、画素数はiPad 2と同じ1024×768ドットだからです。つまり、ボタンなどのコントロールや文字がちょっと小さく表示されるだけで、他は従来のiPadなんら変わるところはないということになります。これまで動いていたプログラムは、少しちいさくなった画面の中でまったく同じように動くことでしょう。
新たにiPad miniなるものが世に出るということで、これの対応も考えなくてはいけないのかと思って、Mac App StoreでXcodeのアップデートを確認して見ましたが、リリースはありませんでした。
これからアップデートがあるかもしれないと思って調べてみたのですが、どうやらiPad mini対応をする必要はまったくなさそうです。シミュレータは新しいのが出るでしょうが、Xcodeの更新はないでしょう。
なぜかというと、iPad miniは画面のサイズがこれまでよりも小さい7.9インチになるものの、画素数はiPad 2と同じ1024×768ドットだからです。つまり、ボタンなどのコントロールや文字がちょっと小さく表示されるだけで、他は従来のiPadなんら変わるところはないということになります。これまで動いていたプログラムは、少しちいさくなった画面の中でまったく同じように動くことでしょう。
2012-10-12
DjangoにDBのマイグレーションを行うプラグインを入れる
Djangoで manage.py syncdb をした場合、すでに存在するテーブルについては何も変更されません。models.pyをいじってスキーマを変更しても、それがDBに反映されません。
そこで、マイグレーションを行うプラグインの出番となります。どうもSouthが定番のようなので、これを入れます。
$ sudo pip install South
インストールに成功したら、settings.py を若干変更します。
settings.py の編集が終わったら、普通に、manage.py syncdb をします。これによって、southが利用するDBのテーブルがつくられます。SOUTH_MIGRATION_MODULESを明示的に指定した場合は、親となるモジュール(上記の例ではmigrations)が存在しないとエラーになるので、ここでつくっておきます。ここまでできたら、
$ python ./manage.py convert_to_south myapp
を実行します。これにより、既存のアプリをsouthで管理するように設定できます。今後、モデルに変更があった場合は、
$ python ./manage.py schemamigration myapp --auto
$ python ./manage.py migrate myapp
とやれば、たいていはsouthが何とかしてくれるはずです。
そこで、マイグレーションを行うプラグインの出番となります。どうもSouthが定番のようなので、これを入れます。
$ sudo pip install South
インストールに成功したら、settings.py を若干変更します。
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp', #自作のアプリ
'south', #southをインストールする
)
個人的な趣味としては、import sys
import os
sys.path.append(os.path.join(os.path.dirname(__file__), "..", "south_migrations"))
SOUTH_MIGRATION_MODULES = {
'myapp': 'migrations.myapp',
}
という具合にして、マイグレーションのときに生成されるファイルが、プロジェクトのディレクトリの外につくられるようにしておくのがいいと思います。その方が、ローカルのプロジェクトをサーバー上にあげるときに都合がいいからです。settings.py の編集が終わったら、普通に、manage.py syncdb をします。これによって、southが利用するDBのテーブルがつくられます。SOUTH_MIGRATION_MODULESを明示的に指定した場合は、親となるモジュール(上記の例ではmigrations)が存在しないとエラーになるので、ここでつくっておきます。ここまでできたら、
$ python ./manage.py convert_to_south myapp
を実行します。これにより、既存のアプリをsouthで管理するように設定できます。今後、モデルに変更があった場合は、
$ python ./manage.py schemamigration myapp --auto
$ python ./manage.py migrate myapp
とやれば、たいていはsouthが何とかしてくれるはずです。
2012-10-06
CentOSにPostgreSQLをインストール
yumでインストールします。
の3つがインストールされることになります。現在はバージョンは、8.4.13-1.e16_3です。
これでインストールはできているのですが、データベースサーバーが起動していないので、まだ利用することはできません。最初の起動のため、次の2つコマンドを打ちます。
CentOSを再起動したときにpostgresqlも自動的に起動されるように設定しておきます。
これでデータベースサーバーの起動はOKです。後は、ユーザーの設定を行います。
PostgreSQLのインストールと同時にpostgresというユーザーがつくられるようです。
Ident認証ではなく、パスワード認証に変更したい場合は、postgresqlにユーザーを追加した後で、設定を変更します。
postgresユーザーでパスワード認証を行いたい場合は、次のようにしてパスワードを設定します。
パスワード認証を行うためには、DBの設定も変更する必要があります。設定ファイルなどは、たいてい「/var/lib/pgsql/data/」以下にあるようです。今回修正するのは、
DjangoからPostgreSQLに接続する場合は、データベースの設定に、django.db.backends.postgresql_psycopg2を指定します。さらに次のコマンドで必要なモジュールをインストールしなくてはいけません。
$ sudo yum -y install postgresql-server依存関係により、
- postgresql-server
- postgresql-libs
- postgresql-server
の3つがインストールされることになります。現在はバージョンは、8.4.13-1.e16_3です。
これでインストールはできているのですが、データベースサーバーが起動していないので、まだ利用することはできません。最初の起動のため、次の2つコマンドを打ちます。
$ sudo service postgresql initdbここで、initdbをせずにpostgresqlを起動しようとすると、次のようなエラーになります。
$ sudo service postgresql start
/var/lib/pgsql/data is missing. Use "service postgresql initdb" to initialize the cluster first.
[失敗]
CentOSを再起動したときにpostgresqlも自動的に起動されるように設定しておきます。
$ sudo chkconfig postgresql on
これでデータベースサーバーの起動はOKです。後は、ユーザーの設定を行います。
PostgreSQLのインストールと同時にpostgresというユーザーがつくられるようです。
$ id postgresこのユーザー "postgres" にパスワードを設定します。
uid=26(postgres) gid=26(postgres) 所属グループ=26(postgres)
$ sudo passwd postgresパスワードが設定できたら、ユーザーを変更します。デフォルトでは、Ident認証という方式で認証を行うため、CentOSのユーザーとPostgreSQLのユーザーが一致していないとエラーになるようです。
$ su - postgres後は、createdbでデータベースを作成したり、 psqlで接続したりできます。
Ident認証ではなく、パスワード認証に変更したい場合は、postgresqlにユーザーを追加した後で、設定を変更します。
postgresユーザーでパスワード認証を行いたい場合は、次のようにしてパスワードを設定します。
ALTER USER postgres WITH PASSWORD 'newpassword';という具合です。postgresユーザーは最初から存在するのでALTER USERですが、新規ユーザーを追加するのであれば代わりに、CREATE USER文を使います。
パスワード認証を行うためには、DBの設定も変更する必要があります。設定ファイルなどは、たいてい「/var/lib/pgsql/data/」以下にあるようです。今回修正するのは、
/var/lib/pgsql/data/pg_hba.confというファイルです。「local all ident」という行をコメントアウトして「local all password」を追加します。
#local all all identこれでパスワードで認証することができます。たとえばユーザーがpostgresのときに、
local all all password
psql -U postgresとやれば、postgresユーザーで接続できます。
DjangoからPostgreSQLに接続する場合は、データベースの設定に、django.db.backends.postgresql_psycopg2を指定します。さらに次のコマンドで必要なモジュールをインストールしなくてはいけません。
$ sudo yum -y install python-psycopg2
2012-10-04
DjangoでImageFieldやFileFieldが空でないか調べる
たとえば、次のようなモデルがあったとします。
ここで、ImageFieldにファイルがセットされているかどうか見分けて処理を切り替えたい場合の判定方法ですが、単に、
class MyModel(models.Model):
thumbnail = ImageField(upload_to="path", null=True, blank=True)
ここで、ImageFieldにファイルがセットされているかどうか見分けて処理を切り替えたい場合の判定方法ですが、単に、
m = MyModel.objects.get(id=1)
if m.thumbnail:
file_is_set() #ファイルあり
else:
file_is_empty() #ファイルが空
という具合に判定すればOKなようです。
登録:
投稿 (Atom)