タグ

golangに関するnodoca_engineのブックマーク (24)

  • Goで覗くシステムプログラミングの世界

    プログラミングの勉強にあたってよく言われるのは、「流行に左右されるような技術の尻を追いかけるよりも、土台となる技術を身につけることが大切」ということです。 例えば、ウェブブラウザで動くJavaScriptを書くときは、流行しているライブラリの書き方を暗記するよりも、 ブラウザがどのようにCSSHTMLを解釈してスクリーンに文字や絵を描き出していく(レンダリングしていく)のかを理解することが大切です。 さもないと、ライブラリの流行が変わるだけで勉強したスキルが失われてしまいかねません。 データベースでも同じことがいえます。SQLの文法を学ぶことよりも、データベースがどのようにスケジューリングを行い、 どのようにデータを探索していくのかを学ぶほうが、パフォーマンス・チューニングのコツなどもひらめきやすくなるでしょう 1 。 「土台となる技術を身につける」を、もう少しちゃんと言い換えれば、「今

    Goで覗くシステムプログラミングの世界
  • 忙しい人のためのA Tour of Go - Qiita

    Go Conference 2013 SpringのハンズオンでA Tour of Goやったけど目で読んでも頭に入ってこないのでメモりながらやった。 ちょっとしたまとめページになったのでさらっとよんで感触をつかむときには役に立つかもしれないけど、結局は演習などでコード書かないと身につかないことがわかったので時間をつくってちゃんとやった方がいいと思う。 Packages すべてのプログラムは package で構成される プログラムの処理は main パッケージの main 関数で始まる 他のパッケージは import で取り込める import "websocket"のwebsoketはcode.google.com/p/go.net/websocketを指している Imports import は括弧でグループすることができる

    忙しい人のためのA Tour of Go - Qiita
  • 私的メモ: golang 学習 - A Tour of Go をなぞる - Qiita

    (この内容は2014年07月時点のものです) 記事中の A Tour of Go のコードは、 このライセンス のもと、 The Go Authors と Google Inc. に帰属します 参考リソース 概観として Go メモ - 日語公開記事 - サイボウズエンジニアのWIKI 中国語オリジナルの日語版の解説書: build-web-application-with-golang/preface.md at master · astaxie/build-web-application-with-golang オフィシャル系 実践 Go: Effective Go - The Go Programming Language 翻訳版 (golang.jp): 実践Go言語 - golang.jp 仕様: The Go Programming Language Specificatio

    私的メモ: golang 学習 - A Tour of Go をなぞる - Qiita
  • さあGoを始めよう!環境構築,”Hello World”から簡単なバックエンドサーバーまで | POSTD

    Goは、 信頼できる賢い人たち によって作られた愛すべきささやかなプログラミング言語で、 現在も成長中の大規模なオープンソースコミュニティ によって、継続的に改善が続けられています。 Goの基原則はシンプルであることですが、時折、約束事が分かりにくいこともありますね。以下では、私がどのようにしてGoプロジェクトを始め、どのようにGoのイディオムを使っているかを紹介したいと思います。一緒に、Webアプリケーション用のバックエンドサービスを構築しましょう。 環境の構築 新規プロジェクト Webサーバの作成 ルートの追加 複数APIへのクエリ 並列化 シンプルさ 追加演習 環境の構築 最初のステップは、もちろんGoをインストールすることです。オフィシャルサイトに用意されている、 お使いのオペレーティングシステム用のバイナリディストリビューション を使ってください。MacでHomebrewを使

    さあGoを始めよう!環境構築,”Hello World”から簡単なバックエンドサーバーまで | POSTD
  • GolangでwebサービスのAPIを叩くCLIツールを作ろう - Qiita

    はじめに この記事はGo (その3) Advent Calendar 2016の18日目の記事です。 最近Goの勉強がてら、とある社内向けWebサービスAPIを叩くCLIツールを書いてます。 有名どころのWebサービスならたいてい既に誰かがSDKなりCLIツールを作ってたりするので、それを使ればよいと思いますが、クローズドな社内向けのWebサービスとかだと、まぁ欲しい人が自分で書くしかないですね。 で、簡単なプロトタイプが動くようになったので、このあたりで覚えたことを整理してまとめてアウトプットしておこうかなと思います。 内容的には サブコマンド形式のCLIツールを作り方 spf13/cobraの使い方 viperと連携した透過的な設定ファイルの読み込み version番号の埋め込み、Makefile pkg/errorsによるエラーの伝搬、contextを使ったタイムアウト 標準のne

    GolangでwebサービスのAPIを叩くCLIツールを作ろう - Qiita
  • radikoの録音ツールをGoで書いた - Qiita

    この記事は、Go (その3) Advent Calendar 2016 の12日目の記事です。 radigo radikoの録音用のツールをGoで書きました。 https://github.com/yyoshiki41/radigo Record radiko 📻 radikoのAPIのライブラリも書きました。 https://github.com/yyoshiki41/go-radiko The unofficial radiko.jp APIs Client Library for Go. ※ 現在(2016年12月)、radikoが公式でAPI公開を行っているわけではありません。 radiko とは radiko.jp で、インターネットでラジオが聞けるやつです。 今年(2016年)の10月より、タイムフリーという機能がスタートして、 過去1週間分の放送を遡って聴けるようになりまし

    radikoの録音ツールをGoで書いた - 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
  • Go 言語で wc を実装してみた - takatoshiono's blog

    Go 言語で wc を実装してみた GitHub - takatoshiono/go-wc: Go implementation of wc command for practice なぜか A Tour of Go をやり終えた時「全然うまく書けない」というのが感想だった。もっと Go 言語のコードを読み書きする必要がある。 そして読むだけだとやる気が続かないから何か書きたい。何を作ろうか? Go 言語なのでスタンドアローンで起動するバイナリ実行形式のファイルがよさそう。仕様が簡単で手頃なやつがいいな...と考えて wc にしたのだった。他にも以下が候補にあった。 ab smtp server beer コマンド(なんかうまそうなビールを表示する) wc コマンド find コマンド (コマンド系で攻めるなら GNU coreutils, findutils などを見るとよさそうか...

    Go 言語で wc を実装してみた - takatoshiono's blog
  • golangはじめました - アリ

    最近はgolangがアツいらしい。ちょうどRebuild: 15: After Google Reader, DIY Blogging, The Go language (typester)でtypesterさんがgolangについて触れていたのを聞いて、試しに触っていたがなかなか便利であることがわかった。 golangの印象としては go get、go runにgo build、そしてgo testが便利 go fmtのようなコード整形ツールがついてくるのは嬉しい (ただ、インデントがハードタブなのはちょっと時代遅れな気がする) 標準packageが充実しているのが頼もしい golangのマスコットキャラクターであるGopherがかわいい (Gopher人形欲しい) といった感じ。 ←かわいい golangの入門ということで、skkservを実装してみる。skkservというのは、ほとん

    golangはじめました - アリ
  • 6年間におけるGoのベストプラクティス | POSTD

    稿は、QCon London 2016で行った講演の内容に基づいています。スライドとビデオは近日中に掲載予定です) 2014年に開催された最初のGopherConで、私は「 Best Practices in Production Environments(番環境でのベストプラクティス) 」と題した講演を行いました。 SoundCloud の私たちはGoのアーリーアダプターで、その時点までに既に2年近く、番環境向けの様々なGoコードを書き、実行し、メンテナンスしていました。そして私たちはいくつかのことを学んだので、その教訓をまとめ、多くの人に伝えたいと思ったのです。 それ以来、私はフルタイムでGoを使う仕事を続けています。SoundCloudではその後の活動やインフラチームで、そして現在は Weaveworks で Weave Scope や Weave Mesh の開発に使ってい

    6年間におけるGoのベストプラクティス | POSTD
  • Mac上にGoの開発環境を構築する〜下準備編 | おそらくはそれさえも平凡な日々

    同僚がGoを始める上で、案外まとまった資料が無さそうだったので書いてみることにしました。 Macでhomebrewが入っていることが前提です。事前に brew update をおこない formula を最新のものにしておくと躓くことが少ないでしょう。 Goのインストール % brew install go エントリ執筆時点では、1.6.2 が入ります。Goはメジャーバージョンが同じ場合は、後方互換が保たれているので、基的に新しいやつを入れて問題ありません。 環境変数の設定 $GOPATH だけを決めればOKです。$GOPATH はどこでも良いのですが、ここでは $HOME/dev を $GOPATH に設定します。また、 $GOPATH/bin に $PATH も通しておきます。 export GOPATH=$HOME/dev export PATH=$GOPATH/bin:$PATH

    Mac上にGoの開発環境を構築する〜下準備編 | おそらくはそれさえも平凡な日々
  • 本物の golang を... 本物の Gopher を、お見せしますよ。 - Qiita

    事の始まり それはD言語くんへの嫉妬から始まった。 D言語くんの繁殖についての仮説 lsを間違えてdlと入力してしまったときに、D言語くんが通り過ぎるコマンド くっ悔しい... そしてショボいAAで2番煎じ。 lsを間違えてgolと入力してしまったときに、Gopherが通り過ぎるコマンド書いた。 こんなはずじゃない! 僕らの Gopher 君はこんなチープじゃない! 明日来てください。物の Gopher をお見せしますよ。 — mattn (@mattn_jp) December 15, 2015 (当はもうちょっと前から作ってましたが) 物のGopher君とは そして今回、これを公開するに至った。 まずはこれをご覧頂きたい。 !!!!!!!!!!!!1 こいつ・・・ 動くぞ・・・ golang で書いたデスクトップマスコットです。起動すると画面のタスクバーの上をウロウロします。たま

    本物の golang を... 本物の Gopher を、お見せしますよ。 - Qiita
    nodoca_engine
    nodoca_engine 2015/12/17
    好き
  • はじめてのGo―シンプルな言語仕様、型システム、並行処理 記事一覧 | gihyo.jp

    第4章標準パッケージ―JSON、ファイル、HTTP、HTMLを扱う Jxck 2015-04-23

    はじめてのGo―シンプルな言語仕様、型システム、並行処理 記事一覧 | gihyo.jp
  • ErlangとGolangを比較してみる

    よくこの2つの言語を比較する人がいるように感じる。 両方ともサーバープログラム用途で用いられる言語なので、分からなくもないのだが、この2つの言語は似て非なる物だ。 プロセス周りに重点を置いて違いについて自分なりに纏めてみた。 両方とも触れてから1年と経っていないので、間違いがあれば指摘をもらえると嬉しい。 主な違い Erlang Golang

    ErlangとGolangを比較してみる
  • Goによるプライベートネットワークへのアクセスを禁止するHTTPクライアントの実装 - はこべにっき ♨

    クローラのように、ユーザからの入力に応じて任意のURLにHTTPリクエストを発行するソフトウェアは、誤ってプライベートネットワークへのリクエストを処理しないようにする必要があります。悪意のあるユーザが故意にプライベートなネットワークに対してリクエストして、内部情報にアクセスするといった攻撃を行う可能性があるからです。 PerlではLWPx::ParanoidAgentやLWPx::ParanoidHandlerといったモジュールが便利です。これらのモジュールは、リクエスト先のURLをチェックしてプライベートネットワークへのリクエストを禁止してくれます。単にIPアドレスをチェックするだけでなく、ホスト名をDNSで解決して得られたIPアドレスをチェックしたり、リダイレクト先のURLをチェックしたりしてくれます。まさに偏執的です。 このLWPx::ParanoidAgentと同様の機能をもったG

    Goによるプライベートネットワークへのアクセスを禁止するHTTPクライアントの実装 - はこべにっき ♨
  • gobump で Go プロジェクトのバージョニングをおこなう - 詩と創作・思索のひろば

    Go に限らず、公開しているプロジェクトのバージョニングは必要だけれど面倒なタスクのひとつで、プロジェクトのメンテナンスを続けていくつもりがあるのなら、ほぼ必ず通らなければならない道でしょう。ここで話題にしているのは Git などによるソースコードのバージョン管理ではなく、たとえばバージョン 3.1.4 といった、リリースされるソフトウェアの公開バージョンをどう運用するか、という話です。 バイナリとして配布する前提のプロジェクトであればソース中で var version string と宣言した変数に、ビルド時に -ldflags '-X main.Version 3.1.4' などとしてバージョンを設定するという方法もありますが、go get による配布ができるのなら、提供側としては楽ができます。たとえば gore は開発者向けということでバイナリの配布をしていませんが、リリース作業がな

    gobump で Go プロジェクトのバージョニングをおこなう - 詩と創作・思索のひろば
  • Goで使える10のテクニック | POSTD

    ここでは、私がたどりついた最善のやり方を紹介しましょう。個人的に過去数年にわたって大量のGoコードと付き合ってきた経験から集めたものです。これらは全て非常にスケーラビリティがあると思っています。私が、スケールする、と言うときは次のような意味があります。 アプリケーションが求める環境は、アジャイル環境の中で変化していきます。開発の3、4か月後に、全てをリファクタリングする必要が出てくるなど、考えたくもないはずです。新しい機能は簡単に追加できなくては意味がありません。 あなたのアプリケーションは多くの人々によって開発されます。可読性が高く、維持しやすいものでなくてはなりません。 あなたのアプリケーションは大勢の人々に使われます。バグは容易に特定でき、修正できなくてはなりません。 長期的にみるとこれらのことが重要になる、ということを私は今までに学んできました。小さなことであっても、多数に影響しま

    Goで使える10のテクニック | POSTD
  • Goの初心者が見ると幸せになれる場所 #golang - Qiita

    公式サイト A Tour of Go Web上で実行しながら学ぶことができる公式のチュートリアルです。 チュートリアル 公式のチュートリアルです。初学者向けからジェネリクスのチュートリアルなども用意されています。 A Tour of Goが終わった後に取り組むと良いでしょう。 Go Wiki Go Code Review Commentsなどが掲載されているGitHub上のWikiです。 パッケージドキュメント 標準パッケージやサードパーティ製のパッケージのドキュメントが見れるサイトです。検索もできます。 入門 プログラミング言語Go完全入門 筆者が作っている巨大なGoの入門資料です。なぜGoが作られたのか、から最新のジェネリクスの情報、静的解析まで扱っています。 Gopher道場 Goを体系的に学べる場です。10時間くらいある動画教材(自習室から入手可)もあります。 Go の最初の手順

    Goの初心者が見ると幸せになれる場所 #golang - Qiita
  • Golang でのウェブ開発を考えてみる - Qiita

    Help us understand the problem. What is going on with this article? 仕事Golang を使ってウェブアプリを作ることになりそうなので、どんな構成がいいのか考えてみる。あくまで前提ありきの選択なので、何でもかんでも適用できるわけではない。 JS や静的ファイル部分は今のところ考慮していない。単によく知らないので。 突っ込み大歓迎です。これいいよ!とか教えてください 前提 多機能なフレームワークよりシンプルなフレームワークに色々組み合わせる方法をとりたい。 開発者は数名程度。Golang に精通している開発者が 1 名いる。残りはこれから。 開発者は Django での開発経験が豊富な人が多い 全員ウェブ開発経験はそれなりに積んでいる。 HTML と JSON 両方のパターンが存在するのでテンプレートエンジンは重要。 JS

    Golang でのウェブ開発を考えてみる - Qiita
  • Go言語のDependency/Vendoringの問題と今後.gbあるいはGo1.5

    Go言語のDependency/Vendoringは長く批判の的になってきた(cf. “0x74696d | go get considered harmful”, HN).Go1.5からは実験的にVendoringの機能が入り,サードパーティからはDave Chaney氏を中心としてgbというプロジェクベースのビルドツールが登場している.なぜこれらのリリースやツールが登場したのか?それらはどのように問題を解決しようとしているのか?をつらつらと書いてみる. Dependencyの問題 最初にGo言語におけるDependecy(依存解決)の問題についてまとめる.Go言語のDependencyで問題なのはビルドの再現性が保証できないこと.この原因はimport文にある. Go言語で外部パッケージを利用したいときはimport文を使ってソースコード内にそれを記述する.このimport文は2通りの