職場でネットアクセス禁止になりかけた話と、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秒に設定されていたのだった。
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>[]
例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限定ということもあり、需要は低いでしょうなぁ。
使い方
スクリプト
(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) )))
愚痴
Mac版Evernoteが同期できなくなったときの一対処法
とくに特別な操作をしたわけでもないのに、わがEvernote環境にて突然
Synchronization failed because of an error communicating with the Evernote servers.
...なるエラーが発生してサーバと同期ができないという現象が起こった。サーバ側の一時的な不具合かと思って数日放置していてもこのエラーは発生し続けている。
そういえばWebクライアントやWindows環境のクライアントが正常に機能していることを考えると、MacローカルのEvernoteに不具合が発生したと判断することができる。
Evernoteのフォーラムをさがしてみると、この現象にちかい投稿を見つけた。
記事によると、特定のノート(記事)が壊れていることが同期を失敗する原因となっているらしく、この壊れたノートを特定して(ゴミ箱からも)削除すればまた同期できるようになるとのこと。
対処法
- Console.app を起動する。
- Console窓を眺めて、壊れたノートを特定する。
- 自分の場合は「不動産物件検討」というノートだ。(あとで画像を貼る)
- 特定されたノートを削除する。
- ゴミ箱からも削除することを忘れずに。
これで晴れて同期が再開しました。
でもこのノートを削除したくないというケースもある。今回のワタシの場合、上記のノート削除のときに以下の作業を行なうことでノート喪失を防ぐことができました。
ノートを失わない対処法
(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) )
unable to connect zumodrive via our proxy authentication needed
ZumoDrive(http://www.zumodrive.com/) のサービスを利用しはじめたが、職場でも利用しようとしたところ、職場の認証プロキシを通過してくれない。自動検出でもマニュアル設定でもダメだ。