カレンダーガジェットでポーリングに関する大事なお知らせ
1分に1回のポーリングでも、しばらく置いておくとカレンダーが重たくなるので、やめた方がいいぞ!ポーリングの頻度というより、長時間コンスタントにコンテナからイベント取ろうとするのが悪いみたい。
必殺「最新の状態にする」ボタンしかないのか。
ガジェットがキャッシュに残って激重
カレンダーにガジェットを追加して、そこでポーリングする実験。
それ程の負荷でもないだろうと思って、1秒に1回にしてガジェット追加。その直後からカレンダーが激重に。
さっさとガジェット削除したが状況が一向によくならない。仕事にならないよー。
他の人の予定が全く取れない・・・非道い時にはカレンダー自体表示されない。ブラウザ変えてもだめ。PC再起動もだめ。他の人が使ってる別PC、その人のアカウントだとカレンダーはサクサクなのだが、俺のアカウントでログインすると激重。
これはガジェットがガジェットコンテナ側にキャッシュされてるのであろうというんで、カレンダーのURLの最後にクエリパラメータ付けて
https://www.google.com/calendar/hosted/example.com/render?nogadgetcache=1
ってやるといいという社内情報を元にやってみたが、だめだー。
ネットで調べたら、こんな記事が。
http://www.adambergman.com/2008/06/09/google-gadget-cache/
?nocache だけでいいのか。
なおった。
軽い、軽いぞー!総統!歩けます!
これはガジェットに対するオプションみたいなもんじゃなくて、ガジェットコンテナに対するコマンドみたいな感じで働くらしい。
て事はだ、今まで最新版デプロイした後なかなか表示が更新されないので、ガジェット削除・追加を繰り返してたのも、CSS置き換わらないので、いちいちリンクに日付をクエリパラメータで付けてたのも、このおまじない使えば不要という事になるのではないのか?
試してませんが。
結局ポーリングは10秒に1回で正常動作。恐いのでまあ30秒に1回にしとくかなあ。どうせカレンダー本体が更新されなきゃ内容変わらないし。
Googleに優しいお言葉
google gadget cache ガジェット キャッシュ クリア
複数iPhone/iPod Touchと1台のMacでなんとかする
我が家にiMacが来ることになった。iTunesの運用検討中。
要望
- Macは1台でアカウントを二人で切り替えて運用したい
- 俺とヨメでそれぞれiPod Touch、iPhoneを使いたい
- 音楽ライブラリは共通で使いたい
- アプリはそれぞれのiTunesアカウントで管理したい
- AirPlayで遊びたい
試してみた
共有機能・ホームシェアリング
- Macが1台なので意味がない。
NASに保存してiTunesサーバを立てる
- iPhone/iPod Touchに転送できないらしいので論外。
ライブラリ自体を共有
- option押しながらiTunes起動するとライブラリを選択出来るので、NASなり共有ディレクトリなりに構えたライブラリを二人で共有する。
- 一度選択してしまえば次回起動時はoption不要なので通常運用でOK。
- お互いにCD吸出ししてライブラリを更新しても、お互いにちゃんと反映される。
- 複数PCでこれをやると、ゴミファイルが出来たりWindowsが絡むと拡張子だなんだで問題があるらしいが、アカウント切り替えで使うので、実質シングルユーザーゆえ問題なし。
なのだが。
- iTunesアカウントまで共有してしまうので、アプリの同期に問題あり。実際にやってみてはいないんだが、難儀な事になりそう。
検討してみる
要するに、音楽ライブラリの共有は、ライブラリ自体の共有で問題ないわけだ。
で、アプリの管理は別ライブラリがいい訳だ。
じゃあそれぞれで音楽用に共通のライブラリ、アプリ同期用の個別ライブラリを構えればいいんじゃないかなあ…。難儀だ。難儀でドン臭いけど、これで諸々解決じゃないかなー。
ふたりとも、音楽の同期はしても、アプリの同期ってあまりしないよね、という運用なのでまあこれでいいか。
ヨメにoption起動を覚えてもらおう。
例外キャッチャー
どっかで例外が出てもなんだかんだで結構そのまんま動いてしまうGWT。ブラウザの開発ツールなどのコンソールには一応例外は表示されるんだけど、UmbrellaExceptionってのにくるまれちゃって何も判らない。
GWTは例外が投げられても処理を止めずにどんどん先に進むらしく、その例外をこのUmbrellaExceptionに突っ込んでいるようなのだ。
最終的にUmbrellaExceptionとして投げられるのだが、それをどうやってキャッチすりゃいいのか。困った。
と思ったら簡単だった。
GWT.setUncaughtExceptionHandler(new UncaughtExceptionHandler() { @Override public void onUncaughtException(Throwable e) { if(e.getClass() == UmbrellaException.class){ for(Throwable t : ((UmbrellaException) e).getCauses()){ Window.alert(t.toString()); } }else{ Window.alert(e.toString()); } } });
toString()で取るとスタックトレースで見れた。が、プリチーなコンパイルしとらんので、cというオブジェクトがnullなのでfcというメソッドが叩けないとか、わからん!プリチーにせんとさっぱりです。
CellFormatterとかRowFormatterとか
で色々といじる場合、実際にデータをセルに突っ込む前でも、setWidth やら setHeight やらは使えるので、そのノリでgetElement(index).setAttribute("style","display:none") とかやったら怒られた。
getElementした途端にDOMの世界へハローワールドな訳なのでそりゃそうだ。