いてづきブログ

情シスでやってみたことの備忘録

ナンバープレートの正規表現

日本のナンバープレートの入力を正規表現で検証してみる。

 

こちらはGoogleフォームの検証機能で使用した。JavaScriptと同じ仕様?

Googleフォームで使用する場合は最初と最後の/を省く必要があるみたい。

 

これ↓

^[\u30a0-\u30ff\u3040-\u309f\u3005-\u3006\u30e0-\u9fcf]+[a-zA-Z0-9]{1,3}[\u3040-\u309f]{1}[0-9]{1,4}$

 

入力例としては下記のようになる

品川100あ1234

 

順に、地名、分類番号、用途、一連指定番号をそれぞれ文字、3桁までの数字とアルファベットの組み合わせ、ひらがな1文字、4桁までの数字として検証している。

 

詳説 正規表現 第3版

詳説 正規表現 第3版

 

 

ObjectのArrayから要素を削除する

javascriptのarrayにはremoveはないのでspliceを使用する。

const ary = [1, 2, 3] ;

ary.splice(0, 1);

console.log(ary);  // [2, 3]

 

spliceは配列に対して、第1引数のindexから、第2引数の数だけ要素を排除する。

Array.prototype.splice() - JavaScript | MDN

 

なので、削除するためにはindexが必要。

値から削除するためにはindexOfを使う。

const ary = [1, 2, 3] ;

const index = ary.indexOf(1);  // 1を削除する

ary.splice(index, 1);

console.log(ary);  // [2, 3]

 

Objectの配列からオブジェクト内のフィールドの値を参照して削除したい場合、indexOfでは取得できないのでfindIndexを使う。

 

const ary = [{ key: 1, value: 'hoge'}, { key: 2, value: 'moge'}, {key:3, value: 'piyo'}];

const index = ary.findIndex(x => x.key === 1);

ary.splice(index, 1);

console.log(ary);  // [{key:2, value: 'moge'}, {key:3, value: 'piyo'}]

 

ただしfindIndexはIEでは動作しないことに注意。

Array.prototype.findIndex() - JavaScript | MDN

 

 

Vue.jsで苦戦

いろいろ調べてるけど、各記事によって作法がバラバラだし、そもそも.vueファイルに書くのか.jsに書くのかも定かじゃない記事ばかり。

 

たかがajaxで取ってきたデータで選択リストを作るところでさえこんなにわかりづらいとは…。

 

自分が全然わかってないからそう感じてるだけだろうけども。

まずは動いてるものを探してきて弄ったほうがいい気がする。

 

 

Seleniumを触ってみる

ブラウザのテストや操作を自動化出来るSeleniumを試してみた。

 

環境はWindows10とPython3。

 

seleniumのインストール

pipでseleniumをインストール

pip install selenium

 

 ChromeDriverを入手

下記サイトから各OS用のChromeDriverを入手(記事時点では2.33)


Windowsの場合はダウンロードしたzipを解凍してchromedriver.exeを適当な場所に配置。

 

実行

Chrome楽天ブックスのウルトラサンをカートに入れて購入手続き、ログインまで進むコードです。

  • 先程ダウンロードしたChromeDriverのパスに置き換えてください。
  • 楽天のID,パスワードを自身のものに置き換えてください。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

browser = webdriver.Chrome(executable_path='設置したchromedriver.exe')
# ポケモンウルトラサン
browser.get('https://books.rakuten.co.jp/rb/15142601/')


# カートに追加
browser.find_element_by_class_name('new_addToCart').click()
# 購入手続きへ
browser.find_element_by_id('js-cartBtn').click()

#ユーザーID
browser.find_element_by_name('u').send_keys('user_id')
#パスワード
browser.find_element_by_name('p').send_keys('password')


#次へボタン→購入確定画面へ
browser.find_element_by_name('submit').click()

 

実行するとChromeが新しいウィンドウで立ち上がり、上記の操作を順番に実行していきます。

立ち上がるウインドウは新規ウインドウになり、セッション等は初期化される模様。

また「Chromeは自動テストソフトウェアによって制御されています。」という表示が出ます。

 

各コード内の要素はChromeデベロッパーツール→Elementsタブで画面を見ながら要素を辿っていくことで見つけることが出来ます。

 

 

 

サービスアカウントを用いたGoogle APIへのアクセス方法

qiita.com

 

Qiitaに投稿しました。

 

認証とかいろいろ面倒くさくて大変。

Developer Consoleの見た目がいろいろ変わってて、目的の画面にたどり着けなかったりして、疲れたorz

 

GASなら簡単にできるのになー(笑)

 

 

Windowsのログインパスワードを忘れた際の対処

必要なもの

Windows(7,8,10)のインストールディスク、または”システム修復ディスク”

 

これがない場合はPC初期化しかないと思います。

 

手順

Windowsのインストールを行う。

 

※WIndows10でうまくインストーラが立ち上がってこない場合は、Windowsキー→電源→shiftキーを押しながら再起動をクリックして、トラブルシューティング→ブートオプションの設定(機種やバージョンによって表示が違う)をクリックしてBiosのBoot設定をいろいろ試してみてください。

f:id:iteduki:20170525103547j:plain

この画面でShift+F10を押してコマンドプロンプトを開く。

「C:」とか「D:」を実行するとそのドライブに移るのでdirコマンドでwindowsフォルダーがあるドライブに移動して下記のコマンドを実行(D:ドライブにあった場合)

ren d:\windows\system32\utilman.exe utilman.exe.bak

copy d:\windows\system32\cmd.exe d:\windows\system32\utilman.exe

exit

 

実行したらセットアップを中止して再起動。

Windowsのログイン画面で「コンピュータの簡単操作」をクリックするとコマンドプロンプトが立ち上がってくる。

ここで下記のようなコマンドでパスワードを再設定するなり新しいアカウントを設定するなりする。

net user <ユーザー名> <新しいパスワード>

無事ログインできるようになったら同じ手順で同様に書き換えたUtilman.exeとcmd.exeを戻しておきます。 

 

ただ、Windows10のバージョンとかログインしてたユーザーの権限によっては実行できない場合もあるみたいです。その場合は諦めて初期化する。

 

 

 

 

機械学習で遊ぶ~素材準備編~

機械学習を行うためには大量の学習用データが必要ということで、デレステのMVから顔画像を切り出した。

 

元動画の準備

MacならiPhoneiPadを接続して、QuickTimePlayerの新規ムービー収録でソースにiPhoneiPadを選べば簡単に録画できる。

Windowsでは多分何かアプリがいると思う。

 

顔画像の切り出し

pythonopencvを使う。

というか、ここのスクリプトをそのまま使わせてもらった(ノ∀`)

github.com

 

 

あとは切り出した画像を手動で分類して学習データを作ればOK.

ちなみに約3000枚を切り出して5種+その他に分類したら1時間くらいかかりました…。

 

これで学習データの準備は完了です。