タグ

Goとgoに関するWatsonのブックマーク (260)

  • Go界隈で巻き起こった go:linkname 騒動について - ANDPAD Tech Blog

    お久しぶりです、ANDPADボードの tomtwinkle です。 この記事はGogo:linkname 騒動は 6/18に行われた Go Bash で話した内容を要約したものです。 そもそも go:linkname とは何かといえば internal packageやprivate var/funcなど普通はアクセスできないオブジェクトシンボルをエイリアス出来るようCompilerに指示して、アクセス可能にするcompiler directiveです。 go:linkname はprivateな変数へアクセス可能な便利なものでしたが unsafe packageのimportを必須とする通り、せっかく互換性や安全を考慮して作られているGoプログラムを簡単に破壊できる諸刃の剣でした。 詳細は発表スライドを見てください。 go:linkname 禁止騒動 Go 1.23 のリリースまで2

    Go界隈で巻き起こった go:linkname 騒動について - ANDPAD Tech Blog
    Watson
    Watson 2024/06/21
  • awslim - Goで実装された高速なAWS CLIの代替品を作った - 酒日記 はてな支店

    最初に3行でまとめ AWS CLIは便利です。しかし起動が遅いので、Goで実装された高速な(ただし機能は少ない)代替品を作りました。awslim といいます リリースバイナリは無駄に大きいので、必要な機能だけを組み込んだビルドを簡単にできるようにしてあります。ビルドして使うのがお勧めです どうぞご利用下さい github.com 以下はこれに至るまでの経緯とか、実装や使い方の話とかです。長いです。 作成の経緯 AWSの各種サービスにアクセスするための AWS CLI は、スクリプトやコマンドラインから処理を自動化するために大変便利なツールです。AWSでサーバーサイドの開発、運用している人であれば、ほぼ全員がお世話になっているんじゃないかと思います。 しかし、AWS CLI (コマンド名aws) には「起動が重い」という問題があるなとずっと思っていました。具体的には、aws --versio

    awslim - Goで実装された高速なAWS CLIの代替品を作った - 酒日記 はてな支店
    Watson
    Watson 2024/05/28
  • 効率的なGo

    書は、Goアプリケーションの効率やスケーリングに関する疑問に対して、実用的な答えを与えてくれる書籍です。 レイテンシー、CPU、メモリ資源についての知識、またOSやGoがそれらを抽象化している方法について、またソフトウェアの効率に関わるデータ駆動な意思決定を行う事の意味や、計算量解析の手法、最適化状況の例など、実用的なソフトウェアを開発する中での「効率」に関する知識を紹介します。 Goやその他のモダンな言語で書かれたプログラムを設計、作成、変更するソフトウェア開発者、また誰かが書いたソフトウェアを主に運用するDevOpsエンジニア、SRE、シスアド、プラットフォームチームなどの読者が、いつ、どのように効率最適化を適用するかという問いに答えるための知識を身に付けることができるでしょう。 関連ファイル 原著者による書のサンプルリポジトリ 正誤表 ここで紹介する正誤表には、書籍発行後に気づい

    効率的なGo
    Watson
    Watson 2024/01/31
  • RubyファイルにGoコードを書いてRuby Nextで動かす(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: A no-go fantasy: writing Go in Ruby with Ruby Next — Martian Chronicles, Evil Martians’ team blog 原文公開日: 2021/11/09 原著者: Svyatoslav Kryukov、Travis Turner サイト: Evil Martians -- ニューヨークなどに拠点を構えるRuby on Rails開発会社です。良質のブログ記事を多数公開し、多くのgemのスポンサーでもあります。 日語タイトルは内容に即したものにしました。 no-go: うまくいかない、立入禁止 Rubyは素晴らしい言語です。私たちはRubyの読みやすさ、柔軟性の高さ、そして開発者中心主義を愛しています。しかしここ火星ではGo言語も愛されています。Goにも

    RubyファイルにGoコードを書いてRuby Nextで動かす(翻訳)|TechRacho by BPS株式会社
    Watson
    Watson 2023/11/18
  • Go 1.21 Release Notes - The Go Programming Language

    Introduction to Go 1.21 The latest Go release, version 1.21, arrives six months after Go 1.20. Most of its changes are in the implementation of the toolchain, runtime, and libraries. As always, the release maintains the Go 1 promise of compatibility; in fact, Go 1.21 improves upon that promise. We expect almost all Go programs to continue to compile and run as before. Go 1.21 introduces a small ch

    Go 1.21 Release Notes - The Go Programming Language
    Watson
    Watson 2023/08/09
  • Goの学習のため書籍を三冊読んだ - $shibayu36->blog;

    A Tour of Goが終わり、もう少しGo自体の深掘りをしたいためGoの書籍をいくつか読んでみたのでメモ。今回読んだ書籍は以下の三冊。 実用 Go言語 ―システム開発の現場で知っておきたいアドバイス 作者:渋川 よしき,辻 大志郎,真野 隼記オライリージャパンAmazon Go言語プログラミングエッセンス エンジニア選書 作者:mattn技術評論社Amazon 改訂2版 みんなのGo言語 作者:松木 雅幸,mattn,藤原 俊一郎,中島 大一,上田 拓也,牧 大輔,鈴木 健太技術評論社Amazon それぞれの感想としては 実用Go言語:業務で使っていると起こるような色んなHowToを大量に提供してくれている。今の段階で全部読むというより、必要に応じて再度読むインデックス的な使い方が良さそう。クックブック的。 Go言語プログラミングエッセンス:最近出たのため、最近のGoに即した内容を学

    Goの学習のため書籍を三冊読んだ - $shibayu36->blog;
    Watson
    Watson 2023/07/20
  • Go言語プログラミングエッセンス | Gihyo Digital Publishing … 技術評論社の電子書籍

    エンジニア選書 Go言語プログラミングエッセンス 著者 mattn 著 発売日 2023年3月9日 更新日 2023年3月9日

    Go言語プログラミングエッセンス | Gihyo Digital Publishing … 技術評論社の電子書籍
    Watson
    Watson 2023/04/28
  • これまでとこれからのGo | gihyo.jp

    Go歴史 連載では、筆者(tenntenn)と周囲のGoエンジニアで、Goに関わる今アツい話を取り上げていきます。最新のGoの機能やこれからリリースされるGoの機能はもちろん、実際の開発現場で用いられているノウハウや自作ライブラリやツールについてご紹介します。第1回目はtenntennがこれまでとこれからのGoについて取り上げます。 Goは2009年にGoogleによって公開されたプログラミング言語です。2012年にGo1として正式公開されました。2022年現在では、GoogleNetflixをはじめとする海外企業だけはなく、筆者の所属するメルカリなど国内の企業でも多く用いられるようになってきました。海外Goの導入事例は公式サイトのケーススタディで確認できます。国内企業の導入事例はGoの公式Wikiに掲載があります。これらを見るとスタートアップからメガベンチャー、大企業までさまざま

    これまでとこれからのGo | gihyo.jp
    Watson
    Watson 2022/08/30
  • Go 1.19のメモリ周りの更新 | フューチャー技術ブログ

    Go 1.19リリース連載の6目です。 Go 1.19では、いくつかメモリ周りの更新がありました。1つはガベージコレクタ周りのお話と、あとはメモリモデルの更新です。 ライブラリではsync/atomic.Int64など、いくつか型が追加されました。 ガベージコレクタガベージコレクタの詳細と調整の仕方についてのドキュメント が追加されました。このドキュメントはスライダーで動作の変化がみられるインタラクティブなドキュメントになっているので、ぜひご覧ください。 「GoJavaと違って、GCの調整ポイントがほとんどなく、最初からトップスピード(オプションの選択の中で相対的に)だよ」みたいに説明されることもありましたが、そういうわけにも行かなくなったというか、ある程度知っておく必要はあるかもしれません。とはいえ、デフォルトでも十分うまくやってくれますし、そもそも即座に終了するユーティリティでは頑

    Go 1.19のメモリ周りの更新 | フューチャー技術ブログ
    Watson
    Watson 2022/08/12
  • Go製ミドルウェアのメモリリークを解決した話 - Mirrativ Tech Blog

    インフラ・ストリーミングチームの id:udzura (@udzura)です。今回は、Goミドルウェアのメモリリークを見つけて解決する際に、どのようなプロセスを踏んでいったかを解説します。 Go製のミドルウェアの概要 ミラティブでは、Webアプリケーションのみならず、ミドルウェアに相当する部分についても必要なものは内製しています。その中の一つに、社内で「Radisha」と呼んでいる各種集計とキャッシュなどを行うためのミドルウェアがあります。Radishaは以下のような特徴を備えています。 GET、SET、SETEXなど基的なRedis互換のコマンドを実装している。そのため、既存のRedisクライアントライブラリから操作が可能である。 ランキング集計、一定時間内のアクセス集計などが行えるよう、Redis にない独自のコマンドを実装している。 高い可用性を志向しており、オンメモリのデータは

    Go製ミドルウェアのメモリリークを解決した話 - Mirrativ Tech Blog
    Watson
    Watson 2022/08/04
  • A Guide to the Go Garbage Collector - The Go Programming Language

    Introduction This guide is intended to aid advanced Go users in better understanding their application costs by providing insights into the Go garbage collector. It also provides guidance on how Go users may use these insights to improve their applications' resource utilization. It does not assume any knowledge of garbage collection, but does assume familiarity with the Go programming language. Th

    A Guide to the Go Garbage Collector - The Go Programming Language
    Watson
    Watson 2022/07/18
  • tscをGoに移植 | POSTD

    筆者はTypeScript型チェッカーtscをRustではなく、Goに移植しようと思います。拡張可能なRustプラットフォームSWCの作者の発言としては、奇妙に聞こえるかもしれません。理由を説明したいと思います。 なぜtscを移植するのか TypeScriptの普及が進むにつれて、大規模プロジェクトではあるジレンマに直面しています。型チェックは、ワークフローの中で最も時間がかかるプロセスの一つになっているのです。開発者は、イテレーションのサイクルを遅らせることなく、型安全を保証することを望んでいます。 tsc(TypeScript Compiler)は、型の妥当性をチェックし、コードをJavaScriptにコンパイルします。コードの量が多いほど、コンパイルには時間がかかります。中規模から大規模のTypeScriptプロジェクトでは、このコンパイルに膨大な時間がかかります。開発者はワークフロ

    tscをGoに移植 | POSTD
  • GoのGC (garbage collector)について理解する

    プロトタイピングによる不確実性の低減 / Reducing Uncertainty through Prototyping

    GoのGC (garbage collector)について理解する
    Watson
    Watson 2022/04/24
  • UberのエンジニアリングチームがGo GCのチューニングにより70kの削減に成功

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    UberのエンジニアリングチームがGo GCのチューニングにより70kの削減に成功
    Watson
    Watson 2022/04/09
  • 4月新刊情報『実用 Go言語』

    『実用 Go言語 ―システム開発の現場で知っておきたいアドバイス』 渋川 よしき、辻 大志郎、真野 隼記 著 2022年4月22日発売予定 448ページ(予定) ISBN978-4-87311-969-4 定価3,960円(税込) 業務プログラミングの現場でも採用されるようになってきたGo言語。文法はシンプルで学びやすいという特徴を持っていますが、複雑な要件を実現するには、プログラミング言語が提供する構成要素(文法やライブラリ)をさまざまに組み合わせる必要があります。 書は、そんなGoを使う上でのポイントを単なる文法詳解ではなく「よりGoらしく書くには」「実用的なアプリケーションを書くには」といった観点から紹介します。 構造体やインタフェースの使い方からJSON、CSVファイル、Excel、固定長ファイルの扱い方、またログやテスト、環境構築など現場に即した幅広いトピックについて、「Go

    4月新刊情報『実用 Go言語』
    Watson
    Watson 2022/03/29
  • プログラミング言語 Go ドキュメント — プログラミング言語 Go ドキュメント v0.1 documentation

    翻訳プロジェクトについて¶ この翻訳は Sphinx を使って以下のサイトで共同で行っています。翻訳に参加ご希望の方は、 yoshiki at shibu.jp までご連絡ください。 http://bitbucket.org/shibu/golang-docjp/ 翻訳ルール¶ まずはBitbucketのアカウントを作ってご連絡ください。書き込み権限を設定します。 翻訳したいものがある方は上記のBitbucketのサイト上でチケットを発行してください。Issueタブです。大項目単位です。 翻訳は読みやすさを考えて「です・ます」調で統一します。 Sphinxディレクティブを使った相互リンクは暇なときに設定します。もしくは書き込み権限のある方は設定してもらっても構いません。 Mercurialでcloneして翻訳してからcommit、pushしてください。commit前にpull&update

    Watson
    Watson 2022/03/28
  • 『Goならわかるシステムプログラミング 第2版』の発売を開始しました

    ご来店いただきありがとうございます。 日より『Goならわかるシステムプログラミング 第2版』が販売となりましたのでお知らせいたします。 書は、2017年10月に発行された『Goならわかるシステムプログラミング』の改訂版です。改訂にあたり改めて全体を見直し、加筆修正や古い情報の更新のほか、プロセスの実行に関する説明を中心に構成の見直しをしています。また、コンピュータシステムを扱う際に避けて通れないにもかかわらずまとまった説明があまりないシェルやデバッガに関する解説を追加しています。 なお、第1版を直販サイトでお買い上げいただいた方は、カートに入れてクーポンコード「Go2」を指定することで、第2版を15%オフでお求めいただけます(2022年3月末までを予定)。第1版の購入に利用されたメールアドレスでの購入が必要になります。 PDF(紙書籍にも付いてきます)は日よりダウンロード可能、紙書籍

    『Goならわかるシステムプログラミング 第2版』の発売を開始しました
    Watson
    Watson 2022/03/25
  • golangで作るTCPIPプロトコル

    はじめに とりあえずIT業界に入ったら読んでおけという名著はいろいろありますが、その中の1冊がマスタリングTCP/IP入門編でしょう。 僕も買ってはいたものの読むのを途中で挫折していたので、今回しっかり読んでTCP/IPを再勉強してみたいと思います。 マスタリングTCP/IPを読みながらその他わからんことはググりつつ、golangでTCPIPプロトコルそのものを自作してみます。 方針は以下のようにします。 ethernetから作る データのやり取りにnetパッケージは一切使わない (訂正、PCのIPやMacアドレスを取るのにだけ使用しますた) データのやり取りに使うのはsyscallのsendtoとrecvfromだけ socketはRAW_SOCKETを使う golangやネットワークについても初心者の駆け出しですので間違えや実装ミス、変なコードがあるかもですが、生暖かい目でよろしゅうお

    golangで作るTCPIPプロトコル
    Watson
    Watson 2022/03/23
  • numpy より速い?Go の行列演算ライブラリ nune

    ※ Div だけ妙に遅いのが気になる NumPy は Python とは言え中身はC言語で書かれている事を考えると、結構いいパフォーマンスが出ていると言えるでしょう。 サンプルコード iris のロジスティック回帰を nune で書いてみました。 package main import ( "bufio" "fmt" "log" "math" "math/rand" "os" "github.com/vorduin/nune" ) func logisticRegression[T nune.Number](X nune.Tensor[T], y nune.Tensor[T], rate float64, ntrains int) nune.Tensor[T] { ws := make([]float64, X.Size(1)) for i := range ws { ws[i] = (r

    numpy より速い?Go の行列演算ライブラリ nune
    Watson
    Watson 2022/03/02
  • Go performance from version 1.2 to 1.18

    February 2022 Recently I improved the performance of GoAWK – my AWK interpreter written in Go – by switching from a tree-walking interpreter to a bytecode compiler with a virtual machine interpreter. While doing that, I thought it’d be interesting to see how much the performance of Go itself has improved over the years. There are many ways programs written in Go have gotten faster: the Go team and

    Watson
    Watson 2022/02/05