# MIDAS LOG

## go home! [:house\_with\_garden:](https://github.com/wnsgml972/midas_log)

## 12.02

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### Phase & Alice UI 교육

### DB Core 계속!

### Phase 문서화

### c++ 공부

* enable\_if

  Compile Time Type Switching <br>

Example) Enum Class Make Bit Set

```cpp
template<typename Enum>
struct EnableBitMaskOperators
{
    static constexpr bool enable = false;
};

template<typename Enum>
typename std::enable_if_t<EnableBitMaskOperators<Enum>::enable, Enum> operator |(Enum lhs, Enum rhs)
{
    using underlying = typename std::underlying_type_t<Enum>;

    return static_cast<Enum> (
        static_cast<underlying>(lhs) |
        static_cast<underlying>(rhs)
        );
}

template<typename Enum>
typename std::enable_if_t<EnableBitMaskOperators<Enum>::enable, Enum> operator &(Enum lhs, Enum rhs)
{
    using underlying = typename std::underlying_type_t<Enum>;

    return static_cast<Enum> (
        static_cast<underlying>(lhs) &
        static_cast<underlying>(rhs)
        );
}

template<typename Enum>
typename std::enable_if_t<EnableBitMaskOperators<Enum>::enable, Enum> operator ^(Enum lhs, Enum rhs)
{
    using underlying = typename std::underlying_type_t<Enum>;

    return static_cast<Enum> (
        static_cast<underlying>(lhs) ^
        static_cast<underlying>(rhs)
        );
}

template<typename Enum>
typename std::enable_if_t<EnableBitMaskOperators<Enum>::enable, Enum> operator ~(Enum rhs)
{
    using underlying = typename std::underlying_type_t<Enum>;

    return static_cast<Enum> (
        ~static_cast<underlying>(rhs)
        );
}

template<typename Enum>
typename std::enable_if_t<EnableBitMaskOperators<Enum>::enable, Enum>& operator |=(Enum &lhs, Enum rhs)
{
    using underlying = typename std::underlying_type_t<Enum>;

    lhs = static_cast<Enum> (
        static_cast<underlying>(lhs) |
        static_cast<underlying>(rhs)
        );

    return lhs;
}

template<typename Enum>
typename std::enable_if_t<EnableBitMaskOperators<Enum>::enable, Enum>& operator &=(Enum &lhs, Enum rhs)
{
    using underlying = typename std::underlying_type_t<Enum>;

    lhs = static_cast<Enum> (
        static_cast<underlying>(lhs) &
        static_cast<underlying>(rhs)
        );

    return lhs;
}

template<typename Enum>
typename std::enable_if_t<EnableBitMaskOperators<Enum>::enable, Enum>& operator ^=(Enum &lhs, Enum rhs)
{
    using underlying = typename std::underlying_type_t<Enum>;

    lhs = static_cast<Enum> (
        static_cast<underlying>(lhs) ^
        static_cast<underlying>(rhs)
        );

    return lhs;
}

template<typename Enum>
typename std::enable_if_t<EnableBitMaskOperators<Enum>::enable, bool> CheckFlag(const Enum yourEnumClass)
{
    using underlying = typename std::underlying_type_t<Enum>;
    return !!static_cast<underlying>(yourEnumClass);
};
```

## 12.03

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### DB Core 일단 중간 마무리

### Naming Pluto?

### Phase & Alice UI 교육

### Phase 문서화

## 12.04

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### DB Core는 못하고 Table DataType Object화

### Naming Pluto?

### Phase & Alice UI 교육

### Phase 문서화

## 12.05

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### DB Core Branch Merge!

### Naming Pluto?

### Phase & Alice UI 교육

### Phase 문서화

## 12.06

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### DB Core Branch Merge!

### MIDAS Bash

### Phase & Alice UI 교육

### Phase 문서화

## 12.09

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### DB Core Branch Merge!

### MIDAS Bash

### Phase & Alice UI 교육

### Phase 문서화

## 12.10

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### 드디어 DB Core Branch Merge 완료....

#### 테스트 방식은 꽤 양호했음!

1. 현재 최신 Dev의 테스트 커버리지 확인
2. 현재 리팩토링 한 DB Core에 대한 테스트 커버리지 확인
3. 로컬 DB Core 브랜치에 Dev 머지 진행 (컨플릭트 해결)
4. 해결한 Dev가 머지된 DB Core 브랜치의 테스트 커버리지 확인
5. 테스트 커버리지가 모두 동일할 경우 로컬 DB Core 브랜치에서 Dev로 머지 진행

#### 진행하면서 부족하다고 느낀 점

1. 현 머지하려는 시점의 Dev 자체가 불안정할 경우가 있음ㅠㅠ
   1. 이게 현실적으로 제일 힘듬
   2. 테스트 커버리즈를 어떻게 해서든 100%를 맞춰야 할 듯 -> 테스트 레이어링이 시급함!!
   3. 일단 **직접 해당 브랜치 안정화를 진행하는 수밖에..**
2. 테스트 커버리지 비교 시, 성공과 실패의 갯 수는 쉽게 비교가 가능하나, 어떤 테스트 모듈이 틀렸는지 모를줄 알았는데 **이럴 수가 diffchecker를 이용하자...** <https://www.diffchecker.com/>
3. 부모 클래스에서 **virtual 함수인 getter 같은 함수에 const를 붙일경우** 만약 그것을 원래 오버라이딩 하던 아이들은 이제 다른 함수로 인식되서 오버라이딩 하지 않게된다. 만약 override tag를 붙여놨다면 제대로 알려주겠지만 그렇지 않은 경우 찾을 수 없을 만큼 힘든 Human Error가 될 수 있다. 다음에는 고생할 때 이것도 고려하자...
4. core를 개발하니까 빌드 시간이 너\~\~무 길어 자꾸 시간이 붕 뜬다. 현실적으로 현재 모듈 단위로 core를 바로 분리할 수 없으니 빌드 후 남는 시간에 책을 읽던가 멍때리지 말고 무엇이든 하자

### MIDAS Bash

### Phase & Alice UI 교육

### Phase 문서화

## 12.11

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### DB Core Human Error Compile Time Checker 구현

### MIDAS Bash

### Phase & Alice UI 교육

### Phase 문서화

## 12.12

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### if constexpr

* 어셈블리 뜯어 보니 런타임 떄의 조건 부 처리를 하지 않는다!
* 허나 해당 코드 안에 있는 부분들의 대한 컴파일러가 오류들은 잡아준다. (매크로와의 다른 점)
* 오류는 잡아주면서 -> 런타임때의 퍼포먼스 손해는 없다.
* 매크로의 사용을 줄여야 한다는 또 하나의 강점으로 말할 수 있을 것 같다.

### DB Core Human Error Compile Time Checker 구현 완료!

### MIDAS Bash

### Phase & Alice UI 교육

### Phase 문서화

## 12.16

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### DB Core 상속 가능한 DB 형태 구현, API 구현

### MIDAS Bash

### Phase & Alice UI 교육

### Phase 문서화

## 12.17

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### DB Core 상속 가능한 DB 형태 구현, API 구현

### MIDAS Bash

### Phase & Alice UI 교육

### Phase 문서화

## 12.18

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### 역할 재정의, Phase Core Update로 인한 안정화 작업 진행

### MIDAS Bash

### Phase & Alice UI 교육

### Phase 문서화

## 12.19

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### 역할 재정의, Phase Core Update로 인한 안정화 작업 진행

### MIDAS Bash

### Phase & Alice UI 교육

### Phase 문서화

## 12.20

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### Core DB, 상위 File Interface 개발

### MIDAS Bash

### Phase & Alice UI 교육

### Phase 문서화

## 12.23

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI, Github Action 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### Core DB, 상위 File Interface 개발

### MIDAS Bash

### Phase & Alice UI 교육

### Phase 문서화

## 12.24

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI, Github Action 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### 송년회 워크샵 준비

### Core DB, 상위 File Interface 개발

### MIDAS Bash

### Phase & Alice UI 교육

### Phase 문서화

## 12.26

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI, Github Action 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### 송년회 워크샵

### Core DB, 상위 File Interface 개발

### MIDAS Bash

### Phase & Alice UI 교육

### Phase 문서화

## 12.30

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI, Github Action 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### Core DB, 상위 File Interface 개발

### MIDAS Bash

### Phase & Alice UI 교육

### Phase 문서화

## 12.31

### 공부, 정리할 것

* [Code Review](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/codereview)
* [Clean Code](https://wnsgml972.gitbook.io/midas_log/contents/basiceducation/cleancode)
* Phase 자료 정리
* Core History
* opensource queryparse
* CI, Github Action 공부

### Main

* \[기반] Phase, Alice UI, DB, Select

### 문서화 위주

### MIDAS Bash

### Phase & Alice UI 교육

### Phase 문서화
