MIDAS Log
  • README
  • contents
    • README
      • Code Review
      • OpenSource
      • Archive
      • VisualCodeBasicSet
      • Docker
      • 기획
      • C++ 50 계명 - 이것만은 기억하자.
      • framework
      • DevOps
      • Confluence
      • commit
      • Clean Code
      • Role
      • Windows 응용 프로그램 파일 관리
      • VisualBasicSet
      • DesignPattern
      • Git Branch 전략
      • Note
      • CodeQuality
      • Developer's Writing
      • Memory Debug
      • QA
      • OBB와 AABB?
      • 빌드 속도 개선
      • Jira
      • EtcSet
      • CppBasic
      • UI 엔진 업무 실무
      • cpp17
      • Book
      • Naming
      • Programming Math
      • GitScen1
      • CAD
    • 2019.03
      • MIDAS LOG
    • 2019.02
      • MIDAS LOG
    • 2019.12
      • MIDAS LOG
    • 2019.01
      • MIDAS LOG
    • 2019.11
      • MIDAS LOG
    • 2019.10
      • MIDAS LOG
    • 2019.09
      • MIDAS LOG
    • 2019.08
      • MIDAS LOG
    • 2019.07
      • MIDAS LOG
    • 2019.06
      • MIDAS LOG
    • 2019.05
      • MIDAS LOG
    • 2019.04
      • MIDAS LOG
    • 2018.11
      • MIDAS LOG
    • 2018.10
      • MIDAS LOG
    • 2018.09
      • MIDAS LOG
    • 2018.12
      • MIDAS LOG
    • 2020.05
      • MIDAS LOG
    • 2020.04
      • MIDAS LOG
    • 2020.03
      • MIDAS LOG
    • 2020.02
      • MIDAS LOG
    • 2020.01
      • MIDAS LOG
    • 2020.09
      • MIDAS LOG
    • 2020.08
      • MIDAS LOG
    • 2020.07
      • MIDAS LOG
    • 2020.06
      • MIDAS LOG
  • jmt
Powered by GitBook
On this page
  • go home! :house_with_garden:
  • 10.01
  • C++ 공부
  • 해야 할 것
  • 해결한 것
  • 10.02
  • 해결한 것
  • 해야 할 것
  • 10.04
  • 해결한 것
  • 해야 할 것
  • 10.05
  • 해결한 것
  • 해야 할 것
  • 10.08
  • C++ 공부
  • 해결한 것
  • 해야 할 것
  • 10.10
  • gtest
  • 해야 할 것
  • 10.11
  • 해결한 것
  • 해야 할 것
  • 10.12
  • 전체 구조 변경... 너무 안 좋은 구조 개선
  • 해결한 것
  • 해야 할 것
  • 10.15
  • 전체 구조 변경
  • 해결한 것
  • 해야 할 것
  • 10.16
  • 해결한 것
  • 해야 할 것
  • 10.17
  • 해야 할 것
  • 10.18
  • 해야 할 것
  • 10.22
  • 해야 할 것
  • 10.23
  • 해야 할 것
  • 10.24
  • 해야 할 것
  • 10.25
  • 해야 할 것
  • 10.26
  • 해야 할 것
  • 10.29
  • 해야 할 것
  • 10.30
  • 해야 할 것
  • 10.31
  • 해야 할 것

Was this helpful?

  1. contents
  2. 2018.10

MIDAS LOG

Previous2018.10Next2018.09

Last updated 6 years ago

Was this helpful?

go home!

10.01

C++ 공부

익명 함수 문법(Lambda)

  auto bar = []() -> float { return 3.14f; }; // arrow function을 이용하면 타입 명시 가능
  [a,&b] a를 복사로 캡처, b를 참조로 캡처.
  [this] 현재 객체를 참조로 캡처.
  [&] 몸통에서 쓰이는 모든 변수나 상수를 참조로 캡처하고 현재 객체를 참조로 캡처.
  [=] 몸통에서 쓰이는 모든 변수나 상수를 복사로 캡처하고 현재 객체를 참조로 캡처.
  [] 아무것도 캡처하지 않음.

vector, push_back vs emplace_back

※ 실제 사용예 필자가 전에 push_back으로 작성했던 코드이다. 이 코드는 CStationObj 임시 객체를 생성하고 그것을 push_back에 전달하는 걸 알 수 있으며 성능을 따져봤을때 비효율적이다.(내부적으로 CStationObj의 임시 객체가 생성되고 생성자와 소멸자도 호출되기 때문)

void CStationObj()
{
  m_vecStationObjs.push_back(CStationObj(3, 4));
}

emplace_back은 함수 원형에서 본 거와 같이 가변 인자를 받을 수 있어서 아래와 같이 인자를 넣을 수 있으며, 받은 인자를 std::vector안에서 직접 CStationObj를 생성하므로 push_back보다 성능상 낫다.

void CStationObj()
{
  m_vecStationObjs.push_back(3, 4);
}

※ 참고 사항

  • push_back으로 하여도 컴파일러 내부적으로 최적화 하기 때문에 emplace_back으로 하는 것과 별차이가 없을 수 있다. 고로 개인 프로젝트가 아니라면 호환성이 더 좋은 push_back 사용이 더 나을 수도 있다.

  • push_back함수로 할 수 있는 모든 것을 emplace_back으로 할 수 있다.

  • push_back함수보다 emplace_back 함수가 대체로 효율적이다.

해야 할 것

  • Feature 툴 사용, 모델링 해보기 (4)

  • mday ppt 제작

  • shared_ptr 공부할 것

해결한 것

  • Solid 기능 구현 약간

10.02

해결한 것

  • MDay 발표 준비

해야 할 것

  • Feature 툴 사용, 모델링 해보기 (4)

  • mday ppt 제작

  • shared_ptr 공부할 것

  • Feature Solid

10.04

해결한 것

  • Feature 툴 사용, 모델링 해보기 (4)

해야 할 것

  • Feature 툴 사용, 모델링 해보기 (4)

  • shared_ptr 공부할 것

  • Feature Solid

10.05

해결한 것

  • Feature Solid 하는 중

해야 할 것

  • C++, C# ??

  • shared_ptr 공부할 것

  • Feature Solid

10.08

C++ 공부

교차 포함 (형식 지정자가 필요합니다)

분명히 클래스를 Include 하였음에도 불구하고 오류가 난다. program once에 의해 Include가 한번만 불려지기 때문, 아니면 포함하지 않았지만 간접적으로 서로를 포함한 경우 에러가 발생

#pragma once
class A; // class A가 존재한다고만 알려줍니다.
class B
{
public:
 A* a; // 포인터로 바꾸었습니다.
};
#pragma once
class B; // class B가 존재한다고만 알려줍니다.
class A
{
public:
 B* b;
};

다음과 같이 참조하는 클래스를 포인터로 선언하고, 클래스를 나중에 구현할 것이다! 하고 선언만 해 놓으면 간단히 오류를 해결할 수 있다.

C++, C#, Java

  • 다양한 언어가 나와서 각자의 영역을 조금씩 마련했다.

  • 각각 장단점이 있고 분야에 맞게 사용하는 것이 좋다.

  • 하지만 범용적으로 쓰이는 언어는 자바가 맞다.

Inline 함수

  • 최적화에 사용

  • Stack에서 컴파일러가 함수를 호출하는 대신, 그에 대응하는 함수 코드 자체를 넣는다는 것을 의미. 주소를 왔다갔다 하며 되돌아오지 않기 때문에 어떤 연산을 많이하는 함수 같은 경우에 유리.

  • 컴파일러에 의해 처리가 되기 때문에 디버깅에 용이

  • 근데 지금은 컴파일러가 오히려 성능에 해가된다고 판단하면 무시하기도 하고(재귀함수이거나 덩치가 큰 함수) 도움이 된다고 생각하면 일부 함수들을 임의로 인라인 처리를 하기도 함.

  • 즉 인라인 자동화로 요새는 많이 사용하지는 않지만 퍼포먼스에 중요한 프로그램일 경우 생각하며 리팩토링 하는게 좋을 듯?

Interface

  • 순수가상함수로 짜면 된다.

  • 문법으로도 따로 __interface 라는 것이 있다.

해결한 것

  • Feature Solid 완성!

해야 할 것

  • shared_ptr 공부할 것

  • Feature Solid 테스트 코드 작성할 것 (구글의 gtest)

10.10

gtest

특징

  • Google에서 개발된 C++ 테스트 프레임 워크

  • Git에서 다운받아서 헤더파일 추가해서 사용

  • 간단한 사용 방식은 다운 받아서, 검증해야할 부분을 검증하면 됨

  • 사용하기 편하게 라이브러리를 덮어서 만들면 더 좋음, Test Fixture

  • 구글에서도 실제로 사용 중 (Chrom)

  • 항상 맞다고 생각하는 부분은 꼭 테스트 코드를 작성해야 함 (DB, Socket 통신 등등)

  • 테스트 코드를 다 통과하더라도 버그가 없는 건 아니다.

  • 사실 상 및에 참고 자료 정독하면 다 이해 됨

참고 자료

  • Interior Program 구조 개선 중

해야 할 것

  • shared_ptr 공부할 것

  • Feature Solid 테스트 코드 작성할 것 (구글의 gtest)

10.11

해결한 것

  • MFC-InteriorProgram 리팩토링

해야 할 것

  • shared_ptr 공부할 것

  • Feature Solid 테스트 코드 작성할 것 (구글의 gtest)

10.12

전체 구조 변경... 너무 안 좋은 구조 개선

해결한 것

  • MFC-InteriorProgram 리팩토링

  • Feature Solid 끝

해야 할 것

  • shared_ptr 공부할 것

10.15

전체 구조 변경

기존 구조

변경된 구조

해결한 것

  • MFC-InteriorProgram 리팩토링 중

해야 할 것

  • shared_ptr 공부할 것

  • 개발 제품 수업

10.16

해결한 것

  • MFC-InteriorProgram 리팩토링 끝!

  • CIM 수업 끝!, 간단한 정리 파트 공유 폴더

해야 할 것

Interior Program 남은 기능

  • Redo, Undo ( 딜리트 시 스택에 담으면 됨 )

    • 키보드 단축기

      • ctrl+z : undo ( 이벤트 처리기 리스너만 만들어놈 )

      • ctrl+y : redo ( 리스너 만들었는데 안 불림ㅠ )

  • Save Load As JSon ( 저장 로드 )

    • 키보드 단축기

      • ctrl+s : 저장 ( 리스너 만들었는데 딴 거 불림 )

      • ctrl+o : 불러오기 ( 리스너 만들어야 함 )

  • 마우스 우클릭 메뉴

    • Rotate ( 이벤트 처리기 리스너만 만들어놈 )

  • ObjectShape

    • 추 후 Room 그룹화 고민해 볼 것

    • 이미지 크기 변환 (Wheel, Edit)

    • 사용자 추가 기능

  • Group Mode??

  • 재질 바꾸기

  • Magnetic 보완

10.17

  • MIDAS DB 수업

해야 할 것

  • 수업 정리

  • InteriorProgram 각종 Issues

10.18

  • MIDAS DB 수업 (member)

  • 대형 과제 첫 기획자와 회의... (예상 기간 1년...?)

해야 할 것

  • 수업 정리

  • 당분간 또 InteriorProgram 못 할듯ㅠㅠ

10.22

  • MIDAS DB 보완 업무 80% 완성

해야 할 것

  • MIDAS DB 보완

  • Analytics Line

10.23

  • MIDAS DB 보완 완성

  • 고등 알고리즘 시험... 개망... (알고리즘 한 문제씩 풀기 긴급...)

해야 할 것

  • MIDAS DB 보완

  • Analytics Line

10.24

  • Clean Code

  • 각종 DB 배운 것 정리

해야 할 것

  • Analytics Line

10.25

  • Clean Code

  • SolidPhase 다시 정리

해야 할 것

  • Analytics Line

  • 사내 Doc

10.26

  • Clean Code

  • SolidPhase 다시 정리

  • 사내 Doc

해야 할 것

  • Analytics Line

10.29

  • Clean Code

  • 사내 Doc

TODO Comment (작업목록)

TODO 주석을 통해 앞으로의 할 일을 주석해놓고 Ctrl + \, Ctrl + T -> (Ctrl + F, Ctrl + T)를 이용해 작업 목록을 조회할 수 있다.

해야 할 것

  • Analytics Line

  • IFC Geometry Converter

10.30

  • IFC Geometry Converter

해야 할 것

  • Analytics Line

  • IFC Geometry Converter

  • Clean Code

  • 사내 Doc

10.31

  • IFC Geometry Converter

  • MDay 준비

해야 할 것

  • Analytics Line

  • IFC Geometry Converter

  • Clean Code

  • 사내 Doc

:house_with_garden:
https://www.slideshare.net/jinhwason/ss-69528881
https://www.slideshare.net/zone0000/c-7522148?next_slideshow=1
Magnetic
structure
structure