2013年12月25日水曜日

スマホのWebブラウザから位置情報を取得する

最近のiOS、Android端末は Geolocation API に対応しているので、Webブラウザ経由で位置情報が取得できる。
ただし、ブラウザ側で許可されてないとダメだけど・・・
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <script>
      function getPosition() {
        navigator.geolocation.getCurrentPosition(
          function(position) { // 取得成功
            document.getElementById("lat").value = position.coords.latitude;
            document.getElementById("lng").value = position.coords.longitude;
          },  
          function(error) { // 取得失敗
            switch(error.code) {
              case 1:
                alert("位置情報の利用が許可されていません。");
                break;
              case 2:
                alert("デバイスの位置が判定できません。");
                break;
              case 3:
                alert("タイムアウトしました。");
                break;
            }
          },
          {
            enableHighAccuracy: true
          }
        );
      }
    </script>
  </head>
  <body>
    <input type="text" name="lat" id="lat" value="" />
    <input type="text" name="lng" id="lng" value="" />
    <input type="button" value="取得" onClick="javascript:getPosition();" />
  </body>
</html>

2013年12月20日金曜日

Google Chrome でフォントサイズを10pxより小さくする

Google Chrome にはフォントを自動で調整する機能が付いているらしく、"font-size:8px;"とか指定しても10pxより小さくはならない。
で、以前は以下のような記述で回避していた。
<p style="
  font-size: 8px;
  -webkit-text-size-adjust: 100%;
">小さい文字</p>
が、意図しない使われ方ばっかりされていたせいで廃止になってしまったんだと。
なので今は以下のような対応をしてみている。
<p style="
  font-size: 8px;
  -webkit-transform: scale(0.8);
  display: inline-block;
  -webkit-margin-start: -10px;
">小さい文字</p>

2013年12月16日月曜日

シェルで文字列比較

シェルで文字列比較をしたかったので。
#!/bin/sh

ARRAY=(aaa bbb ccc abc)

for ITEM in ${ARRAY[@]}; do
  case $ITEM in
    *c)
      # ccc, abc
      echo "cで終わる。"
      ;;
    a*)
      # aaa
      echo "aで始まる。"
      ;;
    *)
      # bbb
      :
      ;;
  esac
done
あと、 if とか case の中で何もしたくない時は「:」を使う。

再帰的にファイル数、ディレクトリ数を取得する

CentOSは1つのディレクトリに最大32000個までしかディレクトリを作れない。
でも作るシステムによってはテンポラリのディレクトリとかが溜まって危ないかもしれないのでチェックスクリプトを作ってみた。

#!/bin.sh

DIR=/home/hoge/

Seek(){
  for ELEM in * ; do
    if [ -d "$ELEM" ] ; then
      # ファイルだけなら -type f
      # ディレクトリだけなら -type d
      CNT=`find "$ELEM" -maxdepth 1 -type d | wc -l`
      if [ $CNT -ge 5000 ] ; then
        # 5000個を超えているものだけ出力
        PWD=`pwd`
        echo "$PWD/$ELEM : $CNT"
      else
        # 5000個を超えていないディレクトリだけさらに再帰的に処理
        (cd "$ELEM";Seek;)
      fi
    fi
  done
}

2013年12月2日月曜日

Windows のコマンドプロンプトで grep を使う

Windows のコマンドプロンプトで grep を使いたかったけど無かった。
どうやら findstr を使うらしい。
netstat -an | findstr 5432