タグ

関連タグで絞り込む (287)

タグの絞り込みを解除

Golangに関するy_yukiのブックマーク (467)

  • Hugoでアカデミックなポートフォリオサイト兼ブログをつくってみた - Qiita

    修士以降の学生で研究に取り組んでいると、自分のプロジェクトやpublicationをまとめたシンプルなウェブページが欲しくなってくる。Wordpressやstrikinglyみたいなサービスが出ているが、オリジナルのWebページを作りたいときには制約が多かったり、機能が多すぎたりすることがある。 HugoGo言語で記述された、 スゴイハヤイ静的ウェブジェネレータである。 記事やプロジェクトなどを Markdown記法 で記述することで投稿したり更新したりできるため、普段mdでノート取ってる方やQiitaの諸兄・諸姉には非常に使い勝手のいいWebジェネレータであると思う。 今回は Academic テーマをベースにオリジナルページを作成してみた。 ウェブサイトはこちら : web 使い方(初めての人へ) https://gohugo.io/getting-started/quick-sta

    Hugoでアカデミックなポートフォリオサイト兼ブログをつくってみた - Qiita
  • Goへの誤解について

    よくGoで誤解されるポイントについて個人的な見解を書いておきます。 今回の記事はGoアドベントカレンダー2017 その3の20日目の記事です。 使ってないパッケージがコンパイルエラーって面倒じゃね? さっさとgoimportsかgoreturnsを保存時に自動実行するエディタ環境を使いましょう。 gofmtも一緒に実行されていいことずくめですよ! インターフェースがnil判定出来ないパターンがあるのダメじゃん? 最初は私もそう思いました。しかし、typed-nilがnilリテラルと比較できなくなったのは 「nil判定サボったままinterface型に変換した」からでサボらなければ全く問題にならないのです。 map,sliceが不便? map,sliceはメソッドが一切ありません。 極論をいうとGoのプリミティブ型みたいなものなのです。 ユーザーが欲しいものはmapやsliceを駆使して各自

  • Big Sky :: 簡単に goroutine の実行個数を制限する方法

    Go は簡単に軽量スレッドが起動できるのがウリなのだけど、その使い方が難しいと思われているきらいがある。 Goへの誤解について - GolangRdyJp よくGoで誤解されるポイントについて個人的な見解を書いておきます。 今回の記事は Goアドベントカレンダー2017 その3 の20日目の記事です。 使ってないパッケージがコンパイルエラーって面倒じゃね... http://golang.rdy.jp/2017/12/20/go-fact/ 慣れていない間は、処理を並行化する際に「どうやったら並行化できるんだ」が分からない事があるのだと思う。 Big Sky :: golang の channel を使ったテクニックあれこれ golang の channel は他の言語に見ない独特のパラダイムを開発者に提供します。 単純にスレッド間でメッセージングをするだけでもC言語で書けばそこそこの量に

    Big Sky :: 簡単に goroutine の実行個数を制限する方法
  • Goでテストを書く(テストの実装パターン集) - Qiita

    Goでテストを書くお話です。 基的なところから、応用的なテストの書き方(パターン?)をまとめておくことにしました。 ポイントを先に列挙します: テストのエラーメッセージは丁寧に書こう テーブルテストを活用してパターンを整理しながら網羅しよう t.Runをつかって大きなテストを分割しよう t.Helperをつかってテストエラーの箇所をわかりやすくしよう テスト用のデータは testdata ディレクトリに置こう Setup/Teardownをうまく書いてテストの見通しをよくしよう 等 では、見ていきましょう。

    Goでテストを書く(テストの実装パターン集) - Qiita
  • moqでinterfaceのMockを作る - nametake-blog

    この記事は Go3 Advent Calendar 2017の18日目の記事です。 moqでMockを作る Goでアプリケーションを書いているとinterfaceにMockを投げ込みたくなる瞬間があると思います。 たとえば、以下のようなコードのテストを書きたい場合ですね。 Userを取りに行く処理が外部に依存しているためにClient interfaceを切っていて、それをApplication構造体が持っています。 type User struct { ID int FirstName string LastName string } type Client interface { GetAllUser() ([]*User, error) } type Application struct { Client Client } func (a *Application) FilterLa

    moqでinterfaceのMockを作る - nametake-blog
  • ええっ!? 文字列で書くの!? ログレベル付きロガーhashicorp/logutilsのご紹介 - Qiita

    全世界100万人のコンパイルエラーラバーの皆さんこんばんは、この記事はGo Advent Calendar 2017の18日目の記事です。 標準パッケージのlog Goで作るものはミドルウェアだったり、Webアプリケーションだったり、CLIツールだったり様々だと思いますが、ちょっと凝ったことをするとついてくるものといえばロギングですよね。Goにはlogという標準のログライブラリがありますが、 標準パッケージなのでimport "log"だけで使える インターフェイスがシンプル。だいたいfmt 複数goroutineから扱っても混ざらない そのまま使っても時間が出る などなど、最低限の実用性があります。ただ、他の言語のロガーと比べると、 ログレベル 構造付きログ などの機能が不足していると言えます。 よく使われているロガー そもそもこの記事を書くきっかけとなったのが、Go Conferenc

    ええっ!? 文字列で書くの!? ログレベル付きロガーhashicorp/logutilsのご紹介 - Qiita
  • Go言語のHTTPサーバのテスト事始め - Qiita

    この記事は、Go2 Advent Calendar 2017の15日目の記事です。 最初に Go言語のHTTPサーバに対してテストを実装する方法を簡単にですがご紹介したいと思います。 今回はサーバ側の実装としてechoを利用していますが、他のフレームワークを利用していても同様にテストすることが可能です。 今回のテスト対象のHTTPサーバは以下の通りです。 package main import ( "net/http" "github.com/labstack/echo" ) const helloMessage = "Hello, World!" func main() { router := NewRouter() router.Start(":8080") } func NewRouter() *echo.Echo { e := echo.New() e.GET("/hello",

    Go言語のHTTPサーバのテスト事始め - Qiita
  • Goを遅くしないための地味な話 – haraheniku – Medium

    この記事はGunosy Advent Calendar 2017の13日目の記事です。 広告技術部の@harahenikuです。 主な業務はGoによる広告配信APIの開発です。たまにPythonとかDjangoとかもやってます。 Goは速いですが遅いコードをかけば当然遅くなってしまいます。 この記事ではGoのプログラムを遅くしないために、実際に行ったチューニングを幾つか紹介したいと思います。 スライスの処理長さを指定するスライスの初期化は次のようなコードはappendでallocが発生します。 feature := []VectorEntry{} for i, v := range vec { e := VectorEntry{ ID: i+stride, Value: v, } feature = append(feature, e) }appendでallocされないように、makeで

  • 動的な要素を持つJSONをいい感じにUnmarshalする - Qiita

    はじめに この記事はGo Advent Calendar 2017の12日目の記事です。 JSON APIのクライアントを作ってるとき、ある要素が動的な値を取るJSONをUnmarshalしたいときがあります。 例えば下記のようなJSONです。 shapeという要素の値が動的に変わるJSONを仮定してます。

    動的な要素を持つJSONをいい感じにUnmarshalする - Qiita
  • 闇のBashををGoに置き換える技術 / golang.tokyo #11 // Speaker Deck

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

    闇のBashををGoに置き換える技術 / golang.tokyo #11 // Speaker Deck
  • Goでマイクロサービスやってみる〜gokit〜 - Qiita

    はじめに 最近Goを使っているので、自分の興味分野であったマイクロサービスをGoでどうやって実現できるか調べてみました。といってもそんなに深い内容ではありません。gokitのチュートリアルに毛が生えた程度です。すごい簡単なアプリが出てきますが、かなりいい加減なので先に謝っておきます。真似しないように。 それではつらつらと。 Gokitについて A toolkit for microservices と書いてありましたのでその通りなんだと思います。 他にもマイクロサービス用のライブラリはあるらしいですが、スターの数が8500(2017年12月)と圧倒的ぽかったので、触ってみました。 今回作ってみたサンプルアプリについて すごくシンプルなアプリです。 全ソースコード https://github.com/miya-masa/go-micro-sample UserServiceとProduct

    Goでマイクロサービスやってみる〜gokit〜 - Qiita
  • GoのためのMakefile入門 - Qiita

    Goのエントリを見ているとたまにMakefileが出てくるけど何それ?という方に。 Makefileってなに? Wikipediaに A makefile is a file containing a set of directives used with the make build automation tool. とあるように、主な目的はプログラムのビルドをするための命令群を書いたファイルということになります。CやC++の界隈でよく使われているそうです。 Makefileはそもそもmakeコマンドに渡して実行させるためのものです。makeコマンドの実体は普通GNU makeというソフトウェアだそうで、MacLinuxなら標準で使えます。

    GoのためのMakefile入門 - Qiita
  • 設定ファイルとしての main.go — KaoriYa

    「設定ファイルとしての main.go」というポリシーを解説し、 そのポリシーを適用した自作のツールカタログ koron/gtc の事例を紹介します。 この記事は Go Advent Calendar 2017 (その1) 10日めの参加記事です。 なお Go Advent Calendar 2017 はその4まであります。 設定ファイルとしての main.go golang を書かれる皆さんは、 golang でツールを書いた際にその設定ファイルはどうしているでしょうか? オーソドックスに JSON でしょうか? 可読性高く YAML? はたまた TOML でしょうか。 この記事では「設定ファイルとしての main.go」というポリシーを紹介します。 英語で書くと main.go as a configuration ですかね。 なので以下では仮に MaaC と表記します。 このポリシー

  • golangでtwitterクライアントを作ってます - チラシ裏日記上等!!新館

    これは Go4 Advent Calendar 2017 - Qiita 6日目の記事です。 最近仕事golang を書くことが増えました。やっていくうちに自分でも何か作ってみたくなり、最近自分のためのtwitterクライアントをちまちまと作っています。どうでもいい話ですが、自分で何かを作ろうと思ったら大体Twitter関連です。Twitter好きなんですよね。 今回はその作ったものの紹介と、利用したライブラリについてつらつらと書いていきます。 作ったもの 利用したライブラリ等 cobra 〜コマンドラインツールを作るためのフレームワーク〜 go-twitterTwitterAPIのラッパー〜 color 〜ターミナル上に出力する文字列に色を付けるライブラリ〜 viper 〜設定を読み込むためのライブラリ〜 感想 作ったもの 作ったものは tt という Twitter クライアン

    golangでtwitterクライアントを作ってます - チラシ裏日記上等!!新館
  • Big Sky :: Golang で HTTP コンテンツの charset 判定をするには

    « Golangarchive/zip でタイムゾーンの問題とファイル名の問題が解決した。 | Main | Vim の :terminal の中から外の Vim を操る方法 » この記事は Go Advent Calendar 2017 の記事... ではありません 追記あり 実はあったりします。 Golang で URL から charset を取得するのを書いたのですが、他にもっとよい方法があるとおもうのです... - Qiita 他によい方法がある気がするのですが...わからないので、書いてみました。 https://qiita.com/mochizukikotaro/items/ddc0c6b1b98cd33f451e golang.org/x/net/html/charset を使うと良いです。 package main import ( "bufio" "fmt" "l

    Big Sky :: Golang で HTTP コンテンツの charset 判定をするには
  • Goのパッケージ構成の失敗遍歴と現状確認

    この記事は Gunosy Advent Calendar 2017の5日目の記事です。前回の記事はGunosyのパーソナライズを支える技術 -ワークフロー編-でした。 GoAPIを書くときの問題僕の在籍するGunosyはGoを昔(?)から番採用しておりまして、ノウハウも潤沢に溜まっている企業だと言えます。 しかし、contextの扱いやベストなパッケージ構成、テスト、net/httpでAPIを書くノウハウなどなど、迷うことは多々あります。 これは弊社特有の事情ではなく、Goのサーバーサイドエンジニア全員にとっての問題です。中でも、パッケージ構成をどうすればいいのか(相互参照せずに快適に開発を進められるパッケージ構成とは)を見つけるのは結構難しく、各々のチームにお任せ、という状況です。 今回は上記の問題のうち、パッケージ構成に踏みこんで見たいとおもいます。会社でもよくパッケージ構成をどう

    Goのパッケージ構成の失敗遍歴と現状確認
  • GOのORM sqlboiler 使ってみた  - Qiita

    この記事はGo2 Advent Calendar 2017の3日目の記事です。 良い機会だったので初投稿してみました。 普段ORMgormを使用しているのだがsqlboilerはパフォーマンスがgormに比べてパフォーマンスがよいという話を聞いて実際に使ってみたのでまとめを記事にしました。 sqlboilerとは データベーススキーマに合わせたGOORMを生成ツールです。 gormとかとは違い、コードファーストではなくデータベースファーストのORMとなってます。 つまりどういうことかというと、データベーススキーマを先に作成しそこからgoのコードを生成してくれます。 準備編 今回Migrationツールのgooseを使用してデータベーススキーマを管理していきます。 依存解決ツールはdepを使います。(説明はしませんが) sqlboilerとgooseをインストール # sqlboiler

    GOのORM sqlboiler 使ってみた  - Qiita
  • Go の channel 処理パターン集 | Hori Blog

    Hori Blogフリーランスでバックエンドエンジニアとして活動している Ryota Hori のブログです。 最近はテック系記事より雑記ブログ気味。 この記事は Go Advent Calendar 2017 の 1 日目の記事です。 Go の長所に goroutine による非同期処理がありますが、どうしても channel の取り回しで黒魔術化しがちです。少しでも闇を減らしていきたいので、 channel らへんの取り回しについてパターンをまとめました。チートシート的に使えれば嬉しいです。 Go の channel の基礎 入門資料として使いたいので、題に入る前にざっくり基礎を。 定義のパターン channel には capacity という概念があります。 capacity は channel 内でバッファリングしておける容量のことで、 capacity に空きが無い場合は送信側

    Go の channel 処理パターン集 | Hori Blog
  • 100万回のWebSocket接続とGo | POSTD

    こんにちは。私はSergey Kamardin(セルゲイ・カマルディン)です。Mail.Ru(ロシアの電子メールサービス会社)で開発者をしています。 この記事では、どのように私がGoを使って高負荷対応のWebSocketサーバを開発したかについて説明したいと思っています。 パフォーマンス最適化のアイデアやテクニックを通じて、WebSocketの知識はあるもののGoについてはほとんど知らないという方のお役に立てれば幸いです。 1. はじめに まずは開発に至った経緯について、どうして私たちがこのサーバを必要としたのかを説明しておきましょう。 Mail.Ruには多くのステートフルなシステムがあります。ユーザのeメール保存もその1つです。システム内、およびシステムイベントの状態変更を追跡する方法にはいくつかの種類がありますが、それらは主に状態変更に関するシステム通知、または周期的なシステムのポーリ

    100万回のWebSocket接続とGo | POSTD
  • golang のレイヤ構造において、他のコードに影響なくインフラレイヤのデータソース実装を差し替えることは可能か? - pospomeのプログラミング日記

    最近、golang のレイヤ構造において、他のコードに影響なくインフラレイヤのデータソース実装を差し替えることは可能か? という質問を受けた。 回答時間が限られている中で質問を受けたので、 「現実的には難しい」という雑な回答しかできなかった。 さすがに雑すぎるなと思ったので、 自分なりの回答をちゃんと残そうと思う。 影響を受ける対象となるコードは? MySQL -> PostgresSQL への差し替え MySQL -> WebAPI への差し替え インフラレイヤにDB依存のコードをまるっと実装してしまう DDDの場合 独自の接続オブジェクトを作る DDD & IDDDのサンプルはどうなっているか? 差し替える必要はあるのか? まとめ 影響を受ける対象となるコードは?golang のレイヤ構造において、他のコードに影響なくインフラレイヤのデータソース実装を差し替えることは可能か? とい

    golang のレイヤ構造において、他のコードに影響なくインフラレイヤのデータソース実装を差し替えることは可能か? - pospomeのプログラミング日記