モリユウキ|YM202110

モリユウキ|YM202110

マガジン

最近の記事

  • 固定された記事

noteを再開します #432

1ヶ月ほど更新停止していましたが、また再開したいと思います。 今回はそのご報告と、この1ヶ月で色々あり、考え方も少し変わったので自分なりに整理しようと思います。 怒涛の10-11月本当に色々ありました。。。 妻と長男が乗った自転車が車にぶつかられたり(軽傷です)、次男がなぜか右目周辺ばかり怪我したり(軽傷です)、初めて健康診断で引っかかったり(結局異常なし)。。。 そんなこんなで一度心身を落ち着けるため、一定の負荷がかかるnote更新をストップすることに決めていました

    • アドテク_クッキーシンクとは #479

      以前から広告業界まわりのツール開発に携わっていましたが、転職して本格的なアドテクノロジーに関わり始めました。この分野の専門知識を吸収するためにも、学んだことをアウトプットしていきたいと思います。 今回はクッキーシンクという技術についてです。 参考欄に記載した本はとても良い学びになったのですが、ここで出てきたクッキーシンクが(自分の知識不足で)いまいち腹落ちしなかったのでここで整理します。 そもそもクッキーとはクッキーはWebサイトを訪問したときにWebサーバーがブラウザ

      • Golang_net/urlパッケージを使う #478

        Go言語には、URLを操作するための便利なパッケージであるnet/urlが用意されています。文字列からURLを読み取って、ホスト部分やパラメータ部分を切り出して操作することが可能です。 業務でこのパッケージを扱うことがあったので、この機会にまとめてみます。 url.URLとはURLを構成する各要素(スキーム、ホスト、パス、クエリパラメータなど)を個別に操作できる構造体です。この構造体を利用することで、URLの解析、生成、操作が簡単に行えます。 基本的な使い方 URLの

        • AWS FireLensでECSのログをS3に保存する #477

          業務でログ周りの設定について学んだので、 AWS FireLensを使ってFluentdを設定し、Kinesis Firehoseを経由してS3にログを保存する方法について、一般化して整理したいと思います。 大まかな設定の流れを把握する目的で書いているので、実際に動作させるには色々不足があるかと思います。 各設定ファイルの中身もChatGPTに書かせたサンプルです。 概要AWS FireLensは、Amazon ECSやFargateで動作するコンテナのログを収集し、処

        • 固定された記事

        noteを再開します #432

        マガジン

        • その他_Tips
          35本
        • Golang
          19本
        • AWS関係
          54本
        • Django関連
          69本
        • Computer Science関連
          27本
        • Docker関連
          16本

        記事

          Golang_bytes.Bufferの概要 #476

          Go言語の標準ライブラリには、バッファを扱うための便利なパッケージbytesが含まれています。その中でも特に重要なのがbytes.Bufferです。業務で扱う場面があったので内容をまとめてみます。 bytes.Bufferとはbytes.Bufferは、バイトスライスを効率的に扱うためのバッファです。これにより、バイトデータを追加、読み取り、変換などの操作を容易に行うことができます。以下のような特性を持ちます。 可変長のバイトスライスを内部に保持 データの追加、読み取り

          Golang_bytes.Bufferの概要 #476

          Golang_golangci-lintでリンターを実行する #475

          Goを使ったプロジェクトへジョインし、毎日とても面白く作業させていただいてますが、Goの知見が浅いこともあり日々勉強です。 今回はGoのリンターであるgolangci-lintについてまとめます。 golangci-lintとはその名の通りGoのリンターで、複数のリンターを統合して使える点が特徴的です。公式で以下のように説明されています。 開発中に少しハマっていたですが、複数のリンターを統合している、というのを理解できていなかったのが要因でした。 基本的な設定と使い方

          Golang_golangci-lintでリンターを実行する #475

          Golang_ジェネリクスとは #474

          一般的に「ジェネリクス(Generics)」とは、プログラミングにおいてデータ型に依存しない汎用的なコードを書くための手法を指します。ジェネリクスを用いることで、同じ操作を異なるデータ型に対して行うための柔軟で再利用可能なコードを作成できます。 Go言語でもジェネリクスの要望が多かったようで、1.18から導入されました。 具体的な使い方や、どういう役割を果たしているか理解するうえで、ジェネリクスが登場する以前にどういう課題が存在し、それをジェネリクスがどのように解決したの

          Golang_ジェネリクスとは #474

          Golang_コンテキストとは #473

          サーバーを動かすにはリクエストを処理する方法が必要で、リクエストを処理するには個々のリクエストのメタデータを処理する方法が必要です。 Goではコンテキスト(context)という概念を使ってリクエストのメタデータを管理しています。リクエストのメタデータとは、主に以下の2つを指します。 正しく処理するためのメタデータ:タイムアウトやデッドラインなど、リクエストがどのように処理されるべきかを指示する情報 処理を中止するためのメタデータ:リクエストのキャンセルシグナルなど、処

          Golang_コンテキストとは #473

          Golang_並行処理とMutex #472

          並行プログラミングにおいて、複数のゴルーチンが同じメモリ領域にアクセスしようとするとデータ競合が発生する可能性があります。Golangでは、このような競合を防ぐためにsync.Mutexが提供されています。 Goの公式チュートリアルである「A Tour of Go」の最後の演習課題でちょうどよいものがあったので、Mutexの説明を兼ねて整理しておきます。 Mutexとは?Mutexは、複数のゴルーチンが同じ共有リソースに同時にアクセスするのを防ぐためのロック機構です。sy

          Golang_並行処理とMutex #472

          Golang_ゴルーチン&チャネルとselectとsync.WaitGroup #471

          Golangは、シンプルかつ強力な並行処理機能を提供します。並行処理の要であるゴルーチンについて以下の記事で整理しました。 この記事ではこれを更に深掘りし、並行処理を効率的に管理するために重要なselect構文とsync.WaitGroupについて詳しく解説します。 select構文複数のチャネル操作を待機し、最初に準備ができた操作を実行するためのものです。これにより、非同期のチャネル通信を効率的に管理できます。以下が基本的なselect構文の例です。 select {

          Golang_ゴルーチン&チャネルとselectとsync.WaitGroup #471

          Golang_ゴルーチンとチャネル #470

          Golang(Go)は並行プログラミングのために設計されたプログラミング言語で、その中心にあるのがゴルーチンとチャネルという強力な機能です。それぞれについて説明し、具体的な使い方をまとめてみます。 ゴルーチンとは?ゴルーチンは、Goでの軽量なスレッドです。ゴルーチンを使うことで、簡単に並行処理を実装することができます。ゴルーチンは、goキーワードを使って起動されます。 以下のようにすると、「go say("world")」の部分が別スレッドに切り出され、メインで走る「sa

          Golang_ゴルーチンとチャネル #470

          Golang_fmt.PrintlnとStringerインターフェース #469

          fmt.Stringerインターフェースは、標準ライブラリのfmtパッケージで定義されているインターフェースで、Stringメソッドを持ちます。このStringメソッドは、その型のインスタンスを文字列として表現するためのカスタムフォーマットを提供します。 fmt.Stringerインターフェース fmt.Stringerインターフェースは、たった1つのメソッドString()を持ちます。このメソッドは、構造体や任意の型を文字列としてフォーマットするために使用されます。

          Golang_fmt.PrintlnとStringerインターフェース #469

          Golang_インターフェースとは #468

          クラスという概念がないGolangにおいて、インターフェースによってクラスに近いことが実現できます。インターフェースを語るにおいて、Golangにおける「メソッド」について先に軽く触れておきます。 Golangのメソッドとはメソッドとは特定の型に紐づいた関数を指します。構造体や任意のカスタム型にメソッドを定義できます。 例えば構造体ManにShowAgeメソッドを関連付けてみます。 type Man struct { Name string Age int} func

          Golang_インターフェースとは #468

          Golang_関数とクロージャ #467

          Golangの関数はクロージャをサポートしています。これにより、コードの再利用性と柔軟性を高めることが可能です。それぞれに関して整理していきたいと思います。 Golangの関数Golangにクラスの概念はありませんが、他のプログラミング言語と同様に関数は存在しています。 基本的な関数 基本的な構文は以下の通りです。 func functionName(parameter1 type1, parameter2 type2) returnType { // 関数の処

          Golang_関数とクロージャ #467

          Golang_fmt.Printfのチートシート #466

          GolangでもPrint出力があり、特にデバッグで便利そうなfmt.Printfではフォーマット指定子を使って変数の出力方法をコントロールできます。指定子が多いのでチートシート的にまとめたいと思います。 fmt.Printfのチートシートフォーマット指定子はfmtパッケージの中でもPrintfで使用します。 基本的なフォーマット指定子 %d : 整数を出力 %f : 浮動小数点数を出力 %s : 文字列を出力 %t : ブール値(真偽値)を出力 詳細なフォーマ

          Golang_fmt.Printfのチートシート #466

          Golang_mapとカンマOKイディオム#465

          他の多くのプログラミング言語と同様、Golangにおいてもmapが存在します。かつ、Python等にはないカンマOKイディオムという便利な書き方もできるので、そのあたりを整理したいと思います。 Mapとはmapは、キーと値のペアを格納するデータ構造です。キーで値にアクセスするのが非常に効率的で、多くのプログラミング言語で使用されています。Golangのmapは、ハッシュテーブルとして実装されています。 Mapの宣言と初期化Goでは以下のように宣言できます。 var my

          Golang_mapとカンマOKイディオム#465