エンジニアもどきの雑記

メモ帳です。きっと。macアプリ配信windowsでもできるようになるまで絶対にメイン機にしないマン。特筆しない限り環境は【win10home,i5-7200u,8g,64bit,巨乳が好き】

【日曜日恒例】絵が下手すぎるので書き始めようと思いますpart39

前回
dddpga1.hateblo.jp

いやー。
暑いね。毎日が異常気象状態なのに出社させるとは何事か。

日本は狂ってやがる。

人は熱で死ぬぞ。
殺人者になる前に出社をさせるな。


日本の経営者よ。命を大事に。


はい。

f:id:dddpga1:20180723002612j:plain

スサトさん。
結婚したいゲームキャラNo.1のスサトさん。

今日まじで絵を書く気が起きなくてダラダラ書いてたんだけど、
書いてる内に力が入ってきて今までで一番まともな絵になった気がする。

ただ、気づいたんだけど、書けば書くほど手が汚れて線が汚れてで大変だ。
こういうのってどう避けるというか、対応すればいいんだろう。

また来週

Go構造体さわる

構造体さわる
巨乳をそっと下から支えたい

package main

import "fmt"

type Owl struct {
        Name string
        Age  int
        Meal string
}

func (o *Owl) Birthday() {
        o.Age++
}

func main() {
        owl := Owl{
                Name: "lulu",
                Age:  5,
                Meal: "Meat",
        }

        fmt.Println(owl.Age)

        owl.Birthday()

        fmt.Println(owl.Age)
}

//結果
5
6


昨日さらっとやったメソッドとか、構造体とか。
改めて確認する。

Owlって構造体を用意。
初期化してうちのルルちゃんの情報で初期化してやる。
そして、
owl.Birthday()
でメソッドを利用して構造体にアクセスして歳をとらせた。
なのでowl.Birthday()の前後で数字が違う。

ここで確認したいのがメソッドのレシーバ。

*ポインタで指定してるのは、そうしないと値にアクセスできないから。
試しに*を削除してやってみる。
と結果は

5
5


これは先ほどの通り、値にアクセスできてないから。
参照しないといけないんですねぇ。

cとかやってた人とかそこらへんしっかりわかってる人は大丈夫なんだろうけど、私みたいなぺーぺーは最初ここら辺大変だった。
必死にパソコンの仕組み系の本読んで覚えた。

未経験からほぼ独学で飛び込んで三年。
やっとポインタがわかり始める。
スクリプト言語ばっかりやってると参照渡しくらいしか使わなかった。

entityとかにおいておく感じなのかなー。
もっと書こう。

ちなみに構造体なので以下にもできる

 owl := new(Owl)
 owl.Name = "lulu"
 owl.Age = 5
 owl.Meal = "Meat"



newと先の初期化どう違うんだ?
って調べてみたら初期化できるかできないかっぽい

個人的には最初に書いた方がわかりやすいなー
昨日の記事は後者だけど。

明日もう少し踏み込んで書こうかな。
今日はやることあるしここまで

Goのinterfaceを復習する


大した理解がまだないけども。
次の現場がGoで行きたいので復習する。

Goは強力な型付けがメリットであるが、
どうしてもそこらへんを柔軟に対応したい時がある。

そこで何でも入れることができるinteface{}
で、あってるかな。

よく見るのは似たような処理をするメソッドを一つに
まとめるための利用。

package main

import "fmt"

type Like interface {
        Language()
}

type Me struct{}
type You struct{}

func (m *Me) Language() {
        fmt.Println("Golang")
}

func (y *You) Language() {
        fmt.Println("JavaScript")
}

func SayLikeLanguage(l Like) {
        l.Language()
}

func main() {
        m := new(Me)
        y := new(You)

        SayLikeLanguage(m)
        SayLikeLanguage(y)
}
//結果
go run app.go
Golang
JavaScript


MeとYouの空の構造体を定義して、それに属するメソッドLanguageを作成。
それぞれ好きな言語を表示するだけ。

話はそれるけどjavascriptで何でもしようとする人いるよね。


それぞれのメソッドのレシーバが違うが、やってることはfmt.Printlnだけ。 なので、intefaceを使ってまとめてる。
はず。


何でも入るっていうのが以下

package main

import "fmt"

var x interface{}

func main() {
        y := x
        y = 1

        if valY, ok := y.(int); ok {
                fmt.Printf("y: %d\n", valY)
        }

        z := x
        z = "hogehoge"

        if valZ, ok := z.(string); ok {
                fmt.Printf("z: %s\n", valZ)
        }
}

//結果
go run app.go
y: 1
z: hogehoge


var x interface{}で指定している通り、xはinteface{}型

そのxを代入したyとzを用意して、
それぞれにint型とstr型を代入。

この時yは1でzはhogeだけど、int型とstr型じゃなくて、どちらもinteface{}型になってる。
そのため、そのままfmt.Println(y)とかやるとエラーになる。
inteface{}型をそのまま表示はできませんよって。

そこで型アサーション
inteface{}型.(<型>)で型を変更する。

それぞれをintとstringに変換して表示してる。
okには型アサーションの成功の結果が入る。


これ。
頭の中に入ってはいるんだけど、いざ一人でよしかくぞってやると後からここinterface使えばいいじゃんってなるからまだまだ経験が足りない。

頑張ろう。

【日曜日恒例】絵が下手すぎるので書き始めようと思いますpart38

前回
dddpga1.hateblo.jp

うっすうっす
まぁ書く時に書いてるって感じ。

それより本業が大事。


と、いう言い訳をするのはもうすぐ十か月目だし、
そこきちゃうともう一年もあっという間だから。

つらい。

もっと上手くなる予定だった。

頑張ろう。

はい。


f:id:dddpga1:20180717012730j:plain
SOAでついに実装されたぺりしーさん

超くぁいくなっててにやけました。


現場移動とかあるからちょい忙しいかも

また来週

次回
dddpga1.hateblo.jp

【日曜日恒例】絵が下手すぎるので書き始めようと思いますpart37

前回
dddpga1.hateblo.jp

最近開発意欲がまた高くなってきたから絵を更に書かなくなってしまった。
本職そっちだからいいことなんだけど。


はい。


f:id:dddpga1:20180709012232j:plain

性癖が特殊なので自分で書くしかなくなるが、
書く暇がない。

そんな気がする。


じゃあまた来週。

次回
dddpga1.hateblo.jp

wslでdockerが動く

まず管理者権限でwslを実行
今回ubuntu16.4

sudo apt update
sudo apt upgrade
sudo apt install docker.io
sudo cgroupfs-mount
sudo usermod -aG docker $USER
sudo service docker start

sudo docker run hello-world

で動けばok

続いてdocker-compose


sudo -i
curl -L "https://github.com/docker/compose/releases/download/1.20.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

exit


docker-compose -v
でバージョンが出ればok


が、実際にすでにdocker tool boxやdocker on macで動いてるdocker-compose.ymlのあるディレクトリで
docker-compose up をすると以下のエラーがでる

Creating network "dockercomposetest_default" with the default driver
ERROR: Failed to Setup IP tables: Unable to enable NAT rule:  (iptables failed: iptables --wait -t nat -I POSTROUTING -s 172.24.0.0/16 ! -o br-aa7981c4c5bb -j MASQUERADE: iptables: No chain/target/match by that name.
 (exit status 1))


プロジェクトはdocker-compose公式に書いてあるテストのあれ
これの解決方法がわからない。
これだけ解決できればwsl上で普通にdocker使えるね