並び順

ブックマーク数

期間指定

  • から
  • まで

161 - 200 件 / 398件

新着順 人気順

goの検索結果161 - 200 件 / 398件

  • スタートアップにクリーンアーキテクチャを適用したが、技術的負債が塵積った件 〜開発合宿で技術的負債を粉砕します〜 - ANDPAD Tech Blog

    こんにちは。こんばんは。おはようございます。 アンドパッドで現在はバックエンドの方のエンジニアをやっている原田です。 アンドパッドには2021年6月にJOINしまして、現在までANDPADボードの開発に携わっています。 ANDPAD施工管理が比較的長期間の工事をターゲットにしているのに対して ANDPADボードは1日〜数日の間に短期間の工事や施工を行う際のスケジュール管理を行えるサービスです。 andpad.jp 今回は入社3ヶ月目というきりの良いタイミングで今まで行ってきたことを振り返りつつ、直近行った技術的負債を軽減するための「開発合宿」について書いていきます。 一応最初に書いておきますが、リファクタリングに関するチートスキルはないのでバーンとやってドーンと解決みたいなド派手な解決ではなく地道な改修作業をちまちま行いましたという内容です。 入社してからやってきたこと ANDPADボード

      スタートアップにクリーンアーキテクチャを適用したが、技術的負債が塵積った件 〜開発合宿で技術的負債を粉砕します〜 - ANDPAD Tech Blog
    • GoとRustの言語比較記事を書くのが流行ってるらしい

      コンテキスト 私もGoとRustの比較記事書いてバズるやつやりたい — みょん (@myuon_myon) February 27, 2020 仕事でGoとRustを書いています。いずれもWebのサーバーサイドです。パフォーマンスとかほとほどって感じなので極限までチューニングしたりしません。という前提で読んでください。 Rust/Goはいずれも習得してから2年くらい書いています。書いてる量も多分そんなに変わりません。 Go なんと言っても習得難度が低いので人を選ばず書けるようになります。現状だと仕事で書くなら一番無難な選択肢だなと思っています。一方言語もエコシステムも何もかもかなりクセが強いので、Go Wayにちゃんと従うことが大事だなと思ったりします。 ジェネリクスがないことは高速なコンパイルなど利点もありますがmap,filter等を型ごとにfor文書きまくることになるのでとても手が疲

      • ERDをPlantUML形式で自動生成するツールを作った - くりにっき

        PlantUML + ERDでPlantERDです github.com モチベーション PlantERDの特徴 使い方 出力するテーブル数の制限について 技術的に頑張ったこと テストのこと Foreign keyで隣接している別のテーブルを探す方法 複数DB対応のつらみ 追記:2019/12/13 9:45 モチベーション 既存プロダクトへの不満が一番大きいです。 https://github.com/voormedia/rails-erd は出力が画像なので取り回ししづらい そもそもRails前提なので他言語とかでは使えない https://github.com/schemaspy/schemaspy も悪くなさそうなんだけどここまでリッチじゃなくていい テーブル数個の小規模アプリならいいんだけど、中規模以上のアプリで使うと人間が読むに耐えないERDが生成されて精神が崩壊する 僕は初め

          ERDをPlantUML形式で自動生成するツールを作った - くりにっき
        • Go製アプリケーションのコンテナ化にはkoを推したい - YAMAGUCHI::weblog

          はじめに こんにちは、Google Cloudでオブザーバビリティを担当しているものです。Cloud Operations suiteをよろしくおねがいします。(宣伝終わり) この記事はGo Advent Calendar 2021 その1の22日目の記事です。昨日は @sago35tk さんの「ESP32 向けに TinyGo をセットアップする」でした。TinyGoのコアな情報を日本語で教えてくれるtakasagoさんには本当にいつも感謝しています。 さて、今日はGo製のアプリケーションをdockerlessでコンテナ化できるkoの紹介をします。koは本当にイチオシのツールで、みんなに使ってもらいたいのでぜひ使ってください。 github.com DockerによるGo製アプリのコンテナ化 まず最もポピュラーと思われるDockerを用いた場合のGo製アプリケーションのコンテナ化の方法に

            Go製アプリケーションのコンテナ化にはkoを推したい - YAMAGUCHI::weblog
          • 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
            • Goの苦手な領域

              Goの利点を使って実装するコツやノウハウを書くことがコミュニティにとってプラスになると思っているのでそれに専念したいという考えはありますが、Goの苦手な領域にGoを採用してしまってヘイトを溜め込んでしまう事例を見かけたりします。 こういう悲劇の起こる可能性を少しでも減らせたらという思いで、Goの現状の苦手な領域について解説しようと思います。Goを学び始めにこれらの領域に手を出すのは避けましょう。 Cgo is not Go GoはCGO連携でC/C++資産を利用することができますが、メモリアロケータの異なる処理系を繋ぐ関係上、お互いに呼び合う際のパラメータや戻り値はほとんどのケースでコピーが必要になります(Cの型でメモリ確保しCの型のまま受け渡しする場合はOK)。なので高頻度に呼び合うような用途には不向きであるというのはSWIGなどのような複数の処理系を連携させる仕組みと同様です。 また、

                Goの苦手な領域
              • WEBサーバをコンテナにした際に静的コンテンツはどこへ保存するのか | DevelopersIO

                WEBアプリ WEBフレームワークはEchoを利用します。views/index.htmlと、assets/images/orora24O.jpgを読み込んでEC2ローカルに保存した画像を表示するだけページを作成しました。このアプリケーションをEC2インスタンスで実行しWEBサーバとして起動します。 手元でビルドしてEC2へ必要なファイルをコピーする計画です。ディレクトリ構成は以下です。 $ tree . ├── assets │   └── images │   └── orora240.jpg ├── go.mod ├── go.sum ├── main.go └── views └── index.html main.go package main import ( "io" "net/http" "text/template" "github.com/labstack/echo/v

                  WEBサーバをコンテナにした際に静的コンテンツはどこへ保存するのか | DevelopersIO
                • Go言語+gRPCの解説 [ハンズオン] - Qiita

                  はじめに この記事は、海外サイトhttps://tutorialedge.net/golang/go-grpc-beginners-tutorial/ の内容をベースに一部修正を加えたものです。この記事を読み進めることでGoでシンプルなgRPCクライアントとサーバーを構築することができるようになります。 ※gRPC公式より抜粋(また、以下の説明でも一部参考にしています。) gRPCとは? gRPCはGoogleによって開発されたRPCフレームワークです。 RPCはRemote Procedure Callの略で、逐語的に訳すと「遠隔手続呼び出し」となります。これはすなわち、「あるプログラムがネットワーク上の異なる場所に配置されたプログラムを呼び出して実行すること」と読み取れます。 公式による定義 サービス定義 多くのRPCシステムと同様に、gRPCはサービスを定義するという考えに基づいてお

                    Go言語+gRPCの解説 [ハンズオン] - Qiita
                  • 「Rust」言語はCよりも遅いのか、研究者がベンチマーク結果を解説

                    「C」や「C++」に代わるシステムプログラミング言語として「Rust」が注目を集めている。メモリ安全性が高く、メモリ破壊バグといった脆弱(ぜいじゃく)性を作り込みにくいからだ(関連記事)。 ただし、システムプログラミング言語では、高い処理性能が必須条件であり、これがCやC++が使われ続けている理由となっている。Rustはどの程度「速い」のだろうか。 ドイツのミュンヘン工科大学で博士課程の学生であるポール・エメリク氏は2019年9月9日、Rustで作成したデバイスドライバの性能評価をGitHubで発表した。 同氏のグループはさまざまな言語で同じ機能を備えたデバイスドライバを記述し、性能を比較している。 何が性能低下を引き起こしているのか 性能評価用に作成したのは、Intelのイーサネットコントローラー向けのLinux用デバイスドライバだ(ixgbeタイプ)。 エメリク氏は解説の冒頭で研究に取

                      「Rust」言語はCよりも遅いのか、研究者がベンチマーク結果を解説
                    • ファミコンエミュレータ実装の感想 - ichirin2501's diary

                      とりあえずスーパーマリオが動いて一段落したので覚えているうちに感想書いていく。 (この記事の情報量は、デバッグは大変、以上) 動機 単に好奇心。ただ、ファミコンのエミュレータに着手したのはこれで3回目になる。 1度目は10年前の身内ハッカソンのとき。このときはC言語で実装してて強引にHELLO, WORLD!を表示するだけで終わった。 実装の続きをしたかったけど、この後は忙しくなってしまって挫折している。 2度目は2年前で、過去の心残りを精算するためにGo言語で着手したのだけど、CPUの実装が終わった後ぐらいからまた忙しくなって挫折している。 今回は2年前のGoコードの続きからコミットを積んでここまで来たので、一応リベンジ成功....と言って良いんじゃないかな、たぶん。 過程 PPUの実装は最初からinternal register(v,t,x,w)を使う方法にした(PPU scrolli

                        ファミコンエミュレータ実装の感想 - ichirin2501's diary
                      • AWS Lambda Node.js runtime の EoL に疲れたので Go にしていっている話 - KAYAC engineers' blog

                        SREチームの藤原です。Tech Kayac Advent Calendar Migration Track 19日目の記事です。いよいよ年も押し詰まってきましたね…! AWS Lambda、使ってますか?最近はサーバーレスという文脈で取り上げられることも多い Lambda ですが、カヤックではそこまでサーバーレスにこだわることはせず、主にイベントドリブンな処理に適切なユースケースに使用しています。 Lambda のリリース当初に用意されていたランタイムは Node.js のみでした。カヤックで最近使うことが多い言語である Go, Ruby のランタイムがサポートされたのが比較的最近だったということもあり、Node.js の Lambda function が比較的多く存在している状況でした。 Node.js EoL (End of Life) ところで、技術基盤チームのリポジトリで「La

                          AWS Lambda Node.js runtime の EoL に疲れたので Go にしていっている話 - KAYAC engineers' blog
                        • golangとDockerとOOM — KaoriYa

                          golangで書いたプログラムをDockerで動かしOOMが発生した際になるべく情報を残して殺される方法を紹介します。 2020/08/16追記: この記事の内容はgolangに関してはやや現実的ではなくなってしまいました。 詳しくは続編を参照してください。 TL;DR golang製のプログラムは仮想メモリ(VSZ)の確保に失敗するとgoroutineのダンプを吐いて死ぬ DockerのOOMはRSSベースで検出時にSIGKILLを投げてくる Docker利用時にVSZで制限をかけるスクリプトを書いた golang製のプログラムはlinux-amd64において最低でも101MBのVSZを要求する VSZの制限がそれより小さいと当然起動できない 実際のRSSは3MB程度で起動する Background コンテナ内で動いているプロダクション上のgolang製のプログラムが時々OOMに殺されて

                          • メルカリのテックリードが学んだ、HowよりWhyを重視することが大切なわけ - Findy Engineer Lab

                            IT技術は進歩のスピードが速い領域です。だからこそ過去から現在、そして将来に向けた変化を理解することは、ITエンジニアとしてキャリアを構築していく上で必要な考察となるでしょう。ときには、こうあるべきという将来像を描くこともあるかもしれません。 株式会社メルカリでプラットフォームチームのテックリードを務める中島大一(@deeeet)さんは現在、メルカリが2年ほど前から進めているマイクロサービスへのアーキテクチャ移行において、そのインフラ自体や、そこで開発するエンジニアに向けたツールセットの提供などを行っています。 エンジニアとしてキャリア7年になる中島さんですが、2年目の2015年には同じような当時の若手インフラエンジニア(@ryot_a_raiさん、@rrreeeyyyさん、@yuuk1tさん、@hfmさん、@catatsuyさん)との集まりで、「ある若手インフラエンジニアの現状確認」と題

                              メルカリのテックリードが学んだ、HowよりWhyを重視することが大切なわけ - Findy Engineer Lab
                            • ガンジス川で瞑想し、サウナでひらめきVulsができた - 各OSに対応する脆弱性スキャンを実現した手法 - エンジニアHub|Webエンジニアのキャリアを考える!

                              エンジニアHub > 記事一覧 > ガンジス川で瞑想し、サウナでひらめきVulsができた - 各OSに対応する脆弱性スキャンを実現した手法 ガンジス川で瞑想し、サウナでひらめきVulsができた - 各OSに対応する脆弱性スキャンを実現した手法 サーバー運用者の抱える「脆弱性対応の負担が大きい」という課題を解決するべく、神戸康多さんが開発したOSS「Vuls」。同ソフトウェアはなぜ複数OSの脆弱性を検知できるのか、その基本構造を聞きました。そして、神戸さんが語るVulsの開発の根本にあった、貢献意識とは。 マカフィー株式会社が戦略国際問題研究所と協力して2018年3月8日に発表したレポート「Economic Impact of Cybercrime - No Slowing Down(衰えを知らないサイバー犯罪の経済的影響)」は、サイバー犯罪が世界経済にもたらした損害額は約6,000億米ドル

                                ガンジス川で瞑想し、サウナでひらめきVulsができた - 各OSに対応する脆弱性スキャンを実現した手法 - エンジニアHub|Webエンジニアのキャリアを考える!
                              • 「GOする」と、もれなく手数料!? タクシー不足の原因にも…現場から不満噴出「配車アプリ」の裏側 | FRIDAYデジタル

                                いつの間にか、いろいろな「手数料」が… 登場したばかりの頃は便利なシステムに思えたが、いつの間にかいろいろ“手数料”をとられるようになっているタクシー配車アプリ「GO」。 調べてみると、昨年11月14日の一般乗用旅客自動車運送事業の運賃改定に伴い、「迎車料金」がタクシー事業者ごとに変更されることになり、同時期に「アプリ手配料」なる手数料がプラスされたため、あまり話題にならなかった経緯がある。 もともと「運賃+迎車料金420円」のところ、変更後に「運賃+迎車料金300円〈※〉+アプリ手配料100円〈※〉(※タクシー会社・エリアによって異なる)」になったと説明されると、利用者側にはお得になった印象すらあったかもしれない。 しかし、混雑時間帯などによって、周辺のタクシー車両に空車がない場合に優先的に手配される「優先パス手配料」(300~980円。一定ではない)や、乗務員や車種指定、空気清浄機搭載

                                  「GOする」と、もれなく手数料!? タクシー不足の原因にも…現場から不満噴出「配車アプリ」の裏側 | FRIDAYデジタル
                                • Go を2年くらい書いた感想: 意図をエンコードしきれない感じは消えず - blog.8-p.info

                                  ここ2年くらい、仕事では大体 Go を書いている。jmuk さんが Go言語は、なんというか「ちょうどいい」言語だな、と思っている。異論は認める。 と書いていたけれど、私はやっぱり Scala や Kotlin あたりが好きで、これは変わらなそう。 例えばコレクションを map しているのをみると、私は「なるほど、ここではコレクションの要素数は変わらないんですね」と思う。filter だったら「コレクションの要素数は変わるけど、個々の要素は変わらないのか」ということを、あるいは Result を map していたら「ここではエラーのほうは触らないのね」ということを読みとっている。 こういう意図が、素朴な for ループと、if err != nil だと読みきれなくて、いや真面目に字面を追っていけばわかるんだけど、私が「map するか」と思いながら for ループを書いて、その for ル

                                  • ぷよ碁

                                    ぷよ碁がアップデートされました! 画面の更新をお願いします。 ゲームプレイ中の場合はキャンセルを押してください。

                                      ぷよ碁
                                    • GitHub Actions のワークフローをチェックする actionlint をつくった - はやくプログラムになりたい

                                      GitHub Actions のワークフローを静的にチェックする actionlint というコマンドラインツールを最近つくっていて,概ね欲しい機能が揃って実装も安定してきたので紹介します. github.com なぜワークフローファイルの lint をすべきなのか GitHub Actions が正式リリースされてからだいぶ経ち,GitHub 上での CI は GitHub Actions が第一候補となってきているように感じます.僕も新規にリポジトリを作成して CI をセットアップする場合はほぼ GitHub Actions を使っています. ですが,GitHub Actions には下記のような問題があり,actionlint でそれらを解決・緩和したいというのが理由です. ワークフローを実装する時は,GitHub に push して CI が実行されるのを待って結果を確認するという

                                        GitHub Actions のワークフローをチェックする actionlint をつくった - はやくプログラムになりたい
                                      • 改めて見直すGoの特徴

                                        極力Goならではな特徴をいくつか挙げていく。 依存解決が必要最低限で互換性を考慮しつつ決定的 モジュール単位で依存をダウンロード。コンパイル対象はサブパッケージ単位。 依存の明示方法はコードに埋め込まれ、かつ未参照のインポートはコンパイルエラー。 つまり動作するコードのすべては正確な依存ツリーが明示されていて余計な依存は引き込まれない。 そして持ち前のコンパイルの速さを含め、相当深い依存ツリーでも依存解決にかかる時間は既知の処理系の中でも最速レベル。(唯一勝てるのはプリビルドバイナリが配布されている場合くらい) また、コンパイルやリンクに必要な処理量そのものが比較的少ないため、開発環境負荷も小さい。 かなり巨大なプロジェクトであってもメモリ8GBで困るようなことが無い。つまり、CI環境の維持にもローコストで済む。 ライブラリの提供側では後方互換性が破壊されるような変更はV1->V2というよ

                                          改めて見直すGoの特徴
                                        • 内製オブジェクトストレージサーバ「b3」でコスト最適化を目指した話 - Mirrativ Tech Blog

                                          インフラストリーミングチームの近藤 (@udzura) です。今回は、ミラティブで内製しているオブジェクトストレージサーバ「b3」の紹介記事を書きたいと思います。 今回の記事は、6月にGopher Talkというイベントで発表した「Go製ミドルウェアを実践投入するにあたりやったこと」をベースに、内容を詳細にしたり直近の開発状況に合わせて更新したものです。一部内容はこの発表と重複していますがご了承ください。 オブジェクトストレージサーバを内製した背景 1. 大量オブジェクトの操作や増え続ける転送量に対応したい 2. 一定期間しかファイルの保持をしない 3. オンメモリ/SSD/HDDを組み合わせたチューニングがしたい オブジェクトストレージb3の特徴 S3 互換の基本的なAPIを実装 LSM-Tree index+WALなDB/マージ操作に対応 I/O 帯域を制限可能 非同期レプリケーション

                                            内製オブジェクトストレージサーバ「b3」でコスト最適化を目指した話 - Mirrativ Tech Blog
                                          • 実例に学ぶGoのアーキテクチャ - 「開発スピード優先」でGMOペパボが採用したのはMVC|ハイクラス転職・求人情報サイト AMBI(アンビ)

                                            実例に学ぶGoのアーキテクチャ - 「開発スピード優先」でGMOペパボが採用したのはMVC Goを活用した開発の際、どのようなアーキテクチャを採用するか、議論は尽きません。GMOペパボではオーソドックスなMVCを選んだといいますが、その背景にあったものとは。開発現場のお二人に話を聞きました。 なぜ、MVCを採用するのか 「いま直面する問題」を解決するために、シンプルな構成を選ぶ MVCを採用し感じる課題 ディファクトに従うのではなく、必要とされるものを選ぶ 2012年のバージョン1.0発表以降、Golang(以下、Go)はさまざまなサービスでの採用事例を増やしています。しかし一方で、Goを活用したサーバサイド開発における設計の大方針に関しては、どのような手法を採るべきか多くの議論が重ねられてきています。 例えば、DDD(Domain Driven Design:ドメイン駆動設計)やクリーン

                                              実例に学ぶGoのアーキテクチャ - 「開発スピード優先」でGMOペパボが採用したのはMVC|ハイクラス転職・求人情報サイト AMBI(アンビ)
                                            • Goの言語仕様書精読のススメ & 英語彙集

                                              この記事について Go言語公式から提供されているThe Go Programming Language Specificationという文章があります。 実際のThe Go Programming Language Specificationのページ画面 この文章、個人的にはじっくり読んでみると結構得るものが大きいな、と感じるものです。本記事では The Go Programming Language Specificationって何が書いてあるの? 読んだら何がわかるの? 読むときにはどういうところに注目したらいいの? 英語難しいから単語教えて! という疑問に答えながら、The Go Programming Language Specification精読の布教を行います。 The Go Programming Language Specification とは? The Go Prog

                                                Goの言語仕様書精読のススメ & 英語彙集
                                              • Go の sql.DB がコネクションプールを管理する仕組み

                                                Go の database/sql パッケージ の DB 構造体 は、データベースへのコネクションプールを管理し、かつスレッドセーフ (goroutine セーフと言ったほうが良いのだろうか…?) にそれらの接続を使用できることを保証している。 ドキュメント にも次のように書かれている。 DB is a database handle representing a pool of zero or more underlying connections. It’s safe for concurrent use by multiple goroutines. こちらの基本的な実装内容と、動作を制御するパラメータについて調べてみた。 基礎知識のおさらい database/sql パッケージはデータストアの実装によらない一般的な SQL のインタフェースを提供している。具体的なデータストアへの接

                                                  Go の sql.DB がコネクションプールを管理する仕組み
                                                • Goのソースコード内のトリビア - YAMAGUCHI::weblog

                                                  はじめに こんにちは、StackdriverあらためGoogle Cloud Operations担当者です。Google Cloud Operationsもさることながら、Go Conferenceの運営など、長らくGoコミュニティに関わってきましたが、まだまだ知らないことがあったということを昨日今日で知ったので共有します。 time.minWall time.minWall という値があります。 src/time/time.go - go - Git at Google const ( hasMonotonic = 1 << 63 maxWall = wallToInternal + (1<<33 - 1) // year 2157 minWall = wallToInternal // year 1885 nsecMask = 1<<30 - 1 nsecShift = 30 ) こ

                                                    Goのソースコード内のトリビア - YAMAGUCHI::weblog
                                                  • Big Sky :: Google Developers Expert (Go) になりました。

                                                    Google の方からお誘いを頂き、Google Developers Expert (Go) になりました。 僕のこれまでの Go に対する活動を評価頂けました。僕が Go を触り始めたのが2009年、今から10年前でした。Go はまだメジャーリリースすらされておらず、誰も仕事で使っていない言わばホビー言語でした。 一部のアーリーアダプタが「この言語、面白い」という言葉を残し飽きて来た頃、僕は職場で自前のツールを Go で書くようになりました。それまではC言語でした。 マルチプラットフォーム、速いコンパイラ、ポータビリティの高さ、簡単な記述での並行処理、色々な物に惹かれました。特に、シングルバイナリで動作し、コンパイルし直しさえすればソースコードを書き直す事なく Windows で動き、なおかつマルチバイトの問題も発生しない、こんな夢の様なプログラミング言語はそれまで見た事が無かったので

                                                      Big Sky :: Google Developers Expert (Go) になりました。
                                                    • Webpackの70倍!Go言語で書かれたJavascriptバンドラー「esbuild」をベンチマークテストしてみた

                                                      Webpackの70倍!Go言語で書かれたJavascriptバンドラー「esbuild」をベンチマークテストしてみた esbuild https://github.com/evanw/esbuild/ esbuildの特徴 複数モジュールの依存関係を解決し、1つにまとめるバンドラーは、現代のフロントエンド開発においてなくてはならないツールの1つ。 The State of JavaScript 上位5つに人気が集中し、なかでもWebpackのシェアは実に約60%に達しています。 今回ご紹介する「esbuild」は、Go言語で書かれた高速なバンドラーで、これらメジャーなツールとの性能比較(ベンチマークテスト)をやってみました。 公式のベンチマーク結果 計測方法は、three.jsライブラリを10回複製し、キャッシュなしで単一のバンドルをゼロから構築しています。なんと、Webpackに比べて

                                                        Webpackの70倍!Go言語で書かれたJavascriptバンドラー「esbuild」をベンチマークテストしてみた
                                                      • Goのおすすめのフレームワークはnet/http | フューチャー技術ブログ

                                                        僕としてはGoのおすすめのフレームワークを聞かれたら、標準ライブラリのnet/httpと答えるようにしています。というよりも、Goの他のフレームワークと呼ばれているものは、このnet/httpのラッパーでしかないからです。 Goでアプリケーションを作成する場合のイメージは次の通り。battery includedなアプローチは他の言語でもたまにありますが、ついてくる機能が今時のものが多くて、標準ライブラリで済むことが多いです。ウェブ開発についてもそんな感じです。 PythonとかRubyとかもそうですが、言語組み込みのウェブサーバー機能はテスト用で本番運用には機能が足りない、性能が足りない、ということから「プロダクションに耐えうるフレームワークを別に入れないと」と思う人も多いんじゃないかな、と思いますが、Goの場合は組み込みのサーバーで問題なかったりします。Node.jsに近いかも?世間に

                                                          Goのおすすめのフレームワークはnet/http | フューチャー技術ブログ
                                                        • Go で実装しながら gRPC を理解する

                                                          Written by @ryysud Jul 10, 2019 00:00 · 5125 words · 11 minutes read #gRPC はじめに gRPC の理解が浅く gRPC を利用するプロダクトの開発で困ったので調べてまとめてみました。 gRPC について Google が開発した RPC フレームワークで、gRPC を使うと異なる言語で書かれたアプリケーション同士が gRPC により自動生成されたインターフェースを通じて通信することが可能になる。Go で書かれたサーバーに Java で書いたクライアントが接続可能になるイメージ。通信プロトコルには HTTP/2 が使われ、データはバイナリデータでやりとりする仕様。 gRPC の前身は Google 社内で10年以上運用されていた Stubby というもので、多くの機能が標準規格に基づいていないことから長い間 OSS と

                                                            Go で実装しながら gRPC を理解する
                                                          • DockerとDocker ComposeのTerminal UI「lazydocker」のご紹介 - Qiita

                                                            概要 LazyDockerは、DockerおよびDocker ComposeをTUIで操作できるツールです。 docker、docker-composeコンテナ環境の状態の表示、ログの表示、コンテナまたはサービスの再起動/削除/再構築などが1つのウインドゥで実行できます。 Githubでソースは公開されておりGoで実装されているようです。 jesseduffield/lazydocker 公開されたばかりですがスター数の伸びがとてもすごいです(7/5現在で7000ほど) 実行環境 macOS Mojave $ docker version Client: Docker Engine - Community Version: 18.09.2 API version: 1.39 Go version: go1.10.8 Git commit: 6247962 Built: Sun Feb 10

                                                              DockerとDocker ComposeのTerminal UI「lazydocker」のご紹介 - Qiita
                                                            • SlackをGo製ツールのGUIフロントエンドとして使う(#1: データの登録と表示) - ほんじゃらねっと

                                                              ブラウザで操作できるツールを作りたいけどWebのフロントエンド作るの面倒だな...とWeb系開発者にあるまじき事を考えつつ良いプラットフォームを探していたら、SlackのAPIが進化してツールフロントエンド化するのにうってつけの機能が増えているのを見つけました。 api.slack.com チャットツールのAPIといえば、「チャットで入力したテキストをボット側でがんばって解釈して実行する」というCUIのコマンド的な使い方しかできないイメージだったのですが、最近のSlackのAPIは「ショートカット(Shortcuts)」「モーダル(Modals)」「ブロックキット(Block Kit)」といった機能を使うことで、入力コンポーネントを使用したGUIでボットとやりとりすることができるようになっています。 これらを駆使すれば、入力フォームからデータを登録したり、編集フォームでデータを変更したり、

                                                                SlackをGo製ツールのGUIフロントエンドとして使う(#1: データの登録と表示) - ほんじゃらねっと
                                                              • Why Is SQLite Coded In C

                                                                Note: Sections 2.0 and 3.0 of this article were added in response to comments on Hacker News and Reddit. Since its inception on 2000-05-29, SQLite has been implemented in generic C. C was and continues to be the best language for implementing a software library like SQLite. There are no plans to recode SQLite in any other programming language at this time. The reasons why C is the best language to

                                                                • hugoの日付書式がクソすぎる(悪いのはgo言語です) - やってみる

                                                                  yyyy-MM-dd HH:mm:ssのような書式ではなく2006-01-02 15:04:05である。この数値でなければ正しく表示されない。は? なにこれ? ひどくない? 手順 Go言語をインストールする hugoをインストールする プロジェクト作成&pulpテーマ適用 以下のように設定ファイルを編集する コード 日付の表示形式をyyyy-MM-ddに変更したい。以下のようにする。 config.toml [params] listPageDateFormat = "2006-01-02 15:04:05" singlePageDateFormat = "2006-01-02 15:04:05" 具体的な日時に見えるでしょ? これ、フォーマットなんだぜ……。 ハァ? と思うでよね? ふつうyyyy-MM-dd HH:mm:ssとか%Y-%m-%d %H:%M:%Sとか、そーゆー感じなのに

                                                                    hugoの日付書式がクソすぎる(悪いのはgo言語です) - やってみる
                                                                  • Nintendo Switch™ ネイティブバイナリへの Go コンパイルを成功させた話

                                                                    本記事は「Go Advent Calender」25 日目の投稿です。 Happy Holidays! EDIT (2022-01-03): There is an English version of this article. tl;dr いままでは Go プログラムを Nintendo Switch 上で動かすために WebAssembly に一度変換し、それを C++ に変換してコンパイルするということを行ってきました。今回、 Go の Nintendo Switch 向けネイティブコンパイルに成功し、実際に手元でゲームを動かすことができました。手法として、システムコール呼び出しを C の関数呼び出しに置き換えるように -overlay オプションを指定してビルドしました。また、 -overlay オプションに指定する JSON を生成するパッケージ Hitsumabushi を開

                                                                      Nintendo Switch™ ネイティブバイナリへの Go コンパイルを成功させた話
                                                                    • Goで学ぶGraphQLサーバーサイド入門

                                                                      GraphQLはリクエストクエリを書くことで、必要な分のデータを柔軟に取得することが可能なAPI形式です。 RESTとは違うその仕組みはクライアント目線ではとても便利なものですが、サーバーサイドに立ってみると無限の組み合わせがあるリクエストクエリに一体どう対処しているのか不思議に思う人もいるでしょう。 この本では、Goのgqlgenというライブラリを用いてGraphQLサーバーを作る過程を通して、サーバーサイドGraphQLを理解・開発するのに必要な知識を解説していきたいと思います。

                                                                        Goで学ぶGraphQLサーバーサイド入門
                                                                      • 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
                                                                        • Goで開発した配信サーバーのメモリ使用量問題に向き合う - Mirrativ Tech Blog

                                                                          こんにちは。ストリーミングチームの松本です。 Mirrativのストリーミングチームは、低遅延配信や、通知ぼかしというような機能を追加するため、配信のorigin serverの前段にtranscoder serverというものを導入してきました。 tech.mirrativ.stream tech.mirrativ.stream transcoder serverはGoによる内製のミドルウェアであり、主に映像の変換を行う目的で作られました。現在は配信プロトコルの変換(既存プロトコル -> 低遅延プロトコル)などを行っています。また、実際にはサーバー上のDockerコンテナ内で動作しています。 transcoder serverを展開していくにあたり、メモリ使用量が常に増え続ける問題が起きていたため、その際に直面したGoの実メモリ使用量に関する話を書きたいと思います。 メモリ使用量の増加問

                                                                            Goで開発した配信サーバーのメモリ使用量問題に向き合う - Mirrativ Tech Blog
                                                                          • Big Sky :: Vim をモダンな IDE に変える LSP の設定

                                                                            Go 言語の IDE 機能を得る為に何か知る必要はありません。Java の IDE 機能を得る為に何か知る必要はありません。HTML の IDE 機能をインストールする為に npm コマンドの使い方を覚えたり、LaTeX の IDE 機能をインストールする為に、配置場所を考える必要もありません。もしインストールを実行しても動かなかったら、それは vim-lsp-settings のバグです。 以前まででれば vim-lsp を導入すると Language Server の登録が必要でした。 if executable('gopls') au User lsp_setup call lsp#register_server({ \ 'name': 'gopls', \ 'cmd': {server_info->['gopls']}, \ 'whitelist': ['go'], \ }) au

                                                                              Big Sky :: Vim をモダンな IDE に変える LSP の設定
                                                                            • GitHub における大規模なモノリポのパフォーマンスの向上

                                                                              GitHub は、毎日 5600 万人以上の開発者にサービスを提供し、2 億以上のリポジトリをホストしています。これらのリポジトリのごく一部を除いて、世界中の顧客に驚くべきパフォーマンスでサービスを提供しています。 GitHub のような大規模なシステムでは、コードとアーキテクチャのずれというのは限界に達したときに初めて見つかるものです。例えば、何千人もの開発者が毎日同じリポジトリを更新するといったケースです。GitHub は、大規模なモノリポを使用する一部の顧客から、プッシュ操作が失敗するといったパフォーマンスの問題が発生しているというフィードバックを受けました。 そして、それは GitHub においても発生していました。 github/github は GitHub のモノリポですが、私達自身も時々プッシュに失敗することがありました。 調査を開始するにあたり、私たちは社内のチームや顧客

                                                                                GitHub における大規模なモノリポのパフォーマンスの向上
                                                                              • ほとんどのプログラミング言語で関数のreturnが1つしか出来ないのはなぜですか?

                                                                                回答 (12件中の1件目) 多くの言語で多値のリターンができない理由ですが、昔のC言語(Sys V以前のC)が単一レジスタに格納できる値しかリターンできなかったのを引きずってるだけだ、という意見を見つけました(勝手な読み取り)。 多値について本気で考えてみた - ぐるぐる~ この先に書かれていることを自分なりにまとめると、 * 多値返しがファーストクラスではないという意味でタプル返しの劣化版なのは認めよう。しかし考えを進めよう。タプルの劣化版としての意味を。 * 多引数関数があるのと同様に多値関数があってもいい * スタックマシンではむしろ自然に実装できる(レジスタ返しに縛ら...

                                                                                  ほとんどのプログラミング言語で関数のreturnが1つしか出来ないのはなぜですか?
                                                                                • Goのアーキテクチャとフレームワークについて - pospomeのプログラミング日記

                                                                                  社内slackでGoについて質問されて、それなりに長文で回答したのでその内容を加筆修正したものをブログに残しておく。 質問内容としては以下のイメージ。 RubyだとRailsがあり、MVCを利用することになるが、Goだとそこらへんはどうなるのか? Go初心者なのでGoのモダンなアーキテクチャとフレームワークについて教えて欲しい。 これ系の質問はGo経験者であれば「あーこれなー」と思うだろーし、 Go初心者のときに一度は悩んだことがあるだろう。 なので、個人的な意見を残しておく。 自分の意見が正しいかどうかは自己判断して欲しい。 結論 アプリケーションアーキテクチャの複雑化とMVCフレームワーク システムアーキテクチャの複雑化とフルスタックなフレームワーク マイクロフレームワーク 改めて質問内容を振り返る pospomeが考えるGoのフレームワーク選定 pospomeが考えるGoのアーキテク

                                                                                    Goのアーキテクチャとフレームワークについて - pospomeのプログラミング日記