Go言語
direnvは、ディレクトリに cd コマンドで移動することで、 そのディレクトリに環境変数をメッセージとともに自動的に設定してくれます。 Go言語で書かれていますが、python,node,ruby などでも使えます。 (python なら pyenv,venv の代わりに使うことができ…
exec.Command で sudo のパスワードを Stdin から入力 package main import ( "fmt" "os" "os/exec" "strings" ) func main() { command := []string{"sudo", "-S", "chown", "-R", "root:root", "foo.txt"} cmd := exec.Command(command[0], command[1:]...…
filepathパッケージを使用したパスの扱い方と、使わずに分割してみたりする。
runtime.Callerやruntime.FuncForPCを使って 実行ファイルのパスや実行している行番号、関数名などを取得する
初学者向け。golangで簡単なファイル検索プログラムの作り方 プログラミングを始めると何かしらメモしたりするので、 それをコマンドラインで検索してファイルを開くためのプログラムです。
dockerを使ったGo言語の開発する手順(docker-composeなし) 日本語ドキュメント http://docs.docker.jp/index.html ホスト側にディレクトリとファイルを作成 $ mkdir ~/go/src/hello $ vim ~/go/src/hello/main.go package main func main() { println("hello…
アサーション(assertion)の意味は断定、断言なので、型を断定するですかね。 interface型をアサートするには、i.(T) を使います。 複数から判別したい場合は、switch文で i.(type) を使います。 構造体type xxx structやインターフェースtype xxx interface …
Go言語でSelenium WebDriverを使うサードパーティパッケージAgoutiの使い方。 Webブラウザを自動化し、作成したウェブサイトのテストやウェブクローラーに使います。 ライブラリのAgoutiの他、Google Chromeを使う場合は、chromedriver が FireFoxを使う場合…
golang でビット演算を使ったフラグ(マスク) ビットフラグは、1 か 0 (真か偽) で 1ビットずつに意味を持たせたものです。 例えば 000 と三桁あって A のフラグをオンにすると 001、 B のフラグをオンにすると 010、 C のフラグをオンにすると 100、 全てフ…
golangで時刻をフォーマット(文字列化)するには Mon Jan 2 15:04:05 MST 2006 を使います。 他の言語のように %a %b %d %X %Z %Y ではありません。なので %Y は 2006 です。 このGo言語のフォーマットは、stack overflowの回答にあるように、 月、日、時、分…
HTTP Request で返ってくる http.Response の Body の大きさに制限を設けてコンテンツが制限を超えていればリクエストを中止する方法です。 レスポンスヘッダーの Content-Length または、Go言語の場合は、resp.ContentLength をもとに制限すればよいのかも…
go言語(golang)の switch 文の基本的な使い方と型(type)判定 switch 文は if 文と同様に条件により処理を振り分けることができる。
連想配列(他言語のhashやdict)は、Go言語では map です。
go言語(golang)での繰り返し処理 for文の使い方。 foreach と while については go言語に構文自体がないので、それぞれ for range と for 文を使う。 また、他の言語同様に continue でスキップ break でループ処理を抜けることができる。
otto は、JavaScript をGo言語に変換して実行できるパッケージです。 Goのプログラムをコンパイルして JavaScript のファイルを読み込めば動的に実行できるので、 設定ファイル以上のことをする場合などに便利です。 ただし ES5 なので let, const, () =>, …
JSONやYAMLなどで使う構造体のタグ/アノテーションを取得する type A struct { B string `これ` }
reflectパッケージを使ってループでフィールド名、値、型を出力する
Go言語でファイルの読み書きと作成、ファイルがパスに存在するかの確認、 ファイルの内容を一行ずつ処理する、ファイルのコピー、などの使い方 os.Create ファイルの新規作成。読み書き両方。 os.Open ファイルを開く。読み込み専用。ファイルがなければ作成…
Go言語での JSON のパース/変換 Marshal, Unmarshal, NewDecoder, NewEncoder の使い方。 構造体のタグの指定方法については Go言語の構造体とJSON に書きましたのでそちらをどうぞ。 ドキュメント golang.org - JSON
golangにはYAMLの標準パーッケージはありません。 なので yaml.v2 を使って、 YAML から go言語のデータ型(構造体やマップなど) に変換(Unmarshal,Decode) と、 その逆で go言語のデータ型から YAML に変換(Marshal,Encode) します。 以下、パッケージのダウ…
テストなどで出力を破棄したい場合に os.Open(os.DevNull) や io.Writer を実装する必要はなく io/ioutil パッケージに破棄するための変数が定義してあります。
Go言語の標準ライブラリ flag パッケージを使ったコマンドラインオプション(フラグ)の基本的な解析方法と、 独自の型(例えば、URL や JSON など)を扱えるようにするための実装方法 flagパッケージ ドキュメント: https://golang.org/pkg/flag ソースコード: …
Go言語で大きなファイル(ISOなど)をダウンロードしながら標準出力にプログレスバーなど、 進捗状況を出力したい場合に、io.TeeReader が便利です。 また、Content-Length をダウンロードが完了する前に知ることができます。
構造体のタグを使ってJSONのフィールド名/オプションを指定する jsonのパースなど詳しい使い方は Go言語 JSON Marshal, Unmarshal, NewDecoder, NewEncoder の使い方 に書きましたのでそちらをどうぞ。
某ブログサービスでコマンドラインからAPIで記事を投稿するのに、 WSSE認証とBasic認証の二択だったので書いてみました。
はてなAPIのドキュメント はてな認証ドキュメント一覧 OAuth 対応 API 一覧 はてなブログAtomPub はてなAPIは、ドキュメントがしっかり書かれているので、 困ることはないですが、ブログの編集モードに関して text/html (見たままモード) text/x-markdown (…