ExtJSをSSLサイトに使うとセキュリティ警告が出る

ExtJSをSSLで保護したサイトに使うと、ブラウザーのセキュリティ警告が出る。

調べてみたら、ExtJSが外部のgifファイル http://extjs.com/s.gif にアクセスしているのが原因だった。

下の一文をページに追加して解決した。

Ext.BLANK_IMAGE_URL = ” … /resources/images/default/s.gif”;

この方法は3年前の下記記事で紹介されている。

http://d.hatena.ne.jp/yshgt/20080701/1214881433

今だにそのままというのは、ExtJSの使用状況の調査にでも使っているということだろう。

Javascriptで連想配列のlengthを見てはいけない

Javascriptで、配列と同じように連想配列でもlengthで要素数が取れるとばかり思っていたのだが、違った。これに気づかずずいぶん時間を取られた。

JavaScript の配列と連想配列の違い – IT戦記

連想配列のほうがObjectで、配列はObjectからの派生クラスという説明でやっと附に落ちた。ひょっとしてJavascript使いの間では常識?

ExtJSでtreeNodeのselectをコールするとエラーになる

ExtJSを使っていて、ツリー表示をするためにExt.tree.TreePanelとExt.tree.TreeNodeを使っている。ページを開いた時にノードの一つをデフォルト選択状態で表示させたくてTreeNode.select()をコールするのだが、なぜかルート下のノード以外をデフォルト選択させようとするとJavaScriptエラーになる。

色々調べていたら、結局selectがコールされるノードは親ノードがexpandされて表示されている状態でないとダメということがわかった。

結局、デフォルト選択させるノードのparentを順にたどってルートまでの全てのノードを取得し、ルート側から順にexpandさせることで解決した。

GData Python clientのクエリーでurl.fetchのレスポンスタイムアウトを5秒からのばす

GAE上でGdata Python Clientを使い、サービスのクエリーで「DownloadError ApplicationError: 5」が稀に発生するので原因を調べていたら、以下の記事からライブラリ内部のurl.fetchで5秒タイムアウトしていることがわかった。

GAEのurl.fetchでDownloadError ApplicationError: 5 | ウフル技術ブログ

5秒はきついので10秒にのばそうと調べたら、run_on_appengineの引数に”deadline=10″を渡せばいいことがわかった。

gdata.alt.appengine.run_on_appengine(calendar_service, deadline=10)

introセッション(高田馬場)

夜の10時頃イントロに行く。

店内に入ってみると今日はそれほど混んでいない。ベースはお店が雇ったベーシスト一人だったが、11時頃もう一人やってきた。私はFのブルースと”When the lites are low”、あともう一曲くらい演奏する。ピアニストは3人いたが皆レベルが高かった。

小田急の町田行き最終電車に間に合うようにイントロを12時に出たが、人身事故で山手線がまさかの停車。終電に間に合わず新宿のマンガ喫茶で仮眠をとり朝帰る。

お年玉

新年が開けて、長男がお年玉を握りしめて行ったのは町田のパーツショップ「サトー電気」だった。

長男は電子工作マニアで、何を作りたいのか聞くと「DC安定化電源が作りたい」とのこと。なんともマニアックである。「電子工作大全集」みたいな分厚い本を持ってサトー電気へ行き、本の部品表に載っている部品一式(3000円くらい)を買ってきた。「トヨデンのトランスが」とか私に聞かれてももう私にはついていけないレベルである。サトー電気の人やはんだづけカフェスイッチサイエンスの人にいろんな質問をしてまわって相当勉強したらしい。

部品を買って家に変えると早速作り始めた。

DC安定化電源作成中

家庭用交流電源を直流電源に変換すること自体はうまくいったらしい。細かい動きがおかしいのでテスターを色々なところに当てていたらショートしてしまったらしく、ヒューズ菅が1本だめになってしまった。サトー電気の人の薦めでヒューズ菅は2本買っていたのだが、2本目が見つからず今日の作業はここで一旦終了である。

MASSI賀詞交歓会

今日は、私の参加しているNPO法人ソフトウェア振興会(MASSI)の賀詞交歓会に行ってきた。

会場はJR町田駅近くの「ホテル ラポール千寿閣」。賀詞交歓会というのはMASSIの会員企業の社長さんたちが集まる新年パーティーのようなものだ。MASSIは基本的には企業が参加するものだが、問い合わせたところ自営業が参加しても問題ないということだったので、2009年の終わりから私も参加させてもらっている。

MASSIは、年に一回会員企業が集まる「賀詞交歓会」を開いたり、外部から講師を呼んで「研修会」や「セミナー」などの活動を行っている。私の主な参加目的は会員企業とのコネ作り、つまり営業活動だ。去年は賀詞交歓会で一生懸命名刺を交換して顔を売って歩いたおかげで、MASSIに参加している会社の案件をお手伝いすることができた。

ところで今年の賀詞交歓会も町田市長の石坂氏や前衆議院議員の伊藤氏、都議会議員の小磯氏や吉原氏が来ていた。なぜか保守系の政治家は日頃からこういう会に来てアピールするようだ。政治家以外では町田商工会議所会頭の平本氏や近隣のソフトウェア関連業界団体の代表の方々が来ていた。

カレンダーイベントが25個以上検索されない(Python/GData API)

GData APIでカレンダーイベントを取得したら、なぜか一定以上のデータが取れてこない。
調べてみたら、CalendarEventQueryの結果はデフォルトで25個までしか取れてこない仕様だった。
デフォルト値をうんと大きくセットすることにした。
query = gdata.calendar.service.CalendarEventQuery(username, ‘private’, ‘full’)
query.max_results = 1000

参考:Setting max_results on private CalendarEventQuery for non-default calendar

2010年を振り返る

今年も色々なことがありました。

  • 5月 「みんなのシフト表」OEM版 「東光オーエーシステム NBS The Shift」が本稼働開始しました。
  • 8月 技術評論社 Web+DB Press Vol.58にインタビュー記事が載りました
  • 10月 「みんなのシフト表」をGoogle AppsドメインにインストールできるSaaSアプリケーションとし、Google Apps Marketplaceより販売をはじめました。
  • 11月 クラウド業務アプリケーションの日本の第一人者であるベイテックシステムズ様に販売総代理店になっていただきました。またサイトの名前が「サテライトシフト表」に変わりました。

来年も皆様よろしくお願いいたします。

ImportError: cannot import name timegm

GAE/Pthonでこんなエラーが出た。

from calendar import timegm
ImportError: cannot import name timegm

色々調べてみてわかったのが、「calendar.py」という名前でモジュールを作ったところcalendarライブラリと勘違いして読み込んだらしい。
「calendar.py」を「calendar_xxx.py」 みたいな名前にしてソースをEclipseの右クリックメニューから「Refresh」し、もう一度やり直したら出なくなった。