並び順

ブックマーク数

期間指定

  • から
  • まで

201 - 240 件 / 244件

新着順 人気順

fmtの検索結果201 - 240 件 / 244件

  • How to speed up the Rust compiler in August 2023

    It has been five months since my last general update on the Rust compiler’s performance. Let’s see what has happened in that time. Big wins Let’s start with some big improvements. The information about metrics at the top of this post still applies. #107925: Incremental compilation uses a hashing algorithm to detect when code fragments have changed and need recompilation. In this PR, @thomcc change

    • sqlc generate は何をしているのかメモ

      [2023-09-11 追記] 以下のブログの方が分かりやすいので、そちらを読むことをお勧めします。 sqlc internals - 薄いブログ 最近、個人開発で Go のアプリケーションからデータベースを操作するために sqlc を使っている。sqlc は SQL で書いたスキーマのファイルから sqlc generate コマンド一つで Go の構造体を、クエリのファイルから型安全な Go の SQL クライアントを生成することができる。1 私は普段の仕事で ORM が提供するメソッドやクエリビルダを使って SQL を組み立てている。ORM は便利ではあるが、最終的に実行される SQL は可読性が低くてデバッグしづらいことが多い。そのため「最初から SQL を書けば良いのでは…?」と考えるようになり、初めて sqlc を見たとき自分の好みに合うツールと確信した。 使い方は簡単で便利な

        sqlc generate は何をしているのかメモ
      • Go 1.23 で導入予定のイテレータでLINQ的な検索の実装を試した - tomato3713’s blog

        最近は Go 1.23 で導入予定のイテレータを試して使い方を探っています。1 そのなかでイテレータを使ってLINQ的なことができないかを試したところ、良さそうな形になったので紹介します。 LINQは、C#やVisual Basic、F#などの.NET系の言語でサポートされている様々なデータソースに対するクエリ機能のことを指します。 LINQを使うと LINQ の概要 - .NET | Microsoft Learnの冒頭にある例のような単純なクエリ構文を使ってデータの変換や検索などが記述できます。 Go 1.23で導入予定のイテレータもLINQと同様に連続したデータに対して統一的で簡潔なインターフェイスを与える仕組みなので、イテレータを使うとLINQ的な実装がうまく記述できそうという見込みがありました。 試すために最小限のメソッドしか準備しておらず、実装途中ですがライブラリ形式に纏めてみ

          Go 1.23 で導入予定のイテレータでLINQ的な検索の実装を試した - tomato3713’s blog
        • Go 1.23: Interactive release notes

          Go 1.23 is coming soon, so it's a good time to explore what's new. The official release notes are pretty dry, so I prepared an interactive version with lots of examples showing what has changed and what the new behavior is. Read on and see! Iterators • Timers • Canonical values • Cookies • Copy directories • Slices • Atomics • Other stdlib changes • Tooling and runtime • Summary I also provide lin

            Go 1.23: Interactive release notes
          • Scheduling Internals

            A sneak peek to what's coming! I remember when I first learned that you can write a server handling millions of clients running on just a single thread, my mind was simply blown away 🤯 I used Node.js while knowing it is single threaded, I used async / await in Python, and I used threads, but never asked myself "How is any of this possible?". This post is written to spread the genius of concurrenc

            • Go言語の学習 その4 (go.modと関数名による関数の公開・非公開定義) - Cou氏の徒然日記

              前回は、同一パッケージを複数ソースに分割したケースでしたが、今回はパッケージを分割。 mainパッケージのサブパッケージとして「print」を作成します。 ソース構成はこんな感じですね。 C:. │  hello.go │  main.go │ └─print outmessage.go ただ、別パッケージであるため、パッケージの関係を明確に定義する必要があります。 ◆ go.mod によるパッケージの定義 Go言語には、go.mod というファイルがあり、このファイルにモジュールの依存関係が定義されます。 ということで、今回は、test1の下のmain ディレクトリがルートディレクトリになるため、この階層で「go mode init」コマンドを実行。 PS C:\Study\Go\test1\main> go mod init go: cannot determine module pa

                Go言語の学習 その4 (go.modと関数名による関数の公開・非公開定義) - Cou氏の徒然日記
              • Cosmopolitan Third Edition

                After nearly one year of development, I'm pleased to announce our version 3.0 release of the Cosmopolitan library. The project is an entirely new animal. For starters, Mozilla sponsored our work as part of their MIECO program. Google also awarded me an open source peer bonus for my work on Cosmopolitan, which is a rare honor, and it's nice to see our project listed up there among the greats, e.g.

                  Cosmopolitan Third Edition
                • 【小ネタ】Officeが入ってないLinuxなどのマシンでPowerPointファイルをスライド一枚ずつJPEGファイルに変換する方法 | DevelopersIO

                  こんちには。 データアナリティクス事業本部 機械学習チームの中村(nokomoro3)です。 Officeが入ってないLinuxなどのマシンでPowerPointファイルをスライド一枚ずつJPEGファイルに変換する方法を紹介します。 手順 以下の手順で行います。 pptxファイルをpdfファイルに変換 LibreOfficeを使いました 実はLibreOfficeであればpptファイルをpptxにすることも可能です(便利!) pdfファイルの各ページをJPEGファイルに変換 Pythonでpdf2imageを使いました 動作環境 WSL(Ubuntu-20.04 LTS)で行います。 環境準備 環境準備は以下を実行すればOKです。 # pptxをpdfに変換するlibreofficeをインストール sudo apt install libreoffice # 日本語フォルトをインストール(

                    【小ネタ】Officeが入ってないLinuxなどのマシンでPowerPointファイルをスライド一枚ずつJPEGファイルに変換する方法 | DevelopersIO
                  • Cloud RunからCloud Storageをファイルシステムとしてマウントする - G-gen Tech Blog

                    G-gen の佐々木です。当記事では Cloud Run で Cloud Storage FUSE を使用して、オブジェクトストレージである Cloud Storage のバケットをコンテナ内のディレクトリにマウントしてみます。 前提知識 Cloud Run とは Cloud Storage(GCS)とは Cloud Storage FUSE について Cloud Storage FUSE とは 制限事項 料金 考慮事項 Cloud Run 実行環境 マルチプロセス化による PID 1 問題への対処 Cloud Run で Cloud Storage FUSE を使用してみる 構成図 Cloud Storage バケットの作成 Artifact Registry リポジトリの作成 使用するコード main.go gcsfuse_run.sh Dockerfile コンテナイメージのビルド・

                      Cloud RunからCloud Storageをファイルシステムとしてマウントする - G-gen Tech Blog
                    • Go言語の学習 その3 (importとdebug) - Cou氏の徒然日記

                      ◆ Go言語のパッケージインポート(import) 今回は、別ソースに関数を実装、いわゆるソース分離をしてみようかなと。 main.go(main関数を定義)と同じ階層に、hello.go を作成。 [hello.go] パッケージ名は、mainと同じ階層なので、mainとして、 「Hello, world!」を標準出力する処理を print_hello関数として実装です。 package main import "fmt" func print_hello() { fmt.Println("Hello, world!") } [main.go] あとは、main.goのmain関数から、標準出力処理をコメント化(削除)。 package main import "fmt" func main() { //fmt.Println("Hello, world!") print_hello()

                        Go言語の学習 その3 (importとdebug) - Cou氏の徒然日記
                      • great_tables - The Design Philosophy of Great Tables

                        A table of named individuals along with a select set of characteristics. This table arranges records containing personal characteristics as columns and rows. Each person is a row, and each characteristic makes up a different column. The characteristics use different types of data, like dates, numbers, and text. This arrangement makes it easy to look up individual values or make comparisons across

                        • Better HTTP server routing in Go 1.22 - Eli Bendersky's website

                          An exciting proposal is expected to land in Go 1.22 - enhancing the pattern-matching capabilities of the default HTTP serving multiplexer in the net/http package. The existing multiplexer (http.ServeMux) offers rudimentary path matching, but not much beyond that. This led to a cottage industry of 3rd party libraries to implement more powerful capabilities. I've explored these options in my REST Se

                          • runnに逐次的に処理を進めるattachモードが追加されたので試してみた | DevelopersIO

                            yamlで書いたシナリオをそのまま実行できるシナリオテストツールrunnにブレークポイントを貼ったりステップ実行ができるattachモードが追加されたので試してみました @katzchum runnに --attach オプション追加しましたhttps://t.co/h3G3PiXPys いわゆるデバッグオプションです。 コマンド体系は gdb を参考にしています。 --verboseと合わせて使ってみてくださいー#runn開発者会議 — k1LoW (@k1LoW) February 28, 2024 というわけで早速試してみましょう! 実行サンプル 前回の yamlでテストシナリオを書いてそのまま実行までできるAPIテストツールの新星 “runn” を試してみた のサンプルをそのまま使います。 scenario.yaml desc: アクセストークンを発行し、テナントを登録する run

                              runnに逐次的に処理を進めるattachモードが追加されたので試してみた | DevelopersIO
                            • 【Go 1.22】for ループの2つの仕様変更

                              Go 1.22 がリリースされましたね。 本記事では、個人的に今リリースで最もインパクトの大きい仕様変更である、for ループに関する2つの変更について簡単にまとめます。 変数がイテレート毎に宣言されるようになった 1.21 以前では、for ループの range 句で宣言された変数は各イテレートで値が更新されながら使いまわされていました。 そのため、宣言された変数を goroutine で使用したり defer による遅延処理で使用するケースなどで面倒な処理が必要でした。 具体的には、別途宣言した変数に代入するか、即時関数の引数として渡す必要がありました。 package main import ( "fmt" "time" ) func main() { for _, v := range []int{1, 2, 3} { go func(n int){ fmt.Println(n)

                                【Go 1.22】for ループの2つの仕様変更
                              • 本番環境でデフォルトの HTTP Client を使ってはいけない理由について

                                はじめに こんにちは。Belong でエンジニアをしている Mohiro です。 今回はタイトルの通り、Go では本番環境でデフォルトの HTTP Client を使ってはいけない理由についてまとめました。 以下書籍の中で取り上げられた内容の一つで、私自身がこの間違いを犯してしまっていたで戒めとして本ブログを書きました。 Go 言語 100Tips ありがちなミスを把握し、実装を最適化する デフォルトの HTTP Client を使ってはいけない理由 理由 1:タイムアウトが設定されない HTTP Client はデフォルトではタイムアウトを設定しません。 以下のコードからデフォルトクライアントがサーバーの応答を待ち続ける挙動が確認できます。 package main import ( "fmt" "net/http" "net/http/httptest" "time" ) func m

                                  本番環境でデフォルトの HTTP Client を使ってはいけない理由について
                                • Rustと機械学習ライブラリcandleで自作言語の言語モデルを自作してみた話

                                  こんにちは、毛利です。 最近はChatGPTやLLMが盛り上がっていますね。趣味の一つに自作プログラミング言語・コンパイラがあるのですが、LLMと組み合わせてなんかできないかなぁと妄想しています。この記事ではcandleというライブラリを使って自作言語の言語モデルを自作(学習)してみた話について書きます。 TL;DR 1. candleというHuggingFaceが作っているRust言語で書けるライブラリについて一通り書いています 2. 学習させるのは自然言語ではなく、LLM向きに設計した言語を学習させることにしました。手始めに、数字の順番を逆に記述した2進数の加算の式を言語としてみました。例えば、111 + 1 = 0001. のようなものです 3. candleを使った言語モデルの実装を行いました。実装はすべて記事中に記載しています 4. 結果として、今回の実験の設定では数字の順番を逆

                                    Rustと機械学習ライブラリcandleで自作言語の言語モデルを自作してみた話
                                  • 福島市へ不審電話400件超、小中学校にも 国番号は中国 「気味悪い」と飲食店主 : 痛いニュース(ノ∀`)

                                    福島市へ不審電話400件超、小中学校にも 国番号は中国 「気味悪い」と飲食店主 1 名前:香味焙煎 ★:2023/08/28(月) 12:13:46.90 ID:3mGYyvea9.net 福島市へ不審電話400件超、小中学校にも 国番号は中国 「気味悪い」と飲食店主https://t.co/FmbOUCMBzT 福島市危機管理室によると、25日に市役所の代表などにかかってきた迷惑電話は218件。市内の小中学校にも65件あり、閉庁日の26日にも市役所で127件が確認された。— 産経ニュース (@Sankei_news) August 28, 2023 東京電力福島第1原発処理水の海洋放出開始以降、福島県内に中国からとみられる迷惑電話が多数入っている問題で、福島市は市役所や市内小中学校に入った迷惑電話の件数把握に乗り出した。それによると28日午前の速報値で、25、26日両日だけで400件を超

                                      福島市へ不審電話400件超、小中学校にも 国番号は中国 「気味悪い」と飲食店主 : 痛いニュース(ノ∀`)
                                    • Backtraces with strace

                                      I discovered strace somewhere between my first part time web development part time job in 2005 and my first full time “software engineering” job in 2008, and it seemed like a superpower giving me x-ray vision into running infrastructure. When a process was stuck, or existing after a cryptic error message, instead of grepping around I could get a pretty good timeline of what the process was up to.

                                      • Build Your Own SMTP Server in Go

                                        At Valyent, we are building open-source software for developers. As part of this mission, we're currently developing Ferdinand, our email sending service for developers (currently in alpha). Email infrastructure relies on several key protocols, with the most important being: SMTP (Simple Mail Transfer Protocol): Used for sending and receiving emails between mail servers. IMAP (Internet Message Acc

                                          Build Your Own SMTP Server in Go
                                        • Nature Programming Language | Nature Programming Language

                                          Natureis a programming language and compiler, may you be able to experience the joy of programming. GET STARTEDDOWNLOAD import fmt fn fib(int n):int { if n <= 1 { return n } return fib(n - 1) + fib(n - 2) } fmt.printf('fib result is %d', fib(30)) Functions DefinedA fib evaluation function was defined using recursion. Call the fib function and pass its result to fmt.printf for output.

                                            Nature Programming Language | Nature Programming Language
                                          • 結局ユーザーパスワードはどう保存すればいいんだ?

                                            はじめに ユーザーパスワードの管理は、システム開発において最も重要なセキュリティ課題の一つです。 OAuthやAWS Cognitoなどの認証サービスを利用することで、パスワードの管理を外部に任せることもできますが、 プロジェクトによっては自前でパスワードを管理する場合もあります。 では自分たちでパスワードを管理する際に、どのように暗号化すればいいのでしょうか? 万が一パスワードが漏洩した場合ちゃんと対応できるのでしょうか? 本記事では、ユーザパスワードいくつの暗号化手法及びそのリスクについて解説したいと思います。 前提知識 まず暗号化の三兄弟 - Encode, Hash, Encrypt の違いを理解しておきましょう。 Encode 単に文字列を別の形式に変換するだけ キーがなくても元に戻せる 例:Base64エンコード、URLエンコード Hash 一方向の変換 キーがないため元に戻せ

                                              結局ユーザーパスワードはどう保存すればいいんだ?
                                            • telnet接続可能なホームページをGoで作って公開してみた - blog.potproject.net

                                              すぐに試してみたい人はtelnet potproject.net または telnet potp.roで接続できます! はい、また流行りに乗った記事です。 パッと作れないかなと思って実際に作ってみると結構面白く、Blueskyの方からアクセスも結構あったので記事にしました。 概要 9/4、このようなものが公開されて話題を呼びました。 社団法人の電子公告が「Telnet」で行われる珍事発生、早速「Tera Term」で読んでみる 電子公告が「Telnet」を使って行われているというものです。Telnetはhttpよりもはるか昔から存在する通信プロトコルですね。 実はhttp/httpsじゃないといけないと決まっているわけではないからライブラリは何でもよいとのこと。 ftpとかsshでもいいんだろうか?と思いつつ、実際にtelnetで接続してみると、1文字ずつ真心を込めたTCP Socket送

                                                telnet接続可能なホームページをGoで作って公開してみた - blog.potproject.net
                                              • 誰でも簡単手作りわくわくオペレータ作成Neovimプラグイン

                                                この記事は Vim 駅伝 の 03/20 の記事です。 前回の記事は kyoh86 さんによる、 03/18 の「efm langserverでdeno fmtとprettierを使い分ける」という記事でした。 次回は 03/22 に投稿される予定です。 はじめに Vim や Neovim には オペレータ と呼ばれるコマンドがあります。オペレータコマンドの直後に適用範囲を指定することで、様々な編集操作を実現できるというものです。 オペレータを用いると、たとえば以下のようなことができます。 yt" と打つと、カーソルからその右の " に到達するまでの範囲をヤンク(コピー)する y: ヤンクを表すオペレータ t": カーソル直後に存在する " の直前まで移動するモーション >ip と打つと、カーソルのある段落のインデントを1段階増やす(右にずらす) >: インデントを1段階増やすオペレータ

                                                  誰でも簡単手作りわくわくオペレータ作成Neovimプラグイン
                                                • なぜGoでerrors.Newを都度呼び出すことが推奨されないのか

                                                  モチベーション golangci-lintを利用されている方も多いと思います。 後述のようなコードを書くと指摘してくれるgo-err113というルールがなぜあるのかということをきっかけに書いた記事になります。 func F() error { err := something() if err != nil { return errors.New("failed call something fn") } } ネタバラシすると、go-err113のREADMEにルールがある理由は親切に書かれているのですが、Goを始めたばかりの私にはすべての疑問は解消することができず、より深く調べました。 Starting from Go 1.13 the standard error type behaviour was changed: one error could be derived from a

                                                    なぜGoでerrors.Newを都度呼び出すことが推奨されないのか
                                                  • RubyKaigi 2024 参加レポート|MICIN公式note「MICINの邁進Days」

                                                    株式会社MICINでエンジニアをしているmasatomotyです。 2024年5月15日〜17日に「那覇文化芸術劇場 なはーと」で開催されたRubyKaigi 2024に現地参加してきました。この記事では個人的に印象や記憶に残った発表をいくつかピックアップして紹介します。 発表・セッションのサマリと感想Embedding it into Ruby code 発表サマリ 型定義を記述するため.rbと対になる.rbsファイルが必要 ファイル分割のメリット ファイルが分割されることで.rbファイルとのコンフリクト考慮が不要 .rbsファイルを読むことで実装の外観が掴みやすくなる ファイル分割のデメリット 開発中に2つのファイルを行き来しないといけない 2つのファイルになる分,更新の手間が増える PRに.rbsファイルが上がってこないケースも発生する 上記のデメリットを解決するためにRBS::In

                                                      RubyKaigi 2024 参加レポート|MICIN公式note「MICINの邁進Days」
                                                    • Go言語の学習 その10 (エラーハンドリング) - Cou氏の徒然日記

                                                      Go言語(Golang)では、複数の戻り値を返すことができるのですが、その代わり、Javaのような例外スローというものがないです。 といっても似たような機構はあり、Go言語では、エラーハンドリングの慣習としては、戻り値の最後に errorsパッケージで作ったエラーを返すというもの。 そして上位(呼び出し側)は、その戻り値をチェックするようです。 [calc/devide.go] package calc import "errors" func Divide2(a int, b int) (int, int, error) { if b == 0 { return 0, 0, errors.New("Do not divide by 0.") } return a / b, a % b, nil } 上記のように最後の戻り値として「error」オブジェクトを返すようにします。 その際、 エ

                                                        Go言語の学習 その10 (エラーハンドリング) - Cou氏の徒然日記
                                                      • JPEG画像を何回も保存し直すとどんどん劣化していく……のか、ChatGPTと試す - nomolkのブログ

                                                        JPEGは画像を小さい容量で保存できるファイル形式ですが、非可逆圧縮といって圧縮前の状態に戻せない性質を持つため、保存した画像を開くと画質が劣化しています。 ということは、画像をJPEGで保存→開く→新しく保存→開く→新しく保存…を繰り返すとどんどん劣化していくのではないかと思って、調べてみました。 実は検索してみると同様の検証はすでにたくさんされているのですが、最近ChatGPTを有料版にして使い道に飢えていたので、一緒に検証してみたいと思います。 ChatGPTにやり方を訊く JPEGを何度も保存し直し、できた画像を動画で見られると面白いのではないかと思いました。初手からChatGPTに訊いてみます。 ※自分が使っているChatGPTと違う……と思った方はこちらをご覧ください。→AIお姉ちゃんへの道 - nomolkのブログ 動画化はffmpegでやればいいそうです。たしかに。 でも画

                                                          JPEG画像を何回も保存し直すとどんどん劣化していく……のか、ChatGPTと試す - nomolkのブログ
                                                        • Go言語の学習 その8 (launch.jsonに起動引数を定義) - Cou氏の徒然日記

                                                          今回は引数を渡すデバッグについて。 まずは引数を受け取り、分岐するロジックを main関数に追加。 main.go (修正後) package main import ( "fmt" "os" "test1/calc" ) func main() { //fmt.Println("Hello, world!") var answer int switch os.Args[1] { case "-addtion": answer = calc.Add(10, 3) case "-subtract": answer = calc.Subtract(10, 3) case "-multiply": answer = calc.Multiply(10, 3) case "-divide": answer = calc.Divide(10, 3) default: answer = 0 } fmt.

                                                            Go言語の学習 その8 (launch.jsonに起動引数を定義) - Cou氏の徒然日記
                                                          • Microsoft Graph API へのキーレス認証 (GitHub Actions編) #LayerXテックアドカレ - LayerX エンジニアブログ

                                                            7月ぐらいから CTO 室で働き始めている @yuya-takeyama です。 Corporate Engineering や Security に関わる仕事などをしています。 この記事はLayerXテックアドカレ2023の6日目の記事です。 昨日は機械学習を通じて誰かをラクにしたい yakipuさんが「〜OCR戦記〜適格事業者登録番号との戦い🔥🔥🔥」を書いてくれました。 次回は civitaspo さんが素敵な記事を書いてくれます。 Microsoft Graph APIについて Microsoft Graph APIというのは、Microsoft 365 を始めとする Microsoft 社の様々なクラウドサービスのデータにアクセスするための API 群です。 私たちの場合は Identity Provider として使っている Microsoft Entra ID (form

                                                              Microsoft Graph API へのキーレス認証 (GitHub Actions編) #LayerXテックアドカレ - LayerX エンジニアブログ
                                                            • Goの日時のParseの分かりづらいところ: タイムゾーン名を含む場合

                                                              本記事の概要 Zennで読むことのできるGoの日時の扱いについては、@hsaki さんの記事が大変分かりやすいですよね。 こちらでも解説されてはいるのですが、混乱しやすいポイントだけに焦点を当てた記事も需要があるかな?と思い、私の頭の整理もかねて記事を書きます。 本記事で着目するのは、「Parseする日時文字列にタイムゾーン名だけ(例:JST)がある時、得られるtime.Time型の時間オフセットはどうなるか?」という点です。同じようにハマったことがある人は多いかな、と思うので、「あーあるある」ぐらいで読んでいただければと思います。 本記事の対象読者 Goの基本的な日時の扱い方は知っている 本記事の結論 タイムゾーン名だけでは時間オフセットは適切に設定されない。実行環境のタイムゾーンへの依存がある。 解決策は環境変数TZの設定かParseInLocationを使うことだが、実行環境に必要な

                                                                Goの日時のParseの分かりづらいところ: タイムゾーン名を含む場合
                                                              • Go言語の学習 その7 (テストの実行) - Cou氏の徒然日記

                                                                今回は、Goソースの実行とビルドについて。 ◆ Goソースの作成 各四則演算の関数を calcパッケージとして作成してみます。 [calc\add.go] package calc func Add(a int, b int) int { return a + b } [calc\substract.go] package calc func Subtract(a int, b int) int { return a - b } [calc\multiply.go] package calc func Multiply(a int, b int) int { return a * b } [calc\devide.go] package calc func Divide(a int, b int) int { return a / b } func Reminder(a int, b in

                                                                  Go言語の学習 その7 (テストの実行) - Cou氏の徒然日記
                                                                • TerraformフォークとなるOpenTofu 1.6.0を、Provider側の気持ちになりながら試してみた - kmuto’s blog

                                                                  3行 現時点ではOpenTofu 1.6.0はユーザー体験としてはほぼTerraform 1.6なので、コマンドがterraform→tofuになった以外はユーザー側で感じる変化はなさそう(設定ファイルやstateファイルなどもTerraformそのまま)。Mackerel Providerも動く。 Provider側としては、すでに登録されているProviderであれば、当面は何もしなくてもGitHubリリースしたものがOpenTofuレジストリに最新反映される模様(GPG署名している場合は公開鍵をレジストリにサブミットする必要あり)。 今の時点では問題ないと言っても、OpenTofu/Terraformの乖離が進んで互換性が失われると、Providerは別リポジトリを用意する必要がありそう or Terraform/OpenTofuどちらかを諦めることになりそう。 3行 背景 ユーザー

                                                                    TerraformフォークとなるOpenTofu 1.6.0を、Provider側の気持ちになりながら試してみた - kmuto’s blog
                                                                  • Github Actionsで複数環境のterraform planを自動化する

                                                                    はじめに 現場でterraformソースコードのGitlab → GitHub移行にあたって、Github Actionsワークフローを組む機会がありました。 そこで、運用しやすそうなCIを組めたので、共有させていただきます。 前提/方針 GoogleCloud(以下GCP)インフラをterraform管理している。 環境はstg・prodの2つで、別々のGCPプロジェクトに構築されている。 プルリク作成時・更新時にterraform planを実行したい。 plan結果はtfcmtというツールを利用し、プルリク上に自動でコメントしてもらう。 各環境用で別々のGithub Secretsを登録している。 また、ディレクトリ構成は以下のような感じ。 src/commonはstg・prodの共通リソースです。 src/ ├ common/ │  ├ moduleA/ │  ├ moduleB/

                                                                      Github Actionsで複数環境のterraform planを自動化する
                                                                    • sqlxを利用しているプロダクトで、データベースのRead/Write分離を透過的に実装した事例紹介 - ANDPAD Tech Blog

                                                                      1. はじめに こんにちは、SWEのあかりです。 今回のテーマは、Go Conference mini 2023 Winter IN KYOTOのLT枠に応募したものの、残念ながら不採択になってしまったものです。話せるネタとしてはまとまっていたので、テックブログとしてここに捧げます😇 ちなみに、面白そうなセッションがたくさんあるので、現地参加はさせていただく予定です! 2. 記事の概要 この記事では、Go言語の標準パッケージdatabase/sqlの拡張であるsqlxを利用しているプロダクトにおいて、データベースの書き込み先/読み込み先エンドポイントを透過的に使い分ける実装1(以降、Read/Write分離と記載)について紹介します。 この記事を読んで得られることは以下の2点です。 データベースの負荷分散手法の一つであるRead/Write分離の概要 sqlxを利用しているプロダクトで透

                                                                        sqlxを利用しているプロダクトで、データベースのRead/Write分離を透過的に実装した事例紹介 - ANDPAD Tech Blog
                                                                      • The Ruff Formatter: An extremely fast, Black-compatible Python formatter

                                                                        TL;DR: The Ruff formatter is an extremely fast Python formatter, written in Rust. It’s over 30x faster than Black and 100x faster than YAPF, formatting large-scale Python projects in milliseconds — all while achieving >99.9% Black compatibility. A little over a year ago, I made the first commit to Ruff, an extremely fast Python linter, written in Rust. Since then, Ruff has grown to millions of dow

                                                                          The Ruff Formatter: An extremely fast, Black-compatible Python formatter
                                                                        • RustでTestcontainers入門: テストコードから依存サービスを起動してテスト環境を作成する - kymmt

                                                                          この記事はRust Advent Calendar 2023 シリーズ1の4日目の記事です。 あるソフトウェアをテストするとき、そのソフトウェアがデータベースやメッセージブローカのような外部のサービスに依存する場合に、その依存をどのように扱うかという問題がつきまとう。この問題へのよくある解決策としては 依存サービスを差し替えられるような設計にして、テスト実行時はモックに差し替える Docker Composeなどであらかじめ依存サービスをテスト用のコンテナとして立ち上げておき、テスト実行時はそれらのサービスが動くコンテナにアクセスする などが挙げられる。 今回はさらに別の方法として、テスト実行時にテストコードの中から依存サービスをコンテナとして立ち上げるためのフレームワークであるTestcontainersを紹介する。また、RustでTestcontainersを使うときの実例を紹介する。

                                                                            RustでTestcontainers入門: テストコードから依存サービスを起動してテスト環境を作成する - kymmt
                                                                          • research!rsc: Hash-Based Bisect Debugging in Compilers and Runtimes

                                                                            Setting the Stage Does this sound familar? You make a change to a library to optimize its performance or clean up technical debt or fix a bug, only to get a bug report: some very large, incomprehensibly opaque test is now failing. Or you add a new compiler optimization with a similar result. Now you have a major debugging job in an unfamiliar code base. What if I told you that a magic wand exists

                                                                            • Go言語の学習 その2 (main関数) - Cou氏の徒然日記

                                                                              ◆ とりあえずGo言語で「Hello World」 とりあえずは「Hello World」プログラムを書いてみると… package main import "fmt" func main() { fmt.Println("Hello, world!") } こんな感じのようです。 知識ゼロですが、Javaなどとはあまり変わらないですね。 Javaで言えば System.out.println("Hello, world!"); に相当するものですね。 ◆ fmtパッケージ Go言語では、標準ライブラリとして「fmt」パッケージがあり、これが標準入出力をするパッケージのようです。 fmt package - fmt - Go Packages import "fmt" という感じで定義することでインポートも可能。 これも同じですね。 ◆ パッケージ定義 クラスのパッケージ定義も同様。 ただ

                                                                                Go言語の学習 その2 (main関数) - Cou氏の徒然日記
                                                                              • Go 1.22 Release Notes - The Go Programming Language

                                                                                Introduction to Go 1.22 The latest Go release, version 1.22, arrives six months after Go 1.21. 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. We expect almost all Go programs to continue to compile and run as before. Changes to the language Go 1.22 makes two changes to "for" loops. Previous

                                                                                  Go 1.22 Release Notes - The Go Programming Language
                                                                                • Go 1.23リリース連載 range over funcとiterパッケージ | フューチャー技術ブログ

                                                                                  はじめにこんにちは。CSIG 所属の棚井です。 Go 1.23 Release Notes の内容を紹介する「フューチャー技術ブログ Go 1.23 リリース連載」の記事です。 今回は2つの反復(Iterator、イテレーション)処理を取り上げます。 range over funciter パッケージRelease Note, Discussion, Proposal, Issuerange over func と iter パッケージ のリリース内容を確認していきます。 range over func がデフォルトで有効にGo1.22 では GOEXPERIMENT とされた range over func が、Go1.23 からはオプション指定なしで利用可能となりました。 Go 1.23 makes the (Go 1.22) “range-over-func” experiment

                                                                                    Go 1.23リリース連載 range over funcとiterパッケージ | フューチャー技術ブログ