タグ

goに関するatm_09_tdのブックマーク (329)

  • Loading...

    Loading...
  • Go でロックする - Qiita

    はじめに この記事はGo Advent Calendar 2016 の17日目の記事です。 並行処理をする時にはロックが重要になります。 GoではchannelとMutexという仕組みを提供しています。 この記事では色々なロックを作りたいと思います。 tl;dr channelでロックを作ることは有意義です。 ただ、Mutexのほうが良いこともあります。 良い方法を選びましょう ロック無し ロックの意味を確かめるためにも、まずはロック無しのコードから始めます。 func main() { counter := 0 for i := 0; i < 1000; i++ { go func() { counter++ fmt.Print("*") }() } time.Sleep(3 * time.Second) fmt.Printf("\n%d\n", counter) } この関数を実行する

    Go でロックする - Qiita
    atm_09_td
    atm_09_td 2016/12/17
  • GoLand by JetBrains: More than just a Go IDE

    The complete Go IDE

    GoLand by JetBrains: More than just a Go IDE
    atm_09_td
    atm_09_td 2016/12/16
  • Goのパッケージマネージャのmanulの使い方 #golang - Qiita

    $ l total 16 drwxr-xr-x 5 kazu staff 170B 12 9 14:35 . drwxr-xr-x 84 kazu staff 2.8K 12 9 14:34 .. drwxr-xr-x 12 kazu staff 408B 12 9 14:44 .git -rw-r--r-- 1 kazu staff 13B 12 9 14:34 README.md -rw-r--r-- 1 kazu staff 312B 12 9 14:43 main.go $ manul -Q github.com/labstack/echo github.com/labstack/gommon github.com/mattn/go-colorable github.com/mattn/go-isatty github.com/valyala/fasttemplate $ manu

    Goのパッケージマネージャのmanulの使い方 #golang - Qiita
    atm_09_td
    atm_09_td 2016/12/14
  • テストしやすいGoコードのデザイン

    テストしやすいGoコードのデザイン golang.tokyo #2 12 December 2016 Taichi Nakashima 言いたいこと 明示的であれ! 2 whoami @deeeet / @tcnksm (GitHub) http://deeeet.com A PaaS Dev&Ops (Using go for CLI tool, API, Batch jobs) 3 OSS Tools gcli - The easy way to build Golang command-line application ghr - Create Github Release and upload artifacts in parallel Packages go-httpstat - Go package for tracing golang HTTP request latency

  • 簡単な式の評価機を作ってみる #golang - Qiita

    はじめに 皆さんはgoパッケージを使ったことはありますか?私は、GoGo!言いながら、恥ずかしながら、あまりまともに使ったことがありませんでした。最近は、仕事でもAST(抽象構文木)を弄り倒すことがあるので、今回はgoパッケージに触れたいと思います。 ここでは、簡単な四則演算などを評価し、結果を返すREPLを作ってみます。一見難しそうですが、ほとんどgoパッケージの機能を使うので、非常に簡単です。 ASTへパースする まずは入力された文字列をパースし、ASTを生成してみます。ここでは、式の評価なので式単位でパースします。パースには、parser.ParseExprを用います。 たとえば、以下のように使用できます。 expr, err := parser.ParseExpr("1+1") if err != nil { panic(err) } ast.Inspect(expr, func

    簡単な式の評価機を作ってみる #golang - Qiita
  • 意外と知らないgoroutineのスケジューラーの挙動 #golang - Qiita

    追記 その後GoConfernce2017で発表させていただき、その内容をまとめた記事を書いたので参考になれば幸いです。 GoConで発表してきたのでついでにruntime以下の知識をまとめていく #golang はじめに goroutineはGo言語の大きな特徴である並行処理を支える重要な機能です。 しかし、goroutineの仕組みについてしっかり理解しないままコードを書いてしまうと思わぬ挙動をしてしまうことがあるので注意が必要です。 今回はそんなgoroutineのスケジューリングの挙動についてまとめてみました。 僕自身がgoの書き始めの頃に引っかかった部分なので、初心者のgoroutineへの理解の助けになれば幸いです。 goroutineの特徴 goroutineは最小で2048byteなので、 Windows だと 1 MB、Linux だと 2 MB であるスレッドのデフォル

    意外と知らないgoroutineのスケジューラーの挙動 #golang - Qiita
  • Goでwebアプリを開発してみよう

    [参考情報] 【永久保存版】OAuth 2.0 / OpenID Connect シーケンスまとめ URL:https://qiita.com/kura_lab/items/812a62b5aa3427bdb49d タイトル: 『OpenID Connect 入門 〜コンシューマー領域におけるID連携のトレンド〜』 概要: コンシューマー領域におけるID連携のトレンドであるOpenID Connectの概要と仕様のポイントについてご紹介します。 OpenID TechNight Vol.13 - ID連携入門 Aug. 26, 2015 URL:https://openid.doorkeeper.jp/events/29487

    Goでwebアプリを開発してみよう
    atm_09_td
    atm_09_td 2016/12/09
  • Goのアンチパターン

    Go書いててなんとなく見えてきた Goでやっちゃいけないパターン WAF導入してらくらくWebアプリ WAF自体が現在群雄割拠状態。 WAF毎にハンドラインターフェースが違うので既存コードつなぐにはラッパーが必要。 どのWAFもLL言語に比べるとまだまだフィーチャーの網羅範囲が狭い。 なのでもちろんLL言語ほど楽には書けないことが多い。 リフレクション使いまくりでトータル性能はLL言語並みに遅いのもある。 Go1.7のcontextパッケージの導入で標準のHTTPハンドラが復権する可能性があり更に荒れる予想。 追記: 楽できるのを期待してWAFを導入するの「やっちゃいけない」とまでは言い過ぎだったかもしれないけれど例のsqlでPrepareを正しく使えていないで性能出なかった件とか、当面WAFを使うなら自分で概ね中身を理解して使う覚悟が必要。 構造体メソッドにロジックを詰め込む Goの思想

    atm_09_td
    atm_09_td 2016/12/07
  • 実践的なGAE/Goの構成について #golang #gcpja - Qiita

    2016年のGCPはFirebaseのアップデートから始まって東京リージョン開設と色々進化がありました。GAEよりはその他のGCPのサービスに注力していたのかなという印象です。 でもアジア初のGAEが日というのは大きなニュースでした! 2017年にもどんどんデータセンターを増やすみたいで色々楽しみですね。 ちなみにGAEのChannel APIは来年シャットダウンされるらしいです。移行先としてリアルタイムの通信はFirebaseを使うのが公式のオススメのようです。 そう言えばGoogle Cloud PlatformGoogle Cloudに改名してましたけどGCだと口頭でもわかりにくいしググラビリティも良くないのでGCPって言っていきたいです。 (追記: GCPでいいようです) そして題の今年のGCPのアドベントカレンダーでは、皆悩んでいるらしいGAE/Goの構成についてです。 前

    実践的なGAE/Goの構成について #golang #gcpja - Qiita
  • golang で始める Slack bot 開発 - at kaneshin

    この記事は Slack Advent Calendar 2016 - Qiita の3日目の記事です。 昨日は Kinoppyd さんの「今そこにあるSlack」でした。 さて、今回、この記事では golangSlack bot を実装する方法を紹介しようと思います。 世に蔓延る Slack bot これから bot を世に放とうとしている人は、是非、1日目と2日目の記事を読み、事前知識を頭に叩き込んでおくと良いと思います。 Slackで業務チャンネルの平穏を維持するbot、そして人間のトークンをbotに与える話 - Qiita 今そこにあるSlack的に、自身で作成した bot はもちろん好きになると思いますが、人によっては理解不能な bot や、意味不明な場面で反応したりと、「邪魔だな」と思われてしまうことがあります。そのため、bot を開発する人は「謙虚・尊敬・信頼」(T

    golang で始める Slack bot 開発 - at kaneshin
  • GolangでGetWildの'89バージョンを演奏する - Qiita

    Get Wild Advent Calendar 2016 の1日目です。 概要 89バージョンやライブの小室さんみたいにGetWildをサンプリングしたい でもシンセがない 君にはterminalがあるじゃないか サンプリングに必要な音源をゲットしよう 私はMacなのでGarageBandで元音源から必要な部分だけ抽出しました 全部で2個。 /tmp/de-dende-den.mp3 : デーデン!デーデン!の部分(0:21~0:22) /tmp/get_wild_and_tough.mp3 : ゲッワイエンターフ!の部分(1:01〜1:04) itunesの簡易プレイリストを消去しよう 音源再生時、itunesが立ち上がる人もいるでしょう。 その場合、簡易プレイリストがあると、 「再生を開始します。以前、次はこちらに追加した5曲を消去してもよろしいですか?」 とポップアップが

    GolangでGetWildの'89バージョンを演奏する - Qiita
  • golangで書いたツールをCircleCI上でビルドしてその成果物をGitHub Releasesにリリースする - その手の平は尻もつかめるさ

    表題の通り.いくらかポイントがあったのでメモとして記す. 基的にこの記事の内容を真似した. medium.com あらかじめ,CircleCIの側の設定でGITHUB_TOKENという環境変数を登録しておく.なおGitHubのPersonal access tokenにはrepoのpermissionを付与しておく. とは言えこれでは動かない.理由はghr (ghrについてはこちら: 高速に自作パッケージをGithubにリリースするghrというツールをつくった | SOTA) がcontextに依存しているからで,contextはgo 1.7以降でないと利用できない.しかしながらCircleCIgolang環境は1.6系が使える内の最新なので *1 このままではghrをgo getすることが出来ない. というわけでCircleCI上でgo 1.7を使うようにしましょう,ということでそう

    golangで書いたツールをCircleCI上でビルドしてその成果物をGitHub Releasesにリリースする - その手の平は尻もつかめるさ
    atm_09_td
    atm_09_td 2016/11/17
  • Go言語はじめの一歩

    はじめに Goは2009年にGoogleよりリリースされた、オープンソースのプログラミング言語です。C言語のように高速な実行速度とスクリプト言語のような生産性を併せ持つGoは、近年、各種Webサービスのバックエンド開発やインフラ領域で利用され、注目されつつあります。 国内企業でもGoを採用する事例が増えており、それぞれの知見を共有するために、各地で勉強会なども行われるようになってきました。このようなGo人気の高まりを受けて、「まだ触ったことはないけれど興味はある」という方も多いのではないでしょうか。 連載ではそういった方を対象に、Goの基礎部分に触れながら、実際にWebアプリケーションを作成するまでを解説します。 第1回目の今回は、Goとはどのような言語なのかを紹介し、実際にかんたんなプログラムを動かしてみます。 Goとは 元々Googleの内部的なプロジェクトとして始まったGoは、20

    Go言語はじめの一歩
  • realize - Goの自動ビルド環境

    MOONGIFTはオープンソース・ソフトウェアを紹介するブログです。2021年07月16日で更新停止しました Goのビルドを行う場合、コマンドを使って行うのが基です。多くのコンパイル系プログラミング言語ではそうやって開発するでしょう。しかし毎回入力するのは面倒になってくるのも事実です。 そこで使ってみたいのがrealizeです。Goプロジェクトのファイル変更をウォッチして自動コンパイルしてくれます。 realizeの使い方 realizeではパスを追加して、最後にrunを実行します。複数のGoプロジェクトが管理できます。 $ realize run Realize - 1.1 A Go build system with file watchers, output streams and live reload. Run, build and watch file changes wit

    realize - Goの自動ビルド環境
  • エディタの壁を越えるGoの開発ツールの文化と作成法

    1. The Go gopher was designed by Renée French. The gopher stickers was made by Takuya Ueda. Licensed under the Creative Commons 3.0 Attributions license. エディタの壁を超える Goの開発ツールの 文化と作成法 2016/11/05(土) @VimConf 2016

    エディタの壁を越えるGoの開発ツールの文化と作成法
    atm_09_td
    atm_09_td 2016/11/05
  • Golangにおけるinterfaceをつかったテストで mock を書く技法 - haya14busa

    いい記事に感化されて僕も何か書きたくなった。 Golangにおけるinterfaceをつかったテスト技法 | SOTA リスペクト: Big Sky :: golang で終了を確認するテストの書き方 GolangAPI Clientを実装する | SOTA Big Sky :: GolangAPI Clientを実装する、の続き 今週のやつではなく先週のです.今週のは特に知見がなかった…grpc-goとか使えたらクライアント勝手に生成されるしいいよねgrpc流行ると便利そう(感想) くらい Golangにおけるinterfaceをつかったテスト技法 | SOTA めっちゃいいなーと思ったんですが,テスト用 の mock を気軽に作るテクニックはあまり詳しく紹介されてなかったのでそのあたりの1つのテクニックを書きたい. 前提 僕もテストフレームワークや外部ツールは全く使わない.標準のt

    atm_09_td
    atm_09_td 2016/11/02
  • Big Sky :: GolangでAPI Clientを実装する、の続き

    いい記事に感化されて僕も何か書きたくなった。 GolangAPI Clientを実装する | SOTA GolangAPI Clientを実装する 特定のAPIを利用するコマンドラインツールやサービスを書く場合はClientパッケージ(SDKと呼ばれることも多いが記事ではClientと呼ぶ)を使うこ... http://deeeet.com/writing/2016/11/01/go-api-client/ この先、JSON REST API のエンドポイントに対して Golang の struct を用意していく訳だけど、ここが一番かったるい作業で一番手を抜きたい所だと思います。そこで便利なのが JSON-to-Go です。 JSON-to-Go: Convert JSON to Go instantly JSON-to-Go Convert JSON to Go struct T

    Big Sky :: GolangでAPI Clientを実装する、の続き
    atm_09_td
    atm_09_td 2016/11/01
  • Go言語さわってみた - Practice of Programming

    一年前(2014年5月末の作成日の.goなファイルがあった)くらいにGo Tourを途中までやったけど、ほとんど覚えてなかったです。 ディレクトリとか環境変数とかは、前若干コード書いたので、それっぽく残ってました。emacsのgo-modeも入ってた。 という状況から、ちょうど一週間くらいたった感じです。 作ったもの https://github.com/ktat/go-coloring テキストを正規表現で色付けするもの。そういうツールってあるっけ? https://github.com/ktat/go-pager ↑のやつにlessっぽくしようとしたpagerを組み込んでいたけど、分離した(go-termboxを利用)。 コードは、まぁ、まだまだアレというか間違ってる/分かってない可能性が高いです。 参考にしたところ/したいところ Goチュートリアル http://golang.jp/

    Go言語さわってみた - Practice of Programming
    atm_09_td
    atm_09_td 2016/10/27
  • Golangにおけるinterfaceをつかったテスト技法 | SOTA

    最近何度か聞かれたので自分がGolangでCLIツールやAPIサーバーを書くときに実践してるinterfaceを使ったテスト技法について簡単に書いておく.まずはinterfaceを使ったテストの基について説明し次に自分が実践している簡単なテクニックをいくつか紹介する. なおGolangのテストの基については @suzuken さんによる「みんなのGo言語」 の6章が最高なので今すぐ買ってくれ! 前提 自分はテストフレームワークや外部ツールは全く使わない.標準のtestingパッケージのみを使う.https://golang.org/doc/faq#Packages_Testing にも書かれているようにテストのためのフレームワークを使うことは新たなMini language(DSL)を導入することと変わらない.最初にそれを書く人は楽になるかもしれないが新しくプロジェクトに参入してきたひ