oh-mms의 등록된 링크

 oh-mms로 등록된 네이버 블로그 포스트 수는 213건입니다.

게임 디자인 패턴 정리 1차 (1/2) [내부링크]

책과 인강을 통해 게임 개발에서 자주 사용되는 디자인 패턴들을 모아보았다.GoF에서 일부, 그 외 디자인 패턴들에서 일부 조합하여 아주 간단한 형태로 정리하고자 한다.일단은 1차에서 간단히 정리를 하고, 후에 더 자세한 내용과 그 외 새로운 유형을 2차 포스팅에 넣을 예정이다.1차 정리는 C#을 기준으로, 예시는 가급적 의사코드로 정리한다.1. 디자인 패턴 시작 전(1) 다형성디자인 패턴에서는 하위 클래스 객체를 상위 클래스 객체에 넣어 사용할 수 있다는 개념을 아주 많이 사용한다.단, 여기서 obj는 Super 클래스의 멤버만 알고, Sub 클래스의 멤버는 모르니 사용할 수 없다. Sub 클래스로 형변환 하여 사용할 수 있다.부모로 생.......

게임 디자인 패턴 정리 1차 (2/2) [내부링크]

책과 인강을 통해 게임 개발에서 자주 사용되는 디자인 패턴들을 모아보았다.GoF에서 일부, 그 외 디자인 패턴들에서 일부 조합하여 아주 간단한 형태로 정리하고자 한다.일단은 1차에서 간단히 정리를 하고, 후에 더 자세한 내용과 그 외 새로운 유형을 2차 포스팅에 넣을 예정이다.1차 정리는 C#을 기준으로, 예시는 가급적 의사코드로 정리한다.7. 프로토타입 패턴프로토타입을 만들어두고 클론을 하여 비슷한 객체를 생성하는 패턴. 주로 높은 비용이 드는 인스턴스 생성시 효과적으로 사용할 수 있다. 예를 들면, 그저 클라이언트 내에서 new 를 사용하는 것이 아닌, 네트워크로부터 정보를 받아와 인스턴스를 생성하거나 File IO를 통.......

Visual Studio 17/19 화면 분할 및 도킹 시 비정상 종료 [내부링크]

비주얼 스튜디오에서 창 분할을 하여 도킹을 할 때 Crash가 자꾸 나서 검색해보았다.가장 많았던 사례는 윈도우즈 업데이트 이후 발생했다는 내용이었으며(21년도 초 받은 업데이트부터 시작인 듯), 해당 업데이트를 삭제하라는 답변에 대다수였다. MS에서는 수정된 VS 버전으로 다운받으라고 한다.필자는 새로 깔지않고 Visual Studio Installerd에서 17버전 업데이트를 해줬다.예상대로 잘 해결 되었다.* 참고1) https://developercommunity.visualstudio.com/t/unexpected-vs-crash-when-docking-or-splitting-wind/13230172) https://see-ro-e.tistory.com/3003) https://developercommunity.visualstudio.com/t/vs-crashes-when-i-drag-.......

[UE4] Atomic.h 에서 ') 이 없다는' 관련 에러 [내부링크]

아마 Atomic.h 까지 타고 들어가면, 내부 함수는 지극히 정상(삼항연산자를 인식하지 못하면서 계속 ')'가 필요하다 함)이지만 오류가 있다는 표시가 뜨는 상황일 것이다.여러모로 시도를 해보다가 도저히 답이 안 나와서 검색해보았는데, 다음과 같은 결론이 가장 가능성 있다고 본다.VS 2017 4.19 이상 버전에서 발생하며, 해당 버전부터는 enum에 대해서 기본적으로 int형 캐스팅을 하지 않아 발생하는 것이고, VS 인텔리센스가 이를 오류라고 생각하여 잡아낸 것이라고 한다. 순전히 인텔리센스의 잘못된 처리다.아래 3가지 방법 중 되는 방법으로 해결하시길..해결 방법 1.(int)를 붙여서 type casting.해결 방법 2.조.......

[LeetCode] 56. Merge Intervals [내부링크]

56. Merge Intervals(1) 풀이시간 : 20분(2) 언어 : C++GitHub: https://github.com/oh-mms/LeetCode/blob/master/56.%20Merge%20Intervals/solution.cpp

[21.03.27] 포스팅 기준 변경 [내부링크]

최근 블로그 포스팅이 조금 뜸했던 적이 있다.내가 공부하고 정리한 내용을 포스팅으로 옮기고자 하는 것이 목적이었는데,글을 쓰다보니 길어지고 분량이 너무 커져 지쳐버리게 되는 상황까지 오게 되었다.말은 정리였는데 강의 글을 쓰고있는, 배보다 배꼽이 더 커진 상황이었다.그래서 일단 1회차로 공부한 내용을 올리는 정리글은 정말 심플하게 포스팅 하려 한다.가령 현재 일부 올려둔 STL이나 디자인패턴과 같이 서적만큼의 분량으로는 작성하지 않을 생각이다.아마 모든 탭에서 정리 글은 10개 이하의 간단한 포스팅으로 마무리되지 않을까 싶다.그 뒤에 2회차로 글을 올릴 땐, 다른 분들도 보실 수 있게 최종적으로 정리를 해서 강의.......

[LeetCode] 62. Unique Paths [내부링크]

62. Unique Paths(1) 풀이시간 : 25분(2) 언어 : C++(3) 아이디어grid(격자)에서 제일 윗 행과 제일 왼 쪽 열을 제외한, 사이에 있는 격자는 자기 칸의 왼쪽값 + 자기 칸의 윗쪽값으로 이루어지는 규칙성을 가진다. 따라서, 첫 행 모두와 첫 열 모두를 1로 채워준 뒤, 위 규칙성을 이용해 나머지 칸들을 채우고 목적지를 반환하면 된다. (공간 복잡도를 줄이려 일반 배열을 사용했다.)GitHub: https://github.com/oh-mms/LeetCode/blob/master/62.%20Unique%20Paths/solution.cpp

STL 간단 정리 (1/2) [내부링크]

강의용 글이 아닌 간단하게 요약/정리한 글이니 복습용으로 참고하시기 바랍니다.1. STL 컨테이너 같은 타입을 저장, 관리할 목적으로 만들어진 클래스. 시퀀스 컨테이너와 연관 컨테이너로 나뉜다. 시퀀스 컨테이너는 삽입되는 순서에 따라 원소 위치가 결정되고 바뀌지 않으며 vector, deque, list가 있다.이 중 vector와 deque만 배열 기반 컨테이너이고, list부터 연관 컨테이너류는 노드 기반 컨테이너이다. 연관 컨테이너는 특정 정렬 기준에 의해 자동 정렬되는 컨테이너 이며 set, multiset, map, multimap, unordered_multimap 등이 존재한다.2. 반복자 반복자는 포인터를 추상화하여 여러 기능을 사용할 수 있게 만들어진 확장된.......

STL 간단 정리 (2/2) [내부링크]

강의용 글이 아닌 간단하게 요약/정리한 글이니 복습용으로 참고하시기 바랍니다.1. STL 알고리즘 STL 알고리즘은 100 여 개가 넘는 알고리즘이 존재하며 분류적으로는 일곱 가지로 분류가 가능하다.1) 원소를 수정하지 않는 알고리즘2) 원소를 수정하는 알고리즘3) 제거 알고리즘4) 변경 알고리즘5) 정렬 알고리즘6) 정렬된 범위 알고리즘7) 수치 알고리즘 대부분은 <algorithm> 헤더에 정의되며, 수치 관련 알고리즘은 <numeric> 에 정의된다.(1) 원소를 수정하지 않는 알고리즘 원소의 순서나 원소의 값을 변경하지 않고 원소를 읽기만 하는 알고리즘이다. 대표적으로 count(), find(), max(), for_each() 등의 알고리즘.......

[LeetCode] 64. Minimum Path Sum [내부링크]

64. Minimum Path Sum(1) 풀이시간 : 10분(2) 언어 : C++GitHub: https://github.com/oh-mms/LeetCode/blob/master/64.%20Minimum%20Path%20Sum/solution.cpp

[LeetCode] 70. Climbing Stairs [내부링크]

70. Climbing Stairs(1) 풀이시간 : 5분(2) 언어 : C++GitHub: https://github.com/oh-mms/LeetCode/blob/master/70.%20Climbing%20Stairs/solution.cpp

필수 알고리즘 정리 (1/3) [내부링크]

사실 필수 알고리즘은 필자가 임의로 정한 바이며, 시험/퀴즈 등에 자주 나오는 항목으로 선정하였습니다.현 포스팅은 정리본이며, 필요할 때 찾아보거나 복습할 수 있게 해두는 것이 목적이라 공부를 위한 글이 아닙니다.(후에 시간적 여유가 있다면, 기본 알고리즘부터 변형 및 특이한 형태까지 자세히 살펴보는 포스팅을 작성할 예정)필자가 본 책, 인강, 유튜브, 블로그를 통해 정리하였으며 목록은 아래와 같고, 저작권 침해가 없도록 하겠습니다.참고 : '쉽게 배우는 알고리즘' 책, 나동빈 님 유튜브/블로그, 구름/인프런 등 사이트의 알고리즘/코테 관련 강의 등코딩테스트 관련 알고리즘 정리는 '인터뷰/코테' 탭.......

일반적인 자료 구조별 시간/공간 복잡도 정리 [내부링크]

예전 교수님께서 소개해주셨던 사이트에 좋은 자료가 있어서 가져왔다.자료구조를 고민할 때 참고하기 좋은 자료인 것 같다.

[프로그래머스] 더 맵게 [내부링크]

우선순위 큐(힙)을 이용한 풀이.

[프로그래머스] K번째수 [내부링크]

정렬을 이용한 풀이.

[프로그래머스] 가장 큰 수 [내부링크]

이는 강의 코드를 참조하였다. 문자열을 합쳐서 비교한다는 아이디어는 재밌는 발상이었다.위 정렬기준을 통해 확인하면 쉽게 풀 수 있다.

[프로그래머스] H-Index [내부링크]

정렬과 lower_bound를 이용한 풀이.

[프로그래머스] 체육복 [내부링크]

set고 unordered_set을 통한 그리디 풀이.

[프로그래머스] 큰 수 만들기 [내부링크]

위 코드는 강의를 참조하였고, 그리디를 선정하는 기준이 인상깊었다.그리디를 이용한 풀이.

[프로그래머스] 구명보트 [내부링크]

두 인덱스를 옮겨가며 비교하는 횟수를 따지는 풀이.

[LeetCode] 49. Group Anagrams [내부링크]

49. Group Anagrams(1) 풀이시간 : 25분(2) 언어 : C++GitHub: https://github.com/oh-mms/LeetCode/blob/master/49.%20Group%20Anagrams/solution.cpp

[LeetCode] 53. Maximum Subarray [내부링크]

53. Maximum Subarray(1) 풀이시간 : 1시간 이상(2) 언어 : C++(3) 아이디어 Easy인데 개인적으로 Hard보다 어려웠다.. 처음에 도저히 브루트포스 외에는 방법이 안 떠올랐다. 브루트포스로 풀면 시간이 꽤 많이 소요된다. windos size와 DP를 사용해서 이전 계산값을 이용하려 해도 전체 길이가 30000가까이 되니, 테이블 수가 너무 커져 스택이 터져버린다. 결국 친구에게 물어봤는데, 학교 수업때 대표적인 Subarray Sum 문제로 나오는 논제라 했다. 여기서 쓰인 아이디어는 결국, 나와 내 이전 인덱스 값을 더한 것이 나(단독 인덱스)보다 크면, Subarray Sum에 합류하는 것을 채택한다는 아이디어다. 만약 채택하지 않으면 나(단독 인.......

[LeetCode] 55. Jump Game [내부링크]

55. Jump Game(1) 풀이시간 : 30분(2) 언어 : C++(3) 아이디어 코드리뷰를 하기 전에 ppt에 미리 써둔 건데, 글로 설명하기 힘드니 위 그림으로 같이 설명한다. 이전에 이미 풀었던 Jump Game II 처럼 DP로 풀어도 좋지만 그대로 가져다 쓰니 메모리 초과가 뜨더라. 그래서 재귀로 한 번 풀어봤다. 주황색으로 구간을 나눠둔 부분이 재귀를 탈출하는 조건이다. 초록색 부분은 재귀로 문제를 풀기 전(계산 전)에 먼저 확인해서 빠르게 리턴하거나 불필요한 계산을 막을 수 있는 부분을 처리한 것이다. 초록색 중에서 아마 보기 힘든 부분은 index+i+nums[index+i] 와 같은 부분일텐데, 이는 그냥 '탐색을 시작하는 위치에서 i번째(탐색.......

[LeetCode] 45. Jump Game II [내부링크]

45. Jump Game II(1) 풀이시간 : 25분(2) 언어 : C++GitHub: https://github.com/oh-mms/LeetCode/blob/master/45.%20Jump%20Game%20II/solution.cpp

[LeetCode] 46. Permutations [내부링크]

46. Permutations(1) 풀이시간 : 15분(2) 언어 : C++GitHub: https://github.com/oh-mms/LeetCode/blob/master/46.%20Permutations/solution.cpp

[LeetCode] 48. Rotate Image [내부링크]

48. Rotate Image(1) 풀이시간 : 10분(2) 언어 : C++(3) 참고본 방법은 2D matrix를 사용한 풀이라서 문제 요지와 맞지 않을 수 있음.그저 시간 단축을 위해 공간을 사용한 케이스이고, 본래는 in-place하게 행의 위치를 모두 뒤집고 대칭으로 바꾸는 방법으로 푸는 것을 원했을 것이니, 단순히 참고만 하시길 바람.GitHub: https://github.com/oh-mms/LeetCode/blob/master/48.%20Rotate%20Image/solution.cpp

DP와 BFS에 대한 고찰 [내부링크]

최근 문제를 풀다가 BFS문제를 DP로도 풀 수 있고, DP문제를 BFS로도 풀 수 있는 현상을 겪었다.물론 DP+BFS 이런 형태도 보긴 했지만, 아예 상호 배타적으로 사용하는 경우를 의미한다.사실 알고리즘 풀이가 어떠한 방식으로든 풀어도 상관 없지만, 가급적 더 효율적인 방법으로 푸는 것이 목적일 테니 어떠한 풀이로든 풀 수 있다면, 둘을 구분하는 무언가가 있어야 하는데 그 무언가에 대해 정의하기가 힘들기도 하다.DP는 큰 문제를 풀기 위해 작은 문제들의 결괏값을 이용하므로, 메모이제이션 된 전 계산을 사용하여 해결한다.BFS는 같은 레벨에 있는 노드를 전부 탐색하여, 가능한 경우의 수를 모두 계산하고 원하는 결과를 찾아내는.......

프로그래머스에서 선물을 보내주었다. [내부링크]

강의 리뷰를 작성한 이벤트에 당첨되어, 선물보따리를 받았다. 패키지부터 너무 예쁘다.에코백부터 시작해서 머쓱이 손목쿠션, 이진법 볼펜, 스티머 등 너무 예쁜 선물을 받아버렸다.그래서 리뷰를 안 쓸래야 안 쓸 수가 없더라.욕시 국내 탑티어 코딩 테스트 사이트인 이유가 있는 것 같다.너무 멋진 선물 감사합니다.

C++ 컨벤션을 바꾸고 있다. [내부링크]

기존에 사용하던 C++ 코딩 컨벤션을 두고, 일부 바꿔야할 필요성을 느끼는 부분은 컨벤션을 교체중이다.현재 바꾸려는 컨벤션은 포프님의 C++ 컨벤션 위주로 따라가려 하고있다.가장 흥미로웠던 부분은 멤버함수의 경우 void doSomething(); 처럼 소문자로 시작한다는 점.객체지향에서 외부에 노출할 인터페이스만 대문자로 표기하여 구분하기 좋게 한다는 의미인 것 같다.단순 추측이긴 하지만, 이런 점이 가장 인상깊었다.하지만, 아마도 클래스 멤버 변수명에 m을 붙이는 형태는 따르지 않을 것 같다.개인적으로 멤버 변수는 int _iAge;와 같이 언더바와 헝가리안을 따르는 형식이 개인적인 가독성에 더 편했다.회사에서 시키는 타입이 있.......

[프로그래머스] 완주하지 못한 선수 [내부링크]

unordered_map의 해싱을 통해 풀이하였다.

[프로그래머스] 전화번호 목록 [내부링크]

(수정필요)이 문제가 해시 문제에 포함되어 있었지만, 해시가 아닌 substr로 풀었다.전에는 이 문제를 풀어뒀을 땐 정확성 테스트와 효율성 테스트 모두 통과했었는데, 포스팅을 쓰는 시점에 다시 채점을 해보니 마지막 2개가 실패하였다. 알고보니 3월 4일 기준 테스트 케이스가 변경되었다고 한다.확실히 효율성 테스트를 통과하지 못하는 모습을 보인다.다른 방법이 아닌, 해시로 풀라고 하는 것 같은데 아마도 자릿수가 적은 수부터 해시를 통해 넣어두고 큰 수의 일부 자릿수를 넓혀가며 이전에 해싱이 된 작은 수들과 동일한 수가 있다면 바로 만들 수 있음을 확인하는 방식인 것 같다. 나중에 다시 풀어봐야겠다.

[프로그래머스] 위장 [내부링크]

해시 문제라서 해싱을 통한 풀이를 하였다.추가적인 설명은 주석에 달아두었다.

[프로그래머스] 베스트앨범 [내부링크]

문제에 나와있는 대로 노래를 수록하는 기준에 맞춰 해시를 통해 풀었다.

[프로그래머스] 기능개발 [내부링크]

스택을 사용해서 풀이해도 좋을 것 같지만, 단순 배열 풀이도 가능하기에 스택을 사용하지 않음.

[프로그래머스] 프린터 [내부링크]

역시 대기열은 큐로 풀어야 제맛이다.

[C++] struct와 class의 차이 [내부링크]

간략하게 결론부터 말씀드리자면 '기본 멤버 접근 지정자 외에 차이가 없다.' 이다.참고로, 접근 지정자(접근 제한자, 접근 제어자 등) 모두 같은 말이니 혼동 없으시길..예시를 살펴보도록 하겠다.아래는 struct로 만든 Point라는 구조체(x, y)를 만들었다.위 struct는 현재 보이지는 않지만, 아래와 같이 기본적으로 접근 지정자가 public으로 선언되어 있다.하지만, class의 경우 아래와 같이 Point 클래스를 만든다면 기본적으로 접근 지정자가 private로 선언된다.즉, struct는 기본 멤버 접근 지정자가 public으로 생성되고, class는 기본 멤버 접근 지정자가 private으로 생성된다. 그 외에 차이는 일절 없다.둘 다 내.......

[STL] vector 컨테이너 정리 (보류) [내부링크]

강의 글이 아닌 정리용 글입니다.1. std::vectorvector 컨테이너는 시퀀스 컨테이너에 속한다. 시퀀스 컨테이너는 저장 원소가 상대적인 위치(순서)를 갖게 되는 컨테이너를 말한다. 즉, 앞/뒤 구분이 확실하게 되고, 내가 너보다 전 원소/뒤에 있는 원소 구분이 된다는 것이다.2. 템플릿/인터페이스/멤버 형식vector 컨테이너에서 쓰이는 템플릿, 인터페이스, 멤버 형식에 대해 중요도나 빈도 위주로 정리하였다. 모든 멤버나 형식들을 적은 것은 아니다.3. 동작 방식위 그림처럼 벡터는 시퀀스 컨테이너이므로 원소의 저장 위치(순서)가 정해진다. 내부적으로는 배열 기반 컨테이너이므로 원소 하나가 메모리 블록에 할당되며, 배열이다보.......

[C++] typeid 연산자 [내부링크]

런타임에 자료형이나 타입에 대한 정보를 반환받을 수 있는 연산자다.반환되는 type_info 클래스에는 타입이 어떤 타입인지 가져오는 함수가 존재하여 유용하게 쓸 수 있다.그 외에도 압축된 자료형의 이름을 가져오거나 해시값을 가져오는 함수도 내장되어 있다.

[OpenGL ES 그래픽스 정리] 서론 [내부링크]

1. 컴퓨터 그래픽스컴퓨터를 이용하여 영상(image)을 생성하는 작업을 컴퓨터 그래픽스라 하며, 3차원 데이터 입력일 경우 3차원 그래픽스라 부른다.컴퓨터가 생성하는 영상을 프레임(frame)이라고도 한다. 움직이는 장면을 묘사하려면 조금씩 변화하는 프레임을 스크린 상에 빠르게 보여주면 된다. 이러한 연속적인 프레임은 실시간(real-time)으로 만들어질 수 있는데, 대표적인 실시간 그래픽스의 예로는 게임을 들 수 있다.본 정리본은 'OpenGL ES를 이용한 3차원 그래픽스 입문' 책을 토대로 정리되었고, 실시간 그래픽스에 초점을 맞추어 정리한다.2. OpenGL ESOpenGL ES는 모바일 기기를 위한 그래픽스 표준이다. 스마트.......

[OpenGL ES 그래픽스 정리] 수학 기초 [내부링크]

컴퓨터 그래픽스 알고리즘을 위한 최소한의 수학적 지식을 정리하고자 한다.하지만, 본 포스팅은 서적 내용을 그대로 옮겨오는 것이 목적이 아니므로 일부 파트는 생략한다.또한, 다른 파트에서 필요한 수학적 설명은 해당 파트에서 다루도록 한다.1. 행렬과 벡터행렬은 m x n 으로 표기하며, m과 n이 같다면 정사각행렬(square matrix)라 한다.행렬 A와 B의 곱은 아래과 같이 표기될 수 있으며, 앞 행렬의 열과 뒷 행렬의 행 수가 같다면 행렬곱셈이 가능하다.2차원 벡터는 (x, y)로, 3차원 벡터는 (x, y, z)로 표기된다. 이렇게 표기된 벡터를 행벡터(row vector), 이와 달리 열벡터(column vector) 표기법을 쓸 수도 있다. 열벡터는 열.......

[LeetCode] 33. Search in Rotated Sorted Array [내부링크]

33. Search in Rotated Sorted Array(1) 풀이시간 : 10분(2) 언어 : C++GitHub: https://github.com/oh-mms/LeetCode/blob/master/33.%20Search%20in%20Rotated%20Sorted%20Array/solution.cpp

[LeetCode] 34. Find First and Last Position of Element in Sorted Array [내부링크]

34. Find First and Last Position of Element in Sorted Array(1) 풀이시간 : 20분(2) 언어 : C++GitHub: https://github.com/oh-mms/LeetCode/blob/master/34.%20Find%20First%20and%20Last%20Position%20of%20Element%20in%20Sorted%20Array/solution.cpp

[LeetCode] 39. Combination Sum [내부링크]

39. Combination Sum(1) 풀이시간 : 30분(2) 언어 : C++GitHub: https://github.com/oh-mms/LeetCode/blob/master/39.%20Combination%20Sum/solution.cpp

[LeetCode] 41. First Missing Positive [내부링크]

41. First Missing Positive(1) 풀이시간 : 20분(2) 언어 : C++GitHub: https://github.com/oh-mms/LeetCode/blob/master/41.%20First%20Missing%20Positive/solution.cpp

[LeetCode] 42. Trapping Rain Water [내부링크]

42. Trapping Rain Water(1) 풀이시간 : 20분(2) 언어 : C++GitHub: https://github.com/oh-mms/LeetCode/blob/master/42.%20Trapping%20Rain%20Water/solution.cpp

[프로그래머스] 코딩테스트 고득점 Kit [내부링크]

당분간은 프로그래머스에 있는 코딩테스트 연습문제 중 고득점 Kit 문제를 풀어보려고 합니다.이미 꽤 풀어봤는데 카테고리별/난이도별로 문제들이 괜찮은 것들로 구성되어 있는 것 같아서 포스팅하려 합니다.물론 정말 찰떡같이 문제가 이해가 되고 정확하게 분류된 카테고리인지 모르겠는 경우도 있었지만, 그래도 연습하기에는 좋아보여서 진행하고 있구요. 프로그래머스 내에서 다른 사람의 풀이를 볼 수 있지만, 풀이별로 설명까지는 알 수 없어서 포스팅 해보려고 합니다.가능하면 제가 지문을 이해한 문제나 단순 연습용이 아닌 많이 괜찮다고 느껴지는 문제를 위주로 포스팅할 것 같습니다. 저와 함께 연습하는 기분으로 풀어보시는.......

[STL] C++ STL 정리 개요 [내부링크]

본 포스팅 시리즈는 C++ STL에 대해서 정리를 하는 글이오니, 입문 혹은 강좌용으로 보는 것은 적합하지 않습니다.주로 참고한 교재는 공동환님의 '뇌를 자극하는 C++ STL' 책과 아이버 호튼의 'C++14 STL 철저 입문' 입니다.그 외에 부족한 정보는 17 시리즈 STL 서적이나 블로그/유튜브 등의 자료들을 참고하였습니다.STL과 연관성이 깊은 Mordern C++ 문법들에 대해서는 설명하지 않습니다.1. STL이란?STL은 Standard Template Libraby의 약자다. 직역하자면 표준 템플릿 라이브러리인데, C++로 프로그래밍을 하면서 편리하게 사용할 수 있게끔 자료구조와 알고리즘, 유틸리티 등의 기능들을 라이브러리 형태로 만들어둔.......

[GoF 디자인 패턴] Abstract Factory [내부링크]

1. 문제 상황 가정컴파일러를 만드려고 하는데, 운영체제나 플랫폼이 달라지면 각 운영체제와 플랫폼에 맞게 클래스 내부 구현도 달라진다. 이럴 때, 특정 운영체제나 플랫폼을 위한 클래스들만 자동으로 선별해서 객체를 생성 및 사용하는 방법을 찾으려고 한다.필자는 컴파일러를 [스캐너, 파서, 코드 생성기, 최적화 모듈] 클래스로 나누어 각각을 정의한 뒤 관리하려고 한다. 하지만, HP 시스템에서 실행될 컴파일러와 Sun 시스템에서 실행될 컴파일러는 기계어 코드가 달라서, 각 클래스 내부 구현도 달라져야 한다. 운영체제에 따라서도 컴파일러가 더 세부적으로 나뉠 수 있다.그렇다면 시스템만 구별해서 컴파일러를 제작하려 할 때.......

[LeetCode] 21. Merge Two Sorted Lists [내부링크]

21. Merge Two Sorted Lists(1) 풀이시간 : 20분(2) 언어 : C++GitHub: https://github.com/oh-mms/LeetCode/blob/master/21.%20Merge%20Two%20Sorted%20Lists/solution.cpp

[LeetCode] 22. Generate Parentheses [내부링크]

22. Generate Parentheses(1) 풀이시간 : 40분(2) 언어 : C++(3) 아이디어DP로 해결했고, n이 1일 경우 만들어질 수 있는 괄호 셋은 () 밖에 없다. n이 2일 경우 ()(), (()) 로 2개가 존재한다. 이런 식으로 n을 확장시켜가면, 다음에 나올 수 있는 괄호 셋은 'n을 맞추기 위해 n-1과 1개짜리 괄호 세트를 붙여놓은 경우' 부터 시작해서 'n을 맞추기 위해 n-2와 2개짜리 괄호 세트를 붙여놓은 경우', ... 'n을 맞추기 위해 1과 n-1개짜리 괄호 세트를 붙여놓은 경우' 로 풀이가 된다. 즉, 이 전 결과값(괄호세트)에 괄호를 씌우는 경우와 n을 맞추기 위해 괄호셋의 숫자를 조절하는 점화식을 세울 수 있게 된.......

[LeetCode] 23. Merge k Sorted Lists [내부링크]

23. Merge k Sorted Lists(1) 풀이시간 : 30분(2) 언어 : C++(3) 아이디어Hard치고 크게 어렵지 않은 것 같다. 계수정렬로 해결하였고, 연결리스트를 순회하면서 각 노드의 value값을 버킷에 counting 시켜준다. counting이 완료가 되면, 모든 버킷을 돌면서 낮은 값부터 counting 된 횟수만큼 노드를 만들어 연결해주기만 하면된다. 낮은 값부터 그대로 버킷을 만들면 되는 이유는 이미 정렬된 연결리스트가 주어지기 때문이고, 계수정렬을 통해 낮은 값부터 그대로 찍어내기만 하면 O(n)만에 풀 수 있는 문제가 된다.GitHub: https://github.com/oh-mms/LeetCode/blob/master/23.%20Merge%20k%20Sorted%20Lists/solution.cpp

[일상] 블로그 공사 [내부링크]

제가 블로그 배경을 라이트한 색상으로 시작을 했었는데요..너무 눈이 아파서 다크한 색상으로 변경했습니다.그런데 문제가 생겼습니다.. ㅜ여태 밝은 배경을 쓸 때, 글자색을 검정색으로 덮은 적이 있는데 배경을 바꾸니 글자 색이 안보이네요..그래서 다크모드에서 다시 글자 색을 밝은 색으로 바꿔서 맞춰줬습니다.여기서 또 문제는 모바일에선 블로그 배경색이 흰 색 고정이라 글자 색이 안보이네요..이런 문제 있으신 분들 어떻게 해결하셨나요??모든 포스팅을 다 봐가면서 변경할 수도 없고 골치아프네요 증말..당분간 시간날 때 공사 좀 해야겠습니다.

네이버 블로그 포스팅 시 기본 글자색 [내부링크]

네이버 블로그에서 포스팅할 때, 글자색 관련해서 많이 골치아팠었습니다.저는 블로그 배경색이 어두운 색이라 포스팅 시 기본 글자색을 밝은 색으로 지정해서 사용했었습니다.그런데, 문제는 글을 쓰다가 강조하려고 글자에 색을 입힐 때 발생하고는 했습니다.혹여나 실수로 강조하려던 문구가 아닌 다른 문구까지 글자색을 바꿔버리면, 이를 되돌리기 위해 제가 꾸미기에서 지정해뒀던 '기본 글자색'으로 덧칠하셨던 경험 있으실 겁니다.예를 보시면 다음과 같습니다.제가 이전에 작성해뒀던 포스트인데요.실수로 'out' 이후를 다 빨간색으로 칠해버려서, 글자색을 변경할 의도가 없던 문구는 제가 원래 기본 글자색으.......

[C] free()는 어떻게 배열의 크기를 알고 있을까? [내부링크]

사실 먼저 작성한 https://blog.naver.com/oh-mms/222110555954 이 글과 맥락은 같다.그래서 짧게 인용을 통해서 설명을 끝내고자 한다.내부적으로 하는 동작은 거의 동일하니, 조금 더 자세한 것을 원하면 위 링크의 글을 참고하면 된다.동적할당 시, 배열에서 데이터가 시작하는 앞부분에 여분의 메모리 공간을 먼저 할당한다.예를들어, 10바이트의 공간이 필요하면 14바이트를 할당해두고 앞의 4바이트는 이 동적 배열에 대한 정보를 저장하고 있어서 free 함수로 메모리를 해제하려할 때, 해당 동적 배열의 크기를 알 수 있는 것이다.<참조>1. https://stackoverflow.com/questions/1957099/how-do-free-and-malloc-work-in-c

[강의 후기] 프로그래머스 알고리즘 강의 후기 [내부링크]

최근 코딩테스트 준비로 이것저것 해보다가, 도움을 좀 받아야 할 것 같아서 여러 인강 사이트를 탐방했습니다.시간도 많이 없었고 알짜배기만 필요로 했기에 프로그래머스에서 강의를 선택했습니다.제가 선택한 강의는 이시윤 강사님의 'C++을 무기로, 코딩테스트 광탈을 면하자!' 라는 강의인데요.마침 제가 C++로 문제들을 풀고 있었고, 강의 시간은 짧고 핵심만 들어간 강의를 찾다가 고르게 됐어요.강의 시간은 3시간 41분 정도 되고, 7개 카테고리를 가지고 연습문제 풀이를 해주십니다.해싱, 정렬, 그리디, 힙, DP, 탐색 등에 관해서 프로그래머스에 게재된 문제들을 가지고 설명을 해주시는데, 처음 문제를 같이 읽고 어떤.......

[GoF 디자인 패턴] 디자인 패턴 개요 [내부링크]

GoF의 디자인 패턴에 대해서 정리글을 작성하고자 합니다.제가 공부한 내용에 대해서 정리하고자 작성하는 포스팅이라 다소 공부용으로 부적합할 수 있습니다.장세찬님 저 'GoF 디자인 패턴! 이렇게 활용한다' 책을 기준으로 작성할 것이며, 게임 프로그래밍에 대한 예시로 작성하지 않고, 책 기준으로 간략하게 예시를 들며 정리할 예정입니다.편의를 위해, 책의 내용을 가져다 쓰기보다는 가급적 제 용어로 설명하고자 하니, 책과 핵심은 같아도 내용은 많이 다를 수 있는 점 참고하시기 바랍니다.[포스팅 순서]1. 개요2. 객체 생성을 위한 디자인 패턴 1) Abstract Factory 패턴 2) Builder 패턴 3) Factory Method 패턴 4) P.......

[LeetCode] 7. Reverse Integer [내부링크]

7. Reverse Integer(1) 풀이시간 : 15분GitHub : https://github.com/oh-mms/LeetCode/blob/master/%EF%BB%BF7.%20Reverse%20Integer/solution.cpp

[LeetCode] 9. Palindrome Number [내부링크]

9. Palindrome Number(1) 풀이시간 : 1시간 이상(2) 언어 : C++(3) 아이디어처음에는 일일이 회문인지 검사를 했는데 시간이 오래걸렸다. 그래서 아예 회문인 반댓 숫자를 만들어버리고 그 값과 원래 값이 같은지(같다면 회문) 비교하는 방식을 알게되어 적용해보았다.GitHub : https://github.com/oh-mms/LeetCode/blob/master/9.%20Palindrome%20Number/solution.cpp

[LeetCode] 11. Container With Most Water [내부링크]

11. Container With Most Water(1) 풀이시간 : 1시간 이상(2) 언어 : C++(3) 아이디어처음엔 브루트포스로 작성을 했는데 타임아웃이 걸려 다른 방법을 모색해야 했다. 이 방법은 양 쪽 끝을 시작으로 넓이를 재면서 시작한다. 점차 인덱스 범위를 줄이면서 더 큰 넓이가 있는지 확인하고, 더 큰 넓이를 발견하면 최대 넓이를 저장하는 max 값을 수정해준다. 범위를 만들고 비교하는 과정이 시간이 오래걸리고, 오버헤드가 되기 때문에 최대한 이러한 과정을 덜 수행하는 것이 우선이다. 인덱스 범위를 좁혀가는 조건은 다음과 같다. 안 쪽에 있는 이전 높이보다 더 큰 높이의 기둥이 발견되면 넓이를 구해본다. 단, 한 쪽 인덱스가 좁혀지.......

[LeetCode] 12. Integer to Roman [내부링크]

12. Integer to Roman(1) 풀이시간 : 15분(2) 언어 : C++(3) 아이디어 사실 이렇게 풀라고 만든 문제인가는 모르겠다. greedy로 현재 나눌 수 있는 가장 큰 값을 마주하면 찍어주는 방식으로 작성했고, greedy로 최적의 해를 구할 수 있을 것 같아 사용했다. 사실 이미 본문에 나와있어서 그리디로 최대 값을 가져가는 모든 경우를 찾아내는 경우는 별로 어렵지 않다. 그리고 1, 10, 100, 1000 과 같이 num의 약수가 될 수 있는 특이한 케이스만 따로 처리해주면 나머지는 복붙이라 코드가 길어도 그리 오래 걸리지는 않는다.GitHub : https://github.com/oh-mms/LeetCode/blob/master/12.%20Integer%20to%20Roman/solution.cpp

[LeetCode] 13. Roman to Integer [내부링크]

13. Roman to Integer(1) 풀이시간 : 15분(2) 언어 : C++

[LeetCode] 14. Longest Common Prefix [내부링크]

14. Longest Common Prefix(1) 풀이시간 : 15분(2) 언어 : C++GitHub: https://github.com/oh-mms/LeetCode/blob/master/14.%20Longest%20Common%20Prefix/solution.cpp

[LeetCode] 15. 3Sum (개선 필요) [내부링크]

15. 3Sum(1) 풀이시간 : 35분(2) 언어 : C++(3) 아이디어 (개선 필요) 배열을 정렬하는 이유는 이진 탐색을 쓰기 위해서이다. 0을 만드는 세 숫자를 고르기 위해서 a, b를 배열 내 임의의 수로 선택 했다면, 나머지 c의 값은 자연스레 -a-b의 값이 된다. 결정된 c 값이 배열 내에 있다면 a+b+c = 0을 만족하는 경우를 찾은 것이니 정렬된 배열 속에서 이진 탐색을 해준다. 중복값 제거와 쓸데없는 탐색을 줄이기 위해 왼 쪽 인덱스는 다음 숫자가 본인과 같은 숫자라면 스킵할 수 있도록 해주었다. 마찬가지로 오른 쪽 인덱스의 이전 숫자(앞 인덱스)도 본인과 같다면 스킵해준다.(4) 문제점 및 필요한 개선 사항 일단은 큰 문제점.......

[LeetCode] 16. 3Sum Closest (개선 필요) [내부링크]

16. 3Sum Closest(1) 풀이시간 : 20분(2) 언어 : C++(3) 문제점 및 필요한 개선 사항 별 생각 없이 완전 탐색으로 한 번 풀어봤다. 역시 모든 경우를 체크하느라 불필요한 계산량이 너무나 많다! 일단은 너무 느려도 통과는 했으니 넘어가는데, 2차 시도에서는 더 빠르게 풀 방법을 찾아봐야 겠다.GitHub: https://github.com/oh-mms/LeetCode/blob/master/16.%203Sum%20Closest/solution.cpp

[LeetCode] 17. Letter Combinations of a Phone Number (개선 필요) [내부링크]

17. Letter Combinations of a Phone Number(1) 풀이시간 : 20분(2) 언어 : C++(3) 아이디어 (개선 필요) 풀면서 이거 이렇게 푸는게 맞나 싶었다. 만약 실무 코드라면 재사용성 빵점, 확장성 빵점의 최악의 코드일테지만 알고리즘 테스트 문제라서 이렇게 풀어도 되나 싶었다. 솔직히 코드 설명은 필요 없을 정도로 단순 무식하다. (그렇다고 브루트 포스라 하기도 좀 그렇다.) 일단은 통과는 했다만, 문제를 낸 의도는 이것이 아님이 분명했다.(4) 문제점 및 필요한 개선 사항 친구가 말해주기로는 DFS로 푸는 문제라고 했다. 음.. 그렇게 보니 그럴싸 해보이기도 했다. BFS, DFS로 풀이하는 방법을 거의 안 해봐서 아직 적용하는데 미.......

[LeetCode] 19. Remove Nth Node From End of List [내부링크]

15. 3Sum(1) 풀이시간 : 15분(2) 언어 : C++GitHub: https://github.com/oh-mms/LeetCode/blob/master/19.%20Remove%20Nth%20Node%20From%20End%20of%20List/solution.cpp

[LeetCode] 20. Valid Parentheses [내부링크]

20. Valid Parentheses(1) 풀이시간 : 10분(2) 언어 : C++GitHub: https://github.com/oh-mms/LeetCode/blob/master/20.%20Valid%20Parentheses/solution.cpp

[LeetCode] 잠시 보류 [내부링크]

LeetCode 푸는 것을 잠시 보류해야겠다.기초 알고리즘만 공부한 상태로 바로 문제풀이를 하려니 문제점이 보였다.DP, BFS, DFS 등 적용하여 푸는 방법이 익숙치 않은 것 같아서 이런 부분만 따로 연습을 해야겠다.사실 LeetCode에서 Top 100 liked 문제들만 풀어보려 했는데, 실수로 top 100이 아닌 문제들까지 풀어버려서 중간에 꼬여버렸다.일단은 빠르게 할 수 있을 만큼만 연습하고 다시 문제풀이를 해야겠다!! (부족한 부분 매꾸기)아마 당분간은 알고리즘 문제를 풀어도, BOJ같은 곳의 카테고리형 문제들만 풀게되지 않을까 싶다.

Native Code, Machine Code [내부링크]

즉, Native Code = Machine Code 라는 개념으로 사용하나보다.단, 이들은 플랫폼에 특정지어진 형태라는 점.플랫폼 특정이라는 의미는 아래 영상을 참고 바란다.(참고로 위 영상에선 JAVA가 JVM으로 부터 산출되는 과정엔 컴파일이 없는 것 처럼 묘사했지만 사실무근)아무튼, Virtual Machine을 통해 나온 Native Code들은 그 코드 자체적으로 각 플랫폼에 종속되어진 Machine Code라는 것이 많은 사람들의 의견이라는 점이다.Native와 Unmanaged Code 차이 참고: https://blog.naver.com/oh-mms/222048414302번외로 Native Code를 이전에 포스팅할 때에는 unmanaged code와 구분되어지는 machine code로 단정지어 설명했지만, 통.......

[WinAPI] 화면의 가로/세로 크기 받아오기 [내부링크]

내 현재 화면의 가로/세로 크기(디스플레이 해상도)를 받아와야 할 때가 있다.GetSystemMetrics를 사용하면 되며, 이는 WinAPI 내부 winuser.h 에 선언되어 있는 듯 하다.본인 컴퓨터의 해상도는 아래와 같다.조사식으로 봐도 잘 받아오는 걸 볼 수 있었다.

[강의 후기] 2021 디지털 마케팅과 페이스북/인스타그램 광고 [내부링크]

"이 글은 에듀캐스트에서 강의를 제공받아 작성한 글 입니다."사실 나는 지금 회사원으로 일을 하려는 입장인지라, 분야도 다르고 마케팅에 대한 지식이 그리 필요하지 않을 수도 있었다. 그러나, 경제성을 추구로하는 회사의 입장에서 이런 경제적 관념이 없이 그저 일만하는 일벌레는 그리 달갑지 않을 것이라 생각한다.개발자 인턴을 하며 느낀 점은 내가 비록 타 직군이라고 해서, 경제적 관념을 신경 안 쓰는 것은 스스로 파멸의 길을 걷는 것과 다름없다는 것이다. 당시 대표님께서 덕담차원에 해주셨던 말씀이 큰 파도를 탈 줄 알아야 한다는 것이었는데, 경제적 관념 측면에서는 어느정도 일맥상통하는 바가 있다고 생각한.......

[생각] 게임 개발에 관하여 [내부링크]

며칠 전 모의면접을 하며 여러 가지를 느꼈다.내가 게임이라는 것을 어떻게 받아들이는지 태도에 대해 정립해볼 수 있는 기회였다.그리고 엊그제 대학교 당시 연합 동아리로 일했던 친구들이 스타트업의 대표이자 개발자로 일하는 것을 간접적으로 보게 되었고, 정말 여러 가지 생각을 하게 만들었다.정말 어렸을 땐 그저 내가 만들고 싶은 게임을 만들었었다.플래시나 쯔꾸루게임은 내가 만들고 싶은 게임을 손쉽게 만들 수 있는 툴이었고, 당시 커뮤니티도 아주 많이 활성화되어 있었기 때문에 리소스나 정보를 구하는 것이 매우 쉬웠다. 물론 필요하면 직접 그려 만들 수도 있었다.하지만 점점 더 큰 규모의 프로젝트를 할수록, 어릴 적에.......

[일상] 아쉽다~ [내부링크]

정말 장기간 피말리며 열심히 준비핸 공채 결과가 모두 아쉽게 끝나서 아쉽다.하지만, 모든 과정(필기, 1차면접, 2차면접)들을 거쳐보며 이런 것이 채용과정이라는 걸 알게 되었다.여러 경험치를 쌓은 것 같고, 정말 생각도 많이 하게 해줘서 도움이 되었다.솔직히 경험을 했으니 다 잘 된일이라고 해피하지는 않다.나도 사람이라고 속상하고 맘아프고, 마지막 공채결과가 난 오늘 기분도 꿀꿀허다.준비도 열심히 한지라 기대도 컸기에, 결과를 보고 잘못 봤는지 몇 번 확인했을 정도니깐.그래도 어쩌겠나.. 내가 정말 탄탄한 사람이었으면 납득이 안 갔었겠지만,면접을 보는 와중에도 내가 나를 아리송했을 정도니 말이다. 다른 사람을 설득.......

알고리즘 개요 (수정중) [내부링크]

(작성 및 수정중인 글입니다.)

코딩 테스트/인터뷰 포스팅 기준 [내부링크]

본 블로그에서 코딩 테스트 및 인터뷰 포스팅을 하는 기준은 다음과 같다.(최근 포스팅을 많이하지 못 한 관계로, 여태 풀었던 문제부터 천천히 나눠 올리려고 한다.)[코딩 테스트]백준, LeetCode 문제풀이와 알고리즘 강의 등에서 풀었던 문제들 중 선별하여 포스팅.풀이에 걸린 시간과 방법, 코드에 대하여 올리되 설명이 필요한 경우, 설명은 추가적으로 올린다.(1시간 이상 걸렸다면 1시간 초과로 통일하며, 설명이 필요없을 정도의 코드는 코드만 올리도록 하겠다.)코딩 테스트는 여태 준비해본 적이 없어서, 비효율적인 코드더라도 Pass를 할 경우 일단 올려보려고 한다.많이 비효율적이라고 판단되는 코드는 제목에 '개선 필요&#.......

[LeetCode] 1. Two Sum [내부링크]

1. Two Sum(1) 풀이시간 : 10분GitHub : https://github.com/oh-mms/LeetCode/blob/master/%EF%BB%BF1.%20Two%20Sum/solution.cpp

[LeetCode] 2. Add Two Numbers [내부링크]

2. Add Two Numbers(1) 풀이시간 : 30분(2) 언어 : C++(3) 아이디어 두 숫자를 각각 int 형으로 만들어 풀면 overflow에 대비할 수 없다. 따라서, 각각 더해지는 자릿수만 더하고 만약 10을 넘는다면 다음 자릿수 계산 시, 이 전 자릿수 계산 후 넘어온 1(carry) 을 더해주면서 제일 앞 자릿수까지 계산해주면 된다. 마지막 계산 시, 이전 로직처럼 [carry + l1 + l2]의 형태로 할 수 없는 경우가 생긴다. 어떤 경우냐면, l1과 l2를 모두 더한고 난 뒤 carry가 발생하는 경우를 말한다. 아랫자리에서 넘어온 carry는 존재하지만, l1과 l2 모두 null이므로 계산할 수 없는 경우를 예외처리 해주면 된다.GitHub : https://github.com/oh-mms/.......

[LeetCode] 3. Longest Substring Without Repeating Characters (개선 필요) [내부링크]

3. Longest Substring Without Repeating Characters(1) 풀이시간 : 20분(2) 언어 : C++(3) 아이디어 (개선 필요) 입력값이 아스키 문자만 들어오므로, 127개의 char형 아스키 벡터를 사용한다. substring을 만들 문자들을 하나씩 넣으며 이전에 이미 나온 글자가 있다면(아스키 배열에 값이 있다면), 해당 substring의 길이를 잴 수 있고, 여태까지 구한 가장 긴 부분문자열 길이랑 비교를 하여 교체한다.(4) 문제점 및 필요한 개선 사항 매 반복마다 아스키 테이블을 비워(0으로 만들어)주어야 하는 오버헤드가 존재한다. 순수 부분문자열만 구하기에는 매 반복마다 해야한다는 점에 있어서 불필요한 작업이기도 하다. 이러한 점을 줄.......

[LeetCode] 4. Median of Two Sorted Arrays [내부링크]

4. Median of Two Sorted Arrays(1) 풀이시간 : 30분(2) 언어 : C++(3) 아이디어 일반적으로 두 벡터의 모든 원소를 합치고, 합쳐진 벡터에서 중간 index를 찾아 그 값을 리턴하는 방식을 찾을 것이다. 하지만 두 벡터를 모두 더하기보단 중간 index까지만 찾아서 바로 중간값을 만들고 리턴해주면 더 효과적일 것이다. 따라서 두 벡터 중 작은 원소를 병합될 벡터에 추가를 해준다. 추가하는 과정에서 한 쪽 벡터가 상대적으로 작아 비교할 수 없는 상황을 대비해 원소의 끝까지 보았다면 맨 마지막 index에 아주 큰 값(INT_MAX)를 넣어주어, 다른 쪽 벡터의 원소를 일방적으로 병합되는 벡터에 추가할 수 있게 만들어준다.(4) 문제점 및.......

[LeetCode] 5. Longest Palindromic Substring (개선 필요) [내부링크]

5. Longest Palindromic Substring(1) 풀이시간 : 1시간 이상(2) 언어 : C++(3) 아이디어 (개선 필요) 너무 길어서 3부분으로 나누어 작성했다. 회문은 보통 abcba와 같이 가운데 값을 빼면 나머지 글자들의 갯수가 같다. 따라서 가운데 글자인 c를 제외하고 a, b라는 글자는 2번씩 반복된다. 아스키값으로 이 글자들을 더해서 숫자로 환산해보면 2(a+b)인 셈이고, 이는 2의 배수임을 말한다. 반대로 abccba와 같은 짝수개의 문자열도 똑같이 가운데 2개 글자를 제외하면 2(a+b)의 형태가 나온다. 본인이 작성한 회문인지 검사하는 알고리즘은 시간을 좀 소요하기 때문에 되도록이면 애초에 회문처럼 안 생긴 문자열은 회문검사 자체를 안.......

[LeetCode] 6. ZigZag Conversion [내부링크]

6. ZigZag Conversion(1) 풀이시간 : 20분(2) 언어 : C++(3) 아이디어numRows 만큼 문자열을 담는 벡터를 만들어준 뒤, 정방향인지 역방향인지 확인하여 각 문자를 table 벡터의 각 줄에 해당하는 string에 넣어준다. 마지막으로 넣어준 벡터를 차례로 순회하며 그대로 출력해준다.GitHub : https://github.com/oh-mms/LeetCode/blob/master/%EF%BB%BF6.%20ZigZag%20Conversion/solution.cpp

개인적으로 편리하다 생각하는 Windows 단축키 [내부링크]

계속 업데이트 될 자료입니다.1. 캡쳐 : Windows키 + Shift + S2. 폴더 이름 변경 : 폴더 선택 후, F2

[개발] 이해가 안 돼서 정리해본 deltaTime의 개념 [내부링크]

예전부터 엔진이나 프레임워크를 사용할 때, 다른 건 다 이해 가도 deltaTime의 개념이 조금 모호했다.오늘 시간이 조금 나서, 내가 이해한 만큼 그냥 한 번 정리해보려 하는데 나 같은 사람이 있다면 도움 되길 바란다.1. deltaTime을 알기 전델타 타임을 알기 전에 게임에서 어느 정도 통용되는 국룰부터 살펴보겠다. 게임 내 객체가 만들어지면, 생성자 등을 통해 초깃값을 Initializing 한다. 그다음 게임 내 룰에 따라 객체의 상태나 행동을 계속 반복하여 업데이트한다. 그렇게 업데이트된 내용을 기반으로 렌더링/후 충돌 처리 등의 과정이 수행된다. 하나의 게임 내에서는 이런 일련의 과정이 반복적으로 수행되는 점부터 알고 설명을 하.......

짐벌락, 쿼터니온을 사용하는 이유 [내부링크]

일반적으로 3차원 공간에서 Rotation을 이용하는 경우 직관적인 오일러 각도를 사용하는 것이 편하다. 유니티에서도 유저들이 편하게 쓸 수 있는 Inspector의 Transform.rotation 은 오일러 각도로 수정할 수 있게 해두었는데, 사실 엔진 내부에서는 쿼터니온 각도 체계를 사용하고 있다.오일러 각도의 경우, 3개의 짐벌이 회전을 하게 된다. 각각은 독립적이지 않고 한 축이 다른 축을 포함하는 등 종속적인 관계를 가지고 있다.오일러 각도에서는 순서에 상관없이 언젠가는 꼭 한 번 짐벌락 현상을 겪게 되는데, '한 축이 다른 축과 각도가 겹쳐져서, 하나의 축에 대한 회전 각도를 잃어버리는 현상' 을 짐벌락이라 한다. 해결하기.......

[여담] 책이라고 맹신할 것은 못 되는가 보다. [내부링크]

내가 좋아하는 e-book이 있다.'멍청한 IT'라는 책인데, C.S. 과목 중 중요하다는 내용 대해서 복습하기 좋고 짧게 모아둔 책이다.시험보기 전 날 복습 겸이나 개념을 까먹어 다시 살펴볼 필요가 있을 때, 그 무거운 operating system concept를 펼쳐보지 않아도 되게 만들어주는 고마운 책이다.헌데, 가끔씩 책들을 보다보면 잘못된 말로 설명하거나 헷갈림을 유도할 수 있는 표현들이 존재하더라.예를들면, 아래처럼 데드락 발생 조건의 4대 요소를 설명하는 파트에 '조건 중 하나라도' 라고 쓰여있는데..일반적으로 알려진 운영체제론에서는 4개의 요소가 모두 존재해야 교착상태가 발생할 수도 있다고 알려져있다.아래.......

cocos2d-x 공부했던 방법 [내부링크]

아마도 처음 cocos2d-x 접하시는 분들께선 이 화면 띄우기도 속이 타들어 갈 것이다.필자도 이 Hello, World! 화면을 띄우기 위해 반나절은 세팅해서 띄워본 것 같다.그래서 cocos2d-x를 처음 사용하시는 분들께 필자가 공부했던 자료들을 추천드리려 한다.그 전에 cocos2d-x를 사용하시려는 분들께는 당부의 말씀드리고자 한다.이게 상용 엔진도 아니고 오픈소스 프레임워크다 보니..자료 찾기도 많이 힘들고, 여러모로 지원이 빈약한 경우도 있다.Unreal이나 Unity처럼 편리한 엔진을 사용해봤던 사람이라면 cocos를 쓸 때,많이 답답하고 짜증도 많이 날 수도 있다는 점 알고 시작해야한다..그리고 필자가 추천하는 자료들은 아주 잘 만.......

[C#] ref 키워드와 out 키워드의 차이 [내부링크]

ref와 out 키워드는 인자로 넘긴 변수를 함수 내부에서 참조의 형태로 사용한다는 점에서 동일하다.그러나 out 키워드는 ref보다 조금 더 특이한 상황에서 사용한다.ref와의 차이점부터 정리하자면 out은 초기화된 값이 인자로 들어오든 말든 상관이 없으나, ref는 초기화 된 값을 가지고 사용하는 데 초점이 맞춰져 있다.그리고 out은 해당 메서드가 끝나기 전까지 내부에서 인자로 받은 변수에 어떤 값이든 할당해야 하나, ref는 해당 값을 메서드 내부에서 변경하든 말든 상관없다.즉, ref는 레퍼런스이므로 값을 복사하지 않고 참조해서, 변수를 사용하거나 변경하는 것이 주 목적인 반면, out은 들어온 변수가 어떤 형태로 들어왔든.......

[C++] auto의 쓸모있는 사용법에 대한 생각 [내부링크]

음.. 갑자기 생각이 나서 포스팅을 하게 된다.어떤 책에서든 보통 auto의 사용을 권장하고는 하는데, 편하다는 경우 외에는 별로 근거를 들지 않더라.그러다가.. 어떤 책이었는지 기억이 안 나는데, 거기서 좋은 아이디어를 얻었던 것 같다.auto를 다음과 같은 방법으로 사용하면 꽤나 효율적이지 않을까 싶다.* 유지보수 측면에서 큰 이점위 코드는 분명 객체지향적으로는 잘못된 설계이다. 허나, 만약 당신이 어쩔 수 없이 수백만 줄 되는 큰 프로그램의 내부 구조에 저렇게 값을 받아다 써야하는 수 밖에 없다고 가정해보자.auto가 없었다면, int로 선언되어있는 A의 멤버변수 m_num이 float로 바뀐순간 얽히고 섥히게 get()으로 값을 받아.......

[C#] C#에서 sizeof를 사용하는 방법 [내부링크]

일반적으로 마샬링 구조체를 사용해서 확인하는 듯 하다.사용법은 아래와 같이, Marshal.SizeOf( 'new 타입' 이나 'typeof(타입)' ) 으로 값을 받아서 사용하면 된다.문제는 위와 같이 짜면, size가 13이 아닌 24라고 출력되는 것이다.일단 이에 대한 해결 방법부터 알려주자면, 클래스나 구조체 위에 다음과 같이 애트리뷰트를 선언해주면 된다.그러면 처음 예상했던 것 처럼 size가 13이라고 출력될 것이다.번외로 왜 24byte를 출력하는지 알아보자.아마 C계열 언어를 다뤘던 사람이라면 알 것이라고 생각한다.위의 경우 struct 내에서 최고 크기 변수를 기준으로 메모리를 할당했기 때문이다.조금 더 정확히 말하자면 구.......

[C#] object, var, dynamic 정리 [내부링크]

[object]어떤 타입이라도 변수로 선언 및 사용 가능. (익명 형식도 가능)모든 클래스의 기본 클래스이며, 이를 사용할 때 변환을 위한 박싱(boxing), 언박싱(unboxing) 과정이 존재하기 때문에 박싱/언박싱(메서드나 캐스팅과 같은 변환 전략을 통해서)을 하느라 프로그램을 느리게 만들 수 있다.기본 클래스이다 보니 중간에 다른 타입의 변수를 할당할 수도 있다.원본 타입 특성을 그대로 갖고 있지 않기 때문에, 연산과정이 힘들다.[var]var은 대부분의 개체의 타입에 대해서 값을 초기화하면서 이 값으로부터 형식을 결정한다.반드시 선언 시점에 초기화를 같이 해주어 특정 타입이 될 수 있게 만들어주어야 하며, 컴파일러는 정의된 값.......

[비용X] 컴퓨터활용능력(컴활) 1급 필기, 단기 공부 방법 [내부링크]

과거 내가 다른 계정으로 블로그을 할 때 작성했던 나름의 인기글(?) 이다.일단 해당 글을 비공개 처리했고, 그대로 가져와서 약간 다듬어 보았다.물론 거의 매 년 출제 경향이 바뀐다 뭐다 하지만.. 비슷비슷 하더라.애초에 출제하려는 중심이 잡혀있어서, 과목 전체가 뒤집어지거나 하는 경우는 없다.배경 설명이나 근거를 받쳐줄 부분 외에, 쓸데없던 내용이나 수식어는 모두 쳐냈고.분량이 너무 길어져 필기 내용만 작성했었지만, 실기 내용도 추가했다.(물론 대화체도 다 설명 위주의 말투로 바꿔서 딱딱할 수 있음..)19년도 당시 얼마 공부 안 하고 필기/실기 모두 취득했었기 때문에,나름의 공부 방법과 노하우를 전하고자 한다........

프로세스 생성 연습 [내부링크]

윤성우님 책을 보고, 조금 수정하여 연습한 내용입니다.CreateProcess에서 TestProcess.exe 프로그램을 실행시키는 프로세스 생성을 연습한 코드입니다.< 코드 >< 실행 결과 >

프로세스 우선순위 변경 연습 [내부링크]

윤성우님 강의를 보고 살짝 변형한 예제입니다.자식 프로세스 우선순위를 변경해보면서 실제로 CPU를 가져가는 횟수가 더 많은지 확인할 겁니다.<소스 코드><결과>결과적으로 Test.exe를 출력하는 자식 프로세스가 높은 우선순위로 인해, CPU를 더 많이 가져가는 것을 확인할 수 있었습니다.다만, 병렬처리 때문인지 CreateProcess를 한 번 더 가져가게 해주는 경우도 있었습니다만, Test 프로세스의 우선순위가 높아 Test.exe를 출력하는 경우가 상대적으로 훨씬 많았습니다.

내가 보려 정리하는 Unity 단축키/조작법 정리 [내부링크]

계속 업데이트 되는 자료입니다.언리얼이랑 비슷한 면이 많아서, 헷갈릴 수 있으니 조심.* 기즈모1. 게임 오브젝트 1) Move Tool : W 2) Rotate Tool : E 3) Scale Tool : R 4) Rect Tool : T 5) All : Y 6) 취소(Hand Tool) : Q* 씬1. 조작 1) 이동 : 마우스 우클릭 후, WASD 2) 줌 인/아웃 : 마우스 휠 업/다운 3) 평행이동(?) : 마우스 휠 클릭2. 카메라 1) 선택된 GameObject를 현재 Scene View 카메라로 이동 및 회전 : Ctrl + Shift + F * 하이어라키/프로젝트1. 단축키 1) 복사/붙여넣기 : Ctrl+C / Ctrl+V 2) 복제 : Ctrl+D 3) 이름변경 : F2

사용하며 배운 Unity 팁 [내부링크]

계속 업데이트 되는 자료입니다.1. 프로젝트 클론 Assets, Packages, ProjectSettings 폴더만 존재하면, 복제가 가능하다.2. 마지막에 열어본 씬 Library - LastSceneManagerSetup.txt 에 마지막으로 열었던 씬이 저장되어있다.

편리하다 생각했던 Visual Studio 단축키 [내부링크]

1. 실행 및 디버깅 1) 실행 : Ctrl + F5 2) 디버깅 후 실행 : F5 3) 빌드 : Ctrl + B2. 조사 1) Step In : F11 2) Step Over : F10 3) 프로시저 나가기(Step Out) : Shift + F11 4) 디버깅 시 다음 문장으로 다시 이동 : Alt + * (numpad) 5) 찾기 : Ctrl + F3. 중단점 1) 중단점(Break Point) 창 열기 : Ctrl + Alt + B 2) 중단점 : F9 3) 중단점 모두 삭제 : Ctrl + Shift + F9 4. 코드 이동 1) 파일로 이동 : Ctrl + Shift + G 2) 코드 정의/파일로 이동 : F12 3) 코드 선언으로 이동 : Ctrl + F12 4) 참조하는 곳 찾기 : Shif + F12 5) 이동 후 되돌아오기 : Ctrl + - 6) 동일한 위치의 여러 줄 코드 범위 지정 : Shift + Alt 드래그 후.......

이제서야 국가브랜딩을 시작하는 듯 [내부링크]

최근에 뉴스에 떴던 내용을 리뷰할까 말까 하다가.. 이제서야 해본다.지역마다 핫플레이스(?)를 즐겁게 소개해 주는 영상이고,각 동영상마다 2000만 뷰 이상을 찍으면서 해외/국내 할 것 없이 핫했던 영상들이다.다 좋았지만, 현재 기준 최고 시청률을 찍은 서울을 위주로 리뷰하고자 한다.음악적 요소는 당연하고, 춤부터 영상미, 색상, 소품, 장소 선정 등 모든 디테일과 기획이 완벽했다.<음악>베이스부터 비트, 드럼, 퓨전국악 등 음악적 요소가 너무 힙하고 트렌디해서 놀랐다.솔직히 퓨전국악에 관심이 없었었는데, 이걸 보고 생겨버린 것 같다.물론 비트부터 음악 강약 조절 나누는 부분도 과하지 않게 잘 나누어진 듯하다........

UML 기호 간단 정리 [내부링크]

프로그램에서 형식 사이의 관계를 클래스 다이어그램으로 표시하고 설계할 때 UML을 자주 사용한다.여기서는 자주 사용되는 기호들 7개만 정리해보고자 한다.* 참고 (UML 클래스의 표현)1. 일반화(Generalization) 관계 : "피아니스트는 음악가이다." 상속을 받은 객체를 표시. 한 개체가 다른 개체를 포함하는 상위 개념일 때, 두 개체 사이엔 일반화 관계가 존재한다.즉, 상속 관계에 있는 두 개체 사이의 관계를 일반화 관계로 표현할 수 있고, "Is kind of" 관계라고도 한다.2. 집합(Aggregation) 관계 : "필동은 연필들과 지우개 등을 보관할 수 있다." 보통 자료구조 컨테이너(컬렉션)와 컨테이.......

[C++] 컴파일러와 전방 선언 [내부링크]

컴파일러는 한 줄씩 읽어 내려가면서 구문과 문법 검사 등을 한다. 한 줄씩 읽어내려가는 과정에서 이해가 안 가거나 논리가 안 맞으면 컴파일러 오류를 내서 사용자에게 알려준다. 오늘은 그 컴파일러와 전방 선언 사이의 관계에 대해서 말해보고자 한다.1. 함수의 전방 선언 (forward declarations) 컴파일러에게 미리 식별자의 존재를 알리는 행위라고 보면 되겠다. 위 코드는 분명 아래와 같은 오류가 날 것이다. 그 이유는 위에서부터 한 줄 씩 읽어 내려가는 컴파일러의 입장에선 main 함수 안의 foo()를 만난 순간 어디에 어떻게 생겨먹은 함수인지 알 수가 없기 때문이다. 따라서 위 코드의 foo()를 main 함수보다 위로 올리면 컴파일러.......

Boost.Asio 1.74.0 설치 및 테스트 [내부링크]

[ C++ Boost.Asio ]C++로 다양한 플랫폼의 서버&클라이언트 모델을 구현할 목적으로 제작된 라이브러리.Boost의 라이브러리 중 일부에 해당하며, Asynchronous I/O (비동기 입출력) 프로그램을 포함해고성능 네트워크 프로그램을 쉽게 구현할 수 있게 도와준다.실제 파일 전송 시스템 및 게임 서버 구현 목적으로 다수 활용된다고 한다.1. 설치하단 링크에서 다운로드할 수 있으며,Boost.Asio는 Boost 안에 들어있으므로 boost를 설치하면 된다.https://www.boost.org/users/download/파일을 다운받고, 본인이 개발을 하는 드라이브에 압축을 풀어주면,아래 사진과 같은 형태로 압축이 풀리게 될 것이다.해당 폴더 내의 bootstrap........

[C++] 포인터는 왜 자료형을 명시해주어야 하는가? [내부링크]

포인터는 왜 자료형을 명시해 주어야 하는가?int*, double* 처럼 따로 나눠 쓸 필요없이, 그냥 pointer 이라는 '주소만 저장하는 변수'를 만들면 안 됐을까?이에 대한 답변으로 대부분 '어떤 자료형인지 알기 위해서' 라고만 한다.이게 무슨 말인지 더 자세히 알아보자.1. 포인터 변수pointer는 말 그대로 '가리키는 것' 이며, 포인터 변수는 '무언가를 가리키는 변수' 이다.즉, '주소를 가리키는(저장하는) 변수'가 포인터 변수다.int* ptr; 이든 char* ptr이든 어쨌든 그 ptr이라는 포인터 변수는 '동일한 형태로 주솟값을 저장한다.'그렇다면 해당 주소의 변수로 가서, 그.......

[근황] 요즘 증말 바쁘다!! [내부링크]

올 해가 가기 전에 마지막이자 처음으로..? 쏟아져나오는 공채에 지원해보았다.'정말 내 실력이면 합격해야지!' 하는 것이 아니라 지금 내 수준이 어느정도인지 가늠해보기 위함이었다.솔직히 아직 많이 부족하다고 생각하는데, 운이 좋았던건지 넷마블이랑 NCSOFT 공채에서 서류합격을 했다. 사실 아직 유튜브 나오는 그럴싸한 포트폴리오도 없고, 어떤 부분을 좋게 봐주신 건지 모르겠지만..그냥 열심히.. 게임 프로그래머라는 외길을 살아왔어도, 다양한 시각으로 살아오려 노력했음을 어필했다. 희소식들을 듣게되니 조금은 자신감이 붙어, 현 시점에 발표가 안 난 공채 회사(게임빌/컴투스, 스마일게이트 등)들도 HOXY..? 붙.......

[2020 NC 공채] NCTEST 후기 [내부링크]

20.11.01 수정 완료.저작권 관련해서 문제에 대한 직접적 언급은 안 할 것이다.그저, 어떤 느낌으로 시험을 봤는지 적는 후기일 뿐이다.음.. 오늘 NCTEST를 보고 왔는데, 컨디션 난조로 인해 원하는 만큼 실력발휘를 못 한 것 같다.시험 며칠 전부터 너무 급하게 전공 내용을 복습하느라, 컨디션 조절을 못 해버렸다!!차라리 선택과 집중을 할 걸 그랬다. 구에엑일단 시험 보기 전에 사전 조사들을 많이 했는데, 블로그 자료들 어느 정도는 신뢰할 만 한 것 같다.매 년도 비슷한 문항수에 비슷한 형태의 문제들로 출제되었던 것 같다. 다만, 이번 연도는 코로나 영향으로 시험 시간부터 루틴이 바뀌어서 그랬는지 조금씩 바뀐 것 같더라.중간.......

[2020 넷마블 공채] 넷마블 테스트 후기 [내부링크]

저작권 관련해서 문제에 대한 직접적 언급은 안 할 것이다.그냥 간략하게 어떤 스타일인지만 언급할 것이다.넷마블 테스트에 대한 정보는 정말정말 찾기 힘들었다.힘들게 꾸역꾸역 찾으니 2개 정도 정보가 나왔었는데, 서로 말 하는 유형이 달랐다.일단 둘 다 믿고 준비를 하려 노력했지만, 전 날 NC 시험을 보고 오느라 하루가 다 가 있었다.(막상 보고나니 한 분 말 만, 그것도 일부만 맞더라. 유형이 자주 바뀌는 듯 하다.)나는 경기권이지만, 정말 외곽에 있어서 교통이 너무 힘드러따아... ㅜ비록 나한테 가까운 쪽의 서울권이었지만, 새벽 일찍 일어나서 2시간씩 대중교통을 타고 다녀야 해 너무 힘들었다.일단 시험장에 가서 지원 인.......

국가와 사회, 민주주의의 이해 [내부링크]

음.. 교양 중 교수님 강의력 만큼은 거의 탑급인 수업이었다.각 시대별 국가/사회의 형태, 그 시대를 이끌었던 학자들과 그분들의 주장.그로 인한 민주주의의 발전 과정과 그 배경, 비교될 수 있는 사회주의와 공산주의의 정의와 이해.민주주의의 여러 형태로서 우리나라의 위치와 앞으로 올바른 민주주의에 대한 방향성 등 여러 내용을 다룬 수업..아주 초기의 민주주의 형태부터 시작하다가 루크, 홉스 얘기가 나오고, 막시즘, 신마르크스주의 같은 내용도 다룬다.물 흐르듯이 스토리 방식으로 전개되는 수업이라 재미있었고, 그걸 풀어내는 교수님 능력도 좋았다.다만, 초중반까지는 교수님께서 수업을 하시다가 그 이후에는 학생들이 조.......

인간의 언어, 기호 그리고 상징 [내부링크]

앞서 배웠던 '언어와 광고' 수업과 굉장히 유사했다.그 덕에 평점도 잘 받아서 좋았긴 한데, 특이한 점은 실 생활에 더 밀착해서 여러 유형의 기호학을 본 것 같다.어떻게 보면 기호학이지만, 또 다르게 보면 논리학이라고 말할 수도 있을듯. 그냥 개인적인 생각.마찬가지로 롤랑바르트, 소쉬르, 퍼스, 그레마스와 같은 사람들이 말한 기호학부터 인유와 환유, 이미지의 수사학 등앞서 언급한 수업과 비슷한 내용을 다뤘고, 재밌던 것은 영화를 보여주셨는 데 거기서 기호학의 의미를 찾게 하셨다.솔직히 영화를 보면서 기호학의 의미를 찾는 게 제일 재밌었다.아마 '봄날은 간다'를 봤던 것 같은데.. 팀에 친해졌던 후.......

언어학과 심리 실험 [내부링크]

수업 내용부터 평점까지 나름 재미 좀 봤던 수업.언어학의 기초와 언어를 이용한 여러가지 심리 실험들에 대해 알아보는 과목이었다.또, 우리가 주변 사람들에게 언어에 관련된 심리 실험을 설계해 직접 해보는 과정까지 포함되어 있었다.언어학 보다는 언어를 이용한 '심리 실험'이 포커싱이 된 수업이기는 했다.단어와 의미, 심성어휘집과 어휘표제어, 점화 효과, 실험 설계와 실천 등 언어와 실험에 대한 내용이 전반적으로 들어가 있었으며, 나중에는 OpenSesame와 SPSS를 이용해 통계와 논문의 형태까지 작성하였다.이 때 나도 논문을 냈으면 뭐 하나라도 있었겠다 싶었다.당시 실험 내용도 나쁘지 않게 잡고 발표했어서 최.......

환경과 삶 [내부링크]

내가 이렇게 지각을 많이 했나 싶었던 과목.하지만 억울한 지각이었다..전공을 죽쓰고 교양킬러였던 나는 B+를 받았지만, 너무 아쉬웠던 과목이었다.중간, 기말, 과제 다 최상위 성적이었지만, 지각을 너무 밥먹듯이 해서 출석점수를 다 깎였다.당시 외부 프로젝트를 하던 것이 있었는데, 이를 하고 가면 어쩔 수 없이 지각이다.안 할수도 없었고 교수님께 따로 말씀드렸는데, 원래 지각이 누적되면 F를 먹지만 이 경우는 봐주겠다 하셨다.형평성을 위해 F를 안 주는 대신, 점수를 깎을 수 밖에 없고 이해하라는 답변이라 어쩔 수 없었다.환경학과 교수님께서 담당하셨던 과목이었고, 나사 프로젝트에 참여를 하셨던 분이라 그런지 나사와.......

웹프로그래밍 [내부링크]

학부때 웹프로그래밍 강의를 이제와서 리뷰 한 번 해보고자 한다.HTML5, CSS3, PHP, Java, JS, python 각 언어?들에 대해서 배웠고, 부트스트랩이나 플라스크 같은 내용,기술들이 나온 배경과 그 기술과 함께 배우면 좋은 개념들과 프레임워크까지 최소한 언급이라도 받았다.(AJAX라는 개념이 존재해서 페이지를 띄울 때 어떻게 되고.. 앵귤러, 리액트, 뷰를 통해 이렇게 꾸미고..)사실 지금 다시 하라고 하면 기억이 1도 안 날 것 같다.. 다시 참고자료 보면서 구현해야할 듯..지금은 컴퓨터를 바꿔서 플라스크가 안 깔려 있지만, 주식 내용을 실시간으로 받아오는 프로그램이었다.구조는 교수님께서 거의 다 짜주신 내용물을 주셨고, 출력.......

오목 프로그램 서버/클라이언트 결과물 [내부링크]

서버는 C++ Winsock, 클라이언트는 C# WinForm으로 제작하였습니다.동빈님 강의를 들으면서 클론 프로젝트로 제작하였고, 회사측 요청으로 소스 비공개입니다.서버/클라이언트 연습용으로 따라 만들어봤습니다.

[20.10.18] 포스팅 기준 변경 [내부링크]

이전부터 계속 책이나 강의에 대한 저작권 문제가 있지 않을까 싶었고,마침 한 업체로부터 글을 내려달라는 연락이 와서 포스팅 기준을 변경하고자 합니다.개인적으로 변경하는 것이 맞다고 생각도 들어서, 그냥 이번 기회에 바꾸렵니다.앞으로는 대부분 연습이나 연구를 한 내용/결과물 위주로 포스팅을 할 예정입니다.기존에 올렸던 포스팅들 중에서 저작권에 침해될 법 한 내용이 있다면,모두 비공개로 돌리거나, 피해가 안 가도록 글을 수정할 것입니다.앞으로는 거의 일부 과목을 제외하고는, 정리 글을 올릴 생각이 없습니다.괜히 이런걸로 연락 받는 것도 꺼림칙하고 수정하기도 불편해서요.그럼에도 정리가 필요하다면 아마 짧막.......

교양 중국어 [내부링크]

학교다닐 때, 교양 중국어 수업을 들은 적이 있었다.뭐 당연히 쉬운 level의 중국어 회화 위주 수업이었지만.. 나에게는 많이 어려웠다...처음 수업을 듣기 전에 교수님께 문의메일로 '한 번도 중국어를 안 해봤는데 들어도 괜찮을까요?' 물어봤었다.당연하게도 들어도 충분히 따라갈 수 있다 하셨는데, 마지막 수업이 될 때에는 그 말이 그렇게 야속하더라.정말 열심히 수업듣고 외우고 했었는데, 막상 그 수업은.. 다 중국어를 배어왔던 사람이거나..중국 유학을 다녀온 학생이 있거나.. 중국인이 아예 수업에 있지를 않나.. HSK 고등급 취득자가 있거나..그냥 상대가 안 됐다.학교 특성상 그렇게 유학을 다녀오거나, 언어를 많.......

문화와 국가 브랜드 [내부링크]

재미있는 수업이었다.소심한 관종인 내게는 매 수업시간마다 질문에 참여해야 점수를 받는다는 압박감이 있었지만,결과적으로 참여형 수업이 잘 편성되어있다는 점에 있어서 많이 만족했던 수업이다.무엇보다 배울 점들이 아주 많고 수업 짜임새가 좋아서 재미있게 들었다.언제였지.. 수업을 마치고 다음 년도에 학교 축제가 있어서 축제 부스들을 돌아다니는데, 교수님께서 보이시더라.반갑게 가서 인사를 드렸고, 교수님께서도 기억난다고 이러저러한 얘기 주고 받았었다.음.. 생각하기엔 이런 분이 진짜 참 교수님 아니신가 싶을 정도로 아시는 것도 많았고 학생과 친근한 입장을 유지하시려고 노력하시던 모습이 인상깊더라.중간에는 아.......

스타트업 전략과 실습 [내부링크]

많이 정신없었지만 얻어간 것도 많았던 수업이었다.팀을 짜서 뭔가를 계속 하게 하고, 친구들도 많이 얻었다.뭐 이제는 정말 간간히 연락하고 인스타로 구경만 하는 사이기는 하지만 ㅋㅋSPSS 사용 방법도 여기서 배우게 됐었다.개인 CDP 분석도 해보고, 스타트업을 차린다면 어떤 상품으로 진행할 것 인지.그리고 그 상품이 실용 가치가 있는 지 직접 설문지를 만들어 주변에 돌려보면서 응답도 받아보고.받은 내용을 통계내기 위해 SPSS로 분석하고 통계도 내고 했었는데..(설문지 작성 전략 같은 내용도 배웠던 것 같다 ㅋㅋㅋ 참 치밀했던 것 같았음..)짧은 시간 내에 교수님께서 알려주시려는 내용들이 많아 오히려 교수님께서 다급하셨.......

언어와 광고 [내부링크]

학부때 들은 언어와 광고 수업은 감히 명강이라 말할 수 있겠다.애초에 교수님께서 그 분야의 인지도 있으신 분이셨고, 수업 자체도 임팩트가 있던 수업이라 배울 것이 많았다.퍼스의 기호학, 광고 기호학처럼 간단한 기호학부터 시작해서 언어로 어떤 식의 마케팅과 광고 효과를 줄 수 있는지.광고 표현과 카피, 광고학에 대한 내용, 광고/홍보에 쓰이는 음운론과 구조론, 음성학, 수사학, 적합성 이론 등.진짜 광고로 배울 수 있는 교양적인 측면은 다 배워 가는 것 같았다.예시도 깔끔한 예시를 주셔서 배우기도 쉬웠고 재미도 있었다.딱히 수업 자체에 몰입도가 있고, 같이 들었던 사람들도 동감하는 눈치여서 정말 조용히 수업에 집중.......

컴퓨터 개론 [내부링크]

음.. 말이 컴퓨터 개론이었지.. 그냥 C언어 배우는 수업이었다.절차지향적 프로그래밍을 배우는 내용이었고, 당연히도 C언어를 기반으로 문법 수업을 했다.전적대에서 간단하게라도 C언어와 python을 해봐서 수업이 많이 쉬웠고, 평점도 잘 받았다.다만, 조교님이 수업을 하실때에는 역시 한국 수업은 조교가 빠질 수 없나보다 싶을 정도로 불쌍했다.조교가 아예 두 시간 중 실습 한 시간을 수업해야 하는 형태는 솔직히 교육 형태에선 조금 기형적인듯..아무튼 지금 와서 생각해보면 조교님께서 열심히 알려주시고 다 좋았다.이제는 내가 C 계열 언어들 위주로 다루는 사람이 되었지만,당시 처음 접했을 때(전적대)에는 정말 어려웠던 첫 언.......

디지털 공학 기초 및 실습 [내부링크]

아무래도 우리 과가 컴퓨터 '전자시스템' 공학 이다보니, 회로 설계나 디지털 기초 부문을 다뤘던 것 같다.전공 필수여서 들었던 수업이었었나..? 했던 것 같고, Quartus와 실습키트를 사용해서 공부했다.이 키트 이름이 뭐였는지 기억이 나지를 않는다..아무튼 논리 회로도 작성하면서 LED 불이 들어오는 것이랑 seven segment로 숫자 띄우기 등..쿼터스 코드를 작성해보면서 하드웨어 다루는 연습들을 많이 해봤던 것 같다.솔직히 이산수학이나 디지털 논리를 중점적으로 배우는 사람들이라면 별거 없을 것이라 생각 들겠지.지금봐도 별거 아닌 것 같긴 하다.아무튼 하드웨어를 이렇게 직접적으로 다뤄볼 수 있는 기회가 많이.......

컴퓨터 프로그래밍 [내부링크]

학부때 들었던 컴퓨터 프로그래밍 수업 리뷰.음.. 말이 컴퓨터 프로그래밍이지 그냥 C++ 문법 수업이었다.우리 학교의 과목명과 살짝 동 떨어지는 두 개 과목이라면, 컴퓨터 개론과 컴퓨터 프로그래밍..컴퓨터 프로그래밍은 그나마 객체지향 이론을 알려주는 등의 내용이 있어 상대적으로 낫기는 하다.그냥 컴퓨터 개론의 연장선인 수업이다.애초에 수업 OT날 컴퓨터 개론 수업을 안 들은 학생이 있는 지 조사할 정도니 말이다 ㅋㅋ교수님과 조교 모두 동일한 분들이셨고, 역시나 조교는 열일을 하였다 ㅜ평점도 괜찮게 받았고, 전적대 수업 대비 굉장히 질이 많이 올라간 것이었지만 동기들은 맘에 안 들었나보다.역시 수업의 질은 상대적.......

글로벌 음식 문화 [내부링크]

여러 나라의 음식 문화와 재미있는 자료들을 많이 볼 수 있었던 수업.한 수업을 중간고사, 기말고사 기준으로 두 교수님께서 나누어 수업하셨는데..기말고사 담당하시는 교수님이 레전드였다.물론 교양 킬러인 나는 평점은 잘 받았고, 재미있는 내용도 많이 알게 되어서 좋았지만..기말고사 담당 교수님이 너무 막말 레전드셔서 그것밖에 기억에 안 남더라.학생한테 '놈', '년' 등의 단어를 쓰는 건 기본. 유캐하지 않은 본인 딴에는 재밌다는 성드립, 개드립.수업 하나는 잘 가르쳤는데, 저런 수식어들이 본인을 망친다는 것은 모르나보다.아무튼 에타(에브리타임)에 박제되시고, 욕을 하도 드셔서 능지처참 되셨다.학.......

빅데이터 처리 [내부링크]

조금 힘들었던 과목이다.어떻게든 따라가려고 해서, 매 수업 열심히 이해하려고 노력했었던 수업.. ㅜ빅데이터의 원리와 이론, 처리를 하는 방식과 실제 실습 등 여러 내용을 배우게 됐었다.선수과목에 빅데이터 과목이 있는데, 본인은 선수과목을 들은 적 없어 교수님께 수업을 들어도 좋을지 여쭤봤었다.RDBMS와 NoSQL은 차이가 있으니 RDB를 모르면 공부하고 오라는 말과 함께 들어도 좋다고 하셨다.역시 실리콘밸리에서 막 귀국해 첫 교수 생활을 하시는 거라서 정말정말 배울 점들이 많았다.현장에 대한 얘기나 실리콘밸리 회사들의 관계와 그 업종의 판매 전략이나 뒷얘기 등 재밌는 여담도 많았고..아무튼 빅데이터 처리이지만 전반적.......

자료구조 및 실습 [내부링크]

그냥 학부 때 배웠던 자료구조 과목을 리뷰하고 싶었다.당시에 중앙대 교수님께서 원정 강의로 오셨는데, 잘 가르치시긴 하셨었다.다만 자료구조와 알고리즘을 모두 다 가르치시려다 보니 조금 벅찬 감도 있었다.솔직히 지금 보면 별 거 아닌 간단한 자료구조들과 알고리즘들 이었는데, 당시에는 왜 그렇게 어렵던지..그냥 턱 끝에 물 찬 듯 공부하는 사람과 여유롭게 공부하는 사람의 마음가짐 차이인 듯 싶기도 하다.음.. 그때는 python이랑 C 둘 다 써서 구현했어야 했고, 매 수업마다 어떤 것으로 과제를 해야하는 지는번갈아서 하는 것이었기에 python, C 둘 다 아무리 못해도 기본 문법은 알고 있어야했다.결과적으로 평점도 괜찮.......

파이썬 프로그래밍 [내부링크]

학교에서 가장 날먹했던 과목 ㅎ전적대에서부터 코딩 동아리까지 파이썬을 쓰자는 분위기였어서 쉬운 감이 있었다.이중전공이나 부전공을 하는 학생들이 가장 많이 보였었는데, 적극적으로 질문하고 공부하던 모습이 보기 좋았다.아무튼 파이썬 프로그래밍의 문법 기초부터 다뤘던 수업이었고, 담당 교수님께서 진행하셨던 수업이었다.나는 별로 파이썬을 안 좋아하지만.. 처음 접하는 사람들은 쉬운 문법과 적용에 나름 만족했던 수업인 것 같았다.나는 그 편한 파이썬을 왜 안 좋아하냐면.. 인덴테이션 기준으로 나누는 것을 극도로 싫어한다.아마 지금 파이썬을 사용하시는 분들께서도 한 번은 접해봤을 인덴테이션 오류.빈칸과 탭을.......

게임 개발에서의 Git [내부링크]

다른 분야에서는 Git을 어떻게 활용하는지 정확히 모르지만,게임에서는 적어도 Git을 사요하는 방식이 크게 바뀌지는 않는 것 같다.(1) 어느정도 구조가 잡히 마스터 브랜치를 두고, 각 개발 파트별로 다른 브랜치를 만들어 작업한다.(2) 작업이 완료되면 풀리퀘스트 방식의 점검을 통한 브랜치 병합이나, 리베이스 방식으로 새로운 버전을 만든다.(3) 그런 방식을 진행하다 서버 오픈을 하게되면, 개발용 브랜치와 메인 스트림(마스터) 브랜치, 버그 수정이 되는 브랜치 등을 나누어 작업한다. (혹은 이 전 안정화된 마스터 버전을 릴리즈하고, 따로 브랜치를 나눠 작업)(4) 계속 파트별로 작업하여 병합한 버전을 사용자들에게 릴리즈 버.......

[C++] delete[] 는 어떻게 배열의 크기를 알고 있을까? [내부링크]

이 정보는 표준화된 정보는 아니라고 합니다.그래도 해당 구성과 동작 방식에 대해서 잘 아는 사람들의 설명/의견을 기반으로 정리한 글입니다.최신 글 보다는 내용이 더 많았던 08~09년대 글을 위주로 작성했고, 출처는 글 하단부를 참조바랍니다.(최신 글이랑 과거 글이랑 조금 내용이 다른 부분이 있는데, 자료가 더 많은 과거 글 기준으로 작성됨.)우리가 동적할당을 할 때, 위와 같이 사용할 배열의 크기를 지정해두고 사용한다.하지만 delete를 할 땐, 크기를 입력해주지 않아도 알아서 크기만큼 지워주는 의문점을 갖고 있다.어떻게 이게 가능한 것일까?1. 결론결론부터 말하자면, 내부적으로 동적할당된 배열의 크기를 저장하고 있어서.......

[Web] beautifulsoup으로 웹 크롤링 하기 (수정중) [내부링크]

학부때 동아리랑 웹프로그래밍 수업을 들으면서 python으로 beautifulsoup를 사용할 기회가 있었다.당시에는 급하게 과제하면서 사용하기 바빴는데, 가끔씩 진짜 크롤러가 필요할 때가 있었다.그래서 간단히 정리차 포스팅을 해보려고 한다.beautifulsoup는 사용 방법도 많이 쉬워서 따라하기 좋은 것 같다.(수정중)

간단하게 정리하는 데이터베이스 (수정중) [내부링크]

오랜만에 자료 정리를 하는데, 학부때 공부했던 DB 자료를 발견했다.기말고사 가서는 조금 손을 놨지만.. 그럼에도 선방했던 과목이라 기억이 남는다.정말 짧게 작성하려 하니, 자세한 DB 내용이 필요하면 추후에 작성할 포스팅을 참고하시길..(수정중)

[소켓 프로그래밍] C++/C# 간단한 게임용 소켓 프로그래밍 결과물 [내부링크]

패스트캠퍼스 '나동빈'님 강의 일부를 듣고 제작한 프로그램들이며,본래 아래와 같이 정리글이 있었습니다만, 저작권 관련 문의가 들어와서 글을 내렸습니다.결과물 위주의 포스팅으로 새로 작성하오니 양해 바랍니다.1. Winsock을 이용한 에코 서버/클라이언트2. Boost.Asio를 이용한 에코 서버/클라이언트3. C# WinForm을 이용한 오목 Client , C++ Winsock Server(멀티스레드 기반)4. OpenSSL을 이용한 패킷 보안 에코 시스템5. AWS 서버6. Ngrok 서버7. Wireshark와 Packet Sender를 통한 패킷 변조 및 공격8. 리팩토링을 통한 패킷 변조 방어<수정 필요>음.. 따로 작업하다가.......

UE4 블루프린트 첫 토이 프로젝트 [내부링크]

언리얼을 슬슬 공부할 때가 와서 유튜브 강의를 보면서 제작해보았다.블루프린트를 이용해서 제작하였고, 강의 내용에서 더 커스터마이징 하고 싶은 부분들은 수정해주었다.강의 자체가 워낙 짜임새있게 제작되어 쉽고 재밌게 배웠던 것 같았고, 아래 참조부분에 링크를 걸어두었다.총평을 하자면, 언리얼이 유니티 처음 배웠을 때 보다 훨씬 쉬운 것 같다.비주얼 스크립팅과 코드가 비교 대상이 아니긴 하지만, 접근성 측면에서도 언리얼이 훨씬 보기 좋았다.이제 C++로 코드 부분 건들여보고 있는데 이건 또 느낌이 다르겠지.아무튼 재밌는 토이 프로젝트였다.< 공부/참조 자료 >https://www.youtube.com/c/%EC%89%BD%EA%B2%8C%EB%B0.......

cocos2d-x를 이용한 3-match puzzle system [내부링크]

회사에서 단기간 인턴으로 진행했던 3-match puzzle 게임 시스템 제작 프로젝트입니다.간단히 툴과 시스템을 구축하고, 두 체계를 연동시키는 일에 중점을 두고 진행하였습니다.Using : C++, cocos2d-x, SVN, FileZilla CDNTeam Manager : 조종우Art Resource : Free ResourceClient Programming : 조종우, 장원상Tool Programming : 정호진제작 기간 : 1달 + 유지보수 기간회사에 피해를 끼칠 수 있는 소스코드, 내부 자료 처리 방식, 서버 운영 방식 등의내용은 영상에서 전부 삭제하거나 가려두었으니, 양해바랍니다.인턴 시기에 회사의 허락을 받고 올리는 자료입니다.회사의 소유 자산이므로, 소스 공개를 할 수 없습니다.나는 주.......

캡스톤디자인 python 교육용 게임팀 결과물 (Unity) [내부링크]

대학교 캡스톤디자인 시간에 팀 작업으로 만든 교육용 게임입니다.Using : C#, Unity, Unity Cloud, PhotonProject Manager : 조종우Design : 강건욱Programming : 조종우Graphic Resource : Asset Store제작 기간 : 2주팀 작업물 및 유료 리소스 포함 관계로, 소스 코드와 리소스 모두 공개를 할 수 없습니다.제일 바보같은 설계를 했던 프로젝트였다..효율적으로 만들고, 맨 마지막 레벨 부분에서는 일부 노가다를 했기 때문이다.시간에 쫓겨 당시에는 어쩔 수 없었다지만.. 음... 조금 아쉽기도 하다.당시 구조 작업과 게임 내 시스템 전반적인 제작을 맡았다.유니티를 공부한지 얼마 안 돼서, 갑자기 만드려니 잘 안 됐던 부분이.......

GameMakers 3기 '더 플래닛' 팀 결과물 (Unity) [내부링크]

게임 제작 연합 동아리 GM에서 팀 작업으로 만든 게임입니다.Using : C#, Unity, Spine, SourcetreeProject Manager : 조종우Design : 조종우Programming : 박재성, 장정인Art Resource : 심하림, 장정인팀 작업물인 관계로, 소스 공개를 할 수 없습니다.음.. 가장 아찔했던 프로젝트였다.내가 처음 기획으로 진행했던 프로젝트였는데, 정말 위기가 많았다.뭐, 결과적으로는 영상물을 뽑을 수 있는 정도까지 만들었지만..아무튼 기획을 10번 이상 바꿔서 내가 지칠대로 지쳐버린 프로젝트였다.기획자들이 제시한 메인 아이디어에 다른 프로그래밍/아트 직군 인원이 팀에 지원해서한 배를 타고 프로젝트를 꾸리는 방식이었다.처음에.......

[기획] 게임 튜토리얼에 대한 생각 [내부링크]

오늘 왁굳형 방송을 보는데 Mafia를 하더라.항상 튜토리얼을 어떻게 해야 식상하지않게 잘 풀어낼까 고민을 하는데, 오늘 Mafia를 보고 조금 놀랐다.사실 보면 단순해보이고 당연히 튜토리얼은 저런거 아냐? 싶을지 몰라도 필자는 굉장히 놀랐다.AAA급 시네마틱 게임들이 흔히 보여주는 튜토리얼이지만, 구성이 아주 마음에 들었다.보통은 [시네마틱 영상 -> 스토리에 따라 자연스럽게 게임 시작하며 튜토리얼] 의 방식으로플레이어들이 자연스럽게 게임 캐릭터에 몰입하고 튜토리얼을 배울 수 있게 해두는데,최근들어 튜토리얼의 난이도가 급상승하고 복잡한 키가 많아져서 튜토리얼이 방대해지더라.GTA와 같이 마피아도 사용할 수 있는.......

[게임 회사 취업] 2020년 도전기 [내부링크]

20.09.28 작성 됨.<20년 3월>나는 게임 클라이언트 프로그래머를 꿈꾸는 취준생이다.올 해 3월까지 게임 회사에서 인턴을 한 이후, 현재(9월)까지 6개월동안 백수 신분이다.회사로부터 권유인지 아닌지 애매한 제안을 뒤로한 채,'저는 더 공부가 필요해보입니다.' 라는 말과 함께 나와서 원하는 공부를 하고있다.3D 게임을 만들고 싶었지만, 그 회사는 2D를 다루는 회사였기 때문이다.(덕분에 정말 좋은 경험과 공부 많이했습니다, 감사합니다.)사실 내가 만들고 싶은 회사를 가고 싶어서 그랬다기 보다는진짜로 내 실력이 너무 부족해보였다.편입을 해서 급급하게 학교 공부를 따라갔지만,역시 처음부터 전공 과정.......

객체지향 추가 정리 (수정중) [내부링크]

* 추가적인 자료들을 보고 정리를 위해 적어둔 포스팅입니다.* 정리된 자료이므로, 설명을 하는 글이 아니며 원본 내용에 대한 각색이 많습니다.* 객체지향에 대한 기존 자료를 확인하고자 한다면, 객체지향 탭의 이전 자료들을 확인하십시오.<참고 자료>1. 객체지향의 사실과 오해1. 객체지향 관점 보통 객체지향을 설명할 때, 실세계의 모방이라고 소개를 한다.그러나 이는 설명의 편의를 위해 그렇게 말하는 것이지, 정말로 현실의 사물과 1:1 투영시키는 것이 아니다.방화벽 같은 개념도 소프트웨어로 넘어오면, 실재하는 대상을 투영한 것이 아니게 된다.따라서, 객체지향은 실세계의 모방이 아닌 새롭게 창조하는 일이라고 말하는.......

부모님 직장에서 부조리한 현실 [내부링크]

나의 부모님께서는 베어링 가게를 운영하신다.아버지가 한창 회사에 다닐 적, 베어링 관련 대형 물류회사의 영업직이라 이런 물건들을 다 잘 알았어야 했다.그래서 나중에 퇴사하신 뒤엔 잘 아는 베어링이라는 업종으로 어머니랑 같이 가게를 차리셨다.아무튼 여러 시행착오를 거친 뒤, 이제는 몇 십년을 운영하신 베테랑이 되셨다.하지만 이렇게 오랫동안 운영하신 베테랑들도 골치 아픈 일이 있나보다.몇 년 전 일이었는데, 모 회사에서 물건을 받아놓고 돈을 안 준다더라.그 쪽 환경을 모르는 나는 왜 선입금을 안 받았냐고 물어봤지만, 그 쪽 시장은 후입금 시스템이라더라.회사가 일단 물건을 받아서 기계를 만들고, 그 기계를 다른 회사.......

[WinAPI] 간단히 살펴보는 WinAPI 구성 (수정중) [내부링크]

WinAPI (Windows Application Program Interface) 는 윈도우즈에서 제공하는 함수의 집합체 (API)를 말한다.커널단의 직접적으로 건들일 수 없는 내용들을 API의 형태로 사용자에게 제공해주는 것이다.즉, 개발자는 직접 관여하기 힘든 시스템의 입/출력장치 및 하드웨어의 자원 등을 안전한 형태로 제공받는다.이를 이용해 간단하게 WinAPI 구성 요소를 살펴보려고 한다.소스코드는 아래의 링크를 참고하길 바란다.기본적으로 WinAPI 응용프로그램 템플릿을 생성하면 아래와 같다.framework.h 파일이다. 구버전에서는 stdafx.h로 되어있을 것이다.이 파일은 자주 사용하지만, 자주 변경되지 않는 표준 시스템 포함 파일 또는 프로젝트 특.......

[PC 문제 해결 사례] 부팅 후 메모리가 최대로 차는 현상 [내부링크]

최근에 가족 컴퓨터 부품을 중고로 교체해주었는데,부팅만 하고 윈도우가 뜨면 아무것도 안 했는데 메모리 사용률이 98%까지 올라가는 현상이었다.조금 귀찮아서 대충 봐주기는 했는데.. 그래도 해결은 했으니 참고하시길 바라는 맘에 올린다.한 두 달 전에 있던 일이라 사진은 없어서 그림으로 대체한다.[문제 상황 정의]문제가 있기 전 상황은 다음과 같았다.크롬으로 윈도우창을 몇 개만 띄워도 캐싱된 페이지 외에 다른 신규 페이지는 띄우질 못했다.경험상 이런 문제는 크롬 자체 문제보다는 인터넷 문제나 램 부족이 대부분이었다.하지만 인터넷을 확인했을 때 정상이었고, 램을 확인해보니 누수가 있더라.DDR3 규격에서 컴퓨터를 키면.......

[수익 모델] 국내에서 AAA 게임 만들기란? [내부링크]

지극히 개인적인 생각을 의식의 흐름대로 적은 글이다.20.09.09 현재 글 쓰는 시기에도 현업 개발자는 아니며,그냥 여러 게임 회사에 알바나 인턴을 해보며 경험하고 겪은 바 쓰는 것이다.뇌피셜의 글이니 신뢰할 수 없는 글이라는 것이다.결론부터 말하자면, '못' 만드는 것 아니라 '안' 만드는 것이고.당연히도 그 이유는 기술상의 문제가 전혀 아니다.시장의 특성과 그에 따른 수익 모델이 이유라고 생각한다.[이유]대형 게임사에도 가봤고, 중소형 게임사에도 가봤는데..현업자 분들께서 작업중인 내용물들을 보면 다들 정말 잘 만든다.기획자, 아트, 그래픽 디자이너, 프로그래머 등 모두 수준급 실력을 가췄었다........

Visual Studio와 GitHub 연동, 소스코드 관리 [내부링크]

[설치 및 연동]1. https://visualstudio.github.com/ 에 들어가서 VS Github 확장팩을 설치해 준다.2. 설치가 완료되면 Visual Studio에서 설치 확인을 한다.참고로 설치확인은 버전마다 다른 듯하다.필자는 VS 2019 버전을 사용 중이고, 여기서는 [보기 → 팀 탐색기] 에 들어가야 보인다.여기서 확인할 수 없다면, [팀 → 연결 관리] 에서 확인할 수 있다.3. 아래 사진과 같이 VS 우측에 '팀 탐색기'가 뜨게 되고, GitHub 항목에 연결을 통해본인 GitHub 계정과 연동을 해주면 된다.[VS에서 GitHub Repository 만들고 커밋/푸시하기]1. 만들기 버튼을 누르면 아래와 같이 로컬 저장소와 원격 저장소에 대한 생성창이 뜬다.저.......

[개인 조립 리뷰] 3700x/RTX2070super/32G 기준 조립 [내부링크]

약 한 달 전 쯤, 새로 컴퓨터를 맞췄다.기존 컴퓨터가 i5 3세대 모델을 쓰고 있었는데 아직 현역이라고 해도, 내가 하는 일은 힘들어 하더라.그래서 큰 맘 먹고 모아둔 돈 탈탈 털어서 새로 장만을 했다 ㅜㅜ[새로 맞춘 모델]부품이 다 오고 누드테스트를 해봤는데, 문제없이 잘 돌아갔다.그래서 그대로 조립을 했는데, 부품 교체만 많이 해봤지직접 전체를 조립해본 경험이 많이 없어서 상당히 애를 먹었다..그리고 인텔은 많이 다뤄봤지만 AMD는 아주 조금씩 달라서 살짝 당황했었다.아무튼 결과물이 이쁘게 잘 나왔고,나는 업자가 아니기 때문에 예쁘게 선정리를 할 수 없더라.예전에는 선정리도 기술이라는 것에 반신반의 했는데.......

공부한 책/인강(강의) 목록 [내부링크]

// 20.10.18 기준 : 아직 포스팅을 하지 않은 글입니다. (수정중)// 계속 업데이트 되는 글입니다. //해당 내용들은 제가 모두 구매해서 본 책이나 인강(강의)들입니다.나중에 복습할 때 참고하거나, 자료가 필요할 때 도움을 받으려고 정리해둔 것이며,절대 찬양 및 비하의 의도가 없는 지극히 개인적인 리뷰일 뿐이니, 구매는 개인 사견으로 판단하시길 바랍니다.그럼에도 저와 같은 공부 테크를 원하시는 분이 계실 수도 있으니, 개인적인 평가 및 추천도를 포함시켜 두겠습니다.당연하거니와 너무나도 좋은 글과 강의들이 많지만, 오프라인 강의나 세미나, 대학 강의, 기획형 강의, 개인 과외, 블로그 등 일회성이거나, 다시 정보를 찾.......

[C++] nullptr은 메모리 공간을 먹을까? [내부링크]

C style에서 NULL은 임의의 값을 결국 가지는 것이니까 메모리 공간을 먹지만,nullptr은 컴파일 등의 과정을 거치며 최적화를 통해서,시스템상 기억만 했다가 동적으로 힙에 메모리를 가져갈 것이라 생각했다.근데 질문을 해서 받은 답변으로는 '그냥 nullptr도 포인터만큼 공간을 먹는다.' 였다.뭔가 대단한 최적화 과정이 있거나 할 줄 알았는데, 사실 그렇게 복잡하게 돼있지는 않은가보다.뭐 생각해보면 그럴 법도 한 것이 포인터로 지정해둔 ptr2는 main 안에서만큼은주소를 저장하는 지역변수이니, 시스템의 포인터 크기만큼 지역 변수 메모리를 가져가는게 맞는 것 같다.시스템 상에서도 응용프로그램의 프로세스 메모리는.......

[C++] template 과 메모리 [내부링크]

그냥 갑자기 궁금해서 실험해본 내용이다.template을 통해 여러 타입의 객체를 생성해낼 수 있는데,이는 컴파일러가 각각 객체 타입에 맞게 클래스나 함수 등을 만들어내기 때문이다.그런데 진짜 그런지 궁금해서 실험해봤다.(정확한 실험은 아니고, 재미로 해본거라 부정확할 수 있음)int형 foo() 함수를 만들면 32KB.double형 foo() 함수를 만들면 34KB.float형 foo() 함수를 만들면 약 35KB.당연히 의미 없을 것이지만, 혹시 몰라서 같은 int형으로 여러번 써보아도 용량은 늘어나지 않는다.아마 함수를 공유해서 사용하고, 값은 메모리에 올리니 내부 텍스트도 최소화 한 것일 것이다.물론 아래와같이 위 템플릿을 int로 바.......

REST란? [내부링크]

주 전공이 네트워크나 웹이 아니다 보니,옛날에 학교에서 웹프로그래밍이나 네트워크를 배울 때살짝 의아하거나 애매한 개념이 있어서 정리가 필요해보여나름대로 정리해 포스팅을 해보겠다.1. REST REST는 Representational State Transfer의 약자이다.위키의 정의는 '분산 시스템을 설계를 위한 아키텍처의 한 형식'이라는데,솔직히 잘 와닿지가 않아서 더 찾아 보았다.나름대로 찾아본 바로는 '웹에서 데이터를 전송/처리하는 방법을 정의해둔 아키텍처'여기서 아키텍처는 '아키텍처 원리의 모음', '제약 조건의 집합', '프로토콜' 정도의 의미이다.따라서, '웹에서 무언가를 주.......

[수학] 참고 많이 했던 수학 블로그 [내부링크]

재미있게 어려운 수학 이야기를 잘 풀어내셨던 블로그를 소개하고자 한다.정말 재미있는 주제들을 많이 다루셨는데, 요즘에는 운영을 안 하시나보다.http://blog.naver.com/prologue/PrologueList.nhn?blogId=forfriend5어렵던 수학 공식들을 일상 생활에 있을 법한 일들과 연관지어 설명을 많이 해주셨고,가끔은 '엥? 이게 이렇다고?' 하는 재미있는 주제들도 많이 다루셨다.지금도 심심할 때 가끔씩 들려서 수학 이야기를 하나씩 보고는 하는데..음.. 조금 더 포스팅을 해주셨으면 하는 바람이 있다..점점 즐길거리가 사라진다는게 많이 아쉽다.

[C++] Arrow(->) 연산자 오버로딩 특이점 [내부링크]

며칠 전 검색을 통해도 나오질 않는 궁금증이 있었다.연산자 오버로딩을 할 때, 화살표(->) 연산자만 조금 다르게 쓰이는 것이 의문점이었다.이는 네이버 지식in 질문을 올려서 답변을 받았아 해결하였으며,정확히 내가 원하던 답변이라 공유하고자 한다.<질문 내용>위와 같이 코드를 작성하고, 접근연산자(->) 연산자 오버로딩 작동 방식을 보려고 했는데, 도저히 이해가 안 됩니다.접근연산자(->)를 통한 반환값이 Point* 형인 ptr을 반환하니 p1.operator->()->Print(); 로Point 클래스의 멤버함수를 접근할 수 있다는 건 이해가 가는데요.문제는 p1->Print(); 로 어떻게 Point 클래스를 접근하는 지 모르겠습니.......

PC 문제 해결 및 IT 제품(software, hardware) 공부/리뷰 [내부링크]

IT 탭에 처음으로 쓰는 글이다 ㅎ여기서는 PC 문제 해결 사례들과 IT 제품들 리뷰를 하려고 한다.사실 여태까지 살면서 해결해본 사례들이 꽤 되지만,요즘 PC는 예전처럼 문제가 많이 일어나지 않기 때문에어느정도 기억나는 선에서 최근에 해결한 사례들만 다뤄보려고 한다.IT 제품은 software 상품과 hardware 상품 둘 다 리뷰하고자 한다.아무래도 다른 사람들보다 IT기기를 자주 접하고(?) 사기때문에개인적으로 구매하거나 관심있는 상품들을 구매해서 리뷰해보려고 한다.

[소켓 프로그래밍] C++/C# 간단한 게임용 소켓 프로그래밍 정리 (4/6) [내부링크]

이번에는 다양한 서버와 프로젝트 보안에 관한 내용을 다뤄보면서,기존 오목 게임 서버를 공격해보고 보안하는 방법을 보고자 한다.우선은 이론적인 내용과 여러 서버의 형태부터 살펴보자.[공개키 기반 구조]1. 패킷 도청Server와 Client 통신을 할 때, 패킷들이 수많은 라우터와 컴퓨터를 거치게 된다.문제는 이 과정에서 주변 컴퓨터에 의해 도청당할 위험이 있다.암호화를 거치지 않게 되면, 서버와 클라이언트 있는 공격자가 패킷 도청을 통해패킷의 내용을 확인하여 공격을 수행할 수 있다.2. SSL (Secure Sockets Layer)패킷 도청을 막기 위해 SSL을 이용하여 다양한 프로그램 환경에서의 패킷을 암호화해야 한다.서버와 클라이언.......

[소켓 프로그래밍] C++/C# 간단한 게임용 소켓 프로그래밍 정리 (5/6) [내부링크]

전 포스팅에 이어서 프로젝트 공격과 보안에 대해서 다뤄보고자 한다.이번 포스팅에서는 주로 패킷을 통한 네트워크 해킹에 대해 다뤄보도록 하자.일부 그림은 패캠 동빈님 자료를 이용했습니다.[기존 오목 네트워크 게임 구성 분석]1. 서버/클라이언트기존에 우리가 만들었던 프로그램은 다음과 같다.'클라이언트는 C# 기반 .Net Socket', '서버는 C++ 기반 Winsock' 을 이용하였다.둘 사이에는 언어와 이용하는 소켓이 달라도, 소켓 통신이 가능하다.그 대신 둘이 주고받는 명령어 양식을 잘 맞춰주는 작업이 필요하다.(클라이언트 개발자와 서버 개발자의 협의가 필요한 부분)2. 서버기본적으로 서버는 다중 쓰레.......

[소켓 프로그래밍] C++/C# 간단한 게임용 소켓 프로그래밍 정리 (6/6) [내부링크]

이 전 포스팅에 이어서 게임 소켓 프로그래밍 프로젝트의 보안 부분을 더 다뤄보려고 한다.그리고 전체적으로 프로젝트를 리팩토링 하면서 게임의 형태를 지니도록 만들어보자.[기존 오목 네트워크 게임 구성 분석]1. 디컴파일러컴파일 기반의 프로그래밍 언어로 개발된 프로그램을 역으로 분석하는 도구.프로그램을 역으로 분석하여 전체적인 시스템의 동작 원리를 이해하는 목적으로 활용되며,기계어에 가까운 프로그램을 기존의 고급 프로그래밍 언어의 소스코드로 변형한다.다만, 디컴파일링을 한다고 해도 기존의 소스코드를 완전 복구 시키는건 어렵다.2. dotPeek디컴파일러는 여러 프로그램이 있지만, 이번 실습에서는 dotPeek을 사용.......

[소켓 프로그래밍] C++/C# 간단한 게임용 소켓 프로그래밍 정리 (1/6) [내부링크]

패스트캠퍼스 '나동빈'님 강의 일부를 듣고 정리한 내용입니다.저는 이미 네트워크와 소켓 프로그래밍을 공부한 바 있어서 자세히 다루지는 않겠습니다.이번 포스팅에서는 설명이 아닌 간단한 정리 위주로 작성하며,추후에 다른 포스팅에서 소켓 프로그래밍만 따로 깊게 다뤄보도록 하겠습니다.C++ 기반의 소켓 프로그래밍과 함께 간단한 예제와 오목 게임을 만들어 보겠습니다.자세한 코드 내용은 아래 깃허브를 이용 바랍니다.[ GitHub : https://github.com/oh-mms/Network ]일단은 용어 설명부터 하며 간단한 소켓 통신을 해보고,점차 사용할 기술을 확장시켜 게임을 만들어 가보는 방식으로 진행하겠다.[소켓 프로그래밍.......

[소켓 프로그래밍] C++/C# 간단한 게임용 소켓 프로그래밍 정리 (2/6) [내부링크]

이번 포스팅에선 Boost.Asio 라는 라이브러리를 사용해서,서버 & 클라이언트 프로그램을 짜보는 연습을 하겠다.[GitHub 코드]https://github.com/oh-mms/Network/tree/master/Boost.Asio[ C++ Boost.Asio ]C++로 다양한 플랫폼의 서버&클라이언트 모델을 구현할 목적으로 제작된 라이브러리.Boost의 라이브러리 중 일부에 해당하며, Asynchronous I/O (비동기 입출력) 프로그램을 포함해고성능 네트워크 프로그램을 쉽게 구현할 수 있게 도와준다.실제 파일 전송 시스템 및 게임 서버 구현 목적으로 다수 활용된다고 한다.1. 설치하단 링크에서 다운로드할 수 있으며,Boost.Asio는 Boost 안에 들어있으므로 boost를 설치하면 된.......

[소켓 프로그래밍] C++/C# 간단한 게임용 소켓 프로그래밍 정리 (3/6) [내부링크]

이제부터 간단한 네트워크 오목 게임을 만들어보려고 한다.오목 게임 클라이언트는 C#, 서버는 C++로 작업을 할 것이다.대부분은 나동빈님 강의를 보면 클론 코딩을 하였고,일부는 그대로 가져와 사용했다.[나동빈님 GitHub 코드]https://github.com/ndb796/CPP-Server-And-CSharp.Net-Client-Network-Gomoku-Game[클론 GitHub 코드]https://github.com/oh-mms/Network/tree/master/Gomoku-Client-Server-Using-Winsock[WinForm GUI Programming]Client는 C#으로 WinForm 앱을 통해 제작할 것이다.솔루션 이름은 Gomoku Game Project, 프로젝트 이름은 Client로 만들어준다.이렇게 프로젝트가 생성되면 아래와 같은 구성이 될 것이다........

가볍게 정리한 Git 과 Github (3/3) [내부링크]

1. 협업 시나리오한 개의 원격 저장소를 여러 로컬 저장소에서 열람한다면,즉, 여러 사람이 한 개의 원격 저장소를 사용하여 협업하는 환경이라면크게 3가지의 협업 시나리오가 존재할 것이다.세 번째 케이스인 '내 저장소도 수정사항이 있고, 원격 저장소에도 수정사항이 있는 경우'2가지 솔루션이 존재한다.(1) pull request (→ merge)(2) rebase* pull request (→ merge)pull request는 원격 저장소 입장에서 'pull 해달라는 요청'을 받는 것이다.따로 본인의 로컬 저장소에서 커밋을 해오다가 branch를 하나 따서 작업을 한 뒤,이 내용을 원격 저장소에 반영해달라고 pull request를 날리는 것이다.원격 저장소 관.......

가볍게 정리한 Git 과 Github (1/3) [내부링크]

inflearn의 강태공님 Git 강의를 바탕으로 정리한 내용들입니다.1. 버전유의미한 변화가 결과물로 나온 것.2. 버전 관리하나의 버전을 관리하는 과정에서(1) 협업이 필요할 수 다.(2) 되돌리는 과정이 필요할 수 있다.(3) 효율적인 백업이 필요할 수 있다.3. Git버전 관리(협업하기, 되돌리기, 효율적인 백업하기 등)의 기능을 가진 것이 Git이다.4. 버전이 만들어지는 과정하나의 버전이 되기까지 거쳐가는 세 개의 공간이 존재.(1) Working Directory(2) Staging Area(3) RepositoryWorking directory는 작업 공간이다.내가 코드를 작업한느 공간, 파일들이 생성/수정/삭제되는 공간이며.즉, 변경사항이 생기는 공간을 말.......

가볍게 정리한 Git 과 Github (2/3) [내부링크]

1. branch 실습git init을 통해 버전관리를 시작하면, 자동으로 master라고 하는 브랜치에 속하게된다.master branch는 다른 branch들이 뻗어나게 해주는 태초의 branch가 되는 격이고,한 번도 커밋이 되지 않은 repository라면 다른 브랜치를 생성할 수 없다.따라서 test.txt 파일을 하나 만들고 커밋까지 해준다.git branch 명령어로 현재 브랜치 상황과 현재 어떤 브랜치에 있는지 브랜치 목록을 확인한다.clear로 정리를 해준뒤, 다시 브랜치를 만들어보는 작업을 해보겠다.브랜치는 git branch [브랜치 이름] 명령어를 통해 브랜치를 만들 수 있다.git branch my_branch 를 입력해서 my_branch 를 만들면 아래와 같은 상황이 될 것이다.......

마케팅에서의 숫자 [내부링크]

옛날에 공부했던 내용이기도 하고,최근 들어 다시 이런 마케팅이 보이는 경향도 있어서 써본다.아주 단순하게 숫자 놀이로 광고 효과를 꾀하는 방식인데,가령 아래와 같은 예시를 들어볼 수 있다.OOO 슈즈, 오늘만 20,000원 할인 행사 중!명품 OOO, 5% SALE !사실 소비자들은 이런 카피 문구들로는 충분한 정보를 얻을 수 없다.그럴싸해 보이는 문구들이지만, 정확한 내용 기재가 없기 때문.전자의 예를 살펴보면, 중의적 표현이다.실제로 사이트에 들어가면 몇 가지 브랜치가 나뉠 텐데,1) 원래 5만원대 상품인데, 진짜 2만원 깎아줌.2) 원래 5만원 상품인데, 딱 2만원에 판매하고 있음.3) 원래 5만원 상품인데, 2만원대(29,800원)로 팔고.......

네트워크 정리 (1/2) [내부링크]

학부때 배운 '컴퓨터 네트워킹 하양식 접근'의 자료와미즈구치 카츠야의 '모두의 네트워크' 책의 내용을 참고하였습니다.전체적인 골자는 모두의 네트워크를 기준으로 했습니다.당장 필요한 부분들을 간단하게 정리하였습니다.추후 자세한 추가 내용은츠토무 톤 저 '성공과 실패를 결정하는 1%의 네트워크 원리'을 리뷰하면서 따로 포스팅할 예정입니다.1. 컴퓨터 네트워크컴퓨터 간의 연결을 컴퓨터 네트워크라고 한다.앞으로 컴퓨터 네트워크는 그냥 네트워크라고 부르겠다.2. 인터넷전 세계의 큰 네트워크부터 작은 네트워크를 연결한 거대한 네트워크.3. 대역폭일반적으로 네트워크에서 이용 가능한 최.......

네트워크 정리 (2/2) [내부링크]

<전송 계층>전송된 데이터는 수많은 회선과 라우터를 거치면서 여러 변수들이 생길 수 있다.물리, 데이터 링크, 네트워크의 3계층만 있다면, 목적지에 데이터를 보낼 수는 있다.하지만 중간에 패킷 오류가 발생할 수도 있고, 아예 전송이 안 될수도 있다.위 3계층은 데이터의 손상/유실 등에 대해 아무런 대처를 해주지 않고,이런 내용들을 방지하기 위한 계층이 전송 계층이다.즉, 전송 계층은 신뢰할 수 있는 데이터 전달을 위해 필요하다.전송 계층은 우선 오류를 점검하는데, 오류가 발생하면 데이터를 재전송하도록 요청하고,전송된 데이터가 어떤 프로그램에서 쓰일 것인지 식별하는 기능도 있다.통신을 하는 방식에 따라 2가.......

[설계] 구조 설계에 대한 생각 [내부링크]

발로란트라는 게임을 보다가 재밌는 생각이 떠올랐다.기존에 다른 캐릭터들은 그저 걸어다니는 기능밖에 없었는데,킬조이라는 캐릭터가 나오면서, 속박 기능이 생겼나 보더라.즉, 움직임을 담당하는 클래스 안에 이런 내용을 담아놨다는 건데..앞으로 어떤 캐릭터의 기획이 생길때마다 구조를 달리 할 수 없으므로,변화 및 수정에 대처가 가능한 구조를 미리 설계해야 할 것이다.만약 기존 게임의 구조가 캐릭터의 위치만 가지고렌더를 하는 방식이었다면, 저런 사항이 생길때마다수정하기가 쉽지 않을 것이다.근데 구조적으로 추상 클래스를 통해 관리가 된다면,다른 형태의 움직임 클래스가 생기더라도 교체나 변화를 주기 좋을 것이다.......

[C++] 참조자(Reference)도 메모리 공간을 차지할까? [내부링크]

결론부터 말하자면, Case by Case 인데,'메모리 공간을 차지하지 않는다' 라는 쪽이 매우 유력하다.참조자(Reference)는 컴파일러가 최적화를 하기 때문에,메모리 공간을 차지하지 않는다는 편이 매우 매우 유력하다.이렇게 컴파일 타임에 참조자를 모두 최적화 해버리기 때문에,메모리 공간을 차지하지 않는다는 것이다.실제로 상용 IDE나 컴파일러들도 이런 식으로 최적화를 하는 모양인가 보다.하지만, 그렇지 못한 컴파일러는 포인터와 같이,OS에 한하는 메모리 공간을 레퍼런스에게 준다는 썰도 있다.하지만, 어지간하면 이런 일은 없을 것이라고 보고..가급적 참조자를 사용해 효율적인 문제해결을 하는 것이 좋아보인다........

해시(Hash)와 보안 이슈(부르트 포스, 레인보우 테이블, 솔트) [내부링크]

해싱은 보통 패스 워드 같은 중요 값을 보안하고자 할 때 사용된다.해싱은 알다시피 해시 함수를 통해 일 방향적 반환값을 만드는 것이다.중요한 것은 일 방향적이라는 것이다.일 방향적이라는 것은 역함수가 없다는 말이고,해시 함수를 통해 나온 결괏값으로원래의 입력값을 찾을 수 있게 만들면 안 된다는 것이다.매번 입력값에 대한 결괏값은 동일해야 하다.그리고 해싱의 결괏값을 직접 이용한다기보다는내가 입력한 값이 결과 테이블에 존재하느냐? 의 위주로 사용이 된다.이래서 보안을 위한다면, 일 방향으로 나오는 해시를 이용하는 것이DB 자체를 털리지 않는 이상 아주 안전한 보안 방법이 되는 것이다.하지만 문제는 많은 사람들.......

방향/무방향 그래프(Graph)의 정리 [내부링크]

그래프는 여러 노드들이 갯수 제한없이 서로 연결된 상태를 말한다.즉, 트리처럼 한 노드에 다른 노드들이 묶여있는 경우고,각 노드들은 트리와 다르게 계층 구조가 아니다.구현 코드는 아래 링크를 참고 바란다.https://blog.naver.com/oh-mms/222045845403그림으로 살펴보면 바로 이해가 갈 것이다.각 노드들은 계층 구조를 갖지 않고,서로가 서로에게 갈 수 있는 '간선' 으로 이루어진 구조이다.간선은 영어로 Edge라고 하며, 노드와 노드를 연결하는연결선과 같은 느낌이다.그래프는 네트워크 구조/모델 이라고도 하고,누군가는 트리가 그래프의 한 모델 중 하나라고 하지만,원칙의 측면에서 서로 차이가 있다.(포함 관계가 맞.......

방향/무방향 그래프(Graph)의 구현 [내부링크]

<방향 그래프>원본 코드는 아래 링크를 참고해 주세요.https://github.com/oh-mms/Data-Structures/blob/master/Graph/Graph.h<사용 예시><결과><무방향 그래프>무방향 그래프는 별거 없다.오히려 방향 그래프보다 쉬운 편이기도 하다.그래서 코드보단 글로 짧게 설명하겠다.위 코드(방향 그래프)를 그대로 무방향으로 바꾸고자 하면,EDGE를 등록할 때, 양 쪽 노드에 서로에 향하는 방향성 EDGE를 추가하거나,그게 싫다면 EDGE들을 모아두는 EDGE 테이블을 만들어서 관리하는 식으로수정하거나 만들면 된다.옵션 선택의 차이이므로 필요한 시스템에 맞게 구현해서 사용하면 되겠다.

즐겨보는 스트리머 목록(?) [내부링크]

옛날에는 즐겨하던 국민 게임(롤, 서든어택) 방송들을 위주로 즐겨봤었다.그런데 요즘에는 인디 게임이나 다양한 게임을간접적으로 접하는게 공부도 되고 너무 재미 있더라.그래서 요즘 내가 즐겨보는 스트리머분들을 간단히 소개하고자한다.1. 우왁굳방송 온이 되고, 방종을 할 때까지 켜두는 방송은 왁굳님 방송이다.왁굳님 자랑을 하려면 할말이 많지만 말을 아끼겠다.방송 컨셉은 내가 느끼기로는 '게임 좋아하는 동네형' 정도인 것 같다.그래서 유독 시청자중 훈수나 친구로 생각하고 말하는 사람들이 많다.그래서 선을 못 지키고 넘어버리는 사람들도 꽤 잦은 편이다.주로 인디 게임 위주로 방송을 하시며,여럿이서 같이.......

[개발] 화면 분할식 배경 배치 [내부링크]

금일 우왁굳님 방송을 보다가 게임 배경에 이미지 배치가 잘못된 모습을 보았다.2D 게임 개발을 할 때, 흔히 볼 수 있는 의도되지 않는 버그였다.아마 2D 게임을 만들어본 사람이라면 알 것이다.배경의 경우, 저렇게 일정 부분 나눈 타일 형식으로 붙이는 게 효율이 좋다.이미지 로드는 씬 불러올 때 끝난 상황이고, 반복 횟수는 늘어나도 렌더 양을 줄여주니 이득이다.추측일 뿐이지만, 저렇게 이미지에 틈이 생기는 경우는 이미지 사이즈가 다른 것이겠다.5000 x 5000의 이미지를 100 x 100 사이즈로 2500장 나눠 붙일 때,한 두 군데에서 기존 이미지를 99 x 100 정도로 잘라서 저장하고 있던 것일 이유가 크다고 본다.실제로 실수해서 저장.......

[C++] 빌드, 전처리, 컴파일, 링크.. 자세히 알아보자 [내부링크]

코딩을 시작하면서, 가장 처음 배웠던 내용들인데,이해는 하겠다만, 그래도 왜? 라는 의문은 지울 수 없었고 납득이 안 갔다."소스 파일을 ~ 하면 오브젝트 파일이 ~ 링크.. 실행파일 ~"이런 말들 보다는 조금 더 이해가 되고 이런 과정이 타당하다는 이유를 원했고,여러 블로거분들의 글을 참고/정리해본 결과, 어느 정도 납득할만한 결론을 얻었다.그 내용들을 어느정도 자세히 풀어보고자 한다.아무래도 이런 계열이 C 계열 언어들에 해당하다 보니,C++을 기준으로 설명을 하겠다.코딩 책의 맨 앞을 살펴보면, 항상 cout 함수로 "Hello World!" 를 치게 한다.그리고 그 코드를 담는 파일명은 main.cpp (C라면 mai.......

[C++] 선언과 구현의 분리, 헤더 파일의 필요성 [내부링크]

컴파일 과정을 알면 궁금하기도 할 법한 내용을 가져왔다.개인적으로 많이 궁금해서, 열심히 찾아본 내용을 정리하고자 한다.일단 컴파일을 통해 cpp 파일이 obj 파일로 만들어지고,obj 파일들이 링크를 통해 실행파일이 되는 것은 알 것이다.그럼 cpp만 있음 됐지, 헤더가 왜 필요한가?헤더의 존재에 대해 알아보기 전에,선언의 필요성부터 알아보도록 하자.아래 간단한 코드를 먼저 살펴보자.위와 같이 코드가 있다면, 실행에 문제 될 것이 없다.그러나 아래처럼, sum 함수의 구현이 호출자보다 뒤에 있으면 오류가 발생할 것이다.이 경우, 컴파일러가 분석을 할 때 위에서 아래로 분석이 들어가는데,sum이라는 함수의 존재를 모르는 상.......

Unmanaged Code와 Managed Code, Native Language? [내부링크]

많이 헷갈리게 나눠진 개념에 대해서 잡아보고자 한다.보통 비교를 Native Code vs. Managed Code 로 비교를 하고.Native Code는 Unmanaged Code 라고도 부른다.(정확히 말하면, Native와 Unmanaged는 구분 돼야 함.)또, Managed Language와 Unmanaged Language 라는키워드로 비교를 하기도 하는데, Language 보다는 Code라는 표현을한국에서도, 외국에서도 매우 매우 많이 사용하는 것 같다.(사실 Language 라는 표현을 잘 안 씀.)하지만, 위의 비교와 내용들은 잘못된 점들이 꽤 많은 것 같다.Managed Code 부터 살펴보겠다.Managed Code 는 MS에서 만들어낸 개념이다.Managed 는 '관리가 된다'는 표현인데, Code가 관리가 된.......

원형 큐(Circular Queue) 구현 [내부링크]

template 방식으로 작성했으며,기존 방식과 살짝 사용 방법이 다를 수 있으나,기본적인 원칙은 동일하므로, 로직 파악 후 사용하시면 되겠습니다.원활한 출력 확인을 위해 <iostream> 헤더를 추가해 주세요.코드 내용을 원하시는 분은 아래 GitHub에서 확인 바랍니다.https://github.com/oh-mms/Data-Structures/blob/master/Circular-Queue/CircularQueue.h<사용 예시><결과>

트리(Tree) 정리 [내부링크]

자료 구조에서 트리(Tree)는 말 그대로 나무 같은 모양새를 하고 있다.정확히 말하면, 일반적으로는 나무를 뒤집은 모양이다.(사실 어떻게 그리냐에 따라 다름.)일단은 이진 트리를 기준으로 설명하겠다.개인적으로 쓸모 있는 트리 중 가장 기본적인 형태가이진 트리라고 생각해서 그렇다.이진 트리는 영어로 Binary Tree 라고 하는데,내 노드와 최대 2개의 다른 노드가 연결되었다고 해서 이진 트리이다.왜 굳이 한 노드에 2개를 붙이게 되는지는 밑에서 설명하겠다.각 노드는 아래 그림처럼 생겨먹었다.각 노드는 자기의 왼쪽 노드, 오른쪽 노드 주솟값을 가진다.그래서 한 노드에 최대 2개의 주솟값(다른 노드들)이 붙은 모양새가 된다.그.......

이진 탐색 트리(Binary Search Tree) 정리 및 구현 [내부링크]

이진 탐색 트리(Binary Search Tree)에 대해서 구현을 해보았습니다.원활한 출력 확인을 위해 헤더에 <iostream> 을 추가해 주세요.원본 코드를 원하시면 아래 링크를 확인 바랍니다.https://github.com/oh-mms/Data-Structures/blob/master/Binary-Search-Tree/BST.h[이진 탐색 트리(Binary Search Tree)]이진 탐색 트리는 탐색을 효율적으로 하기위해 사용되는 트리정도로 생각하면 된다.순서대로 정렬된 컨테이너에서 원하는 데이터를 찾기 위해 탐색의 폭을반 씩 줄여나가는 방법을 사용할 수 있게 만들어졌다.반씩 탐색 폭을 줄이려면 정렬된 데이터가 이미 들어가있어야 한다.기본적으로 컨테이너 안에 저장하는 아이디어는 &#.......

힙(Heap)과 우선 순위 큐(Priority Queue) 정리 [내부링크]

힙은(Heap) 완전 이진 트리의 일종으로, 우선순위 큐를 위해 만들어진 자료구조이다.따라서 완전 이진 트리라는 말과 우선순위 큐가 무엇인지 부터 알아보자.완전 이진 트리는 '모든 레벨의 노드가 순서대로 다 채워진 이진 트리' 라고 할 수 있다.단, 마지막 레벨은 왼쪽(작은 값)부터 순서대로 채워져만 있다면,모든 노드가 다 차있지 않아도 완전 이진 트리라고 할 수 있다.즉, 아래의 그림은 완전 이진 트리라고 말할 수 있고,아래의 그림은 완전 이진 트리라고 말할 수 없다.이를 배열로 구현했다고 칠 때 연속적인 메모리 할당이 이루어져야 하는데,아래쪽에 있는 그림은 중간에 빈 메모리가 있으니 완전 이진 트리가 아니.......

레드 블랙 트리 (Red-Black Tree) 정리 [내부링크]

시간이 나면 직접 정리하려고 했는데,분량이 너무 커질 것 같아 일단은 공부한 사이트들을 공유하는 걸로 해야겠다.추후 따로 정리해서 구현본과 함께 올리도록 하겠다.https://zeddios.tistory.com/237https://assortrock.com/87https://assortrock.com/88?category=635931

해싱(Hashing)과 해시 테이블(Hash Table) 정리 [내부링크]

해싱는 자료 구조라고 하기 보다는자료 구조를 제작하기 위한 한 방법이라 하고싶다.(해시 테이블이 진퉁 자료 구조라고 할 수 있다.)해싱을 통해 나온 여러 자료 구조는 STL을 다룰 때 소개하고,여기서는 해싱 자체에 대한 소개와 이슈에 대해 다루겠다.'해싱(Hashing)' 이란 데이터를 효율적으로 관리하기 위해,임의의 처리를 하여 새로운 공간에 자료를 보관하고 매핑하는 것이다.여기서 임의의 처리는 '해시 함수(Hash Function)'가 담당한다.그리고 그 결괏값들은 '해시 자료 구조 (Hashes)'에 저장이 된다.즉, 저장하려고 하는 값들이 들어오면,그 값은들 해시 함수를 거쳐서, 새로운 형태의 가공된.......

댕글링 포인터(Dangling Pointer) [내부링크]

댕글링 포인터란 허상 포인터라고도 한다.'이미 해제된 메모리를 가리키는 포인터' 정도로 요약할 수 있겠다.C++ 을 예로 들어보겠다.아래처럼 코드가 작성되어 있다면, 문제가 없을 것이라 생각할 것이다.그런데 다른 경우를 예로 더 들어보겠다.이 경우에도 별로 문제될 것은 없어보인다.그런데 아래처럼 a를 delete한 이후에 b의 값을 또 찍어보면?실행은 되는데, b가 가리키는 메모리에 가서 값을 가져오면,-572662307 와 같은 쓰레기 값을 가지고 있다.바로 여기서 포인터 변수 b가 댕글링 포인터다.이미 해제된 메모리를 참조하는 포인터라는 것이다.근데 사실 이렇게 간단한 예를 들으면,누가 초보처럼 댕글링 포인터를 써.......

[C++] const 위치에 따른 의미와 정리 [내부링크]

const 는 constant의 약자로, 상수라는 의미를 나타낸다.즉, 수정/변경 불가를 나타낼 때 사용한다.그런데 이 const가 어떤 위치에 있느냐에 따라서의미가 달라지고, 많이 헷갈리기 때문에 정리하고자 한다.많이 찾아봤는데, 설명하는 방식이나 설명도 다들 많이 다르고,나름대로 정리한 용어로 정의하는 것이 필요하기에내 나름대로 정의해 보았으니, 다른 글들과 표현이 조금 다를 수 있다.1. 변수 관련1-1. 일반 변수여기서 const int 랑 int const랑은 역할과 동작이 모두 동일하다.const int a 는 'a 의 int 형식의 값을 변경 불가'int const a 는 'a 라는 놈의 자체 값 변경 불가'라는 말인데, 이런 단순한 상.......

큐(Queue) 정리 [내부링크]

코드는 아래에서 확인하시길 바랍니다.큐 : https://blog.naver.com/oh-mms/222035300035덱 : https://blog.naver.com/oh-mms/222035340226원형 큐 : https://blog.naver.com/oh-mms/222035486620큐(Queue)는 그냥 들으면 조금 생소할 단어이다.게임을 통해 설명하면 이해가 빨리 되지 않을까 싶은데,롤, 오버워치, 배그 등 대전 게임의 경우로 예를 들어보겠다.보통 우리는 게임을 할 때,큐를 돌린다, 큐를 잡는다, 큐가 안 잡힌다.와 같은 용어들을 많이 사용한다.큐는 대기열 이라고 생각하면 쉽다.먼저 들어와서 기다린 놈이 먼저 나가는 방식이고,이를 FIFO (First In, First Out) 형식이라고 한다.그림으로 보면, 아래와 같다.보통.......

큐(Queue) 구현 [내부링크]

출력 확인을 위해 Queue 헤더에 <iostream> 을 넣어주세요.구현 코드가 필요하시면 아래 GitHub에서 구하실 수 있습니다.https://github.com/oh-mms/Data-Structures/blob/master/Queue/Queue.h<사용 예시><결과>

덱 (데크, 디큐 : Deque) 구현 [내부링크]

구현의 원활한 출력을 보기 위해 Deque 헤더에 <iostream> 을 추가해주세요.코드 내용은 아래 GitHub에서 구하실 수 있습니다.https://github.com/oh-mms/Data-Structures/blob/master/Deque/Deque.h<사용 예시><결과>

[C++] template에서 typename과 class의 차이는? [내부링크]

템플릿 프로그래밍을 할 때, 항상 궁금한 것이 있었다.typename과 class의 차이는?내가 결론부터 언급하는 것은 이례적이지만..정리하자면, 아래와 같다.1. typename과 class의 기능상 차이는 거의 없다.2. typename은 주로 중첩 타입을 명시할 때 쓰인다.3. 그 외에는 식별을 하기 위해 주로 사용된다.일단 typename과 class의 기능상 차이는 거의 없다.https://stackoverflow.com/questions/2023977/difference-of-keywords-typename-and-class-in-templates스택 오버 플로우를 참고하면,몇몇 특별한 경우를 제외하고는 동등하게 교환 가능한 키워드로 인식된다.하지만, 아래와 같은 경우 반드시 class 키워드를 사용해야 한다.템플릿.......

[C++] delete의 역할 [내부링크]

보통 new로 동적 객체를 만들어 사용하면,delete를 사용해 동적 객체를 삭제하라고 배웠을 것이다.그런데, delete가 진짜 삭제를 하는 것이 맞는가?delete의 역할이 무엇인지 알아보도록 하자.delete의 순정 역할은 동적 할당된 데이터의 삭제는 맞다.그런데 그 임시 객체를 날려버리는 것이지,사용하는 포인터까지 같이 날려버리는 것은 아니다.이해가 안 된다면 밑의 코드를 보자.결과를 확인해 보았는가?a도 포인터 변수, 결국 주솟값을 담고 있는 변수이다 보니임시 객체 new int 에 대한 주솟값은 여전히 가지고 있다.그리고, *a에서 확인해 볼 수 있듯이 임시 객체의 메모리만 반납하였다.이 과정이 delete가 하는 일인 것이다.(따라 쳐.......

리스트(연결 리스트, Linked List) 종류별 정리 [내부링크]

구현 코드 링크는 아래 링크에서 찾으시길 바랍니다.https://blog.naver.com/oh-mms/222032733036https://blog.naver.com/oh-mms/222034169253보통 C++에서 리스트라고 하면, 연결 리스트를 말한다.그리고 연결 리스트는 영어로 링크드 리스트(Linked List)라고도 부른다.링크드 리스트를 설명하기 전에 왜 필요한 지 알아보자.앞글에서 배열(Array)에 대해서 설명한 바가 있다.배열은 접근 속도가 가장 빠른 장점을 가진 반면,중간 데이터의 삽입/삭제 시 오버 헤드가 너무 컸고,저장 공간을 확장/축소하는데 쉽지 않았다.(불가능 하지는 않음)링크드 리스트는 이러한 불편한 점들을 개선해서 사용하자는 자료 구조이다.즉, 삽입/삭제 시.......

싱글 링크드 리스트(단일 연결 리스트, Linked List) 구현 [내부링크]

엊그제 OOP 형식으로 다 짜고 보니까쓰기도 불편하고, 모양도 안 예뻐서 그냥 다 지우고 새로 만들었다.STL은 아니지만, template 형식으로 작성하였다.코드 자체를 구하시는 분께서는 아래 GitHub 링크를 참조하시기 바랍니다.https://github.com/oh-mms/Data-Structures/blob/master/Linked-List/LinkedList.h참고로 링크드 리스트는 출력을 보기 위해 <iostream> 을 헤더로 가지게 했다.위 코드는 C++에서 기존 C와 호환성을 유지한다고 남겨둔 적폐..?friend를 일부 사용해서 작업한 내용이다.순수 객체 지향 적으로 작성했다고는 말 할 수는 없다.어차피 C++도 순수 객체 지향 언어는 아니지 않는가..?아무튼 앞서 포스팅 했을 땐.......

스택(Stack) 정리 [내부링크]

구현 코드 링크는 하단 링크에서 찾으시길 바랍니다.https://blog.naver.com/oh-mms/222033130326우리가 보통 롤 같은 게임을 할 때,'나서스 몇 스택 쌓았네', '드레이븐 스택이 초기화됐네' 등스택이란 용어를 많이 사용한다.스택은 매우 간단하면서, 효율적인 자료구조이다.스택(Stack)은 '쌓아 올리다'라는 의미를 가지고 있다.마찬가지로 자료구조에서도 스택은 쌓아 올리는 자료구조이다.이런 식으로 한 통 같은 곳에 데이터를 쌓아서 올리는 것이다.프링글스 과자를 생각하면 된다.과자를 집어넣을 때 아래에서부터 차례대로 과자가 쌓이고,과자를 꺼내려면 위에서부터 차례대로 꺼내야 한다.이게 바로.......

스택(Stack)의 구현 [내부링크]

템플릿 스타일로 구현하였다.STL에서 자주 쓰이는 컨테이너가 아니라서,STL 형식으로는 작성 안 했고, 단순 템플릿 형태로 작성되었다.코드 자체를 구하시는 분께서는 아래 GitHub 링크를 참조하시기 바랍니다.https://github.com/oh-mms/Data-Structures/blob/master/Stack/Stack.h참고로 스택은 출력을 보기 위해<iostream>을 헤더로 가지게 했다.<사용 예시><결과>

더블 링크드 리스트(이중 연결 리스트, Double Linked List) 구현 [내부링크]

STL 형식은 아니고, template 형식으로 짜여진 코드다.추후에 STL을 다룰 때, 구현부를 직접 짜는 부분에서 연결 리스트를 다루겠다.그때 이 포스팅에 링크를 걸고, STL 스타일 코드 구현을 다뤄보겠다.코드 자체를 구하시는 분께서는 아래 GitHub 링크를 참조하시기 바랍니다.https://github.com/oh-mms/Data-Structures/blob/master/Linked-List/DoubleLinkedList.hLinkedList 노드의 출력을 위해 내부적으로 <iostream> 헤더를 추가해주어야 한다.<사용 예시><결과>

클린 코드 (2/3) [내부링크]

요즘 추세는 함수를 작게 만드는 것이라고 한다.그 이유는 작은 함수일수록 가독성과 유지 보수에 좋고, 버그 발생 가능성도 적기 때문이다.(단위별 테스트에도 좋다.)전체 코드가 충분한 의도를 가진 좋은 이름이라면, 내부 함수 중 관심이 있는 놈만 찾아보면로직 파악을 더 빠르고 분명하게 할 수 있다.그렇지 않으면 전체 함수를 다 살펴보느라 많은 시간이 낭비될 것이다.그렇다고 너무 잘게 쪼개려고 하면, 잘못된 분리를 할 가능성이 있다.물론 함수의 개수도 많아져서 확인해야 할 양이 늘어날 수도 있다.결론적으로, 의미가 있게 분리를 해야 한다는 것이다.가급적 몇 가지 원칙을 지켜서, 의미 있는 분리를 통해최대한 다른 사람.......

클린 코드 (3/3) [내부링크]

마지막으로, 다른 팁들을 언급하고자 한다.1. 예외(Exception)C 에서는 예외 처리를 하는 문법이 없다.정확히 말하면 C 표준에서는 예외 처리 문법이 없어,-1, 0, 1 혹은 자체적 에러 코드를 만들어 보유하고 확인한다.에러 코드는 가독성을 심하게 해친다.일반적으로 코드를 읽을 때 의미를 어렵게 만들 뿐 아니라,구조상 에러 코드를 리턴하는 함수는 객체지향 구조를 깨고,바깥에서 직접 값을 확인하게 만드는 등 편의를 위해,구조를 깨도록 유혹하기가 쉽다.예외 처리는 함수를 가지는 곳에서 처리하도록 하는 게 베스트이기 때문이다.그렇지 않으면, 호출자에 에러 처리를 하느라 가독성을 한 번 더 헤치게 될 수 있다.만약 위의 예시.......

Visual(GUI) Programming [내부링크]

현대의 우리는 Console 단계의 프로그래밍 결과물을 보는 것 대신에,GUI로 된 그래픽 UI로 화면을 볼 수 있게 되었다.그 바탕에는 역시 WinAPI (대부분 윈도우즈를 사용하므로) 가 있고,WinAPI에는 그래픽을 출력해주는 GDI+, DC 와 같은 객체들을 가지고 있다.하지만, 개발자들은 역시 WinAPI의 그래픽을 다루는 것이 여전히 불편하였고,WinAPI를 기반으로 두고, 조금 더 Visual Programming을쉽게 만들어주는 MFC, QT 등을 탄생시켰다.(기반으로 뒀다는 건 들은 얘기라, 오피셜이 아닐 수 있음.)아무튼, Visual Programming을 도와주는 여러 프레임워크들이 등장하였고,이제는 선택해서 사용할 수 있는 수준까지 왔다.언어 별, 프레임.......

자료구조 개요 [내부링크]

자료구조는 CS(Computer Science)에서 가장 기본이 되는 중요 과목이다.말 그대로 '자료를 나타내는 구조를 정의한 것' 인데,보통 우리는 자료(data)를 표현하기 위해서 기본적으로 주어지는[int, float, double, bool, char, ...] 과 같은 기본 자료형을 사용했었다.하지만, 이러한 자료(data)의 크기가 커짐에 따라서덩어리 형태의 큰 '자료'를 표현할 수 있는 수단들이 필요하였고,그러한 큰 자료들을 관리하고 처리하는 '구조'를 설계했어야 했다.처음부터 정형화된 자료구조들이 나온 것은 아니었겠고,아마도 어떤 프로그램을 개발하다 보니 필요에 의해서 제작된 형태들일 것이다.그리고 그 형태들이.......

블로그 강의 포스팅 [내부링크]

처음에는 블로그에 Lecture 탭을 만들어강의 내용을 올릴까 생각을 했었다.근데 곰곰이 생각해보니,유튜브를 통해서 강의를 올리는 편이 더 좋겠다 싶었다.이유는 책보다는 역시 영상 매체로 얻는 정보가훨씬 습득력이 빠를 것이라는 판단이었다.보통 전공 정보를 전달하는 책들을 보면,분량을 늘리기 위함 인 지, 정말 설명을 위한 것인 지,알 수가 없는 설명이 너무 많았다.가령, 객체지향 책을 보다가도'다형성'이란 정의가 어떻고, 그 분류에는 뭐가 어떻고..하는 글로만 읽어서는 느낌이 오는 정보가 거의 없었다.추가적인 정보로 코드나 상황 등을 살핀 뒤,아, 이런게 다형성이고, 이럴 때 쓰이고, 언제 적용하면 좋겠.......

배열(Array) 정리 [내부링크]

가장 기초적이고 기본적인 배열(Array)에 대해서 설명해 보겠다.배열은 말 그대로 우리가 문법을 배울 때 사용했던 그 배열이다.따라서 전혀 어려울 것이 없지만, 장단점 정도는 알아두어야 한다.용어를 정리하면, 같은 형태의 데이터를 index를 통해 관리하는 컨테이너이다.형태는 아래와 같이 대괄호 [] (Slice operation) 를 통해 데이터를 구분하고,각 데이터는 고유 index (색인, 위치) 값을 통해 접근할 수 있게 되어있다.아래 그림처럼 메모리에 정해진 공간을 설정해두고,index 위치값을 통해 바로 직접 접근하는 방식이라서굉장히 빠른 속도로 접근할 수 있는 장점을 가진다.접근 속도가 빠르다는 장점도 있지만, 단점도 존재한다.이 단.......

객체 지향 프로그래밍 (3/3) [내부링크]

벌써 마지막 편 포스팅을 하게 되었다 ㅜ이번 편에서는 앞의 내용들을 정리하면서, 조금 더 부연 설명이 필요한 부분을 짚고,객체 지향의 실제 사용과 기타 원칙 등의 내용을 알아보겠다.[시리즈]SOLID 원칙은 글 하단부에 있습니다.1. 객체객체는 인스턴스화를 시키기 전의 용어이다.객체는 보통 객체를 사용하기 전에 '객체 생성용 틀'로서 객체라고 많이 한다.그래서 클래스 자체를 객체라고 많이들 하고,그 틀을 통해 나온 나온 객체의 결과물(혹은 생성물)을 인스턴스(Instance)라고 한다.언제 생성되고, 어떤 관점에서 보느냐에 따라 객체의 이름이 바뀌는 것이라 보면 된다.2. 객체 지향결국, 객체지향은 설계.......

스택 오버플로우, 개발자들의 질문 공간 [내부링크]

스택 오버플로우(Stack Overflow)는 개발자들 사이의 질문 공간이다.아래 사이트가 바로 스택 오버플로우 사이트이다.https://stackoverflow.com/그런데 여기서 질문을 할 때에는 조금 엄격한 수칙들이 있다.누군가 만들어둔 수칙은 아니고 보면 '당연히 그래야지' 스러운 것들이 대부분이다.질문/답변 에티켓이라고 보면 된다.이는 구글에 '스택 오버플로우 질문 방법' 등을 검색하면,아주 자세히 나오니 그 쪽을 참고하길 바란다.보통 대부분의 궁금한 질문들은 이미 올라온 경우가 많으니, 핑프하지 마시고.한국어 구글링 > 영어 구글링 > 스택오버플로우 순으로 검색한 후에없으면 질문하시기를..

객체 지향 프로그래밍 (2/3) [내부링크]

2탄으로는 심화 내용과 객체 지향 프로그래밍의 특징을 말하고자 한다.[시리즈]* 심화 내용객체는 단순히 Getter, Setter 함수로만 이루어진 클래스가 아니다.특정 기능을 수행하는 함수가 있어야 하고, 단순 Get/Set으로만 이루어진 클래스는객체라고 하기보다는 '데이터의 덩어리'로 보는 것이 더 맞는다고 본다.물론 단순 Getter/Setter에 접근 지정자가 필요해서그렇게 만들 수 있다고 하지만, 그저 데이터의 덩어리가 아닌지 확인 후데이터 덩어리라고 생각이 들면 struct로 사용하는 게 나을 수도 있겠다.접근 지정자는 객체 자체에 접근을 할 수 있는 권한 정도로 생각하면 되겠다.더욱 자세한 내용은 조금 더 밑에 가.......

IP에 대하여, 유동/고정 IP? [내부링크]

어릴적에 스팀 게임인 '카운터 스트라이크' 서버를 개설 하려고 개고생을 했던 적이 있었다.그 개고생의 원인은 내가 유동 IP를 사용하고 있었던 것.당시 모 커뮤니티에서는 유동 IP는 서버를 열 수 없다고 해서포기를 하려다가 무슨 방법을 통해서 서버를 열기는 했던 것으로 기억하는데..오랜만에 그 원인이 궁금해졌다.그래서 유동 IP와 고정 IP에 대해서 알아보고,정말로 유동 IP는 서버를 개설할 수 없는 지 알아보려고 한다.그리고 왜 서버는 고정IP를 사용해야하는 지 알아보자.IP 주소는 많이 거론되는 용어니, 어느정도 알고 있을거라고 생각한다.IP 주소는 Internet Protocol Adress를 뜻하고, 인터넷 규약 주소라고 말.......

[C++] UB와 POD의 존재 [내부링크]

https://stackoverflow.com/questions/61768352/what-is-the-difference-between-these-initializations?noredirect=1#comment109256360_61768352위 글은 전에 내가 스택오버플로우에 작성한 질문 글이다.이전에 여러가지 실험을 하다가 신기한 상황을 마주했는데,주변에 물어봐도 아무도 이유를 몰라서 스택오버플로우에 질문했다.질문은 다음과 같다.와 같은 간단한 코드가 있는데,이에 대한 출력값은 아래와 같다.이제, 멤버 포인터 변수로 'int* ptr = new int'라는 문장을 넣어서 결과를 확인해보고자 한다.결과는 아래와 같이 나온다.엥,,? 그저 멤버 포인터 변수 하나를 생성한 것 뿐인데..상관이 없는 다른 멤.......

모바일 게임 해킹과 보안 (3/3) [내부링크]

이쯤와서 생각해보니, 내가 알고있는 해킹 방법에 대해서 다 적어버린 것 같다.보안을 강화하자는 의미에서 쓴 글인데, 의식의 흐름대로 작성하다 보니..이론적인 측면을 언급했다가, 조금만 더 알면 바로 해킹을 할 수 있게 쓴 것 같더라.아무튼 마무리는 지어야 하니, 마지막으로 네트워크 해킹에 대해서 말해보도록 하겠다.솔직히, 네트워크 측면의 해킹과 보안에 대해서는 나도 아는 바가 많이 없다.하는 방법이 있다는 것을 알고 있었어도, 실제로 많이 찾아보거나 해본 적은 없다.왜냐하면, 이게 클라이언트 해킹이랑 네트워크 해킹은 정말 차원이 다른 수준이다..(잘 모르는 사람도 클라이언트 해킹은 쉽게들 따라하더라.. 근데 네.......

모바일 게임 해킹과 보안 (2/3) [내부링크]

이제는 코드 사이드 해킹에 대해서 알아보도록 하겠다.이는 직접 코드 단계까지 가서 코드를 살피며 해킹하는 방법이다.마찬가지로 보안을 하려면 해킹이 어떤 식으로 이루어지는 지 알아야 하니,해킹이 어떻게 이루어지는 지 부터 말해보겠다.내가 공부한 내용을 위주로 설명을 하다보니,일반적으로 사용하는 프로그램이 아닐 수도 있다는 점 양해 바란다.일단 '모바일 게임' 해킹이다보니, apk 파일이 필요하다.사이트를 통하던, 어플을 통해 추출하던 원본 apk 파일을 추출하고,apk 파일 안의 게임 파일들을 수정하는 것이다.(이제부터는 해킹 방법에 대해 자세한 언급은 않겠다.)음.. 모바일이니까 주로 Unity나 cocos2d-x를 이.......

클린 코드 (1/3) [내부링크]

해당 글은 '클린 코더'님 강의와 책 '코딩의 기술' 등 여러 책들과 블로그들 정보를 공부하고기반으로 쓰인 글이니, 비슷한 내용이 있을 수 있습니다.흔히들 좋은 코드는 읽기 쉬운 코드, 이해하기 좋은 코드 등으로 표현을 한다.왜 우리는 좋은 코드를 작성해야 하는가?내가 이해하기 쉬우면 그만 아닌가?아니다.협업을 위해서라면 다른 사람들 또한 이해할 수 있는 코드를 작성해야 한다.만약 평생 혼자 개발하는 개발자가 된다면, 이러한 내용이 필요 없을 수도 있겠다.하지만, 코드를 인수인계해줘야 하는 일이 있다면좋은 코드를 작성하는 방법을 알아야 좋다고 할 수 있겠다.이것이 클린 코드의 존재 이유라.......

모바일 게임 해킹과 보안 (1/3) [내부링크]

최근에 해킹과 보안 관련된 강의를 듣고 공부를 한 후에,여러 실습 과정을 통해 해당 글을 정리하였다.이 글은 게임 해킹 자체를 알려주는 글이 아니고, 보통의 해킹 방법을 공유하면서개인적으로 생각하는 대처법이나 대안을 공유하는 글임을 알린다.다시 한번 말하지만, 모바일 게임 해킹 방법 자체는 공유를 할 생각이 없다.해킹이 어떤 식으로 이루어지는지 알아야 보안을 할 수 있으니, 해킹부터 소개하겠다.적어도 내가 알기로는, 게임 해킹 방법이 3가지 있다.1. 메모리 해킹2. 코드 사이드 해킹3. 네트워크 해킹상대적으로 난이도는 1번이 제일 쉽고, 3번이 제일 어렵다고 생각이 든다.(개인적인 의견)먼저, 메모리 해킹부터.......

객체 지향 프로그래밍 (1/3) [내부링크]

Iusse 탭에 올리는 정리글은 강의용이 아닌 개인적인 정리를 위한 한 글이라,그림도 없고, 다소 읽기 어려울 수 있습니다.[시리즈]1. 객체우선, 객체란 무엇일까?그 전에 '객체 지향 프로그래밍'은 영어로 Object Oriented Programming (OOP) 이라고 부르니, 우리는 한국말로 번역된 '객체, 개체'보다, Object라는 단어의 의미를 먼저 알아보도록 하자.Object는 '물건, 물체, 대상' 정도로 해석이 되고 있으며,객체라는 단어는 국어 사전에서 '대상' 정도로 통용되고있다.무언가 '대상'으로써 지정을 할 수 있으면, 그것을 Object라고 부른다고 생각한다.(뇌피셜이긴 하지만, 거의.......

HTTP/2 는 무엇인가? [내부링크]

학부때 HTTP 1 시리즈와 HTTP 2가 어떻게 다른지 조사하는 과제가 있었다.큰 비중을 차지하던 파트는 아니었지만..당시는 교수님 설명을 듣고, 많이 놀랐던 파트고 현재 계속 쓰이는 기술이니 정리를 한 번 해보겠다.1. HTTPHyper Text Transfer Protocol의 앞 글자만 딴 형태로,일단 HTTP는 웹에서 정보를 주고받기 위해 정해둔 프로토콜이라고 할 수 있다.웹을 통해 정보를 교환하려면 HTTP라는 규칙을 따라야 한다.이러한 규칙이 있어야 서로 다른 규칙을 하나로 통합해서국제적으로 동일하게 통신을 할 수 있기 때문일 것이다.이건 나의 뇌피셜.2. HTTP 1.1과 HTTP 2 각각의 특징과 차이점HTTP 2는 HTTP 버전 2라는 뜻이다.그런 이유로.......

About [내부링크]

[전공][툴을 이용한 제작 경험][기술 스택][대내/외 활동 및 기타 경험][기타 경험]현재는 3D 프...

블로그를 새로 차렸다. [내부링크]

전에 원래 계정으로 2013년부터 블로그를 운영한 적이 있다.정보 공유나 일상, 게임 등에 관한 내용을 소통...

[기획] 게임 속 튜토리얼 [내부링크]

결론이 없는 그냥 생각을 정리한 글이다.예전에 게임 연합동아리를 하면서 내가 기획했던 게임이 있었다....