log

日記です

go selenium memo

package main

import (
	"fmt"
	"net/http"
	"time"

	"github.com/pkg/errors"
	"github.com/sclevine/agouti"
)

// how to setup
// brew update
// brew install selenium-server-standalone
// brew cask install chromedriver
// go get "github.com/sclevine/agouti"
// go get "github.com/pkg/errors"

var adPage = "http://local.hoge/"

var driver = agouti.ChromeDriver()
var page *agouti.Page

func init() {
	driver.Debug = true

	if err := driver.Start(); err != nil {
		panic(errors.Wrap(err, "Failed to start driver"))
	}

	_page, err := driver.NewPage(agouti.Browser("chrome"))
	if err != nil {
		panic(err)
	}

	page = _page
}

func setCookie() {
	uuid := fmt.Sprintf("clickbot_%d", time.Now().Unix())
	err := page.Navigate("http://hoge.local/")
	if err != nil {
		panic(err)
	}
	time.Sleep(1000 * time.Millisecond)
	err = page.SetCookie(&http.Cookie{
		Name:   "uuid",
		Value:  uuid,
		Path:   "/",
		Domain: ".local",
	})
	if err != nil {
		panic(err)
	}
	fmt.Println("Refresh cookie uuid: " + uuid)
}

func main() {
	defer driver.Stop()
	setCookie()

	errcount := 0
	count := 0
	for {
		count++
		if count%5 == 0 {
			setCookie()
		}

		var err error
		err = page.Navigate(adPage)
		if err != nil {
			errcount++
		}

		time.Sleep(1000 * time.Millisecond)

		err = page.FindByXPath("/html/body/*/a[1]").Click()
		if err != nil {
			errcount++
		}

		time.Sleep(3000 * time.Millisecond)
	}
}

rubyXLが神

openpyxl → 罫線が消える。rubyXLが表の再計算できないと思ってrubyから呼び出していた。
rubyのその他 → excelが壊れる、officeへの依存があるっぽい
rubyXL → 昔は表の再計算機能がなかったらしいが現在は実装済み。xlsx形式で保存ができるし、罫線が消えない。

rubyXLデフォルトでは再計算しないので以下のあれをあれする

book = RubyXL::Parser.parse(path)
book.calc_pr.full_calc_on_load = true
book.calc_pr.calc_completed = true
book.calc_pr.calc_on_save = true
book.calc_pr.force_full_calc = true

危うくいちいち罫線をプログラムで引くところだった。
これを書いた人はtemplateとして元となるエクセルを読み込んでrubyXLで数値を書き込むというプログラムを書いています。

えくせる

rubyexcel操作をしたく、spreadsheetというgemを使って対応していた。そこそこ装飾のあるエクセルをテンプレート的に読み込んで保存すると、Excelを開いたとき謎のエラーが出て辛かった。これはヤバイ、納期間に合わん。うまいことテンプレート側のExcelを調整してエラーにならないように運用でカバーしていたが、rubyXL使ったらすべてが解決した。
太古のExcelを使ったいる人のためを思いxls形式にしていたけど、xlsxのほうが安全に操作できるんだろうなぁ、中身xmlだし。おそらくだがxlsのバイナリだとあれがあれした場合にライブラリが対応できていないんだろう。
もう4/25か。早いな。

スキルセット

わしもreactできたほうが良いな。
プロダクト作りにコミットする時、両方できたほうが話しが早いっすわ。
プロレベルじゃなくても、メインのスキルの6割ぐらいの注力でできるようになっていたほうが良いかも。
やらないといけなくなったときに、調べながらもプロダクションレベルでコードを書き始められるのを目標に。
今はアドテク開発なのでbackend周りに重きを置きまくったほうがよさげだけど。

This IP can't make requests for that application.

Graph APIを使ったfacebook token取得処理で、以下エラーが出るときの対処法。

Response: {"error":{"message":"This IP can't make requests for that application.","type":"OAuthException","code":5,"fbtrace_id":"DSzKmOmDkHJ"}}

stackoverflow.com

んーーーこれはfbのバグってことなのか?

サーバーIPホワイトリスト ってとこをすべて削除して対応。
よくわからんけどここに値が入っているとエラーになる。正しくサーバーのIPを入れていても。

gyazo.com