mac OSX 10.8にPIL、matplotlibをpipでインストール
忘れないようにメモ。
まず、xcodeのcommand line toolをいれる。
まずは、PILをインストール。
で、libpng、libjpeg、freetypeをインストール。
これは、個別にもインストールできると思うけど、homebrewを使うのが簡単。
pipでインストール。
ちなみに、libjpegはなくてもpipでインスールできるが、インストール後PILでjpegをconvertする際にエラーがでる。
もし、libjpegなしでインストールしちゃった場合は、pipでPILを消す→libjepegインストールする。
次に、matplotlibをインストール。
pkg-configをインストール。
これも、homebrew使うのが簡単。
instagramのoauth
insta Oauthのexplicit flowがうまくいかない。
step3で「No matching code found.」って、おこられる。
ちゃんとcode送ってると思うけど
implicit flow使う事にする
循環importはダメ!?
pythonで、お互いをimportし合うようなモジュール構成が原因でエラーになった。
詳細はまだ調べてないけど、そもそも相互依存するモジュール分割は少なくした方がいいと思ったので、モジュールの依存関係を修正することでエラー回避。
jQueryのeachのreturnがうまくいかなかった
jQueryのプラグイン作ってて、以下のコードが思った通り動かなかった。
(CoffeeScript使ってます。)
$.fn.XXXX(settings) = (settings) -> this.each () -> self = $(this) switch settings.action when 'init' # Do something when 'get' return self.data 'data_key'
上のコードで、
$('selector').XXXX action: 'get'
ってしたら、selectorで選択した最初のエレメントのデータが帰ってきてほしいけど、$('select')自体が返ってくる。
マニュアル見たら、eachでreturnしたら処理を中断するみたいな事が書いてたけどな。
結局以下に書き直した。
$.fn.XXXX(settings) = (settings) -> if settings.action == 'get' return this.data 'data_key' this.each () -> self = $(this) switch settings.action when 'init' # Do something
勘違いが合ったら誰か教えて下さい。
PHPのrequire_onceがおかしいと思う
PHPの通販サイトのオープンソース EC-Cube を使ってて、
[17-May-2010 19:19:31] PHP Fatal error: Cannot redeclare class Net_URL in ...
のエラーが。。。
昨日まではバッチリ動いてたのに。。。
何もプログラムいじってないのに。。。
debug_backtrace関数と、get_decleared_classesの関数を使ってプログラムをデバッグしてみると、
// data/class/helper/SC_Helper_Mobile.phpの25行目 require_once(CLASS_PATH . '../module/Net/URL.php'); // data/class/pages/LC_Page.phpの25行目 require_once(DATA_PATH . 'module/Net/URL.php');
の2箇所でURL.phpが読み込まれてる。。。
onceだろ!!
googleで検索したら、
EC-Cubeに限らず他のオープンソースを使っててても
この現象が生じるみたい。
EC-Cubeのサポートフォーラムにも、(URL.phpじゃないけど) 同様のエラーが報告されてた。
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=4077&forum=2&start=10
の下の方。
get_include_path使って、他のライブラリとの競合とかも調べたけど、問題なさそう。
結局、PCを再起動したらエラーが起きなくなった。。。
PHPのバージョンは、現時点で最新の5.3.2です。
たちが悪いイタズラです。。。2時間返して。。。
PHPの関数・クラス定義のスコープについて
PHPのクラス定義のスコープに付いてのメモ。
PHPでは、トップレベルに記述されたクラス・関数定義は、
スクリプトファイルの実行前に定義が読み込まれます。
例えば、以下のコードで、a.phpを実行した場合、正常に動作します。
/* a.php */
require 'b.php';
class A {
}/* b.php */
class B extends A {
}
クラスAの定義の前に、クラスAを継承したクラスBの定義を含むb.phpを読み込んでいます。
Aの定義が、requireの前に読み込まれてるから、エラーが起きないようです。
一方、同じトップレベルでも、ifやtry等で括ったなかに定義を書くと先読みされません。
例えば、以下のコードはclass undefinedのエラーが発生します。
/* a.php */
require 'b.php';
if (true) {
class A {
}
}/* b.php */
class B extends A {
}
if文の中に記述しても、関数・クラス定義はグローバルのスコープで定義されるのですが、
定義の先読みの有無に関しては、動作が異なるって事でしょうか。
以下のコードは、動作します。
/* a.php */
if (true) {
class A {
}
}
require 'b.php';/* b.php */
class B extends A {
}
クラス定義の代わりに、関数を定義しても同様のようです。
ちなみに、以下のようにgoto文を使ってクラス定義をスキップしても、
トップレベルに記述した場合は、クラスが定義されます。
goto jump;
class A {
}
jump: