子供の頃から天体観測は好きだった。で、今朝は4時半から外で月を見るという無謀なことをした→風邪ひいた模様。
明け方開始ということで月はすでに沈む寸前。なので上から欠けてきた。皆既食状態のまま月は山の向こうに消えてしまいましたとさ。
2011年12月10日土曜日
2011年12月8日木曜日
いつの間にかKindle FireのFirmware更新
6.2_user_3003020というバージョンに入れ替わっていた。いつの間に...
期待されたLanguage and Keyboards切り替えはなし。 rootもはずされちゃう、という報告あり。自分はSimeji入れたあとroot外していたので特に影響なし。
期待されたLanguage and Keyboards切り替えはなし。 rootもはずされちゃう、という報告あり。自分はSimeji入れたあとroot外していたので特に影響なし。
歯医者にみる景気の腰の弱さ
今日は半年に一度の歯科検診。特に異常はなし。
ただ歯医者さんは色々大変なようで。理由は簡単。歯医者に通う患者が減っている。その理由は経済的なもので
昨今、ベイエリアの高速道路は交通量も増え、朝夕の渋滞が激しくなっているが、景気回復にはまだまだ至ってないようで。
ただ歯医者さんは色々大変なようで。理由は簡単。歯医者に通う患者が減っている。その理由は経済的なもので
- 雇用を失って、必然的に歯科医保険も解除された
- 雇用は維持されているが、雇用元が歯科医保険を削ったために歯医者に通いにくくなった
- 職は見つけたが正規雇用ではないので歯科医保険がない or あまりカバーされない
昨今、ベイエリアの高速道路は交通量も増え、朝夕の渋滞が激しくなっているが、景気回復にはまだまだ至ってないようで。
2011年12月7日水曜日
Occupy San Francisco強制排除。だが...
サンフランシスコのJustin Herman Plazaに陣取っていたOccupy San Francisco。市当局からの採算の通告にも関わらず自主的解散がなかったため、今朝警察が介入。強制排除となった。ぱちぱちぱち。ちなみに70名が逮捕された。→ソース
だがこの程度で引っ込むOccupyな方々ではない。
だがこの程度で引っ込むOccupyな方々ではない。
- 市内の他の場所をOccupy
- ゼネスト
- Foreclosureされた住居を乗っ取る
2011年12月6日火曜日
2011年12月4日日曜日
2011年12月3日土曜日
GAE1.6+Python2.7+DjangoでSessionを使う
Googleが公開しているDjangoの使い方は随分と古いが、Sessionをsettingsから外すように書かれている。これだとrequest.sessionが使えないのでappengine_djangoなどのツールを使ってSessionMiddlewareを差し込むわけだが、ただそれだけのためにごちゃごちゃと3rd partyのライブラリを入れるのは悔しいので、最低限度の方法を試してみた。
appengine_djangoには、Session保存のバックエンドとしてmemcacheを使うモジュールが公開されているのでこれを使うことにした。このスレッドの#2からリンクされているcache_backend.pyをプロジェクトの適当な場所(自分はlib配下)に保存し、settings.pyに以下を追加。
これでめでたくDjangoのviewでrequest.sessionを使えるようになる。
appengine_djangoには、Session保存のバックエンドとしてmemcacheを使うモジュールが公開されているのでこれを使うことにした。このスレッドの#2からリンクされているcache_backend.pyをプロジェクトの適当な場所(自分はlib配下)に保存し、settings.pyに以下を追加。
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
)
# http://code.google.com/p/google-app-engine-django/issues/detail?id=57
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHE_BACKEND = 'lib.cache_backend://'
これでめでたくDjangoのviewでrequest.sessionを使えるようになる。
2011年12月2日金曜日
GAE 1.6+Django 1.2
Google App Engine 1.6.0から公式にPython 2.7+Django 1.2がサポートされたということなんだけど、ぐぐってみても従前からのappengine-djangoを使う方法ばかりでてきてよくわからん。
ということで色々試してみた。以下、わかったこと:
1. Djangoをzipする必要なし
ただしdjango-admin.pyとかmanage.pyとかで楽チンすることはできなくなる。まあ、そんなに面倒な事もないでしょ。GAEのコンソールも使えるし。
2. ローカルにDjangoをインストールする必要もなし
google_appengineディレクトリ配下に必要なDjangoのライブラリは入っている。
3. Virtualenvの元でも動く
先日書いたとおり。
で、django-admin.py使わないということはディレクトリ配置やsettings.pyとかurls.pyとかを自前で打ち込むということなわけで、大した話ではない。まずディレクトリ配置はこんな感じ。
app.yaml
librariesというエントリでDjango 1.2を使うことを宣言。
main.py
settings.pyの所在を定義。
project/settings.py
必要なライブラリとアプリケーション所在場所、urls.pyの場所を定義。テンプレートを使う場合はその所在場所を定義。
project/urls.py
URL定義は通常のDjangoアプリと同じ。
project/poll/views.py
テスト用簡単なview
ということで色々試してみた。以下、わかったこと:
1. Djangoをzipする必要なし
ただしdjango-admin.pyとかmanage.pyとかで楽チンすることはできなくなる。まあ、そんなに面倒な事もないでしょ。GAEのコンソールも使えるし。
2. ローカルにDjangoをインストールする必要もなし
google_appengineディレクトリ配下に必要なDjangoのライブラリは入っている。
3. Virtualenvの元でも動く
先日書いたとおり。
で、django-admin.py使わないということはディレクトリ配置やsettings.pyとかurls.pyとかを自前で打ち込むということなわけで、大した話ではない。まずディレクトリ配置はこんな感じ。
. ├── app.yaml ├── main.py ├── project │ ├── __init__.py │ ├── poll │ │ ├── __init__.py │ │ ├── views.py │ ├── settings.py │ ├── templates │ │ └── __init__.py │ ├── urls.py
app.yaml
librariesというエントリでDjango 1.2を使うことを宣言。
application: helloworld version: 1 runtime: python27 api_version: 1 threadsafe: true handlers: - url: /.* script: main.app libraries: - name: django version: "1.2"
main.py
settings.pyの所在を定義。
import os os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings' import django.core.handlers.wsgi app = django.core.handlers.wsgi.WSGIHandler()
project/settings.py
必要なライブラリとアプリケーション所在場所、urls.pyの場所を定義。テンプレートを使う場合はその所在場所を定義。
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
)
INSTALLED_APPS = (
'project.poll'
)
ROOT_URLCONF = 'project.urls'
import os
ROOT_PATH = os.path.dirname(__file__)
TEMPLATE_DIRS = (
ROOT_PATH + '/templates',
)
project/urls.py
URL定義は通常のDjangoアプリと同じ。
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^$', 'project.poll.views.index'),
)
project/poll/views.py
テスト用簡単なview
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^$', 'project.poll.views.index'),
)
(GAE)masayang@ubuntu-vm:~/Documents/GAE/dempa$ cat project/poll/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello")
S2Eで内部記憶領域(mmcblk0)を開放
購入した当時(2010年10月)は余裕のスペックだったAndroid G2だが、一年以上経過して色々とアプリケーションを詰め込んだ結果内部記憶領域(/dev/mmcblk0p*)がじわじわと足らなくなってきた。そりゃ初代G1に比べれば余裕はあったが、動作がもったりしてきた感じは否めなかったのでS2Eを使ってアプリケーションをsd-ext(/dev/mmcblk1p2)に移動させることにした。
当初は簡単だろうと思ったのだが(だってS2Eはsimple2extの略だから)いろいろとハマってしまったのでここにコツを記録しておく。
1. まずアプリケーションは本体に戻しておく
Google方式でSD側に動かしたアプリケーションは本体記憶に戻しておくこと。Settings→Applications→Manage Applications→SD Cardから操作。これにより本体記憶は一層キツくなるがAndroid自体の動作はかなり軽くなる。
2. CM使ってる場合はSDへのアプリ設置を抑止
Settings→CyanogenMod settings→Application→Allow application movingを抑止。同Install locationをInternalに。
3. 死にたくなければROMをバックアップ
ROMManagerから
4. 後悔したくなければSD Cardをバックアップ
母艦につないでtarで。
5. SD Cardのパーティション
ここが一番ハマるところ。sd-extをext4でフォーマットしろ、みたいなことをS2E作者も言ってるが、/etc/init.d/05partitionsdを見ればわかる通りCM7.1はext3でsd-extをマウントする。で、Recoveryの種類によってはsd-extをext4でフォーマットしたりext2でフォーマットしたりする。ClockworkModの5系はext4なのでアウト。
確実なのは母艦からadbで接続して、partedコマンドでパーティションを切ること。ここを見れ。
当然、S2Eのext4オプションも外すこと。
6. 一度目の再起動は妙に時間がかかる
S2EはOS起動前に/data/appの中身を/sd-ext/appの下に移動して/data/appからリンクを張る。この動作は再起動後ベンダーのロゴが出た状態で数分間続く。固まった、と思って電池抜くと悲惨なことになるので注意。
7. やり過ぎは無意味
S2Eは/data/app以外に/data/dataやらCacheやらもsd-extに移動できるようになっているが、これをやると性能が落ちる。/data/appだけなら性能劣化はほとんど実感できない。(Google方式でアプリケーションをSDに持って行くと重くなるのも同様の理由と思われる。)
結果、本体側1.2GBのうち、アプリケーションが占めていた500MBほどをsd-extに移動することができた。まだしばらくはG2でやっていけそうだ。Quadrantの改善は見られないが、アプリケーション切り替え時のサクサク感が戻った。あと、電池消耗も減ってる。
当初は簡単だろうと思ったのだが(だってS2Eはsimple2extの略だから)いろいろとハマってしまったのでここにコツを記録しておく。
1. まずアプリケーションは本体に戻しておく
Google方式でSD側に動かしたアプリケーションは本体記憶に戻しておくこと。Settings→Applications→Manage Applications→SD Cardから操作。これにより本体記憶は一層キツくなるがAndroid自体の動作はかなり軽くなる。
2. CM使ってる場合はSDへのアプリ設置を抑止
Settings→CyanogenMod settings→Application→Allow application movingを抑止。同Install locationをInternalに。
3. 死にたくなければROMをバックアップ
ROMManagerから
4. 後悔したくなければSD Cardをバックアップ
母艦につないでtarで。
5. SD Cardのパーティション
ここが一番ハマるところ。sd-extをext4でフォーマットしろ、みたいなことをS2E作者も言ってるが、/etc/init.d/05partitionsdを見ればわかる通りCM7.1はext3でsd-extをマウントする。で、Recoveryの種類によってはsd-extをext4でフォーマットしたりext2でフォーマットしたりする。ClockworkModの5系はext4なのでアウト。
確実なのは母艦からadbで接続して、partedコマンドでパーティションを切ること。ここを見れ。
当然、S2Eのext4オプションも外すこと。
6. 一度目の再起動は妙に時間がかかる
S2EはOS起動前に/data/appの中身を/sd-ext/appの下に移動して/data/appからリンクを張る。この動作は再起動後ベンダーのロゴが出た状態で数分間続く。固まった、と思って電池抜くと悲惨なことになるので注意。
7. やり過ぎは無意味
S2Eは/data/app以外に/data/dataやらCacheやらもsd-extに移動できるようになっているが、これをやると性能が落ちる。/data/appだけなら性能劣化はほとんど実感できない。(Google方式でアプリケーションをSDに持って行くと重くなるのも同様の理由と思われる。)
結果、本体側1.2GBのうち、アプリケーションが占めていた500MBほどをsd-extに移動することができた。まだしばらくはG2でやっていけそうだ。Quadrantの改善は見られないが、アプリケーション切り替え時のサクサク感が戻った。あと、電池消耗も減ってる。
2011年12月1日木曜日
SPY Gap Up
昨日もGap上げでしたか。
| Instance | Date | Closed <= Gap Open(up to 5 days) |
|---|---|---|
| 1 | 09/08/1998 | 1 day later |
| 2 | 10/06/1998 | same day |
| 3 | 09/03/1999 | 2 days later |
| 4 | 06/02/2000 | same day |
| 5 | 12/08/2000 | same day |
| 6 | 12/11/2000 | 2 days later |
| 7 | 04/05/2001 | 1 day later |
| 8 | 09/24/2001 | No |
| 9 | 07/17/2002 | same day |
| 10 | 07/29/2002 | 4 days later |
| 11 | 10/15/2002 | 1 day later |
| 12 | 10/17/2002 | same day |
| 13 | 04/07/2003 | same day |
| 14 | 08/17/2007 | same day |
| 15 | 12/12/2007 | same day |
| 16 | 03/11/2008 | 3 days later |
| 17 | 09/08/2008 | same day |
| 18 | 09/19/2008 | same day |
| 19 | 10/07/2008 | same day |
| 20 | 10/09/2008 | same day |
| 21 | 10/13/2008 | 2 days later |
| 22 | 10/28/2008 | No(11日後に戻ってる) |
| 23 | 10/30/2008 | 4 days later |
| 24 | 11/04/2008 | 1 day later |
| 25 | 11/21/2008 | No |
| 26 | 11/24/2008 | No |
| 27 | 11/25/2008 | Same Day |
| 28 | 12/08/2008 | 1 day later |
| 29 | 12/16/2008 | Same Day |
| 30 | 01/28/2009 | 1 day later |
| 31 | 03/10/2009 | No |
| 32 | 03/23/2009 | 5 days later |
| 33 | 04/02/2009 | 3 days later |
| 34 | 04/09/2009 | 2 days later |
| 35 | 05/10/2010 | 1 day later |
| 36 | 08/22/2011 | Same Day |
| 37 | 10/27/2011 | 3 days later |
| 37 | 11/28/2011 | ? |
| 38 | 11/30/2011 | ? |
2011年11月30日水曜日
2011年11月29日火曜日
SPY Gap Up
昨日は窓開けて始まってたのね。さて今回は何日もつか。
| Instance | Date | Closed <= Gap Open(up to 5 days) |
|---|---|---|
| 1 | 09/08/1998 | 1 day later |
| 2 | 10/06/1998 | same day |
| 3 | 09/03/1999 | 2 days later |
| 4 | 06/02/2000 | same day |
| 5 | 12/08/2000 | same day |
| 6 | 12/11/2000 | 2 days later |
| 7 | 04/05/2001 | 1 day later |
| 8 | 09/24/2001 | No |
| 9 | 07/17/2002 | same day |
| 10 | 07/29/2002 | 4 days later |
| 11 | 10/15/2002 | 1 day later |
| 12 | 10/17/2002 | same day |
| 13 | 04/07/2003 | same day |
| 14 | 08/17/2007 | same day |
| 15 | 12/12/2007 | same day |
| 16 | 03/11/2008 | 3 days later |
| 17 | 09/08/2008 | same day |
| 18 | 09/19/2008 | same day |
| 19 | 10/07/2008 | same day |
| 20 | 10/09/2008 | same day |
| 21 | 10/13/2008 | 2 days later |
| 22 | 10/28/2008 | No(11日後に戻ってる) |
| 23 | 10/30/2008 | 4 days later |
| 24 | 11/04/2008 | 1 day later |
| 25 | 11/21/2008 | No |
| 26 | 11/24/2008 | No |
| 27 | 11/25/2008 | Same Day |
| 28 | 12/08/2008 | 1 day later |
| 29 | 12/16/2008 | Same Day |
| 30 | 01/28/2009 | 1 day later |
| 31 | 03/10/2009 | No |
| 32 | 03/23/2009 | 5 days later |
| 33 | 04/02/2009 | 3 days later |
| 34 | 04/09/2009 | 2 days later |
| 35 | 05/10/2010 | 1 day later |
| 36 | 08/22/2011 | Same Day |
| 37 | 10/27/2011 | 3 days later |
| 37 | 11/28/2011 | ? |
iTether最期の日
iPhone/iPadでUSB TetheringできるというiTetherがApp Storeから抹殺された模様→ソース
WiFi接続がないけど3G回線ならつながるという環境でTetheringできるというのは本当に助かる。例えそれがUSB経由であっても、だ。それだけ需要があったからこそiTetherは人気があったのに、Apple側の一方的判断で市場から抹殺されるというのは納得行かない。
ソフトウェアを開発し、配布する権利は開発者側にあるはずだ。自由が保証されるからみんなが自由に考え、実行に移す。その失敗と成功の繰り返しで技術が進歩する。配布部分を独裁的に制御しようとするAppleは、長期的には自社基盤上でのソフトウェア開発技術を弱体化させるということに気づくべきだ。
WiFi接続がないけど3G回線ならつながるという環境でTetheringできるというのは本当に助かる。例えそれがUSB経由であっても、だ。それだけ需要があったからこそiTetherは人気があったのに、Apple側の一方的判断で市場から抹殺されるというのは納得行かない。
ソフトウェアを開発し、配布する権利は開発者側にあるはずだ。自由が保証されるからみんなが自由に考え、実行に移す。その失敗と成功の繰り返しで技術が進歩する。配布部分を独裁的に制御しようとするAppleは、長期的には自社基盤上でのソフトウェア開発技術を弱体化させるということに気づくべきだ。
2011年11月28日月曜日
Kindle Fireは隠し多国語対応
ということで、なんとかrootとらずにSimejiを入れられる方法がないか考えているわけですが。今日はTwitterにて@TrinityNYCさんが「みんなでAmazonのカスタマサポートに電話して日本語対応しろと騒ぐのだ(意訳)」と煽っていたので自分も電話してみた。
1. Launcherを入れ替える。自分はGo Launcher Exにした。Side Loadingで。
2. Any Cutをインストールして起動
3. New Shortcutを選択
4. Activityを選択
5. Input languagesを選択し、保存。→デスクトップにショートカットができる。で、そいつを起動すると...
→実は様々な入力言語が選べるようになっている。このメニューがなぜ直接呼び出せないのかは不明だが、Kindle Fireが多言語対応していることは確実。
問題はこの中に日本語が入っていないこと。日本語はキーボードだけでなくInput Methodも入れ替える必要があるからか?
なお、このAny Cutを使ってLanguage & keyboard settingsを直接呼び出せないか試してみた。Launcherはショートカット類を/data/data/com.android.launcher/databases/launcher.dbのfavoritesに格納する。で、Any CutのAction欄に action=android.intent.action.VIEW;component=com.android.settings/.LanguageSettings と入れてやればいいのではないかと思ったのだが...
だめでした。データベースにはセミコロンなどがエスケープされて #Intent;action=android.intent.action.VIEW%3Bcomponent%3Dcom.android.settings%2F.LanguageSettings;end と格納されてしまう。
まあ、多国語対応されていることがわかったのが今日の収穫ということで。
参考にした記事: Kindle Fire: Keyboard Layouts – SOLVED!
- 多国語対応の要望はとても多い
- それに応える準備はしている
- ただしいつ対応できるかは明言できない
1. Launcherを入れ替える。自分はGo Launcher Exにした。Side Loadingで。
2. Any Cutをインストールして起動
3. New Shortcutを選択
4. Activityを選択
5. Input languagesを選択し、保存。→デスクトップにショートカットができる。で、そいつを起動すると...
→実は様々な入力言語が選べるようになっている。このメニューがなぜ直接呼び出せないのかは不明だが、Kindle Fireが多言語対応していることは確実。
問題はこの中に日本語が入っていないこと。日本語はキーボードだけでなくInput Methodも入れ替える必要があるからか?
なお、このAny Cutを使ってLanguage & keyboard settingsを直接呼び出せないか試してみた。Launcherはショートカット類を/data/data/com.android.launcher/databases/launcher.dbのfavoritesに格納する。で、Any CutのAction欄に action=android.intent.action.VIEW;component=com.android.settings/.LanguageSettings と入れてやればいいのではないかと思ったのだが...
だめでした。データベースにはセミコロンなどがエスケープされて #Intent;action=android.intent.action.VIEW%3Bcomponent%3Dcom.android.settings%2F.LanguageSettings;end と格納されてしまう。
まあ、多国語対応されていることがわかったのが今日の収穫ということで。
参考にした記事: Kindle Fire: Keyboard Layouts – SOLVED!
2011年11月27日日曜日
virtualenvwrapperとGoogle App Engine SDK
最近サボっていたので気づかなかったがいつの間にかGoogle App EngineがPython2.7に対応しているではないか。Djangoも1.2になったようだし、ちょっと気合をいれて使ってみることにした。でもこいつのためにだけPython2.7いれるのもしゃくにさわるのでvirtualenvで「きれいに」設置しよう、と。
1. SDKの設置
$HOME/google_app_engine下に展開
2. virtualenvwrapperで環境作成
3. SDKのPathを登録 .virtualenvs/GAE1_6_0/lib/python2.7/site-packages/gae.pthにSDKの位置を登録。自分の場合は
4. SDKにThird Party Lib場所を登録
.virtualenvs/GAE1_6_0/lib/python2.7/site.pyのmainを以下のように
参考にした記事: appengine & virtualenv
追記: __future__モジュールが見つからないと言われたらこの#29にあるパッチを当てると良いかも
1. SDKの設置
$HOME/google_app_engine下に展開
2. virtualenvwrapperで環境作成
$ source virtualenvwrapper.sh $ mkvirtualenv --python=python2.7 --no-site-packages GAE1_6_0
3. SDKのPathを登録 .virtualenvs/GAE1_6_0/lib/python2.7/site-packages/gae.pthにSDKの位置を登録。自分の場合は
../../../../../google_appengine
4. SDKにThird Party Lib場所を登録
.virtualenvs/GAE1_6_0/lib/python2.7/site.pyのmainを以下のように
$ source virtualenvwrapper.sh
if __name__ == '__main__':
_script()
from dev_appserver import fix_sys_path
fix_sys_path()
参考にした記事: appengine & virtualenv
追記: __future__モジュールが見つからないと言われたらこの#29にあるパッチを当てると良いかも
登録:
投稿 (Atom)













