いろいろ調べてるけど、各記事によって作法がバラバラだし、そもそも.vueファイルに書くのか.jsに書くのかも定かじゃない記事ばかり。
たかがajaxで取ってきたデータで選択リストを作るところでさえこんなにわかりづらいとは…。
自分が全然わかってないからそう感じてるだけだろうけども。
まずは動いてるものを探してきて弄ったほうがいい気がする。
ブラウザのテストや操作を自動化出来るSeleniumを試してみた。
環境はWindows10とPython3。
pipでseleniumをインストール
pip install selenium
下記サイトから各OS用のChromeDriverを入手(記事時点では2.33)
Windowsの場合はダウンロードしたzipを解凍してchromedriver.exeを適当な場所に配置。
Chromeで楽天ブックスのウルトラサンをカートに入れて購入手続き、ログインまで進むコードです。
from selenium import webdriver
from selenium.webdriver.common.keys import Keysbrowser = 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タブで画面を見ながら要素を辿っていくことで見つけることが出来ます。
Pythonでテスト自動化を実現しよう(unittest Jenkins Selenium 活用編)
Qiitaに投稿しました。
認証とかいろいろ面倒くさくて大変。
Developer Consoleの見た目がいろいろ変わってて、目的の画面にたどり着けなかったりして、疲れたorz
GASなら簡単にできるのになー(笑)
・Windows(7,8,10)のインストールディスク、または”システム修復ディスク”
これがない場合はPC初期化しかないと思います。
※WIndows10でうまくインストーラが立ち上がってこない場合は、Windowsキー→電源→shiftキーを押しながら再起動をクリックして、トラブルシューティング→ブートオプションの設定(機種やバージョンによって表示が違う)をクリックしてBiosのBoot設定をいろいろ試してみてください。
この画面で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のバージョンとかログインしてたユーザーの権限によっては実行できない場合もあるみたいです。その場合は諦めて初期化する。
セミナーでtensorFlowの解説をしてもらってようやく機械学習の流れみたいなものがわかったので再開。
ひとまずネット上に公開されてる様々なコードを実行して動きを確かめてみようとしてつまづいたのでメモ。
以前はbashで実行するための準備だったが、Windowsでもネイティブで動くようになったので再度準備する。
最終的に頼りになるのはやはり公式のドキュメント
Installing TensorFlow on Windows | TensorFlow
環境を作った後、公開されてるコードをコピペして実行すると様々な場面でAttributeErrorが発生して落ちるが、これは公開されたコードが書かれたときのtensorFlowのバージョンが古いことに起因しているらしい。
下記のページにマイグレーションの一覧が記載されているのでこちらを参考に最新版の実装に書き換える。
コピペコードの意味はぼんやりとしか理解できてないけどとりあえず正常に動かすことが出来るようになった。
ちなみに学習させているのは前回も書いたデレステの画像判定である。
画像収集と素材準備のスクリプトも書いたので次回こそは載せる予定(フラグ)
C#で配列やコレクションのすべての要素に処理を行うでググると色々出てくるけど大抵の場合intとかstringみたいな基本型のものだったりする。
こんな感じ。
IEnumerable<int> intAry = new List<int>() { 1, 2, 3, 4, 5 }; // 各要素を2倍にする intAry = intAry.Select(x => x * 2);
ところが、あるクラスオブジェクトのコレクションで各要素の何らかの属性に一括で何か処理をしようとすると話が変わってくる。
IEnumerable<Person> list = new List<Person>(){ new Person(){ Code = 1, Name = "hoge" }, new Person(){ Code = 2, Name = "moge" } };
こんなListに対して、各要素のNameの末尾に"moge"をつけようとすると、
// ビルドエラー list = list.Select(x => x.Name += "moge");
戻り値がIEnumerable<string>と解釈されてビルドエラーになる。
いろいろ試した結果delegateを使えばできるようだ。
list = list.Select(delegate (Person p) { p.Name += "moge"; return p; });
LINQは奥が深い…。