2009/05/17

Google カレンダーの土日を色付け

割と最近、変更が有ったらしく、気が付くと以前のスタイルが無効になっていました。
Google Calendar - Colorize Weekends (Sun-Sat) | userstyles.org
上記は2009/02/12更新となっています。

日本語/English(US)やTasks表示には影響を受けませんが、週の開始曜日に影響を受けます。土曜、日曜を探している訳ではなく、単に各週の最初と最後に色をつけているだけの様です(上記、日曜~土曜用Styleの場合)。

随分まえからuserStyleには有るみたいですが、Googleが公式で提供しないんでしょうか。曜日に色を付けるのは日本独自?と思ったのですが、そうでもないみたいです。
なぜカレンダーで土曜日は青字で日曜日は赤字なのでしょうか? - Yahoo!知恵袋

例えばバングラディシュは金が週末扱いで、金が休日です。

Google カレンダーで土曜開始(金曜終了)の設定があるのは、こういう国も有るからなんですね。新しい発見は有りましたが、公式対応しない理由はわからず。

2009/05/16

SQLite Optimizer

ちょっと前にこんな事(FirefoxのProfileを縮小)を書きましたが、SQLiteにはVACUUM以外にもANALIZEとREINDEXという操作が可能な様です。
SQLite が認識する SQL - Third impact

VACUUM
実効データの格納に必要なサイズだけ確保し、*.sqliteファイルを縮小する
REINDEX
INDEXを再構築する
ANALYZE
INDEXの統計をとる

REINDEXとANALYZEの厳密な動作内容や、必要性(REINDEXの前後にANALYZEが要るのか?)は解りませんが、とりあえずVACUUM+REINDEXやっとけば動作が速くなるという話しです。

前回はサイズ圧縮が目的だったので、REINDEXはしていませんでしたが、早くなるのであればやった方がよさげです。 (ただ、VACUUMだけでも早くなったという話も見かけました)

SQLite Optimizer :: Firefox Add-ons
こちらを使うと、Profileフォルダの下の全*.sqliteファイルにVACUUMやREINDEXを一括処理をしてくれる様です。前回は一個一個手作業だったので非常に便利に。

スクリーンショットではREINDEXのみに見えますが、設定によりVACUUM+REINDEXに変更できるそうです。ただし、REINDEXがメインなので、VACUUMは(このアドオンで行う事は)あまり推奨していない様です。(miyafx: sqlite 最適化 - Firefox拡張機能)

また、SQLiteの仕様上、頻繁にVACUUMを行うのは逆効果との話。
sqliteのvacuum。auto_vacuum危険 — ありえるえりあ

こちら(VACUUM)を見る限りでは、vacuumとauto_vacuumの動作もバージョンによっては異なる様なので細かい挙動については、要調査ですが。

SQLite Optimizerの設定メニューにある「終了時に(略)実行する」というのは毎回ではなく、(about:configの)指定回数毎みたいです(デフォルト10回)。ただ、再起動もカウントされてしまうので、指定回数をトリガーにした上で、確認ダイアログを出すオプションなどがあれば尚嬉しいですね。

なにかのカスタマイズで頻繁に再起動しているときに、たまに再起動が遅くなるとエラーと勘違いしたり。急いでPCの電源を切りたい時に限って10回目に当ってしまった!なんて事もありそうです。

2009/05/15

FriendFeed

FriendFeed

一言で言うとfeed aggregatorです。

ぱっと見で良い点

  • OpenIDでログイン(=GoogleのアカウントがあればOK)
  • 外部feedの集約
  • 取り込んだfeedの検索
  • 取り込んだfeedにコメント

OpenIDという点と、自分のfeedを横断的に検索可能という点だけでも利用価値があると思います。過去に書かれた解説記事と比較する限りでは、取り込み可能な対応サービスも1年で倍ぐらい増えています。

ちゃんと調べてませんが

  • private設定も可能?

イマイチな点

  • 日本語化が未完(とくにヘルプ)

Google ReaderのShared itemsはfeedを出すだけ出していても、他人のfeedを検索も出来ないし、ホットエントリーの様な集約もされていないし、と思っていたのですが、この手の外部サービスがあれば、発信元はとりあえず出すだけ出しておけばいいんですね。流行れば買収なり真似なりしてくれるでしょうし。

KNYI Jong - FriendFeed

2009/05/13

Google Subscribed Links

Googleのアカウント情報に行くと利用しているサービスが一覧されます。

その中に登録した記憶の無い物が。

Googleの検索結果に特定のサービス内のコンテンツを優先的に表示させられる。らしい。

解ったような解らないような。

少し前にShared Stuffが404になってしまいましたし、Google Baseみたいに一度触ったきりのサービスもあるので、Googleサービスもたまに棚卸をする必要がありそうです。

2009/05/10

Google Readerでtombloo

クロスポストに便利なtombloo。2種類のポスト方法があります。

  • コンテキストメニューからポスト
  • ショートカットキーからクイックポスト

一般的なサイトでの挙動はどちらでも大差無いのですが、Google Reader(多分LDRでも?)上だと若干異なります。

前者では現在フォーカスされているエントリーがポスト対象となり、後者ではGoogle Readerのページ自体がポストされてしまいます。後者でもフォーカスされているエントリーをポスト対象として欲しい。

コンテキストメニューの場合、イベント発生元の要素(=マウスポインタが置いてある要素)から遡って親要素からタイトルやリンクを取得している様ですが、ショートカットの場合、マウスの位置が関係ないので親要素の取得が出来ません。

ただ、DOM Inspectorで見る限り、フォーカスのあるエントリーは動的に"current-entry"というIDが振られる様です。なので、ID指定で要素を取得してポストする様に勝手にソース改変。

158: var ctx = update({ 159: document : doc, 160: window : win, 161: title : doc.title, 162: }, win.location); 163:// custom start 164: if(ctx.href.match('//www.google.[^/]+/reader/')) { 165: if(item = $x('id("current-entry")', ctx.document)) { 166: // Google Readerで、かつアクティブなエントリーが取得できた場合 167: // タイトル等を取得 168: var res = { 169: author : ($x('descendant::div[@class="entry-author"]/*[@class="entry-author-name"]/text()', item) || ''), 170: title : $x('descendant::a[@class="entry-title-link"]/text()', item) || '', 171: feed : ($x('descendant::a[@class="entry-source-title"]/text()', item) || $x('id("chrome-stream-title")//a/text()')), 172: href : $x('descendant::a[@class="entry-title-link"]/@href', item).replace(/[?&;](fr?(om)?|track|ref|FM)=(r(ss(all)?|df)|atom)([&;].*)?/,''), 173: }; 174: 175: // この後ポストフォームで、ctx.titleとctx.hrefが使用される 176: // ので、勝手に書き換える 177: ctx.title = res.feed + (res.title? ' - ' + res.title : ''); 178: ctx.href = res.href; 179: ctx.host = res.href.match('http://(.*?)/')[1]; 180: } else { 181: // Google Readerだが、アクティブなエントリーが無い場合 182: // 何もしない 183: } 184: } else { 185: // Google Reader以外の場合 186: // 何もしない 187: } 188:// custom end 1403: // ドキュメントタイトルを取得する 1404: var title; 1405:// custom start 1406: if(typeof(ctx.title) == 'string'){ 1407: // ctx.title設定済みの場合、ドキュメントタイトルに優先する 1408: title = ctx.title; 1409: } else 1410:// custom end

いささかスマートさに欠ける方法ですが、とりあえず目的は達成。

残る問題はSBM経由だとタイトルに余計な文字が入ることです。例えばDelicious/networkだとタイトルに"[from {user name}]"というプレフィックスが入ってしまいます。非同期でオリジナルソースページにアクセスしてタイトル取得とか、良くあるプレフィックスリストを作って削除、とかする必要がありそう。

2009/04/30

Gmail on iGoogle

Gmailの設定で「常にhttpsを使う」にしていると、iGoogle上のガジェットではinboxの表示が出来なくなったようです。自分の環境由来の不具合ではない模様。

自分はiGoogleのアドレスを"https://www.google.com/ig?hl=ja"にしていたので、見えている物だと思っていたのですが、iGoogle自体がhttpsだろうと、iGoogleとGmail間の通信は関係なかったのでしょうか。

iGoogleでGmailガジェットが利用できなくなったときの解決策? | りょーちの駄文と書評

2009/04/28

Google Toolbarを設定する

自分のGoogle Toolbarの用途は以下の三つ

  1. Web検索
  2. ページ内検索
  3. マウスオーバー辞書
Web検索

デフォルトの検索ボックスはFirefox標準のカスタマイズ機能で消す。Google Toolbarをトグルさせるショートカットキーを設定する。

ページ内検索

ボタン類はFirefox標準のカスタマイズ機能で可能な限り消す。[Google ツールバーオプション]画面 > [検索]タブ > [ウェブ閲覧ツール]の中にある、[検索キーワードのハイライト表示]と[ウェブページで単語を探してハイライトします]というチェックボックスをONにする。これでデフォルトのページ内検索(Ctrl+F)は不要になります。

マウスオーバー辞書

[Google ツールバーオプション]画面 > [ツール]タブ > [翻訳]チェックボックスをONにする

この時点でこんな感じになります。

問題が2点

オプションボタンが消せない

検索ボックスの右隣にあるボタンです。オプション画面を開いたり、検索を切り替えたり(Web/画像/地図など)できますが、要りません。ver.5からは、ツールバーを右クリックでオプション画面が開けるようになりました。また、検索切り替えは検索後でも出来ます。

翻訳ボタンが消せない

Firefox標準のカスタマイズ機能で消せますが、消すとマウスオーバー辞書が使えなくなります。マウスオーバー辞書を有効にすると翻訳ボタンも表示されます。ページ全体の翻訳は滅多にしないので邪魔です。

そこで、DOM InspectorとStylishです。これら二つのボタンは独立したXULオブジェクトとして、IDが振られている様ですので、ID指定で隠します。

@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); #gtbSearchButton, #gtbTranslateMenu { display : none !important; }

これで自分の使いたいボタンだけ表示されました。

一日の内で、最も長く使用するアプリのUIが自在にカスタマイズできるというのはすばらしいと思います。どうでもいい人にとっては本当にどうでもいいでしょうが。

2009/04/25

Friend Connect管理画面でBloggerの情報を見る

Blogger以外のサイトにGoogle Friend Connectのガジェットを追加した場合、Friend Connectのページから管理情報を参照できます。

しかし、Bloggerに設置した場合、Bloggerのダッシュボードから参照できる情報は内容が異なります。

前者の管理画面の各メニューは、設置サイトの管理IDを後ろに付けた下記のURLで表示されています。

http://www.google.co.jp/friendconnect/admin/site/metrics?id={site id}

そのため、サイトIDさえわかっていれば、Bloggerに設置したFollowersガジェットの情報も見られるようです。 明らかに表示内容が変化しているので多分合っていそうですが。

とりあえず、サイトIDを調べる手っ取り早い方法は、設置したブログのソースを表示して"site:"で検索すると以下の様なコードが見つかるはずです。

この"site:xxxxxxxxx"の数字部分を上記のアドレスにくっつければ、強引ですが見られます。Blogger以外のガジェットを何かしら追加したアカウントであれば、"Reports"や"Site Settings"などのメニューが表示されるので、とりあえず表示→最後のIDだけ張替え、で全てのメニューが確認できると思います。

一度もBlogger以外のサイトにガジェットを登録していないアカウントだとメニュー自体表示されていないので、URLを直打ちする必要があります。

Google Friend Connectはどこにどういったデータが保存されているのか、データモデルがイマイチ見えないので統一的な管理コンソールが欲しいところです。設置者用にも、利用者用にも。

ちなみに上記の「Blogger以外のサイト」として利用したのはGoogle Page Creatorです。Google サイトではhtmlファイルのアップロードが出来なかったため、設置できませんでした。明らかに代替として用を成していない辺りも気になります。

Reports
http://www.google.co.jp/friendconnect/admin/site/metrics?id={site id}
Site settings
http://www.google.co.jp/friendconnect/admin/site/settings?id={site id}
Social bar
http://www.google.co.jp/friendconnect/admin/site/socialbargadget?id={site id}
Members gadgets
http://www.google.co.jp/friendconnect/admin/site/membersgadgets?id={site id}
Social gadgets
http://www.google.co.jp/friendconnect/admin/site/osgadgets?id={site id}
Moderate posts
http://www.google.co.jp/friendconnect/admin/site/postmoderation/main?id={site id}&count=10
Manage members
http://www.google.co.jp/friendconnect/admin/site/visitors?id={site id}
For developers
http://www.google.co.jp/friendconnect/admin/site/jsapi?id={site id}
Plugins
http://www.google.co.jp/friendconnect/admin/site/plugins?id={site id}

2009/04/23

Google Toolbarを更新する

なぜか知りませんが、Google Toolbar for Firefoxのバージョンがあがっていませんでした。

アドオンマネージャでは"3.1.20081127W"。[更新を確認]しても、「更新は見つかりませんでした」。しかし、Google ツールバーを見ると、「Google ツールバー5をダウンロード」の表記。

試しに、そのままインストール(多分上書き)してみると、"5.0.20090324W"にあがっていました。こちら(Google ツールバー :: Firefox Add-ons)ではダウンロード前にマイナーバージョンまで解りますね。

Googleのアプリはインストール経路が幾つかあるので、以前はどこからどう入れたのか覚えていませんが、意図的にGoogle Toolbarの更新を止めたいといったサイトも見つかるので、自分も似たようなことをしていたのかもしれません。

2009/04/22

BloggerのFollowerになる(Googleアカウント版)

Google Friend Connectを利用して設置されている"Followers"を介して特定のブログのFollowerになる方法です。ブログの表示設定が日本語の場合、"Followers"は「読者」と表示されます。

  1. OpenIDを取得する

    • Googleのアカウント
    • mixiのアカウント
    • はてなのアカウント
    などを持っていれば利用できます。

  2. 設置しているページを見つける

    こんなガジェット(Bloggerウィジェット)を設置しているページを見つけて下さい。
    私はBloggerの旧Follower機能で読者指定して下さっていた、お二方のページで登録させて頂きました。

    現在自分のブログにも設置してあります。 見た目的にはmixiでいうマイミクに似ていますが、mixi程相互に強い繋がりではないので、ソーシャルブックマークやトラックバック程度のつもりでお気軽にどうぞ。
    *当該サイトでのCookieを許可する設定にして下さい

  3. アカウントを選択する

    [読者になる]ボタンを押すとどのアカウントでログインするか聞かれます。ここでは[Google]を選びます。

  4. ログインする

    見慣れたGoogleのログイン画面が表示されます。
    スクリーンショットではアドレスバーをトリムしてありますが、必ずアドレスが"https://www.google.com"で始まっているか、錠前アイコンがきちんと表示されているか確認してください。

  5. 公開範囲を設定する(簡易)

    他の人が当該サイトを訪れた際、読者一覧に自分を表示するか、表示しないかを決めます。 [詳細オプション]を押すともう少し細かい設定が可能です。詳細に設定しなくても進めます。

  6. 公開範囲を設定する(詳細)

    選択できる内容が増えます。

    [現在Bloggerプロフィールを使用しています変更]

    Googleのアカウントでログインした場合、Blogger用のプロフィールとGoogle用のプロフィールが選択できます。また、そのどちらでもない、このサイトだけの表示も可能です([変更]を押した後で[リンク解除]を押す)。

    [次の読者になっています 一般公開]

    簡易画面での自分が読者になっていることを公開/非公開にする設定です。さらに[プロフィールにこのサイトを含める]で、他のサイトの読者になっているかを表示/非表示にできます。
    他の読者登録しているサイトで、第3者が自分のプロフィールを見た際に[参加しているサイト]欄にこのサイトを表示するかどうか決められます。

    [このサイトでソーシャル ネットワークから友だちに接続]
    後で調べる
    [参加している他のサイトに履歴を公開する]
    プロフィールの[参加しているサイト]欄の下に履歴が表示されます。いつ、どのサイトの読者になったかが表示されます。

  7. 完了

    完了後にFollowersガジェットを見に行くと[読者になる]ボタンのあった位置にプルダウンが表示されます。

  8. 再設定

    上記6のプルダウンから、[サイトの設定]を選択する事で、4-5の設定画面に戻れます。

  9. 他のサービスとの連携

    Googleの場合既に幾つかの別のサービスと連携しています。

    Blogger

    Bloggerを利用していれば、ダッシュボードに[読者になっているブログ]一覧が表示されるようになります。
    下にある[管理]ボタンを押すと先ほどの設定画面を開いたりも出来ます。

    Google Reader
    Google Readrerを利用してれば、サイドバーの購読一覧に読者になったブログが自動で追加されます。

  10. 読者をやめる

    上記5の詳細設定画面から、[このサイトの読者をやめる]を押します。Google Readerの購読一覧から削除してもFriend Connect上の読者一覧からは消えません。

2009/04/20

Google Friend Connect

遅まきながら調べて見ました。ダッシュボードのFollowers表示が気になっていたのですが、放置しっぱなしで失礼致しました。

統一感のある日本語の解説サイトが見つからず、なんとも全体像が掴みにくいのですが、ざっと見た感じ。

  • mixi見たいなSNS的な機能がブログやその他のサイトに設置できる
  • 設置する側(サイト管理者側)はファイルアップロード(FTP等の)できるサービスが必要 *1,*2
  • 利用する側はOpenIDが必要(Google,Blogger,Twitter,mixiのOpenIDなど)*3

*1:Bloggerはアップロードしなくても使えるようになっている。
*2:あくまで現在公開されている「読者」機能の場合?
*3:mixiのログインIDとは異なる。

例えば、Bloggerの"Followers"、日本語設定だと「読者」機能の場合。 設置したブログにmixiでいう「マイミク」の様なガジェットが表示される。

Google Friend Connectサーバ(という物が便宜的にあったとして)上に、サイトのURL+OpenIDという二つのキーでプロフィールが登録されるイメージだと思っています。

当該サービス(当該サイトで提供しているサービス)の専用IDを使わず、OpenIDを使う利点は当然、既存のソーシャル情報を流用できるからです。

例えば、Bloggerの「読者」機能でも、GoogleIDで登録すると*4、Googleのプロフィールからアバター画像、ハンドルネーム、そのたプロフィール情報が取得できます。既に設定されている個人のプロフィールを追加設定して二重管理する必要がなくなります。

*4:解りにくいのですが、GoogleのIDにはGoogleのプロフィールとBloggerのプロフィールが両方関連付けられている様です。一度もBloggerを利用していないGoogleのIDを使用したところBloggerのプロフィールは表示されませんでした。あとから追加する事も外す事もできます。

当然、mixiのOpenIDでログインすれば、mixiのハンドルネームが取得できます。マイミクの情報やコミュニティの参加情報はBloggerのFollowersでは流用しない様ですが。

端的に言うと、これまでの「コンテンツ・サービス提供者」=「ID・プロフィール管理者」という構図が、「コンテンツ・サービス提供者」≠「ID・プロフィール管理者」になるだけです。

全然まとまらないですが、最も注意する点が一つ。

mixiで登録したプロフィールがBloggerでも、その他のGoogleサービスでも、twitterでも、はてなでも流用できたら楽かもしれません。が、一回の登録が他に波及するということは、一回の失敗が全体に波及する、ということです。mixiでも住所や出身地、実名のそれぞれに公開範囲を設定している様に、OpenIDを使用する場合、まず自分がプロフィールにどんな入力をしていて、何が何処まで公開されているのか事前に確認した方が良いかと思います。

特に「Googleのアカウント=Gmailのアカウント」だった時代にアカウントを作成したっきりの人は、公開用のプロフィール情報をきちんと作成するか、個人情報の登録内容を再確認することをお勧めします。

また、GoogleのIDでFollowers登録し、かつBloggerを利用している場合、Bloggerのダッシュボードで自分がどのサイトに登録しているのか一覧できます。しかしmixiのOpenIDで登録した場合、登録したサイトに行かないと自分の登録情報が閲覧・変更・削除も出来ません。mixiの設定情報画面にはGoogle Friend ConnectでOpendIDを利用したことしか記録されていないので、登録したサイトそのものを忘れてしまった場合、何処で確認できるのか解りません(未調査)。

ここまで来てなんですが、Google Friend Connectではなく、オープンソーシャル一般論になってしまいました。

Googleのプロフィール
Google Accounts
Bloggerのプロフィール
Blogger:Dashboard
Dashboard > View Profile

2009/03/20

マウスジェスチャの見える化

コンセプトモデルです。実用には至ってません。

svg_gesture.xhtml

リンク先を開いてもソースが見えるだけなので、ダウンロードしてから開く必要があります。

右クリックすると、マウスポインタの周りにパネルが表示されます。表示されたパネルの上にマウスを移動すると移動した先のマウスポインタの周りに再度パネルが表示されます。

作業環境はFirefox3.0.7。右クリック禁止スクリプトの許可や他のマウスジェスチャをオフにしておかないとおかしなことになります。

これで、最終的に右クリックボタンを離したときに通った軌跡にコマンドを割り振れれば、マウスジェスチャっぽくなるかなと。

仮想的な奇跡を計算するより、コンポーネント配置してマウスイベント取った方が早いんじゃないか、と思ったコンセプトモデルです。次の一手が見えた方が思い出す手間も減りますし。

マウスジェスチャと聖剣伝説タイプのランチャの中間みたいなのが欲しいのです。

2009/03/08

Googleサービスのfaviconいくつか

Google Readerのフィード追加ブックマークレットにはfaviconがないため、Firefoxのフィード追加アイコン(アドレスバーの右端に出る奴)を流用していたのですが、Google Reader自体のfaviconと見間違えることが多いため、Readerの方を変更。

なぜか知りませんが、Firefoxの特定のProfileだけ、Google Readerのfaviconが32x32版のアイコン(を16x16に縮小表示)だったため、他のProfileでもそれを流用。

加えて、Note&Shareのブックマークレットもfaviconがないため、Readerのサイドバーから流用。こちらはスプライト画像のため、自分でトリムする必要がありました。

また、tasksのfaviconがなぜか透過されない、と書きましたが、透過版(png)と非透過版(ico)の2種類があるようです。Google Chromeではブックマーク時になぜかpngが使用されたようですが、Firefoxではicoの方が使用されたようです。これも手動で変更。

faviconの変更はFavicon Picker 3 0.5を使用。最近のFirefoxはbookmarks.htmlを変更しても反映されないようです。履歴やブックマークをDB(sqlite)化しているとかなんとか。

Favicon Pickerはローカルの画像ファイルしか扱えないようなので、下記の手順を踏む必要があります。

  1. 当該画像だけを表示
  2. デスクトップにドラッグ&ドロップで保存
  3. ブックマークのプロパティから変更

また、ブックマークのプロパティを保存しなくても(キャンセルしても)faviconは変わってしまうので要注意です。

Reader(デフォルト)
https://www.google.com/reader/ui/favicon.ico
Reader(32x32)
https://www.google.com/reader/ui/573007822-app-icon-32.png
Reader(64x64)
https://www.google.com/reader/ui/4283503602-app-icon-64.png
Reader(スプライト)
https://www.google.com/reader/ui/972236033-lhn-sprite.png
tasks(非透過)
https://mail.google.com/tasks/res/favicon.ico
tasks(透過)
https://mail.google.com/tasks/res/favicon.png

2009/02/26

Gmail Tasks

PC用
https://mail.google.com/tasks/ig
モバイル用
https://mail.google.com/tasks
PCでモバイル用
https://mail.google.com/tasks/m

Firefoxだとブックマークして「サイドバーに読み込む」でサイドバーガジェットに。ただfaviconが、Chromeだと透過されるのに、Firefox3.*だと透過されませんでした。

これとカレンダーのオフライン化が無料版で出来ればChromeがオフラインOfficeスイートに。

2009/02/25

FirefoxのProfileを縮小

ついでにプロファイルを作り直してみた。 どれだけゴミが溜まっていたのか、プロファイルのサイズが76MB→38MBまで小さくなった。

これを見て、思い出しました。FirefoxのProfile配下にはsqliteのDBファイルが幾つかあります。sqliteは一度拡張すると、データを消しても小さくならないようです(デフォルトでは)。

そこで、sqliteにはvacuumという余分な空白を圧縮してファイルを縮小する機能があるそうです。他のDB(PostgreSQL等)にもあるみたいですが。

どのファイルがどういう役目なのかはググればいいとして、圧縮にはコマンドラインのsqlite以外にFirefoxのアドオンsqlite-manager - Google Codeも使えるそうです。

  1. SQLite Managerをインストール
  2. profile下の適当に大きい*.sqliteファイルを探す
  3. SQLite Managerを開く
  4. [Database] > [Connect Database]で当該ファイルを開く
  5. [Database] > [Compact Database]で圧縮

なぜか"vacuum"ではなく"Compact Database"です。その方が直感的ですが、関連付けがあれば尚解りやすい。"Compact Database(vacuum)"など。

SQLite Managerでは他にも、profileディレクトリにあるsqliiteファイルを一覧してくれるプルダウンもありますが、なぜか私の環境ではこのプルダウンをでファイルを選択->Compact Databaseではうまく機能せず、ファイルが圧縮されませんでした。

ちなみに、ファイルサイズですが

urlclassifier3.sqlite
50数MB->15MB強
urlclassifier2.sqlite
15MB前後->6MB強

程度の圧縮率だった気がします(記録忘れ)。これらのファイルは危険なサイトのブラックリストらしいので、警告機能をONにしている限り肥大化していきます。profileごと作り直すと当然小さくなります。

警告をOFFにすることでディスクアクセスも減らせるようですが、その辺は危険度と速度のトレードオフになるようです。

ほかにplaces.sqliteなども履歴ファイルなので肥大化するようです。私はUSBで持ち運ぶ前提でキャッシュのサイズや履歴の日数を少なくしていたので、それほど大きくなっていませんでした。

2009/02/24

Google Chromeのポータブル化

Google配布のGoogle ChromeとPortable Google Chrome 2.0.164.0 - Caschys Blog配布のPortable Google Chrome(以下Portable Chrome)の違いをテスト。手動ポータブル化時に勝手に生成されるようなレジストリキーがProtable Chromeでは作成されないのかを確認。

結論から言うと、作成されます。

起動後に以下のレジストリキーが追加された。

[HKEY_CURRENT_USER\Software\Google\Update\ClientState\{8A69D345-D564-463c-AFF1-A69D9E530F96}] "dr"="(値省略)"

タブを開いたり、閉じたりすこし作業した後にChromeを終了。終了後に以下のレジストリキーが追加された。

[HKEY_CURRENT_USER\Software\Google\Common\Rlz\Events\C] "C1I"=dword:(値省略) "C2I"=dword:(値省略) "C1S"=dword:(値省略) [HKEY_CURRENT_USER\Software\Google\Common\Rlz\PTimes] "C"=hex(b):(値省略)

ほぼ、同じです。Portable ChromeとGoogle Chromeの違いというより、その時の操作に依存しそうです。

API Hookなどでレジストリの書き込みを抑制している(そういう事が出来るというのを今回知りました)のかと思ったのですが、そういうわけでも無いようです。Portable Chromeでも「レジストリ汚染されない為に」という目的は達成されません。

Portable Chromeでは、手動ポータブル化の際に事前に追加したキーは、無くても起動できました。ただし、

  1. 一回目:当該キーが自動生成
  2. (終了後、当該キーを手動で削除)
  3. 二回目:当該キーが無いまま起動

と、当該キーの必要性がいまいちわかりません。(1回目の自動生成が見間違いの可能性もあり)

Portable Chromeでは以後、当該キーが無いまま起動・終了できますが、手動でポータブル化したGoogle Chromeでは当該キーが無いと絶対に起動できませんでした。

2009/02/23

Google Chromeのポータブル化

Google配布のChromeインストーラを一度も実行していないオフライン端末(XP SP2)にファイルコピーだけで動くかのテスト。

インストール済み端末のデフォルトのインストールフォルダから、必要ファイルを以下にコピー

D:\home\hoge\.google\Chrome\User Data
D:\usr\local\opt\Google\Chrome\Application

下記ショートカットで起動

D:\usr\local\opt\Google\Chrome\Application\chrome.exe --user-data-dir "D:\home\hoge\.google\Chrome\User Data"

うんともすんとも言わない
起動時に必要なレジストリキーがあるらしい。ぽっとの陽だまり研究室 : Google Chrome をUSBメモリで起動する試み

Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Google] [HKEY_CURRENT_USER\Software\Google\Update] [HKEY_CURRENT_USER\Software\Google\Update\Clients] [HKEY_CURRENT_USER\Software\Google\Update\Clients\{8A69D345-D564-463c-AFF1-A69D9E530F96}] "name"="Chrome" "pv"="1.0.154.48"

前述のショートカットで起動->成功

--user-data-dirで指定したフォルダの下に"Default"フォルダを(無ければ)自動作成する。Defaultまで指定してしまうと、D:\home\hoge\.google\Chrome\User Data\Default\Default\というフォルダが作成されてしまう。

起動後に以下のレジストリキーが追加された。

[HKEY_CURRENT_USER\Software\Google\Update\ClientState\{00058422-BABE-4310-9B8B-B8DEB5D0B68A}] "dr"="(値省略)" [HKEY_CURRENT_USER\Software\Google\Update\ClientState\{8A69D345-D564-463c-AFF1-A69D9E530F96}] "dr"="(値省略)"

タブを開いたり、閉じたりすこし作業した後にChromeを終了。終了後に以下のレジストリキーが追加された。

[HKEY_CURRENT_USER\Software\Google\Common\Rlz\Events\C] "C1F"=dword:(値省略) "C1I"=dword:(値省略) "C2I"=dword:(値省略) "C1S"=dword:(値省略) [HKEY_CURRENT_USER\Software\Google\Common\Rlz\PTimes] "C"=hex(b):(値省略)

これらの、レジストリキーを生成・削除する起動スクリプトを作らないと、完全ポータブル化とは行かないようです。 ただ、作ったり、作られなかったり、キーによってまちまちなので、網羅するのは面倒そうです。

2009/02/22

".NET Framework Assistant 1.0"の削除の仕方。

2009-07-15 追記

現在、より簡単に削除する方法が提供されているそうです。

Mozilla Re-Mix: Firefoxから[Microsoft .NET Framework Assistant]を簡単に削除する方法。

マイクロソフトのテロ行為に対する対処法。背景は後述。

レジストリキーの削除
HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Firefox\extensions\{20a82645-c095-46ed-80e3-08825760534b}
未確認:レジストリを削除しただけだと、実体ファイルは残る?ディスクスペースの無駄にならないか。
実体ファイルの削除
C:\WINDOWS\Microsoft.NET\Framework\v3.5\Windows Presentation Foundation\DotNetAssistantExtension
未確認:実体ファイルを削除しただけだと、毎回起動時にレジストリキーを参照する?起動時間が遅延しないか。
prefsの修正
general.useragent.extra.microsoftdotnet
インストールされた状態で、一度でも起動したprofileはprefs.jsかabout:configでキーを削除。about:configの場合、キーの設定値をリセットして再起動すると消える。

以下、背景。

Microsfot Updateを行うと、.NET Framework 3.5 SP1がインストールされる。

.NET Framework 3.5 SP1がインストールされると、FirefoxにMicrosoft .NET Framework Assistant 1.0というアドオンがインストールされる。

このアドオンが最悪な点は、以下の4つ。

  • インストールに関して、事前の説明がない。
  • インストールに関して、ユーザの同意を得ない。
  • デフォルトの削除手段が提供されていない。
  • ユーザエージェントが改竄される。

ユーザエージェントの後ろに"(.NET CLR 3.5.30729)"なんて文字列が追加されるのは、まるで「馬鹿」と書かれた紙を背中に張られる類の胸糞の悪い悪戯だ。正直吐き気がする。

なぜ、このアドオンが「悪意あるソフトウェアの削除ツール」で削除されないのか不思議でならない。

マルウェアの定義 : FAQ - Microsoft Technet
http://technet.microsoft.com/ja-jp/library/dd362857.aspx

Q. マルウェアの問題を防ぐ方法の要約はありますか?

はい、以下をご覧ください。

現在、コンピュータユーザーにとっての最大の問題は、ウイルスおよびスパイウェアの 2 つです。これらはいずれも問題ですが、以下のような対策を計画的に行うことにより、容易にコンピュータを保護することができます。

* コンピュータのソフトウェアに常に修正プログラムを適応し、最新の状態にしておきます。オペレーティングシステムおよびウイルス対策ソフトウェアを定期的に更新する必要があります。

* 信頼できるソースからの修正プログラムのみをダウンロードします。Windows オペレーティングシステム向けには、常に Windows Update を訪問し、そのほかのソフトウェアは常に、製造元の会社または人物の正規の Web サイトを使用してください。

* 何かをインストールする前には常に考え、リスクと利益を秤にかけてください。長期使用許諾契約は読むのが嫌になりますが、その中にスパイウェアがインストールされる警告が隠されていませんか?

2009/02/08

Google Chrome ポータブル化

コンマンドラインオプションに以下を指定するだけでいいらしい。

--user-data-dir

本体(chrome.exe)のインストール先がProgram Filesではなくprofileフォルダなのは、移行の容易さを考慮してなのか、ベータだからなのか知りませんが、便利なことは確かです。profileフォルダを移動していなければ、chrome.exeからの相対パスで指定するのが楽です。

Gmailがオフライン対応したことで、Gmail、Reader、Docsのオフライン用ブラウザとして持ち歩く選択肢が出来ました。実際、持ち歩くと仕事サボりまくりでしょうが。

起動オプション - Google Chrome まとめWiki http://chrome.half-moon.org/43.html#p2661204 “遊び用ちょろめ”と“仕事用Chrome”を使い分ける http://www.itmedia.co.jp/bizid/articles/0809/10/news109.html

ただ、ブログ投稿用としては、Snap linksやCopy URL+が使えないと不便です。

2008/12/13

Google Readerの外枠を非表示

ちょっと前に新しくなったGoogle Readeでエントリーの表示領域以外を非表示にするCSSです。Stylishで適用しています。

@namespace url(http://www.w3.org/1999/xhtml); @-moz-document url-prefix("https://www.google.com/reader/view/") { #gbar ,#global-info ,#logo-container ,#search ,#chrome-header ,#viewer-header ,#viewer-footer { display : none !important; } #main { top : 0px !important; } }

以前の非表示スタイルシートは検索ボックスなどが残っていたけど、今回は完全に非表示。Reader内検索をよく使う人は、特定のアクションで検索ボックスだけ表示するような、改良が必要です。

むしろ、Firefoxの検索窓からReader内検索を呼び出したりする方が(出来るなら)楽そうな気もしますが。

2008/11/03

確認せずにブックマーク

FreifoxでCtrl+Dを押した際に、確認ポップアップが表示されるのが邪魔です。

Firefox3.0からはアドレスバーの☆アイコンをクリックすると確認せずにブックマークされるので、ショートカットでも可能なはず。

というわけで、keyconfigでCtrl+Dを下記ユーザスクリプトに置き換えてみました。

PlacesCommandHook.bookmarkCurrentPage(PlacesStarButton._starred);

とりあえず、ローカルのブックマークはこれで、確認無しに行けます。本当はローカルとオンラインのブックマークをキー一発で確認せずに複数同時に出来るといいんですが。

☆アイコンのイベントを調べると、PlacesStarButton.onClick(event);なるイベントが。そのままだと動きません。

そこで、alert(PlacesStarButton.onClick);してみると下記画像。

ブックマーク自体はPlacesCommandHook.bookmarkCurrentPageで行っていて、現状をPlacesStarButton._starredに持っている事が伺えます。

_starredとか明らかにprivateな目的のプロパティっぽいですが。適当にいじれてしまうのがJavaScriptの良い所ですが、次期バージョンではどうなるんでしょうか。

2008/09/28

feed url

feedburner.com が feedproxy.google.com へ - F.Ko-Jiの「一秒後は未来」

feedburnerは便利そうだと思いつつも、ドメインが違うのが嫌だなぁと思って使っていなかったのですが、コレは朗報。

しかし、よく考えるとBloggerはblogspot.comなんですね。結局違うことに変わりは無いのか。

2008/09/20

Google Chrome

Google Chrome - ブラウザをダウンロード

今更第1印象ですが、今まで使った中ではOperaに一番近い感じがします。たしかにキビキビ感があるけどなんとなく動きが硬い。

残念ながら私の環境ではネット上で言われるほどの速さは体感できず。最近では一番閲覧時間が長いと思われるGoogle Readerの表示がスムーズではなかった(Fx3.*比)のが一番痛い。スクロールがガクガクします。

でも、現在コレを投稿しているBloggerのPosting画面は表示もキレイでスムーズですね(Fx3.*比)。

safariの評判でも良く「フォントがキレイ」と聞くのでWindows版のsafariを入れて見ましたが、字がにじんでいる様に見えてイマイチ「キレイ」さが体感できず。やっぱり自宅のPC環境が一つしかないのが問題かと思われます。

2008/09/01

Firefox3+対応

2.*系のprofileで3.*の更新通知が出た際にうっかりYESを押してしまいました。共存させていたのに両方とも3.*系に。

マイナーバージョンだけ受け取りつつ、メジャーバージョンアップの更新通知だけ抑止できるんでしょうか。

2008/07/29

プログラムの連続起動はShift+クリック

Windowsのスタートメニューは一つ選んでクリックすると閉じてしまいますが、Shift+クリックするとスタートメニューが閉じないので2,3個連続でアプリが起動できます。

ぴたすちおとAutohotkeyとTClockは終了してから試したので多分Windows本来の機能だと思いますが。

ずっと前に見た気がするけど、実際に自分の生活で利用シーンがないと右から左に抜けていきます。

2008/07/27

Firefox3+対応

(function () { var menubar = document.getElementById('gtbToolbar'); if ( menubar.getAttribute('collapsed').search(/true/i) != -1 ) { menubar.setAttribute('collapsed','false'); menubar.setAttribute('hidden','false'); // 検索ボックスにフォーカス GTB_getToolbar().appContext.GTB_OnSearchBoxFocusKey(document); } else { menubar.setAttribute('collapsed','true'); } document.persist(menubar.id, "collapsed"); })();

Googleツールバーの表示/非表示を切り替えるショートカットキーをCtrl+Eとして登録しました。

Fx1.*の後半あたりから、検索にはFirefoxの検索ボックスでもGoogleのGoogleツールバーでもなくサードパーティー製のgooglebarシリーズを使っていました。主な理由は「表示/非表示が切り替えられるから」。他にも細かい点はありますが。

メインの端末が1024x768のノートPCという制約があるため、使わない部品が常駐されると表示領域が狭くなります。Googleツールバーの場合、右クリックから切り替える必要があるのでメンドウだったのです。

しかし最近になってFirefoxのメニューバーを消すで書いたような方法で、どのツールバーでも自由にトグルできることがわかりました。

検索にはgooglebarを入れて、マウスオーバー辞書が欲しいのでGoogleツールバーも入れてましたが、晴れて一本化できます。googlebarには長いことお世話になりました。

ただし、Googleツールバーは表示しただけでは検索ボックスにフォーカスが当らず不便なので、ソース中の「検索ボックスにフォーカス」の部分を追加しています。

「検索ボックスにフォーカス」は(多分)GoogleツールバーをインストールするとAlt+Gに割り当てられるGoogleツールバーの機能だと思います。keyconfigで一覧を眺めていたら見つけたのでそのまま流用。

googlebarではトグルキーはデフォルトでCtrl+Gだったような気がするので長年そちらを使っていましたが、どこだかで「検索ボックスへのフォーカスはCtrl+Eに統一すべきだ!」というのを見かけたのでそちらを採用しました。この際なので他のProfileもいっぺんに変更して統一しました。

ついでですが、Googleツールバー(googlebarもだけど)はキーワードボタンを表示することでWeb検索だけでなく、ページ内検索も兼ねるので便利ですね。これがあればCtrl+Fとか使う必要ないので、検索=Ctrl+Fとしてキーバインドは上書きしてしまってもいいかも知れない。

ただしキーワードボタンを表示するためには、ある程度横幅必要なので、ツールバーとして1段確保しないといけませんが。そうすると常時表示は邪魔なのでトグル必須になりますが。

2008/07/24

Firefoxのオプション画面を表示する関数

オプション画面を表示(Ctrl+Shift+O)

openPreferences();

メニューから呼ばれる処理の探し方がわかったので、オプション画面を追加。一番あってもよさそうなのに、なぜかショートカットが無いので、keyconfigで追加。

2008/07/21

Firefox3+対応

keyconfigがFx3に対応してくれたので、一念発起して複数あるProfileを順次Fx2から3に移行することにしました。そこかしこに情報が溢れているので調べればどうとでもなりますが。

とりあえず、アドオン画面を開いたり閉じたりする回数が多いので、先ずそこから。

  1. アドオン画面の表示(URL)

    chrome://mozapps/content/extensions/extensions.xul

  2. アドオン画面の表示(ショートカット)

    BrowserOpenAddonsMgr();

  3. Firefoxの再起動

    var appStartup = Components.interfaces.nsIAppStartup; Components.classes["@mozilla.org/toolkit/app-startup;1"] .getService(appStartup).quit(appStartup.eRestart | appStartup.eAttemptQuit);

既存のProfileをFx3で開いたらkeyconfigの設定が幾つか消えてしまっていたので、ショートカットキーから設定し直し。

上記リストの1はブックマークにでも入れ、2と3はkeyconfigでショートカットに追加します。2の関数はツールメニューのイベントをDOM Inspectorで眺めてたら見つけたのですが、keyconfigでキーを割り当てても、ツールメニューにアクセラレータキーは表示されないので、もっといい方法があると思います。

2008/06/22

セミコロンでフォーカス部のフォントを拡大

Google Readerで;(セミコロン)を押すと現在フォーカスされている場所のフォントが大きくなります。

All items/Starred items問わず。Expanded view/List view問わず。サイドバーのsubscriptionsもフォーカスのあたっている部分が大きくなっています。何かのアドオンの所為かと思ったのですが、safariでも出来ました。

これは、がーっと流し読みする時に便利かも。

ヘルプに載っていないので戻し方が分かりません。リロードすると戻りますが、逆にその状態を保存する方法もあるのか無いのか分かりません。

2008/05/19

ウィルスセキュリティゼロ

Firefoxが更新された、と毎回訊ねてくる。
Fxの2と3を混在させていると、起動の度に聞いて来ます。パスが違っても同じとみなされるのでしょうか。ノートン先生を使っていた時(Fx2のβ時)はどうだったか覚えていない。
AutoHotkeyが隔離される。
EXE化した自作のスクリプトがリスクウェアとかいうのに分類されます。確かにリスクはありますが。ウィルスバスターでは引っかからないので仕様の問題か。

確か3ライセンスだったけど、次の端末には入れないと思う(開発に使う場合)。あやしぃ事をしない端末で最低限の安心感を得るためなら必要十分なソフトだと思います。

2008/05/18

コンテンツ表示比率を考える

最近個人運営でもこんな感じのサイトが増えている様に思います。

酷い時は目的のエントリーがタイトルすら初期表示領域に入らない、なんてサイトも。リーダーで気になったエントリーをタブで開いておいて後から一覧、なんてスタイルだと後から見に行った時に、そのタブが何を見ようとして開いたのか分からない(思い出せない)事があります。

Main Contentes Per Display areaなんて指標が簡単に計算できたら楽かもしれない。上の図だと3-4%位でしょうか。

読者視点で見るとこんな構成の方が良い。

フォーカスしている項目が最も目立つ
たとえばHタグのレベルをページによって切り替える。 <!-- site top page --> <h1>site title</h1> <h2>category title</h2> <h3>entory title</h3> <!-- category summry page --> <h2>site title</h2> <h1>category title</h1> <h2>entory title</h2> <!-- entory permal page --> <h3>site title</h3> <h2>category title</h2> <h1>entory title</h1>
メインコンテンツより先にサイドバーの描画をしない
レイアウト上、左側にあってもいいので、HTML上は後ろに配置してCSSかなんかで切り替える。

などをずっと考えていますが、メンドクて実行に至らない。リーダーで読めばいいような気がする。

Google Codeでソースの公開

  1. Googleのアカウントを作る
  2. Google Codeでプロジェクトを作る
  3. SVNのバージョン管理環境を作る
  4. ファイルをアップロードする
作ってみたプロジェクト
knyijong - Google Code
乗っけてみたファイル
iKnow.ahk

てっきり、[Source]タブを開くとアップロードしたファイルの一覧が見られるのかと思ってました。

[Source]はあくまでもSVNのリポジトリ。

[Downloads]はあくまでもお手製のZIPファイルなどの置き場。

ファイルへのリンクはtrunkディレクトリなどから辿っていかないと解らない。

MIME-TYPEを設定すればJavaScriptやCSSのホスティングサーバ用途にも使えるみたいですが、アクセスするアドレスは/svn/trunkでいいんだろうか。

「SVNとかメンドクサイ!」っていう人はプロジェクトを作って[Downloads]にZIPファイルなんかを置くだけでも便利は便利かもしれませんが。(DownloadsへのアップロードはWebページ上のフォームから行う)

参考

2008/05/04

GMarksがFirefox3対応

ちょっと前に更新されてFx3に正式対応された様です。

Nightlyで無理やり使えたんですが、ブックマークの追加ダイアログなんかの乗っ取りが不完全でした。

Fx2対応版まではブックマークの追加ダイアログがGMarks用とFirefox従来のものがタブで分けられ"both"チェックボックスで両方同時に、という仕様になっていました。新バージョンではタブがなく、完全に一体化。基本"both"になっているようで、FirefoxとGoogleブックマークの両方にブックマークされます。

以下は怪しい英語力での意訳です。

0.9.8の変更履歴

-Shows the key combo needed to open the sidebar in the View>Sidebars>GMarks item. Alt+M by default.
サイドバーを表示するのに必要なショートカットキーを表示させた。Alt+Mがデフォルト。

-Added an accelerator key for the GMarks menu so you can open it with Alt+G
GMarksメニューのアクセラレータキーを追加。開くにはAlt+G。
※GMarksの設定([ツール]メニュー>[アドオン]>[Gmarks]>[設定]ボタン)で[表示]メニュー>[メニュー]タブ>[GMarksメニューを有効にする]チェックボックスをOnにしてFirefoxを再起動すると、メニューバーの[ブックマーク]と[ツール]の間に[GMarks]が追加されます。

-If you are signed out, the bookmarks list inside the GMarks menu changes to a sign in menu item.
もし(GoogleアカウントをWebページ上で)サインアウトすると、サイドバーに表示されるGMarksのブックマークリストもサインイン用画面に切り替わります。 ※サインアウトした後で、GMarksサイドバーにある検索ボックス横のメニューから[クリア]を選ぶと再描画されます。

-Don't grab a favicon unless the scheme is http or https
スキームがhttp又はhttpsでない限り、ファビコンを取得しない。

-Fixed some strings that should have been localized
ローカライズすべき幾つかの文言を修正 ※(localizedが「部分的な」なのか「(日本語化などの)地域化」のどっちなのか分かりません)

-The tooltip in the sidebar now reports the title and the notes of the bookmark.
サイドバーでブックマークのタイトルとメモをツールチップで表示する。

-Fixed opening the sidebar's context menu with the keyboard
サイドバーの右クリックメニューをキーボードから開けるようにした。

-Fixed folder and bookmark icons in Firefox 3
フォルダーとブックマークのアイコンをFirefox3に対応させた

-Fixed importing in Firefox 3
インポート機能をFirefox3に対応させた

-Updated skins for Firefox 3 on winows, linux, and osx
スキンをWindows,Linux及びOSXのFirefox3に対応させた。

-Replaces the ctrl+D dialog in Firefox 3 with a new GMarks add bookmark dialog if ctrl+d integration is enabled
ctrl+Dで表示されるダイアログを新しくなったGMarksのブックマーク追加ダイアログで置き換えます。ctrl+dで一体化されたダイアログが確認できます。

-Small fixes
他、細かい修正。

FirefoxのメニューバーをStylishで消す。

@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); #toolbar-menubar { display : none; } menubar, toolbox, toolbar { border-style: none !important; }

今使っているkeyconfigがFx3に対応していないため、比較的対応の早いStylishで代用。

切り替えがショートカットキーで出来ずちょっと不便ですが、メニューバーの使用頻度が低いのを理由に非表示にしているので今のところそれほど不便は無し。

2008/04/06

iKnow!のサイドバーを右に移動

Stylish用のCSSです。

@namespace url(http://www.w3.org/1999/xhtml); @-moz-document url-prefix("http://www.iknow.co.jp/") { DIV[class="outer"] { margin-left : 0px !important; } DIV[class="center"] { float : left !important; width : 765px !important; } DIV[class="left"] { margin-left : -10px !important; } }

iKnow!のサイトってHTMLの構造が整っていて分かりやすいですね。

faviconize Google ノートブック

これ(Googleノートブックのステータスバーのラベルを消す)がStylishを使えばもっと簡単に出来ました。

ついでにポイントしている間だけラベルが表示されるように変更。

@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); #gnotes-statusbar > image { padding-right : 0px !important; } #gnotes-statusbar-lbl { display : none !important; } #gnotes-statusbar:hover > #gnotes-statusbar-lbl { display : block !important; }

2008/04/02

windows版Safari

windows版の"Apple Software Update"で勝手にSafariのインストールを推奨されるという話を見たのですが、自分のPCでは自動更新が走らなかったので、手動で入れて見ました。

○キビキビしている
Firefoxのようなもっさり感も、Operaの様なカタイ感じもなくきびきびしている。レンダリング感覚は一番好きかも。
△フォントがにじんで見える
フォントは独自の処理をしていると言う話だけど、個人的にはにじんでいるようで見づらい。
○JavaScriptとか
自分のブログのScriptとか思いのほかちゃんと動いているようです。
△ステータスバーがデフォルト非表示
怖くないですか?
○フォーカス項目にアウトライン
iTunesでも同様に水色の太枠が出ましたが、いいですねこれは。
×ブックマークツールバーにfaviconが表示されない
Firefoxのsafari系テーマでもそうでしたが、これは仕様でしょうか。ブックマークメニューには表示されるので取得していないわけではないようですが。
×ファイルメニューの消し方が判らない
個人的にファイルメニューって常に表示するものではないと思っています。
×アドレスバーと検索窓がセットになっている
個人的に検索窓も常に表示するものではないと思っています。
△設定画面にキャンセルボタンが無い
リアルタイムで変更が反映されるのは便利ですが。
○[開発]メニューは便利そう

あとは使い込めば解決しそうなものがちらほら。

2008/03/30

Firefoxのメニューバーを消す

MenuXという拡張の関数を呼んでいたのですが、復旧時に困ったので中身を見てみました。

以下はmenuxoverlay.jsの関数をちょっといじった物。

// メニューバーの表示/非表示切り替え function toggleToolbarMenubar() { var menubar = document.getElementById('toolbar-menubar'); if ( menubar.getAttribute('collapsed').search(/true/i) != -1 ) { menubar.setAttribute('collapsed','false'); menubar.setAttribute('hidden','false'); } else { menubar.setAttribute('collapsed','true'); } document.persist(menubar.id, "collapsed"); } // メニューバーの表示 function expandToolbarMenubar() { var menubar = document.getElementById('toolbar-menubar'); menubar.setAttribute('collapsed','false'); menubar.setAttribute('hidden','false'); document.persist(menubar.id, "collapsed"); } // メニューバーの非表示 function collapseToolbarMenubar() { var menubar = document.getElementById('toolbar-menubar'); menubar.setAttribute('collapsed','true'); document.persist(menubar.id, "collapsed"); }

このコード中のdocumentはブラウザのxulの事なので、ブックマークレットからは使えませんね。keyconfigとかMouse GesturesとかGreas Monkeyなどのアドオンの中から呼ばないと効かないみたいです。

復旧だけが目的なら、プロファイルフォルダにあるlocalstore.rdfを書き換えることでも、表示/非表示を切り替えられます。

<RDF:Description RDF:about="chrome://browser/content/browser.xul#toolbar-menubar" iconsize="small" hidden="true" currentset="menubar-items,wrapper-menuxOptionsToolbarBtn,spring,throbber-box" collapsed="false" />

上記の部分を探して、hiddenとかcollapsedをfalseにすれば表示されます。スクリプト中の"document.persist()"がlocalstore.rdfを書き換えている模様。

markbokil.org - software and psychology

2008/03/20

GoogleノートブックとProfileの統合

久しぶりにメインアカウントのGoogleノートブックを開いたら「Profileと統合します」とか出てきました。

Amazonで個人情報ダダ漏れが問題になっていましたが、Googleノートブックも使い方によってはアレかもしれません。

例えば「鈴木太郎」さんが居たとして、 メールアドレスが"SUZUKI.Tarou@gmail.com"だったとします。 この人はGoogle Profileの公開当時、ニックネームに"Tarou"と登録していました。

また、この鈴木太郎さんはGoogleノートブック公開時、本名からは連想できないハンドルネーム「エリック」を名乗っていたとします。

"SUZUKI.Tarou@gamil.com"のアカウントで公開したノートは今まで他人から見ると「エリックさんのノート」として公開されていました。

ところが今回のノートブックとProfileの統合により、「エリックさんのノート」だったページには「Tarouさんのノート」と表示されます。

Amazonで問題になっていた一つに、有名サイト(で公開されているメアド)の実名がばれるという物がありましたが、この「Google ノートブックとProfileの統合」も『ハンドルネームと実名がリンクされる』という点において同様の問題が発生している様に見えます。

公開ノートブックに表示される名前は「統合されます」ページで「次へ」リンクを押下してから切り替わるのか、どのノートブックでも勝手に切り替わってしまっているのかは未確認ですが。

「統合します」画面をうっかり閉じてしまったので、SSを取り損ねたのですが他のアカウントでは確認できませんでした。ノートブックの公開ニックネームとProfileが違うと表示される、などの条件があるのかもしれません。そもそも既に両方利用している人でないと出す意味もないですし。

個人情報を扱うアカウント(メールアドレス等)とハンドルネームを扱うアカウントはメンドウでも別々にした方がいいのかもしれません。「勝手に切り替えんなよ」というのが率直な感想ですが。

Firefoxアドオンマネージャのアドレス

chrome://mozapps/content/extensions/extensions.xul

Fx3β4を入れたところkeyconfigが効かなくなり、普段から非表示にしていたファイルメニューが元に戻せない事態に。

にんともかんとも行かないのでとりあえずアドオンの画面を開くために調べたら出てきました。ただし、上記アドレスでタブにアドオンマネージャを開くと[設定]押下時のポップアップが開いてくれませんでした。

また、"chrome:"で始まるアドレスはdel.icio.usでブックマークしても共有されないようです。"http"や"ftp"などの特定のプロトコル以外のアドレスは危険とみなされ強制的に"not shared"にされる様です。まぁ自分が見られるなら問題ないかもしれませんが。

2008/03/02

短いホットキーを設定する

スタートアップに登録する Polipo へのショートカットに、ショートカットキー S が設定されていました。ひでー。 polipo 入れてみた on WindowsXP - 母方の祖母にフル・ネルソン日記

引用もとのエントリーの主たる内容とは全然関係ありませんが、存じませんでしたので調べてみました。WSHで好きに変更できるみたいです。

var sh = WScript.CreateObject("shell.application"); var fl = sh.NameSpace("C:\\"); var sc = fl.parseName("test.txt.lnk").getlink; sc.hotkey=65; // "A" sc.save(); //Alt =1024 //Ctrl = 512 //Shift = 256 //A = 65 //Z = 90 //F1 = 112 //F2 = 113 //PgUp = 33 //PgDn = 34 //End = 35 //Home = 36 //Ins = 45 //Del = 46 //Pause = 19 //SclLc = 145 //Tab = 9

最後にsave()しないと反映されません。うっかり忘れると小一時間半泣きになります。

2008/02/24

Googleノートブックのステータスバーのラベルを消す

Googleノートブックはウザイです。非常に便利ですが、ステータスバーのアイコンがアイコンだけになってくれません。

アドオンのソースを色々いじった結果、右クリックに[画像のみ]という選択肢がありましたorz

ただし、この[画像のみ]を選択してもアクセスキーが消えてくれません。こっちはソースいじらないと対応できないようです。ステータスバーはアイコンだけにしたいのでむりくり消しました。

修正ファイル
{プロファイルフォルダ}\extensions\notebook@google.com\chrome\chromeFiles\content\google-gnotes-overlay.xu

変更前 33:<image style="padding-right: 3px; cursor: pointer;" 35:<toolbarbutton id="gnotes-statusbar-lbl" 36:accesskey="&gnotes.accessKey;" 37:class="gnotes-status-button"/>

変更後 33:<image style="padding-right: 0px; cursor: pointer;" 35:<toolbarbutton id="gnotes-statusbar-lbl" 36:accesskey="&gnotes.accessKey;" >>:style="display:none;" 37:class="gnotes-status-button"/>

33行目で指定されている、アイコン右側のpaddingを0にし、アクセスキーはラベルごと非表示にします。<toolbarbutton>ごと削除してもいいと思うのですが、JavaScriptからidで参照しているとエラーになるかもしれません。

この方法だと、[画像のみ]の選択状態に関わらず、[ノートブックを開く]等のラベルも表示されないので「たまにラベルを表示したい」って場合はもうちょっと工夫しないといけませんが。

2008/02/23

iTunesの検索窓ショートカット

検索窓にフォーカス
Ctrl+Alt+F
ペースト(クリップボードから)
Alt+↓
"Z"の入力
Alt+↑
","の入力
Alt+←
"B"の入力
Alt+→

どれも入力後にAltを放すと効果が出ました。入力結果を見ただけなので、最後の三つは使途がわかりません。iTunes Storeでは検索窓にサジェスト機能があるので、そのサポート的な機能でしょうか。

一般的にプルダウンの展開がAlt+↓なので、検索履歴に期待して押してみたら予期せぬ結果に。iTunesのヘルプはショートカットに関するものがヘルプメニューに切り出してあるのですが、載っていませんねこれは。

2008/02/18

GmailのGTD

このブログでいまだに二番目にアクセスがある「Gmail TODO GTD firefox」なんですが、今はにここに書いたような方法はとっていません。(Bloggerの改行設定を変える前のエントリなので凄い読みにくくなっています)

メールでタスク管理するに当って一番困るのは、やっぱり変更がしにくいことです。Gmailならスレッド表示はあるものの、GTDをやる以上ActionからProjectへの変更やその逆などが出来ないと色々不便です。

ただ、先日GmailのIMAP機能をいじってみて気が変わりました。これまでのGmail同期ツールなどでもPOPアクセスの一番の課題は「過去のメールがいじれない事」でしたが、IMAPなら古いメールを古いメールとして、去年送信したメールを去年の送信日時のままArchiveに追加できまるんですね。これはGmail以前に利用していたメールファイルもGmailにぶちこんでまとめて管理できるという利点があると思います。プロパイダが変わろうがPCが変わろうがマスタはGmailの中です。

ぶっちゃけEMLファイルならメモ帳でも作れるので、GTD用に都合のいいEMLファイルをローカルで捏造してIMAPでアップロードすればメールを利用したタスク管理が今まで以上に実用的になりそうな気がします。そこまでしてメールを利用する必要があるかは要検討ですが。

Thunderbirdの拡張機能がどこまでメールの機能に触れるのか知りませんが、予定のアラートなんかも一定時刻が来たら下書きメールを送信する、とかでメールの着信アラートが流用できて、Inboxにも残りますね。フィルタでNextとかラベル付ければ分類も自動で。タイトルを調整すればGmailではスレッドにもなるし、ThunderbirdではGmailのスラッシュ入りラベル"hoge/foo"とかをフォルダとして階層表示されるのも利用できそうです。

今Thunderbirdで感じる一番の不便は*.emlファイルをドラッグで受信箱に入れられないことですが、OE経由でインポートすることは一応可能で。これもなんか拡張とかで対応できる問題なんでしょうか。

という妄想は広がりますが、何もしていません。

個人的に仕事が完全にオフラインな環境のため、仕方なくWindowsのフォルダとファイルでGTD+超整理法をかじった様な環境をX-Finder+JScript+Autohotkeyで回しています。JScriptとかも食わず嫌いだったのですが、意外と制約のある環境で使おうと思えば使えるものですね。Win32APIなんて興味を持ち始めた辺りからMSに洗脳されている感を自覚してきました。

色々妄想していながら、全然アウトプットしていなかったので忘れていましたが、この辺見ていると又いろいろ妄想が膨らんできました。

データの安全確保とグーグルのGmail|野口悠紀雄が探る デジタル「超」けもの道|ダイヤモンド・オンライン

個人データベースのGREP検索による管理|野口悠紀雄が探る デジタル「超」けもの道|ダイヤモンド・オンライン

Gmailを用いた個人データベースの作り方と使い方|野口悠紀雄が探る デジタル「超」けもの道|ダイヤモンド・オンライン

2008/01/14

Bloggerプロフィールの干支

Bloggerのプロフィールは生年月日を入力して[星座を表示]にチェックを入れるとなぜか干支まで出てきます。

ただ、私は1980年(申年)の1/24生まれなので、「申」と表示されるのかと思っていたら「未」とでました。年じゃなく年度で区切られているのかと思ったのですが、つい最近「干支は節分から切り替わる」という話しを聞いたので調べてみました。

結果からいうと、節分(新暦の2/3前後)ではなく、旧正月(旧暦の1/1)から切り替わります。1980年の旧正月は2/16なので、1980/02/15までは未、1980/02/16からは申年になります。

日本人より日本に詳しいBlogger…

以下大雑把に調べた結果です。細かいところは端折っています。

太陰暦
旧暦。月の運行に基づいている(一ヶ月が29.5日、一ヵ年が12ヶ月・354日)
太陽暦
新暦。太陽の運行に基づいている(一ヶ月が28~31日、一ヵ年が12ヶ月・365.24日)
節分
春夏秋冬の開始日を立春、立夏、立秋、立冬と言い、その前日を節分と言う。ただし、近年の「節分」というと立春前の節分を指す。
立春
立春の基準日は冬至(一年で最も夜が長い日)と春分(昼夜の時間が一緒になる日)の中間。旧暦では正月(旧暦の1月1日)前後に立春が来る。ただし、旧暦は月の運行基準で、立春が太陽の運行基準で決まるため、当然ずれる。新暦は太陽基準のため概ね2月3日前後に節分と立春が来る。これらのずれ(=暦と季節のずれ)を調整するのが閏年。
干支
干支は旧暦使用中から適用されていたので、本来は新暦ではなく、旧暦基準で決める。
干支の切り替えが「節分」と言われる説は、新暦の節分が旧暦の正月近くになるためかと思われる。ただし、旧正月と新暦の節分(2月3日)は毎年わりとずれが発生する。
例えば今年(西暦2008年)の旧正月は新暦上の2/7(新月の日)。そのため、旧暦基準で考えるなら2008/02/06生まれは亥年。2008/02/07生まれは子年になる。
干支が新暦の節分基準であれば、~02/03生までが前年の干支、02/04~生が今年の干支と考えて差し支えない(若干ずれる年もある)。
旧暦の正月基準であれば、毎年異なるので要調査。以下は私の知り合いの生まれ年の旧暦基準の晦日と正月。
2008~02/06亥年02/07~子年
2007~02/17戌年02/18~亥年
1995~01/30戌年01/31~亥年
1986~02/08丑年02/09~寅年
1987~01/28寅年01/29~卯年
1982~01/24酉年01/25~戌年
1980~02/15未年02/16~申年
1978~02/06巳年02/07~午年
1968~01/29未年01/30~申年
1954~02/03巳年02/04~午年
1950~02/16丑年02/17~寅年
1934~02/13酉年02/14~戌年
1921~02/07申年02/08~酉年
こよみのページ 節分の日取り

2008/01/01

Shared stuffのローカライズ(日本語化)

Googleのその他多くのサービスと同様URLの後ろに

&hl=ja

を付けると日本語表示されました。ほぼ機械翻訳のままですが

ひょっとしたら私がGmail他の設定を英語表示にしていたので、Shared stuffも英語だったのかもしれませんが、メンドイので調べません。

最近ソーシャル機能にダメだしを食らうことが多いGoogleですが、それにしてもShared stuffネタは少ないですね。温度が低いというか。確かにいじれるところが(まだ)少ないですが。

WSHの暗黙の最上位オブジェクトはscriptlet

a.hanai 公開モノ置き場 | scriptletオブジェクト
WSHにおける最上位オブジェクトとして「scriptlet」オブジェクトというモノが存在します。

HTMLの(中でJavaScriptを使う)場合、宣言なしにwindowオブジェクトが使えますが、JScriptの場合このwindowオブジェクトはありません。

JScriptの場合、WScriptが最上位のオブジェクトと説明するサイトもありますが、windowと同様の暗黙オブジェクトとされるなら、echoを書くたびにWScriptのSを小文字で誤タイプしてキレたりする必要はなくなりそうなもんですし、関数がWScriptのメンバになっても良さそうなもんです。

function main(){} WScript.echo(typeof WScript["main"]); // undefined

つまりこのコードでundefinedではなく、functionが返ってきて欲しいわけです。

で、実際に上記のサイトどおりscriptletを参照するとそのような動きになります。

<job> <script language="JScript"> function main(){} WScript.echo(typeof scriptlet["main"]); // function </script> </job>

ただし、これはwsfの場合でjsの場合、やっぱり使えません。

function main(){} WScript.echo(typeof WScript["main"]); // undefined WScript.echo(typeof scriptlet["main"]); // error('scriptlet'は宣言されていません)

ラッパークラスを作るような、ある程度の規模のコードならどっちにしろJScript単体では無理があるので、wsfの方を使えということでしょうか。ただ、複数ライブラリを読み込むようなある程度の規模のwsfファイルでグローバルな名前空間は逆にあんまり使いたくないですね。

2007/12/30

.xulファイルをFirefoxで開く

HTML Applicationは、拡張子を.htaに変えるだけでいいのに、XUL Applicationは-chrome付けてFirefox起動したりでメンドウだ。というのを見かけた(Firefoxの-chromeオプション/Firefox・XUL使いへの道へ - A Better Project@はてなダイアリー)ので、Windowsで.xulを叩くとFirefoxを-chrome付きで呼び出すレジストリ更新ファイルを作ってみました。

既に何かしらのアプリで.xulファイルへの関連付けをしていると上書きしてしまうので要注意です。

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.xul] "PerceivedType"="application" @="xulfile" "Content Type"="application/vnd.mozilla.xul+xml" [HKEY_CLASSES_ROOT\xulfile] [HKEY_CLASSES_ROOT\xulfile\shell] [HKEY_CLASSES_ROOT\xulfile\shell\open] @="open(&O)" [HKEY_CLASSES_ROOT\xulfile\shell\open\command] @="\"C:\\Program Files\\Mozilla Firefox\\firefox.exe\" -chrome \"%1\""
ローカルファイルだと、file:///形式でURLを指定しないと起動できない。これはIEが拡張子をHTAにするだけで良いのに比べて、遥かに面倒。

という記述があったので、パスをfile://形式のURIに変換するJScriptを作ってそっち経由で呼び出そうとしたのですが、JScript経由でFirefoxを呼び出す関連付けの方に数時間悩みました。しかも解決直後になにげなくJScript経由せずに"C:\..."形式で渡したら問題なく起動する始末。よく見たら1年以上前のエントリーなのでFirefoxのバージョンアップで解決したんでしょうか。

それ以前の問題として、自宅の環境では-chromeオプションを付けているのに本体が起動してしまいます。-safe-mode付けると本体は起動しなくなるので、なんか拡張が悪さしているのかもしれませんが、こちらを調べる方がメンドウ過ぎてやる気がしませんね。拡張を順に一つずつ切って起動するテストツールとかの方が実用性ありそうです。

2007/12/25

Shared stuffでXULがshareできない

掲題。ちょっと不便。画像とか直接share出来たように記憶しています。

2007/12/24

最近つけたタグ

これ(最近貼られたラベルのリスト)をBloggerのウィジェットとして追加してみました。(多分トップページの)エントリに付けられたタグがクラウドっぽく表示されます。自宅環境ではFx2とIE7でちゃんと表示されました。

  1. HTML/Scriptウィジェットを追加
  2. テンプレートを修正

<div class='widget-content'></div>の部分をこちらのコードで置き換えています。

スクリプト単体では割とすぐ動いたのですが、アップしてみると色々問題が出て、むりくり都合つけたため最後のほうはグダグダに。ラベルをJSONフィードで読み直しているので1テンポ遅れて表示されます。本当はロード中のアニメーションとかも付けたい所。

ウィジェット追加ボタンを作りたかったのですが、あれは配布フォーム作るのがメンドウです。コードにウィジェットとして問題点があると黙殺されるだけなのでどこを直せばいいのか探すのが大変過ぎます。

2007/12/11

「Windows版Google Gearsの…」の、より簡単な設定

ちょっと前に、こんなの書きました(Windows版Google Gearsの変則使用)が、こちら(全プロファイル共通の拡張機能をインストールする方法 - hogehoge)を利用すると、全然簡単でした。

要するに、Firefox本体の"extensions"フォルダに突っ込んだアドオンは、その本体を呼び出す全プロフィールの"extensions"に勝手にインストールされるそうです。

コレで行くと例えば、持ち運び用Firefox本体=D:\opt\Firefox\だとすると

  1. D:\opt\Firefox\extensionsの下に"{000a9d1c-beef-4f90-9363-039d445309b8}"というフォルダを作る
  2. C:\Program Files\Google\Google Gears\Firefox\の中身を1のフォルダに突っ込む
  3. 適当なプロフィールを起動
これだけ。

Google Gearsの場合、extensions以下にはデータを残さないので、既に利用中のプロフィールからコピーしても別のプロフィールでは綺麗に初期化されています。ただ、extensionsフォルダ以下にデータを保存するようなアドオンの場合、プロフィール間のコピー(ハンドルから実名プロフ等)は気をつけたほうがいいかもしれません。

2007/12/08

Google Bookmarks、Shared stuff及びNotebookの連携

Shared stuffの幾つかのstuffにfaviconの様なアイコンがあるのでよくよく見てみると、Bookmarksで使われている星アイコンでした。faviconが付くわけではなく、BookmarksとShared stuffで同じURLをブックマークするとこの星アイコンが現れるみたいです。

bookmarkしてからshare
Shared stuffのタグ入力欄にBookmarksで入力したタグが予め設定される
shareしてからbookmark
Bookmarksのタグ入力欄は空
Bookmarksから"remove"(星アイコンクリック)
Shared stuffからも消える
Shared stuffから"Remove this item"
Bookmarksには残る
後からタグを変更する
先にbookmark/shareした方のタグが上書きされる

Google Toolbar等のボタン一発でブックマーク出来る機能を使うとタグ無しでbookmarkされるため、Shared stuffのタグが消されてしまいます。

また、iGoogleの「ブックマーク」ガジェットは"homepage"(日本語版だと「ホームページ」)タグを付けたBookmarksを表示しますが、

  1. "homepage"以外のタグを付けてbookmark
  2. Shared stuffから同じURLに"homepage"タグを付ける

とBookmarks側が変なことになりました。この状態ではiGoogleのブックマークガジェットに表示されません。

さらに

  1. iGoogleから同じURLをブックマークに入れてみる

とShared stuffから消えました

さらに

  1. Shared stuffから「ホームページ」タグを付けてみる

とBookmarks(とiGoogle)から消えました

"homepage"周りの挙動はちょっと不可解です。

また、Notebookに続きBookmarksの連携先第2弾かと思えば、三者連携の様でNotebookの"labels"にShared stuffのタグが表示されています。Shared stuffには付けていてBookmarksにはつけていないタグがあるので間違いかと思います。ただし、Notebookの"Undefined bookmarks"はあくまでBookmarksの様でundefinedなshared stuffは表示されません。

まだ連携し始めで色々不備もあるでしょうが、Googleのサービス同士横のつながりが増えていく様子に期待が高まります。

2007/12/04

BloggerのWidgetタイトルにリンク

このブログの左下に入れていたdel.icio.usのフィードウィジェットをShared stuffに変えてみました。

変えたのはいいのですが、各sutffへのリンクだけでShared stuffの個人用ページには飛べません。そこで、試しにタイトルにリンク(<a>タグ)入れてみたら、できるんですねコレ。URLを入れるには100文字制限がキツイですが。

実は同じことがShared stuffのprofileページのlink(Add a linkボタン)やtext(About yourself欄)に出来たらAnalyticsのurchinTrackerいれて追跡できるなぁ、と思ったんですが、そっちはダメでした。

将来的にProfileがいろんなページから参照できるようになったら(なったらの話)、どっから来てどっちに行ったか調べる手段が提供されるんでしょうか。

2007/12/02

config.trim_on_minimizeが効かない

Firefoxの最小化時に物理メモリを強制スワップさせる(らしい)設定として一時物議を醸していた"config.trim_on_minimize"ですが、いつの間にか自宅の環境で効果がなくなっていました。

最初に設定した頃から今までにあちこち弄り過ぎている上に、Firefoxのバージョンもだいぶ変わっていますので原因はわかりません。

"config.trim_on_minimize"はスワップさせるだけなので、一旦リセットしたいなら、こちらの方がまだ有用かと思い、原因追求はしておりません。Firefoxの再起動ショートカットキー

全然関係ないのですが、Firefoxのスペル(大文字/小文字)と推奨される短縮形なんてあったんですね。略称は"ff"の方がよく見ますが、"Fx"/"fx"が推奨されているようです。Firefox のスペルは? 短縮形は?: Firefox Help: Firefox FAQ

2007/11/28

Windows版Google Gearsの変則使用

Windows版のGoogle GearsはMac版やLinux版とインストール方法が異なります。ダウンロードしてくるファイル自体が、例えばMac版などでは"gears-osx-opt.xpi"など、XPIファイルなのに対して、Windows版は.exeのインストーラです。これはIEでも使えるようにするための措置だと思うのですが、Profileを持ち歩くためにこんなこと(Firefoxのポータブル化、と複数Profileの多重起動)をしていると、よそのPCではGoogle Gearsが使えなくなります。

これはインストーラーによって設定されたGears本体がProfileフォルダではなく"Program Files"フォルダなどの下に入れられるためです。下記はインストーラ使用のProfileフォルダに置いてあった"extensions.ini"の抜粋です。

Extension11=C:\Program Files\Google\Google Gears\Firefox

当然Profileだけ持ち歩いても、参照先のGears本体はよそのPCのProguram Filesには入っていませんので使えません。で、どうするかというと、

  1. Windows版のXPIを作る
  2. 一度アンインストールする
  3. XPIでインストールしてみる
  4. 確認

という手順を踏んでみました。結論から言うと入れられたっぽいのですが、作業の途中途中で挙動は激しく不審です。

Windows版のXPIを作る
既にインストールしてある場合、上記のextensions.iniに書いてある様なパスに本体があるはずです。このFirefoxフォルダ以下の構成は典型的なアドオンのフォルダ構成になっているので、そのままZIPにして下さい。注意点はinstall.rdfがZIP内のトップフォルダに来るようにして下さい。フォルダごと圧縮すると同名のフォルダを中に作ってしまう設定の圧縮ソフトがありますが、中にフォルダを作ってしまうと、アドオンマネージャがinstall.rdfを見つけられない様です。圧縮したZIPファイルを"gears-winnt-opt.xpi"などのファイル名に変えておきます。多分問題なのは拡張子だけでファイル名は適当で構わないと思います。
一度アンインストールする
インストーラから入れたGoogle Gearsはアドオンマネージャからは消せません。Windowsの「プログラムの追加と削除」からアンインストールして下さい。当然他のProfileやIEでも使えなくなります。
XPIでインストールしてみる
アドオンマネージャにXPIファイルをドロップします。私の場合、一度ドロップしたらインストールが始まるものの、プログレスバーが途中で消え、Firefoxを再起動してもインストールされていませんでした。再度ドロップした所、今度は正常に完了し再起動ボタンが押せました。この辺あからさまに挙動不審です。
確認
  • アドオンマネージャに"Google Gears"の文字
  • extensions.iniの参照先が {profile folder}/extensions/{000a9d1c-beef-4f90-9363-039d445309b8} に
  • extensionsフォルダの下に"{000a9d1c-beef-4f90-9363-039d445309b8}"フォルダがある。前述のProgram Filesの下にあったフォルダです。
  • 公式サイト(Google Gears (BETA))で"installed"に
  • Google Readerにダウンロードボタン
  • ダウンロードが始まる。
  • localserver.dbを覘いてみる(SQLite manager使用)

イケてるっぽいですね。でもオフラインにしてキャッシュ全部削除してReaderページ開いたら見られませんでしたorz なんか基本的な使い方が間違えていますか?Gearsの解説サイト見る限りではWebのキャッシュ消してもhtml自体がリソースストアにキャッシュされるので見れるとあったのですが。

とりあえず明日、キャッシュを消さずに他所のPCにProfileフォルダを移動して確認してみます。

以下蛇足。

  • 色々やる前にProfileのバックアップなど忘れずに
  • Windows版インストーラは"default"Profile以外のProfileフォルダをHDDから見つけ出してGearsを設定します。ちょっと怖い。
  • NotebookはアドオンのIDが"notebook@google.com"なのにGearsのIDはclsidなんですね。本腰の表れ?

2007/11/27

Shared stuffのサイト・サムネイル

Profile pageと同様に、独立した画像として呼び出せます。勝手に使ったら怒られますかね?

http://base.googlehosted.com/base_media[?{options}] 全省略=90x90の"Image not available" q={escaped image url} dhm={?} size={n}
  1. size= 1(400x400)"Image not available"
  2. size= 2( 90x 90)デフォ
  3. size= 3(120x120)
  4. size= 4(220x200)
  5. size= 5( 60x 60)
  6. size= 6(400x400)
  7. size= 7( 60x 60)"Image not available"
  8. size= 8( 60x 60)7と同じ
  9. size= 9( 80x 98)
  10. size=10(120x 90)
  11. size=11(300x300)
  12. size=12( 40x 40)
  13. size=13( 40x 30)
  14. size=14( 90x 90)以降2と同じ

Google Gearsページのサムネイルについて適当に調べた限りではこんな感じになっています。
画像は元々のサイトにある物(image urlの部分)をキャッシュしてサイズだけ変えている様です。dhmは良くあるハッシュの様なアルファベットの羅列で意味はわかりません。

サイト内検索結果

ちょっとGearsについて調べていたらGoogle Code Blogにぶち当たりました。開いた先がトップページだったのでサイト内検索したところ、タブ表示に。

サイト内検索って、全然使ったことが無かったのですが、こういう実装がスタンダードなんでしょうか?よく出来てますねぇ。そういえばすっかり聞かなくなった"Related link"に似ていますがアレは何処にいったんでしょう。

2007/11/26

Google Profile page

MapsとShared stuffはインラインフレームで共通のprofileページが表示されます。user idもこの二つは同一みたいです。

他にReaderのシェアページ、BloggerのユーザID、BloggerのBlogID、ノートブックのシェアページなどIDらしきものが振られていますが一致しませんね。

http://maps.google.com/maps/c/widgets/ProfileViewer?uid={user id}[&others] http://www.google.com/s2/widgets/ProfileViewer?uid={user id}[&others]

widgets/以下は同じですが、それより上は違います。

URLオプションで多少見た目もいじくれるこのページ、適当にインラインフレームでBloggerやPageCreaterに使っても良いんでしょうか。

2007/11/25

Google shared stuff

ヘルプページ
http://www.google.com/s2/sharing/resources/static/html/help.html
ヘルプページのスクリーンショットと私の端末で表示されるページは若干違います(Xxx has shared n items via…の部分がありません)。すでに細部でマイナーチェンジしてるのでしょうか?
sharedしたstuffが勝手に消えている事がある。
昨日sharedしたstuffが幾つか消えています。とくに如何わしいサイトでもなかったんですが。Report spam的な通報システムが変に働いたんでしょうか。またmixiでマイミクが0人で長期放置するとアカウント削除の様に、[view]が1のままだと一定期間で削除などのルールがあるのでしょうか。
まだ、全てのブックマークを預けるにはちょっと信頼性に欠くようです。
自分のページより知り合いのshared一覧が優先?
URLオプション無しのページに行くとGmailのコンタクトリストに追加されている他人のshared一覧が表示されます。del.icio.us/network見たいな物ですが、優先順位がdel.icio.usとは逆の様です。
  • del.icio.usは自分のブックマークがデフォルトで、知り合いはnetworkというサブページ
  • Shared stuffは"Updates from others"がデフォルトで、自分は"My Updates"というサブページ
コンタクトリストに追加する場合はエイリアス付きでOK
例えばhoge@gmail.comさんのsharedを購読したい場合、hoge+huga@gmail.comというアドレスをコンタクトリストに追加しても"Updates from others"ページにちゃんと表示されます。
メールをするような知り合いではないけど、この人のsharedを見たいなという場合(del.icio.us/network的な使い方)、hoge+sharedstuff@gmail.comなど適当なエイリアスで分類できますね。
自分が誰に見られているか判らない
コンタクトリストの追加はNotebookの共有などのように通知が行かないので、相手に断りなく幾らでも追加できてしまいます。del.icio.us/networkの場合、[your fans]という場所に自分のブックマークの閲覧相手が見えるのですが、Shared stuffでは今のところ確認できませんでした。
また、Shared時のポップアップに[publicly visible]という表示がありますが、"hidden"などの選択肢はないため、今のところ見られる側に拒否権は無いようです。メアドが知られれば誰でも"Updates from others"ページに追加できてしまいます。
コンタクトリストから消してもUpdates from othersからは消えない?
  1. AさんがBさんをコンタクトリストに追加
  2. BさんがShared stuffにページを追加
  3. AさんがBさんをコンタクトリストから削除
  4. AさんのUpdates from othersにBさんのShared stuffが表示される
コンタクトリストに在籍中にBさんが[Remove this item]したstuffはAさんの"Updates from others"ページからも消えます。
自分は"Updates from others"ページには入らない
自分のコンタクトリストに自分のメアドを登録しても、"Updates from others"ページに自分のshared stuffは表示されません。自分のshared stuffも知り合いのshared stuffもごった煮にして時系列で並べたい場合は他の手段を利用する必要がありそうです。

2007/11/24

Google shared stuff

全然情報がないですね。URLオプションとか、検索用のフォームとかあるかと思ったんですが。食指が動かないのでしょうか。

前回間違えていたっぽいのは[view]項目はshared数ではなく、Shared stuff経由で参照された数っぽいです。ただ、フィードから参照する場合、直リンクなのでその辺どう追跡するのか、viewの実数が本当に参照数なのかもわからないのでなんともいえません。

http://www.google.com/s2/sharing/stuff?lmode=globalにアクセスすると"Top shared stuff"が見られます。今現在は上位ページはポルノサイトだらけです。

URLオプションもちょっといじった限りでは全然わかりません。収穫はJSONフィードが取れたくらい。

lmode = "global" output = "rss" | "json" user = {user id} tag = {tag name}

user + tagは可能(指定ユーザの指定タグ)
ex) ?user={user id}&tag={tag name}

userを複数指定すると最後に指定したものだけが有効になる
ex) ?user={user1 id}&user={user2 id}
-> user2のページが表示される

tagを複数指定すると最後に指定したものだけが有効になる
ex) ?tag={tag1 name}&tag={tag2 name}
->tag2の検索結果が表示される

複数タグのアンド検索などは出来ませんでした &tag={tag1 name}&{tag2 name} &tag={tag1 name},{tag2 name} &tag={tag1 name}+{tag2 name} などどれもだめ。(記号そのまま、エスケープ共に)

lmodeにはglobal以外何を入れても("private", "local", "hoge"etc)全部"global"と同じ結果でした。

Google shared stuff

Shared stuff from people you know

ヘルプと関連ブログは敢えて見ずに第一印象。


Googleなのに検索窓が無い。のは突っ込んだら負け
タグ名のリンクをクリックすると同じタグの付いたものは見れます。
気になるタグは自分で一度つけるかurl直打ち編集。
削除は出来るが編集不可
[Remove this item]リンクはありますが、編集する場合は、そのページをもう一回開いてSharedブックマークレットをもう一回実行する必要が。
タグ入力欄に、過去に付けたタグの補完機能が無かったり。気が付いたらどんどん改良されてる系でしょうか。
コメントの後ろにsharedしたユーザ名が出ますが、過去にsharedしたstuffはプロフィールを変更しても反映されません。これは仕様ぽい気もしますが。
faviconが無いのが仕様ではない事を希望します(勝手にブックマークレット用の画像を転用しています)
リアルタイム性が強い?
フィードをはいたりしているので、Google Bookmarkよりdel.icio.usの代替にしようかと思います。
  1. 目に付いたらShared Stuffに突っ込む。
  2. 永続的に残したいものは分類してGoogle Bookmark
  3. 最初から目的を持って集めたのはNotebook
という使い分けだと、「Notebookに入れると同時にSharedされる」ブックマークレットとかあると便利かも。
利用者がまだ少ない
各stuff(という表現でいいのでしょうか)には他にsharedした人数が表示されます。みんなとりあえずやりそうなもんですが、Shared Stuffページ自体のSharedすら現在228,913件。"favicon"タグを付けたほかのstuffは見つかりませんでした。"Google"というタグですら、数時間前に自分がsharedしたShared Stuffページが上位に表示されます。
自分のstuffが上に表示される、とか、時系列じゃない、などの勘違いでなければ(特に日本語圏の)人数増加のブレイクスルーは当分先でしょうか。

2007/10/07

最近貼られたラベルのリスト

ラベルリストを表示するウィジェットはデフォルトで用意されていますが、「貼られた回数順」か「あいうえお順」しか選択肢がありません。

しかし、例えば具体的なサービス名や作品名などの固有名詞をラベルにしている場合、ここ半年言及していないのに"A"で始まるからという理由で"Amazon"のタグが一番上に表示されていても大した役に立ちません。流行物を追いかけているブログほどラベルリストが役立たずになってしまいます。

そこでBloggerのサイトフィード機能の一つ、JSONフィード出力機能を使って「直近のエントリーに貼られたラベルリストを抜き出して表示する」というのをやってみました。

1:RecentoryLabels = { 2:"labels" : {}, 3: // labelsオブジェクトに未登録のラベルを追加 4:"init" : function(_aJsonData) { 5: 6: // JSONフィードからエントリー配列(root.feed.entory)を取得 7: var entrys = _aJsonData["feed"]["entry"]; 8: 9: // 各エントリーのラベル配列(entory.category)を取得 10: for (i in entrys) { 11: var updated = entrys[i]["updated"]["$t"]; 12: var categorys = entrys[i]["category"]; 13: for (j in categorys) { 14: // JSONフィード自体が更新日の降順でソートされているので、 15: // 既に登録されている=そっちの方が新しい 16: if (!(categorys[j]["term"] in this.labels)) { 17: // 更新時間のマッピングは特に意味なし 18: this.labels[categorys[j]["term"]] = updated; 19: } 20: } 21: } 22: this.disp(); 23: }, 24:"disp" : function() { 25: // 出力用にlabelsオブジェクトを配列に 26: var s = []; 27: for(i in this.labels) s.push(i); 28: 29: // "recentory_labels"というDIVかなんかを用意しておく。 30: if (out = document.getElementById("recentory_labels")) { 31: // カンマ区切りで表示 32: out.innerHTML = s.join(", "); 33: } 34: } 35:} 1:<body> 2: <div id="recentory_labels"></div> 3: <script src="http://knyijong.blogspot.com/feeds/posts/default?orderby=updated&alt=json-in-script&callback=RecentoryLabels.init"></script> 4:</body>

"RecentoryLabels.init"をコールバック関数に指定してJSONフィードを呼びます。disp中のgetElementByIdがnullを返さないように、JSONフィードの呼び出しは出力する場所より後に書く必要があるみたいです。

実際にはJavaScriptの32行目辺りをいじってラベル名をクリックしたらラベル別ページに飛ぶ、といったAタグを入れる予定ですが、メンドイので導入は気が向いたら。

出来ればクライアント(JavaScript)じゃなくてサーバサイドでやりたいですが、Yahoo Pipesでも使わないと無理でしょうか。

出力イメージです。このエントリー直前までのこのブログのラベルを「最近貼られた順」に240px幅の枠にクラウドっぽく表示した図。

2007/07/29

Google Readerのヘッダ非表示

@namespace url(http://www.w3.org/1999/xhtml); @-moz-document url("https://www.google.com/reader/view/") { #global-info { display : none !important; } #logo-container { display : none !important; } }

Firebugで適当にいじってStylishで適用しています。

探せば幾らでもありそうですが、Firebug使う口実が欲しかったので自作です。

2007/07/26

microSDのアイコン

microSD icon

意外とないので自作。DotWorkというエディタを使用させていただきました。

PRD-MSD3なんかを使ってmicroSDを挿したときのドライブアイコンが欲しかったのです。

アイコンの指定はメディアのルートフォルダにautorun.infというテキストファイルを作って、以下の記述。アイコンファイルはautorun.infと同じ場所においてあります。LABEL指定はおまけです。

[autorun] ICON=microsd.ico LABEL=MicroSD 2GB

こんな感じになります。

USBマークの正確な規格などは当然知りませんので適当です。

2007/07/25

読込み中止はEsc

Firefoxでページの読込み中止はEscキー。

ブラウザの基本的なボタン

  • 戻る(Alt+Left)
  • 進む(Alt+Right)
  • 中止
  • 更新(F5, Ctrl+R)
  • home(Alt+home)

はショートカットキーで代替できるので消していたのですが、中止ボタンだけはとっさの時に押せないと困るので残していました。

が、別の用件でkeyconfigの設定画面を眺めていたら、中止がEscに割り当てられているのに気づく。これで全部のボタンを排除できました。

キー割り当てを変更する気がなくても、keyconfigは入れておいて損はないアドオンだと思います。

2007/07/23

Google Readerのサイドバーをトグル

Google Readerのサイドバーは"u"キー押下でトグルできるのですが、マウスでトグルする方法がない。Google Mapsの様に左矢印をクリックでマップの表示領域を最大化、とかしたいのです。

"u"キー押下時に呼んでいるイベントを呼べばいいのかと思ったんですが、探し方がわからず。

HTML眺めていたら、トグル時にBODYタグのclassが変わるようなのです

  • サイドバー表示時
    class="mozilla loaded"
  • サイドバー非表示時
    class="mozilla loaded hide-nav"

直接class属性いじればいいのかな?っていうことで以下のコードを流してみたら思いのほか想定どおりに動いてくれました。

// 非表示->表示にするテスト // classから"hide-nav"を消す (function(){ var b=document.getElementsByTagName("body")[0]; var x=b.getAttribute("class").split(" "); x.pop(); b.setAttribute("class",x.join(" ")); })()

あとはリストの上に表示されている"All items"等に"chrome-stream-title"というIDが振られているので、onclickイベントでも追加すればいいのかな?

何で実装しようか。

しかしFirebug便利ですね。これを書いている途中に気が付いたのですが、コンソールからコード投げなくても、直接class属性値もいじれたのかorz

2007/07/16

Firefoxの再起動ショートカットキー

【Firefox&Thunderbird拡張】 Custom Buttons を試してみた。

こちらで紹介されているFirefoxの再起動用ボタンのスクリプトをkeyconfigに追加してみたところそのまま動きました。試していませんが、多分Mouse Gesturesなどのアドオンでも動くのではないでしょうか?

Firefoxの起動時にホームページを表示する設定にしているが、たまに(config設定時やアドオンの設定変更後に)タブの状態を残したまま再起動したいときなど便利です。

Alt+F4が終了なのでShift+F4を再起動にしました。本当はShift+Alt+F4にしたかったのですが、keyconfigにうまく登録できず。

以下がコードの抜粋です。1~2行目のコメントを外すと確認ダイアログが出るようです。試してませんが。

//var confirmRestart = window.confirm('Are you sure you want to restart firefox?'); //if(!confirmRestart) return; var appStartup = Components.interfaces.nsIAppStartup; // if (canQuitApplication()) // uncomment if using zeniko's Session Manager Components.classes["@mozilla.org/toolkit/app-startup;1"] .getService(appStartup).quit(appStartup.eRestart | appStartup.eAttemptQuit);