オンラインでEBSのボリューム拡張した
昔できなかったのに、2017年ぐらいからできるようになったらしい。
デフォルトの8GBのEBSだけをマウントしているインスタンスで実行。
手順は以下。
1. aws web consoleでボリュームを拡張。50GBに。
2. /dev/xvda1 パーティションが切られていいたため、パーティションサイズを拡張
3. resize2fsでディスク領域を拡張
# ディスクを増やしてもパーティションサイズが8GBのまま [ec2-user@xx ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 50G 0 disk └─xvda1 202:1 0 8G 0 part / # パーティションサイズを拡張 [ec2-user@xx ~]$ sudo growpart /dev/xvda 1 CHANGED: disk=/dev/xvda partition=1: start=4096 old: size=16773086,end=16777182 new: size=104853470,end=104857566 # 50Gになっていることを確認 [ec2-user@xx ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 50G 0 disk └─xvda1 202:1 0 50G 0 part / # マウントしているパーティションはまだ元の容量のまま [ec2-user@xx ~]$ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/xvda1 7.8G 7.8G 0 100% / devtmpfs 993M 56K 992M 1% /dev tmpfs 1001M 0 1001M 0% /dev/shm # 拡張 [ec2-user@xx ~]$ sudo resize2fs /dev/xvda1 resize2fs 1.42.12 (29-Aug-2014) Filesystem at /dev/xvda1 is mounted on /; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 4 The filesystem on /dev/xvda1 is now 13106683 (4k) blocks long. # 無事50GBに増えた。 [ec2-user@xx ~]$ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/xvda1 50G 7.8G 42G 16% / devtmpfs 993M 56K 992M 1% /dev tmpfs 1001M 0 1001M 0% /dev/shm
my.cnfパラメーターレコメンド
社内でISUCON過去問やったんだが、MySQLTunerでmy.cnfチェックするの神便利だった。
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で数値を書き込むというプログラムを書いています。
GKE debug memo
gcloud auth login gcloud config set project ${project-name} gcloud compute instances list gcloud compute ssh ${instance-name}
えくせる
rubyでexcel操作をしたく、spreadsheetというgemを使って対応していた。そこそこ装飾のあるエクセルをテンプレート的に読み込んで保存すると、Excelを開いたとき謎のエラーが出て辛かった。これはヤバイ、納期間に合わん。うまいことテンプレート側のExcelを調整してエラーにならないように運用でカバーしていたが、rubyXL使ったらすべてが解決した。
太古のExcelを使ったいる人のためを思いxls形式にしていたけど、xlsxのほうが安全に操作できるんだろうなぁ、中身xmlだし。おそらくだがxlsのバイナリだとあれがあれした場合にライブラリが対応できていないんだろう。
もう4/25か。早いな。