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

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

golang

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のアカウントが必要なので、あらかじめ作っておく必要があります。 基…

BoltでGoroutineを使って登録する場合のDB.Batch()について

はじめに 昨日に引き続きにBoltついてです。 GitHub - boltdb/bolt: An embedded key/value database for Go.今回はGoroutineの中でBoltに登録処理を行うケースを想定し、DB.Batch()を検証してみました。 DB.Batch() 公式のドキュメントは以下となります。 h…

Golangの組み込みDBとして使えるBoltについて

はじめに 前回にも書きましたが、Golangの組み込みDBとして使うことができるBoltを見つけたので、使ってみました。 GitHub - boltdb/bolt: An embedded key/value database for Go.以下、このDBについて紹介していきたいと思います。 Boltとは BoltはKeyValu…

GolangのローカルDBとしてBoltを使ってみた

前回の記事でBitcoinについて調べていましたが、その時参考にした記事ではローカルDBとしてBoltを使っていました。 Bolt GitHub - boltdb/bolt: An embedded key/value database for Go.Boltは上記になります。READMEが結構充実しているので、使うときには一…

Bitcoinの実装について調べてみた

タイトルにあるように、Bitcoinの実装について調べてみました。 色々なサイトがあったのですが、個人的には以下のサイトが分かりやすかったので紹介します。Building Blockchain in Go. Part 1: Basic Prototype - Going the distanceこちらのサイトはGolang…

JSON Web Tokenを返すGolang Serverを実装してみた

タイトルにあるように、JSON Web Tokenを返すGolang Serverを実装してみました。 認証が必要なAPIがあり、そのAPIのみTokenの検証を行なった後にアクセス可能にするケースを想定しています。とは言っても、基本的には Authentication in Golang with JWTs を…

urfave/cliを使ってみた

Building a Network Command Line Interface in Go | TutorialEdge.net という記事を見つけました。https://github.com/urfave/cli このライブラリを使い、いくつかのネットワークコマンドを実行するCLIアプリを作ってみる記事です。今回はこの記事を写経し…