難しいこと気にせず、指定した文字列を "\" でつなげてくれる「お手軽深いパス生成器」と思っていたのですーがー
var path = Path.Combine(@"c:\foo", @"\kashira") // path == "\kashira"
あー ('A`)
言われてみれば「ですよねー」っていう。 頭に "\" ついてたらカレントドライブ直下からの絶対パス的な扱いですもんねーっていう。
投げる値はちゃんと面倒見ないとアカンすなぁ…
難しいこと気にせず、指定した文字列を "\" でつなげてくれる「お手軽深いパス生成器」と思っていたのですーがー
var path = Path.Combine(@"c:\foo", @"\kashira") // path == "\kashira"
あー ('A`)
言われてみれば「ですよねー」っていう。 頭に "\" ついてたらカレントドライブ直下からの絶対パス的な扱いですもんねーっていう。
投げる値はちゃんと面倒見ないとアカンすなぁ…
System::Call '$INSTDIR\Kanaria::Kashira(i, i) i($HWNDPARENT, 0).r0 ? u'
こんな記述だと、インストールパスに丸カッコ "()" が含まれている場合、DLL内関数呼び出しに失敗します。 $INSTDIR
内に展開されるカッコでパースが上手くできないからでしょう。 爆発しろ!
以下で対応可能です
# ↓SetCurrentDirectory() SetOutPath "$INSTDIR" # ↓カレントにある Kanaria.dll を読み込む == 相対DLL読み込み System::Call 'Kanaria::Kashira(i, i) i($HWNDPARENT, 0).r0 ? u'
64bit環境でデフォルトのインストール先が C:\Program Files (x86) だったりするので、結構ワナにはまりやすいですHAHAHA!!!! 爆発しろ!
Traceback (most recent call last): File "foo.py", line 48, intest() File "foo.py", line 33, in test for status in tweepy.Cursor(api.user_timeline).items(50) : File "tweepy\cursor.py", line 181, in next self.current_page = self.page_iterator.next() File "tweepy\cursor.py", line 101, in next old_parser = self.method.__self__.parser AttributeError: 'function' object has no attribute '__self__'
AttributeError: 'function' object has no attribute '__self__' ってなんだよお前ぇええ!! 何で見つからないんよぉぉぉ!!! ('A`)
tweepy version 2.3 / python 2.6.6 です
# Set pagination mode if 'cursor' in APIMethod.allowed_param: _call.pagination_mode = 'cursor' elif 'max_id' in APIMethod.allowed_param and \ 'since_id' in APIMethod.allowed_param: _call.pagination_mode = 'id' elif 'page' in APIMethod.allowed_param: _call.pagination_mode = 'page' _call.__self__ = config['api'] # **** !! append !! **** # return _call
"function" なオブジェクトに "__self__" な属性が居ない事が原因です。 まんまじゃねか! トン!
……すいません(ぉ
落ちてるところの "self.method.__self__.parser"
の self.method
は、APIクラス内のメソッドが代入されます。 user_timeline
とか search
とか。 で、この関数オブジェクトに __self__ が無いわけですが、api.user_timeline
とかやりゃ、'api'というインスタンス付で関数オブジェクト取れるんちゃうのー? …と思ってしまう所ですが、このメソッドは実のところプロパティで return bind_api(...)
を返してる。 build_api()
は、builder.py の def _call(*args, **kwargs)
の関数オブジェクトを返してる。 _call()
関数内関数なので self なんて持つわけがない。 俺の関数がこんなに self を持たないわけがない!
→ return するまでに call の __self__ プロパティを作成、'api' のインスタンス設定してあげました。
おわり
python通な人ではないので、正しく解決方法かは分からぬですが*1、まぁ俺ローカルでは動いたから、まぁいいかなって…(ぉ
*1:特に __self__ を自前で代入とか良いんだろうか…
Picasa3 で画像を管理して、最近ぷよクエのキャプチャ画像も管理するようにしました。
多くの画像の中から必要な画像を選び、そのファイルを別フォルダにコピーしたい
blog更新用にとウン百枚とある中から必要な画像を選択 → エクスポートして必要な画像をコピーしたのですが、出力フォーマットが JPEG強制なんですよね…。 元ファイルはiPad/AndroidのPNGなキャプチャ画像なので、無駄な劣化は避けたいところであります
↑JPEGじゃないですかヤダー!
↑管理元ファイルはPNG
代案を考えてみはするのですが…
うーむ…?
※以下、かなり例外的な事項な気がしてるので、まずは他のサイト見た方が良いと思います^^;
http-backend で公開しているリポジトリに push すると 403 が帰ってきて、apache さんの errorログに 「Service not enabled: 'receive-pack'」 と残ります。 git config receivepack true もしたのに……
リポジトリの構成が怪しい状態でした。 こんな感じ……………… なんで branches とか config とか諸々ダブってるの!?
-- .git | ||
-- HEAD | ||
-- branches | ||
-- config | ||
-- description | ||
-- hg2git-heads | ||
-- hg2git-mapping | ||
-- hg2git-marks | ||
-- hg2git-state | ||
-- hooks | ||
-- applypatch-msg.sample | ||
-- commit-msg.sample | ||
-- post-update.sample | ||
-- pre-applypatch.sample | ||
-- pre-commit.sample | ||
-- pre-rebase.sample | ||
-- prepare-commit-msg.sample | ||
`-- update.sample | ||
-- info | ||
-- exclude | ||
`-- refs | ||
-- logs | ||
`-- refs | ||
`-- heads | ||
`-- master | ||
-- objects | ||
-- info | ||
`-- packs | ||
`-- pack | ||
-- pack-8b5641ffa110db925c030900466b920c3bb6c892.idx | ||
`-- pack-8b5641ffa110db925c030900466b920c3bb6c892.pack | ||
`-- refs | ||
-- heads | ||
`-- master | ||
`-- tags | ||
`-- b1 | ||
-- HEAD | ||
-- branches | ||
-- config | ||
-- description | ||
-- hooks | ||
-- applypatch-msg.sample | ||
-- commit-msg.sample | ||
-- post-update | ||
-- pre-applypatch.sample | ||
-- pre-commit.sample | ||
-- pre-rebase.sample | ||
-- prepare-commit-msg.sample | ||
`-- update.sample | ||
-- info | ||
`-- exclude | ||
-- objects | ||
-- info | ||
`-- pack |
.git にある方の諸々を1コ上の階層の所に持ってくるという非常に危険な力業をした後に、再度 git config http.receivepack true した所、push 出来るようになりました。
msysgit を上書きせずに、消してから最新版を入れてみた所動作するようになりました。
私のケースで 且つ 「おそらく」 の情報になりますが…
msysgit の古いバージョン(具体的なバージョン番号は不明すまぬ) から、1.9.2 に上書きインストールした後、gitを利用したところ「DLLが無いんだけど!死ねよ!」と言われ始めたものと思われます。
これは、古いバージョンには含まれているけど、1.9.2 には含まれていない git-http-push.exe が libcurl-4.dll を参照していたため……すなわち、git-http-push.exe が更新されずに古いままだったからですね。
…まぁ、それだったら、libcurl-4.dll だって消えずに残ってるハズなんじゃねぇの!? …と言われると、確かにそうなのですが、ドライブ中全てを検索してもそんな DLL は存在せず。 うーむ…
…というわけで、本当の真相は "えいえんのせかい" に吹っ飛んでしまいましたが^^;、少なくとも 再インストール したら動作するようになったのは間違いないです。 ……とはいいつつ、私の場合公式HPから直接ダウンロードできるものではなく、有志の方が作った git-http-push.exe 入りのインストーラーを利用した形ではありますけどもももも^^;
msysgit 1.9.2 (preview20140411) で、WebDavで構築した自鯖のgitリポジトリサーバーに push しようとしたら、"http-push なんで無ぇーよ。アホか。糞か。死ねよそれと便座カバー" と怒られました…
次の google グループ ディスカッション内の下の方にあるファイルを利用すれば解決しました。ありがとう Erik Faye-Lund さん!
Git\libexec\git-core に git-http-push.exe が無いからそうな。
古いバージョンにあったのに、新しいバージョンで無くなってる理由は不明。なにかあるのかも知れない。