개발 지식 6

테스트에 관한 짧은 글

테스트와 관련해서 chatgpt 와 나눈 대화를 정리한 글이다.  먼저 단위테스트와 통합테스트가 있다. a기능을 개발해야하는 상황에서 a기능은 1번 데이터 정렬, 2번 정렬된 데이터로 하는 무언가 라고 정의하자. 이때, 1번을 구현해서 먼저 테스트해보는 것을 단위테스트라고 한다. 또 1,2번을 모두 구현하고 한번에 실행했을 때 하는 테스트를 통합테스트라고 한다.  // 1번 작업: 데이터 정렬std::vector sortData(const std::vector& data) { std::vector sortedData = data; std::sort(sortedData.begin(), sortedData.end()); return sortedData;}// 2번 작업: 정렬된 데이터를 가지..

개발 지식 2024.08.07

게임에서의 내적

알고리즘 문제 중 내적관련한 문제를 풀고 내적이 어떻게 게임개발에서 사용될까 궁금해져서 찾아보았다.  보통 각도를 구할 때 사용된다. 1. 두 벡터간의 방향 내적은 두 벡터가 서로 같은 방향을 향하는지, 반대 방향을 향하는지, 아니면 직교하는지를 확인하는 데 사용됩니다.두 벡터의 내적이 양수일 경우, 두 벡터는 대체로 같은 방향을 향합니다.두 벡터의 내적이 음수일 경우, 두 벡터는 반대 방향을 향합니다.두 벡터의 내적이 0일 경우, 두 벡터는 직교합니다.2. 두 벡터간의 각도 계산 내적은 두 벡터 사이의 각도를 계산하는 데 사용됩니다. 벡터 A와 벡터 B의 내적이 다음과 같이 정의됩니다:​3. 최적화 벡터의 길이를 비교할 때, 길이를 직접비교하는 것보다 내적하는 것이 더 빠르다. 4. 게임에서 시야 각도..

개발 지식 2024.07.29

정규표현식과 예제문제

정규표현식 정규 표현식(regular expression, regex)은 특정한 규칙을 가진 문자열의 패턴을 표현하는 방법입니다. 정규 표현식은 문자열 검색, 일치, 치환 등을 수행하는 데 사용됩니다. 프로그래밍 언어와 텍스트 편집기에서 자주 사용되며, 데이터 검증, 텍스트 파싱, 데이터 변환 등의 작업에 유용합니다.기본 개념리터럴 문자: 문자 그대로 일치하는 문자열을 찾습니다.예: abc는 "abc" 문자열과 일치합니다.메타 문자: 특별한 의미를 가진 문자들로, 패턴 매칭을 제어합니다..: 임의의 한 문자와 일치 (줄 바꿈 문자는 제외)^: 문자열의 시작과 일치$: 문자열의 끝과 일치*: 0회 이상 반복+: 1회 이상 반복?: 0회 또는 1회 일치|: OR 연산자 (선택)문자 클래스: 대괄호 [] 안에..

개발 지식 2024.07.23

Git 협업을 위한 Branch 정리

git 을 사용해 팀 프로젝트를 진행하는데 main 브랜치로 바로 작업 후 커밋 푸시를 하게 되면 내가 실수했을 때 모든 팀원에게 영향이 간다. 그래서 branch라는 것을 발견했고 알아보았다. 나뭇가지라는 의미로 워크트리에서 잔가지를 친다고 생각하면 된다. 현재 커밋지점에서 분기를 만들어서 내가 따로 기능을 수정하거나 추가, 삭제를 진행한다. 그리고 모두가 공유하고 있는 main 브랜치에 병합할 수 있다. 따라서 중간 중간 저장하고 싶을 때 마음대로 커밋을 해도 다른 팀원에게 영향가지 않는다. https://git-school.github.io/visualizing-git/ Visualizing Git git-school.github.io 이 사이트에서 연습해볼 수 있다. 사용법 git branch t..

개발 지식 2024.02.27

비트 연산

비트연산 : 비트단위의 조작이 필요할 때 사용된다. 대표적으로 BitFlag가 있다. 비트연산의 종류 ~ (bitwise not ) : 모든 종류의 비트를 뒤집음 & (bitwise and) : 모든 비트 쌍을 대상으로 and 연산을 실행 | (bitwise or) : 모든 비트 쌍을 대상으로 or 연산을 실행 ^ (bitwise xor) : 모든 비트 쌍을 대상으로 xor 연산을 실행 -> xor 연산은 두 번 실행하면 원래의 숫자로 돌아오게 되어 암호학에서 쓰인다. 비트 우측 이동 : N만큼 우측으로 이동, 오른쪽에 넘치는 건 버린다. 이 연산은 부호비트가 있으면 부호비트는 따르고 나머지 새로운 비트를 0으로 만들고 unsigned 같은 타입의 부호비트가 없는 숫자면 맨 처음 비트도 0으로 만든다. ..

개발 지식 2023.07.28

코드 디버깅(debugging)

디버깅은 코드를 파악하거나 오류를 해결하기 위해 반드시 필요한 도구이다. 디버깅은 프로그램을 실행할 때 원하는 부분의 코드를 하나씩 보며 그 상황에서의 흐름에 따른 변수의 값 등을 파악할 수 있어서 오류를 파악하는데 아주 유용하게 사용된다. 하지만 처음 코딩을 접하면 문법부터 배우게 되며 디버깅에 대한 중요성을 강조하지는 않는다. 그래서 오류가 발생하면 코드를 한줄씩 따라가며 머릿속으로 계산하거나 종이에 적으며 오류를 찾아내려는 노력을 한다. 하지만 이러한 방법들은 코드가 조금만 복잡해져도 금세 한계를 드러낸다. 따라서 간단하지만 중요한 디버깅 사용법을 소개하려 한다. *Visual Studio debug를 기준으로 작성* 중단점 BreakPoint (단축키 F9) - 디버그를 실행하면 설정한 중단점에서..

개발 지식 2023.07.19