ソースコードから理解する技術-UnderSourceCode

手を動かす(プログラムを組む)ことで技術を理解するブログ

golang

Golangのx.text.transformが便利だった

タイトルにある様にGolangのx.text.transformパッケージについてです。 このパッケージを使うと、readerやwriter内のデータを変換することができます。 良くある用途としては、readerで読み込んだ文字列の一部を変換して出力する、などがあると思います。こ…

localstack と Visual Studio Code の Remote-Containers でAWSの開発環境を構築してみる

GitHub - localstack/localstack: A fully functional local AWS cloud stack. Develop and test your cloud & Serverless apps offline! 「localstack」というAWSを仮想的にローカルマシン内のDockerで動かすものがあります。この「localstack」で起動した…

aws-sdk-goのMockを使ったテスト

Mocking Techniques for Go. Go provides you all the tools you need… | by kyleyost | CBI Engineering | Jun, 2020 | Mediumこちらの記事を読んでいたところ、以下のような記述がありました。 When working with the aws-sdk, they provide interfaces fo…

Golangで2つのgzファイルを連結してみる

gzファイルはコマンドだと以下のように連結することができます。 cat sample1.gz sample2.gz > result.gzこれと同じようにgzファイルを連結する処理をGolangで書いてみました。 検索すれば似たようなことをやっている記事は沢山出てくるかと思いますが、備忘…

Golangで構造体を定義せずにjsonを読み込んでみる

ふとした時にGolangでjsonを読み込む話になり 事前に構造体を定義しないでreflectで読み込んで云々・・・みたいな話になりました。そう言えばGolangでreflectをまともに使ったことがないなあ、と思い 勉強がてらサンプルソースを作ってみました。以下、サン…

gofakeitでサンプルデータを作ってみる

GolangでサンプルデータのCSVを作成したかったので、いくつかライブラリを検索したところ、「gofakeit」というライブラリを見つけました。 GitHub - brianvoe/gofakeit: Random fake data generator written in goREADMEを見れば使い方は分かりますが、備忘…

Gorillaのcontextとmuxを触ってみる

Gorilla, the golang web toolkit GorillaというGolangのWeb向けツールキットについて調べ始めました。 Webアプリ用に色々なものが用意されているのですが、フレームワークではなく、あくまで必要なものを自分で取捨選択してつかう「ツールキット」です。今…

aws cdk でGolangのLambdaをデプロイしてみる

前回に引き続き、aws cdkについてです。今回はGolangのLambda FunctionをAWS上にデプロイしてみました。 ソースは以下に上げてあります。 GitHub - SrcHndWng/cdk-lambdaプロジェクトはnpxを使って作成したので、プロジェクトの作成などは以前の下記記事を参…

「Go言語によるWebアプリケーション開発」の感想など

O'Reilly Japan - Go言語によるWebアプリケーション開発をのんびりと写経してきて、一通り終わりました。 全ての章のものではないですが、写経と読書中にメモした感想などを備忘録として残しておきたいと思います。 全体の感想 「Go言語によるWebアプリケー…

watermillを触ってみた

前回に引き続きメッセージを扱うライブラリを触ってみました。 github.com「watermill」というもので、メッセージストリームを効率的に扱うためことを目的としているようです。 手始めにREADMEにある「Getting Started Guide」(https://watermill.io/docs/ge…

RxGoを触ってみた

RxGoというReactiveをGolangで実現するためのライブラリを触ってみました。 READMEのサンプルが分かりやすく、それを見るのがいいとは思いますが、自分の理解のために多少改変してみたりもしたのでサンプルとして上げておきます。GitHub - SrcHndWng/go-rx-s…

GolangでWebAssemblyの復習をした

GolangでWebAssemblyの復習するため、いくつかサイトを見て写経してみました。 一年以上ぶり、かつ実行環境が異なったので、改めて気づいたことがあったので、メモとして残しておきます。 実行環境について Windows10上のWindows Subsystem for Linux(Ubuntu…

go-linqを触ってみた

GolangでC#のLINQのようなデータ操作をできるgo-linqを触ってみました。 GitHub - ahmetb/go-linq: .NET LINQ capabilities in Go使い方は公式のREADMEにそのまま書いてあるので改めてここには書きませんが 便利そうなので備忘録として残しておきます。GoのS…

ginとendressを使ってGraceful Restartを実装してみた

GolangのWeb Frameworkであるgin、"Zero downtime restarts"を行うためのendressを使って タイトルにあるようにGraceful RestartするWebのサンプルを作ってみました。https://github.com/gin-gonic/gin https://github.com/fvbock/endless サンプルソース ソ…

Visual Studio CodeのRemote DevelopmentでWSL内のGolangを書いてみる

ちょっと前(だいぶか?)Visual Studio Codeでリモートで接続して編集できる「Remote Development」が登場して気になっていました。 Visual Studio Code Remote Development登場したときは正規のVisual Studio Codeではなく、プレビュー版?のVisual Studio…

survey を使ってインタラクティブなプロンプトを作ってみた

GitHub - AlecAivazis/survey: A golang library for building interactive prompts with full support for windows and posix terminals.タイトルにあるように、surveyを使ってインタラクティブなプロンプトを作ってみました。 どんなことが出来るかやイメ…

「Goならわかるシステムプログラミング」を読んだ

「Goならわかるシステムプログラミング」の一連の記事をゴールデンウィーク中に読んでました。 ASCII.jp:Goならわかるシステムプログラミング単純にコーディングしているだけでは意識することが少ない、低レイヤーの話が分かりやすく書かれており、必要にな…

Go Moduleでローカルパッケージを作成する

Using Go Modules - The Go BlogGo Moduleについての上記の公式サイトではhello.go、それのテストであるhello_test.goを GOPATHの外に実装する方法について書いてあります。ですが実際にプログラムを作るときには、ローカルに幾つかのパッケージを作ることが…

AWS CLI、GolangでS3のPre Signed URLを取得してみる

AWS CLIとGolangで、それぞれS3にあるオブジェクトのPre Signed URLを取得してみました。 やってみた背景としては、リクエストがあった時にS3に配置したオブジェクトを安全にリクエスト元へ渡したい、みたいな要件を耳に挟み Pre Singed URLを作ればいいんじ…

Windows Subsystem for Linux上にAWS SAMの実行環境を構築する + Golangの開発環境を用意する

タイトルにあるように、Windows Subsystem for Linux上でAWS SAMを実行する環境を構築してみました。 単純にLinux上にAWS SAMの実行環境を構築するだけと思いきや、細々と調べながら進めることになったので その結果をメモ代わりに書いておきます。 Windows …

gbのテストで特定のものを実行する、結果を色付けする

タイトルにあるように、gbのテストで 特定のパッケージ、メソッドを実行する テストの結果の詳細を表示する、結果を色付けして分かりやすくする 方法についてです。 ただgbだけでなく、普通の「go test」でも使えるかと思います。 (go testの場合は「gb」を…

ビルドツールのgbをVisual Studio Codeで使ってみる

Golangのビルドツールのgbを試してみました。 私は普段Visual Studio Codeを使っているので、こちらでエラーとならないよう設定もしました。gbを使うメリットとしては 自分が作成したpackageをimportする際にGopathからのフルパスを書かなくていい 使用する…

Microsoft To-Do のタスクをGolangで取得してみる

前回の記事で、Microsoft To-Doのタスクをcurlで取得してみました。 Microsoft To-Do のタスクをAPIで取得してみる - ソースコードから理解する技術-UnderSourceCode今回はGolangでタスクを取得するコンソールアプリを作ってみました。 ビル…

goqueryでスクレイピングする

Golangでスクレイピングしようと思い、いくつかのライブラリを検討しました。 それらの中でjQueryライクに扱うことができるgoqueryを使ってみたので、メモ代わりに書いておきます。GitHub - PuerkitoBio/goquery: A little like that j-thing, only in Go.と…

go-wkhtmltopdfでPDFを出力してみる

GolangでPDFを出力するためのライブラリとして GitHub - SebastiaanKlippert/go-wkhtmltopdf: Golang commandline wrapper for wkhtmltopdf があります。単純な使用例は上記のGithub内にもあるのですが 今回は実案件で使用することを想定し HTMLをPDFに変換…

gb環境下で定義ジャンプができない?

普段はVisualStudioCodeを使ってGolangの開発を行っているのですが 定義へジャンプができないことがありました。gbを使ってビルドしており、ライブラリなどはプロジェクト直下のvendor/に配置されます。 このvendor内のソースへジャンプできないようです。。…

EchoとVue.jsでCRUDを、、、、作りかけた

EchoとVue.jsを使いTodoをCRUDするサンプルを作り始めました。 「始めました」と書いているのは、サーバ側のCRUDは実装したのですが クライアント側は一覧の表示だけしか実装していないからです。まあ、EchoとVue.jsを組み合わせたサンプルの一つにはなるか…

gRPCの入門とAPIバージョニングについて

はじめに gRPCでmicroserviceを作る以下のチュートリアルを写経してみました。 [Tutorial, Part 1] How to develop Go gRPC microservice with HTTP/REST endpoint, middleware, Kubernetes deployment, etc.この中でAPIのバージョニングを行うために、バー…

Firestoreにコレクションをネストしたデータを登録する

はじめに 前回に引き続き、Firestoreについてです。 今回は公式ドキュメントの「サブコレクション」を参考に、コレクションをネストして登録し、参照してみました。https://firebase.google.com/docs/firestore/data-model?authuser=0登録するデータの構成は…

FirestoreにGolangでデータを登録してみる

はじめに GoogleのFirebaseを初めて触ってみました。 今回はFirestoreにGolangでデータを登録・参照してみました。 以下、その時のメモと、作ったソースです。 手順について まずはGoogleのアカウントが必要なので、あらかじめ作っておく必要があります。 基…