Go Conference 2023, "Go"ld Sponsor Session https://gocon.jp/2023/sessions/A5-SP/
ある仕事でそれまでRubyで書かれていたサーバーサイドをGo言語ですべて書き直すことになって、それまでRubyのコードを書いていた僕はそのままGo言語を書くことになった。その仕事そのものはお客様(僕は外部委託のエンジニアとして参画していた)との関係も良好で素晴らしい仕事をさせてもらうことができたと思っているが、Go言語だけは好きになれなかった。 はじめは流行っている言語だから何か素晴らしい魅力があるのではないかと期待していた。しかし書き始めるうちにどうも自分には合わないなと思うようになり、2年ほど書いて案件の契約が終わる頃にはGo言語でサーバーサイドを書くことは危険だとさえ思うようになった。 あれから数年がたちますますGo言語の案件は増えている。サーバーサイドを書く選択肢としてGo言語を選択する会社も増えている。しかし本当にそれでいいのか?ただ流行っているからという理由だけで選択するにはあ
Dockerは11月16日(米国時間)、「Apple Silicon M1 Chips and Docker - Docker Blog」において、MacでDockerコンテナ環境を構築できるツール「Docker Desktop for Mac」におけるApple M1への対応についてどのような課題があるのかについて伝えた。正式なプロダクトの登場まではまだ時間がかかると見られるが、現在どの段階にあり、課題として何が残っているのかが簡潔に説明されている。 Dockerが説明している内容の主なポイントは次のとおり。 Docker DesktopはバックエンドにGo、ダッシュボードにElectronを使用している。これらプロジェクトは現在Apple M1への対応を進めており、Docker側はこれらプロジェクトの進捗に注力している プロダクトの品質を確保するために自動テスト環境を構築する必要があり
夏のある日、GoのgRPCが、Rustよりも2倍早いという記事を見つけました。「おいおい、測定ミスだろ」と強がっていましたが、日々、不安は高まっていきます。真実の愛であれば、疑うことは許されませんが、エンジニアの言語への愛など、所詮、状況に応じて使い分けるような打算的な愛。確認してみました。 性能測定結果上記の記事と同じく、gRPCのサーバソフトウェアは、Goはgrpc-go、Rustはtonicのgreeterの性能を、gRPCのクライアントソフトウェアghzを使って、測定しました。ハードウェアは、AWSを利用し、サーバはc5a.8xlarge(32 vCPU/64 GiB)インスタンス、クライアントはc5a.16xlarge(64 vCPU/128 GiB)インスタンスを使いました。 1台のクライアントインスタンスは、同時に3,000個のgRPCクライアントを立ち上げ、合計で6,000
0. 短いまとめ 300万以上の証明書の失効を迫られたLet's Encryptのインシデントは「Golangでよくある間違い」と書かれているようなバグが原因でした。 1. はじめに、 Let's Encryptは、無料でサーバ証明書を自動化して発行するサービスを行う非営利団体として2014年に設立されました。 2015年にサービス開始されると証明書の発行数はぐんぐん伸び、先月末のプレスリリースでは累計10億枚のサーバ証明書を発行したことがアナウンスされました「Let's Encrypt Has Issued a Billion Certificates」。CTLogの調査から、2020年2月末の時点では有効な全証明書の38.4%がLet's Encryptの証明書であるとみられています「Certificate Validity Dates」。 無料の証明書を提供してもらえるのは非常に嬉し
はじめに データサイエンティストでなかったとしても、数値データを使って様々な解析をする際には CSV ファイル等ファイルを読み込み、数値の配列としてメモリに保持して、それらをループ等で利用して解析を行っておられると思います。 その際、配列は1次元目に行、2次元目に列、を格納するのが一般的です。多くのケースではこの方法で事足りるのですが、解析を行ううちに「列としてデータの固まりを扱いたい」「ラベル付けされた列を扱いたい」と感じる事が出てくると思います。 これを簡単にしてくれるのが「データフレーム」です。 データフレーム4種 本記事では Go 言語から扱えるデータフレームを4つご紹介します。 QFrame https://github.com/tobgu/qframe QFrame は、フィルタリング、集計、およびデータ操作をサポートするイミュータブルなデータフレームです。 QFrame での
どうも、moriです。 AWS SDK for Goを使う開発で開発環境 (IDE)としてAWS Cloud9を使ってみたので、作成方法と実際にコードを書いてデバッグ実行するところまでを紹介したいと思います。 AWS Cloud9概要 ブラウザのみでコードを記述、実行、デバッグできるクラウドベースの統合開発環境 (IDE) です。 コードエディタ デバッガー ターミナル が内包されており、多くの言語ツールがサポートされています。サポートされているブラウザは、Google Chrome、Safari、Firefox、Microsoft Edge の最新バージョンです。 大きな特徴として、以下が挙げられます。 ペアプログラミングサポートをサポートしている 開発環境をチームと共有し、ペアプログラミングを一緒に行うことができます。 リアルタイムで確認できるので、拠点の離れたメンバーともやりやすいか
ジェネリクスの話題になると常に出てくるのが、 for ループの代わりに関数型スタイルで書きたいという要望です。 for ループで書くのは、可読性が悪く、筋力がいるとまで言う人もいます。 しかし、ジェネリクスが追加されても、このスタイルのプログラミングは実用的にはなりません。ジェネリクス以外にも足りない部分がたくさんあるのです。 例えば、次のようなコードを考えてみましょう。 type PointLog struct { ID int64 UserID int64 Point int32 } // 今の書き方 func UserTotalScore(log []PointLog, userID int64) int64 { var t int64 = 0 for _, p := range log { if p.UserID == userID { t += int64(p.Point) }
私はGo言語が気に入っていますし、多くの場面で使用します。現にこのブログもGoで書いています。Goは便利な言語ですが、優れた言語とは言えません。つまり、悪くはないけれど、十分ではないということです。 満足できない言語を使用する際は注意が必要です。注意を怠ると、その言語を次の20年間使い続ける羽目になるかもしれないからです。 私のGoに対する主な不満を本文にまとめました。既に何度も指摘されていることも含まれていますが、中にはこれまでほとんど話題になっていない指摘もあります。 これから列挙する全ての課題には既に解決策があることを示すため、私が優良な言語と考えるRustやHaskellと比較して説明します。 汎用プログラミング 課題 誰でもさまざまな事柄に幅広く対応できるコードを記述したいと考えます。例えば数のリストの合計を求めるために定義した関数が、小数、整数、またその他の合計を求められるもの
O'Reilly Japan, Inc. 様に献本頂きました。ありがとうございます。 そして献本頂く際にお声を掛けて頂いた、本書の翻訳を担当された ymotongpoo さんにもお礼を申し上げます。ありがとうございます。 本書の訳は非常に素晴らしく、とても原文が英文であったとは思えないほど綺麗で、読んでいく中で「原文でどの様に表現されているんだろう」といった引っかかりも無く、とてもスムーズに読み進められました。 Go 言語に関わって随分と長くなってきました。初めて Go を知ってからユーザがどんどん増える様を見る事が出来るのは正直に言って非常に嬉しいです。 ふと Go の魅力は何かと聞かれたら幾つか挙げる事が出来ますが、間違いなく選ぶのが「非同期処理の簡単さ」です。これまで多くの開発者が OS スレッドで実現してきた非同期処理を、Go 言語は少ないイディオムとインテリジェントなランタイムを
Goby is an object-oriented interpreter language deeply inspired by Ruby as well as its core implementation by 100% pure Go. Moreover, it has standard libraries to provide several features such as the Plugin system. Note that we do not intend to reproduce whole of the honorable works of Ruby syntax/implementation/libraries. The expected use case for Goby would be backend development. With this goal
自分のブログが批判とはいえ取り上げられるのは純粋にうれしいです。面と向かって言われたら凹むかもしれませんが、「自分のブログが取り上げられた」といううれしさだけが残るのはネット上ならではなのかもしれません。 んで、こんな時はおとなしくしているのが正しい態度なのかもしれませが、あえて反応してみようかなと。 [ad#top-1] 一番多かったのは、自分が慣れている言語と違うのを偏屈って言うのはちがうんじゃないかって意見ですかね。文法について誤ったことを書いたのは単純に僕の知識不足だとして、CやJavaがすべてじゃねーよって意見。 自然言語を例に挙げている人もいました。英語と日本語とでは動詞と目的語の位置が違うのと同じように、プログラミング言語だっていろいろな文法があっていいんじゃないかって言われて、たしかにその通りだと思ったけど・・・ 宗教を例にあげてる方もいました。 いやちょっと待って、自然言
ざっくりGo言語を触ってきました。 今までJavaとかC#をメインに使ってきた僕としては、一見先祖返りしたような仕様にちょっと戸惑いました。 「コンパイル速度を上げる」目的で作った言語とのことで、その目的のためにコーディングしやすさをある意味犠牲にした、といいう点は理解できます。 が、明らかにコンパイル速度(あるいは実行速度)とは関係ないところで使い勝手を「わざと」悪くしたとしか思えない仕様に、Googleエンジニアの偏屈さを感じずにはいられません。 僕の単なる認識不足だけかもしれませんが、僕自身が感じた”偏屈”と思ったところを書いておきます。 ※アイキャッチ画像に自作Gopher君を載せていますが、Gopherの原著作者はRenée French氏です。 [ad#top-1] nullじゃなくてnil 「何もない」を表すnilですが、どちらかというとnullと表現する言語の方が多いです。
今日こんなツイートをした。 @mattn_jp よろしければベターな理由をm(_ _)m 名前空間を短くする作法なのはわかるのですがメモリやGCやコンパイラなど、どの辺に優しい感じですか? — Ryuji IWATA (@qt_luigi) April 5, 2017 qt_luigi さんからどうしてかを聞かれたので説明したいと思います。 golang では宣言した位置で初めて自動変数としてメモリが確保され、ゼロクリアされます。 for i := 0; i < b.N; i++ { var foo Foo bar, err := doSomething() if err != nil { continue } foo.v = bar fmt.Fprintln(ioutil.Discard, foo) } なので例えばこの様なコードで doSomething() が err を返した場合、
« Re: Go でシングルバイナリな Web アプリを開発しているときに webpack --watch をうまいところやる | Main | Ruby の a = a + 1 はなぜ undefined method '+' for nil:NilClass なのか » golang にはパッケージマネージャが無数にあります。 PackageManagementTools · golang/go Wiki · GitHub Home Articles Blogs Books BoundingResourceUse cgo ChromeOS CodeReview CodeReviewComments CodeTools C... https://github.com/golang/go/wiki/PackageManagementTools 僕もその一つの gom というのを開発している
The Go Programming Language 日本語ページ 自己紹介 勉強会の最初に自己紹介をしていただいてます。 そのときにプロジェクタで映しながらやりたいので、↓のことくらいをまとめた簡単な自己紹介をプルリクエストしてください。 今回の自己紹介置き場 例: 前回の自己紹介置き場 プルリクエストやった事無い! という方は、こちらをご参考下さいー。 create pull request · yochiyochirb/meetups Wiki by よちよち(の心をずっとわすれない).rbさん 受付 とくにありません。 カンパ ginza.rbは無料ですが、少額のカンパは歓迎です。 頂いたカンパはDoorkeeperの掲載費用や、勉強会中のお菓子代、懇親会の費用にしたりしようと思っています。 チャットをSlackに移行 今までidobataでチャットを運営していましたが、Slac
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く