タグ

golangに関するsukka9のブックマーク (56)

  • Japanese Version - 100 Go Mistakes and How to Avoid Them

    Go Mistakes Book Details Go言語でありがちな間違い このページは『100 Go Mistakes』の内容をまとめたものです。一方で、コミュニティに開かれたページでもあります。「ありがちな間違い」が新たに追加されるべきだとお考えでしたら community mistake issue を作成してください。 Jobs Is your company hiring? Sponsor the Japanese version of this repository and let a significant audience of Go developers (~1k unique visitors per week) know about your opportunities in this section. 注意 現在、大幅に多くのコンテンツを追加して強化している新しい

    Japanese Version - 100 Go Mistakes and How to Avoid Them
  • Clean Architectureを読んだまま実装してみた(TypeScript, Go)

    Why? Clean Architectureを通読してみたが、抽象論が多いのでやっぱり書いてみないとな、と思った次第。 いろいろな方のClean Architectureの記事があるものの、当方Typescripterなので馴染む言語で写経すると理解が深まるだろう。 Assumption フレームワーク・ライブラリ非依存。Clean Architecture の構造だけ再現するので、サーバフレームワークやORMなどは使用しない。 命名はClean Architectureに出てきたままを心がける。一部、原文でも表現がブレているのは都合よく拝借。 Clean Architecture Overview Clean Architectureといえばこの図。 最重要エンティティであるビジネスロジックを中心に、アプリケーションロジック、インターフェースアダプター、フレームワークやDBの順で依存方

    Clean Architectureを読んだまま実装してみた(TypeScript, Go)
  • 【ハンズオン】Next.js × Go × AWSでJWT認証付きGraphQLアプリとCI/CDを構築してみよう - Qiita

    ■ご案内■ 内容は合計4つの記事で構成されています。 【環境構築編】  👈いまここです 【Next.js編】 【Go編】 【AWS編】 これからも頑張ってハンズオン系の記事を書いていきたいと思っているので、いいねっと思って頂けたらLGTM押していただけると励みになります! 作成に至った背景 普段エンジニアの皆さんは、業務用に新しいライブラリやツールを調べたり、趣味で新しい言語やフレームワークを使ってサンプルアプリを作ってみる方は多いと思います。 エンジニアになって歴は浅いものの、私も例に違わず、業務前後や休日を使って趣味の延長でコードを書いていました。 ある日、ふと自分のGitHubリポジトリを見返してみると、それなりに多くの"インプットの跡"に気づきました。 "使えそうなプロジェクトを合体"してみれば、それなりのボリュームにもなるし、何よりGitHubの藻屑となりえたこの子達にも少し

    【ハンズオン】Next.js × Go × AWSでJWT認証付きGraphQLアプリとCI/CDを構築してみよう - Qiita
  • proto - A multi-language version manager | moonrepo

    A version manager for all your favorite languages and tools. A unified toolchain. Supports Bun, Deno, Node (npm, pnpm, yarn), Rust, Go, and more.

  • A Tour of Go

    A Tour of Go

  • とほほのGo言語入門 - とほほのWWW入門

    概要 Go言語とは バージョン インストール Hello world Print・Println・Printf 変数(var) 定数(const) コメント 行末のセミコロン キーワード 演算子 型(type) 型変換 リテラル・値 エスケープシーケンス 配列(array) スライス(slice) マップ(map) 制御構文 If文(if) Switch文(switch) For文(for) Goto文(goto) 関数(func) 構造体(struct) インタフェース(interface) interface {}型 ポインタ(pointer) 領域確保(new) 遅延実行(defer) インポート(import) モジュール(module) パッケージ(package) ワークスペース(workspace) ゴルーチン(Goroutine) リンク 概要 Go言語とは Google

  • Vugu

    Build a web front-end in Go that runs in your browser, today. Pure Go. Targets WebAssembly (and/or server). Modern browsers supported. Experimental, for now. Really cool. Vugu: A modern UI library for Go+WebAssembly Inspired by tools like Vue, React and Angular, Vugu is a library written in Go and able to run in modern browsers using WebAssembly. PLEASE NOTE: This is experimental technology! (read

  • イケてないのに人気がある golang vs イケてるのに人気がない Nim - 強まっていこう

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

    イケてないのに人気がある golang vs イケてるのに人気がない Nim - 強まっていこう
  • GitHub - goby-lang/goby: Goby - Yet another programming language written in 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

    GitHub - goby-lang/goby: Goby - Yet another programming language written in Go
  • net/httpで作るGo APIサーバー #1

    GoにはWebサービスを作るためのフレームワークがそれなりの数存在している。 Awesome Go - Web Frameworks ただ、そこまでデファクトというものがあるわけではなく、他の言語と比べると少々乱立気味なのではないかな、という感想を持っている。この記事ではnet/httpを主軸に据え、取替可能な部品となるライブラリを利用してAPIサーバーを作成する方法を紹介する。 長くなりそうなので記事を分けて紹介する予定だけど、今日はアプリケーショングローバルな値をどのように保持するのが良いのかについて書く。 アプリケーショングローバルな値 APIサーバーにはそのアプリケーションにおいてグローバルな値を保持しておきたいケースが多い。例えばAPIサーバーの設定情報だったり、外部APIにアクセスするクライアントだったり、DBへのコネクションだったり、loggerだったり。そういったものを初期

  • Goのarrayとsliceを理解するときがきた - Qiita

    対象 sliceしか使わないのでarrayのことは知らなくてもいいと思っているGopher 内容 arrayを理解するとsliceをもっと理解できる 参考 以下のページを主に参考にしたのでちゃんと知りたい場合はこっちを読んだほうがいい The Go Blog - Go Slices: usage and internals The Go Blog - Arrays, slices (and strings): The mechanics of 'append' きっかけ サイズを指定して宣言したsliceが引数の型チェックに引っかかり悩む、というおそらくは初歩的なつまづきをしてしまった。 func main() { s := [3]int{} takeSlice(s) // Error: cannot use s(type [3]int) as type []int in argument

    Goのarrayとsliceを理解するときがきた - Qiita
  • Go言語のFunctional Option Pattern - Qiita

    オプション パッケージを作る際、柔軟性を持たせるためにオプションを持たせたい時がしばしばあります。 しかしオプションは知っての通り設定しないことが少なくありません。 単にコンストラクタに並べるようでは無用な複雑さをはらむことになります。 JavaなどではOptional Parameterなどのように、デフォルト値が指定できる機能があります。 機能の厳選されたgo言語ではそのような機能はありませんが、 "Self Referential Functions Design"というテクニックがあり、 それについての記事がRob Pike氏の記事を筆頭にいくつか説明されています。 オプションと相性が非常に良いため、合わせて"Functional Option Pattern"とも呼ばれています。 Dave Cheney氏の記事を参考におおまかに説明したいと思います。 様々な解決策 あるServe

    Go言語のFunctional Option Pattern - Qiita
  • Gopherize yourself

    Gopherize yourself
  • Go でいい感じのコマンドを作れるツールキットの紹介 - Cybozu Inside Out | サイボウズエンジニアのブログ

    SRE の @ymmt2005 です。最近は systemd が好物です。 今回は GitHub でサイボウズが公開している Go 言語のプロジェクト群、特にいい感じのコマンドを作れる github.com/cybozu-go/cmd について紹介します。 SRE チームでは最近 Go でツールを開発する機会が多くなっています。最初のうちは決まった作り方をしていなかったため、コマンドごとに仕様がばらばらで、以下のような問題がでてきました。 REST API サーバーのアクセスログを記録しないコマンドがある 外部コマンド実行時のログを記録しないコマンドがある SIGTERM 等シグナル処理の方法がばらばら ログファイルのリオープンができずローテートしにくい ログメッセージの形式がばらばら 大雑把にいうと、ログとシグナル処理がきちんとしてないと扱いにくいわけです。 具体的にどうなっていると「い

    Go でいい感じのコマンドを作れるツールキットの紹介 - Cybozu Inside Out | サイボウズエンジニアのブログ
  • ssig33.com - Docker で Go で作ったバイナリを実行するなるべく小さいコンテナを作る

    Go でアプリケーションを作ると、そのまま他になにもなくとも実行できるバイナリが出来あがります。この特性によりデプロイが大変楽です。 このような特性があるので、 Go を使う場合 Docker のようなオーケストレーションツールを使わなくても多くのサーバーにアプリをデプロイしていくことも可能かと思われますが、そこはまあ Docker という巨人に乗っておくと楽なことが多いです。具体的には swarm と docker-compose が便利なので Docker 上で実行したい。 ここで問題となってくるのが何も考えずに Docker イメージを作るとイメージサイズが膨れあがってしまってシングルバイナリによる手軽さなどが損なわれてしまうという点です。 たとえば golang:alpine のような比較的小さいイメージを使ってもファイルサイズはバイナリサイズ + 300MB ほどにもなってしまい

  • Big Sky :: golang の遅いコードをたった1行で高速化するテクニック

    記事中に間違いがありました。数倍も速くはなりませんでした。確か 1.0X ~ 1.1 倍程度の高速化は得られましたがびっくりするほどの物ではありませんでした。すみません。 そろそろ Go1.7 がリリースされるそうですが、皆さん如何お過ごしですか。Go 界隈の波平こと mattn ですこんにちわ。バカモー(略 Go1.7 ではコンパイラの最適化が行われ、ビルド速度がかなり短縮される様になりました。毎日ビルドしてる僕としては非常に嬉しい機能改善ですね。 さてとてもキャッチ―なタイトルで釣ってしまった訳ですが、気にしたら負けなのでどんどん話を進めます。 var t [256]byte func f(b *[16]byte) { for i, v := range b { b[i] = t[v] } } 例えばこのコードを見て下さい。このコードはココから拝借しました。issue の内容はスコー

    Big Sky :: golang の遅いコードをたった1行で高速化するテクニック
  • Go言語(Golang) はまりどころと解決策

    Go の言語仕様はシンプルで他の言語に比べてはまりどころが少なくて学習コストが小さめな言語のように思います。しかし、それでもはまるところがないわけではないので、自分がはまって時間を無駄にしてしまったことを書き留めておきます。 念の為誤解のないように追記しておくと、この文書の目的は Go を批判することではなく GoGo であるがゆえに C++/Java/Python など利用者が Go を使い始めるときに困惑あるいは誤解するであろうポイントをまとめておくことで初めて Go を触る人がスムーズに Go を使い始められるようにすることです。私個人は Go はバランスがとれた良い言語でだと思いますし、気に入っています。 目次 interface と nil (Go の interface は単なる参照ではない) 文献 メソッド内でレシーバ(this, self)が nil でないことをチェ

  • Goのアンチパターン

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

  • Iris Web Framework

    Write and serve anywhere. Write your backend with iris web framework. Host it at any machine. Iris is written with Go, you can run Iris from mobile, raspberry pi or a desktop with the minimum machine power. Broad os support, baby. All major operating systems are supported including linux, bsd, android, macOS, windows. It’s gonna work good on all devices. Iris is written with Go programming languag

    Iris Web Framework
  • Go言語の並行性を映像化する | POSTD

    Goというプログラミング言語の強みの1つは、 Tony Hoare考案のCSP に基づくビルトインの並行性(Concurrency)です。Goは並行性を念頭にデザインされているため、複雑に並行したパイプラインの構築を可能にしています。でも、それぞれの並行性パターンがどのように見えるものなのか気になったことはありませんか。 もちろん、気になったことはあると思います。恐らくそれぞれ形は違っても、誰もが頭に描いているのではないでしょうか。もし、「1から100までの数字」について聞かれたら、無意識に頭の中で数字のイメージを思い浮かべると思います。例えば、私の場合、自分の前から1から20までがまっすぐに並び、21以降は90度右に曲がり1000以降まで続くイメージが浮かびます。これは多分私が幼稚園の時に教室の壁に沿って数字が貼られていて、ちょうど角に数字の20があったからなのだと思います。別の例えをす

    Go言語の並行性を映像化する | POSTD