2008/11/22
[gadget][bugFix]twitgadget1.1には実装漏れがあります
サイドバーにTwitterのタイムラインを表示するtwitgadetというガジェットのがあるんですが、返信タイムラインを取得する機能があるのに呼び出すのを忘れているというバグ?実装漏れ?をみつけたのでfixしてみます。
C:\Users\<UserName>
とりあえず現状では返信タイムラインが呼ばれないのは間違いないです。とりあえず返信タイムラインを呼ぶようにfix。367行目あたり
Twigadge.getFriendsTimeline();
を
Twigadge.getReply();
に変更。
533行目あたり。
Twigadge.refreshTL(); //
を
Twigadge.getFriendsTimeline(); //
に変更。
C:\Users\<UserName>\AppData\Local\Microsoft\Windows Sidebar\Gadgets\twigadge-1.1[1].gadget\js\gadget.js90行目あたり
Twigadge.getReply();
の下に次の行追加
Twigadge.refreshTL();
これでとりあえず返信タイムラインは取得できます。
ダイレクトメッセージも設定に関係なく最初の一回しか呼ばれないっぽいです。
これを直すには
C:\Users\<UserName>
658行目あたり
case
MODES.system:
Twigadge.refreshTL();
break;
case
MODES.dm:
Twigadge.refreshDM();
break;
を
case
MODES.system:
Twigadge.refreshTL();
Twigadge.refreshDM();
break;
case
MODES.dm:
break;
とします。
これで作者さんの意図どおりかわかりませんが、とりあえず説明書通りには動きます、たぶん。
元記事:http://blogs.wankuma.com/mutaguchi/archive/2008/11/22/161950.aspx2008/03/17
[IronPython].Net Frameworkメソッド呼び出し urllibの代替
IronPythonもちょっとやろうと思いまして、荒井さんのIronPythonの世界などを読みつつ研究。 Python2.5ではファイルのダウンロードは組み込みライブラリのurllibを使うのが定番みたいです。
#!/usr/bin/python import urllib url = 'http://img.yahoo.co.jp/images/main7.gif' dest = 'D:\\script\\test.gif' file = urllib.urlopen(url).read() try : f=open(dest, "wb") f.write(file); f.close except : print "file error."
(20:35追記)このpyスクリプトの元ネタはhttp://www.geocities.jp/mirrorhenkan/python/getimg.py.txtです。作者さんに転載の了承を得ています。トップページhttp://www.geocities.jp/mirrorhenkan/からもいろいろ面白いコンテンツに飛べます。
IronPython 1.1.1ではurllibが含まれておらず、Python2.5.2に含まれているライブラリを使うのも互換性の問題で難しいようです。
import sys sys.path.append("C:\\Program Files\\Python25\\lib")
なんて頭につけてもエラーになります。
でもIronPythonは.NET Framework上で動作する言語なので、これらのライブラリに含まれるクラスが使えます。System.Net.WebClientを使いましょう。なお、System.Net名前空間に含まれるクラスはデフォルトでロードされているので、
import clr clr.AddReference("System.Net")
などとする必要はありません。これはPowerShellと同様です。
from System.Net import * url = 'http://img.yahoo.co.jp/images/main7.gif' dest = 'D:\\script\\test.gif' wc = WebClient() wc.DownloadFile(url, dest)
こんな感じ。最初、DownloadFileがスタティックメソッドと勘違いしていて、インスタンスを作る(wc = WebClient())のを忘れてうまく動かなかったですw
元記事:http://blogs.wankuma.com/mutaguchi/archive/2008/03/17/128160.aspx2007/07/28
[gadget][nDigiTVProgram]非同期処理化してフリーズ防止
窓の杜 - 【NEWS】Windows Vista用ガジェットパック「nDigiGadgets」v0.11が公開、計16本を収録
http://www.forest.impress.co.jp/article/2006/09/21/ndigigadgets011.html
というガジェットシリーズの中に、nDigiTVProgramという、ライブドアのテレビ番組表RSSを取得して表示するガジェットがあり愛用しています。このガジェットの中でMicrosoft.XMLDOMを同期処理(xml.async = false;)で呼び出しているのですが、たまによくloadメソッド実行時に固まります。やっかいなのはガジェットは一つがフリーズすると全体を巻き込むところですね。非同期化するとこの問題は解消します。で、やり方は、
ローカルの XML ドキュメントをロードする (hPod)
http://hwat.sakura.ne.jp/hpod/200612/22-220000/
に載っています。
asyncプロパティをtrueにし、onreadystatechangeイベントに匿名関数を割り当てます。
... var xml = new ActiveXObject("Microsoft.XMLDOM"); //xml.async = false; xml.async = true; xml.onreadystatechange = function (){ if( xml.readyState == 4 ){ // ロード完了時に、何かする var rdf; ....この中にもともとloadの後にあった処理を移動させる... statustext.title = "次のデータ取得は"+ mindate.getHours() + "時" + mindate.getMinutes() + "分\n今すぐ取得するにはクリック" } } xml.load(uri); } var lastLoadText = ""; ...
てな感じで。
すべて他の方のネタでごめんなさいですー。私もガジェット作成続きしなきゃ・・・
ちなみにこのガジェットの作者さん、MSMVPを受賞されたそうです。おめでとうございますー。
元記事:http://blogs.wankuma.com/mutaguchi/archive/2007/07/28/87488.aspx
Copyright © 2005-2018 Daisuke Mutaguchi All rights reserved
mailto: mutaguchi at roy.hi-ho.ne.jp
プライバシーポリシー