タグ

golangに関するmatsukazのブックマーク (31)

  • 他言語プログラマが最低限、気にすべきGoのネーミングルール

    概要 タイトルの通り、他言語から入門した人が最低限気にするべき、ネーミングルールをまとめました。 対象読者 Goの基構文を理解している人を対象読者としています。 この記事で説明すること、説明しないこと 説明すること Goのファイル名、変数名などの名前付けに関するルールや慣例などを説明します。 説明しないこと 名前付け以外で気をつけるべきGoの書き方[1] がいくつかあります。 しかし、それらに関してはこの記事では説明しません。 筆者のバックグラウンド プログラマ歴はもうすぐ8年程で、Goの他には以下のような言語の経験があります。 JavaScript TypeScript PHP Ruby Java Scala Goは少し前に書いて、一時期書かない時期が続いていましたが、最近また書いています。 トータルするとGoの経験は1年半程度です。 意識すべき名前付けルール package名 利用し

    他言語プログラマが最低限、気にすべきGoのネーミングルール
    matsukaz
    matsukaz 2021/03/17
  • 【GO】gin+Reactのルーティング | Narumium Blog

    Golang製Web Framework「gin」とjavascriptライブラリ「React」を合わせてウェブサービスを作ることを考えます。 ルーティング部分でちょっと詰まったので覚書き。 ファイルサーバーとしてginを動かす まずginでファイルを返すにはStaticを使う。 r:= gin.Default() //フォルダを指定 r.Static("/assets", "./assets") //ファイルシステムを指定 //シングルバイナリにしてる時など r.StaticFS("/assetfs", statikFS) //ファイル単体を指定 r.StaticFile("/some.file", "./assets/favicon.png")

    【GO】gin+Reactのルーティング | Narumium Blog
    matsukaz
    matsukaz 2020/06/25
  • Go で書いた CLI ツールのリリースは GoReleaser と GitHub Actions で個人的には決まり - tellme.tokyo

    Go で書いた CLI ツールのリリースは GoReleaser と GitHub Actions で個人的には決まり February 4, 2020 lt;dr GoReleaser と GitHub Actions を使うと簡単にビルドしたバイナリを作ってアップロードできる。 2つの YAML を書いてリポジトリにコミットする .github/workflows/release.yml .goreleaser.yml git tag して push する バイナリがリリースされる 専用のツールをローカルにインストールする必要はない。 題 前に、Go のコマンドラインツールを簡単にリリースする | tellme.tokyo というブログを書いた。 それよりももっと楽になったので紹介する。 基的にこのページで紹介する方法では 2 つの YAML をリポジトリに置くだけで終わる。 ロー

    Go で書いた CLI ツールのリリースは GoReleaser と GitHub Actions で個人的には決まり - tellme.tokyo
    matsukaz
    matsukaz 2020/02/04
  • Go言語の思想とエウレカでの5年間の活用

    こんにちは、こんばんは。CTO の kaneshin です。エンジニア組織のマネジメントに多く時間を割いていますが、技術的な方面では GoGCP を掛け合わせて Nature Remo + Go + Cloud Functions + BQ を駆使して、部屋の温度・湿度・照度や人体センターの検知を趣味で少しずつ開発しています。 クラウドサービスをはじめとしたマネージドサービスが主流な界隈にとって、今までアプリケーションの責務として実装していたところをマネージドサービスに責務を委譲することができたりするので、アプリケーションを複雑に実装しなくて済むようになっていますし、保守・運用の観点からもそのような設計方針をよく目につくようになりました。 例えばバッチ処理でデータを ETL 処理の設計を責務分割するのは良い例でしょう。 Data Transformation with Cloud D

    Go言語の思想とエウレカでの5年間の活用
    matsukaz
    matsukaz 2019/12/19
  • Go の命名規則 | micnncim

    記事は Go Advent Calendar 2019 11 日目の記事です。 Go はシンプルな言語機能・シンタックスが特徴であり、命名規則にもそのシンプルさが表れています。 記事では、公式や著名な Go エンジニア、OSS などから見られる Go らしい命名規則を紹介します。 今更なテーマかもしれませんが、意外にも公私共々で命名規則が意識されていないコードを時折見かけるので、自戒も込めて記します。 誤った内容があれば Twitter でご指摘いただければと思います。 パッケージ名簡潔にするEffective Go では、short, concise, evocative なパッケージ名が望ましいとされます。 これはパッケージ名に限らずほとんどあらゆる命名において役立つ指針だと思います。 また、「パッケージ名は一言で何をするかを表すエレベーターピッチだ」という Dave Cheney

    Go の命名規則 | micnncim
    matsukaz
    matsukaz 2019/12/12
  • プログラミング言語 Go のススメ

    プログラミング言語 Go のススメ DevFest Osaka 2019

    matsukaz
    matsukaz 2019/12/09
  • DBMSをGoで実装してみた - Sansan Tech Blog

    こんにちは。プロダクト開発部の荒川 id:ad-sho-loko です。突然ですが、皆さんはこんな疑問を持ったことはありませんか? データベースの内部実装はどうなっているのか? トランザクションとはどのようなアルゴリズムで実現されているのか? NoSQLが遅いのはなぜか? 古典的なデータベースとは内部的にどのように違うの? データベースを何かしらの形で利用しているのにも関わらず、意外と内部の仕組みを理解していない場合が多いかと思います。僕もそうです。*1 しかし、エンジニアたるもの、その仕組みを知ることは非常に重要です。僕もデータベースについて勉強しようといくつかのやサイトを調べていたのですが、なかでもCMU(カーネギーメロン大学)のDatabase System Groupがアップロードしている講義が最も勉強になりました。 www.youtube.com そしてブログでは、上記の講義

    DBMSをGoで実装してみた - Sansan Tech Blog
    matsukaz
    matsukaz 2019/10/25
  • Go 言語の値レシーバとポインタレシーバ

    「レシーバ」とはGo 言語はある種のオブジェクト指向プログラミング (OOP) 言語であり、 OOP 言語の慣例通り、メソッドを呼び出される対象のことを「レシーバ」と呼びます。 ちなみになぜ「レシーバ」と呼ぶのかというと、昔の OOP 言語の文脈ではメソッド呼び出しのことを「メッセージの送信」と言い、メソッドを呼び出される側は「メッセージの受信側」だからです。 「値レシーバ」と「ポインタレシーバ」Go 言語では「値」と「ポインタ」が明示的に区別されているため、たとえばある構造体に対してメソッドを定義する場合でも、「値型」に対する定義なのか「ポインタ型」に対する定義なのかはっきりと区別しなければなりません。それぞれについて簡単に説明します。 値レシーバ「値型」に対してメソッド定義されたものが「値レシーバ」です。 Go 言語では構造体は値なので、以下の例では Person という値型に対して

    matsukaz
    matsukaz 2019/08/22
  • tmrts.com

    tmrts.com 2023 著作権. 不許複製 プライバシーポリシー

    matsukaz
    matsukaz 2019/04/19
  • JSON-to-Go: Convert JSON to Go instantly

    This tool instantly converts JSON into a Go type definition. Paste a JSON structure on the left and the equivalent Go type will be generated to the right, which you can paste into your program. The script has to make some assumptions, so double-check the output! For an example, try converting JSON from the SmartyStreets API or the GitHub API. © 2015 Matt Holt (@mholt6) • View on GitHub • Dark mode

    JSON-to-Go: Convert JSON to Go instantly
    matsukaz
    matsukaz 2019/03/18
  • Practical Go: Real world advice for writing maintainable Go programs

    This is a workshop style presentation, I’m going to dispense with the usual slide deck and we’ll work directly from the document which you can take away with you today.

    matsukaz
    matsukaz 2019/02/22
  • goroutineはなぜ軽量なのか - Carpe Diem

    概要 以前の記事で christina04.hatenablog.com Goはスレッドよりはるかに軽量なgoroutineでC10K問題を解決する、という話をしましたが、goroutineが軽量なのはなぜか?という理由を深掘りしたことがなかったのでしてみました。 環境 golang 1.11.1 Darwin 17.7.0 軽量と呼ばれる理由は2つ 大きく分けると以下の2つのポイントがあります スレッドに比べてメモリ使用量が低い スイッチングコストが低い それぞれ説明していきます。 goroutineがスレッドに比べてメモリ使用量が低いのはなぜか スタックとヒープのメモリの使い方を理解すると分かります。 ヒープはメモリの下層、プログラムコードのすぐ上にあり、上に向かって成長します。一方スタックは仮想アドレス空間の一番上にあり、徐々に下に成長していきます。 ref: イベントループなしでの

    goroutineはなぜ軽量なのか - Carpe Diem
    matsukaz
    matsukaz 2018/11/25
  • Goでクリーンアーキテクチャを試す | POSTD

    依存がなく、テスト可能であり、クリーン。 Uncle Bobのクリーンアーキテクチャの概念を読んだので、これを私はGoで実装してみたいと思います。このアーキテクチャは、自分たちの会社である Kurio – App Berita Indonesia で使っていたものに似ていますが、少し違っています。大きな違いはなく、概念は一緒なのですが、フォルダ構造が違っています。 サンプルのプロジェクトとして、記事をCRUDで管理するリポジトリを https://github.com/bxcodec/go-clean-arch にpushしてあります。 * 免責条項 ここで使われているどのライブラリあるいはフレームワークも、利用を特別推奨しているものではありませんので、ご自身あるいはサードパーティによる同じ機能のものと入れ替えることが可能です。 基的な考え方 ご存知のように、クリーンアーキテクチャで設計

    Goでクリーンアーキテクチャを試す | POSTD
    matsukaz
    matsukaz 2018/01/15
  • Mac OS X で Golang に入門してみる - CUBE SUGAR CONTAINER

    以前から Golang (Go 言語) にはポスト C 言語として興味があった。 マシン語を出力できる低レイヤー性にもかかわらず、スクリプト言語に近い記述しやすさも併せ持つというのはなかなかに魅力的だ。 今回はその Golang に関する概念を調べつつ開発環境を整えていくことにする。 環境は表題の通り Mac OS X を使っている。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.10.5 BuildVersion: 14F27 Golang をインストールする まずは Golang は Homebrew を使ってインストールする。 Homebrew が入っていない場合には、あらかじめ入れておこう。 $ brew install go これで Golang に関する様々な操作を行うことのできる go コマンドが使えるようになった。 $

    Mac OS X で Golang に入門してみる - CUBE SUGAR CONTAINER
    matsukaz
    matsukaz 2017/12/06
  • Go言語を使ってみて、個人的に引っかかったところと対処法。 | 株式会社ヌーラボ(Nulab inc.)

    こんにちは Backlog 開発チームの下川です。現在、Backlogは日語版と英語版で分けていたドメインをbacklog.comに統合するプロジェクトを進めています。その一環で内部的に使用するAPIサーバーの実装に Go言語 を利用することになりました。過去に Go言語 を少しだけ使っていた筆者ですが、今回格的に使ってみて引っかかった点とその対策を列挙してみました。 要約 開発は基的にワークスペースの下でする インターフェイスをポインタ渡ししない 標準のerrorsパッケージが物足りなければgithub.com/pkg/errorsを使ってみる エラーの種類で分岐する方法はいろいろあるが、唯一の解はない for文の入力に飽きたらIDEのテンプレート機能を活用してみる 必ずワークスペースの下で開発するものなのか Goにはワークスペースというものがあります。ワークスペースはディレクトリ

    Go言語を使ってみて、個人的に引っかかったところと対処法。 | 株式会社ヌーラボ(Nulab inc.)
    matsukaz
    matsukaz 2017/09/06
  • Go で s3-edit という CLI アプリケーションを作った | tsub's blog

    最近 Rust を少し学んでいたが、難しくて少し挫折しかけたのと、結局仕事への導入を考えるなら Go のほうが既に書ける人が何人かいる、というのもあり Go を書き始めた。 手初めてに欲しい CLI アプリケーションがあったのでそれをサクッと Go で書いてみた。 tsub/s3-edit: Edit directly a file on Amazon S3 モチベーション 仕事で S3 に環境変数を置いておいてそれを開発環境なり番環境なりで使うことがあるのだが、そのファイルを編集する際に aws-cli を使って以下のコマンドを叩くのが面倒だった。 $ aws s3 cp s3://mybucket/myenvfile ./ # エディタでファイルを編集 $ nvim myenvfile $ aws s3 cp myenvfile s3://mybucket/myenvfile そこで

    Go で s3-edit という CLI アプリケーションを作った | tsub's blog
    matsukaz
    matsukaz 2017/09/06
  • GoConで発表してきたのでついでにruntime以下の知識をまとめていく #golang #goroutine - niconegoto Blog

    3/25に行われたGoConで"How Communicating Sequential Goroutines Work"という発表をしてきました。 当初僕はCommunicating Sequential Processesについての話しをする予定だったのですが、時間内にとても発表できそうな内容ではなかったため、Concurrency全般についての話をしました。 そのため、ここではその際触れられなかったgoroutineの実装の話しやCSPの話しなどを含めてGoのruntimeについて何回かに分けてまとめていきたいと思います。今回は主にgoroutineについてです。 GoのConcurrency goroutineの説明に入る前にざっくりGoのConcurrencyについて説明します。 以下、GoConでの発表スライドにざっくりと沿いながら書いていきます。 speakerdeck.co

    GoConで発表してきたのでついでにruntime以下の知識をまとめていく #golang #goroutine - niconegoto Blog
    matsukaz
    matsukaz 2017/04/11
  • Go 言語で Apache Bench (ab) を実装してみた - takatoshiono's blog

    Go 言語で Apache Bench (ab) を実装してみた。 https://github.com/takatoshiono/go-ab なぜか 以前、wc コマンドを実装した。その時に ab も候補に入っていたけど、ab は http 通信をするプログラムなので、より単純な wc を選択したのだった。その次に何やるか、ということで http クライアントのコードを書く練習になりそうな ab を実装してみることにした。 期間は2016年10月から1ヶ月くらいやったあと、2ヶ月くらいブランクがあって、2017年1月に再開して一ヶ月くらいやっていた。コツコツとよく続いたと思う。 Apache Bench (ab) とは Apache Bench (ab) は HTTP サーバーの性能を測定するためのプログラムでシングルスレッドで動作する。Apache HTTP サーバーのソースコードに含

    Go 言語で Apache Bench (ab) を実装してみた - takatoshiono's blog
    matsukaz
    matsukaz 2017/02/06
  • GoのためのGo

    Go言語はシンプルさを念頭にデザインされた言語です。仕様は単純明瞭さのために小さく収められていますが、そのため表現力に欠けているとか、コードが冗長になるという印象を持つ人も多いでしょう。有名なところでは、ジェネリクスや例外といった機能が(今のところ)存在しないことが問題にされることが多いようです。 一般に、ソフトウェアエンジニアリングというものは書かれる言語だけに依るものではありません。視点を拡げてGoを取りまくツール群を含めて見てみると、go fmt や goimports といったツールが広く使われていること、また go generate コマンドの存在などを見ても、Goという言語には、人間のプログラミングを機械によってさまざまな面から補助しようという態度があります。

    matsukaz
    matsukaz 2017/01/28
  • Big Sky :: golang オフィシャル謹製のパッケージ依存解決ツール「dep」

    « Re: Go でシングルバイナリな Web アプリを開発しているときに webpack --watch をうまいところやる | Main | Ruby の a = a + 1 はなぜ undefined method '+' for nil:NilClass なのか » golang にはパッケージマネージャが無数にあります。 PackageManagementTools · golang/go Wiki · GitHub Home Articles Blogs Books BoundingResourceUse cgo ChromeOS CodeReview CodeReviewComments CodeTools C... https://github.com/golang/go/wiki/PackageManagementTools 僕もその一つの gom というのを開発している

    Big Sky :: golang オフィシャル謹製のパッケージ依存解決ツール「dep」
    matsukaz
    matsukaz 2017/01/25