AndroidStudioのGoogleMapテンプレートをkotlinで動かしてみた

最近 kotlin という言語の話を良く目にするので早速触ってみました。
今回やってみたのは Android StudioGoogle Map テンプレートを kotlin にコンバートしてエミュレータで動作させるまでです。

ちなみに kotlinって何?って方は下記のページで確認してみてください。
kotlin のページ

チュートリアル

wikipedia

djangoでunable to open database file

nitrous.io でサクっと作った django のアプリ。
Raspberry Pi に無理矢理押し込んだ nginx+django マシンにデプロイしてみたらこんなエラーが出た。

unable to open database file

db.sqlite3 は www-data:www-data で 644 だから問題ないはず!


というわけでググって見つけたのはこのページ。

Django says "Unable to Open Database File" when using SQLite3」という項目にあったこれが解決策だった!

Make sure Apache can also write to the parent directory of the database. SQLite needs to be able to write to this directory. Avoid setting the permissions to 777, as it's a security risk (see ​this page for an explanation why).

あ〜、db.sqlite3 ファイルが置いてあるフォルダも Apache が読める設定でないといけないのね。(今回は nginx だけど…)


というわけで、置いてあるフォルダのユーザとグループを www-data:www-data にしてみたら、ちゃんと動作するようになりました。

TypeError is not JSON serializable

問題が起きているのは request.session の中をちょこっといぢっているところ。

TypeError at /
<ObjectItem: 漢字の名前> is not JSON serializable
Request Method:	POST
...

というエラーが表示される。


version 1.4 の時は動いていたのに 1.7 にダメになってるってことは、django に何か変更とかあったのかな?
というわけで、ドキュメントをちゃんと読むのが良いのだろうけど、サクっとググってみたらそのままの質問が見つかった。

どうやら v1.6 から serializers が pickle から json に変わったらしい。
で、pickle では問題なかったけど json では問題になる場合にこのエラーが出てしまう。


というわけで、回答にあるように settings.py に SESSION_SERIALIZER を指定する行を加えてみた。

SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'

結果、問題の箇所ではエラーにならずにちゃんと動作した〜!


本当は json の sirializer でちゃんと動くようにする方が良いのだろうけど、それはまた今度ちゃんとドキュメントを読んでからの話。

djangoでobject is not JSON serializable エラーが出るようになった

昔に作った django のアプリを久しぶりに触ろうと思ったのだけど、django のバージョンが 1.4 と古かったので最新の 1.7 にしようとしたらハマったのでメモ。


本番前に Nitrous でとりあえず環境作って確認しておいて良かった〜。

SourceTreeをインストールして困ったこと

更に SourceTree もインストールして BitBucket にアクセスできるようにする。
ssh-keygen でキーを作成して、BitBucket でキーを登録。
後は SourceTree で BitBucket を登録。
これで BitBucket からリポジトリを clone してこれる。

が、どうしてもエラーが出てくる!
なんで?と、思ってググるとどうやら SourceTree の設定を変更する必要があるらしい。

Preferences... の Mercurial タブの下の方にある拡張機能リスト。この下の方にある「hgsubversion」のチェックを外せばエラーがでなくなるらしい。

やってみたら…問題解決!


と、これで Android 開発環境の基本的な部分は出来上がり!

Android Studio 1.0.1 と JDK をインストール

Android Studio が正式バージョンになって、既に今はバージョン 1.0.1。
下記からサクっとダウンロードしてインストールできる。

で、OS XAndroid Studio を入れる際の注意点は下記のページ

これにならってインストールをしてみる。


まずインストール時に出てくるアラートはこれ。

Java not found と言われる。
上記ページで説明されているように Android Studio の動作には JDK 6 が必要なので「Java for OS X 2014-001」をダウンロードしてインストールする。
これで、Android Studio のインストールは完了。


次に Android Studio を起動して Setup Wizard を開始。
するとこんなアラートが。

書かれている通り Java Development Kit 7.0 が必要。(api-level 21 で必要になったの???)
ダイアログにある Mac OS X x64 のリンクをクリックして、OracleJava SE Development Kit 7 Downloads ページへ。

このページから、この時点では最新の Java Se Development Kit 7u72 の Mac OS X x64 をダウンロードしてインストール。
これで先ほどのアラート画面の「Detect」ボタンを押すと JDK 7 を見つけてくれる。

後はそのまま進んで Setup Wizard 終了!


OS X の環境によっては、Java 6 が見つからない!ってアラートが出ることもあると思うけど、その際に Android Studio の info.plist ファイルを書き換える方法はお勧めしないって上記説明ページに書いてあるので注意。


というわけで、これで Android StudioJDK 6 を使って動いて、ビルドの際には JDK 7 を使う環境のできあがり〜。

MacBook Air Mid 2012 に OS X Yosemite をクリーンインストール

まず、MacBook AirOS X Yosemite をクリーンインストールする。
MacBook Air は Mid 2012 なので、復元でクリーンインストールできるはず!
というわけで、下記のページのまま進めた。

1つ問題だったのは、自分の Apple ID を入力後に AppStore からインストーラ?をダウンロードするところで何度も「このアイテムは現在一時的にご利用になれません しばらくしてから、もう一度お試しください」というダイアログが出て先に進まなかったこと。
この件はググると多くの人がハマっていて、「本当に後でやってみたらOK」とか「付属の DVD でやれ!」とかあれこれ出てくる。


結局、最終的には復元で Yosemite にできたのだけど、本当の原因がなんだったのかははっきりしない。
思い当たるのは下記の2つ

  • 本当に時間が経ってできるようになった。
  • MacBook Air が AppStore での買い物が初めて?で認証が必要だった。

この2つ目の「認証が必要だった。」というのは、リカバリできないのなら Yosemite を AppStore から落としてきてインストール USB ドライブを作ろうとした時に出てきた。
詳細は覚えていないのだけど、MacBook Air と自分の AppleID との組み合わせで AppStore から買い物(と言っても Yosemite は無料だけど)をするのが初めて(だったかな?)なので認証が必要だった。
これで復元時にダウンロードしてこれるようになったのかな?


というわけで、ちょっと躓いたけど Yosemite のクリーンインストールは終了。
バージョンは 10.10.1