はんだづけカフェ

息子と娘をつれて秋葉原へ行ってきた。

息子は最近毎週のように秋葉原に来て秋月電子通商で電子工作キットを買ってはんだづけカフェで作っている。

はんだづけカフェ

娘もそれを見て作りたいと言い出したので、マルツで子供向けのキット「はこぴか」を買ってはんだづけカフェで作ることにした。

IMG_0508

 

ここではUstreamでずっと生中継で店内の様子を配信している。息子は「常連の少年」と噂になっているようだった。

息子はLEDで文字がスクロールする時計を作っていたのだが、熱で三端子レギュレータがだめになり、カフェのスタッフの話では付属の12V電源がだめなのではないかという話だった。キットを持って秋月に行き、聞いてみると電源の接続の仕方が間違っていた事がわかり、無事動くようになった。秋月のお店のおじさんは「これ、本当に君が作ったの?」と驚いた様子だった。

確定申告

今年も確定申告の季節がやってきた。去年からe-taxで申告しているので税務署に行かずにネットから申告である。

子供が寝静まって10時頃から申告作業をはじめ、2時間ちょっとで申告が終わる。開業費の償却の仕方が思い出せず苦労したが、大方は問題なくスムーズに申告できた。相変わらず複雑だが税制というものはどこの国でも複雑なので仕方がない。

IEのJavascriptで「識別子、文字列または数がありません。」エラー

IEの場合だけガジェットのロード時にエラーになってエントリーポイントがキックされない。FireFoxはOK、ChromeもOK、SafariもOK。IEだけNG。エラーメッセージは「識別子、文字列または数がありません。」

しばらく悩んでいたが、検索するとあっさり解決した。

IEのjavascriptエラー「識別子、文字列または数がありません。 」

他にも同じ言及をしているページが多数ある。IE-Javascriptでみんな一度は遭遇するメジャーな問題らしい。

オブジェクトの記法で最後の要素の後ろにカンマを許容するかどうかで

  • 許容しない(IE)
  • 許容する(その他)

で動作が変わってしまうのが原因だった。Javascriptの規格上は許容しないのが正解、つまりIEが正しい珍しいケースだ。

しかしJavascript以外の動的言語では要素の最後にカンマを許容するのが普通だ。PythonやPHPではエラーにならないし、下記ページによるとPerlやRubyでも許容するらしい。

連想配列の最後にカンマを入れてはいけない言語もある – すぎゃーんメモ

悩ましい問題だ。

argument of type ‘bool’ is not iterable – GData Python Client

PythonのGData clientを使っていて、CalendarEventQueryでカレンダーイベントを取得している。繰り返しイベントを展開して取得しようと考え、

http://d.hatena.ne.jp/shingotada/20070529/1180449643

を参考に

query.singleevents=True

とセットしたところ、

argument of type ‘bool’ is not iterable

というエラーが出た。なぜ?と思い調べたところ、このパラメータの型は文字列だったので、

query.singleevents=’true’

としたところ正しくクエリーが処理された。

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)