MIDAS LOG

12.02

공부, 정리할 것

Main

  • [기반] Phase, Alice UI, DB, Select

Phase & Alice UI 교육

DB Core 계속!

Phase 문서화

c++ 공부

  • enable_if

    Compile Time Type Switching

Example) Enum Class Make Bit Set

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

공부, 정리할 것

Main

  • [기반] Phase, Alice UI, DB, Select

DB Core 일단 중간 마무리

Naming Pluto?

Phase & Alice UI 교육

Phase 문서화

12.04

공부, 정리할 것

Main

  • [기반] Phase, Alice UI, DB, Select

DB Core는 못하고 Table DataType Object화

Naming Pluto?

Phase & Alice UI 교육

Phase 문서화

12.05

공부, 정리할 것

Main

  • [기반] Phase, Alice UI, DB, Select

DB Core Branch Merge!

Naming Pluto?

Phase & Alice UI 교육

Phase 문서화

12.06

공부, 정리할 것

Main

  • [기반] Phase, Alice UI, DB, Select

DB Core Branch Merge!

MIDAS Bash

Phase & Alice UI 교육

Phase 문서화

12.09

공부, 정리할 것

Main

  • [기반] Phase, Alice UI, DB, Select

DB Core Branch Merge!

MIDAS Bash

Phase & Alice UI 교육

Phase 문서화

12.10

공부, 정리할 것

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

공부, 정리할 것

Main

  • [기반] Phase, Alice UI, DB, Select

DB Core Human Error Compile Time Checker 구현

MIDAS Bash

Phase & Alice UI 교육

Phase 문서화

12.12

공부, 정리할 것

Main

  • [기반] Phase, Alice UI, DB, Select

if constexpr

  • 어셈블리 뜯어 보니 런타임 떄의 조건 부 처리를 하지 않는다!

  • 허나 해당 코드 안에 있는 부분들의 대한 컴파일러가 오류들은 잡아준다. (매크로와의 다른 점)

  • 오류는 잡아주면서 -> 런타임때의 퍼포먼스 손해는 없다.

  • 매크로의 사용을 줄여야 한다는 또 하나의 강점으로 말할 수 있을 것 같다.

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

MIDAS Bash

Phase & Alice UI 교육

Phase 문서화

12.16

공부, 정리할 것

Main

  • [기반] Phase, Alice UI, DB, Select

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

MIDAS Bash

Phase & Alice UI 교육

Phase 문서화

12.17

공부, 정리할 것

Main

  • [기반] Phase, Alice UI, DB, Select

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

MIDAS Bash

Phase & Alice UI 교육

Phase 문서화

12.18

공부, 정리할 것

Main

  • [기반] Phase, Alice UI, DB, Select

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

MIDAS Bash

Phase & Alice UI 교육

Phase 문서화

12.19

공부, 정리할 것

Main

  • [기반] Phase, Alice UI, DB, Select

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

MIDAS Bash

Phase & Alice UI 교육

Phase 문서화

12.20

공부, 정리할 것

Main

  • [기반] Phase, Alice UI, DB, Select

Core DB, 상위 File Interface 개발

MIDAS Bash

Phase & Alice UI 교육

Phase 문서화

12.23

공부, 정리할 것

Main

  • [기반] Phase, Alice UI, DB, Select

Core DB, 상위 File Interface 개발

MIDAS Bash

Phase & Alice UI 교육

Phase 문서화

12.24

공부, 정리할 것

Main

  • [기반] Phase, Alice UI, DB, Select

송년회 워크샵 준비

Core DB, 상위 File Interface 개발

MIDAS Bash

Phase & Alice UI 교육

Phase 문서화

12.26

공부, 정리할 것

Main

  • [기반] Phase, Alice UI, DB, Select

송년회 워크샵

Core DB, 상위 File Interface 개발

MIDAS Bash

Phase & Alice UI 교육

Phase 문서화

12.30

공부, 정리할 것

Main

  • [기반] Phase, Alice UI, DB, Select

Core DB, 상위 File Interface 개발

MIDAS Bash

Phase & Alice UI 교육

Phase 문서화

12.31

공부, 정리할 것

Main

  • [기반] Phase, Alice UI, DB, Select

문서화 위주

MIDAS Bash

Phase & Alice UI 교육

Phase 문서화

Last updated