Googleマップローカルガイドからお祝いのメールがきた

突然こんなメールがきた。

f:id:banbara:20160426124935j:plain

Googleマップに俺の投稿した写真がこれだけ見られました! という内容のメールだった。

15万という数字は、おそらくローカルガイドを始めてからのトータル件数だろう。

せっせと写真を投稿したかいがあったようだ。 次は何万件でメールがくるんだろう?

ちなみに、今のローカルガイドの点数は350だった。

f:id:banbara:20160426130224j:plain

レベル5になるには500点とればいいのかな? まだ先は長いなー

500点まで頑張ろう

lsコマンドでディレクトリのみを一覧で表示

こんな状態から

Directory1
Directory2
Directory3
Directory4
Directory5
sample1.apk
sample2.apk
sample3.apk

ディレクトリのみ一覧で表示したい場合

ターミナルに以下をぶちこむ

ls -1F | grep /

表示結果

Directory1/
Directory2/
Directory3/
Directory4/
Directory5/

lsオプション説明

-1
1行に1ファイルずつ表示する

-F
ファイル名にファイル・タイプを表す記号を付けて表示する。ディレクトリは"/",実行可能ファイルは"*",シンボリック・リンクは"@",FIFOは"|",ソケットは"="で表わす

最後のスラッシュが邪魔だけど...
もっと良い方法ないですかね


参考リンク
Linuxコマンド集 - 【 ls 】 ファイルやディレクトリの情報を表示する:ITpro

Xmllintで属性を指定してXmlから値を取得

またまたシェルスクリプトとxmllintを使う機会があった。

今度はxmlに同名タグが複数存在しており、属性で絞って値を取るというパターンだった。

やりたいこと

以下のxmlがあったとする。

<!-- sample.xml -->
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <long name="aaa" value="12345" >いぬ</long>
    <long name="bbb" value="56789" >ねこ</long>
</map>

longタグ内にあるname="aaa"のvalueの値「12345」を取得したい。

前回と同じくxmllintを使って取得する。

準備&おさらい

準備&おさらいとして、単にvalueのみを指定してxmllintで取る。

echo 'cat map/long/@value' | xmllint --shell sample.xml

結果はこうなる

/ > cat map/long/@value
 -------
 value="12345"
 -------
 value="56789"

name="aaa"もname="bbb"の両方のvalueがヒットしてしまう。
これを条件を与えて絞るようにする。

xmllintに条件を加える

name=aaaのみを得るには、long[@name="aaa"]とする。

echo 'cat map/long[@name="aaa"]/@value' | xmllint --shell sample.xml

とすると、結果はこうなる。

/ > cat map/long[@name="aaa"]/@value
 -------
 value="12345"

無事にname=aaaのみのvalueが取れた。

できた

あとは変数だけを取得するなら、自分はこうしてみた

value=`echo 'cat map/long[@name="aaa"]/@value' | xmllint --shell sample.xml |grep value= | sed 's/[^"]*"\([^"]*\)"[^"]*/\1/g'`
echo $value

結果はこうなる。

1234

これで目標達成となった。

<br

おまけ

「いぬ」の値を取る場合はこうした。

value=`echo 'cat map/long[@name="aaa"]' | xmllint --shell sample.xml | grep value= | sed 's/^.*<long.*>\(.*\)<\/long>.*$/\1/'`;
echo $value

結果はこうなる。

いぬ


参考リンク
- Test XML command line with xmllint | - Softwaretester -

Qiitaに初投稿してきた

ブログに書くほどの事じゃないんだろうけど(笑)

いつも閲覧ばかりしているQiitaに、初投稿してきた。

qiita.com

投稿の中身は、昨日このブログで書いた記事と同じ(笑)

Qiitaでは技術ネタの収集にお世話になってるもんで、たまには俺も投稿しようかなーと。


投稿した後に、別にxmllint使わなくてもgrepだけでも取得できる事に気付き、
そんなツッコミが絶対来るだろうなぁ、とビクビクしている今日この頃です。

ShellScriptとxmllintでxmlを解析

ShellScriptド素人がxmlの中身を取り出したかったので、色々調べた

xmllintとは

xmllintとはlibxml2を使用したツールで、XMLファイルに対して以下の機能を持ったのコマンドラインツールです。

このxmllintを使って、以下のxmlを解析して値&属性値を取り出す

sample.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<top>
    <int name="hoge" value="327">100</int>
</top>


327を取り出す場合、以下のようにする

echo 'cat /top/int/@value' | xmllint --shell sample.xml | grep value= | sed 's/[^"]*"\([^"]*\)"[^"]*/\1/g'


100を取り出す場合、以下のようにする

echo 'cat /top/int' | xmllint --shell sample.xml | grep value= | sed 's/^.*<int.*>\(.*\)<\/int>.*$/\1/' 



参考にしたサイト
* ShellScriptでXMLの内容を取り出す | Opentone Labs.
* sedで「ダブルクォーテーションに囲まれた文字列」を抽出する方… - 人力検索はてな

adbでスクリーンショットをファイル名+年月日付きで出力する

.bashrcに以下を追加する

export ANDROID_SDK=AndrodSDKのパス

alias sshot=$ANDROID_SDK"/tools/screenshot2 ~/screenshot.png; mv ~/screenshot.png ~/screenshot_`date '+%y%m%d%H%M%S'`.png";

# screenshot_160322141020.pngと出力される

保存するパスは自分で好きなように設定するべし

dose not contain the JNI_CreateJavaVM symbol

ついにMacBookProをEl Capitanにアプデした後、Aptana Studioを起動してみると

"/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/../jre/lib/server/libjvm.dylib"
does not contain the JNI_CreateJavaVM symbol.

というエラーダイアログが出て起動しなかった。

OMG!とビビりつつググる

stackoverflow.com

下のリンクからJava for OS X 2015-001をインストールしなさい、とのこと

ダウンロード - Java for OS X 2015-001

あれー、これ前に入れたことあったような...

と思いつつインストールすると、あっさりとAptana Studioが起動

めでたしめでたし