goccy/go-yaml で yaml の decode/encode

はじめに

goccy/go-yaml というライブラリを使って yaml の decode/encode を行ってみます。

今回は後に openAPI の yaml ファイルを扱うことを想定し anchor/alias を利用したyamlファイルを分割した読み込みと、anchor/aliasを解決した後のyamlファイルの書き出しを行ってみます。

goccy/go-yaml 作者様の情熱溢れる解説記事はQiitaに上がっていました。
私もyamlファイルの分割時に anchor の使い回しをしたくこのライブラリに出会うことができました。

qiita.com

続きを読む

go で algorithm : FizzBuzz

はじめに

諸事情で暇になったので atcoder でも始めようかと思いましたが、まずは有名アルゴリズムを身につけていこうかと思います。
アルゴリズムかどうかはわかりませんが、まずは go で FizzBuzz とテストを書きます。

github.com

go で FizzBuzz

0~100 の int をもらってFizzBuzzを返します。

package main

import (
    "fmt"
)

// FizzBuzz is return usual FizzBuzz and error
func FizzBuzz(n int) (string, error) {
    if n < 1 || n > 100 {
        return "", fmt.Errorf("Invalid number: %v", n)
    }
    switch {
    case n%15 == 0:
        return "FizzBuzz", nil
    case n%3 == 0:
        return "Fizz", nil
    case n%5 == 0:
        return "Buzz", nil
    default:
        return fmt.Sprint(n), nil
    }
}

FizzBuzz のテストです。
Table Driven Tests で書いていこうと思います。

package main

import "testing"

func TestFizzBuzz(t *testing.T) {
    tests := []struct {
        input int
        want  string
        err   bool
    }{
        {input: -1, want: "", err: true},
        {input: 0, want: "", err: true},
        {input: 1, want: "1", err: false},
        {input: 2, want: "2", err: false},
        {input: 3, want: "Fizz", err: false},
        {input: 5, want: "Buzz", err: false},
        {input: 15, want: "FizzBuzz", err: false},
        {input: 101, want: "", err: true},
    }

    for _, test := range tests {
        got, err := FizzBuzz(test.input)
        if !test.err && err != nil {
            t.Fatalf("should not be error for %v but: %v", test.input, err)
        }
        if test.err && err == nil {
            t.Fatalf("should be error for %v but not:", test.input)
        }
        if got != test.want {
            t.Fatalf("want %q, but %q:", test.want, got)
        }
    }
}

まとめ

特にまとめる必要のない内容ですが、次回以降のフォーマットになればと FizzBuzz をまとめました。
安心安全の mattn さんの記事を参考にさせていただきました。

mattn.kaoriya.net

NestJS 入門

はじめに

NestJS への入門としてNestJS のインストールから簡単な API の追加までをまとめます。 NestJS は Typescript で書かれた ServerSide Web Frameworkです。
nestjs/ng-universal というAngular 用の Server Side Rendering ライブラリーや、公式でOpenAPI対応 があり Angular との相性が良さそうです。

nestjs.com

続きを読む