Mac でFabric 起動時にエラー発生 Symbol not found: _PyObject_Del

新しく作った virtualenv に Fabric をインストールして実行したら以下の様なエラーが発生した。

File "/Users/username/local/virtualenv/python2.7.5/lib/python2.7/site-packages/fabric/network.py", line 24, in <module>
import paramiko as ssh
File "/Users/username/local/virtualenv/python2.7.5/lib/python2.7/site-packages/paramiko/__init__.py", line 64, in <module>
from transport import SecurityOptions, Transport
File "/Users/username/local/virtualenv/python2.7.5/lib/python2.7/site-packages/paramiko/transport.py", line 33, in <module>
from paramiko import util
File "/Users/username/local/virtualenv/python2.7.5/lib/python2.7/site-packages/paramiko/util.py", line 33, in <module>
from paramiko.common import *
File "/Users/username/local/virtualenv/python2.7.5/lib/python2.7/site-packages/paramiko/common.py", line 98, in <module>
from Crypto import Random
File "/Users/username/local/virtualenv/python2.7.5/lib/python2.7/site-packages/Crypto/Random/__init__.py", line 29, in <module>
from Crypto.Random import _UserFriendlyRNG
File "/Users/username/local/virtualenv/python2.7.5/lib/python2.7/site-packages/Crypto/Random/_UserFriendlyRNG.py", line 38, in <module>
from Crypto.Random.Fortuna import FortunaAccumulator
File "/Users/username/local/virtualenv/python2.7.5/lib/python2.7/site-packages/Crypto/Random/Fortuna/FortunaAccumulator.py", line 39, in <module>
import FortunaGenerator
File "/Users/username/local/virtualenv/python2.7.5/lib/python2.7/site-packages/Crypto/Random/Fortuna/FortunaGenerator.py", line 35, in <module>
from Crypto.Util import Counter
File "/Users/username/local/virtualenv/python2.7.5/lib/python2.7/site-packages/Crypto/Util/Counter.py", line 59, in <module>

ImportError: dlopen(/Users/username/local/virtualenv/python2.7.5/lib/python2.7/site-packages/Crypto/Util/_counter.so, 2): Symbol not found: _PyObject_Del
Referenced from: /Users/username/local/virtualenv/python2.7.5/lib/python2.7/site-packages/Crypto/Util/_counter.so
Expected in: flat namespace
in /Users/username/local/virtualenv/python2.7.5/lib/python2.7/site-packages/Crypto/Util/_counter.so
There was a problem importing our SSH library (see traceback above).
Please make sure all dependencies are installed and importable.

以前作った virtualenv ではうまく動作するので色々調べていると、どうやら Xcode5.0 インストール以前にビルドした pycropto なら正常に動作しているらしい。Command Line Tool や gmp というライブラリも関係しているようなので virtualenv も含めてもう一度作り直したら動作した。

$ sudo xcode-select --install
$ brew upgrade
$ brew unlink gmp $ brew install gmp
$ brew link gmp
$ virtualenv --no-site-package venv
$ source venv/bin/activate
$ pip install fabric
...
$ fab -V
Fabric 1.8.0
Paramiko 1.12.0
$ python -c "import Crypto; print Crypto.__version__"
2.6.1
$ brew info gmp
gmp: stable 5.1.3
http://gmplib.org/
/usr/local/Cellar/gmp/5.0.5 (12 files, 2.3M)
/usr/local/Cellar/gmp/5.1.1 (12 files, 2.5M)
Built from source
/usr/local/Cellar/gmp/5.1.3 (12 files, 2.5M) *
Built from source
From: https://github.com/mxcl/homebrew/commits/master/Library/Formula/gmp.rb
==> Options
--32-bit
Build 32-bit only

Android アプリ開発のトラブルシューティング

  • エミュレータを別のディスプレイに表示しているとクラッシュする事がある。エミュレータ終了時の挙動がおかしくなっている? 参考) http://stackoverflow.com/questions/13431313/android-emulator-crashing-on-mac
  • android:layout_weight は LinearLayout の子でしか使えない。
  • Run してもエミュレータが起動せず、ログに何もでない時は AVD の Snapshot を Off にしてみる。

一つの Xcode プロジェクトで iOS7.0, iOS6.1, 3.5 inch, 4.0 inch 対応のアプリをビルドする

基本ルール

  • 開発は Xcode5 で行う
  • iOS7.0 と iOS6.1 で Targe を分ける
  • Provisioning Profile はちゃんと設定しておく。
  • iOS6.1 の SDK 用にシンボリックリンクを張っておく。 osx – How to point Xcode to my 10.6 SDK so it can be used as a “Base SDK”? – Stack Overflow
  • Preferences から iPhone Simulator 6.1 をダウンロードしておく。
  • 3.5 inch, 4.0 inch 両方に対応するために Storyboard は x, y が正しく設定されるように作って height, width を viewDidLoad のタイミングで調整する。

iOS7.0

  • BaseSDK, Deployment Target は 7.0 とする。
  • Storyboard の設定はは Open in 5.0 にして、基本の設定は 7.0 用の設定にする。
  • TabBarController の more に含まれる View を Storyboard で作る場合、 Simulated Metrics 設定は、Bar を全て None にするのが良い。

iOS6.1

  • BaseSDK, Deployment Target は 6.0 とする。
  • Storyboard iOS7.0 と同じものを利用して、うまく調整できない場合は iOS6.1 用の Storyboard を別に作る。
  • iOS7.0 の設定で Storyboard を使うと、iOS6.1 にインストールした際に UIButton 等いくつかの要素のスタイルがおかしくなるので、UIButton を継承した Class を storyboard で設定し、初期化時に iOS7.0 側に馴染むようなスタイルに統一してしまう。
  • TabBarController の more に含まれる View を Storyboard で作る場合、 Simulated Metrics 設定は、全て Inferred にする。

その他

Android SDK を Mac の Eclipse にプラグインとして追加する手順

  1. Installing the Eclipse Plugin | Android Developers に書いてある通り、Eclipse の Help > Install New Software から https://dl-ssl.google.com/android/eclipse/ を登録して SDK をインストールする。
  2. Perspective を Java にしておく。
  3. ツールバーに Droid 君のボタンが出ている事を確認。無ければ Window > Customize Perspective から Android*** というボタンをいくつか有効にする。
  4. Droid 君ボタンから下向きの矢印が付いている方のボタンをクリックして SDK Manager を起動。Tools と、必要なバージョンの Android SDK 及び Intel X86 Emulator Accelerator をダウンロードしする。
  5. Android SDK にあるディレクトリを見つけて extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmg を実行。アクセラレータをインストールする。
  6. Eclipse を再起動
  7. スマートフォン型のボタンをクリックして Android Virtual Device Manager を起動。New ボタンを押し新規作成ダイアログを開き、CPU/ABIIntel Atom (x86)Emulation Options > Snapshotチェックを入れて AVD を作成する。

Snapshot 未使用: 1分弱で起動
Snapshot 使用: 10秒程で起動

参考URL: Android エミュレーターを高速化 | オーララインの技術ラボ日記|株式会社オーラライン

今読んでいる Web 漫画メモ

ワンパンマン — 最近とても有名。この作者は話を転がして行くのがとてもうまいと思う。

派遣は谷 — ノリがゆるい能力バトル漫画。派遣の谷派遣と谷 の続編。

胎界主 — ファンタジー。フルカラーでよくこれだけ続けられるもんだ。

ミスティック・マンション — 少女漫画っぽいノリだけど世界観が面白いファンタジー。

スカイスイマー — 紙飛行機バトル漫画。アホくさくて好き。

MODERN FRIED SNAKE — 一番気になっている海外の作品。シュールでオチがつかない話も多いけれど何故か読んでしまう。他の作品を見てみても日本の漫画からかなり影響を受けているようで、この作品はつげ義春と同じような匂いがする。

STRONG FEMLE PROTAGONIST — 途中まで読んで止まっている海外の作品。ヒーローが職業として成立している世界のアメリカに住んでいる、元ヒーローの女の子の話。

“error: failed to attach to process ID 0” というメッセージが出て iOS シミュレータが動作しなくなる

Xcode のプロジェクトのディレクトリ構成を変えていたら、ビルド成功後に

“error: failed to attach to process ID 0”

というメッセージがログに出てシミュレータが動かなくなった。原因が色々あったのでその内容をメモ。

バンドルファイルのキャッシュがおかしくなっている場合

xcode4 – error: failed to attach to process ID 0 – Stack Overflow

  1. 以下のディレクトリに入っているファイルを消す
    ~/Library/Application Support/iPhone Simulator/{Version}/Applications and ~/Library/Developer/Xcode/DerivedData
    (この処理は Organizer の Project タブからでも実行できる)
  2. Product > Clean を実行する
  3. 再度ビルドを行う

デバッガーがおかしくなっている場合

ios simulator – Failed to Attach to Process ID Xcode – Stack Overflow

  1. ツールバーの左上にある Scheme から Edit Scheme を選択して Debugger を GDB や None にしてみる。
  2. 再度ビルドを行う

Folder Reference として “resources” という名前を使っている場合

Xcode compiles my App, but can’t run it in the simulator

  1. “resources” という名前の Folder Reference をプロジェクト上から削除
  2. “resources” フォルダを別の名前にしてプロジェクト上に登録しなおす。
  3. OrganizerProject タブから Derived Data を削除しておく
  4. 再度ビルド

まとめ

結局一番最後のものが原因だったけれど調査にかなり時間がかかってしまった。もう少しましなエラーメッセージは出ないものなのか・・・。

Group と Folder Reference の比較はこちら Xcode Groups vs. Folder References

 

iOS 開発でよく使うライブラリ

  • JSONKit (BSD License) — JSON 関連の処理。ARC 環境でビルドするとエラーになるので Build Phases > Compile Sources で JSONKit.m に -fno-objec-arc -w フラグを立てておく。
  • FMDB (MIT License) — SQLite 周りの処理。FMResultSet#resultDictionary を使うとフィールドの型を勝手に処理してくれる。
  • RegexKitLite (BSD License) — 正規表現処理。ビルドが少し面倒だった気がする。
  • ASIHTTPRequest (BSD License) — HTTP Request を簡単に処理するためのライブラリ。
  • AFNetworking  (MIT License) — ASIHTTPRequest の後継プロジェクト。
  • Reachability (ライセンスはソース内に記述あり) — ネットワークの状態をチェックするための処理。Apple のサンプルコード。

ゲノム、染色体、遺伝子、DNA の違い

遺伝子関連用語を調べた際のメモ。

全体図

genomics

Genome (ゲノム)

遺伝情報すべてをまとめてゲノムと呼ぶ。

cell

Chromosome (染色体)

DNA 等で構成される遺伝情報の入れ物。ヒトゲノムには 1-22番染色体と、X, Y 染色体が含まれている。両端はテロメアと呼ばれ、中心の結合部分はセントロメアと呼ばれている。また、染色体の表現で良く見かける縞はバンドと呼ばれるもので、実験で着色した際に浮き出る部分を黒く表している。

chromosome

Gene (遺伝子)

DNA 中で遺伝情報を含む領域。実際に人体を作る際に設計図として利用されるエクソンと、設計図としては使われないイントロンに分かれる。

gene

DNA (デオキシリボ核酸)

染色体を構成する2重らせん構造。DNA を構成する塩基の並びかたを塩基配列と言う。

dna

その他

  • github で 23AndMe の解析結果を公開している人が何人か居る。これは SNP 解析のデータで、全ゲノムのデータがあるわけではない。
  • github 上で全ゲノムのデータを公開している人も居る。
  • 遺伝子分野の経営者や大学教授も、何人か実名で全ゲノムデータを公開している。