echoとbase64

echoコマンドはデフォルトでは改行文字が含まれるため、暗号化時などに気をつける これが原因でmysqlのdsnでエラーが発生した 改行なしオプションは-n 例 ...

12月 26, 2021

go testをDockerfileで実施する

gorm v2がgo v1.14以降じゃないとビルドできない Jenkinsサーバーがgo v1.12でgo testのときにエラーがでる docker imageのビルドの時にgo imageでgo testがしたいができるのか? テストが落ちたらビルドも止まるか 試作コード cmd/main.go ...

12月 26, 2021

Golang memo

Golang memo 他の言語からすると紛らわしい単語 map Goでは辞書型 interface go 環境変数の場所を間違えない 基本wslで書いて検証したとしても、vscodeの補完に使うgoのライブラリたちはwindows本体側を参照しているのでちゃんと設定する switch と select 見た目が似てるけど、違う用途 ...

12月 26, 2021

iotaとエラーハンドリング

jwtのエラーを調べている時に以下のコードを見て不思議に思った dgrijalva/jwt-go/claims.go#L38-L52 if c.VerifyExpiresAt(now, false) == false { delta := time.Unix(now, 0).Sub(time.Unix(c.ExpiresAt, 0)) vErr.Inner = fmt.Errorf("token is expired by %v", delta) vErr.Errors |= ValidationErrorExpired } if c.VerifyIssuedAt(now, false) == false { vErr.Inner = fmt.Errorf("Token used before issued") vErr.Errors |= ValidationErrorIssuedAt } if c.VerifyNotBefore(now, false) == false { vErr.Inner = fmt.Errorf("token is not valid yet") vErr.Errors |= ValidationErrorNotValidYet } goで|=はOR演算子を表すが、エラーでなんでOR演算子を使うのか? ...

12月 26, 2021

jwtの"Token used before issued" Error

Token used before issued はjwtのParseの時iatが現在時刻より未来の場合発生する サーバー間の時刻のずれでも発生するので注意する Parseはerrorがnilでない時もtokenを返すので、後処理はできる package main import ( "fmt" "github.com/dgrijalva/jwt-go" ) func main() { // iatが2030年になっている tokenstring := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxOTE2MjM5MDIyfQ.jHQiBm09vEVjEx9347u2hU7LTreUVtEbWRPWrr9DG_A" secret := "my_secret_token" token, err := tokenParse(tokenstring, []byte(secret)) if err != nil { fmt.Printf("Error:%v\n", err) return } claims, ok := token.Claims.(jwt.MapClaims) if ok { fmt.Println(claims) fmt.Println(claims["name"]) return } } func tokenParse(idToken string, hmacSecret []byte) (*jwt.Token, error) { token, err := jwt.Parse(idToken, func(token *jwt.Token) (interface{}, error) { // アルゴリズムの判定 if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"]) } return hmacSecret, nil }) return token, err }

12月 26, 2021

mysqlのkey index

describeはテーブル情報を出すが、複合キーの場合keyのカラムが1つのみmulになる indexを全て確認する際はshow indexを使う describe table_name; show index from table_name; 例 ...

12月 26, 2021

Terraform 勉強

Terraform 勉強 Introduction to Infrastructure as Code with Terraform Infrastructure as Code(IaC) Terraformはproviderと呼ばれるTerraformプラグインでAPIを呼び出し、インフラの操作をする AWS GCP Azureなど有名なもののproviderは作成されている 独自でproviderを作成することも可能 providerがインフラの要素をresourceとして定義 ...

12月 26, 2021

time

time timeパッケージはデフォルトがmsなので注意する

12月 26, 2021

URL Encode

net/urlパッケージのURLエンコードは2種類 url.QueryEscape() スペースが+になる url.PathEscape() スペースが%20になる こちらに詳しい URI エンコーディングについて url.EncodeではQueryEscapeの方が使われているため、URLの+を変換したいときは正規表現を用いる こちらに詳しい ...

12月 26, 2021

WIP スタートアップ企業の業績決定要因 -質的比較分析(QCA)によるアプローチ

https://www.jstage.jst.go.jp/article/keieijournal/42/0/42_40/_article/-char/ja/ 2019 年 42 巻 p. 40-51 中小企業の業績に影響を与える要因 企業家の特性 リーダーシップ 経営資源 戦略 社会的関係資本 創業者の年齢 成長指向 開業から28カ月以内のスタートアップ ...

12月 26, 2021