よしかわーるど

プログラミングで世界を変える

2019年4月1日にやったこと

元号が「令和」に決まったから、和暦で動いてるプロダクトがないか探し回った。

やったこと

gin から echo にフレームワークを変更している。

gorm を導入している。

やりたいこと

mock の導入もしていきたい。

GraphQL に変更していきたい。

2019年3月29日にやったこと

やったこと

Makefileの修正を行った.

docker-composeのMySQLコンテナでエラーが出るので, 修正を行った.

depからgo moduleに変更した.

内容

make だけでコンテナが起動し, データベースの作成, テーブルの作成を終わらせるようにしました.

GOCMD=go
GORUN=$(GOCMD) run
GOBUILD=$(GOCMD) build
GOCLEAN=$(GOCMD) clean
GOTEST=$(GOCMD) test
GOGET=$(GOCMD) get
GODOC=$(GOCMD)doc
COMPOSE=docker-compose
EXEC=$(COMPOSE) exec
BUILD=$(COMPOSE) build
UP=$(COMPOSE) up -d
LOGS=$(COMPOSE) logs
STOP=$(COMPOSE) stop
RM=$(COMPOSE) rm
DOWN=$(COMPOSE) down
API=$(EXEC) api
DB=$(EXEC) db
REACT=$(EXEC) react
DBNAME:=fieldsensing
TESTDBNAME:=test_fieldsensing
MYSQL:=mysql --defaults-extra-file=/home/access.cnf

all: docker/up migrate/init migrate/up ## docker up & migrate

front: docker/up npm/install ## docker up & npm install

migrate/init: ## migrate init
  $(DB) /home/wait.sh
  $(DB) $(MYSQL) -e "create database if not exists \`$(DBNAME)\`"

migrate/test-init: ## migrate test database init
  $(DB) /home/wait.sh
  $(DB) $(MYSQL) -e "create database if not exists \`$(TESTDBNAME)\`"

migrate/up: ## migrate up
  $(API) goose up

migrate/down: ## migrate down
  $(API) goose down

docker/build: ## docker build
  $(BUILD)

docker/up: ## docker up
  $(UP)

docker/logs: ## docker logs
  $(LOGS)

docker/stop: ## docker stop
  $(STOP)

docker/clean: ## docker clean
  $(RM)

docker/down: ## docker down
  $(DOWN)

api/bash: ## api container bash
  $(API) bash

react/bash: ## react container bash
  $(REACT) bash

db/bash: ## db(MySQL) container bash
  $(DB) bash

npm/install: ## npm install
  $(REACT) npm install

npm/watch: ## npm watch
  $(REACT) npm run watch

npm/build: ## npm build
  $(REACT) npm run build

run: ## go run main.go
  $(API) $(GORUN) main.go

test: ## go test
  $(API) $(GOTEST) -v ./...

doc: ## godoc http:6060
  $(GODOC) -http=:6060

help: ## Display this help screen
   @grep -E '^[a-zA-Z/_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'

DBコンテナが完璧に起動しないとエラーが出るので, 以下のShell Scriptを実行しています.

#!/bin/sh
ESC="\e["
ESCEND=m
COLOR_OFF=${ESC}${ESCEND}
maxcounter=45

counter=1
echo "Waiting for MySQL"
while ! mysql --protocol TCP -uroot -p"$MYSQL_ROOT_PASSWORD" -e "show databases;" > /dev/null 2>&1; do
    sleep 1
    printf "."
    counter=`expr $counter + 1`
    if [ $counter -gt $maxcounter ]; then
        >&2 echo "We have been waiting for MySQL too long already; failing."
        exit 1
    fi;
done
echo "${ESC}32${ESCEND}"
echo "\nMySQL ready!!"
echo "${COLOR_OFF}"

go modules でライブラリの管理を始めました.

コンテナとdepの相性が悪かったので安心して導入できました.

export GO111MODULE=on

2019年2月25日にやったこと

テスト期間とかが終わって, ある程度余裕が出来てきたので更新し始める.

Unityを触り始めて, 3日目くらい. 相も変わらずゲームづくりは向いていないかもしれない.

24日の午後11時に学校に向かった.

やったこと

サークルの先輩の書いたコードの修正.

内容

再帰検索の関数を作成したりしていた.

以下は幅優先探索C#で書いたもの.

Unity使ってる人は面白いかもしれない.

そもそも, こんな関数があれば良いのになぁってなってる.

/// <summary>
/// 指定した名前で幅優先探索
/// </summary>
/// <param name="self"></param>
/// <param name="findName"></param>
/// <returns>一致したTransform, またはnull</returns>
public static Transform FindGameObject(Transform self, string findName) {
    var result = self.Find(findName);
    if (result != null) {
        // 子の中で見つかった時
        return result;
    }
    foreach (Transform child in self) {
        result = FindGameObject(child, findName);
        if (result != null) {
            // 孫以下で見つかった時
            return result;
        }
    }
    return null;
}

2019年1月28日にやったこと

自分のやったことをまとめていく

やったこと

redux-sagaの導入をした.

色々な人の記事を参考にコードを書いてみた.

出来なかったこと

TypeScriptの理解がまだまだ出来ていない.

やっていきたいこと

React, Redux, sagaの導入が完了したが, そもそもJavaScript(TypeScript)の書き方に慣れていないので, 慣れさせる

2019年1月27日にやったこと

自分のやったことをまとめていく

やったこと

Reactを書くときのスターターキットを作成したので記事を作成し始めた.

TypeScriptの書き方を学んだ.

webpack.config.jsの修正をした.

研究室の自分の研究用のリポジトリディレクトリ構成の変更を行った.

出来なかったこと

webpack.config.jsの修正を出来なかった.

やっていきたいこと

TypeScript, Reactについての記事の更新したい.

2019年1月26日にやったこと

やったこと

React の開発環境を構築した.

研究室のリポジトリの README を更新した.

研究室のリポジトリの Dockerfile の整理, 修正を行った.

最新のバージョンでも動いていたので, 良かった 👍

React & Redux のディレクトリ構成などについて考えた.

出来なかったこと

webpack.config.jsの修正を出来なかった.

CoAPのAPIを作成しているが, Dockerコンテナに対してPOSTしているが, IPv6が割り振られていないのか処理が上手くされていない.

HTMLファイルに対してGolangの処理をまだしていないので今後していく.

2019年1月25日にやったこと

今回は, 自分がやったことをまとめていく.

研究室のこと

論文構成について考えた.

参考文献をIEEE Xplore Digital Libraryから検索してた.

自分のコードがどれくらいの POST に耐えられるかを実機を用いて実験を行った.

やっぱり, UDP なので ACK を返さないとパケットロスがあるので, コードに変更を加えなければいけない.

フロントエンド側の開発を React で行っていく.

本当にインターンのような設計になっているので, 今後アプリがどう進化していくか楽しみ.

気付いたこと

まだまだ Go 言語のことを理解していないので, どんどん書いていきたい.

いつかは, プライベートリポジトリを公開していきたい.