【個人開発】久しぶりの更新
前に着手し始めていたプロジェクトがブログごと消えたのでこちらで再掲します。 とりあえず簡単な初期設計だけ。
勤怠システムです。久しぶりに開発始めよう。 (前のアカウントどこにやったんだろう・・・)
【デザインパターンノック】1本目 Abstract Factory <<WIP>>
概要
- インスタンスを生成する為だけのクラス。このクラスが持つ責務は
インスタンスを生成する
ということだけ - オブジェクトグループを間違いなく生成する
もっとわかりやすく
例えば、下記のように3つのオブジェクトがあるとする。
Goで書くとこんな感じ
type dog struct { favoriteFood string } type cat struct { favoriteFood string } type man struct { favoriteFood string }
さらに、 好物のオブジェクト
を作るための構造体と関数も用意する。
type food struct { ingredients string } func NewTakoyaki(ingredients string) food { return food{ingredients: ingredients} }
本来期待する動作は、 キャラクターに対して適切な好物を設定する
ということ。
↓ なら特に問題ないけど(たこ焼き食べたい)
func main() { man := NewMan(NewTakoyaki("octopus")) }
↓の場合は犬の健康に悪影響が出てしまう。
func NewCat(favoriteFood food) food { return food{ingredients: favoriteFood.ingredients} }
それで結局何なのか
参考
デザインパターン20本(くらい)ノック
モチベーション
デザインパターンがわからなさすぎてアーキテクチャの勉強に影響を及ぼしてきたのでそろそろ学ぼうと思いました。でも、生成パターンとか構造パターンとかそもそもそのサブタイが理解できないので不安でしかない。
学習予定一覧
〜生成パターン(?)〜
- Abstract Factory
- Builder
- Factory Method
- Prototype
- Singleton
〜構造パターン(?)〜
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
〜振る舞いパターン(?)〜
- Chain of Responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template Method
- Visitor
今回は着手しないもの
- マルチスレッドプログラミングに関するパターン一覧 (そのうちやりたい)
- アンチデザインパターン (そのうちやりたい)
参考
リモートワークっていいよね
すごいどうでもいい話なんですけど、最近の社会的な動きとしてリモートワーク推奨になったじゃないですか。あれってすごく合理的でいいですよねっていう。
多分自分が新入社員だったら戸惑うだろうから、新人さんにとっては微妙なのかもしれないけど。
【Go】クエリストリングを複数投げたのに取得できない時
経緯
GoでAPI書いていて http://localhost:2000/hogehoge?name=yeee&age=fugaa
みたいなリクエスト投げたのにちゃんと取得出来なくて3日くらい悩んだのに、すごい初歩的な事が原因だった。
原因
そもそもGo側の問題じゃなかった。 ターミナルからcURL叩いてたのが原因・・・というか、エスケープをちゃんとしてなかったのが原因だった。
# ダメな例 $ curl http://localhost:2000/hogehoge?name=yeee&age=fugaaa # ちゃんと通る例(&をエスケープしてる) $ curl http://localhost:2000/hogehoge?name=yeee\&age=fugaaa続きを読む