タグ

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

タグの絞り込みを解除

Golangに関するmapk0yのブックマーク (1,117)

  • Go言語の不満 - まめめも

    ちょっとバイナリ配布したいツール↓があったので、Go言語と戯れました。 zenn.dev ほぼはじめてGoを使ったので、にわかほど語りたがる法則に従って、Go言語の感想を書きます。 新しい言語にふれたときは、できることには気づきにくく、できないことに気づきやすいので、不満が多めです。主な比較対象はRuby、C言語、JS/TS、Rustあたりです。 よかったところ ひとことで言えば「便利になったC言語」という感じでした。結構低レベルなAPIも揃っていてよかった(デーモン化が素直にできなかったこと以外)。 Rustと比べたらストレスフリーです。思った通りに書くだけでとりあえず動いてくれる。すばらしい。 見た目はあきらかに長くてダサいですが、こだわりを捨てて割り切って書けると言えなくもない。 配布しやすいシングルバイナリが作れるのはやはりよい。今回Goを選んだ理由がこれ。 細かいカプセル化がむず

    Go言語の不満 - まめめも
  • Go 言語製実行ファイル解析の紹介 ~関数情報~ - FFRIエンジニアブログ

    はじめに お久しぶりです。セキュリティエンジニアの桑原です。 近年、Go 言語によって作成されたマルウェアが増加しています。 Go 言語の特徴として開発の容易さや任意の環境に向けてビルドを行うクロスコンパイルが可能であるといった点があります。 攻撃者も Go 言語を使用することで、手早く、複数の環境を攻撃できるマルウェアを開発できることが増加要因の 1 つとして挙げられます。 また、以前の記事でも紹介した通り、Go 言語製の実行ファイルは C/C++ 等で作成された実行ファイルとは大きく異なるバイナリ構造をしています。 このため、Go 言語を使用するだけでパターンマッチングによる検出を容易に回避できる可能性があることも増加要因として考えられます。 私たちセキュリティエンジニアは最新の攻撃者の動向に対応するため、Go 言語製マルウェアの解析も必要になってくることでしょう。 そこで、私は先日、

    Go 言語製実行ファイル解析の紹介 ~関数情報~ - FFRIエンジニアブログ
  • golangで便利ツール作ろうと思ったらos/execでハマった話 - Qiita

    はじめに PoCの初期段階などで、いくつかのシステムを組み合わせて動作させるような場面では、 リポジトリが分散し、開発者ごとに違う言語で小規模なシステムを構築していることがあります。 そんな中で、動作確認をしたり、不具合を再現させたりする際、以下のような手作業が発生していました。 1. システムAを実行してCSVを吐く 2. CSVをシステムB直下にコピーする 3. システムBを実行して結果を得る プログラマーの三大美徳の怠惰担当の私は、手動で何かをすることが嫌いなので、自動化するツールを作成していきます。 シェルスクリプトで書いても良いのですが、実行するデータパターンが複雑だったり、分岐したりすると面倒なので、私はgolangで作成することが多いです。 この記事では、そんな中でハマった出来事と、回避方法をご紹介します。 根解決していないものが多いので要注意&コメントお待ちしています。

    golangで便利ツール作ろうと思ったらos/execでハマった話 - Qiita
  • ライブラリとして公開したGoのinterfaceを変更するのは難しいと言う話 - 焼売飯店

    昨日Twitterに書いた内容に、sivchariさんとhajimehoshiさんからリプライをいただいたので、備忘録的にまとめておきます。 発端 interface型と非interface型の後方互換性について interface型を公開した場合 1. メソッドの追加 2. メソッドのシグニチャの変更 3. メソッドの削除 公開されたinterface型を変更する場合の後方互換性についてのまとめ 非interface型を公開した場合 1. メソッドの追加 2. メソッドのシグニチャの変更 3. メソッドの削除 公開された非interface型を変更する場合の後方互換性についてのまとめ その他の後方互換性を崩さない機能拡張のパターンの紹介 他から実装できないinterfaceにする interfaceを合成する 内部用のinterfaceを分け、構造体型を公開する まとめ 発端 昨日、フュ

    ライブラリとして公開したGoのinterfaceを変更するのは難しいと言う話 - 焼売飯店
  • Go1.20リリース連載 contextパッケージのWithCancelCauseとCause | フューチャー技術ブログ

    はじめにTIG真野です。Go 1.20リリース連載の2目は、Minor changes to the libraryの context についてです。Go 1.7で context.Contextが入ってから、context界隈において久しぶりのアップデートです。 contextの歴史やダイジェストは、澁川さんのGo 1.16のsignal.NotifyContext() 記事に書かれていますので、ぜひ確認ください。context自体にの説明は、さき(H.Saki)さんの よくわかるcontextの使い方というZenn Bookを読むとすごく詳しくなれると思います。 リリースノートには、WithCancelCause()と Cause() 関数が追加され、キャンセル理由を追加・取得できるようにするという内容です。なぜか2023.1.22時点(go 1.20rc3)だとGoDocにはWit

    Go1.20リリース連載 contextパッケージのWithCancelCauseとCause | フューチャー技術ブログ
  • runn クックブック

    runnの開発者が書くrunnの使い方を紹介するです。 導入から高度な使い方まで幅広くレシピを収録していきます。 対象バージョンは v0.115.0 です。 ------------------------------ ※このは、不定期でレシピの追加や編集をする形で運用する予定です。 各ページ(チャプター)のURLはできるだけ変更がないようにいたしますが、変わる可能性があります。 また、無料公開範囲は変更する可能性があります。 ページにリンクを貼る場合や、特に購入の際はご注意ください。 ------------------------------

    runn クックブック
  • 言語のスレッド実装の雑な話(Green threadからGoのgoroutineまで)

    Twitterで "green thread" という単語をたまたま見かけたので、知っていることをつぶやいたよ。 Green thread 言語のスレッドとOSのスレッドの関係 N:1 mapping 言語のスレッドの全てがひとつのOSのスレッドの上で実行されるもの。その代表が上記のJavagreen thread。 OSのシステムコールを呼ぶときには必ずnonblockingモードを使い、EAGAIN または EWOULDBLOCKが返ってきたときには他のスレッドの実行権に譲るようにする必要がある。うっかりシステムコールでブロックされてしまうと、全部のスレッドが巻き添えになって動けなくなる。 スレッドの生成やコンテキストの切り替えは軽い。しかし、マルチコアを生かすことができないため、シングルコアの環境でのみ使用される。 1:1 mapping OSのスレッドと言語のスレッドが1対1対応

    言語のスレッド実装の雑な話(Green threadからGoのgoroutineまで)
  • Go 1.20 Cryptography

    04 Jan 2023 Go 1.20 Cryptography The first second release candidate of Go 1.20 is out![1] This is the first release I participated in as an independent maintainer, after leaving Google to become a professional Open Source maintainer. (By the way, that’s going great, and I’m going to write more about it here soon!) I’m pretty happy with the work that’s landing in it. There are both exciting new API

    Go 1.20 Cryptography
  • Golang is evil on shitty networks

    This adventure starts with git-lfs. It was a normal day and I added a 500 MB binary asset to my server templates. When I went to push it, I found it interesting that git-lfs was uploading at 50KB per second. Being that I had a bit of free time that I’d much rather be spending on something else than waiting FOREVER to upload a file, I decided to head upstairs and plug into the ethernet. I watched i

  • go.modについての陥りやすい誤解 - ぽよメモ

    はじめに go.modにおけるGoのバージョン指定 依存先のgoディレクティブの方が古いバージョンを指す場合 依存先のgoディレクティブの方が新しいバージョンを指す場合 goのバージョンよりgoディレクティブが先行する場合 goディレクティブまとめ 1.21以降のgo.modにおけるGoのバージョン指定 require時のバージョンの指定 Minimal version selection モジュールのバージョン replaceの波及先 依存先が別のパスにreplaceしている場合 go.sum まとめ はじめに これはあくあたん工房アドベントカレンダー 2021 11日目の記事です。 ポエムを書いていたら気分が暗くなったので、消して自分の過去のメモを記事にすることにしました。そんな解釈するやつおらへんやろwwと是非笑って読んでください。 2023-09-19追記:Go 1.21からいくつ

    go.modについての陥りやすい誤解 - ぽよメモ
  • Golang の Generics で使いたいものは大体 samber/lo にあった話 - Qiita

    はじめに 記事は Go Advent Calendar 2022 の18日目の記事です。 Generics を使った関数でやりたかったことが、samber/lo に大体揃ってたという話をします。 すでに自前で書いてた関数もいくつかあったのですが、このライブラリを知り置き換えていったという体験談です。 ※結果的に「samber/lo のなかでこの辺り使えるかも」というものを私の独断と偏見でピックアップする記事になってます。 samber/lo とは samber/lo は 16日目のアベンドカレンダーの記事 でも取り上げられていまして、そこから説明を引用させていただきました。 samber/loは,多種多様な便利関数を提供するパッケージです。 JavaScriptのライブラリのLodashライクであるとREADMEにも記載があります。 個人的には大好きなパッケージでして,Map,Filte

    Golang の Generics で使いたいものは大体 samber/lo にあった話 - Qiita
  • Go言語に出したプロポーザルが通った:{bytes,strings}.ContainsFuncの追加 - プログラムモグモグ

    今年の夏にGo言語に以下のようなプロポーザルを出していたのですが、それが先ほど承認されました。標準パッケージの関数追加になります。 proposal: bytes, strings: add ContainsFunc · Issue #54386 · golang/go · GitHub Go言語のstringsパッケージとbytesパッケージには、文字列から文字や部分文字列を探す関数がいくつかあります。 探す文字の位置を返す関数、最後から探す関数、そういう文字が含まれるかどうかを返す関数を表にまとめると、次のようになります。 Find what? Index* LastIndex* Contains* substr string Index(s, substr string) int LastIndex(s, substr string) int Contains(s, substr s

    Go言語に出したプロポーザルが通った:{bytes,strings}.ContainsFuncの追加 - プログラムモグモグ
  • GoでDBを使ったアプリを書くときみんなどうしてる? Tonamelはどうしているか晒してみます - KAYAC Engineers' Blog

    こんにちは。ゲームコミュニティ事業部サーバサイドエンジニアの谷脇です。 この記事はTech KAYAC Advent Calendar 2022の2日目です。 私はTonamelというWebサービスを運営しています。Tonamelでは、GoPerlを用いてサーバサイドアプリケーションを構築しています。 この記事ではTonamelでのパッケージ構成や、DBを使う際に用いているライブラリについて紹介します。 そもそもTonamelって何 パッケージ構成やは、アプリケーションの特性や、実装の複雑さなども考慮するため、前提として作っているものを説明します。 tonamel.com Tonamelとはeスポーツを始めとした競技の大会を開催するときに用いるプラットフォームです。大会主催者と参加者双方が利用します。 Tonamelの機能説明 この図に挙げているように、『参加者管理』と『トーナメント表』

    GoでDBを使ったアプリを書くときみんなどうしてる? Tonamelはどうしているか晒してみます - KAYAC Engineers' Blog
  • Goでスタイリッシュにエラーをラップする方法を学んだ - カミナシ エンジニアブログ

    こんにちは。カミナシ ソフトウェアエンジニアの @aoman です。 つい先日、Goで有名な@tenntennさんがConnpassで募集していたGopher塾#2に参加させていただきました。 tenntenn.connpass.com 大変勉強になりおすすめです!筆者が参加したのは第一回目ですが、二回目三回目と予定されているようなので、有料講義ではありますが気になる方はぜひ参加してみてください!学生さんであれば無料の抽選枠もあります。 その際に紹介されていたコードで、エラーのラップ関数があったのですが、これが「メッチャアタマイイ!!スタイリッシュ!!」と感動しました。そのコードは、Goの公式ページである https://go.dev/ のWebサイトを実装しているリポジトリ pkgsite 内の internal/derrors パッケージで実装されています(GitHubリポジトリはミラ

    Goでスタイリッシュにエラーをラップする方法を学んだ - カミナシ エンジニアブログ
  • Ubie は Go と Node.js の会社になります

    Ubie では、創業当初から Server-Side Kotlin を推進してきましたが、全社的な技術選定を再度行い、これからは Go と Node.js を中心とすることにしました。 記事では、Go と Node.js を選定した理由や、それを普及させる取り組み、そして選定の流れを紹介します。 経緯 これまで Ubie では技術スタックを発散させてきていて、現在は KotlinGo、Node.js、RubyPython のバックエンドサービスが動いています。以前は新規開発が多く、それぞれに携わるメンバーが技術選定をすることにより、最大瞬間風速を出せるなどのメリットがありました。しかし、現在では弊害が目立ってきています。 まず、事業成長に伴って運用の重要性が増しています。人材が潤沢とは言えないスタートアップにおいて、様々な技術スタックを安定運用することはコストが高すぎると感じています

    Ubie は Go と Node.js の会社になります
  • GoとテストとSDKとGCP - KAYAC engineers' blog

    SREチーム(新卒)の市川恭佑です。これはKAYAC Advent Calendar 2022の9日目の記事です。 今年の弊社アドベントカレンダーは、筋肉やランニング、さらにはサウナなど、多様性に富んだ面白いエントリが出揃っています。 自分も好きなファッションについて書きたくなってしまったのですが、ここはグッと気持ちを抑えて、仕事で触った技術について書きます。 ※ この記事のタイトルは、酒とゲームとインフラとGCPというイベントのオマージュです。 仕事の近況報告 まず、最近どんな仕事をしているのかについて報告させてください。恐らく誰も興味がないと思いますが、年末のアドベントカレンダー企画ということもあるので...... Amazon Web Services(AWS)を用いた自社サービス 今年の4月に新卒入社してから、技術ブログを2執筆しました。下記がそのリンクです。 techblog.

    GoとテストとSDKとGCP - KAYAC engineers' blog
  • Go1.20 New Features

    Go1.20 が2023年2月2日にリリースされ、そのリリースノートが公開されています。この記事ではその中から気になったものを抜粋し、いくつかの機能に関しては使用例も載せていきます。 それでは見ていきましょう! spec slice から array への変更が可能になりました。 Go1.17 では slice から array の pointer に変換できる言語仕様が追加されましたが、slice から array に変換するには一度 pointer を経由しなければいけませんでした。Go1.20 からは直接 slice から array に変換できるようになります。 /* slice を要素数4の array に変換する */ x := []int{1, 2, 3, 4} // Go1.20 より前 a1 := *(*[4]int)(x) // Go1.20 以降 a2 := [4]i

    Go1.20 New Features
  • そびえ立つ n 万行の csv を Go 言語で簡単クッキング - ANDPAD Tech Blog

    はじめまして、バックエンドエンジニアをしています武山 (bushiyama) です。 この記事は ANDPAD Advent Calendar 2022 の 1日目の記事です。 そんなルールはありませんが、アドベンドカレンダー 2022 初日なので初級な内容で暖めていきたいと存じます。 お題 非エンジニア職「ちょっとこの csv を集計したいんだけど、件数が多すぎなので助けて わたし「おk そもそも、システム上で集計できるよう諸々設計するのが最善ではあります。 しかしどんなに完璧なシステムを作っても、エンジニアには生涯で3回ぐらいは n 万行の CSV に立ち向かわなければならない日が来ます。 これは、わたしの直近の戦いの記録である。 なにはなくとも、まず要件整理 Excel などで開ければ vlookup と sum で簡単にとれるようですが、件数が多すぎて無理なよくあるやつです。 要望

    そびえ立つ n 万行の csv を Go 言語で簡単クッキング - ANDPAD Tech Blog
  • Goでダブルポインタを知った話 - カミナシ エンジニアブログ

    こんにちは。カミナシ ソフトウェアエンジニアのAomanです。 最近ちょこちょこアルゴリズムやデータ構造、Goのキャッチアップしています。 そんな中、go.devのブログ Go blog のとある記事でダブルポインタを使用するコードに出会いました。筆者は今まで、RubyJavaScript/TypeScriptなどの言語を多く触っていたためか、お恥ずかしながらダブルポインタを使うコードを初めて見たので「なんなのだこれは…」と戸惑いました。記事ではそんなダブルポインタが使われていたコードについて、簡単にご紹介したいと思います。 そもそもダブルポインタとは? その名の通りポインタのポインタのことなのですが、わからない方は下記の記事がわかりやすくまとまっており参考になると思います。 daeudaeu.com ダブルポインタと聞いて、まずはじめに思った感想は「そんなもの必要?」です。今まで使っ

    Goでダブルポインタを知った話 - カミナシ エンジニアブログ
  • Mirrativ のバックエンドで使っているGoライブラリを紹介する! - Mirrativ Tech Blog

    こんにちは、バックエンドエンジニアの夏(なつ)です。今回はMirrativのバックエンドで使っているライブラリをご紹介します。 これらの記事のバックエンド版になります!(2年越し) tech.mirrativ.stream tech.mirrativ.stream ライブラリ一覧 https://pkg.go.dev/ オリジナルの The Go gopher(Gopherくん) は Renée French によるデザイン cloud.google.com/go/bigquery 分析チームが生成したユーザの特徴量などがBigQuery上に存在しているため、それらをバッチ処理でMySQL上に取得する際に利用しています。 tech.mirrativ.stream cloud.google.com/go/compute/metadata 開発環境などでしか動いてほしくない処理が番環境上で動

    Mirrativ のバックエンドで使っているGoライブラリを紹介する! - Mirrativ Tech Blog