i++

プログラム系のメモ書きなど

2017-01-01から1年間の記事一覧

golang : ブラウザを開く

pkg/browser パッケージを使用する。ローカルの html ファイルや URL 指定などが可能。 github.com

golang : json の pretty print (タブやスペースの指定)

json.Encoder の SetIndent を使用するか、json.MarshalIntent を使用する。以下は前者の例。 func writePrettyJson(filePath string, v interface{}) error { f, err := os.Create(filePath) if err != nil { return err } defer f.Close() enc := json.New…

golang : RSA キーを含む pem ファイルの読み込み

秘密鍵の読み込み RSA の秘密鍵の pem ファイルは BEGIN RSA PRIVATE KEY で始まる場合(PKCS#1)と BEGIN PRIVATE KEY で始まる場合(PKCS#8)があり、前者の場合は x509.ParsePKCS1PrivateKey を、後者の場合は x509.ParsePKCS8PrivateKey を使ってパースす…

Redshift : interval を秒/分/時に変換する

秒に変換 EXTRACT(epoch FROM my_interval) 分に変換 小数点以下を切り捨てて integer にするために FLOOR を使用。 FLOOR(EXTRACT(epoch FROM my_interval) / 60) 時に変換 分に変換と同じ。 FLOOR(EXTRACT(epoch FROM my_interval) / 3600) 参考:datetime…

golang : gmail でメールを送信する

#golang メールを送信するには の通りにやれば良い。 ただし、2段階認証を有効にしている場合には <password> の部分にアプリパスワードを使う必要がある。アプリパスワードの発行 はリンク先から。アプリパスワードについての説明は アプリ パスワードでログイン 辺り</password>…

golang : 見た目が同じ長さの文字列を作成する(等幅フォント)

等幅フォントで表示する時に同じ長さに見えるような文字列を生成する。 // "github.com/mattn/go-runewidth" を使用。 func makeFixedWidthString(str string, length int) string { var buffer bytes.Buffer l := 0 for _, c := range str { cl := runewidt…

golang : csv.Reader の "wrong number of fields in line" を無視する

Read() を実行する前に FieldsPerRecord を -1 に設定する。 reader := csv.NewReader(f) reader.Comma = '\t' reader.FieldsPerRecord = -1 // これ for { record, err := reader.Read() if err == io.EOF { break } if err != nil { return err } // 処理.…

golang : 固定長文字列出力フォーマット

%(文字数).(文字数)s のような形で、最大精度と最小精度を指定する。. の左側の数字の前に - を付けると左詰め、付けないと右詰め。 // 例えば50文字(左詰め)で固定。 fixedLengthString = fmt.Sprintf("%-50.50s", s)

gcloud : ERROR: (gcloud.auth.git-helper) Invalid input line format: [path=].

gcloud source repos clone (リポジトリ名) --project=(プロジェクト名) で Google Cloud Platform 上のソースコードをクローンしようとしたときに発生。 ERROR: (gcloud.auth.git-helper) Invalid input line format: [path=]. fatal: remote error: 解決方…

Robobrowser + α によるスクレイピングの忘備録

Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-』を読んでしばらく Robobrowser を使ってみようと思うので、その忘備録。 edx.hatenablog.com 基本 browser = RoboBrowser( parser='html.parser', # Cookie が使用できないと…