Exported from Qiita
この記事はQiitaで公開されていました GoでHTTPリクエストを行いたい場合、一般的には net/http のhttp.Getやhttp.Postを使うことになると思います。もしくは少し複雑なリクエストする場合、http.NewRequestを使うかもしれません。 net/httpの公式ドキュメン…
この記事はQiitaで公開されていました 2020年8月追記 この記事は2018年頃に出てきたGoのジェネリクスに関するドラフトを読んで、個人的に理解した内容をまとめたものです。2020年時点ですでに、contractの代わりにinterfaceが使われるなど、十分に内容が古く…
この記事はQiitaで公開されていました Goでドキュメントを書くとき、一般的にはGoDocを使うと思います。GoDocはシンプルにみえて、実際は色々な書き方をサポートしていますし、ブラウザで単純に表示する以外の読み方もあるので、一通りの方法をまとめてみま…
この記事はQiitaで公開されていました OAuth 2.0クライアントの実装 golang.org/x/oauth2を使ってトークンを発行する際に、複数の認可フローや方言があるけれど、どうやって実装するんだろう?と思ったことを調べました。OAuth 2.0自体については、OAuth 2.0…
この記事はQiitaで公開されていました TL;DR NixpkgsのmacOSインストーラはマルチユーザインストーラなので、rootユーザにインストールされているnixパッケージのアップデートが必要。 $ sudo -i nix-env -q nix-2.0 nss-cacert-3.35 $ nix-env --version ni…
この記事はQiitaで公開されていました このQiita記事は、Go & Versioningで掲載された一連の記事を読んで、自分なりのまとめと感想です。私の周りはあまり騒いでないけど、これ感覚的なものが大きく変わるなあ、と思ったので、主に表面上に現れる変更をまと…
この記事はQiitaで公開されていました 特定の処理をゴルーチンで並列実行したいけれど、サーバの負荷等を考慮して、同時実行数の上限を設定したい話です。元ネタの記事では、チャネルやsync.Poolを使って実現していて、すでに十分シンプルなのですが、x/sync…
この記事はQiitaで公開されていました ほとんど情報がなかったので調べながら書いたメモ。基本的に、公式情報が最もまとまっている。 Using a Jenkinsfile Pipeline Syntax Pipeline Steps Reference Jenkins Job DSL API また、古い情報らしいけど、現状こ…
この記事はQiitaで公開されていました ~と*を展開する場合はクオートしない クオートされた文字列の中にある~はそのまま文字として扱われる。扱いは*と同じようにみえる。 $ echo ~/bin /Users/kadota/bin $ echo "~/bin" ~/bin $ echo *.txt hello.txt $ ec…
この記事はQiitaで公開されていました この記事は、Go2 Advent Calendar 2017の17日目です。 特にこれといったネタがなかったので、goyaccを使ってシェルを実装してみました。 何をしたのか Linux/macOSなどのUnix系OSには、bashやzsh、fishなどあります。こ…
この記事はQiitaで公開されていました 素直な実装 特に何もしない場合、net/httpはタイムアウトしません。以下のサーバにHTTPアクセスをすると、1分後にhello!というレスポンスを返します。 package main import ( "log" "net/http" "time" ) type handler s…
この記事はQiitaで公開されていました 問題 Goは、$GOPATH/src/ 以下にパッケージのソースコードを置くルール。自分で書いたコードも例外ではないので、以下の例では、自分で書くコードを $GOPATH/src/example.com/app に置いている。 $GOPATH/ └ ─ /src ├ ─…
この記事はQiitaで公開されていました [9fans]Venti off-site backupsより、Ventiストレージのバックアップを行う方法をメモ。最後は個人的によく使う方法。 venti/mirrorarenasでミラーリング plan9portに含まれているmirrorarenas(8)コマンドで以下のよう…
この記事はQiitaで公開されていました ユーザ操作などで、同じAPIを同時にリクエストされたけれど、例えばGETメソッドの場合は結果もほとんど同じになるので、リクエストを1回にまとめてしまいたい場合は少なくないと思います。 または、期限付きの認証トー…
この記事はQiitaで公開されていました Plan 9 from User Spaceのsecstoreを使って秘密メモの扱いを便利にしました。 コマンドから秘密メモを扱いやすくなった ある程度安全に秘密メモをGit管理できるようになった 毎回パスワードを入れなくてもよくなった 動…
この記事はQiitaで公開されていました 困ったこと GitHubは、コミットログのアイコン表示などで、Authorのメールアドレスを使います。なので、例えば普段とは違うマシンからコミットした場合、Authorのメールアドレスが普段と異なる場合は、アイコンが表示さ…
この記事はQiitaで公開されていました この記事は、Goアドベントカレンダー(その2)の19日目です。 何を言っているのか分からないかもしれませんので、動画を用意しました。 アドベントカレンダーはこれを作った話です。本当はPlan 9対応までやりたかった。 p…
この記事はQiitaで公開されていました Unixコマンドで日時の変換をする方法が、OSによって全然違うのでまとめました。 日時からUnix-timeへの変換 ローカル時刻からUnix-time 2015年12月1日(JST)をUnix-timeに変換するコマンドです。 macOS: $ date -v15y -v…
この記事はQiitaで公開されていました macOS SierraでソースからGoをコンパイルできなくて調べた内容です。macOSなら公式からバイナリパッケージが提供されているので、自分でコンパイルしなくてもそれを使えばいいだけなのですが、他の環境でも使える内容だ…
この記事はQiitaで公開されていました 例えば、APIの結果を使った処理を行う場合、ユーザとしてはなるべく早く処理をしたいけど、早すぎるとサーバの処理が追いつかないケースはよくあると思います。 そういう時、APIを実行した後でtime.After等を使って少し…
この記事はQiitaで公開されていました Nixパッケージマネージャは、純関数型OSと言われているNixOSで使われているパッケージングシステムです。上書き更新を行わず、ユーザ単位でパッケージを管理できるのが良い所かなと思います。名前から、Plan 9由来のNix…
この記事はQiitaで公開されていました Goのパッケージ名は、リポジトリのURLをそのまま使うことが多いと思いますが、リポジトリはそのままで、別のURLをパッケージ名にすることもできます。 例えば、あるパッケージのリポジトリをGitHubに置いていて、リポジ…
この記事はQiitaで公開されていました 以下のコードは通常分かりづらいバグを持っています。 package main import ( "fmt" "runtime" "sync" ) type Counter int32 func (c *Counter) Inc() { *c++ } func main() { var c Counter var wg sync.WaitGroup for…
この記事はQiitaで公開されていました ゴルーチンで並行実行中させた処理の中で、エラーが発生した場合にどう扱うかは割と面倒です。 package main import ( "io/ioutil" "log" "net/http" "os" ) func main() { c := make(chan []byte) go func() { res, er…
この記事はQiitaで公開されていました 開発環境として、CoreOSをMac OS X+QEMUに導入したのでメモ書き。 情報 QEMU stable 2.5.0 CoreOS 835.13.0 QEMU お手軽にHomebrewでインストールします。 $ brew install qemu 時間がかかるので、待ちましょう。 CoreO…
この記事はQiitaで公開されていました GoとLimboは、一部のファンから、似ていると言われますので、そんなに似ているのか、実際に比較してみました。ついでに、この2つの言語は共通してAlefが先祖になりますので、Alefも含めます。 いちおうこの記事は、Go A…
この記事はQiitaで公開されていました INSTALL ソースを取得 $ git clone https://github.com/9fans/plan9port plan9 ソースを取得したディレクトリに移動してビルドすれば終わりです。通常は、git pullしたディレクトリがplan9portのインストール先になりま…
この記事はQiitaで公開されていました brew本体をインストールするのもGo公式パッケージを入れるのも管理者権限を要求されますが、権限が無くてもGoはソースからインストール可能ですしなるべく環境を汚さないようにしたい場合にも有用だと思います。 ただし…
この記事はQiitaで公開されていました Plan 9のventiバックアップ用に、Windows Azure上でventiサーバを立てます。 plan9portのインストール あらかじめplan9portを/usr/local/plan9にインストールしておく。 ventiディスクの作成 Windows AzureポータルでHD…
この記事はQiitaで公開されていました Ken fs 追加 fs: newuser web Fossil 追加 webというユーザを作成する。 # con -l /srv/fscons prompt: uname web web (ホームディレクトリが不要な場合は:webとする) prompt: uname web +glenda (glendaをメンバー追加…