Google MapsでinfoWindowの閉じるボタンをなくしてみる

Google Maps API v.3.22のinfoWindow、いわゆるふきだしの閉じるボタンを取ってみました

公式のリファレンスを見ても、設定がなさそう..
Google Maps JavaScript API V3 Reference  |  Google Maps JavaScript API  |  Google Developers

cssでボタンを消して、文字の位置を調整してみました
追加でCSSを

.gm-style-iw {
  margin-left: 10px;
}
.gm-style-iw + div {
  display: none;
}

これでこんな感じに

google-map-sample

ソース全部はこんな感じです

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1.0, user-scalable=1.0" />
    <title>google map</title>
    <style type="text/css">
      html { height: 100% }
      body { height: 100%; margin: 0; padding: 0 }
      #map_canvas { height: 100% }
      /* hide close button on infoWindow */
      .gm-style-iw {
        margin-left: 10px;
      }
      .gm-style-iw + div {
        display: none;
      }
    </style>
  </head>
  <body>
    <div id="map_canvas"></div>
    <script type="text/javascript">
      function initMap() {
        var point = {lat: -24.363, lng: 130.044};
        var map = new google.maps.Map(document.getElementById('map_canvas'), {
          center: point,
          scrollwheel: true,
          zoom: 8
        });
        marker = new google.maps.Marker({
          position: point,
          map: map,
          label: 'A'
        });
        info = new google.maps.InfoWindow({
          content: 'No.1'
        });
        info.open(map, marker);
      }
    </script>
    <script type="text/javascript"
      src="http://maps.googleapis.com/maps/api/js?key=AIzaSyCj58ghahiTjKQ25OlCI5TfFEsntAahMFM&callback=initMap">
    </script>
  </body>
</html>

参考:
GMaps V3 InfoWindow – disable the close “x” button-open source projects hpneo/gmaps

Jsonの値を変数に入ったキーでとってみる

Jsonの値を変数に入ったキーでとってみました

たとえば

var sample = {
  "one": {
    "id": "123",
    "value": "aaa"
  },
  "two": {
    "id": "456",
    "value": "bbb"
  }
}

といったjsonがあるとき

sample.one
// もしくは
sample["one"]

で値が取れます
変数にキーを保存しておいてアクセスしたいときは

var key = "one";
sample[key]
// sample.key はだめ

で取れます

Git hookでctagsを作成する

プログラムを書いてて、クラスやメソッドにジャンプするため、vim + ctagsでやってます
手動で

$ ctags -R

とかして、ctagsを生成してましたが、Git操作時にctagsを生成するようにしてみました

Gitのフックを使って、ctagsを生成してみました
tpope/vim-fugitiveを使っているので、
.git/tags
を勝手に参照してくれる環境です

Git hook用のtemplateファイルを用意します

ディレクトリを作って
$ mkdir -p ~/.git_template/hook

Gitに設定しておきます
$ git config –global init.templatedir ‘~/.git_template’

これで、git init 時に.git/.git_templateがコピーされます

hook用のスクリプトを用意

$ ~/.git_template/hook/ctags

#!/bin/sh
set -e
PATH="/usr/local/bin:$PATH"
dir="`git rev-parse --git-dir`"
git ls-files | ctags -R -f "$dir/tags"

後はhook用のファイルをそれぞれ用意

$ vim ~/.git_template/hook/post-checkout

#!/bin/sh
.git/hooks/ctags >/dev/null 2>&1 &

中身が同じものを、

  • ~/.git_template/hook/post-commit
  • ~/.git_template/hook/post-merge

も用意します
これで、commit時とかcheckout時とかにctagsファイルのスクリプトが呼び出され、ctagsコマンドが実行されます
つまりは、.git/tagsファイルが生成されます

できてるかどうかは
.git/tags
をエディタで開いてみると確認できます

参考
tbaggery – Effortless Ctags with Git
ctags – gitのhookでtags作成 – Qiita

Cakephp 2.7でFlash->errorが呼ばれたかテストを書く

Cakephp 2.7のコントローラーのテストで、Flashコンポーネントへエラーメッセージがセットされるか確認するとき

$this->controller->Flash->expects($this->once())
    ->method('error')->with($this->equalTo('error occured'));

とするとエラーになります

Expectation failed for method name is equal to <string:error> when invoked 1 time(s).
Method was expected to be called 1 times, actually called 0 times.

呼ばれてないとかって言われます
これは、FlashComponentを見ると分かりますが、errorメソッドはなく、__callを使って呼び出されているからでした

PHP: オーバーロード __call – Manual

errorメソッドは用意されてなく、用意されてないメソッドが呼ばれた時には、__callが呼ばれる仕組みを利用したものでした
いい案が思いつかなかったのですが、テストをクリアするために

$this->controller->Flash->expects($this->once())
    ->method('__call')->with($this->equalTo('error'));

としてクリアさせました
__callが呼ばれて、errorが引数に渡るので、これでグリーンになりました
メッセージがテスト出来てませんが、まずはこれでいいかと思います