프로그래밍 공부

전체 글 700

카테고리 설명
프로그래밍 공부하는 블로그
  • malloc은 데이터의 동적할당을 이루어지게 한다. 데이터 범위 동적할당을 이루어지게 하여 펑션단위에서 배열을 만들어서 포인터로 리턴을 해줄 수 있다. 이러한 방법을 통해 더 쉽게 데이터범위를 지정하고 주소값을 반환할 수 있어 코드를 작성 할 때 편리하게 쓸 수 있다. 그러나, malloc은 데이터 할당 이후에 데이터를 free로 날려주어 데이터할당을 종료해주어야 낭비되는 메모리가 없이 최적화 되게 동작시킬 수 있음으로 이에 유의하여 작성해야 한다. 밑 코드 예시를 확인해보자. free 함수를 사용하여 데이터 할당을 종료시켜주어야 한다. 위 FREE는 #define으로 명령어를 만들어서 동작시키게 만들었다. 그는 밑과 같다. 이러한 데이터할당 방법을 사용하여 free로 데이터를 날려주고 주소값을 NULL..

  • Funtion을 선언하고 해당 Fundtion의 주소를 사용해서 참조할 수 있다. 어떠한 배열이나 int형 같은 형태에 주소값을 참조할 수 있음을 알 것이다. 그렇다면, Function에도 주소가 있을것이고 그 주소를 참조하여 주소값에 있는 Funtion을 실행할 수 있을것이다. 이러한 Funtion주소를 실행하는법을 알아보자. Funtion pointer는 왼쪽부터 읽으면, 펑션에 생성된 리턴값을 받아올 데이터를 가리키는 형변환을 이루어지게 해주어야하고, (*compute) 라는 변수명 을 지정한뒤, 포인터 임을 지정해준다. 그리고 (int, int)형을 데이터 받아온다는 매개변수를 선언해주고 NULL로 초기화해준다. 실행 예시를 한번 보자. 직접 변수를 선언하고 포인터 위치에 함수의 주소를 지정하고 ..

  • Union 은 다양한 자료형을 한대 묶어서사용하는, 구조체처럼 사용한다. 스트럭쳐는 내부에 데이터들이 각기 다른공간에 들어가있는 특징이 있다. 그러나 Union은 다양한 데이터가 하나의 데이터공간을 활용하여 연결되어있다. 코드 예시를 살펴보자. 구조체는 데이터의 가장 큰 사이즈로 데이터를 잡게 된다. 즉, 윗부분 구조체의 데이터가 1,4 이기 때문에 5가 되고 8이 들어가야하는데 8사이즈가 못들어가기 때문에, 다음줄 8바이트를 넣어서 8 ( 1 + 4 + 빈공간 3) 8 ( double) 이 되기떄문에 16바이트를 사용한다. Union은 8바이트가 뜬다. 이친구는 구조체와 다르게 맴버 각각이 자신의 공간을 따로 사용하는것이 아니다. 한줄 에 따로 (8byte 전부 같이 사용함) 8byte 의 공간을 할당..

  • 게임 기획자 출신 강연자 학원강사(입시생 수학 가르치는중) 진로 생각 후 게임업계 준비함. 학원다녀도 잘 안되는것 같아서 생각해봤더니 직접 한곳을 집어서 다 포기하고 프로그래밍만 공부하게됨. 하면서 면접준비, 포트폴리오 만듬 처음 - 스타트업 입사 리듬게임 만드는 회사에 취직함. 두달 다니고 퇴사함. 꼰대 선임때문에 많이 힘들었음. 그래서 큰 기업에 들어가려고 면접지원을 했으나, 면접절차만 한달 두달씩 걸려서 일이라도 해야겠다 싶어서 스타트업에 들어갔던것임. 그러다가 NC에서 이야기가 나와서 가서 면접보고 취업을 했다. 취직하고 나서 상시, 공채가 있는데 상시는 TO가 별로 없고 신규를 잘 뽑으려고 하지 않는다. 바로 일할 사람이 필요하기 때문. 입사하고 나서 가장 떨렸던 부분 = 내가 뭘 할 수 있을까..

  • 구조체의 주소값을 알아보자. 구조체는 배열과 다르게 연속적인 주소를 가지지 않는다. 구조체 안의 변수를 사용할 뿐 이지 연속될 이유가 없기 때문이다. 그러나, 구조체 안의 배열은 전부 연속된 주소를 가진다. 배열이기 때문이다. 구조체는 지역의 영향을 받는다. 일반 변수와 같이 절대값 선언을 하지 않으면 내부변수처럼 사용이 되어 지역밖을 벗어났을 경우 데이터가 소멸되기 때문이다. 예시는 밑과 같다. 구조체 안에 구조체를 다시 선언해줄 수 있다. 순서는 위부터 아래로 나타나며, 위에서 사용된 구조체를 아래에서 사용해줄 수 있다. 함수와 같은 성질을 가지는데, 밑에서 선언된 구조체를 위에서 선언해서 사용할 수 없다. 사용하기 위해서는 구조체를 위에서 사용하겠다는 선언을 해주어야 한다. 함수를 생각하면 편하다...

작성일
2023. 4. 5. 14:06
작성자
WDmil
728x90

0227_CLangauge.7z
0.29MB

728x90
작성일
2023. 3. 31. 16:22
작성자
WDmil
728x90

malloc은 데이터의 동적할당을 이루어지게 한다.

데이터 범위 동적할당을 이루어지게 하여 펑션단위에서 배열을 만들어서 포인터로 리턴을 해줄 수 있다.

이러한 방법을 통해 더 쉽게 데이터범위를 지정하고 주소값을 반환할 수 있어 코드를 작성 할 때 편리하게 쓸 수 있다.

그러나, malloc은 데이터 할당 이후에 데이터를 free로 날려주어 데이터할당을 종료해주어야 낭비되는 메모리가 없이 최적화 되게 동작시킬 수 있음으로 이에 유의하여 작성해야 한다.

밑 코드 예시를 확인해보자.

이런식으로 데이터 할당을 종료할 수 있다.

free 함수를 사용하여 데이터 할당을 종료시켜주어야 한다. 위 FREE는 #define으로 명령어를 만들어서 동작시키게 만들었다. 그는 밑과 같다.

이렇게 define으로 free후 주소값을 NULL로 초기화 시켜줄 수 있다.

이러한 데이터할당 방법을 사용하여 free로 데이터를 날려주고 주소값을 NULL로 없애주어야 한다.

 

NULL로 날려주지 않을 경우 데이터를 주소로 참조하려다가 할당실패로 정상값이 리턴되지 않거나 권한문제로

종료될 수 있어 코드의 오류를 찾기 힘들 수 있음으로 NULL로 항상 초기화 시켜주도록 하자.

define으로 사용하지 않을경우

free(ptr);

ptr = NULL;

을 항상 붙여서 사용하여야 한다.


동적할당에는 2가지 방법과 1가지 메모리 수정방법이 있다.

각각 malloc, calloc, realloc 이라고 하는데 예시를살펴보자.


malloc

malloc은 데이터 선언과 같이 포인터로 할당된 데이터주소값을 반환해주는 것이고. 기본적으로

void포인터로 만들어지기 때문에, int* 나 double*같이 형변환을 하여 포인터에 입력해주어야 한다.


calloc

calloc은 데이터할당 시 데이터선언과 동시에 메모리에 있던 쓰레기값을 0으로 초기화하여 사용할 수 있다.

그럼으로 malloc보다 더 안정성 있게 사용할 수 있다. 그러나, 인수를 2개 받아오기 때문에 사용에 불편함이 있을 수는 있다.


realloc

realloc은 이미 할당된 데이터의 범위를 바꾸어주는 역활을 한다. 위치포인터를 받아오고 size만큼 데이터범위를 재설정 해준다. 그럼으로써 이미 지정된 데이터범위를 수정할 필요가 있을 때 사용하게 된다.


이러한 데이터 동적할당의 방법이 있으나, 이러한 메모리할당을 사용함으로써 생기는 다양한 문제점이 있다.


내부 단편화 문제는 스테틱 구조를 살펴보면 알 수 있는데,

 

각각 메모리의 범위를 설정하는 방법에서, 가장 큰 메모리기준으로 작은 메모리를 하나씩 채워넣고 못넣을 경우, 공간이 조금 남아도 다음으로 넘기는 식의 메모리 할당을 사용한다.

 

예를들어 다음과 같다.

각각 사이즈가 다른 메모리를 스트럭쳐에 선언한다고 가정해보자.

 

1byte 3byte 남는 메모리(4byte)
8byte

 

그러면 위와 같은 방식으로 메모리를 할당해주게 되는데, 남는메모리가 생김을 확인할 수 있다.

이러한 잉여 메모리가 남는데 그곳을 활용할 방안이 없어서, 메모리 최적화 문제가 생길 수 있다.

이러한 메모리 내부에 단편적인 문제가 생겼다. 하여 내부 단편화 문제 라고 한다.


외부 단편화 문제는 내부 문제를 내부 단편화 문제라고 하듯, 저장된 메모리의 외부에서 발생하는 문제를 말한다.

 

메모리에 데이터가 저장될 때 OS가 임의적으로 포인터 위치를 배정하여 저장하게 되는데, 중간중간 메모리 데이터의 공간이 남아있는데도 불구하고, 저장해야하는 데이터의 사이즈가 공간보다 클 경우 그곳에 저장하지 못함으로써 낭비되는 공간을 이야기한다.

 

예를들어 다음과 같다.

1byte 메모리 저장공간에 어떠한 데이터 3개를 저장한 뒤 한개를 삭제하고 3byte를 저장하려고 한다 가정해보자.

 

1byte 1byte 1byte

위와 같은 방식으로 저장될 수도 있고 아닐수도 있지만, 이렇게 저장되었다고 가정하고 해보자.

 

중간에 1byte를 지웠다.

1byte   1byte

위와같이 될것이다.

 

이번에 3byte를 저장하려고 해보자.

3byte
1byte [3byte는 큼 으로 들어갈 수 없음!] 1byte

byte사이즈가 다르기 때문에 데이터가 들어갈 수없는것을 직관적으로 확인할 수 있을것이다.

그렇다면 이것이 저장되려면 다음과 같아야 될 것이다.

 

1byte 잉여공간 1byte [ 3byte ]

 

위와같이 잉여공간이 남는것이 데이터메모리의 외부에서 발생함으로 외부 단편화 문제 라고 한다.


메모리 누수 현상은 매우 간단하다.

 

malloc이나 calloc같은 동적할당을 하고나서 데이터 할당 해제를 해주지 않아서 발생한다.

컴퓨터는 할당된 메모리가 사용되는지 아닌지을 알 수 있는 방법이 사용자가 직접 알려주는것 말고는 알 수 없다.

이 메모리가 지금당장은 사용되지 않는다고 해도 나중에 사용될수도 있는것 아닌가? 그래서 메모리를 할당해주고나서

이 메모리를 사용하지 않는다고 컴퓨터에 알려주어야 한다.

 

이러한 과정을 거치지 않으면 할당해준 메모리 사이즈 만큼을 활용할 수 없음으로

 

만약, 계속 반복되는 코드를 동작시켰을 때 메모리를 할당만 해주게되면 언젠가 메모리사이즈 부족으로 오버플로우 가 발생하여 컴퓨터가 멈추게 될것이다. 할당해줄 수 있는 메모리가 없어지기 때문이다.

 

메모리를 내가 짠 프로그램만 사용하는것 이 아닌 OS나 다른 기반프로세스도 사용해야 하기 때문에 메모리가 다 차버리면 큰일이 난다!

 

이러한 형태가 세면대 같은 수도꼭지를 잠그지 않아서 계속 물이 사용되는 경우와 비슷해보이지 않는가?

 

우리는 이런 할당해제를 잘 해주지 않음으로 서 발생하는 메모리의 낭비현상을 메모리 누수 현상 이라고 한다.

728x90
작성일
2023. 3. 30. 15:51
작성자
WDmil
728x90

Funtion을 선언하고 해당 Fundtion의 주소를 사용해서 참조할 수 있다.

어떠한 배열이나 int형 같은 형태에 주소값을 참조할 수 있음을 알 것이다.

그렇다면, Function에도 주소가 있을것이고 그 주소를 참조하여 주소값에 있는 Funtion을 실행할 수 있을것이다.

이러한 Funtion주소를 실행하는법을 알아보자.

이러한 x와 y를 더해주는 Add와 빼주는 Sub을 선언하여 Funtion을 활용한다고 가정해보자.
포인터 펑션에 데이터를 지정하는걸 보자.

Funtion pointer는 왼쪽부터 읽으면, 펑션에 생성된 리턴값을 받아올 데이터를 가리키는 형변환을 이루어지게 해주어야하고, (*compute) 라는 변수명 을 지정한뒤, 포인터 임을 지정해준다. 그리고 (int, int)형을 데이터 받아온다는 매개변수를 선언해주고 NULL로 초기화해준다.

 

실행 예시를 한번 보자.

직접 변수를 선언하고 포인터 위치에 함수의 주소를 지정하고 포인터를 출력하게 된다.

switch로 입력값을 받아와서 Add와 Sub로 지정하여 주소값을 할당하고 주소가 지정된 데이터의 입력값을 넣고 출력하게된다.

728x90
작성일
2023. 3. 29. 15:54
작성자
WDmil
728x90

Union 은 다양한 자료형을 한대 묶어서사용하는, 구조체처럼 사용한다.

스트럭쳐는 내부에 데이터들이 각기 다른공간에 들어가있는 특징이 있다.

그러나 Union은 다양한 데이터가 하나의 데이터공간을 활용하여 연결되어있다.

 

코드 예시를 살펴보자.

각기 구조체의 데이터 사이즈를 확인할 수 있다.

구조체는 데이터의 가장 큰 사이즈로 데이터를 잡게 된다. 즉, 윗부분 구조체의 데이터가 1,4 이기 때문에

5가 되고 8이 들어가야하는데 8사이즈가 못들어가기 때문에, 다음줄 8바이트를 넣어서

8 ( 1 + 4 + 빈공간 3)

8 ( double)

이 되기떄문에 16바이트를 사용한다.

 

Union은 8바이트가 뜬다. 이친구는 구조체와 다르게 맴버 각각이 자신의 공간을 따로 사용하는것이 아니다.

한줄 에 따로

(8byte 전부 같이 사용함)

8byte 의 공간을 할당하고, 그 공간을 모든 변수가 공유하면서 사용하게 된다.

주소를 찍어보면 어떻게 나오는지 알아보자.

위와 같이 나오는걸볼 수 있다.

각기 구조체가 다른 주소값을할당받는것을 볼 수 있고

Union은 각기 같은 주소의 첫 값을 받아오는걸 볼 수 있다.

유니온에 데이터를 넣었을 때 어떤식으로 나오는지 확인해보자.

유니온에 각각 데이터를 입력하면 위와같이 나타나게 된다.

전값이 있더라도 더 상위의 데이터값이 들어가게 되면, 전 값의 위치데이터에 다른 값이 덮어씌워지기 때문에

전 값을 출력하더라도 이상한 값이 나오게 된다.

 

즉, Union에는 우선순위가 존재한다.

Union의 우선순위는 가장 최근의 값에 기반한다. 전 값은 덮어씌워진다. 라는 걸 알 수 있다.

 

유니온의 사용 예시를 살펴보자.

같은 데이터 공간을 사용해도 다른 데이터가 출력되는것 을 알 수 있다.

 

이렇게 사용함으로써 스트럭쳐와 다르게 데이터 공간을 절약 할 수 있다.


 


Enum을 사용할 수 있다. Enum은 define처럼 동작하는 별명부여 방식인데,

define과 다르게 내부의 데이터주소를 자동으로 부여해주는 기능이 있다. 예시를 살펴보자.

잘린부분은 이런식으로 증가한다. 라고 써져있다.

즉, enum은 define을 다른방식으로 사용할 수 있는것 임 을 알 수있고,

enum에 데이터를 입력하여 더 쉽게 별명을 지정하고 직관적으로 프로그래밍 할 수 있다.

728x90
작성일
2023. 3. 24. 18:01
작성자
WDmil
728x90

게임 기획자 출신 강연자

 

학원강사(입시생 수학 가르치는중) 진로 생각 후 게임업계 준비함.

학원다녀도 잘 안되는것 같아서 생각해봤더니 직접 한곳을 집어서 다 포기하고 프로그래밍만 공부하게됨.

하면서 면접준비, 포트폴리오 만듬

 

처음 - 스타트업 입사

리듬게임 만드는 회사에 취직함. 두달 다니고 퇴사함. 꼰대 선임때문에 많이 힘들었음.

그래서 큰 기업에 들어가려고 면접지원을 했으나, 면접절차만 한달 두달씩 걸려서 일이라도 해야겠다 싶어서 스타트업에 들어갔던것임.

 

그러다가 NC에서 이야기가 나와서 가서 면접보고 취업을 했다.

 

취직하고 나서 상시, 공채가 있는데 상시는 TO가 별로 없고 신규를 잘 뽑으려고 하지 않는다.

바로 일할 사람이 필요하기 때문.

 

입사하고 나서 가장 떨렸던 부분 = 내가 뭘 할 수 있을까가 가장 걱정됨.

특정무언가를 시키지를 않고 LLN이라는 프로잭트 3년간 일함 처음 입사해서 무언가를 걱정하지 않아도 된다.

 

포트폴리오랑 다른 그런 일을 하게된다. 절차적으로 무언가를 하지 않고 기획대로 넘어가게 된다.

 

예를들어 스킬을 만들 때

아트팀 대화, 기획팀 대화, 설계팀 대화 등등 여러가지 고려할 점이 많기 때문에 기획서가 중요하다.

 

일 할때 프로그래머가 바쁘다고 생각할 수 있는데, 그렇지는 않고 사실 팀바이팀 이다.

어떤 팀은 바쁘고 어떤팀은 일이 야무지게 많고 야근도 하고 그렇다.

 

NC소프트 안에서 HR에서 퇴사하기 전에 머물 수 있는 곳 이 있다. 이곳에서 살펴보면서 다른곳을 들어가고 싶으면

그 팀으로 들어가고 아니라면 나가라 이런식임.

 

지금은 프로잭트 G라는 팀에 들어가서 근무중이다. 이곳은 전에 일하던 팀과는 다른 근무를 진행하더라.

 

일하면서 힘들었던점. 사람과 소통이 제일 힘들었다.

일반적인 소통이 아닌

기획자, 프로그래머, 디자이너 각각의 대화의 소통이 힘들다. 이유는 서로 말하는 단어가 다르기 때문에 소통이 매우 힘들다.

그럼으로 아트팀, 프로그래머, 기획자 등등의 대화할 수 있는 소통용 단어를 이해하고 기억해두는것이 도움이 될것이다.

 

기획자 기준으로 이야기 하지만, 기획자는 모든걸 알아야 할 정 도는 아니지만 약간 대화하면서 쉽게 이해가 가능한정도의 단어 구사능력만 준비하면 된다.

 

취업하면서 많이 준비한것이 많은데 너무 많이 준비한것도 있다. 분산된 환경에서 준비하다보니 자기계발이 힘들어서 하나에 집중하는것이 더 나을것이다.

 

연봉을 가볍게 이야기하자면

공채는 큰 기업일 수록 연봉이 높은편이다. 노조가 있는곳이 연봉이 상승할 확률이 높다.


질문

 

신입으로 들어가면 어느정도의 적응기간을 거치냐?

 

답 : 인턴기간은 최소 한달 최대 3달? 약 2달정도의 수습기간을 주는데 실제로는 한달정도면 실제근무를 시작하게 된다. 들어가면 기획자 기준으로 게임만드는 회사기록을 읽게한다. 그리고 회사내부에서 담당하는 부서의 회사기록을 위주로 읽게시키고. 그 이후에 어떠한 쉬운 코딩을 시키게된다. 누구나 알 수 있는 할 수 있는 그런 채팅시스템, 길드가입시스템 그런 쉬운 일을 시키게 된다.

 

나는 주로 총쏘는 FPS같은 시스템을 기획을 진행했다. 전투시스템의 시스템을 기획하게 되었다.

내가 들어갈 때 에는 컨텐츠 기획자로 들어갔으나 시스템을 주로 하게 되어서 시스템기획을 하게 되었다. 무언가가 정해진것이 아니라 하다가 주로 하게 되는 무언가를 작업하게 된다. 사람마다 다르고 팀마다 다르고 프로잭트마다 다르기 때문에 쉽게 단언할 수 없다.


질문

 

프로그래머로 들어가려고한다. 프로그래머가 기획자랑 대화하게 되면 기획안을 받을 때 어떤걸 받게 되냐? 어떠한 문서를 받게되느냐?

 

답 : 예를들어 전투상태를 만드는 시스템을 만든다고 하면 전투시작지점, 연출지점, 전투방법 등의 시스템프로세스의 정의, 시스템이 동작하기 위한 플로우차트를 기획자가 넘겨주는 방식이다.


질문

현업하다가 신규 기획자의 포트폴리오를 보게 된다면 어떠한 점을 이야기 해주고 싶은가?

 

답 : 회사다니면서 경력 신입 둘다 뽑아보았다. 해본 기반으로 말을 해준다면, 면접을 보거나 서류를 보는 입장에서 생각해보면 보는사람은 일이 많아서 바쁘다. 그래서 서류를 깊게 보지 않는다 대충대충보게 된다. 어떤식으로 뽑게되냐면

포트폴리오의 양을 보게된다. 자신있는 포트폴리오의 2개 3개정도를 보고 문단구성이 잘 되어있는가? 논리적인 서술이 잘 되어있는가? 를 보게된다. 그 다음은 내가 이 사람을 대리고 일을 할 때 이사람이 나와 대화가 잘 통할건지 를 보게된다.

 

자소서의 경우는 사실 진짜인지 아닌지 알 수 없다. 자소서를 보는 이유는 그사람이 겪은 일을 기술하게 되는데 거기에서

잘 안보이기는 하는데 그 사람의 인성을 보게된다. 글을 보게되면 그 사람의 인성이 어느정도 보이는데 기계적인가 아니면 감성적인가를 잘 보인다. 기계적인 사람은 자소서를 쓸 때 감정이 안느껴진다. 인간적인거는 자신의 장점을 표현할 때 어떠한 사례를 써놓을 때 그러한 일을 느낄 때 감정을 위주로 표현하려고 한다.

 

그리봤을 때 자소서 포트폴리오의 질을 보게 된다. 중고신입과 신규신입의 차이점을 물어보는것 같은데 그건 잘 모른다.

다른 업에 있다가 오는 사람들이 생각보다 많다. 그런사람들은 경력직으로 잘 보지는 않는다. 사실 가장 중요하게 보는거는

그사람이 나와 일 할 수 있을까? 이걸 크게 고려하게 된다. 이것은 사실 보는사람도 모르고 쓰는사람도 모른다.

그래도 대중적이라는 표현이 있음으로 대중적으로 누구나 선호할 수 있는 사람, 누구나 일 할 수 있는 사람이 되보자 라는걸 어필하면 되는것이 아닌가? 라는 생각을 한다.


질문

프로잭트 하다가 무너지는 경우는 없느냐?

 

답 : 생각보다는 금방 무너지지는 않는다. 프로잭트를 하자! 팀을 모으게되면 진행하다가 대표마음에 들지 않는다고 해도

그 프로잭트가 무너지지는 않는다. 그러나 이건 다니는 회사가 돈이 많은지 아닌지가 중요하다. 스타트업같은 경우 에는

돈이 없어서 무너지는 경우가 많다. 그럴때는 큰 기업을 선망하게 된다.

 

사람들은 큰 기업에서의 경력을 아주 좋아한다. 스타트업에서의 10년경력 같은것은 크게 중요치 않을 수 있다. 그럼으로 큰 기업에서의 경력을 쌓는것이 중요할것이다.


질문

컨텐츠 기획자로 강의중인 학생이다. 과제를 부여받았을 때 이거를 얼마나 많이하는? 그러니까 면접보기 전 부여받은 과제가 얼마나 중요한지가 궁금하다.

 

답 : 그리 크게 중요하지 않다. 과제가 왜 중요한지를 생각해야하는데 내생각에는 그렇다. 포트폴리오를 봤을 때 무슨 담당으로 뽑아야지 라는 생각으로 보는데, 애매모호 할 때 그런 일을 할 수 있는지를 생각해서 과제를 내주게 된다. 그럼으로

 

그러한 과제를 제출하고 얼마나 잘 한지보다는 그 사람이 그 과제를 하면서 무언가를 더 보고 물어보고싶어서 내주는 경우가 많다. 그럼으로 크게 걱정하지 마라


질문

취업 준비 할때 참고해야할것

 

답 : 나도 잘 모르겠다. 그러나 내가 준비할 때 다른 강의도 다 들어봤는데 거기서 했던 수업방식에 따라 생각해보면,

매주 하나씩 두개씩 과제를 주었는데. 그 과제를 받아서 했을 때 과제를 하고 피드백받고를 반복하면서 사실 강의보다 과제에 대해 더 많은 시간을 할당하였다.

 

한달정도는 포트폴리오를 받았는데, 나는 포트폴리오가 3개 있었는데, 2개는 역기획서. 1개는 상상의 나라를 펼친 기획서 이다. 2개는 역 기획서 임으로 시스템 관련된걸 쓰게 되었는데. 이걸 쓰기위해서는 게임을 잘 알아야 한다.

 

이것을 잘 만들때는 게임을 잘 알아야 한다. 게임을 만드는것 임으로 게임을 많이 해보면 좋다. 내가 가고자하는 회사가 있다면 거기서 주로 관심을 가지는 분야의 게임을 많이 해보는것도 좋다.

 

공부같은 경우는 역기획서를 주로 작업하게 되었다. 그리고 다시보는것을 바로보지 않고 나중에 다시 확인하는 작업을 거쳤다.

 

포트폴리오에서 가장 중요한것은 봤을때 바로 이해가 가는지? 이다. 그래서 나중에 봤을 때 그것이 이해가 가는지 를 주로 보았던것 같다.

 

기간의 경우에는 스타트업을 들어갔 을때 준비기간이 4개월 정도 준비를 했었다. 그래서 길게 준비하지는 않았다. 공채로 들어가지는 않고 상시로 들어갔다. 서류통과하면 면접은 사실 통화 한번하면 통과이다. 내가생각했을 때 에는 운이 좋았던것 같다.

 

면접을 3번정도 봤었는데 NC도 두번정도 갔다.

 

스타트업 2개, 넥슨합격, NC도 합격했었다. 왜 NC를 갔느냐? 나는 넥슨에서 크레이지아케이드는 별로 하고싶지 않았다. 그래서 NC로 들어갔다.면접도 압박면접, 편한면접이 있다.

 

압박면접이라면 어떠한 마음에 안드는점이 생긴다면 그거 한개를 계속 꼬치꼬치 물어보는 편이다. 이러한 면접은 면접관에 따라 다르다. 대부분 그런식은 높은사람일 가능성이 높으니 만족시킨다면 그사람은 합격할 가능성이 높을것이다.

 

편한면접은 생각했을때 그 편한면접이 맞다.


질문

일할때 감정적인, 기계적인 사람 중 어느사람이 편한가?

 

답 : 대화가 편하고 감정적으로 으쌰으쌰하는게 더 일하기 편하고 좋다. 서로 힘낼 수 있기 떄문이다.

기계적인 사람은 힘들기는 한데 프로그래머인데 대화하기는 힘드나 결과물이 매우 좋다. 막 욕하면서 뭐라뭐라해도 결과물이 언제나 좋게나오는것 같다.

 

그래도 사람간에 일하는건데 억지로 대화하는거보다 감정적으로 부드럽게 이야기하는것이 좋은것 같다. 사실 더 좋은건 일의 결과가 좋은편이 좋다.

 

높은 확률로 기계적인 사람은 다른사람들이 싫어한다. 실력이 뛰어나면 욕하면서도 인정은 한다.

 

프로그래머또한 문서를 쓴다. 가이드문서를 작성해야하는데. 이 툴을 사용하려면, 이 기능은 어떤식으로 사용해야한다는 문서를 만들게된다. 이또한 팀바이팀 인데 아예 안쓰는사람도 있고 쉽게 잘 쓰는 팀도 있다.

 

그러나 문서를 쓸 때에는 그 문서를 이해가 쉽도록 작성해주면 좋겠다. 교양같은것을 생각하자. 문서를 잘 써야한다. 쉽게 이야기하는 연습을 하자.


질문

프로그램팀과 아트팀의 갈등이 주로 일어나는데 어떤위주로 일어나는가?

 

답 : 내 경험상 프로그램팀과 아트팀은 원수이다. 그 이유중 하나는 최적화 이다.

아트는 막 FX넣고 파티클넣고 화려하게 하고싶은데 프로그램 팀은 안된다고 이야기한다. 게임 터져요 이렇게 이야기하지만 이기는팀은 그 팀중 팀장의 힘이 쌘 곳이 이긴다. 사실 회사의 정치라는것이 있기 때문에 고려해야 한다.

 

현실적으로 아트팀은 모든걸 다 넣고싶지만, 실제로 게임이 돌아가야 하기 때문에 최선을 찾게된다.

 

예를들어 아트가 힘이 쌘걸 봤는데 아트가 힘이 쌔면 힘들다. 기획도 힘들고 프로그래밍도 힘들다. 프로그래머가 안된다고 했으나, 작업이 들어가도 게임 진행중 게임이 터지면 PD가 확인하고 재작업을 거치게 된다.

 

프로그래머와 아트의 교집합 그런정도의 작업이 있다. 아트관련된 리소스를 수정해야할 때 해주는 사람이 TL 이다. 이사람의 영향력이 크다면 대부분 좋게 풀린다.

 

어차피 다 게임을 만들자고 왔기 때문에 서로 대화하면 잘 풀리게 됨으로 걱정할 필요는 없을것이다.


질문

우리는 대부분 신작으로 들어갈것 같으나, 신작게임이랑 라이브서비스 게임이랑 분위기 차이가 있느냐?

 

답 : 내가 라이브는 한번도 안가봤다. 신작만 가보았음으로 신작을 말해주자면, 어떤분위기인지는 답하기는 힘든데. 사실 크게 다르지 않을것이다. 이유는 라이브또한 신규이벤트 신규작업을 할 수 밖에 없다. 업데이트를 해야하기 때문에 신규개발팀이 있다. 그러한 작업을 함으로 큰 차이는 없다.

 

그러나 신규가 더 좋을것이다. 라이브팀은 전에 만든 코드를 활용해야 하기 때문에 전 코드가 뭣같으면 작업하기가 힘들것이다.

 

그래도 신규는 더 어렵다. 없던것을 만들어야 하기 때문에 바탕에 참고할 것이 없다. 그러니까 수정할 일도 많고 시행착오가 매우 자주 발생하기 때문에 오차를 감안해야 할 것이다. 기반이 없다는걸 생각하라.


질문

신입을 뽑을 때 나이관련 선호가 있는가?

 

답 : 까놓고 이야기하면 어릴수록 좋다. 그런데 같은 역량을 고려하면, 사람마다 다른데 같은 신입을 뽑는데 나이가 20살과 30살을 뽑는다면 너무 어리면 뽑기가 힘들다. 인생경험이 부족하기 때문이다. 26, 30을 두고보았을때 에는 큰 차이가 없다.

 

가리는거는 면접패턴에 누가 더좋다 안좋다 차이가 있을 뿐 이다. 면접은 공채가 아닐경우 다대다 면접을 하지 않는다.

상시는 1대4 정도의 면접정도를 보여준다.

 

공채는 다대다 면접을 한다 이번에 NC를 봐라 80명이 지원했다. 그래서 다대다 면접이 아니면 힘들다.

 

만약 나이가 마흔정도된다 라고 하면 40살이 넘어가면 이사람이 트렌드에 적응할 수 있을까? 라는 생각으로 보게 된다.

이사람이 새로나온 프로그램지식, 코딩지식, 트랜드에 따라갈 수 있을까 라는 걱정을 할 수 있다. 그런것만 고려하면 큰 차이는 없을것이다.


질문

학벌을 봅니까?

 

답 : 어떨것같아요? 솔직히 학벌은 서류에서 본다. 그런데 되게 학벌을 중요하게 여기냐? 아니다 그렇게 중요하지 않다.

보는 이유는 공채때 보게된다. 그 이유는 서류가 너무 많기 때문이다.

 

좋은 대학을 나와야한다? 이런건 아니다. 너무 외지의 외국대학을 나오면 이사람이 대화가 통하나? 그런 생각으로 보게된다. 상시의 경우는 사실 지원자가 그렇게 많지 않음으로 대학을 주로 보게되지는 않고 그사람의 포트폴리오, 그사람의 면접데이터 등을 많이본다.

 

그래도 그렇게 짜르지는 않는다. 성균관대 아니면 안되지 그런건 아니지만, 4년제 정도는 나오면 되지. 이정도는 볼것이다.

 

그래도 상시는 공체에비해 크게 걱정할 필요는 없을것이다.

 

그래도 이사람을 보았을 때 칼같이 자르지는 않지만, 보고싶으면 면접때 부르기는 한다. 칼같이 자르지는 않고 보기는 본다 라고 생각하면 될 것 이다.


질문

NC는 MMO를 주로 보게되는데 왜 지금은 다른분야를 찾고있냐?

 

답 : 사실 현업은 MMO같은걸 잘 모른다. 실무자는 잘 모른다. 그래도 프로잭트 진행기준은 CL같은 C가 붙은사람들이 진행하면 진행한다.

 

진행시나리오는 신박할것같다 재미있을꺼같다 사업이 될거같다 할때 검토이후 진행한다. 그럼으로 MMO를 위주로 진행하지는 않고 필요에 따라 다르다.

 

어떠한 기준으로 MMO를 기준으로 만든다. 그런건 아니고 만들었는데 그거에 붙었다 쪽이 더 비유에 맞는것같다.

 

그럼으로 그러한 것 때문에 그 장르를 만들었다 는 아닐것이다.


질문

강사님이 메타버스에대해 생각, NC에서 메타버스에서 작업을 진행할 의향이 있는지도 궁금하다.

 

답 : 개인적으로는 NFT사업이라는건 유행같은것. 미래가 다 그건 아닐것이다. 그래도 게임을 만드는 도구로는 사용할 수 있을것이라고 생각한다. 좋다고 생각한다.

 

이유는 모바일게임의 뽑기로 봤을때 거기서 나오는 캐릭터, 아이템을 NFT화 할 수 있을것이다. 그런 활용도를 생각할 수는 있으나

 

회사 PD같은 높으신분들이 그런걸 고려하는지는 모르겠다.

 

사실 NFP는 분위기와 트랜드라고 생각한다. 요즘에는 NFT는 망하지 않았느냐? NFT를 막 시도하다가 망한것이 많지않느냐? 그럼으로 사실 VR같은 느낌이라고 생각한다

 

VR또한 신기술이고 어떤걸 적용시키려고 하다가 한번 빤짝 떳다가 나중에 활용도가 애매해서 떨어졌다. 그정도로 생각하면 될 것 이다.


질문

기획자의 전반적인 하루 일과가 서류쓰고 회의하고 엔진다루고 하게되나? 어떤일을 주로 하게되나?

 

답 : 내가 사실 강의하기전에 출근하고 퇴근하고왔다. 

출근해서 잘 되어가고있느냐? 이번에 마일스톤에서 하고자하는 업무목표 진행도 등등의 업무작성을 진행한다.

그거만 하는건 아니고 다양한거를 여러개 진행하게 된다.

 

작업하다가 버그수정이 완료되었다 하면 그걸 테스트 해봐야하고 다른 사람이 확인해달라고 하면 확인해주고

회의가 있다고 하면 그 회의에 참가해서 아이디어를 얻어보고 등등을 진행한다.

 

문서만 쓰기 위해서는 다양한 문서를 접해야한다. 그럼으로 다른 문서들을 다 확인하게된다.

 

사실 문서는 최신화가 잘 안된다. 다 바빠서 최신화를 잘 못한다. 다 애매해서 확인하고 체크하는데도 다 바쁘다.

 

기획자는 아이디어가 가장 중요한 직군이다보니 이곳저곳을 다 왔다갔다 해야하기 때문에 엄청 바쁘다. 그래서 단순하게 정해진 무언가의 문서를 작성해야하는? 그런 단순하게 작업을 진행하지는 않는다. 생각보다 할일은 많을것이다.

 

단순하게 문서만 쓰는 일은 크게 잘 일어나지 않는다. 그리고 문서를 쓰더라도 단순하게 간결하게 쓰는걸 좋아한다.

그림을 자주 쓰는데 그림도 복잡하게 하지 않는다. 스스로 시뮬레이션을 해봐야하고 누구나 쉽게 알아볼 수 있도록 작성하게 된다. 그것이 중요하다고 본다.

 

 

728x90
작성일
2023. 3. 24. 15:57
작성자
WDmil
728x90

구조체의 주소값을 알아보자.

구조체는 배열과 다르게 연속적인 주소를 가지지 않는다. 구조체 안의 변수를 사용할 뿐 이지 연속될 이유가 없기 때문이다. 그러나, 구조체 안의 배열은 전부 연속된 주소를 가진다. 배열이기 때문이다.


구조체는 지역의 영향을 받는다.

일반 변수와 같이 절대값 선언을 하지 않으면 내부변수처럼 사용이 되어 지역밖을 벗어났을 경우 데이터가 소멸되기 때문이다. 예시는 밑과 같다.

오류가 나타나는것을 확인할 수 있다.


구조체 안에 구조체를 다시 선언해줄 수 있다.

순서는 위부터 아래로 나타나며, 위에서 사용된 구조체를 아래에서

사용해줄 수 있다. 함수와 같은 성질을 가지는데, 밑에서 선언된 구조체를 위에서 선언해서 사용할 수 없다.

사용하기 위해서는 구조체를 위에서 사용하겠다는 선언을 해주어야 한다. 함수를 생각하면 편하다.

오류가 나타나는것을 볼 수 있다.


구조체 안의 구조체를 초기화 시켜줄 수 있다.

구조체 안의 구조체는 이차원배열을 초기화 시켜주는 것 처럼 초기화 시켜줄 수 있다.

위와 같은 방식으로 구조체를 초기화 시켜줄 수 있다.

위에서 써놓았듯, 이차원 배열을 초기화 시켜준다는 생각으로 사용하면 된다.


포인터를 사용해서 구조체에 접근할 수 있다.

구조체를 포인터로 가리켜서 데이터를 접근하고 출력해줄 수 있다. 포인터는 각각 주소값을 가르키게 되며,

각각의 구조체는 주소값으로 인지시켜주어야 한다. 구조체를 생성했을 때 접근구조체가 배열형식으로 n개 이상 일 경우

데이터를 ++ 또는 --연산자 같이 배열형식으로 접근이 가능하다. 예시를 살펴보자.


구조체 안에 포인터 를 선언하여 구조체를 지정하고 그 구조체의 포인터를 사용하고 인지시켜줄 수 있다.

구조체안에 구조체를 가르키는 포인터를 만들고 그 포인터를 외부에서 출력하여. 해당 포인터로 데이터를

바꿔주거나 출력해줄 수 있다. 예시를 보자.

위와같은 예시를 볼 수 있다. weapon이라는 데이터를 선언하고 포인터의 주소값을입력하여 데이터를 바꿔줄 수 있다.


지수와  기수가 있다.

기수는 진법을 나타내는 기본 수 로써 2진법 8진법 10진법 16진법 같은것 을 이야기 한다.

지수는 거듭제곱을 이야기한다. 각각 2^1 2^2 10^2 따위와 같이 수의 승으로 말하는것을 이야기한다.

컴퓨터에서또한 입출력이 쉽게 가능한데 예시를 한번 보자.


코딩을 할 때 헤더파일이 매우 많아지는 경우를 보았을 것 이다.

헤더파일을 따로 만들어서 생성하고 선언해줄 수 있다.

위와 같은 방법으로 .h로 만들어서 헤더를 따로 선언해줄 수 있다.
위와 같이 헤더를 생성할 수 있다.
생성한 헤더는 위와같이 선언하여서 표현해줄 수 있다.

헤더를 위와같이 #include " " 로 묶어서 선언해줄 수 있다.

이렇게 하면헤더를 여러번 생성하지 않아도 한번만 생성해서 만들 수 있다.

728x90

'서울게임아카데미 교육과정 6개월 C++ ~ DirectX2D' 카테고리의 다른 글

14일차 27. Union, 28.enum  (0) 2023.03.29
SGA 지식콘서트  (0) 2023.03.24
12일차 22.Pointer, 23.Structure  (0) 2023.03.23
11일차 doublePointer.  (0) 2023.03.22
10일차 21.pointer2  (0) 2023.03.18