タグ

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

タグの絞り込みを解除

Goに関するluccafortのブックマーク (58)

  • Goのロギングライブラリから見たゼロアロケーション - Speee DEVELOPER BLOG

    はじめに UZOUという広告配信プラットフォームでバックエンドエンジニアをしている@muroon01です。 Goのロギングライブラリであるzerolog, zapは(使用法によりますが)ゼロアロケーションであると言われています。 そこでゼロアロケーションのロギングライブラリとは一体どのようなつくりなのか、またGoのソースをゼロアロケーションにする方法について記述していきたいと思います。 ゼロアロケーションとは? (メモリ)アロケーションとはプログラムが動作するのに必要なメモリの割り当てを意味しており、スタック領域へのもの(静的アロケーション)とヒープ領域へのもの(動的アロケーション)が存在します。 スタック領域へのメモリの割当は割当サイズおよび確保・解放されるタイミングがプログラムの記述時に静的に決まります。 一方、ヒープ領域は宣言時にメモリの最大割当サイズを指定せずに、プログラム実行時に

    Goのロギングライブラリから見たゼロアロケーション - Speee DEVELOPER BLOG
    luccafort
    luccafort 2022/07/14
    面白かった。ログくらいヘビーに使われるものだとアロケーションのコストが馬鹿にならないというのは想像できるので有名どころのロガーライブラリを調べてみたい気持ちになった。
  • Kyoto.go remote #28 LT会 (2022/02/23 13:00〜)

    お知らせ connpassではさらなる価値のあるデータを提供するため、2024年5月23日(木)を以ちましてイベントサーチAPIの無料での提供の廃止を決定いたしました。 2024年5月23日(木)以降より開始予定の「connpass 有料API」の料金プランにつきましてはこちらをご覧ください。 お知らせ connpassをご利用いただく全ユーザーにおいて健全で円滑なイベントの開催や参加いただけるよう、イベント参加者向け・イベント管理者向けのガイドラインページを公開しました。内容をご理解の上、イベント内での違反行為に対応する参考としていただきますようお願いいたします。

    Kyoto.go remote #28 LT会 (2022/02/23 13:00〜)
    luccafort
    luccafort 2022/02/02
    明日13時から開催予定です。Discordにてオンライン開催のLT会です。まだLT登壇枠が1枠空いてるのでもし「お。話せるネタあるぜ!」という奇特なかたがいたらご参加ください。一般参加枠もあるのでお気軽にどうぞ!
  • スレッドセーフなテスト用の時間を固定するライブラリを作った - tenntenn.dev

    はじめに time.Now関数を用いたコードをテストする場合、テスト対象のコードに次のような変更を加える必要があります。 引数に現在時刻を渡す パッケージ変数やフィールドなどに現在時刻を返す関数やインタフェースを設定する context.WithValue関数でコンテキストに現在時刻を設ける どの方法を用いてもプロジェクトの初期から考慮する必要があります。途中で変更するとなると修正が箇所を漏れなく探し出す必要があります。また、パッケージ変数に現在時刻を返す関数を設定した場合、テストを並列に実行することを諦める必要が出てくるでしょう。 このような課題を解決するために、testtimeというライブラリを作成しました。 テストの並列実行と時刻の固定 次のようにパッケージ変数を使ってtime.Now関数のラッパーの挙動を変えてテストする手法があります。 var nowFunc func() tim

    luccafort
    luccafort 2021/07/07
    途中までtesttime便利なのでは?と思って読んでいたのに-overlayフラグがでてからこれめちゃくちゃ便利なのでは?!?!!!!ってなった。
  • Go Conference 2021 Autumn (Online) (2021/11/13 10:00〜)

    Go Conference Tokyo is one of the earliest Go conferences. We hold the event half annually, and the latest will be on November 13rd, 2021. The date or time schedule may be changed. Go Conferenceは半年に1回行われるプログラミング言語Goに関するカンファレンスです。次のGo Conferenceは2021年11月13日に行われます。 日程やタイムスケジュールなどは変更になる可能性があります。 Event website / イベントページ https://gocon.jp/2021autumn/ How to watch the video? / 配信方法 You can watch sessions

    Go Conference 2021 Autumn (Online) (2021/11/13 10:00〜)
    luccafort
    luccafort 2021/05/19
    お、700名超えてるじゃん?開催は今週末じゃん??ヤバいじゃん?????
  • Go 言語で API サーバーの開発をはじめるためのライブラリ選定|maco

    こんにちは、まちいろの工藤です。 まちいろでは開発フレームワークに Rails を採用していますが、最近の新規案件では Go 言語を採用してみています。この記事では、Go で開発を始めるにあたって行ったライブラリ選定の中身を紹介したいと思います。 選定にあたっては、awesome-go や Qiita などの記事を参考にしました。 ModulesGo 1.11 から Go modules が導入されたとのことで、素直に Go modules を利用することにしました。特にハマることもなく利用ができています。 Web Application FrameworkgRPC + grpc-gateway or grpc-web ・https://github.com/grpc/grpc-go ・🙆proto でスキーマ駆動開発が可能 ・🙅‍♂️REST API を提供する場合は grpc-ga

    Go 言語で API サーバーの開発をはじめるためのライブラリ選定|maco
  • kyoto.goコミュニティーを作ったった - おうさまのみみはロバのみみ

    TL;DR 三行で説明すると Umeda.goが休日開催で厳しい Kyotoにもご当地Golangコミュニティーがほしい ないので作る という流れで「KyotoにもUmedagoみたいなコミュニティーほしー!」ってTwitterに投稿してから 1週間で爆速キックオフイベントを開催して無事クロージングできたという話をします。 当日のまとめ kyoto.goコミュニティーのページはこちら kyotogo.connpass.com 当日のイベントの告知ページはこちら kyotogo.connpass.com 活動内容ログはkyoto.rbのscrapbox活用がめちゃくちゃ気に入ってるのでそれを参考にした。 kyoto.goscrapboxページはこちら scrapbox.io 基的にはScrapboxにまとめてあるのでそちらのログを眺めるとなんかやっとるな!という雰囲気がつかめると思いま

    kyoto.goコミュニティーを作ったった - おうさまのみみはロバのみみ
    luccafort
    luccafort 2020/01/23
    初のコミュニティー運営者になっていた。前年サブオーガナイザーならやってもいいかなーとか言ってたらオーガナイザーになってるの最高に草
  • 正しさとGo - Qiita

    はじめに Goの良いところは、最低限の文法を知っていればコードを上から順番に読むことで詳細を容易に理解できることです。 文法の中にシンタックスシュガーや特別な省略が許されていないため多様な表現になることはありません。 そのためGoを書ければGo体と標準ライブラリを読むことができます。 しかし以下の原因により、これらの利点を守ることが難しくなることがあります。 DSL フレームワーク 抽象化 これらは設計として新たな制約を課すことで品質向上や実装を容易にするためのものです。 またこれらを採用する論理立てた 正しい 理由が存在します。 DSL DSLを提供するツールとして、DIのための wire があります。 GoでDIを実現するためには多くの実装を必要とするため、実装量を減らすためにもDIツールが求められてきました。 これは 正しい です。 しかし一方でDSLはコードを読む人間に言語以上

    正しさとGo - Qiita
    luccafort
    luccafort 2018/12/21
    "「コードがシンプルであるためコードレビューで気がつくことができる」"GolangのErrorの処理、面倒だなと思う半面シンプルすぎるくらいにシンプルでどういうときにエラーが返るかわかりやすいので好きなのかも。
  • pvpool〜メルカリの商品閲覧数カウントアップの裏側〜

    メルカリでは出品されている商品の閲覧数を「出品した商品」の一覧や「いいね!した商品」の一覧画面から見ることができます。以下は「いいね!した商品」の一覧画面です。(開発版アプリの画面になります) 赤い枠で囲まれている部分がそれぞれの商品の閲覧数になります。今回紹介する閲覧数のカウントアップのバックエンドはGoで開発されています。 データベース上の商品閲覧数のカウントアップ メルカリでは日々大量のリクエストを処理していますが、そういった中でもデータベースへのアクセスはINSERTやUPDATE等の書き込み処理よりもSELECTによる読み込み処理が圧倒的多数を占めます。(メルカリでは、データベースには主にMySQLを利用していますが、サービスやリージョンによってはGCPが提供しているCloud DatastoreやCloud Spannerを利用している箇所もあります) 商品が閲覧される時に実行

    pvpool〜メルカリの商品閲覧数カウントアップの裏側〜
    luccafort
    luccafort 2018/02/27
    確かにPV数とかリアルタイムに上がっていくのが重要なサービスもあるけどメルカリでの使い方だと完全にリアルタイムである必要性がないというのはあるかもなー。閲覧数が急激に増えてる場合に効果高そう。
  • プライベートでコードを毎日書き続けて2年以上が過ぎた

    いつの間にか2年間継続してコードを書いていたので、その振り返りです。上のインコは日々僕を応援してくれる二羽のインコのうちの一羽です。この後をボロボロに噛みちぎっていきました。 1年目との違い去年こんなポストを書きました。 このとき、自分はコードを1年継続して書いたわけですが、その後また1年継続してコードを書いていました。 1年目とは「書きたい」と思うものも変わりました。また、習慣を維持する労力も小さくなり、コードを書くことそのもの以外の、登壇などの時間を取れるようになりました。 この1年で新たにやったことツール作成markdownをMediumポストにするCLIツールAWS SSMで管理されたパラメーターを環境変数にInjectするツールGoogle Cloud Platform API向けに使える、goonと同様のDatastoreクライアント基盤作成AWS上にTerraform+An

    プライベートでコードを毎日書き続けて2年以上が過ぎた
    luccafort
    luccafort 2018/02/27
    "あくまで平日の平均の時間ですが2~3時間くらいでしょうか。あんまり取れてないかなと思います。"え、平日のプライベート時間で2、3時間取れるってかなり取れているほうだと思ってたが少ないのかという衝撃…。
  • golangでAPIなど外部にアクセスするロジックのテストをする - $shibayu36->blog;

    golangで、例えばGithubAPIを叩くような、特定のAPIにアクセスするロジックを書いた時、何も考えずにテストを書くと、テストを実行する際にもそのまま外部のAPIにアクセスしてしまう。この場合、色んなパターンのテストを書きづらい、依存している外部サービスが落ちたらテストも一緒に落ちるなどの問題が起こる。 このような問題から、統合テストではなくユニットテストのときは手元のみで完結して、外部サービスに依存しない状況でテストを書きたくなることがある。そこで今回は外部にアクセスするロジックを、手元で完結させた状態でテストする方法を試したので、その方法について書いてみる。 テストしたいコード 例えば以下のようなコード。Githubの https://github.com/shibayu36/shibayu36 の最新のリリースタグを取得し、そのリリースタグ名を出力する。これはGithub

    golangでAPIなど外部にアクセスするロジックのテストをする - $shibayu36->blog;
    luccafort
    luccafort 2018/01/12
    外部APIに依存しすぎてるテストコードを改善しようとして心折れたことがあったのでそのときにこういう実装が出来れば良かったのか…という気づきを得ている。
  • Go言語で書いた Web アプリケーションの習作をサービス化して公開するところまでやってみた - えいのうにっき

    もともと数ヶ月前から、Go言語によるWebアプリケーション開発 を読みながら Go での Webアプリケーション開発の勉強をしていた。 Go言語によるWebアプリケーション開発 作者: Mat Ryer,鵜飼文敏,牧野聡出版社/メーカー: オライリージャパン発売日: 2016/01/22メディア: 大型この商品を含むブログ (3件) を見る 「実際に動くもの」を、「手を動かして作りながら学ぶ」のが僕は好きで、今回も同様、それを楽しんでやっていたのだけど、思いの外それっぽいものができあがってしまって。これをそのままローカルで動かすだけじゃおもしろくないな、もったいないな、と思ったので、それをサービス化して公開するところまでやってみた。 かんじんのアプリケーションは↓これ。Yukizuri と書いて「ゆきずり」と読む。 https://yukizuri.moshimo.worksyukizu

    Go言語で書いた Web アプリケーションの習作をサービス化して公開するところまでやってみた - えいのうにっき
    luccafort
    luccafort 2017/12/27
    作って公開までいってるの純粋にすごい。公開するのなにかと面倒というか考慮しないといけないことあって大変だったりするからなー。
  • mercari/datastore実戦投入

    DatastoreについてみなさまGCPをお使いになっているでしょうか。 GCPにはバックエンドのDBとしてCloudSQLというRDBと、NoSQLであるDatastoreというのがあります。 周囲の事例を聞く限りは、マスターデータなど変化が少なかったり、seedデータ的なものを用意しなければならないものをのぞいて、基的にDatastoreを利用している印象です。 また、GAEで開発する場合はinternalなAPIからDatastoreを利用できる一方、GKEなどからは、GCPの外部向けAPIを呼び出すことでデータを送受信します。 さて、自分はいつもGoAPIを書くのがいいよ!と触れ回ってるわけですが、GCP上で開発を進める際には前述の通りDBにはDatastoreを使っています。 このDatastoreですが、そのまま使うと自前でキーを発行する必要があったり、値をキャッシュしたり

    mercari/datastore実戦投入
    luccafort
    luccafort 2017/11/25
    導入に3〜4日かかったとあるけど逆に考えると手探り状態でその程度で済んだのだと考えられてすごーい!という雑な感想が出てくる。しかしGoのコードみてたら書きたくなってきた。
  • 株式会社リコーを退職します: 柴田 芳樹 (Yoshiki Shibata)

    2009年9月から働き始めた株式会社リコーを8月31日付けで退職します。丸8年働いたことになります。現在57歳であり、定年退職までにはまだ2年と少しありますが、「セカンドキャリア制度」(早期退職制度のようなもの)の適用を受けて退職します。 8年間の会社での業務や退職理由については述べませんが、業務以外の私的活動の成果をまとめてみると次のようになります。 翻訳(8冊):『アプレンティスシップ・パターン』『プログラミング原論』『Android SDK 開発クックブック』『プログラミング言語Goフレーズブック』『Objective‐C明解プログラミング』『APIデザインの極意』『Java SE 8 実践プログラミング』『プログラミング言語Go』 自著(2冊+α):『ソフトウェア開発の名著を読む 【第二版】』『プログラマー”まだまだ”現役続行』『API設計�の基礎』 Jolt Award読書

    株式会社リコーを退職します: 柴田 芳樹 (Yoshiki Shibata)
    luccafort
    luccafort 2017/07/28
    定年退職まであと2年で転職ってすごいな!
  • Go 2にむけて

    The Go Blogの日語訳を公開しています。修正は https://github.com/ymotongpoo/goblog-ja/ まで。 Go 2にむけて Toward Go 2 by Russ Cox はじめに (この文章は日行われた Gophercon 2017 での私の発表の書き起こしで、Goコミュニティ全体にGo 2のための議論や計画をする中での支援を求めるものです。 動画が公開されたらこちらにリンクする予定です。) Rob Pike、Robert Griesemer、そしてKen Thompsonが新しいプログラミング言語について数日議論を重ねた後、2007年9月25日にRobが「Go」という名前を提案しました。 翌年、Ian Lance Taylorと私がチームに参加し、5人で2つのコンパイラと標準ライブラリを開発し、その成果が2009年11月10日のオープンソース

    luccafort
    luccafort 2017/07/20
    重要でないと思ったら一度寝かせるというのはいい考えかもしれない。そこで大きな問題になれば直すべく動くし、そうでなければ無視して構わないレベルのものだと判断できるもんな。
  • Rust言語による新しいDockerコンテナランタイム実装「Railcar」、オラクルがオープンソースで公開。なぜRustでコンテナランタイムを実装したのか? - Publickey

    Rust言語による新しいDockerコンテナランタイム実装「Railcar」、オラクルがオープンソースで公開。なぜRustでコンテナランタイムを実装したのか? Rust言語で実装したコンテナランタイムの「Railcar」を、オラクルがオープンソースとしてGitHubで公開しました。 Railcarはコンテナランタイム標準であるOCI(Open Container Initiative)に準拠してているため、Dockerのバックエンドとしても利用可能と説明されています。 なぜDockerRust言語で実装するのか Railcarの公開を明らかにしたOracle Developers Blogに投稿された記事「Building a Container Runtime in Rust」によると、Rust言語でコンテナランタイムを実装した理由が次のように説明されています。少し長いのですが、引用し

    Rust言語による新しいDockerコンテナランタイム実装「Railcar」、オラクルがオープンソースで公開。なぜRustでコンテナランタイムを実装したのか? - Publickey
    luccafort
    luccafort 2017/07/10
    Oracleというだけで良くも悪くも補正入ってしまう…。
  • Go言語LT大会で登壇しました #golang

    こんにちは。@tenntennです。 6月5日に開催されたGo言語LT大会で登壇してきましたので、そのレポートを書きたいと思います。 go-beginners.connpass.com Go言語LT大会とは Goビギナーズが主催するGoに関するLTを行う勉強会です。 Goの注目度が高まっていることもあって、今回は100名を越える応募がありました。 オススメの標準・準標準パッケージ 20選 私はゲスト講演ということでLTではなく、30分枠で登壇させて頂きました。 「オススメの標準・準標準パッケージ 20選」というタイトルで私が好きなパッケージを挙げていき、どういう点が便利でどう使うと良いかという点をお話しました。 www.slideshare.net ちなみに私が挙げたパッケージは以下のパッケージです。 fmt io io/ioutil strings bytes bufio encodin

    Go言語LT大会で登壇しました #golang
    luccafort
    luccafort 2017/06/07
    定期的にGo合宿してほしさある…。もくもく会みたいに土日の空いた時間でやればいいんじゃ!という結論に大体の場合なるんだけども。とりあえず今はGoよりもRoRの基礎部分を固めたい。少なくとも使えるレベルにならね
  • golang.tokyo#6で登壇しました #golang

    こんにちは。@tenntennです。 6月1日に開催されたgolang.tokyo#6にて登壇しました。 今回はそのレポートを書きたいと思います。 golangtokyo.connpass.com golang.tokyoとは? golang.tokyoは、プログラミング言語のGoを用いて製品開発を行っている企業が集まり、日々の製品開発で得たノウハウを共有する場として開催されている勉強会です。 Goの注目度が高まっているおかげもあって、毎回募集人数を大幅に越える応募人数となっています。 もし抽選でハズレてしまって、なかなか参加できないという方は、#4からセッションを録画していますので、golang.tokyoのYouTubeチャンネルをぜひご覧ください。 セッション一覧 今回のgolang.tokyoはセッション2つにライトニングトークが4つという構成で行われました。 ここでは簡単にそれら

    golang.tokyo#6で登壇しました #golang
    luccafort
    luccafort 2017/06/05
    CSViewer良さげ。この手のツールは各言語あるけどどの環境でも動かせるのでGoはこういうのが強みだよなあ。
  • Big Sky :: Re: Go言語感想文

    幾らか言いたい事があったので。 Go言語感想文 - なるせにっき 序 最近、敵情視察を兼ねた仕事ととしてGoでアプリケーションを書いていた。このアプリケーションがどんなものかはそのうち id:tagomoris さんがどこかで話すと思うけれど、この コンポーネント ... http://naruse.hateblo.jp/entry/2017/06/02/203441 GoroutineとChannel Goroutineはようするにスレッドなんですが、文法と実装の支援でより気軽に使えるのが他の言語との違いでしょうか。なので、Goroutineをどれだけほいほい使うべきかというコスト感覚を身につけることがとても大事な気がします。Rubyなどとは気持ちを切り替えていく必要があるでしょう。ぼくはまだ切り替えきれていません。 Goroutine はスレッドではありません。Goroutine はコ

    Big Sky :: Re: Go言語感想文
    luccafort
    luccafort 2017/06/03
    元記事で違和感を覚えてたら詳細が書かれていて知らなかった知見に出会えた。そうかコルーチンだと思ってたがコルーチンでありスレッドであるのが正解だったのか知らなんだ。テストの書き方も同様。
  • Go言語感想文 - なるせにっき

    序 最近、敵情視察を兼ねた仕事ととしてGoでアプリケーションを書いていた。このアプリケーションがどんなものかはそのうちid:tagomorisさんがどこかで話すと思うけれど、このコンポーネントがOSS化される予定はいまのところないので、そこで得た知見をここにまとめておくことにする。 GoroutineとChannel さて、GoといえばGoroutineとChannelですね。 Goroutineはようするにスレッドなんですが、文法と実装の支援でより気軽に使えるのが他の言語との違いでしょうか。なので、Goroutineをどれだけほいほい使うべきかというコスト感覚を身につけることがとても大事な気がします。Rubyなどとは気持ちを切り替えていく必要があるでしょう。ぼくはまだ切り替えきれていません。 もう一つがChannelですね。これは端的にはメッセージキューです。 Goは前述の通り同時に動く

    Go言語感想文 - なるせにっき
    luccafort
    luccafort 2017/06/03
    いくつか「あれ?これ勘違いされてるんじゃね?」と思ってたらすでにmattnさんが訂正エントリ書いてた。http://mattn.kaoriya.net/software/lang/go/20170603001109.htm
  • Gopher Fest 2017に参加してきました #golang

    こんにちは。@tenntennです。 現地時間の5月15日にアメリカのサンフランシスコで行われたGopher Fest 2017に参加してきましたので、参加レポートを書きたいと思います。 www.meetup.com Gopher Festとは? Gopher Festとは、毎年Google I/Oに合わせて開催されるGoSFが主催するイベントです。 今年も現地時間の5月19日〜5月21日に開催されたGoogle I/O 2017に合わせて開催されました。 規模こそはそこまで大きくありませんが、開催地がサンフランシスコということもあって、GoogleGoチームのメンバーや著名なGoエンジニアが登壇するため、毎年楽しみなイベントです。 また、近年はGoogle I/OではGoに関する話題は扱われなくなっており、世界中のエンジニアが集まってGoに関する情報を交換できるのはGopherConと

    Gopher Fest 2017に参加してきました #golang
    luccafort
    luccafort 2017/06/01
    [Google I/O]これ読んで英語の重要性を改めて感じたので頑張ろう…