並び順

ブックマーク数

期間指定

  • から
  • まで

81 - 120 件 / 244件

新着順 人気順

fmtの検索結果81 - 120 件 / 244件

  • 機械学習モデルのA/BテストをしやすくするGo言語のAPI設計 - エムスリーテックブログ

    こちらはエムスリー Advent Calendar 2023 11日目の記事です。 DALL-Eでサムネ作るの楽勝だぜとなりそうでならない Overview A/Bテストをしまくっている、機械学習エンジニアの農見(@rookzeno)です。皆さんA/Bテストをしてますでしょうか。エムスリーでは色々な施策の効果を見るために沢山のA/Bテストをしています。そのためA/Bテストを簡易にできるような設計を作ることも大事なことです。 AI・機械学習チームには、Goで書かれた機械学習関連の機能を各サービスに提供するAPIサーバがあり、こちらのYAMLファイルを設定するだけでA/Bテストが出来るようにしました。 rules: - name: modelA random_seed: 42 threshold: 50 ctrl: weight: 0 test: weight: 1 - name: model

      機械学習モデルのA/BテストをしやすくするGo言語のAPI設計 - エムスリーテックブログ
    • eBPFに入門して簡単なシステムコールロガーを実装した - zebian.log

      セキュキャン2023でSysmonForLinuxを使った経験があり、プログラムの挙動ログを自作ロガーで取りたいなと思ったので、Go+ebpf-goで簡単なシステムコールロガーを実装した。eBPFもGoも初心者なのでコードが汚いのは御愛嬌。 コード全体 コードはここに書いた。記事作成時点のコードであって、最新版ではないので注意。 main.go package main import ( "bytes" _ "embed" "encoding/binary" "encoding/json" "fmt" "os" "os/signal" "syscall" "github.com/cilium/ebpf" "github.com/cilium/ebpf/link" "github.com/cilium/ebpf/ringbuf" "github.com/cilium/ebpf/rlimit"

        eBPFに入門して簡単なシステムコールロガーを実装した - zebian.log
      • リトライ処理を追加するとバッチが安定することがあることもそこそこあるので「avast/retry-go」を使ってみる - じゃあ、おうちで学べる

        はじめに インフラエンジニアは日々の業務でプログラムを書く機会が多く、その中で処理の実行やHTTPの通信などでリトライ処理を実装する必要があることが少なくありません。リトライ処理を実装する必要は必ずしもなくても、実装することでバッチが安定することがあります。もっと言っておくとリトライ処理を実装することで、一時的なエラーによる処理の失敗を回避し、バッチ処理の安定性が向上する可能性があります。実行基盤によってジョブの再試行の自動化、最大再試行回数を設定するやPod失敗のバックオフポリシーなどとの兼ね合いを考える必要もあると思います。あとはマジでガー不のバグを引き寄せることもあるので注意が必要です。 はじめに シンプルな例 最大リトライ回数の指定 次のリトライまでの待ち時間の設定 特定の例外のみリトライするケース さいごに 今回はGolangには「retry-go」というリトライ処理を簡潔に実装

          リトライ処理を追加するとバッチが安定することがあることもそこそこあるので「avast/retry-go」を使ってみる - じゃあ、おうちで学べる
        • GoとCobraを用いた新規マイクロサービス用ボイラープレートの自動生成CLIツールでコスト削減した話 - Gaudiy Tech Blog

          こんにちは。ファンと共に時代を進める、Web3スタートアップ Gaudiy でソフトウェアエンジニアをしている ryio1010です。 私は弊社が提供するファンコミュニティプラットフォーム「Gaudiy Fanlink」の開発において、フィーチャーチームの一員として、主にバックエンド開発を担当しています。 バックエンドのアーキテクチャにはマイクロサービスを採用していますが、会社のフェーズ的に試行錯誤の段階であることや、それに伴うチーム体制の変更がよく起きていることもあり、新しいマイクロサービスの立ち上げも頻繁に行われています。 私自身もこれまでの業務で2〜3つの新しいマイクロサービスを立ち上げる経験をしてきました。 今回は、これらのマイクロサービスの立ち上げと運用の経験から、特に立ち上げフェーズにフォーカスし、改善を行った事例をご紹介したいと思います。 1. マイクロサービスの概要とGau

            GoとCobraを用いた新規マイクロサービス用ボイラープレートの自動生成CLIツールでコスト削減した話 - Gaudiy Tech Blog
          • Goroutines in Go (Golang) - Welcome To Golang By Example

            This is the  chapter 23 of the golang comprehensive tutorial series. Refer to this link for other chapters of the series – Golang Comprehensive Tutorial Series Next Tutorial – Channel Previous Tutorial – Iota Now let’s check out the current tutorial. Below is the table of contents for current tutorial. Overview Goroutines can be thought of as a lightweight thread that has a separate independent ex

              Goroutines in Go (Golang) - Welcome To Golang By Example
            • 新しいSQLフォーマッターであるuroboroSQL-fmtをリリースしました | フューチャー技術ブログ

              コアテクノロジーグループの山田です。 先日、新しいSQLフォーマッターであるuroboroSQL-fmtをリリースしました 🎉 このツールは弊社が公開しているPostgreSQL向けのSQLコーディング規約に基づき、SQL文をフォーマットするツールです。 弊社でのSQLフォーマッター開発の取り組み元々弊社ではuroboroSQL Formatter(以下uroboroSQL Formatterを旧版、uroboroSQL-fmtを新版と呼ぶ)というSQLフォーマッターを公開していました。旧版は 字句解析して得られたトークンを基にフォーマットするという設計になっていたため、SELECT句のエイリアス補完といった文法を考慮する必要のある機能の追加が困難Pythonで書かれておりVSCodeの拡張機能として動作させるのが難しいという課題を抱えており、それを解消するため新たなSQLフォーマッター

                新しいSQLフォーマッターであるuroboroSQL-fmtをリリースしました | フューチャー技術ブログ
              • Snowflakeの力を引き出すためのdbtを活用したデータ基盤開発の全貌 - CARTA TECH BLOG

                当記事は、dbtのカレンダー | Advent Calendar 2023 - Qiita の23日目の記事です。 こんにちは、株式会社CARTA MARKETING FIRMのデータエンジニア、@pei0804です。データエンジニアリングのほか、組織運営やデータエンジニア育成にも携わっています。 本記事では、Snowflakeを中心とした当社のデータ基盤「Vision」と、その中核であるdbtの利用について深掘りします。dbtを活用することで、SQLのみでデータパイプラインを効率的に構築し、作業の効率化を図っています。 dbt導入の詳しい導入背景は以下のスライドでご覧いただけます:広告レポーティング基盤に、dbtを導入したら別物になった話 / tokyo-dbt-meetup-4 - Speaker Deck。 私たちのチームでは、ビジネスに直接価値を提供しているdbtモデルの開発はプロ

                  Snowflakeの力を引き出すためのdbtを活用したデータ基盤開発の全貌 - CARTA TECH BLOG
                • TSKaigi 2024 Prettierの未来を考える スピーカーノート

                  TSKaigi 2024 で話した「Prettier の未来を考える」という発表のスピーカーノートです。スライドは こんにちは、今日は「Prettierの未来を考える」というタイトルでお話させていただきたいと思います。 鈴木 颯介と言います。ユビー株式会社でプロダクト開発エンジニアとして働きながら、筑波大学でパソコンの勉強をしています。オープンソースソフトウェアが好きで、今日お話するPrettierのメンテナーをしたり、トランスパイラのBabelのコミッターをしたりしています。最近はWebKitのJSエンジンにたくさんパッチを投げたりしています。 私が働いているユビーは、TSKaigiのGold Sponsorをさせてもらっています。ブースがあります。ユビーのグッズの他に、Prettierのステッカーも配布しておりますので、興味がある方はぜひお立ち寄りください。 まず、Prettierにつ

                    TSKaigi 2024 Prettierの未来を考える スピーカーノート
                  • リソースベースポリシーをサポートしないAWSリソースのクロスアカウント設定と、Go による実装 - freee Developers Hub

                    こんにちは、サービス基盤のkumashunです。 freeeでは、ほとんどのサービスがAWSをインフラ基盤として利用しています。さまざまな目的や業務上の要件に応じて、複数のAWSアカウントを運用しており、時折、異なるアカウント間でのネットワーク通信やリソースへのアクセス、つまりクロスアカウントアクセスが必要となります。ここでは、リソースベースポリシーをサポートしていないAWSリソースにおける、クロスアカウントアクセスの実現方法についてご紹介します。 事例を "リソースベースポリシーをサポートしないAWSリソース" に限定しているのは、以下の背景からです。簡単に用語を説明します。 IAM Policy AWSリソースへのアクセス定義 誰がどのリソースに何をできる/できないかをJSON形式で定義できる IAM Role 1つ以上のIAM Policyをまとめたもの 人間がマネジメントコンソール

                      リソースベースポリシーをサポートしないAWSリソースのクロスアカウント設定と、Go による実装 - freee Developers Hub
                    • One Billion Row Challenge in Golang - From 95s to 1.96s

                      One Billion Row Challenge in Golang - From 95s to 1.96s Renato Pereira Mar 18, 2024 Introduction The One Billion Row Challenge (1BRC) is quite simple: the task is developing a program capable of read a file with 1 billion lines, aggregating the information contained in each line, and print a report with the result. Each line within the file contains a weather station name and a temperature reading

                      • Go 1.22リリース連載始まります & ループの変化とTinyGo 0.31 | フューチャー技術ブログ

                        Go 1.22のトピックとしては以下のようなものがあります。だいぶ安定版になってきたからか、言語もライブラリもこつぶなものが多くなってきたかな、という印象です。 ループ変数の挙動の変化 ツール系 GO111MODULE=offオプションの廃止 トレースツールのUI改善 net/httpのServeMuxでパス変数が扱えるように go vet強化 コンパイラでGCが1-3%高速化。PGOで2-14%改善 リンカーの生成するバイナリがよりデバッガフレンドリーに ライブラリ math/rand/v2追加 database/sql.NUllの追加 net/httpのルーターがパスパラメータをとれるように その他 個人的に注目しているHTTP/3やQUICへの対応は、準標準ライブラリのgolang.org/x/net/internal/quicの中で進行中。将来的にはinternalが外れたgola

                          Go 1.22リリース連載始まります & ループの変化とTinyGo 0.31 | フューチャー技術ブログ
                        • JSR Meetup に参加してきた

                          JSR Meetup JSR が気になっていたことや、Deno の中の人が主催というのも良いなと思って、ささっと参加してきました。自分用に雑にまとめておきます。 https://jsr.io/ https://github.com/jsr-io/jsr ハッシュタグ 自分のメモ Deno Land Inc. が開発、運用しているパッケージレジストリ プライベートは今のところ予定されていない TypeScript をそのまま登録できる ESM 対応 OSS で開発されている 自前の JSR を立てることもできる 積極的に改善されていきそう ドキュメントが生成される Web UI がモダン Deno が流行らないと苦しそう @std を Deno が持ってるのは他からはちょっとな ... って思われそう キレイな npm 雑感 印象としては使ってみても良さそうという感じです。ただ無理に npm

                            JSR Meetup に参加してきた
                          • go-smtp-mockをSMTPのモックサーバにして単体テストする | フューチャー技術ブログ

                            はじめにTIG真野です。 バックエンドのアプリケーションの上で、メール送信するコードがある場合の単体テストをどう実現するか悩みました。 メールには、タイトル・本文・From・TO・CC・BCCなど複数の設定値がありますし、SMTPサーバの接続情報もあります。これらを表現する構造体のモデルだけに絞った検証に留めることは、気が進みませんでした。時代はインフラレベルでダミーサーバを動かしモックする方向で動いています。SMTPでメール送信し、その送信結果をテストコード上で取得&検証する一連の流れを行って動作を確かめたいと思いました。 方法として、澁川さんのMailSlurperを使って6桁のコードの送信コードのテストをするで紹介されたMailSlurperを使うか迷いましたが、以下の点で牛刀だなと感じました。 メール送信するのはごく一部の機能(私の場合は1機能。今後増える見込みは現時点で見えなかっ

                              go-smtp-mockをSMTPのモックサーバにして単体テストする | フューチャー技術ブログ
                            • Terraform Provider を自作し SendGrid リソースを管理した話 - メドピア開発者ブログ

                              SRE の田中 @kenzo0107 です。 Terraform Provider kenzo0107/terraform-provider-sendgrid を作成し、SendGrid のリソースを terraform で管理する様にした話です。 https://registry.terraform.io/providers/kenzo0107/sendgrid まず弊社の SendGrid リソース管理の Before/After をご覧ください。 弊社の SendGrid リソースの管理方法 Before SendGrid コンソール上で手動でリソースの作成・更新・削除していました。 特にチームメイトは以下運用で工数が肥大化していました。 定期的な棚卸し メールアドレスを元にプロジェクト担当者(or 退職者)かをチェック 弊社の SendGrid リソースの管理方法 After -

                                Terraform Provider を自作し SendGrid リソースを管理した話 - メドピア開発者ブログ
                              • WASI support in Go - The Go Programming Language

                                Johan Brandhorst-Satzkorn, Julien Fabre, Damian Gryski, Evan Phoenix, and Achille Roussel 13 September 2023 Go 1.21 adds a new port targeting the WASI preview 1 syscall API through the new GOOS value wasip1. This port builds on the existing WebAssembly port introduced in Go 1.11. What is WebAssembly? WebAssembly (Wasm) is a binary instruction format originally designed for the web. It represents a

                                  WASI support in Go - The Go Programming Language
                                • Borgo Programming Language

                                  Borgo is a new programming language that compiles to Go. For a high-level overview of the features and instructions on running the compiler locally, check the README. This playground runs the compiler as a wasm binary and then sends the transpiled go output to the official Go playground for execution. use fmt enum NetworkState<T> { Loading, Failed(int), Success(T), } struct Response { title: strin

                                  • Unengineered Weblog のテーマを自作した - Unengineered Weblog

                                    このブログのテーマを自作してみました。 このテーマはお堅い(?)ソフトウェア技術書から発想しました。「プログラミング言語C」とかちょっと前のオライリーの本とかをイメージしています。背景色に書籍の紙をイメージしたクリーム色、フォントは明朝体、ボーダーラインは少なめ、文章中の強調とセクションタイトルは太字のゴシック体といった感じです。 ちなみに書籍に使われているの淡いクリーム色の紙を淡クリームキンマリというそうです。初めて知りました。 シンタックスハイライト コードのシンタックスハイライトを無くしてみました。技術書にはシンタックスハイライトがついていないことも多く、それを真似してみました。ただコメントには色をつけました。 package main import ( "fmt" "math/rand" "time" ) func main() { for i := 0; i < 10; i++

                                      Unengineered Weblog のテーマを自作した - Unengineered Weblog
                                    • Go 1.22リリース連載 net, net/http, net/netip | フューチャー技術ブログ

                                      The Gopher character is based on the Go mascot designed by Renée French TIG 真野です。Go1.22連載の8本目です。 Go 1.22 ライブラリのマイナーアップデートである net, net/http, net/netip を取り上げます。 アップデートサマリnet: TCPConnからUnixConnへのio.Copy() で、Linux’s splice(2)システムコールが使われ性能改善 #58808net: WindowsでDNSリゾルバは-tags=netgo 付きでビルドすると、DNSクエリの前に%SystemRoot%\System32\drivers\etc\hosts から検索するようになる [#57757]https://github.com/golang/go/issues/57757)net

                                        Go 1.22リリース連載 net, net/http, net/netip | フューチャー技術ブログ
                                      • [電話無人対応] Amazon Bedrock + Whisperで、名前のヒアリング精度を確認してみた[Amazon Connect] | DevelopersIO

                                        [電話無人対応] Amazon Bedrock + Whisperで、名前のヒアリング精度を確認してみた[Amazon Connect] はじめに Amazon Connect + Amazon Bedrock + Whisper APIの組み合わせで、発話による名前(フルネーム)のヒアリング精度を確認してみました。 以前、Amazon ConnectとAmazon Lexを利用し、ヒアリング精度を確認しましたが、今回は、Amazon Bedrock + Whisper APIの組み合わせで確認してみます。 ヒアリング精度の確認方法は、発話によって名前を伝えた際、発話通り名前を認識するかAWS Lambdaのログから確認します。 構成 構成としては、下記の通りです。 名前のヒアリングに関して、Connectのフローは下記の通りです。 コンタクトフロー内で「メディアストリーミングの開始」ブロ

                                          [電話無人対応] Amazon Bedrock + Whisperで、名前のヒアリング精度を確認してみた[Amazon Connect] | DevelopersIO
                                        • [Go] json.Unmarshal と json.Decoder の使い分け ~ json.Decoder に親しむ

                                          はじめに 今やあらゆるアプリケーションは Go で書かれていると言っても過言ではない(過言)。そして、今やあらゆるデータは json であると言っても過言ではない(過言)。 となると、Go で json を扱う頻度も必然的に多くなる。そして初めて Go で json をデコードするコードを書こうとした人は、必ずこの問題にぶち当たる。 「json.Unmarshal と json.Decoder は何が違うのか?そしてどちらを使えばいいのか?」 そしてググると大抵以下のような答えにたどり着く。 入力が文字列(string)やバイト列([]byte)の場合は json.Unmarshal() を使う 入力がストリーム(io.Reader)の場合は json.Decoder を使う なるほど、確かにパッと見はそれでいいように思える。思えるんだが、よく見ると実は他にもいくつか考慮すべき点がある。

                                            [Go] json.Unmarshal と json.Decoder の使い分け ~ json.Decoder に親しむ
                                          • [電話無人対応] Amazon Connectで通話中に発話した内容を、Amazon Transcribeで文字起こしし復唱してみた | DevelopersIO

                                            はじめに Amazon Connectでの発話内容をAmazon Transcribeで文字起こしし、音声出力するフローを構築しましたので、手順をまとめました。コンタクトセンターの無人対応を想定しています。 文字起こし内容を音声出力するまでの流れは次の通りです。 コンタクトフロー内で「メディアストリーミングの開始」ブロックを使って、Amazon Kinesis Video Streams(以降、KVS)への音声のストリーミングを開始します。 発話します。 発話後、「顧客の入力を保存する」ブロックで、顧客が特定の番号を押すと、ストリーミングが終了します。 「AWS Lambda関数を呼び出す」ブロックを使い、以下の処理を行います。 LambdaでKVSからメディアデータを取得します。 メディアデータから音声データを抽出し、WAV形式に変換し、S3バケットに音声ファイルを保存します。 Amaz

                                              [電話無人対応] Amazon Connectで通話中に発話した内容を、Amazon Transcribeで文字起こしし復唱してみた | DevelopersIO
                                            • Amazon Bedrockで発話での注文から、商品名と数量を抽出し、商品マスタの商品名と突合してみた[AIチャットボット] | DevelopersIO

                                              Amazon Bedrockで発話での注文から、商品名と数量を抽出し、商品マスタの商品名と突合してみた[AIチャットボット] はじめに Amazon Connect、Amazon Bedrock、Whisper APIを組み合わせて、電話で発話された注文内容(商品名と数量)を認識し、商品マスタと突合する方法とその精度を検証しました。 精度の確認方法は、発話された商品名と数量がAWS Lambdaのログで発話通りに認識されているかを確認しました。 利用シーンとしては、電話での注文を無人対応するケースです。注文をヒアリング後は、自動で発注、もしくはオペレーターにエスカレーションが考えられます。 電話での対話の流れは、以下のようなイメージです。 発話した商品名と商品マスタの商品名を、生成AIを利用して突合することができれば、自動で発注が実現できます。 注文内容を復唱後、ユーザーには発話やプッシュ

                                                Amazon Bedrockで発話での注文から、商品名と数量を抽出し、商品マスタの商品名と突合してみた[AIチャットボット] | DevelopersIO
                                              • goqite is a persistent message queue Go library built on SQLite and inspired by AWS SQS (but much simpler)

                                                goqite (pronounced Go-queue-ite) is a persistent message queue Go library built on SQLite and inspired by AWS SQS (but much simpler). $ go get github.com/maragudk/goqite See goqite on Github Don't like queues? Get the Skip function to skip the queue for your messages! Example package main import ( "context" "database/sql" "fmt" "log" "time" _ "github.com/mattn/go-sqlite3" "github.com/maragudk/goqi

                                                • Amazon ConnectとKinesis Video Streamsを利用した音声データの録音と保存(「留守番電話」や「AIチャットボット」で利用) | DevelopersIO

                                                  Amazon ConnectとKinesis Video Streamsを利用した音声データの録音と保存(「留守番電話」や「AIチャットボット」で利用) はじめに Amazon Connectでエージェントが介在しない「留守番電話」や「AIチャットボット」で録音したい場合、Kinesis Video Streams(以降、KVS)経由でAWS Lambdaを使い音声データの録音と保存する方法をまとめました。 Amazon Connectでは、下記のコンタクフローのブロックで録音できますが、録音条件は、顧客とエージェントが繋がってからのみ録音されます。 エージェントが介在しない、「留守番電話」やAmazon Lexと組み合わせた「AIチャットボット」の場合、録音機能は利用できません。 解決策として、コンタクフロー内で「メディアストリーミングの開始」というブロックを利用し、KVSにメディアデー

                                                    Amazon ConnectとKinesis Video Streamsを利用した音声データの録音と保存(「留守番電話」や「AIチャットボット」で利用) | DevelopersIO
                                                  • Actions Runner Controller Deep Dive!- コード解説 後編 - - APC 技術ブログ

                                                    こんにちは!ACS事業部の谷合です。 皆大好きGitHub Actionsにおける、GitHub社公式のSelf-hosted runnerであるActions Runner Controller(以降ARC)の紹介をシリーズでお送りしております。 前回までに以下の記事を書いておりました。 Actions Runner Controller Deep Dive!- アーキテクチャ編 - - APC 技術ブログ Actions Runner Controller Deep Dive!- 動作解説編 - - APC 技術ブログ Actions Runner Controller Deep Dive!- コード解説 前編 - - APC 技術ブログ 前回に引き続き、Actions Runner Controllerのコード解説をしていきます。 はじめに この記事のこと コード解説 AutoSca

                                                      Actions Runner Controller Deep Dive!- コード解説 後編 - - APC 技術ブログ
                                                    • Scaling gopls for the growing Go ecosystem - The Go Programming Language

                                                      Across these repos, the savings average around 75%, but memory reductions are non-linear: as projects get larger, so does the relative decrease in memory usage. We’ll explain this in more detail below. Gopls and the evolving Go ecosystem Gopls provides language-agnostic editors with IDE-like features such as auto-completion, formatting, cross-references, and refactoring. Since its beginnings in 20

                                                        Scaling gopls for the growing Go ecosystem - The Go Programming Language
                                                      • Postmaster Toolsの迷惑メール率をDatadogで監視する - クラウドワークス エンジニアブログ

                                                        こんにちは。エンジニアの砂川です。 2023年10月頃にGoogle・Yahoo!から新しいメール送信者ガイドラインが出されました。 該当するメール送信者は、ガイドラインに沿っているか確認をし、沿っていない場合は対応する必要があります。 blog.google support.google.com 対応完了しきった皆様、お疲れ様でした。 絶賛対応中の方々、頑張っていきましょう。 ところで皆さんGmailのPostmaster Toolsの迷惑メール率の監視はいかがでしょうか? クラウドワークスではGmailガイドラインで定めているPostmaster Toolsの迷惑メール率を監視し、閾値を超えるとアラートを通知するような仕組みを作り、運用をしています。 この記事では、その仕組みをご紹介します。 なぜ作ったのか 定期的にPostmaster Toolsにログインして監視するのが面倒 (サブ

                                                          Postmaster Toolsの迷惑メール率をDatadogで監視する - クラウドワークス エンジニアブログ
                                                        • Freshハンズオン 初級編

                                                          ハンズオン用の記事です。随時修正・アップデートされます。 対象レベルは「少々JavaScriptが書ける」初心者向けです。中級編はこちら 色々端折るために拡張機能をインストールします。Next.jsなどに親しんでフロントエンドをバリバリやっている方には冗長な説明が多いと思います。上級者は公式ドキュメントを全部読み込むことをおすすめします。 Freshの特徴 Freshはシンプルさと速度、信頼性に重点を置いたDeno用のWebフレームワークです。 特徴としては「サーバサイドレンダリング」を基礎に下記の特徴を備えています。 必要がない限りゼロJavaScript 基本的にすべてTypeScript ビルドステップなし(条件あり) この結果、型の恩恵を受けながら、極力軽量な構成でWebアプリケーションを作ることができます。 ゼロJavaScript FreshはIsland architectu

                                                            Freshハンズオン 初級編
                                                          • DenoとFreshでペアプロ・モブプロ用タイマー『timer.team』を開発して得た知見⏰

                                                            DenoとFreshでペアプロ・モブプロ用タイマー『timer.team』を開発して得た知見⏰ これはDeno Advent Calendar 2023の22日目の記事です。 はじめに こんにちは! LEF(@lef237)と申します。 自分は今年の夏、えにしテックという会社に入社しました。そして最初のプロジェクトとして自社アプリを開発・リリースしました。 timer.team どんなアプリかというと「ペアプロ・モブプロに特化したポモドーロタイマー」です。このアプリを開発するにあたってDenoとFreshを用いました。🦕🍋 最初にこの『timer.team』を開発した背景を説明し、それから使用技術を解説していきます。 この記事ではDenoを中心に据えつつ、広範な内容を取り上げています。自分が開発する上で詰まったポイント・理解に時間が掛かったポイントを重点的にピックアップしました。 まだ

                                                              DenoとFreshでペアプロ・モブプロ用タイマー『timer.team』を開発して得た知見⏰
                                                            • Wasm core dumps and debugging Rust in Cloudflare Workers

                                                              Wasm core dumps and debugging Rust in Cloudflare Workers08/14/2023 A clear sign of maturing for any new programming language or environment is how easy and efficient debugging them is. Programming, like any other complex task, involves various challenges and potential pitfalls. Logic errors, off-by-ones, null pointer dereferences, and memory leaks are some examples of things that can make software

                                                                Wasm core dumps and debugging Rust in Cloudflare Workers
                                                              • AWS SDK for Go でエンドポイントの向き先を httptest.NewServer() にしてテスト | フューチャー技術ブログ

                                                                はじめにTIG真野です。 AWS SDK for Go を使ったコードをクラウドサービスに依存無しでローカルにてテストするとき、次のような手法が考えられます。 外部アクセス部分をインターフェースにしてテスト時はモックコードに差し替えよく見る手法だが、テスト目的のみでインターフェースを作る手間があるSDKのmiddlewareを使用詳細はAWS SDK for Go V2でinterfaceのモック”無し”でテスト - 365歩のテックを参考くださいインターフェースの作成を抑えられるメリットがあるLocalStackなどのモックサービスを利用別プロセス(いわゆる、テストサイズはMedium)になるため。実行時間は1,2より増える。実環境に近い環境でテストできるため品質を上げやすい利点があるhttptest.NewServer() でモックするフューチャーで実績が多いのはLocalStackで

                                                                  AWS SDK for Go でエンドポイントの向き先を httptest.NewServer() にしてテスト | フューチャー技術ブログ
                                                                • Terraformの実装コードを、動かしながら読む | フューチャー技術ブログ

                                                                  Terraform連載2024 の10本目記事です。 はじめにこんにちは。CSIG(Cyber Security Innovation Group)の棚井です。 Terraform 連載ということで そういえば、実装コードは Go で書かれていたなコマンドの使い方はインフラエンジニアの皆様が書いてくれるはずなので、コードリーディングしようかなとの考えに至り、ソースコードリーディング自体をブログ化しました。 参考になる点が1つでもあれば幸いです。 エディタの準備今回のコードリーディングでは VSCode を利用します。 Go のコードジャンプやテスト実行のため、以下の拡張機能を追加します。 GoGo OutlinerGo Test Explorerまた、コードリーディングのお供として「GitHub Copilot」も追加します。 GitHub アカウントで Copilot を有効化する方法や

                                                                    Terraformの実装コードを、動かしながら読む | フューチャー技術ブログ
                                                                  • Typstで書く卒論・修論テンプレート

                                                                    1. Typstとは 公式ドキュメントにあるようにマークアップベースの組版システムです. Rust言語で書かれているので, Latexに比べてコンパイルが早いのが特徴です. 2. 修論テンプレート 今年リリースされたこともあってか, 修士論文のテンプレがなかったので自分で作りました. GitHubからダウンロードできます. 3. 実装したもの ディレクトリ構成は以下のようになっています. . ├── Figures │ ├── typst-github.svg │ └── typst.svg ├── README.md ├── main.pdf ├── main.typ ├── references.bib ├── template.pdf └── template.typ template.typに環境変数やレイアウトを書いていまして, それをmain.typで読み込んで本文を書いていく

                                                                      Typstで書く卒論・修論テンプレート
                                                                    • Finding unreachable functions with deadcode - The Go Programming Language

                                                                      The Go Blog Finding unreachable functions with deadcode Alan Donovan 12 December 2023 Functions that are part of your project’s source code but can never be reached in any execution are called “dead code”, and they exert a drag on codebase maintenance efforts. Today we’re pleased to share a tool named deadcode to help you identify them. $ go install golang.org/x/tools/cmd/deadcode@latest $ deadcod

                                                                        Finding unreachable functions with deadcode - The Go Programming Language
                                                                      • Go 1.22 is released! - The Go Programming Language

                                                                        The Go Blog Go 1.22 is released! Eli Bendersky, on behalf of the Go team 6 February 2024 Today the Go team is thrilled to release Go 1.22, which you can get by visiting the download page. Go 1.22 comes with several important new features and improvements. Here are some of the notable changes; for the full list, refer to the release notes. Language changes The long-standing “for” loop gotcha with a

                                                                          Go 1.22 is released! - The Go Programming Language
                                                                        • 詳解 "Fixing For Loops in Go 1.22" 自作linterをgolangci-lintへコントリビュートした話

                                                                          Go1.22から(プレビューはGo1.21から)ループ変数のメモリ共有問題が解消されたことは皆様よくご存知かと思います。 cf. Fixing For Loops in Go 1.22 それではもう1歩踏み込んで、ループ変数がイテレーション毎に異なるインスタンスになるのはどのような時でしょうか?以下2つの出力が異なる理由をどう説明できるでしょうか? for i := range 3 { fmt.Print(&i) // [0x14000112018, 0x14000112030, 0x14000112038] // 異なるアドレス } for i := range 3 { print(&i) // [0x1400010af18, 0x1400010af18, 0x1400010af18] // 同じアドレス } 新しいループとそれを取り巻くツールの実装は、既存コードでバグを生み出さない・パ

                                                                            詳解 "Fixing For Loops in Go 1.22" 自作linterをgolangci-lintへコントリビュートした話
                                                                          • Rye: A Vision Continued

                                                                            Rye: A Vision Continued written on Sunday, February 4, 2024 In April of last year I released Rye to the public. Rye, both then and now, represents my very personal vision of what an improved Python packaging and project management solution can look like. Essentially, it's a comprehensive user experience, designed so that the only tool a Python programmer would need to interface with is Rye itself

                                                                            • Rye Grows With UV

                                                                              Rye Grows With UV written on Thursday, February 15, 2024 Two weeks ago I asked the question again about What Rye should be. There has been one thing that I have not publicly shared before and that is that ever since Rye exists I have also been talking to Charlie Marsh about Python packaging and Python tooling. It turns out that we had some shared ideas of what an ideal Python tooling landscape wou

                                                                              • Why People are Angry over Go 1.23 Iterators

                                                                                NOTE: This is based on, but completely rewritten, from a Twitter post: https://x.com/TheGingerBill/status/1802645945642799423 TL;DR It makes Go feel too “functional” rather than being an unabashed imperative language. I recently saw a post on Twitter showing the upcoming Go iterator design for Go 1.23 (August 2024). From what I can gather, many people seem to dislike the design. I wanted to give m

                                                                                • Go testにおける可読性を保つ方法を考える - every Tech Blog

                                                                                  はじめに TIMELINE開発部の内原です。 本日はGo言語のテストにおける可読性について考えてみます。この記事を読んでいただいている皆さんにも、テストを書いていて以下のような問題を感じた経験があるのではないでしょうか。 既存のコードに機能追加をするためテストコードにもテストケースを追加しようとしたが、テストコードが複雑で読み解きづらく、テストを追加するのに苦労した テストケースの種類が多く、少しデータを追加しただけでも既存のテストが動かなくなる テストデータの登録方法が複雑で、テストコードの実装以前に手間取る 上記のような問題に対処するべく、実践的なシナリオに従ってGo言語のテストコードを実際に書きつつ都度改善していくことにします。 仕様(ver.1) ユーザ情報には名前、状態(有効、無効)とがある 有効なユーザ一覧を返却する関数 LoadActive() を実装する。その際並び順はID

                                                                                    Go testにおける可読性を保つ方法を考える - every Tech Blog