カテゴリー別アーカイブ: tips

Mac の Chrome で、キーボードのフォーカスをページに戻したい

Mac の Chrome では、Cmd + l で、アドレスバーにフォーカスされるようになっていますが、逆の動作はしないようになっています。つまり、フォーカスをページに戻したくても、Cmd + l 押しても戻らない。
ページをクリックすればもちろん戻るけど、当然ながら、キーボードだけで完結させたいじゃないですか。
特に vimium とか入れてれば尚更。vimmer としては、Esc 押下すればページにフォーカスされるのが一番自然なんですが、それは API のコントロール外にあるらしく変更できないらしい。

で、みんなどうしているのか…とググッてみたところ出てきましたよ。やっぱり悩んでる人はいるらしい。

http://superuser.com/questions/324266/google-chrome-mac-set-keyboard-focus-from-address-bar-back-to-page

簡単に言うと、アドレスバーに「javascript:」って打ってエンター押すと、ページにフォーカス戻るよ。この機能を使って、検索エンジン追加して、「u」を入力してエンターしたら「javascript:」って打ったことにできるよということですね。

なんという hack。これぞ hack って感じですね。

やり方は以下。

1. chrome://settings 開く
2. 検索 の「検索エンジンの管理」開く
3. こんな感じのを追加
chromesearchengine

4. アドレスバーに u と打つとこんなふうに出てきてくれるので、すかさず enter

chromesearchengine2これで、完了です。u じゃなくて、なんでもいいと思いますが、とりあえず僕も前例に倣っておきました。

Google に bug report っていうか issue は出してるみたいだけど長らく放置されてるのかな(よく読んでない)

ChromeのCtrl-Tabの動きをOSのCmd-Tabみたいに直近開いたタブを選択できるようにする

Macでのお話です。Windowsユーザはすみません。

Google Chrome の Ctrl-Tabを押すと、開いているタブを順次選択していきますが、シーケンシャルな動きをするので効率が悪いなぁと思っていました。
OS の Cmd-Tab は最近開いていたウィンドウを行ったり来たりできるので、それを Chrome でも実現できないかなと思ったのがきっかけ。

で、結論からいうと Chrome 拡張の Recent Tabs と KeyRemap4MacBook で実現できます。
まだお持ちでない方は先に下記からインストール。

  • Recent Tabs
  • KeyRemap4MacBook
  • KeyRemap4MacBookのPreferencesから、Open private.xmlを開いて独自のカスタマイズ設定を記述します。
    Extension のデフォルトのショートカットキーは Ctrl-Qですがその設定をオーバーライドしてしまいたいので、以下のように設定します。

    KeyRemap4MacBook

    Reload XML を押すと今保存した設定が現れますのでそれにチェックを入れます。

    スクリーンショット 2013-12-15 16.55.28

    これで、望み通りの動きになりました。めでたしめでたし。

    ストレングスファインダーをやってみた

    同僚の先輩が、前職ではメンバー全員がストレングスファインダーというものをやって公開しあっていたという話を聞いた。
    ストレングスファインダーとは、ストレングス(強み)をファインドするってことですよ。
    公開しあうということで、お互いの価値観などが知れるため、とてもいい試みだなと感じた。

    というわけで、まず自分はどんなものなのかと知ることにしましたのでこの本を買ってみました。
    この本を新品で買うと、コードがついてきます。そのコードをWEBで入力していろいろな質問に答えていくと、自分の内なる価値観が判定できるという具合ですね。

    親密性

    親密性という資質は、あなたの人間関係に対する姿勢を説明します。 簡単に言えば、親密性という資質によって、あなたは既に知っている人々とより深い関係を結ぶ方向に引き寄せられます。あなたは必ずしも未知の人たちと出会うことを避けているわけではありません――事実、知らない人と友人になるスリルを楽しむような他の資質を、あなたは持っているかもしれないのです――しかし、あなたは親しい友人のそばにいてこそ、大きな喜びと力を得るのです。あなたは親密であることに心地よさを感じます。一旦最初の関係ができあがると、あなたは積極的にその関係をさらに深めようとします。あなたは彼らの感情、目標、不安、夢を深く理解したいと思っています。そして、彼らにもあなたを深く理解してもらいたいと願っています。あなたは、このような親密さがある程度の危険性を含んでいることを知っています――あなたは利用されるかもしれないのです――しかし、あなたはその危険性を解かった上で受け入れます。あなたにとって人間関係は、それが本物である時のみ価値を持ちます。そして、それが本物であるかどうかを知る唯一の方法は、相手に身を委ねることです。互いの気持ちを共有すればする程、お互いの危険性も大きくなります。お互いの危険性が大きくなればなる程、自分たちの意思が本物であることを、よりはっきりと証明できるのです。これらが真の友情を築き上げるための一つひとつのステップであり、あなたはそのステップを喜んで進んで行きます。

    運命思考

    偶然に起こることは一つもありません。あなたは絶対にそう思っています。それは、人々が互いに結びついていることを、心底から確信しているからです。確かに人々は自分の行動を自分で決めることができる、自由な意志を持っている個別の人間です。とはいっても、私たちは何かもっと大きな存在の一部なのです。それをある人は人生の神秘と呼ぶかもしれません。それを精神あるいは生命力と呼ぶ人もいるでしょう。しかし何と呼ぶかは問題ではありません。私たちは互いから隔絶されているわけではなく、地球や地球上の生命から切り離されてもいないと知っていることで、あなたは安心感を得るのです。この運命思考という考え方には一定の責任感が付随しています。もし人々すべてがもっと大きな存在の一部であるなら、人は他人を傷つけてはいけないのです――なぜなら、自らを傷つけることになるからです。人から搾取してはいけません――なぜなら、結局自分自身に返ってくることになるからです。このような責任に対する認識が、あなたの価値体系を作り上げています。あなたは思慮深く、思いやりがあり、受容力があります。人々は皆同じであると確信しているあなたは、異なる文化を持つ人々の間で架け橋の役割を果たします。見えない力を敏感に感じ取り、平凡な日常生活の中に意味があるという安心感を他の人に与えることができます。あなたの信念は、あなたの育ちや文化によって決まりますが、それは強固なものです。理屈では説明できないことに直面した時、それは、あなたやあなたの親しい友人を支えてくれます。

    ポジティブ

    あなたは人をよく誉め、すぐに微笑みかけ、どんな状況においても常にポジティブな面を探します。あなたのことを陽気と言う人もいます。あなたのように楽天的になりたいと思う人もいます。しかし、いずれにしても、人々はあなたの周りにいたいと思います。あなたの熱意は人に伝染するので、あなたの近くにいると彼らには世界がより良いもののように見えてくるのです。あなたの活力と楽天性がないと、人は、自分の毎日は同じ事の繰り返しばかりで単調であるとか、最悪の場合、プレッシャーを重く感じてしまいます。あなたは、彼らの気持ちを明るくする方法を必ず見つけます。あなたはどんなプロジェクトにも情熱を吹き込みます。あなたはどんな進歩も祝福します。あなたはどんなことでも、よりエキサイティングで、より生き生きとしたものにする方法をたくさん考え出します。一部の懐疑的な人たちは、あなたの活発さを否定するかもしれませんが、あなたはめったにそれに引きずられることはありません。あなたの積極性がそれを許さないのです。あなたは、生きていることは素晴らしいという信念、仕事は楽しいものにできるという信念、どのような障害があろうと人は決してユーモアの精神を失ってはならないという信念から、どうしても逃れられないのです

    分析思考

    分析思考という資質を持つあなたは、他の人に「証明しなさい。あなたの主張がなぜ正しいのか示しなさい」と強く要求します。このような詰問を受けると、自分の素晴らしい理論がもろくも崩れ落ちるのを感じる人もいます。これがまさしく、あなたの意図するところです。あなたは必ずしも他人のアイデアを壊したいわけではないのですが、彼らの理論が堅固であることを強く求めます。あなたは自分自身を、客観的で公平であると考えています。あなたはデータを好みます。データは人々の考えに左右されず、ありのままだからです。あなたはデータを見ると、パターンと関連性を捜し出します。一定のパターンが互いにどのように影響するのか、どのように結びつくのか、結果はどのようなものかを理解しようとします。そしてその結果が、提示されている理論や目の前の状況にふさわしいかどうかを知ろうとします。これがあなたのやり方です。あなたはこれらの点を一つずつ明らかにして、根本的な理由を探し当てます。人はあなたのことを論理的で厳格であると見ます。その人達は、いつかあなたのところにやって来て、誰か他の人の「非現実的な考え」あるいは「整理されていない考え」を話し、あなたの研ぎ澄まされた思考から見た考えを聞くでしょう。あなたの分析結果を伝える時、できれば決して厳し過ぎないようにしましょう。さもないと、その「非現実的な考え」が彼ら自身の考えである場合、その人はあなたをわざと避けるようになります。

    活発性

    「いつ始めようか?」これはあなたの人生で繰り返される質問です。あなたは動き出したくてうずうずしています。分析が有用であるとか、ディベートや討論が貴重な洞察を生み出す場合があることをあなたは認めるかもしれませんが、心の奥深くでは、行動だけが有意義であると知っています。行動だけが何かを起こすことができるのです。行動だけが功績につながります。決断が下されると、あなたは行動を起こさずにはいられません。他の人は「まだ知らないことがあるのに」と戸惑うかも知れませんが、あなたのペースを遅くすることはなさそうです。そのうえあなたの考え方では、行動と思考は互いに相容れないものではありません。事実、活発性という資質によって、あなたは、行動は最良の学習手段であると考えています。あなたは決断し、行動し、結果を見て、そして学びます。この学習方法によって、あなたは次の行動、そしてさらに次の行動へと導かれるのです。もし行動しなかったら、どうやって成長できるでしょう? あなたは、行動がなければ成長できないと考えています。あなたは、危険を冒してでも行動し続けなければなりません。次の行動を起こさなければなりません。思考を常に活き活きと豊かにしておく方法が、他にあるでしょうか? 発言したことや考えたことによってではなく、実行したことによって判断されるということを、あなたは知っています。これが重要なのです。あなたはこれを恐れることはありません。あなたにとって、これが喜びなのです。

    分析思考かつ活発性だと、知らない間に活発性を殺してしまっているのではないか?
    現にそう思うところがある時期もあった。変に足踏みしているような期間。
    そういうときは、もう行動しちゃえってことのほうが強いんだな。

    あとは、ポジティブ。まぁなんとかなるでしょ。
    今の日本でどんだけ無茶しようが、死にはしないよ。(新歓のときの一気飲みは死ぬのでやめましょう)

    周りにいいことがあったらどんなちょっとしたことでも褒めちゃう。
    やったねって思う。天気が良くても褒めちゃう。

    ということで、大体あたってる。
    これをいかに利用していくかってところがポイントだね。

    スマホ/PCからのアクセスを厳密に判定する方法

    User-Agentを利用して、スマートフォンからのアクセスなのか、PCからのアクセスなのかを判定することは既に記事が数多く出ていますね。

    しかし、User-AgentはPCからのブラウザで簡単に偽装が可能です。
    ガラケーの場合は、User-Agentが偽装されていたとしても、IPアドレスやUIDなど契約者固有IDによって、実際の携帯電話からのアクセスなのか判定できていました。

    スマートフォンの場合は、Wifi経由でアクセスされることもある上に、契約者固有IDが取得できないため(というか、スマートフォンはほぼPCなので基本的には何でもあり)、User-Agentが偽装されてしまうと判定ができなくなってしまうわけです。

    3G回線のみでアクセスされることを前提にするならば、厳密に検出することはスマートフォンでも可能です。

    NTTドコモ – IPアドレス帯域(spモード)
    KDDI – IPアドレス帯域
    Softbank – IPアドレス帯域

    しかし、この方法は現実的ではありません。

    IPアドレスは使えない、User-Agentも偽装されてしまう。
    こうなると、検出方法がないのでは?と思い、はてなで質問もしてみました。

    スマートフォン用のサイトを制作しています。PCブラウザでスマートフォンのUserAgentに偽装されても、アクセスを受け付けないようにする方法ってあるのでしょうか。
    http://q.hatena.ne.jp/1330229019

    バッチリな回答はもらえなかったものの、ヒントは得ることができました。
    クライアントサイドスクリプトのコマンド有無による判定が使えるかも?とのことです。

    モバイル用のブラウザには、touch判定用のJavascriptのイベントハンドラが実装されています。
    かたやPC用のブラウザにはそのようなイベントハンドラはありません。画面に直接触って操作するのではないから、当たり前ですね。

    これを判定するためには、HTML5/CSS3の仕様をブラウザごとに判別してくれるライブラリ、Modernizrで出来そうです。
    HTML5のサイトを作っていると、どのCSSプロパティが、どのブラウザのどのバージョンに対応しているか、このタグはこのブラウザには非対応…など悩まされるかと思います。
    ModernizrはHTMLタグに、どの機能が有効なのかをクラスとして書きだしてくれます。

    そのような機能を提供しているぐらいなので、このライブラリにはスマートフォンを検出するメソッドも用意されています。
    Modernizrを読み込んだ上で、以下のように記述すると判定できるようです。

    if (Modernizr.touch){
    // bind to touchstart, touchmove, etc and watch event.streamId
    } else {
    // bind to normal click, mousemove, etc
    }

    詳細は以下のドキュメントをご覧下さい。

    Modenizr Documantation

    また以下のページでは、どのイベントハンドラがどのブラウザで有効/無効になるのかが一覧になっていてとても便利ですね。

    Modernizr Touch tests

    ライブラリを使わず、もっとシンプルに実装したければ以下のように書いておけば、ある程度は判定できると思います。
    もう少し厳密にしたければ、window.orientationの角度検出イベントの有無やnavigator.platformなどのチェックを複合的に行えばよいかと。

    ちなみに、chromeにはこのようなイベントハンドラ自体を付加するextensionが存在します。
    (そこまで有効ではなさそうですが。)

    Touch用のイベントハンドラを実装したブラウザ自体を作られてしまう可能性を考えると、ガラケーのように100%の判定は不可能ですが、たいていはこれで判定できるのではないでしょうか。

    lsコマンドの出力結果にfiletypeごとに色を設定する

    lsしたときに、デフォルトだと全部同じ色で、どれがファイルでどれがディレクトリなのかさっぱり分からずストレスが溜まりますね。
    で、これじゃあさすがにということで、今まではls=’ls –color=auto’とaliasに設定していました。

    しかし、黒背景に青字とか超絶見にくい。
    輝度上げまくってなんとか耐えてた自分にドロップキックして、色設定を変更してみた。

    lsコマンドのカラー出力で256色拡張の色を使用する
    http://d.hatena.ne.jp/kakurasan/20080707/p1

    上記の通りに設定してみましたが、かなり細かくFiletypeごとに色分けがされていて便利です。なにより背景が黒ベースな方には見やすくなるかと。
    必要になったら自分でカスタマイズできますね。

    これにあたって、iterm2では、たぶん”xterm-256color”って設定する必要があるはず。
    iTermのPreference->Profiles->(自分の設定したいaccount)->Terminal->Terminal Emulation->Report Terminal Type

    * before
    before
    * after
    after

    初対面の人と困らないような話題一覧

    人見知りで初対面の人と会話のときに何を話したらいいか迷ってしまう時があります。
    この際リスト化してしまおうと思い立ちました。カンペとしてお使いください。

    「キドニタチカケセシ衣食住」を覚えておけば、とりあえずは困らなそうです。

    ちなみに初対面でタブーな話は「政治・宗教・野球」だそうです。
    まあその辺は個人のモラルで。

    季節、気候の話題
    「寒くなってきましたね」「そろそろ年越しの準備をしないといけませんね」
    「雨がつづいていやですねぇ」→「洗濯物が乾かなくって」

    道楽
    「ご趣味などはお持ちですか?」→「僕は釣りキチなもので、この週末も渓流釣りに行くんですよ」

    ニュース
    「なんだか株価が下がってるなんていいますね」
    「どこかの動物園でレッサーパンダが人気みたいですね、テレビで立ち姿を見たらかわいくて釘付けになっちゃいました」


    「旅行なんてされますか?」→「そうですか韓国に日帰りで。いまはやっぱりずいぶん旅費も安くあがるものですか?」や「そうですよね、やっぱりこの季節はなにかと忙しいもので」や「私は出不精なもので、どうもね、タイなんかが料理も観光地も素敵なんて聞くと行きたくなっちゃうんでけど、代々木公園のタイフェスで満足しちゃって」など

    知人(共通の)
    「そういえばうちのお隣の高川さん、在宅勤務らしいんですよ」
    「え、サッカー部の木村知ってるの?あいつ前に発表で同じ班になったんだけどさー」

    家庭、家族(立ち入った話にならないように)
    「お宅の息子さんすごく印象がいいんですよ、毎朝挨拶してくれて」

    健康
    「DHCっていうセブンイレブンで売ってる保湿液がすごくよくて」
    「なんか今朝気が向いたからラジオ体操してみたら肩こりがとれたよ」

    セックス(下ネタ。軽いもので)
    「ダルビッシュとかスゲーよなぁ、さすがの命中率ですよ大したもんだ。」

    仕事
    「Googleのwebアプリケーションって機密情報書いていいんですかね?便利なのに使うのが怖くてねぇ」
    「しかしウチの社長は怖いね、まさか元部下の会社にM&Aかけるとはね」

    衣(ファッション)
    「あら、このイヤリング素敵ね。どこで買ったの?」
    「友達がいまさらベッカムヘアにしたんだけどさー、あれやっぱ一世風靡しただけあってそれなりにかっこよくなるよな」

    食(グルメ、酒)
    「さんまを焼いたらおいしかったんですよ、スーパーで特売してたから」
    「やっぱりこう熱いと仕事帰りのビールが最高ですよ、夏はいいですね」

    住(家)
    「花粉症なもんで部屋の換気ができないんだよね、湿気て嫌になっちゃう」
    「間接照明っていうのを買ってみたら、夜部屋を暗めにして黒ビールを飲んだりするのが楽しくなったんですよ」

    以下は、プラスアルファで。

    ・出身地
    ・好きな食べ物
    ・嫌いな食べ物(食べ物屋で気を利かせられるのできく。)
    ・自分の行った最も遠いところ
    ・面白いトラブルに遭遇した話
    ・芸人で好きな人の話
    ・最近読んだ本
    ・ペットの話
    ・休みの日の使い方
    ・学生時代の話
    ・将来の夢(もし○○だったら、といった話)
    ・よく見るテレビ番組やよく聴くラジオ番組
    ・最近起きた(世の中や身近な)出来事の話
    ・誕生日の話(誕生日にまつわる話など)
    ・その他好きな○○(食べ物や芸能人など)の話

    この記事を書いた直後にこんなものを見つけました。
    相槌を打つことも大事ですね。

    @nifty:デイリーポータルZ:会話がどんどん続く君

    【出典】人力検索はてな > 人生相談 > 初対面の人ともできる話題を10個あげてください。
    http://q.hatena.ne.jp/1194388314

    Mac OS Xで公開鍵認証を使って、SSH接続する

    Windowsでいうところの「puttyでの公開鍵認証」をMacのTerminal.appでどうやるのか?

    という、非常に基本的なところが地味に分からなかったので調べてみました。

    今まではWindowsのputtyで公開鍵認証してたけど、
    Macに乗り換えたばかりでやり方がよく分からない人向けです。

    まず、Mac OS Xで公開鍵認証をするには、
    Windowsで使っていた*.ppkファイルをOpenSSH形式に変換する必要があるようです。

    変換の仕方はとても簡単です。

    まず、putty付属のputtygen.exeを起動し、ppkをロードします。

    次に、Conversionsメニュー→Export OpenSSH Keyでエクスポートします。
    ファイル名は「id_rsa」としておきましょう。

    エクスポートした「id_rsa」をMacの方へ持ってきます。
    Windowsはもう閉じて結構です。

    「id_rsa」を
    /Users/(UserName)/.ssh
    に配置します。
    しかし、.(ドット)から始まるディレクトリはGUIの方から作れないようですので、ターミナルからディレクトリを作成します。

    ターミナルを起動して

    で、先程の「id_rsa」を/Users/(UserName)/.sshへ移動します。

    こちらも、ターミナルを使います。
    下記は、デスクトップにid_rsaがある場合のmvコマンドです。

    最後に、パーミッションを600に変更します。

    これで、準備完了です。

    同じくターミナルから

    これで、同じように接続できるはずです。

    【参考】
    MacでWindowsのputtyの代わりを行う
    http://d.hatena.ne.jp/moyashiki/20100128/1264666129

    [Misc] Putty の鍵 (*.ppk) を OpenSSH 形式に変換する方法をメモ
    http://www.in-vitro.jp/blog/index.cgi/Misc/20080910_01.html

    Google Chromeから検索するときにKeyboard Shortcutsをデフォルトでオンにする

    だいぶ昔からGoogle LabsにあるKeyboard Shortcutsは、
    検索結果をj,kキーで選択し、Returnでそのページにジャンプができるという非常に便利な機能です。

    これのおかげで、

    「検索→検索結果から閲覧したいページを選ぶ→当該ページへジャンプ」

    という3つのステップを、すべてキーボードだけで完結でき、ストレスフリーで心にやさしいです。

    http://www.google.com/experimental/

    このページから、その機能をON/OFFの切り替えができるのですが、Google Chromeの検索バーから検索すると機能がなぜか反映されません。

    しかし、通常の検索パラメータに


    esrch=BetaShortcuts

    これを加えると、機能が有効になるっぽいです。


    http://www.google.com/search?sourceid=chrome&esrch=BetaShortcuts&ie=UTF-8&q=%E3%81%82

    こんなふうに。

    なので、Google Chromeの検索バーもあらかじめこのパラメータ付きで検索しちゃおうということです。

    GoogleChromeはアドレスバーを右クリックして「検索エンジンの編集」をクリック。

    こんなウィンドウが出てくるので新しく検索エンジンを追加しましょう。
    (これはもう追加済み)

    こんな感じで!
    名前、キーワードはなんでもいいです。
    URLはこんな感じで指定しましょう。


    http://google.com/search?{google:RLZ}{google:acceptedSuggestion}{google:originalQueryForSuggestion}sourceid=chrome&esrch=BetaShortcuts&ie={inputEncoding}&q=%s

    追加後、既定にするのを忘れずに。

    こうなれば成功ですよ。

    FYI:
    Google Chromeのキーボードショートカット一覧
    http://www.google.com/support/chrome/bin/static.py?page=guide.cs&guide=25799&topic=28651