min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

Python 3 で csv を扱う(pandas不使用、import csvしない)

Amazon MasterCard を契約した。

min117.hatenablog.com

利用明細は Vpass というオンラインサービスで確認できる。

f:id:min117:20171126095302p:plain

csvにも出力可能。

f:id:min117:20171126095631p:plain

出力するとこうなる。

$ vim 201712-2_nkf_wLux.csv

f:id:min117:20171126095611p:plain

何にどれくらい使ったか csvをPython3 に分析させることにする。例えばこんな感じ。

$ python3 csvstrip.py 201712-2_nkf_wLux.csv

f:id:min117:20171126100244p:plain

明細に「ソフトバンク」や「インターネットイニシアティブ」という文字列が含まれていたら「通信料」として合計する、とかやりたい。

 

できた。環境は macOS High Sierra

f:id:min117:20171126095501p:plain

パイソンは Python3

f:id:min117:20171126095455p:plain

(前提)

Python 3 を使うPython 2.7は考慮しない。

・pandas とやらは使用しない。Python標準搭載の機能のみ使う。

・import csv もしない。同上。

(コード)

$ vim csvstrip.py

f:id:min117:20171126100836p:plain

1行目)

・コード内でのpythonバージョンの指定(シェバン)はしない。実行時に指定する。

23行目)

print(i) は改行まで含めてしまうからこんな感じで改行まで出力されてしまう。

f:id:min117:20171126101415p:plain

26行目、27行目)

print(i[:-1]) または print(i,end='') とすれば改行を取り除いてくれる。

f:id:min117:20171126101806p:plain

59行目から66行目)

正規表現を使って明細行に「ソフトバンク」という文字列が含まれていたら「通信の明細です」と文字列を出力できるようにしている。

match = re.search('.*ソフトバンク.*, i):

if match:

f:id:min117:20171126102426p:plain

ここで通信料を足してprintすれば、通信料の合計だけを取れる。あとでさらに試す。

vbsで検索を自動化して楽天ポイントを獲得する

楽天カードを契約した。

min117.hatenablog.com

契約ポイント狙いだったので日常生活で使うつもりは無いけど、楽天ポイントは思ったより使い勝手が良いようだ。広告が多くて好きにはなれないけど。

news.cardmics.com

個人情報は極力渡さずポイントは貯めることを考えてみる。

 

最も無難そうなのは「楽天ツールバー」。WindowsIEにインストールして検索するだけでポイントが貯まるようだ。1日30回の検索(30口)で5ポイント。1ヶ月で150ポイント(2017/11/25時点)。

f:id:min117:20171125091640p:plain

貧しい。なんて貧しい。1日に30回もポチしても、たったの5ポイントしか貯まらない。こんなことに時間を費やすのは人生の無駄。だからパソコンに自動でやらせてしまえばよい

<流れ>

あらかじめ検索単語を用意しておく。今回は映画名を並べたファイルを用意した。

f:id:min117:20171125092330p:plain

バッチファイル「raku.bat」を起動する(raku.vbsが呼ばれる)と

f:id:min117:20171125092133p:plain

検索欄にフォーカスされ

f:id:min117:20171125092459p:plain

文字が勝手に入り

f:id:min117:20171125092509p:plain

カウントされる。

f:id:min117:20171125092811p:plain

<準備>

ツールバーをインストールした Windows を用意する。広告が多くて最低のツールバーなので日常使いのパソコンには絶対にインストールしない。普段は全く使わない仮想環境(VMware)にあるWindowsにインストールする。

<コード>

vbsを用意する。参考にしたのはこのへん。

vbacomand.jugem.jpやってることがシンプルなのが良い。ログイン自動化とかは実装しないほうが軽くて使い回しが良いから。

f:id:min117:20171125093004p:plain

真似して作ったのがこれ。

cmd > notepad raku.vbs

f:id:min117:20171125093653p:plain

f:id:min117:20171125093849p:plain

赤枠部分は元サイトのソースから変更。

'WshShell.Sendkeys("%{F4}")

↑ これだとAlt+F4(IE自体の強制終了)コマンドを送っているのでIE自体が閉じてしまい、再度ログインしないとポイントがつかなくなってしまう。なので頭にアポストロフィをつけてコメントアウトしておく。

WshShell.Sendkeys("^w")

↑ これならCtrl+w(IEのタブだけを閉じる)を送っているので、IEは終了せずログイン状態を保ったまま検索が続行される。

 

このvbsを連続実行する状態にする(負荷対策に10秒のインターバルを入れる)。そのためのバッチがこれ。

cmd > notepad raku.bat

f:id:min117:20171125094757p:plain

※ 検索単語(映画名)のリストはmecabbash(for文)を組み合わせれば瞬時に作成できる(別記事にて詳述)。

ソーステキストも保存しておく。

raku.vbs

Set WshShell=Wscript.CreateObject("Wscript.Shell")

exeSearch "The Railway Man" 

exeSearch "Ben X" 

exeSearch "Dirty Wars" 

exeSearch "Elysium" 

exeSearch "Requiem for a Dream" 

exeSearch "Lee Daniels' The Butler" 

exeSearch "Lars and the Real Girl" 

exeSearch "Moneyball" 

exeSearch "A Late Quartet" 

exeSearch "Zero Dark Thirty" 

exeSearch "The Words" 

exeSearch "The Whistleblower" 

exeSearch "The Best Exotic Marigold Hotel

exeSearch "Flight" 

exeSearch "Prisoners" 

exeSearch "Gravity" 

exeSearch "The East" 

exeSearch "Disconnect" 

exeSearch "Now You See Me" 

exeSearch "The Hunt" 

exeSearch "We Need to Talk About Kevin" 

exeSearch "Fight Club" 

exeSearch "Captain Phillips" 

exeSearch "Lone Survivor" 

exeSearch "12 Years a Slave

exeSearch "Instructions Not Included" 

exeSearch "Philomena" 

exeSearch "Het vonnis" 

exeSearch "Interstellar" 

exeSearch "Gone Girl" 

exeSearch "A Most Wanted Man" 

exeSearch "Camp X-Ray

exeSearch "The Fault in Our Stars" 

exeSearch "Divergent" 

exeSearch "The Grand Budapest Hotel

exeSearch "Woman in Gold" 

exeSearch "Still Alice" 

exeSearch "If I Stay" 

exeSearch "Kingsman: The Secret Service" 

exeSearch "Axela"

exeSearch "LINE"

exeSearch "Apple"

exeSearch "She wear" 

exeSearch "dropped stars" 

exeSearch "her style" 

exeSearch "new commer" 

exeSearch "iPhone SE2" 

exeSearch "into the storm" 

exeSearch "LAST DAY FOR THIS DEAL" 

exeSearch "storm center" 

exeSearch "drain" 

exeSearch "Could you give it to me" 

exeSearch "the BRAIN" 

exeSearch "firefighters" 

exeSearch "rescue" 

exeSearch "the one" 

exeSearch "owner speed" 

exeSearch "Firefighters" 

exeSearch "from to vbs" 

exeSearch "the god" 

exeSearch "District" 

exeSearch "Engine speed" 

exeSearch "Company money" 

exeSearch "attempt not to" 

exeSearch "to seater" 

exeSearch "retrieve" 

exeSearch "Zoe" 

exeSearch "Cadore" 

exeSearch "sshop"

exeSearch "cellphone" 

exeSearch "20500001" 

exeSearch "a kanji" 

exeSearch "sushi" 

exeSearch "google home" 

exeSearch "on my way" 

exeSearch "Tuesday" 

exeSearch "John" 

exeSearch "Kelly" 

exeSearch "my me us" 

exeSearch "way road" 

exeSearch "into dai" 

 

exeSearch "Samantha"

exeSearch "GMO"

 

Sub exeSearch(keyword)

 WshShell.Run("http://websearch.rakuten.co.jp/")

 

 WScript.Sleep(10000)

 WshShell.SendKeys(keyword)

 

 WScript.Sleep(1000)

 WshShell.SendKeys("{ENTER}")

 

 WScript.Sleep(20000)

'WshShell.SendKeys("%{F4}")

 WshShell.SendKeys("^w")

 

 WScript.Sleep(20030)

 

End sub

 

 

raku.bat

for /L %%i in (0,1,1000000) do (

    cls 

    @echo %%i

    raku.vbs

    timeout /T 10

)

 

REM taskkill /F /IM "iexplore.exe"

 

Google Map アプリのローカルガイド機能がアップデートされたので試す

 

Google Map には「ローカルガイド」という機能があって、写真を投稿したり場所の口コミを投稿するとポイントがもらえる。

f:id:min117:20171121233706p:plain

アプリのメニューから「自分の投稿」を見ると現在のレベルが確認できる。

いつのまにかローカルガイドの「レベル7」に認定されていた。獲得ポイントが5,000ポイントを超えている。

f:id:min117:20171121233604p:plain f:id:min117:20171121233651p:plain

海外に行った時に投稿しまくったからか。アメリカでは空港やら大学やらで投稿したし。

min117.hatenablog.com

min117.hatenablog.com

コンピュータ関連でも行く先々でUPした。

min117.hatenablog.com

シンガポールやマレーシアではSIM(通信)とGoogleMapが命綱だった。写真UPもSIMのおかげ。

min117.hatenablog.com

min117.hatenablog.com

今回のアップデートにより、ローカルガイドの機能が4つに絞られたようだ。「ローカルガイド レベル7」の下に、4つの丸いアイコンが見えるのがそれ。

f:id:min117:20171121233644p:plain

一番左の星のようなマークが、現在のレベルを表すようだ。レベルによって星のグレードが上がる。

f:id:min117:20171121233651p:plain f:id:min117:20171121233623p:plain

写真は「エキスパート」らしい。影響力(写真の表示回数)が100万回を超えているからか。投稿数をもう少し頑張って1,000オーバーを目指したい。

f:id:min117:20171121233700p:plain f:id:min117:20171121233536p:plain

「口コミ」はビギナー評価。文字数が少なくてお役立ち度がまだまだ。

f:id:min117:20171121233541p:plain

「開拓」もまだビギナー評価。新しい場所を追加して、それがGoogleに(地図上のポイントとして)認められるとレベルが上がるようだ。

f:id:min117:20171121233629p:plain

ポイント、レベル、バッジについてはアプリからヘルプへのリンクがある。

f:id:min117:20171121233558p:plain f:id:min117:20171121233611p:plain

レベルは最大で 10 まであるようだ。 100,000ポイントとか。フリーザかと。

f:id:min117:20171121233623p:plain f:id:min117:20171121233634p:plain

f:id:min117:20171121233639p:plain

移動の先々で写真をUPするだけなので、旅先での楽しみに良い。

f:id:min117:20171122001240p:plain

 

iMac 5K のAndroidエミュレータに楽天Edyアプリをインストールしてポイントを獲得する

前回、ポイントサイト(ハピタス)から楽天カードを申込みした。

min117.hatenablog.com

日々の生活にhappyをプラスする|ハピタス

発行まで数日かかるので、あらかじめ電子マネー楽天Edy)の貯め方でも見ておく。

f:id:min117:20171120233406p:plain

いろいろキャンペーンもあるらしいが 楽天EdyAndroid アプリでしか使えないみたい。

f:id:min117:20171120233430p:plain

というか、儲けばかりを指向する楽天の態度は、ものづくりのAppleの精神(iPhoneの精神)には反するから、iPhoneのアプリとしては承認されないのだろう。

 

Androidでしか動かないのなら Androidエミュレータで動かせばよかろうiMacで動くエミュレータは準備できている。

min117.hatenablog.com

Android エミュレータを起動。上記サイトの「Google Play で手に入れよう」をクリックして INSTALL してみる。

f:id:min117:20171120234407p:plain

ボタン名が「OPEN」に表示が変わり、インストールが完了した。Androidだとシミュレータでもアプリインストールできるようだ。このへんの自由さがGoogleとも言える。セキュリティホールにもなりえるけど。

ちなみにiPhoneの場合はシミュレータだとアプリインストールできない。ストアも使えない。さすがに固い。

f:id:min117:20171120234449p:plain

インストールされた 楽天Edy アプリを起動する。

f:id:min117:20171120235134p:plain

「ご利用の携帯電話はおサイフケータイには対応しておりません」エラーとなってしまった。

f:id:min117:20171120235121p:plain

エミュレータのイメージを「Nexus」で選んでしまったからかもしれない。改めて、イメージを「Pixel」のものに代えて試してみる。APIのバージョンは25。

f:id:min117:20171121000615p:plain

見事起動した。

f:id:min117:20171120235638p:plain

ホーム画面左上にはカラフルな Google アイコンが見える。日付が1日ズレているのはアメリカ時間だからか。

f:id:min117:20171121000021p:plain

楽天Edy のサイトを開く。

f:id:min117:20171121000729p:plain f:id:min117:20171121000815p:plain

Google Play で手に入れよう」をタップしてインストールする。

f:id:min117:20171121000252p:plain

ダメだ。エラーになってしまう。APIのバージョンが上になるとセキュリティが固くなってるのかもしれない(単なるバグもありえるけど)。

f:id:min117:20171121001012p:plain

iMac 5K にインストールした Android Studio のエミュレータでアンドロイドを使う

 

以前の記事で Android Studio をインストールしたものの、肝心のAndroidエミュレータが起動しなかった

min117.hatenablog.com

HAXM silent installation only supports macOS from 10.8 to 10.12 ! とエラーが出て起動しない。「エミュレータ起動に必須のプログラム HAXMmacOS 10.12 までしか対応していない」と言っているようだ。

f:id:min117:20171120215314p:plain

手元の macOS はすでにバージョン 10.13.1 だし、これじゃ動くはずもなく。Android Studio は対応が遅い。GooglemacOS での開発にはあまり力を入れていないのかも。

f:id:min117:20171120215446p:plain

解決方法をググる。同じ悩みの人がいた。

qiita.com

~/.android/advancedFeatures.ini というファイルを作ってHVF = ON」という1行を書くだけで解消するようだ。さっそくやってみる。

iMacのターミナルから

$ vim ~/.android/advancedFeatures.ini

f:id:min117:20171120220115p:plain

「HVF = ON」という1行を記述する。

f:id:min117:20171120220130p:plain

Android Studio を再起動。ソースには何も手を入れず(サンプルアプリケーションのままで)エミュレータを起動する。画面上部の▶︎マークを押すだけ。

f:id:min117:20171120220401p:plain

エミュレータは「Nexus 5X」のものを使用する。APIは24。

f:id:min117:20171120224839p:plain

問題のエラーが回避できたもよう。起動ロゴが現れた。タイトルバーを見るにエミュレータ自体は qemu の技術らしい。

f:id:min117:20171120220551p:plain f:id:min117:20171120220558p:plain

サンプルアプリが呼ばれて起動するのでホームボタンで戻る。

f:id:min117:20171120220612p:plain f:id:min117:20171120220605p:plain

見事に起動した。実物のスマホと何ら変わらない。

f:id:min117:20171120220630p:plain

メモリが24GBもあるからか。めっちゃ速い。同じ iMacXcode で動かした iPhoneX にも負けないくらい速い。

min117.hatenablog.com

Google Chrome を起動してみる。

f:id:min117:20171120220620p:plain f:id:min117:20171120220650p:plain

サックサク。スピードテストする。

f:id:min117:20171120220657p:plain f:id:min117:20171120220704p:plain

言語は日本語のままにして、速度テストを実行。

f:id:min117:20171120220712p:plain f:id:min117:20171120220718p:plain

内部的には iMac光回線だから速い。夜の混む時間帯でも下り 64.9Mbps、上りだと134Mbps も出る。

f:id:min117:20171120220725p:plain<f:id:min117:20171120220736p:plain

さすがは Yahoo!BB with フレッツ。プロバイダとしては最良。やはりまだしばらく解約できない。

min117.hatenablog.com

カメラも起動してみる。位置情報は ON。

f:id:min117:20171120220745p:plain f:id:min117:20171120220754p:plain

実機じゃないから、画面にはダミーが表示される。シャッターも押せた。

f:id:min117:20171120220805p:plain f:id:min117:20171120220612p:plain

いろんなことに活用できそう。

楽天カードを契約してハピタス15,500ポイント+楽天8,000ポイントもらう

 

先日、ドコモ光の契約でストーブが安く買えて、dポイントももらえた。

min117.hatenablog.com

ポイントは上手く使うと現金のように使えることもわかった。

min117.hatenablog.com

ポイントサービスは世の中にたくさん溢れてるけど、その中でもとく楽天ポイントは使いやすそう。クレジットカードは増やしたくないが、楽天ポイントを貯めるのに良さそうなので「楽天カード」を契約することにする。

<下調べ>

クレジットカードの契約(銀行口座への紐付け)はクレカ会社にとっては相当おいしいことだから特典も多い。事前によく下調べして一番お得なキャンペーンが張られてる時期に契約する。

調べてみたら、楽天カードの入会キャンペーンが最も手厚くなる(8,000楽天ポイント付与される)のは10月-11月らしい。ちょうど今。

http://クレジットカードおすすめ比較.xyz/osusume_waza/campaign_teatsui_jiki/

f:id:min117:20171120005346p:plain

でも、これだと楽天ポイント8,000円分しか付かないので勿体無い。以前に利用したポイントサイト「ハピタス」でさらに特典が付いていないか確認する。

日々の生活にhappyをプラスする|ハピタス

なんと15,500ポイントつくキャンペーンをやっている(2017/11/19 6:33時点)。

f:id:min117:20171120010458p:plain

今週月曜(2017/11/13)までは10,000ポイントだったはず。お気に入りに入れてモニタリングしていたから間違いない。

f:id:min117:20171120011910p:plain

さらにその前はわずかに1,300ポイントだった。

f:id:min117:20171120011901p:plain

クレジットカード発行は、やはり時期によって相当特典に差があるようだ。今は、かなり手厚い時期なのかもしれない。ハピタス見ておいてよかった。

15,500円の特典が終わってしまう前に申し込む。「ご利用はこちら」から申し込みを進める。

f:id:min117:20171120012357p:plain

かと思ったが、Macからやるとうまくクッキーが保存できない場合があって、ハピタスポイントが加算されない場合があるようなので、Windows環境に切り替えて作業を続ける。仮想環境にあるWindows10(まっさらなIE)を使う。

Macからリモートデスクトップアプリ(Microsoft Remote Desktop)を使用してWindows10にログインする。

f:id:min117:20171120012733p:plain

Windows10にログイン。

f:id:min117:20171120013058p:plain

IEを起動して、改めてハピタスサイトにログインする。「ご利用はこちら」から再開する。

f:id:min117:20171120012357p:plain

楽天カードのサイトに飛ばされ、楽天会員でログインさせられる。

f:id:min117:20171120013434p:plain

この申し込みにより、楽天からもポイント(8,000ポイント)がもらえる。ハピタスのと合わせると、15,500 + 8,000 = 23,500ポイント。全部 Amazonギフト券に替えて使う予定だから、かなりのお得だ。

3種類あるが、今回は単なる「楽天カード」で行く。

f:id:min117:20171120013407p:plain

ここからは個人情報と銀行口座の入力が続く。全て終わると「カード申込受付ID」が発行されて、後日電話で本人確認の連絡が来るらしい。

f:id:min117:20171120014506p:plain

申込完了後、3時間ほど置いてから再度ハピタスの画面(ポイント通帳)を見てみる。

f:id:min117:20171120014837p:plain

15,500ポイントがしっかりと記載されていた。状態はまだ「お問い合わせ」となっているが、楽天からの電話(個人情報確認)が済んでカード発行されれば「確定」になるだろう。

ハピタスのポイントは Amazonギフト券楽天Edy に換えられるようなので、現金に近い使い方ができそう。

f:id:min117:20171120015344p:plain

楽天カードが来るのを楽しみに待ってみる。

bash ラジコプレミアム(エリアフリー)の全局のアイコンを一気にダウンロードする

 

ラジコをテレビで聞くための自作アプリを修正している。

min117.hatenablog.com

アプリに使うロゴを一気にダウンロードしたい。ロゴは局ごとにあるようだ。

(例)

http://radiko.jp/station/logo/AIR-G/logo_large.png

f:id:min117:20171119121240p:plain

http://radiko.jp/station/logo/RAB/logo_large.png

f:id:min117:20171119121243p:plain

http://radiko.jp/station/logo/STV/logo_large.png

f:id:min117:20171119121246p:plain

各局名のリストは以前ファイルにした。

$ cat radiko_list_ALL.txt

f:id:min117:20171119121526p:plain

この文字列を

http://radiko.jp/station/logo/ココに/logo_large.png

ハメ込めんで一気にダウンロードするコマンドを作る。これくらいなら mojihame 使わなくても一瞬だ。

$ for i in `cat radiko_list_ALL.txt`; do echo 'wget http://radiko.jp/station/logo/'"$i"'/logo_large.png' -O logo_large_"$i".png >> radiko_logo_ALL.txt; done

f:id:min117:20171119122651p:plain

確認してみる。

$ cat radiko_logo_ALL.txt

f:id:min117:20171119122842p:plain

あとはこれを実行するだけ。

$ mv radiko_logo_ALL.txt radiko_logo_ALL.sh

f:id:min117:20171119123303p:plain

$ ./radiko_logo_ALL.sh

f:id:min117:20171119123313p:plain

実際は負荷考慮して1分ごと実行にした。ダウンロードしたロゴファイルはradiko_logo というフォルダを作ってまとめて入れる。

$ mkdir radiko_logo

f:id:min117:20171119123735p:plain

$ mv logo*large_*png radiko_logo

f:id:min117:20171119123750p:plain

自作の画像閲覧(ギャラリー)アプリで確認してみる。

f:id:min117:20171119124244p:plain

完璧。あとは html にmojihameしていく。