職場でネットアクセス禁止になりかけた話と、Google Chromeを職場で使用するときの注意

いきなりまとめ

  • Google Chrome拡張機能を自動でアップデートするため、拡張機能のなかに望まない機能が追加されても気づきにくい。
  • Google Chrome を社内で使用するときは、時々自分のPCがリリースするHTTP Requestを監視しよう。
    • さもないと、社外へのアクセスを禁止される羽目になるかもよ、オレみたいに。

経緯

職場での話。

ある日、何の前触れもなくインターネットへのアクセスができなくなった。ゲートウェイが故障して一時的にネットにアクセスができなくなっているのかと思ってしばらく待っていたのだけど、一向に回復する様子はない。そういう事故が起こったときはいつもどこからともなく聞こえる「ネットに繋がらないよねー」という会話がこのたびは聞こえないし、隣人は普通にヤフーにアクセスしている。

社内ネットワーク管理者に相談してみると、「頻繁にHTTP Requestが要求される場合、社内プロキシが当人のRequestを自動的に遮断することがある。あまりにひどい場合はアカウントが凍結されることもありうる」とのこと。

職場で普段使っているブラウザはGoogle Chromeだけど、なにぶんコンプライアンスにうるさい職場なので、ポーリングを行なうような拡張機能は利用しないようにしている。少なくともブラウザを起点とする頻繁なHTTP Requestが発行されていることはない。そう思っていた。

ところが、WireShark でパケットを覗いてみると、なんと2秒毎にHTTP Requestが発生している様子。リクエスト先は Google Reader

原因は、Chrome 拡張機能のうちの "Google Reader Plus" という拡張だった。これがアップデートの折に「未読件数をアイコンに表示する」という新機能が追加されたようで、その未読件数を更新する間隔が2秒に設定されていたのだった。

教訓

拡張機能の更新にいちいちSubmitが必要なFirefoxに対して、Chromeはバックグラウンドで勝手に更新してくれるという点が便利だと思う。だけど、時としてその自動アップデートは不本意な機能をもたらす場合があるということだ。

これは、悪用すればかなり深刻な被害をもたらしかねないよなぁと思う。

まあ今回はオレがネットアクセスを遮断された程度で済んだ(泣)。

zencoding-mode.el は既に、yasnippet との協調を実装している

スニペット補完後のカーソルの位置が、あまり使いやすくない。

zencoding-mode.el を眺めていて気づいたんだけど、zencoding-mode はすでにyasnippetとの協調を実装していて、これによって上の要望を解決している模様 (zencoding-mode:version 0.5(2009-11-20)版)。

zencoding-expand-yas という関数が、それ。

比較例

次の文字列を入力して、展開する。

div>p*2

zencoding-expand-line (yasnippetと協調しない) の場合

次のように展開される。[] は、展開直後のポイントの位置。まぁこれは確かにポイントをp要素に移動させるのが面倒くさい。

   <div>
      <p>
      </p>
      <p>
      </p>
   </div>[]
zencoding-expand-yas (yasnippet協調) の場合

次のように展開される。

   <div>
      
      <p>
         []
      </p>
      <p>
         
      </p>
   </div>

ここで [TAB] *1 を押すと、ポイントが次のp要素へジャンプする。超便利。

例2

この自動ジャンプはどれぐらい賢いのか、コードを追うのは面倒くさいのでw ちょっと複雑なスニペットを試すことで確認してみる。

div>(p>ul>li*2)+p*2

上のを zencoding-expand-yas コマンドで展開すると

   <div>
      
      <p>
         
         <ul>
            
            <li>
               [1]
            </li>
            <li>
               [2]
            </li>
         </ul>
      </p>
      <p>
         [3]
      </p>
      <p>
         [4]
      </p>
   </div>

[TAB] を押下するごとに、[1] - [4] の順番にポイントが移動する。どうやらツリー構造の末端を移動していく仕様のようだ。

結論

yasnippet を利用している環境でzencoding-modeを使う人は、zencoding-expand-line の代わりに zencoding-expand-yas を利用すべし。

(define-key zencoding-mode-keymap (kbd "<C-return>") 'zencoding-expand-yas)

*1:yasnippet.el で "yas/next-field-or-maybe-expand" にバインドされている

EvernoteとEmacsの連携(ただしWindows限定): カレントバッファの内容をEvernote新規Noteとして登録する

http://r.nanapi.jp/1970/」 という記事で、Evernoteコマンドラインで制御するENscriptというものの存在を知ったので、これを利用して、標記のemacs lispをつくった。

Windows限定ということもあり、需要は低いでしょうなぁ。

条件

  • Windows専用。
  • コードの ens-exec のパスは自分の環境に応じて書き直してください。

使い方

  • 下記スクリプト.emacs に登録。
  • M-x save-current-buffer-to-evernote
  • ミニバッファの指示に従って、ノートのタイトル、タグを入力する。
    • 入力されたタイトルに".txt"の拡張子を付加したものが、Evernote上でのNoteタイトルとなる。
    • 複数タグを付加するときは半角スペース区切りで。

スクリプト

(defun save-current-buffer-to-evernote (title tagstring)
  "カレントバッファの内容をevernoteに保存する"
  (interactive
   (list (read-string "Note Title: ")
	 (read-string "Tags (with SPC separation): ")
    ))
  (save-excursion
    (let* ((work-buffer-name "*en-workbuffer*")
	  (bufbody (buffer-substring (point-min) (point-max)))
	  (tmp-file-name (concat (getenv "TEMP") "\\" title ".txt"))
	  (ens-exec "\"C:/Program Files/Evernote/Evernote3.5/ENscript.exe\"")
	  (ens-com (concat ens-exec " createNote"
			   " /s \"" tmp-file-name "\""
			   " /t " (replace-regexp-in-string " +" " /t " tagstring)))
	  work-buffer)
      (if (get-buffer work-buffer-name)
	  (kill-buffer (get-buffer work-buffer-name)))
      (setq work-buffer (get-buffer-create work-buffer-name))
      (set-buffer work-buffer)

      (insert bufbody)
      (write-file tmp-file-name)
      (message ens-com)
      (shell-command ens-com)
      (kill-buffer work-buffer)
    )))

愚痴

  • ENscriptでは ".txt" の拡張子を持ったファイルしか登録できんのかよ。
  • せめて ".html" ファイルをリッチテキストのまま登録できれば良いのに、と思った。
  • そうすれば、いつまでも使い心地が改善しないevernoteエディタに代わって、org-mode で HTML-exportしたものをEvernoteへ登録、という夢のエディット環境が実現できるのに、と。

Mac版Evernoteが同期できなくなったときの一対処法

とくに特別な操作をしたわけでもないのに、わがEvernote環境にて突然

Synchronization failed because of an error communicating with the Evernote servers.

...なるエラーが発生してサーバと同期ができないという現象が起こった。サーバ側の一時的な不具合かと思って数日放置していてもこのエラーは発生し続けている。
そういえばWebクライアントやWindows環境のクライアントが正常に機能していることを考えると、MacローカルのEvernoteに不具合が発生したと判断することができる。

Evernoteのフォーラムをさがしてみると、この現象にちかい投稿を見つけた。

記事によると、特定のノート(記事)が壊れていることが同期を失敗する原因となっているらしく、この壊れたノートを特定して(ゴミ箱からも)削除すればまた同期できるようになるとのこと。

対処法

  1. Console.app を起動する。
    • 右上の検索ボックスに "Evernote" と入力して、Evernote関連の項目のみフィルタリングする。
  2. Console窓を眺めて、壊れたノートを特定する。
    • 自分の場合は「不動産物件検討」というノートだ。(あとで画像を貼る)
  3. 特定されたノートを削除する。
    • ゴミ箱からも削除することを忘れずに。

これで晴れて同期が再開しました。

でもこのノートを削除したくないというケースもある。今回のワタシの場合、上記のノート削除のときに以下の作業を行なうことでノート喪失を防ぐことができました。

ノートを失わない対処法

(1.-2. は上と同じ)
3-1. 特定されたノートをエクスポートする。 (*)
3-2. 特定されたノートを削除する
3-3. (*) をインポートする

めでたし、めでたし。

「yasnippetで同じパターンを連続入力する」件の新バージョン対応

yasnippetで同じパターンを連続入力する - http://rubikitch.com/に移転しました のoneshot-snippet、すごく便利です。これのおかげで 30min/day 分ぐらい省力させてもらってます、たぶん。

ところで、yasnippet.el のバージョンを0.7.0にアップデートすると、このoneshot-snippetが動かなくなっちゃった。どうやら yas/expand-snippet の関数仕様が変更になったことが原因らしい。

id:rubikitch のコードのうち、関数 yas/expand-oneshot-snippet を次のように書き直したらこれまで通りに動くようになったのでご報告。

(defun yas/expand-oneshot-snippet ()
  (interactive)
  ;; (yas/expand-snippet  (point) (point) yas/oneshot-snippet)  ;; for older version.
  (yas/expand-snippet yas/oneshot-snippet (point) (point) nil)
  )

EeePC 901-16GでZumoDriveを起動しようとするとエラーが発生する件の解決

EeePCにインストールしたzumodrive.exeを起動しようとすると

Error invoking method main(java/lang/String[])

というエラーが発生して起動できない件。
これはおれの環境の場合、EeePCにインストールされているJREのバージョンが低いことが原因だった。
こちらから最新のJREをダウンロードしてインストールすると、何の問題なく起動することができたのでここに報告。

参考:
http://zumodrive.com/forums/12/topics/475

unable to connect zumodrive via our proxy authentication needed

ZumoDrive(http://www.zumodrive.com/) のサービスを利用しはじめたが、職場でも利用しようとしたところ、職場の認証プロキシを通過してくれない。自動検出でもマニュアル設定でもダメだ。