amazon

17.11.12

MacPortsでインストールした複数バージョンアプリの切替 (pythonの場合)

MacPortsでインストールしたアプリが複数バージョン共存している環境で、
特定のバージョンを指定したい場合以下の方法で行う

まず、インストールされているバージョンの確認(僕の環境の例)
$ python -V
Python 2.7.3
また、ターミナルで「python」というコマンドにひも付け(リンク)されているファイルがどこにあるかは、
$ which python
または、
$ type python
であるが、オプション-aをつければひも付け(リンク)の一覧を表示できる
$ which -a python
/Library/Frameworks/Python.framework/Versions/2.6/bin/python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
/usr/local/bin/python
/usr/bin/python
/opt/local/bin/python

$ type -a python
python is /Library/Frameworks/Python.framework/Versions/2.6/bin/python
python is /Library/Frameworks/Python.framework/Versions/2.7/bin/python
python is /usr/local/bin/python
python is /usr/bin/python
python is /opt/local/bin/python

で、本題のバージョンの切替は以下のコマンド
ここではpython2.6に切り替えた
$ sudo port select --set python python26
$
$ python -V
Python 2.6.6
ちなみに、selectできる一覧は以下のようにして表示出来る
$ port select --list python
Available versions for python:
none
python25-apple
python26 (active)
python26-apple
python27
python32

今回は、64bitのMacではpython2.7用のNumpyが動かないのでダウングレードした次第
ひも付け(リンク)の変更だけならaliasでもできる

追記1
この記事はMacPortsのひも付けの話。
僕の環境では、alias python="/opt/local/bin/python"としてあります。 つまり、pythonを呼び出すと/opt/local/bin/pythonが呼び出され、MacPortsで指定したバージョンが呼び出されるということです。

追記2
ターミナルでpythonと打った時に呼び出されるpythonについてはこちら

15.10.12

Arduino外部ライブラリイントール時のerror

こちらのサイトを参考にArduinoをSleep.hを使ってスリープしようと試みたときのエラーについて。
環境はMacだ。

ライブラリのインストール先は、
/Applications/Arduino.appで右クリックし「パッケージの内容を表示」した先。
/Applications/Arduino.app/Contents/Resources/Java/libraries/に
SleepとWatchdogというフォルダを作成し、Sleep.h, Sleep.cppとWatchdog.h, Watchdog.cppを移動。

で、参考ページの通りにコードを書いてコンパイルすると次のエラーが出た。
/Applications/Arduino.app/Contents/Resources/Java/libraries/Watchdog/Watchdog.cpp: In member function 'void WatchdogClass::enable(uint8_t)':
/Applications/Arduino.app/Contents/Resources/Java/libraries/Watchdog/Watchdog.cpp:38: error: 'cli' was not declared in this scope
/Applications/Arduino.app/Contents/Resources/Java/libraries/Watchdog/Watchdog.cpp:43: error: 'sei' was not declared in this scope
/Applications/Arduino.app/Contents/Resources/Java/libraries/Watchdog/Watchdog.cpp: At global scope:
/Applications/Arduino.app/Contents/Resources/Java/libraries/Watchdog/Watchdog.cpp:50: error:
expected constructor, destructor, or type conversion before '(' token
WatchdogClassのenableメソッドで、cli();やsei();が宣言されていないということだ。
cliやseiは割り込みに関するマクロだそうだ。(参考)

そこで、avr/interrupt.hをインクルードする。
Watchdog.hまたはWatchdog.cppに
#include <avr/interrupt.h>
これで先のエラーは消えるが、今度は、
/Applications/Arduino.app/Contents/Resources/Java/libraries/Sleep/Sleep.cpp: In static member function 'static void SleepClass::powerDownAndWakeupExternalEvent(uint8_t)':
/Applications/Arduino.app/Contents/Resources/Java/libraries/Sleep/Sleep.cpp:56: error: 'LOW' was not declared in this scope
/Applications/Arduino.app/Contents/Resources/Java/libraries/Sleep/Sleep.cpp:56: error: 'attachInterrupt' was not declared in this scope
/Applications/Arduino.app/Contents/Resources/Java/libraries/Sleep/Sleep.cpp:58: error: 'detachInterrupt' was not declared in this scope
となる。

SleepがArduinoで宣言されている定数を認識できていないということだ。

Arduinoの定数の宣言は/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Arduino.hでされているので、
Sleep.hまたはSleep.cppに次のようにヘッダーをインクルードすればよい。
#include <Arduino.h>

15.9.12

iTunesでコメントを検索対象にするには

iTunesのコメントがタグのように使えるということで、
試したがうまくいかなかった。
曲にコメントを入れても右上の検索窓から検索できないのだ。

コメントを検索対象にするには、
[表示]-[リスト]または[表示]-[Cover Flow]
で、
[名前]や[アーティスト]という見出しの上で右クリック(または[表示]-[表示オプション...])して、
コメントをチェックして表示しなければならないようだ。

注意しなければならないのは、
[表示]-[リスト]または[表示]-[Cover Flow]
でコメントを表示させること。
[表示]-[アルバムリスト]
でコメントを表示してもコメントを検索できない。

コメントはカンマで区切ればタグのように使えるので便利。


iTunes can search music with "comment", which can be used like a tag.
If you would like to use multipel tags, separate with comma.
However by default, the "comment" is not searchable.
To do this, add the comment column by right-clicking on a [VIEW]-[LIST] or [VIEW]-[COVER FLOW] header not [VIEW]-[ALBUM LIST] header.