並び順

ブックマーク数

期間指定

  • から
  • まで

81 - 120 件 / 2280件

新着順 人気順

golangの検索結果81 - 120 件 / 2280件

  • Golang開発者のためのクリーンアーキテクチャ

    はじめに クリーンアーキテクチャは、ソフトウェア設計の分野で非常に重要な概念です。 しかし、その理解は容易ではなく、明確な正解が存在するわけではありません。 多くの人が異なる解釈を持ち、他の設計思想と混在していることもあります。 この記事では、自分なりの視点からクリーンアーキテクチャを解釈し、その整理した内容を共有します。 このアーキテクチャの目的は、システムの各層を独立させ、変更に強く、テストしやすい設計を実現することです。 この記事では、クリーンアーキテクチャの基本概念、Golangでの実装方法、およびディレクトリ構成について詳しく説明します。 なお、この記事では個人的な見解を述べており、必ずしも正解を書いているわけではありません。もし誤りがあれば、ぜひご指摘いただけると幸いです。 クリーンアーキテクチャの基本概念 クリーンアーキテクチャの元となったのは、ロバート・C・マーチン(通称「

      Golang開発者のためのクリーンアーキテクチャ
    • golang で書かれたプロセスのリソースを外部から監視/操作できる「gops」 - Qiita

      この記事は Go Advent Calendar 2016 の3日目の記事です。 はじめに 今回は gops という Google 製のツールを紹介したいと思います。 gops は ps コマンドの様に動作しますが、golang で書かれたプロセスに限って以下の機能を提供します。 スタックトレースの表示 メモリ状態の表示 ランタイム状態の表示 メモリのプロファイルを取り pprof を起動 CPUのプロファイルを取り pprof を起動 強制GC 以下一つずつ説明していきます。 golang プロセスの一覧 まず引数を何も指定せずに起動します。 $ gops 10224 go (/opt/go/bin/go) 10244* main (/tmp/go-build638808727/command-line-arguments/_obj/exe/main) 10257 gops (/opt/

        golang で書かれたプロセスのリソースを外部から監視/操作できる「gops」 - Qiita
      • golang の channel を使って Dispatcher-Worker を作り goroutine 爆発させないようにする - at kaneshin

        golang で処理の高速化をするために goroutine/channel を使って並行処理にし、待ち時間を無駄にしないようにするのは言葉で表すのは簡単ですが、実際にパターンとして落としこむためには経験が必要だなと思うので、今回 Dispatcher-Worker として Job Queue を golang で実装する方法を紹介したいと思います。 この記事は mattn さんの Big Sky :: golang の channel を使ったテクニックあれこれ の次のステップとして読むことをオススメします。 mattn.kaoriya.net golang で作成したアプリケーションで多くのリクエストをアプリケーションが送受信する必要がある場合、高速に捌くために並行処理にして非同期化を図る場合を想定しています。 今回は get という関数でHTTPリクエストを実行して取得したデータのサ

          golang の channel を使って Dispatcher-Worker を作り goroutine 爆発させないようにする - at kaneshin
        • 闇のBashををGoに置き換える技術 / golang.tokyo #11 // Speaker Deck

          golang.tokyo #11 の発表資料です。

            闇のBashををGoに置き換える技術 / golang.tokyo #11 // Speaker Deck
          • イケてないのに人気がある golang vs イケてるのに人気がない Nim - 強まっていこう

            ここ最近 GCP を持ち上げて Google のポチと化していましたが、そのポチが今回は Google に噛みつきます。 wolfbash.hateblo.jp だって golang 酷いんですもん。何かセンスがぜんっぜん Google っぽくない。 せっかく作るのなら、もっと良いものにして欲しい、そう言う願いも込めてこのエントリーを書きます。 wolfbash.hateblo.jp 前回 Rust と比較してみましたが、今回はその golang 版です。 golang は言語のシンプルさを追求していて、言語的な便利機能が片っ端からありません。 それは覚えることが少ないことを意味します。学習コストを低く抑える事を根本的なポリシーにしている言語です。 裏を返せば完全に人を小馬鹿にしているんですが、その分ドキュメントなどがかなり充実しています。 構文的には、ほぼ C と同じです。そらそうですね

              イケてないのに人気がある golang vs イケてるのに人気がない Nim - 強まっていこう
            • Goにおける画像ファイル処理 / golang.tokyo #19 - Speaker Deck

              ImageFlux Goにおける画像ファイル処理 Golang.Tokyo #19 Talks.2 / 2018-11-03

                Goにおける画像ファイル処理 / golang.tokyo #19 - Speaker Deck
              • Golangでログを吐くコツ — KaoriYa

                この記事は Go Advent Calendar 2018 の16日目の記事です。 Golangでプログラムを書く時にログを吐くの、どうしてますか? 本記事ではログを吐く際のコツというか気にして欲しい事項と、 なぜそうなるのかを解説していきます。 一概に「ログを吐く」と言っても、 ライブラリからログを吐く場合とアプリケーションから吐く場合では 相当に事情が異なります。 TL;DR ライブラリ(パッケージ)を書く時は… まずログを吐かないことを検討しましょう。 error で返してライブラリのユーザーにログへ吐かせるかどうかを選ばせましょう。 *log.Logger を使いましょう。 デフォルトは log.Printf に対して吐き(またはそれと同等のログを吐く)、 ライブラリユーザーの設定で任意の *log.Logger に切り替えられるようにしましょう。 自前の Logger インターフ

                • Dockerを使って本番さながらのGolangの環境を構築してIntelliJで開発する - とよぶ

                  やっと季節は三寒四温の状態から抜け、もう春だと言っていい季節ですが、僕は痔に苦しんでいてやっとの思いで回復に向かっております。 春って素敵。 というわけで、業務で新しいプロジェクトがGolangで実装する方針になってしまったので、仕方なくGolangの開発環境を構築します。 Scalaどこ行った。 僕自身はレガシープロジェクトに長いこといたので今更ながらDockerへの入門レベルの情報を書き並べつつ環境構築していきます。 準備 VirtualBoxのインストール Vagrantのインストール 環境 Mac OSX 10.9.5 Mavericks Vagrant 1.7.2 目標 MacのIntelliJからGolangのソースコードを修正して、Dockerコンテナ内に反映させ、 Macのブラウザ経由でアクセスしてレスポンスを確認できる。 仮想OSを準備してMacとファイルの同期を行う。

                    Dockerを使って本番さながらのGolangの環境を構築してIntelliJで開発する - とよぶ
                  • ホリネズミでもわかるGoroutine入門 / golang.tokyo#14

                    絶対にExportされてないフィールドを書き換えるなよ!絶対だぞ!絶対! / golang.tokyo#20

                      ホリネズミでもわかるGoroutine入門 / golang.tokyo#14
                    • Golang GenericsでREST APIを作る - Nature Engineering Blog

                      Go 1.18が出てしばらく経ちました。みなさんGenerics使っていますか? @maaashです。 これは Nature Engineering Blog祭 の2日目の記事です。 祭り 最初は歓喜し、mapやfilter的なfor文を少しずつgithub.com/samber/loに切り替えたり、 internalなsliceパッケージを作ってみたり。 ですが心のどこかで欲求不満が蓄積されていくのを感じていました。 使い尽くしていないのでその真価が理解できていなくて物足りないような、 こんなに面白いおもちゃが与えられたのに遊び尽くしていないような感覚です。 Genericsを使ったコードを書きたい!と思いながら日々の業務でREST APIを書いていると、、 あれ、これはかの When To Use Genericsの結論にある: If you find yourself writing

                        Golang GenericsでREST APIを作る - Nature Engineering Blog
                      • Golangで軽量なSSHサーバを実装する - Fire Engine

                        今回は、Golangのgolang.org/x/crypto/sshパッケージを使って、SSHサーバを構築してみました。 かなりミニマムな実装ですが、リモートからSSH接続して、対話的にコマンドが実行できるところまで実装しました。 コード github.com package main import ( "golang.org/x/crypto/ssh" "log" "net" "io/ioutil" "fmt" "os/exec" "github.com/kr/pty" "sync" "io" ) func main() { serverConfig := &ssh.ServerConfig{ NoClientAuth: true, } privateKeyBytes, err := ioutil.ReadFile("id_rsa") if err != nil { log.Fatal(

                          Golangで軽量なSSHサーバを実装する - Fire Engine
                        • Big Sky :: Golang の channel の使い所

                          golang の特徴と言えば goroutine と channel ですが、その使いどころに悩む人もおられる様です。 goroutine は非同期に実行される処理、channel はその groutine と通信する為の仕組みと考えると分かりやすいです。 package main import ( "fmt" "time" ) func main() { task := make(chan string) taskquit := make(chan bool) workerquit := make(chan bool) go func() { loop: for { select { case <-taskquit: workerquit <- true break loop case job := <-task: fmt.Println(job) } } }() go func() {

                            Big Sky :: Golang の channel の使い所
                          • Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会

                            初心者向けgolang勉強会で発表したスライドです。 http://atnd.org/events/42889Read less

                              Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会
                            • golang で正規表現クロスワードを解く - Qiita

                              この記事は Go Advent Calendar 2016 最終日の記事になります。参加頂いた皆さんお疲れさまでした。 今年も昨年に引き続き、25人以上の方が「何か書きたい」と名乗り出て頂き、go、go2、go3 の3本(2年連続)、計75エントリが揃う事になりそうです。Go 言語の人気が高まってきているのが良くわかるアドベントカレンダーでした。 あらすじ 普段あまり表だった所には姿を現さないのですが、今年は builderscon 2016 に登壇させて頂きました。 とても新鮮な体験で、味わった事のない緊張の中、いろいろな反響を貰いました。いい体験が出来たと思います。ありがとうございました。登壇し終えて数時間はなんだか緊張のほぐれた変な感じを味わっていました。懇親会の時あたりでようやく皆さんとお話する事ができて Vimmer の皆さんと Vim 談義をしてきました。 その懇親会で香り屋さ

                                golang で正規表現クロスワードを解く - Qiita
                              • Big Sky :: Golang で Windows の DLL を作る方法

                                以前から c-archive は作れたけど DLL にするとシンボルが被ったりして上手く DLL が作れなかった。 Big Sky :: golang の Windows 版が buildmode=c-archive をサポートした。 だいぶ時間が掛かった様ですが、ようやく buildmode=c-archive が Windows でも使える様になりました。 cmd/go: -buildmode=c-archive should ... http://mattn.kaoriya.net/software/lang/go/20160405114638.htm cmd/go: -buildmode=c-shared should work on windows · Issue #11058 · golang/go · GitHub https://github.com/golang/go/i

                                  Big Sky :: Golang で Windows の DLL を作る方法
                                • Golangにおけるinterfaceをつかったテストで mock を書く技法 - haya14busa

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

                                  • DMMにおけるビッグデータ活用の事例紹介!Presto x Golang x Docker を用いたセグメントバナー施策とは? - DMM.comラボエンジニアブログ

                                    2017 - 04 - 06 DMMにおけるビッグデータ活用の事例紹介!Presto x Golang x Docker を用いたセグメントバナー施策とは? 15新卒 勉強会 資料公開 はじめに こんにちは! DMM.com Labo ビッグデータ部の 吉田 です。 2017年3月28日(火) に開催されたレバレジーズ株式会社主催の ヒカ☆ラボ で登壇してきました。 今回は、そこで発表した内容を資料公開も含めて報告させて頂ければと思います! どんな内容だったか? タイトルはこちら。 ビッグデータを使ってバナーを動的表示させたらコンバージョンが 350% 増加した話 atnd.org 弊社ビッグデータ部では、1日あたり2億レコード以上の DMM.com 上でのユーザーの行動ログを中心に、 会員データや、各サービスのコンテンツ情報、地域情報のようなオープンデータを収集し、 データドリブンマーケ

                                      DMMにおけるビッグデータ活用の事例紹介!Presto x Golang x Docker を用いたセグメントバナー施策とは? - DMM.comラボエンジニアブログ
                                    • VS Codeのコンテナ拡張機能でGolang勉強環境を構築してみた

                                      ◆初めに Visual Studio Code Remote – Containersという拡張機能を使って、前から気になってたGo言語の勉強用環境を構築しました。 ◆やってみる 使うものをダウンロードしていきましょう。 ・Visual Studio Code https://azure.microsoft.com/ja-jp/products/visual-studio-code/ ・Visual Studio Code Remote – Containers https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack ・docker https://www.docker.com/ VS Codeでフォルダーを開いて、F1 や Ctrl + Shift +

                                        VS Codeのコンテナ拡張機能でGolang勉強環境を構築してみた
                                      • Big Sky :: 適当な日本人の名前や住所をランダムに作れる gimei を golang に port した。

                                        « lingr で stackverflow を検索出来る bot を golang で書いた。 | Main | Vim scriptで「ソフトウェアエンジニアならば1時間以内に解けなければいけない5つの問題」を解いてみた » willnet/gimei - GitHub gimei は、日本人の名前や、日本の住所をランダムに返すライブラリです。テストの時などに使います。似たようなライブラリにfakerがあります。fakerはとても優れたライブラリで、多言語対応もしていますが、ふりがな(フリガナ)は流石に対応していません。gimei ふりがな(及びフリガナ)に対応しています。 https://github.com/willnet/gimei オリジナルは ruby gems です。 mattn/go-gimei - GitHub golang port of gimei https://

                                          Big Sky :: 適当な日本人の名前や住所をランダムに作れる gimei を golang に port した。
                                        • Big Sky :: 江添さんに簡単に質問出来るコマンドを golang で書いた。

                                          C++er ならみんな見てるいう噂の江添さんの ask.fm。見ているだけも面白いですが、質問もしたくなりますよね。 Ryou Ezoe | ask.fm/EzoeRyou http://ask.fm/EzoeRyou 質問したいだけなのにいちいちブラウザ起動するのもダルいので、コマンドラインから質問を投げられるコマンド「ezoe」を作りました。 mattn/ezoe · GitHub https://github.com/mattn/ezoe インストールは簡単で golang が入ってる状態なら $ go get github.com/mattn/ezoe これだけで ok。使い方も簡単で $ ezoe とすると質問の一覧が色付きで表示される。 しかも「質問ではない」と「自由」がハイライトされるので江添フリークも安心。そして引数を付けて起動すると ask.fm に質問を投げられます。

                                            Big Sky :: 江添さんに簡単に質問出来るコマンドを golang で書いた。
                                          • flurry on Twitter: "情報収集してるときに、ねっとうよく発言を読んでしまうという点では、このひとが移行先として検討しているPythonのほうが酷いと思います。とくに人工知能云々で流行する以前からやってた連中。 あとはGolangやScalaもつらい。は… https://t.co/LIrgkoCd8W"

                                            情報収集してるときに、ねっとうよく発言を読んでしまうという点では、このひとが移行先として検討しているPythonのほうが酷いと思います。とくに人工知能云々で流行する以前からやってた連中。 あとはGolangやScalaもつらい。は… https://t.co/LIrgkoCd8W

                                              flurry on Twitter: "情報収集してるときに、ねっとうよく発言を読んでしまうという点では、このひとが移行先として検討しているPythonのほうが酷いと思います。とくに人工知能云々で流行する以前からやってた連中。 あとはGolangやScalaもつらい。は… https://t.co/LIrgkoCd8W"
                                            • Gobot - Golang framework for robotics, drones, and the Internet of Things (IoT)

                                              Gobot is a framework for robots, drones, and the Internet of Things (IoT), written in the Go programming language Meet The Code Gobot makes controlling robots and devices incredibly simple and fun. All you need to get started is to install Gobot: $ go get -d -u gobot.io/x/gobot/... The "Hello, World" Of Things This program connects to an Arduino, and toggles an LED, every one second. package main

                                              • Big Sky :: golang のサーバで帯域制限したい。

                                                次回予告「並列ダウンロードするHTTPクライアントをバンド幅制限するサーバをGoで実装した」 / “高速でダウンロードできるツールを Go で実装した。 - Qiita” https://t.co/6NfEyJCwbu — Kazuho Oku (@kazuho) July 13, 2016 並列ダウンローダを使うと幾らかサーバに負荷が掛かってしまいます。golang のサーバ側で帯域制限を行う場合には2つ方法があります。 転送量制限する 接続数制限する まずは転送量制限。転送量の制限には throttled が便利です。 GitHub - throttled/throttled: Package throttled implements rate limiting access to resources such as HTTP endpoints. README.md Throttle

                                                  Big Sky :: golang のサーバで帯域制限したい。
                                                • A simple golang web server with basic logging, tracing, health check, graceful shutdown and zero dependencies

                                                  main.go ��Q,�U � w,�U package main import ( "context" "flag" "fmt" "log" "net/http" "os" "os/signal" "sync/atomic" "time" ) type key int const ( requestIDKey key = 0 ) var ( listenAddr string healthy int32 ) func main() { flag.StringVar(&listenAddr, "listen-addr", ":5000", "server listen address") flag.Parse() logger := log.New(os.Stdout, "http: ", log.LstdFlags) logger.Println("Server is starting

                                                    A simple golang web server with basic logging, tracing, health check, graceful shutdown and zero dependencies
                                                  • golang.org/x/syncによる効率的な非同期処理

                                                    2017/09/06 CA.go #2

                                                      golang.org/x/syncによる効率的な非同期処理
                                                    • golang.tokyo#4でGo開発環境Goglandのライブデモを見てきた | メルカリエンジニアリング

                                                      こんにちは、メルカリアッテのAPIチームでGoエンジニアをしている@sonatardです。 この記事は弊社ソウゾウの社員である@tenntennが運営しているgolang.tokyo #4のブログ枠として書いています。 golang.tokyo #4では、ゲストスピーカーとしてJetBrains社のSergey Ignatov氏にご登壇いただきGoglandをライブデモ形式で紹介して頂きました。 メルカリアッテではGoogle App Engine for Go (GAE/Go) を全面的に採用しており、サーバサイドエンジニアの中でもGoglandの利用者が増えています。そこでSergey Ignatov氏に紹介して頂いた機能とソウゾウ エンジニアたちが利用しているお気に入りの機能をまとめてご紹介したいと思います。 ソウゾウがGAE/Goを採用した経緯は@ttsuruokaのatte 開発

                                                        golang.tokyo#4でGo開発環境Goglandのライブデモを見てきた | メルカリエンジニアリング
                                                      • アッテ開発の技術 : Golang と Google App Engine

                                                        2016年4月18日開催のアッテフェスでの発表です。

                                                          アッテ開発の技術 : Golang と Google App Engine
                                                        • Go 1.11 の modules・vgo を試す - 実際に使っていく上で考えないといけないこと #golang | Wantedly Engineer Blog

                                                          日本時間の 8/25 早朝,Go 1.11 がリリースされました 🎉 🎉 https://go.googlesource.com/go/+/go1.11 Go 1.11 には WebAssembly 対応を始めとするド派手な新機能からコアライブラリ・ツールチェインの細かな改善まで,いろいろな変更が入っています.個人的には golang.org/x/tools/go/packages が気になっていました../... がうまく扱える API かな?とか思ってたけど,内部で普通に go list 叩いちゃってるのがかわいい. The latest Go release, version 1.11, arrives six months after Go 1.10. Most of its changes are in the implementation of the toolchain,

                                                            Go 1.11 の modules・vgo を試す - 実際に使っていく上で考えないといけないこと #golang | Wantedly Engineer Blog
                                                          • Big Sky :: golang で HTTP を使った処理を4倍速くする

                                                            I think I just made go-github 4x faster in 4 lines of code (and 4hrs). Always make sure you are reusing connections! https://t.co/ORCv1a4prv — Filippo Valsorda (@FiloSottile) March 27, 2016 go-github という、Google が開発している GitHub API ライブラリがあるのですが、今回 filosottile さんがたった4行のコードで実行速度を4倍にするという pull-request を書きました。 いったいどういう事かというと、golang の json.Decoder を使って http.Response.Body から JSON を読み取ると最後の改行(EOF)が読み込まれずに残

                                                              Big Sky :: golang で HTTP を使った処理を4倍速くする
                                                            • golangで書かれたプログラムのメモリ使用状況を見る - はこべにっき ♨

                                                              golangにはpprof用のプロファイルデータを出力できるライブラリが標準でついてくるので、それらを使うことでメモリの使用状況を調べることができる。中でも、net/http/pprofが手軽で便利だった。 net/http/pprofをプログラムに組み込むことでダイナミックなプロファイル情報をWebブラウザで表示してみることができる。使い方は、ライブラリの解説ページにあるとおりなんだけど、プロファイルを取りたいプログラムで import _ "net/http/pprof" とimportしたあと、main関数などで go func() { log.Println(http.ListenAndServe("localhost:6060", nil)) }() と書いておくと良い。 この状態でプログラムをbuildして実行する。プログラムの実行中に、http://localhost:606

                                                                golangで書かれたプログラムのメモリ使用状況を見る - はこべにっき ♨
                                                              • Golangのcontext.Valueの使い方

                                                                Go1.7でcontextパッケージが標準パッケージに入りしいろいろなところで使われるようになってきた.先日リリースされたGo1.8においてもdatabase/sqlパッケージなどでcontextのサポートが入るなどますます重要なパッケージになっている. “Go1.7のcontextパッケージ”で書いたようにcontextは「キャンセルのためのシグナルの受け渡しの標準的なインターフェース」として主に使われる.ある関数やメソッドの第1引数にcontext.Contextが渡せるようになっていればキャンセルを実行したときにその関数は適切に処理を中断しリソースを解放することを期待する.これはパッケージの作者とその利用者との間のある種の契約のようになっている(パッケージ側でgoroutine作るなというパターンもここで効いてくる). これだけではなくcontext.Contextインターフェースに

                                                                • A Pokémon in Go · Issue #16344 · golang/go

                                                                  You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                    A Pokémon in Go · Issue #16344 · golang/go
                                                                  • Golangで作るFTPプロキシサーバ

                                                                    Go Conference 2018 Springで話した内容です。 話し手は、Golangを利用して、FTPプロキシサーバを開発しています。その際に起こった問題や、Golangにおける複数ソケットを扱う際のテクニックを紹介します。

                                                                      Golangで作るFTPプロキシサーバ
                                                                    • GolangでSSHサーバを作ってみる

                                                                      ユーザが接続先を意識しないSSHプロキシサーバを作っている話

                                                                        GolangでSSHサーバを作ってみる
                                                                      • オブジェクト指向言語としてGolangをやろうとするとハマること - Qiita

                                                                        埋め込み(embedded)に要注意というお話です。あるいは、GolangもC++のようなゼロオーバーヘッドを目指していると考えれば腑に落ちるよね、的な。 Goはオブジェクト指向言語っぽく使うことができます。次のような機能を提供しています。 interfaceを使ったコーディング 埋め込み(embedded)を使った実装継承 インタフェースは次のような感じです。 // ポニーは歩ける type Pony interface { Walk() } // アースポニーも歩けるので、Ponyインタフェースに渡せる type EarthPony struct { } func (ep *EarthPony) Walk() { fmt.Println("歩くよ") } インタフェースはメソッド宣言しかかけません。実装は書けません。でも、定義されたメソッドを持てば、それはすべて「これの仲間だ」という感

                                                                          オブジェクト指向言語としてGolangをやろうとするとハマること - Qiita
                                                                        • Socketプログラミング · Build web application with Golang

                                                                          8.1 Socketプログラミング 多くの低レイヤのネットワークアプリケーションの開発者の目には一切のプログラムがどれもSocketのように映ります。すこし大げさかもしれませんが、だいたいこのようなものです。現在のネットワークプログラミングはほぼすべてにおいてSocketを使用してプログラムされています。このような場面を考えたことはありませんか?毎日ブラウザを開いてページを閲覧する際、ブラウザプロセスはどのようにしてWebサーバと通信を行っているのでしょう?QQを使ってチャットする時、QQプロセスはどのようにしてサーバまたはあなたの友達がいるQQプロセスと通信を行なっているのでしょう?PPstreamを開いてストリーミング映像を見るとき、PPstreamプロセスはどのようにして動画サーバと通信を行っているのでしょう?このように、すべてはSocketに依存して通信を行なっています。ひとつを見

                                                                          • 楽ができるGolangのライブラリ達 - Qiita

                                                                            ライブラリ探すなら基本awesome go見とけばいいけど、いろいろ楽するためという観点で、思い出した順に適当に追記していく。気が向いたらサンプルも書く gojson https://github.com/ChimeraCoder/gojson jsonのデータを渡すとそれに対応するstructを生成してくれる。JSON APIを利用するときに楽ができる。既存APIのリプレイスをGoでやるときとかも良い。 goquery https://github.com/PuerkitoBio/goquery JQueryっぽくhtmlをパースしたり検索したりして楽ができる。自前でhtmlのパースなんか書いてられない。 goreq https://github.com/franela/goreq net/httpパッケージで、httpリクエストを飛ばすのは結構面倒だったりいろんな書き方があったりしてヘ

                                                                              楽ができるGolangのライブラリ達 - Qiita
                                                                            • Big Sky :: Golang で物理ファイルの操作に path/filepath でなく path を使うと爆発します。

                                                                              たぶん逆引きが無いから探せないのかなと思ったので path/filepath にどういう機能があるのか書いておく。 filepath.Join 使って下さい。 / “Go言語でクロスプラットフォーム的にパスとファイル名を結合するには? | 非IT企業に勤める中年サラリーマンのIT日記” https://t.co/ehXCf0u8X9 — 自称mattn (@mattn_jp) October 24, 2017 パスからファイル名を得る filepath.Base を使う。 package main import ( "path/filepath" ) func main() { println(filepath.Base("C:/foo/bar")) } この場合 bar が表示される。 パスからディレクトリ名を得る filepath.Dir を使う。 package main impor

                                                                                Big Sky :: Golang で物理ファイルの操作に path/filepath でなく path を使うと爆発します。
                                                                              • Golangのスケジューラあたりの話 - Qiita

                                                                                はじめに 今年に入ってから仕事でGolang書いてるのでスケジューラあたりについて調べた。ググってもあんまり資料が多くなかったんでまとめる。ソースコードを参照する時はGo 1.9.3を見た。わかりやすさを重視してあえて雑に説明しているところがあるけどご了承ください。 多分間違ってるところあるんで詳しい人は優しく教えてください。 goroutineあたりの基本的な話 goroutineはグリーンスレッド、つまりOSのスレッドは直接使ってない。なので、goroutineを作ることはネイティブスレッドを作る処理よりもはるかにコストが安い。このgoroutineを複数作るとランタイムが勝手にマルチスレッドで実行する。詳細は後述。 また、メインルーチンもgoroutineとして管理される。 スケジューリングの登場人物 重要な登場人物はM, G, Pの3人。 M(Machine) OSのスレッドに対応

                                                                                  Golangのスケジューラあたりの話 - Qiita
                                                                                • Big Sky :: golang の http.Client を速くする

                                                                                  « Windows からも ssh でリモートコマンド実行したい、それ golang で出来るよ | Main | Re: Go でシングルバイナリな Web アプリを開発しているときに webpack --watch をうまいところやる » この記事には幾らか正しくない部分がありました。後で訂正していきますが、ひとまず shogo82148 さんの解説記事も確認下さい。 http.Client はリクエスト毎に名前を引くので連続したアクセスはあまり速くない。 Goのhttp.Clientで名前解決結果cacheする楽な方法ないかな — fujiwara (@fujiwara) December 7, 2016 Go 1.8 からは Resolver が提供されるので、自前で簡単に名前引きのキャッシュを実装出来る。 Go 1.9 だった様です。 Go 1.8 Release Notes -

                                                                                    Big Sky :: golang の http.Client を速くする