알려주는 일이 가장 보람있다고 생각해요 – 두들낙서 2편

알려주는 일이 가장 보람있다고 생각해요 – 두들낙서 2편

Today We Learned #05
인프런이 만난 사람 – 개발자에게 듣다

인프런 최연소(?) 지식공유자를 만났습니다. 중학생 때부터 동영상으로 C 언어 강의를 만든 두들낙서 님은 올해 서울대학교 컴퓨터공학과 19학번이 되는데요. (추카추카!!) 아래 캐릭터처럼 눈이 초롱초롱했던 지식공유자 두들낙서를 직접 만나보았습니다.

알려주는 일이 가장 보람있다고 생각해요

– 두들낙서 2편



Q. 현재 진행 중인 본인의 프로젝트가 있나요?

막 시작을 해보려는 게 마이티 게임이에요. 인프런에 강의 좋은 거 있으면 추천해주세요.

Q. 멋있다고 생각한 지식공유자/개발자가 있다면 알려주세요

유튜브에 3Blue1Brown이라고 수학 강좌 올리는 분이에요. 칸 아카데미 있잖아요. 거기서 선형대수학이나 미적분 강의를 올리는데요.
 

 

수학이 시각화나 이런 게 중요하잖아요. 그런 걸 그분이 직접 코드를 짜셔서 수학적인 내용들을 시각적인 영상으로 보여주세요. 그런 게 되게 이해가 잘 돼서 좋은 강의인 것 같아요. 강의에 얼굴은 안 나오고 애니메이션만 나와요. 요즘은 거기다 한국어 자막을 다는 분들도 있는 걸로 알고 있어요.

무료 강의인데 퀄리티가 되게 높아요. 저는 예전에 구독자 1000명 때부터 봤었는데 지금은 구독자 수가 100만 명이 넘었어요. 유튜브 추천 영상에 떠서 알았는데 이 분이 되게 다양한 강좌를 만들어요.

허프만코딩이라는 알고리즘이 있는데 그 알고리즘 강의가 있었어요. 그걸 찾다가 본 것 같아요.

Q. 학원에서 어떤 걸 알려주나요?

원래 옛날 컴퓨터 학원이면 워드를 가르쳐주는 데 제가 다니던 곳은 정보올림피아드를 주로 하던 학원이었어요. 정보올림피아드는 알고리즘 대회라고 보시면 되는데요. 주어진 문제를 해결하는 여러 가지 방법이 있잖아요.


그중에서 제일 빠르면서 효율적인 알고리즘을 만드는 대회라고 보시면 될것 같아요. 수학하고 코딩이 중요해요. 예선 대회 필기고사에서는 수학 문제가 30~40% 나오고 나머지는 코딩 문제가 나오는데 그걸 통과하면 본선은 그냥 코딩이에요.

대회는 C 언어만 쓰고 있어요. 사실 C 언어가 그렇게 실용적인 언어는 아니잖아요. 고급 언어이고 이쪽으로 고급 기술이 필요한 게 아니면 C언어를 안 배우는데요. NYPC – 넥슨 청소년 프로그래밍 챌린지라고 넥슨에서 여는 프로그래밍 대회에서는 C언어, C++, 파이썬 같은 언어들도 다 봐줘요. 자기가 선택하면 돼요. 거기도 문제 형식은 올림피아드랑 비슷해요.

Q. 학원은 초등학교 때부터 다녔나요?

학원엔 처음에 C언어를 배우고 싶어서 갔는데 거기서 정보 올림피아드를 나가라고 꼬셨죠. 초등학교 5학년 때부터 갔었어요. 오히려 잘 된 것 같아요. 그런 대회에 참가한 게요.

다른 기업들에서도 코딩 / 프로그래밍 인력을 데려가려는 이유가 프로그램을 만들 때, 오류를 줄이면서 빠르게 실행되고 효율적인 프로그램을 만드는 사람들을 데려가고자 하는 거잖아요. 정보올림피아드가 딱 그런 능력을 테스트하는 대회에요.

Q. 앞으로의 어떤 사람이고 싶나요.

제가 지식공유를 하는 이유는 뭔가 저만 알기에는 미안한 그런 게 있어요. 저는 잘 알고 있는데 다른 사람들은 잘 모르거나 이럴 때 조금 안타까운 게 있어요. 그리고 다른 사람들이 배우고 싶은 것들을 알려주는 게 가장 보람 있다고 생각해요. 제가 알고 있는 게 있으면 다른 사람들도 이해하기 쉽게 설명해주면서 다른 사람들한테도 무언가 도움이 되는.

 

저는 그냥 단순히 지식을 얘기하는 거예요. 이제 막 C언어를 시작하는 사람이랑 저랑은 아는 게 다르잖아요. 그 분들한테 이해하기 쉽게 가르쳐주는 거예요. 제가 많이 알고 있다고 생각하는 부분이 알고리즘이랑 C언어라서 나중에 C++ 강좌까지 다 끝내면 알고리즘이랑 자료구조 강좌도 만들 생각이 있어요.

Q. 좋아하는 언어는 무엇이에요?

저는 C++이죠, 당연히. 다른 언어들을 심도 있게 공부하지는 않았지만. C++의 가장 큰 장점이 포인터라고 생각해요. 포인터라는 개념을 다른 언어에서는 거의 다루지 않잖아요. 그런데 C언어와 C++의 개념을 알고 있는 거랑 그렇지 않은 건 진짜 큰 차이라고 생각해요.

C# 같은 경우에도 실제 값을 저장하는 타입들이 있고 reference라는 어떤 메모리상의 공간을 가리키는 타입들이 있거든요. C#에서는 어떤 것들은 값을 저장하고 어떤 것들은 reference를 저장하는 거다,라고 머리로만 알고, 실제로 그런 개념들이 컴퓨터 상에서 어떻게 구현되는지는 배우지 않거든요. 그래서 reference를 알고 있어도 막상 코딩을 하다가 실수하는 부분들도 있어요.


포인터라는 개념을 실질적으로 배울 수 있다는 게 가장 매력적인 거 같아요. 다른 언어들은 포인터를 안 써도 되니까 귀찮은 게 없잖아요. C 언어는 포인터를 하면 귀찮아지는데 다른 언어들은 그런 게 없어요. 그런데 C언어를 공부하면 포인터를 이해하게 되니까 그걸 이해하고 나서 다른 언어를 배우면 그 안에 숨겨진 원리들을 알 수 있어요.

저는 포인터를 사용하는 게 마음이 편해요. 안에 감춰져있으면 코드를 짜놓았을 때 다른 언어들은 어떤 식으로 작동할지 완벽하게 아는 게 어렵거든요. 그런데 C++은 아예 포인터라는 게 명시되어있고 이 포인터가 어디를 가리키고, 메모리를 할당했다가, 지웠다가 이런 코드 자체를 눈으로 볼 수 있으니까 코드를 살펴보기만 해도 어떤 식으로 메모리를 할당하는지 눈으로 다 볼 수 있어요. 그래서 마음이 편해요, 다 보이니까.

Q. 본인만의 포트폴리오 같은 게 있나요. 있다면 어떤 것들인지 궁금해요.

저는 연구하는 걸 좋아해요. 공부를 좋아하진 않는데 궁금하거나 꽂히는 게 있으면 파고들어요. 고등학교 때 유전 알고리즘이라고 그게 다윈의 진화론 있잖아요. 그걸 모방해서 컴퓨터적으로 구현했어요. 다윈 진화론이 환경에 제일 적합한 개체들이 살아남는다는 진화 이론이잖아요.

그걸 바탕으로 컴퓨터에서 어떤 조건에 맞는 가장 적합한 형태를 찾는 알고리즘이 있어요. 그 알고리즘을 이용해서 위도, 기후별로 나무 모양들이 다 다르잖아요. 그래서 위도별로 태양빛을 가장 효율적으로 받는 나무 모양이 어떤지 연구했었어요.

정밀한 연구는 아니잖아요. 그냥 재미로 한 건데. 거기서 발견할 수 있었던 건 고위도 지방의 침엽수들 있잖아요. 보통 침엽수들이 겨울에 추울 때 잎이 얼지 말라고 그렇게 발달했다고 들었는데, 유전 알고리즘을 사용해서 알아보니까 실제로 햇빛과도 관련이 있다는 걸 발견했어요.

침엽수 모양 자체가 고위도에서 햇빛 받기가 적합하다는 걸요. 정확한 연구는 아니라서 우연의 일치로 그런 건지 확실하지 않지만 실험 결과로는 그렇게 나왔어요. 교내 과학탐구대회가 있는데 거기 발표해서 은상을 탔어요.

Q. 프로그램 보고 싶네요.(웃음)

프로그램 짠 것도 가지고 있어요. 근데 돌리려면 되게 오래 걸려요.(웃음) 그게 여러 세대를 거듭해서 최종적으로 나오는 나무를 관찰하는 건데, 세대를 거듭하는 과정이 오래 걸려요.

Q. 외부적으로도 공개해 두었나요?

코드는 C#으로 짰어요. 공개는 안한 상태고 고등학교 때 연구했던 걸로 놔뒀어요. (웃음)

Q. 다른 연구는 어떤 걸 했나요?

이건 식물을 연구를 한 거잖아요. 2학년 때는 동물도 연구해보고 싶어가지고 그냥 초원 생태계 같은 걸 만들어 놓고 거기다 동물들을 풀어 놓고서 진화시키는 프로그램을 만들었어요.

Q. 그럼 게임처럼 동물들이 돌아다니고 그러나요?

아니요. (웃음) 되게 단순화 시켜서 만들었어요. 동물을 삼각형으로 표현하고 초원도 어떤 한 구역에 풀의 양이 얼마나 있나 정도만 구현해서 생태계 내에서 동물의 습성을 관찰하고 싶어서 한 연구에요.


시뮬레이션을 해서 그 생태계에서 가장 잘 살아남는 동물을 관찰해보면 포식자를 피해서 도망 다니는 습성이나, 또 보호색을 띠면서 숨어있다가 다른 동물들이 오면 잡아먹고 이런 습성들을 관찰할 수 있었어요.

Q. 어떻게 구현한 건가요?

유전 알고리즘이랑 인공 신경망을 연결해서 신경망에 입력되는 정보들, 예를 들어 주변에 어떤 색깔의 물체가 있고 그런 정보들을 받아들여서 어떤 행동을 할지 결정하는 인공 신경망을 만드는 거예요.

Q. 인공신경망은 코드로 만든 건가요?

예를 들어서 잡아먹는다, 풀을 뜯어 먹는다, 이런 식으로 행동을 결정해서 그 결정들은 동물들이 알아서 하도록 내버려 두고 그것들을 진화를 시키는 거죠. 인공신경망도 간단한 신경망이어서 다 제가 코드를 짰어요.

Q. 그걸 학교 다니면서 언제 다 한 거예요?

연구는 방학 동안 해서 시간이 있었어요. 원래는 학원도 다녀야 하는데 그거 한다고 숙제도 안 하고. (웃음)

Q. 두들낙서님 주요 활동 반경 내 맛집 알려주세요 (인프런 공식 질문(?) ㅎㅎ)

저쪽으로 가면 담소 사골 순댓국이란 집이 있는데 사골 육개장이 맛있어요. 여기랑 수제 햄버거집. 코엑스 쪽에 있어요. 브루클린 더 버거존이라는 집이에요. 제가 수제 햄버거를 되게 좋아하는데 여기가 제일 맛있었어요.

Q. 어떤 햄버거가 제일 맛있어요?

여기는 다 맛있어요. 못 고르겠어요. (웃음)

두들낙서 님이 정성껏 만들었습니다.

우리는 성장 기회의 평등을 추구합니다.

대학생분들이 두들낙서 선생님이라고 불러줬어요 – 두들낙서 1편

대학생분들이 두들낙서 선생님이라고 불러줬어요 – 두들낙서 1편

Today We Learned #05
인프런이 만난 사람 – 개발자에게 듣다

인프런 최연소(?) 지식공유자를 만났습니다. 중학교 때부터 C언어 강의를 만든 두들낙서님은 올해 무려 서울대학교 19학번이 되는데요. 아래 캐릭터처럼 총명하고 멋진 두들낙서 님을 직접 만나보았습니다.

대학생분들이 두들낙서 선생님이라고 불러줬어요

인프런 최연소 지식공유자, 서울대 컴공 신입생되다
– 두들낙서 1편

Q. 서울대학교 컴퓨터 공학과에 합격하셨어요. 축하드려요! 과정이 어땠나요?

감사합니다. 최종 발표는 12월에 나왔나 그랬어요. 저는 수시로 갔는데, 면접은 수학문제 물어보고 푸는 시간을 주고 문제를 푼 다음 교수님에게 설명하는 방식으로 진행 됐어요. 두 문제를 풀고 설명하고 다 맞으면 교수님이 추가 문제를 더 내주세요. 저는 문제 풀다가 추가로 두 문제가 나왔는데 첫 문제는 풀었는데 두 번째 문제는 못풀고 나왔어요. (웃음)

Q. 기분이 어땠어요?

기분 좋았죠. 초등학교 때부터 컴퓨터 쪽으로 가고 싶었어요. 프로그래밍을 제가 초등학교 4학년 때 누가 C언어가 있다는 걸 알려줘서, C언어를 배우고 싶었어요.

옛날에 영어 학원을 다녔는데, 학원에 과제하는 컴퓨터가 있었어요. 아는 형이 거기서 과제 안 하고 컴퓨터로 신기한 것들 보여주면서 C언어라는 게 있고, 이걸 배우면 이런 것도 할 수 있다고 했죠. 그때 C언어를 배우고 싶어서 서점에 가서 C언어 책을 사서 봤어요.

Q. 어떤 걸 보여줬어요?

cmd창에 들어가서 shutdown있잖아요. 이건 C언어는 아니지만.(웃음)

그 형이 컴퓨터 학원을 다니는 형이었나 봐요. C언어라는 게 있다고 한 번 배워보라고 해서. 4학년 때는 책으로만 공부했는데요. 책이 불친절해서 제가 직접 프로그램을 짜보고 싶어도 못하다가 나중에 학원을 다니게 됐어요.

그때 학원에서 C언어랑 Visual Studio에서 코드 짜는 걸 배우고, 집에서도 깔아서 해보면서 본격적으로 하게 됐어요. 초등학교 때는 약수, 배수 같은 프로그램 만들고 그런 정도로요.

 


Q. 닉네임이 왜 두들낙서에요?

두들낙서는 초등학교때 지은 건데 별로 의미는 없어요. 처음에 네이버 가입할 때 아이디 뭘로 하지 하다가 두들(Doodle)이 좋아 보여서 두들로 했어요.

두들(Doodle) 뜻이 낙서잖아요. 두 글자 하기는 그래가지고 네 글자로 두들낙서로 했어요. 어릴 때 낙서하는 걸 좋아했는데 지금은 안 해요.

Q. 학교 다닐 땐 어떤 학생이었어요?

학교에서 공부하고 수업도 열심히 듣고 그랬어요. (웃음) 가르쳐주는 걸 좋아해서 애들이 수학 문제 같은 걸 물어보면 알려주고 이런 걸 좋아했어요.

Q. 착한 학생이었네요.ㅎㅎ 어떤 과목이 제일 좋았어요?

가장 좋아하는 과목이 수학인데 만약에 정보(컴퓨터) 같은 과목이 있었다면 정보를 제일 좋아했을 거예요.

Q. 인프런 C/C++ 강의, 어떻게 만들게 된 거예요?

친구들한테 가르치는 걸 좋아했으니까 C언어를 알려주고 싶은데 주변에 알려줄 애들이 별로 없잖아요. 그래서 유튜브에 올려봐야겠다, 생각했어요. 중학교 2학년 때 시작했는데 그때 영재고 준비도 했거든요.

네 번째 강의까지 올렸다가 같이 하는 건 안되겠다 싶어서 잠시 접었어요. 영재고 시험 끝나고 시간 남았을 때가 2015년 말쯤인데 그때부터 진짜 좋은 강좌를 만들어야겠다 해서 적극적으로 했어요.

재밌었어요. 장비도 컴퓨터에 마이크만 달면 되니까. 화면 녹화하고 마이크 연결해서요. 그때는 마이크로 안 하고 휴대폰으로 녹음했었어요. 녹음은 휴대폰으로 하고 녹화는 컴퓨터로 해서 합쳤어요.

Q. 친구들 반응은 어땠어요?

처음에는 안 유명해서 별로 반응 없다가 지금은 구독자가 많아지고 그러니까 대단하다는 반응이 있는 것 같아요.

처음에는 그냥 그랬어요. 구독해달라고 하니까 좋아요 눌러주고 댓글 조금 달아준 정도. (웃음) C언어 강좌를 만들었을 땐 그냥 중학생이었잖아요. 누가 들을까 생각도 했었어요.저는 초등학교 때부터 C언어를 했으니까 초딩이 많이 듣겠구나 생각했는데 계속 강좌를 찍고 댓글을 보니까 생각보다 대학생이 많은 거예요.

저보다 나이가 많잖아요. 그런데 대학생분들이 두들낙서 선생님이라고 불러줬어요. (웃음) 대학생분들이 대학교 강좌를 듣다가 어려워서 제 강의를 듣고 도움이 많이 됐다, 이렇게 말씀해 준 것들이 기억에 남아요.

Q. 유튜브 채널을 운영한 게 학교 입학에도 도움이 되었을까요?

자소서에 그런 내용을 쓰긴 했는데 교수님들이 특별히 그런 거에 대해서 신경 쓰진 않으신 것 같아요.

Q. 어떤 언어들을 다루나요?

C언어, C++하고 고등학교 때 게임 만들고 싶어서 C# 공부했었고, Java도 약간 알고 있어요. 이제 인공지능 같은 거 만들려고 파이썬을 공부할 예정에 있어요.

C언어는 초등학교 때부터 했어요. 학원에서는 정보올림피아드를 나가라고 정보올림피아드 공부용으로 C언어 배우고 알고리즘, 자료구조 이런 걸 배웠어요. 그리고 C++은 C언어 확장판 같은 느낌인데, C++의 객체지향은 어떤 건지 궁금해서 조금씩 하다 보니 알게 되었어요.

C#은 게임 만드는 용으로 배우기 시작했어요. C++의 Qt프레임워크 같은, 게임개발을 위한 라이브러리를 살펴보다가, C#으로 만들수 있는 것 중에 xna 프레임워크가 있어요. 그게 초보 개발자들이 만들기에 어렵진 않고 고급 기능들까지 담고 있어서 xna 프레임워크를 쓰려고 C#을 공부했어요.

저는 게임 만들때 꿈이 커서 RPG 비슷한 게임을 만들고 싶었는데, 친구들이랑 같이 만들다가 흐지부지 돼가지고 게임을 실제로 만든 건 따로 없어요.(웃음) 캐릭터 그림 그리고 움직이는 애니메이션 같은 거 만들고 타이틀 화면 있으면 클릭하면 넘어가고 그런 거 있잖아요. 진짜 기본적인 것만 하다가 끝났어요.

Q. 프로그래밍은 어떤 부분에서 매력을 느꼈어요?

무언가 만들고 싶은 게 있으면, 그걸 만들기 위한 수단 중에 하나를 골라서 만들잖아요.

예를 들어서 내가 게임을 만들고 싶은데 개발 경험이 없고 초보 개발자들을 위한 걸 찾고 싶어요. 저는 여러가지를 찾다가 C#을 사용한 xna 프레임워크를 고른 거고요. 그럼 이제 그걸 사용해서 게임이라는 목표물을 만들어야 되잖아요. 그래서 목표물을 위한 수단으로 언어들을 배우니까 동기부여가 된 것 같아요.

제가 만들어보고 싶은 것 중에 <마이티>라는 카드게임이 있어요. 옛날에 어떤 분이 만든 프로그램인데 서버에 접속해서 하는 방식이거든요. 그런 거 말고 서버는 회사 쪽에서 열어주고 이용 고객들이 방을 파서 이용하는 방식으로 웹게임처럼 만들어보고 싶었어요. 

 

 

웹게임을 만들고 싶으면 웹서버 여는 걸 알아야 되고 자바스크립트를 공부를 해야 해요. 만들고 싶은 하나를 만들기 위한 과정이 언어를 배우는 동기부여가 되는 것 같아요.

Q. 학교에 가면 무엇을 공부하고 싶어요? 기대하는 바가 있나요?

인공지능 쪽에 관심이 많아요. 예전에 국제정보올림피아드 대회에 국가대표를 양성하는 프로그램이 있는데 제가 거기에 들어가게 됐었어요. 거기서 교수님 강의를 듣고 실습도 했는데 인공지능의 기본적인 원리를 배우는 시간이 있었어요.

그때 흥미를 가지고 인공지능을 알아보기 시작했어요. 그리고 대학가서 더 공부해보고 싶어요.

Q. 학교가서 인공지능쪽을 잘 파보면 좋겠네요

제일 배우고 싶은 과목이 인공지능이에요. 판별하는 인공지능 있잖아요. 얼굴인식이나 사물 인식부터 글을 보면 어떤 언어로 되어있는지 알아내는 알고리즘도 있고 실생활을 편하게 해주는 그런 인공지능들을 공부하고 싶어요. 저는 음악 쪽에도 관심이 있거든요. 작곡하는 인공지능 이런 거 있잖아요. 좀 예술적인 분야로 그런 인공지능들을 만들어보고 싶긴 해요. 그냥 재미로.

Q. 드라마 <스카이캐슬> 보셨나요. (웃음)

보다가 말았는데 저도 대충 내용은 알아요. 거기 코디가 나오잖아요. 제일 많이 듣는 질문 중 하나가 저도 코디가 있었냐는 거였는데, 저는 코디 없었어요. (웃음) 저 혼자 힘으로 한 게 90%라 하면 나머지 10%는 대치동 학원에서 좋은 선생님을 만났다는 거?

사실 이런 얘기 하면 조금 그렇긴 한데. 저는 생각보다 공부를 그렇게 열심히 하지는 않았어요. 근데 중학교 때 영재고 대비할 때 되게 열심히 해놨거든요. 그때 수학이랑 과학 배워놨던 게 고등학교 때 도움이 많이 됐죠.

원래 선행이 그렇게 도움이 많이 되는 건 아닌데 학원에서는 탐구 2과목까지는 선행을 해야 한다 해서 빡세게 배웠죠. 영재고는 떨어져서 못 가고 ㅇㅇ고 (일반고) 다녔어요.

Q. 인프런에서 듣고 싶은 강의가 있나요?

제가 웹 서버 얘기도 하고 인공지능 얘기도 했잖아요. tensor flow 강의랑 웹서버 node js 강의 있으면 보고 싶어요. 제가 책을 사서 보고있는데 책을 따라하는 건 별로 안 좋아하고 강의를 듣고 싶거든요.

두들낙서 님이 정성껏 만들었습니다.

우리는 성장 기회의 평등을 추구합니다.

정보보안 – 악성코드 분석 전문가 되기

정보보안 – 악성코드 분석 전문가 되기

악성코드 분석 전문가 학습 로드맵

정보 보안에 대한 이슈는 나날이 중요해지고 있죠. 그만큼 정보 보안을 다루는 전문가의 수요는 꾸준히 높아지고 있습니다.
그럼 악성코드나 바이러스를 수시로 모니터링하고 분석하여 대응하는 악성코드 분석 전문가가 되려면, 어떤 지식들을 알고 있어야 할까요?

악성코드 분석에서는 정적분석, 동적분석, 자동화분석 과정을 진행하여 종합적으로 판단해야 합니다. 또한, 각 분석 단계별로 입문부터 심화 과정까지 다루기 위해서는 악성코드 배포부터 바이너리 분석까지 이해도 필요합니다.
악성코드가 배포되는 시점에서는 제일 어려운것은 스크립트 난독화입니다. 난독화 기법에 대해 이해를 하고, 이를 복호화 한 후에 배포되는 악성코드 실행파일을 분석하는 과정을 다룰 수 있어야 합니다.

본 학습 로드맵을 충실히 학습하면 악성코드 바이너리 분석에서는 윈도우 애플리케이션 리버싱 기초부터 활용까지, 대표적으로 활용되는 OllyDBG, IDA Pro 분석 도구의 이해를 할 수 있게 됩니다.

기초부터 활용까지 차근차근 학습해 자신만의 악성코드 분석 환경 및 방법론을 만들어 보세요.

 

도움이 되는 분들

정보 보안 전문가가 되고 싶은 학생

정보 보안 전문가가 되고 싶다 막연하게 생각했는데 무엇부터 시작해야할지 고민이었다면, 여기 이 로드맵만 따라오면 되요!

악성코드에 대응하고 싶은 기업

다양안 랜섬웨어, 악성코드들에 내 사이트를 지키고 싶다면 더욱 좋은 보안 인력이 필요하죠. 팀원들의 실력향상을 위해서 자기개발을 지원해주세요.

보안관련 지식을 쌓고 싶은 개발자

웹 사이트, 앱을 만들었는데 쌓이는 데이터들이 훼손되지 않게 잘 보존하기 위해서는 어느 정도 보안에 대해서 알아야하죠. 위험한 악성코드를 읽을 수 있는 지식을 쌓아보세요.

 

해내면 얻게 되는 것들

로드맵

C 프로그래밍 – 입문부터 게임 개발까지

본 강의는 게임을 직접 만들며 배우는, 초보자를 위한 C 프로그래밍 입니다. C 는 조금 어렵지만, 아주 기본이 되는 언어입니다. C 를 마스터 하고 나면, 다른 언어는 굉장히 쉽게 배울 수 있습니다.

악성코드분석 입문과정

악성코드분석 입문과정은 보안프로젝트에서 오랫동안 해왔던 “악성코드 분석 과정”을 입문자에 맞게 단기 온라인 과정으로 진행합니다. 악성코드 분석과 침해대응으로 진로를 선택한 분들께 입문부터 샘플 분석 사례까지 배울 수 있습니다.

파이썬 오픈소스도구를 활용한 악성코드 분석

파이썬 프로그래밍으로 악성코드 분석을 이해하고, IT 분야의 보편적인 기본지식들로 시작해서 마지막엔 직접 백신프로그램 을 만들어 보는 단계적 강좌입니다.

네트워크 패킷 분석 입문 및 악성코드 샘플 분석

침해사고대응분석 및 악성코드 분석가에 진로를 선택한 분은 꼭 필수적으로 들어야 할 강의

메모리 포렌식 (memory forensic)

메모리 포렌식 을 학습하여 윈도우 운영체제 구조, 메모리 구조를 이해할 수 있으며, 메모리에 저장된 정보를 이용하여 어떻게 악성코드를 분석할 수 있는지 상세하게 다루는 강좌 입니다.

리눅스 악성코드 완벽 실습 과정

리눅스에서 실행되는 파일 구조가 어떻게 구성되어 있는지, 샘플 분석을 직접 실습하며 이해해보세요.

홍정모의 게임 만들기 연습 문제 패키지

홍정모의 게임 만들기 연습 문제 패키지

배우러 가기

1. 게임 프로그래밍 연습 문제 패키지

C++의 객체지향  프로그래밍이 실제로 적용되는 사례들을 게임을 만들면서 즐겁게 공부하실 수 있습니다.남이 이미 만들어진 틀에서 부분적인 사용법만 배운다면 실력은 늘지 않고 계속 헤매이며 시간만 낭비하게 됩니다. 본 강의는 객체지향적인 프로그램을 스스로 만들어가면서 원리를 터득하실 수 있도록 도와드립니다.  여기저기서 유용한 팁들이 톡톡 튀어나옵니다. 그리고 무엇보다 게임 만들기는 재미있습니다!

2.  도움이 되는 분들

  • 기초적인 C++ 문법을 공부하신 후에 뭔가 만들어보고싶은 초보 프로그래머들
  • 간단한 게임을 만들면서 프로그래밍 연습을 하고 싶은 초보자들
  • 게임 프로그래밍이나 컴퓨터 그래픽스를 공부할 예정인 초보자들

3. 학습 목표

  • 게임을 만들면서 C++ 객체지향을 실제로 어떻게 사용하는지 배울 수 있습니다.
  • 스스로 게임을 ‘프로그래밍’ 해보실 수 있습니다.
  • 게임과 같은 ‘실시간 상호작용 어플리케이션’의 구조를 배울 수 있습니다.

4. 강좌 특징

  • 화려하거나 멋진 게임을 만드는 것이 아닙니다. 그래픽스나 관련된 수학을 공부하는 것도 아닙니다.
  • 미리 만들어진 게임을 완성해나가는 것도 아닙니다.
  • 최소한의 예제 코드로부터 객체 지향 프로그래밍을 연습하면서 게임을 만들어갑니다.
  • ‘내가 만들고 싶은 것을’ 만드는 데 필요한 기본 기술을 공부합니다.
  • 내가 만들고 싶은 게임을 만드는 자유를 느껴보세요!

5. 게임 갤러리 (더 많은 작품들)

6. 참고 사항

  • C++ 프로그래밍 연습을 목적으로 합니다. 유니티나 언리얼 등의 게임엔진은 다루지 않습니다.
  • 영상으로 제시된 샘플 게임들은 학생들이 스스로 디자인하고 프로그래밍해서 만든 게임들입니다. 게임 만드는 방법을 직접적으로 알려드리는 강의가 아니니 오해 없으시길 바랍니다.
  • 상속, 다형성, 가상 함수 등의 문법적인 측면을 이해하신 분들이 실제 적용 사례가 궁금하시다면 강력히 추천합니다. 따배씨++ 기준으로는 12장입니다.
  • 다른 학생들의 더 많은 작품들은 유튜브에서 보실 수 있습니다.
  • 윈도우즈, Visual Studio 2017 Community 버전 이상을 권장하며 다른 OS에서의 작동은 확인하지 않았습니다.
  • 1장의 기본적인 내용으로  간단한 게임을 직접 만들어본 후에 2장의 디자인 패턴을 공부하시면 훨씬 효율적입니다.
  • 초보자들의 빠른 이해를 돕기 위해 내부적으로 고전적 OpenGL을 사용합니다. 향후 개설될 컴퓨터 그래픽스 전문 강의에서는 현대적 OpenGL을 사용합니다.
  • 유튜브에 공개되지 않았던 강의들이 추가될 예정입니다.

7. 예제 코드 실행 방법

  • Github에 있는 예제 코드 clone하기(20.2, 20.3 참고) 또는 링크 클릭으로 다운로드
  • Vcpkg를 이용해서 opengl, glew, glfw3 설치(20.4 참고)
  • 비쥬얼 스튜디어 2017에서 Lecture1/Lecture1.sln 솔루션을 실행
    * 사운드 라이브러리 FMOD는 바로 사용하실 수 있게 설정해뒀습니다.  혹시 외부 라이브러리를 직접 설치하는 방법을 공부하고 싶으시다면  따배씨++ 20.6 참고하세요.
  • 예제 코드 Github 링크 -> 깃헙 보수중입니다. 질문에 깃헙 아이디 적어주시면 collaborator로 등록해드립니다.
  • 챕터별 연습 문제 목록 링크

8. 연관된 강좌

따라하며 배우는 C++
뛰어난 프로그래밍 실력을 갖추고 싶은 왕초보들을 위한 강의!
최근 취업 인터뷰에 자주 등장하는 모던 C++의 중요 개념들을 다루고 있어요 🙂

9. 지식공유자 소개

홍정모

2008 ~ 현재 동국대학교 컴퓨터공학과 교수
2005 ~ 2007 스탠포드 대학교 연구원
2002 ~ 2005 고려대학교 컴퓨터공학과 전산학 박사
1996 ~ 2002 KAIST 기계공학과 학사, 석사

유튜브 채널 링크
블로그 링크

배우러 가기

따라하며 배우는 C++

따라하며 배우는 C++

배우러 가기

1. 따라하며 배우는 C++

소프트웨어의 발전 속도가 점점 빨라지고 있습니다. 프로그래머 지망생들의 꿈도 함께 자라나지만 화려한 최신 기술들에 대한 환상은 결국 공부에 대한 부담감으로 돌아옵니다. 10년 넘게 다양한 기술들을 배우고 연구하고 가르치면서 얻은 결론은 기본이 가장 중요하다. 바닥을 굳게 다지는 일이라는 생각으로 ‘따라하며 배우는 C++’를 시작합니다.

2. 도움이 되는 분들

  • 장기적으로 뛰어난 프로그래밍을 갖추고 싶은 입문자, 초보자 (전공, 비전공 불문)
  • 키보드 타이핑 조차도 아직 어설픈 대학 1학년 수준의 초보자(혹은 타 분야 전공자)를 기본 대상으로 가정하고 진행하고 있습니다.
  • 중급 이상이신 분들은 중반부 이상을 선택적으로 보시거나 필요한 부분만 골라 보실 수 있습니다. 중반부 부터는 객체지향과 다형성을 목표로 합니다.

3. 참고 사항 , faq

  • 윈도우즈, Visual Studio 2017 Community 버전 이상
  • 유투브랑 다른 점은 무엇인가요?
    • 기존에 유투브에 올라오지 않은 비공개 강좌들을 인프런에서 보실 수 있습니다!

4. 강좌 특징

  • 초급에 가까우신 분들이나 C언어를 약간 배우신 분들은 맨 앞에서부터 순서대로 보시기를 권장합니다.
  • 앞 부분에는 문법 설명 뿐 아니라 뒷 부분의 어려운 개념들을 쉽게 이해할 수 있도록 도와주는 힌트들이 곳곳에서 기다리고 있습니다.
  • 이론적인 설명은 최소한으로 줄이고 라이브 코딩 위주로 진행됩니다.
  • 새로 추가된 ‘현대적 C++’문법들은 중요합니다. 그러나 ‘고전적C++’ 문법을 완전히 대체할 수는 없습니다. 강의 초반부에는 모두 다루고 후반부에서는 현대적 용법 위주로 진행됩니다.
  • 처음부터 모든 내용을 완벽히 이해하려고 스트레스 받으실 필요 없습니다. 예제 코드만 한 번씩 직접 실행 시켜보세요
  • 상당히 방대한 작업이라서 후편집을 할 여력이 안된다는 점 양해 부탁드립니다.속도가 느리다고 느껴지시면 재생 속도를 빠르게 해서 보세요

5. 지식공유자 소개

홍정모

한국과학기술원 기계공학과에서 2000년과 2002년에 각각 학, 석사 학위를 받았으며 2005년에 고려대학교에서 전산학 박사 학위를 받았다. 이후 2년간 미국 스탠포드 대학교에 연구원으로 재직하면서 개발한 고속 파괴 시뮬레이션과 충격파 기반 불 시뮬레이션 기술들은 컴퓨터 그래픽스와 특수 시각 효과 분야에서 다양하게 사용되고 있다. 동국대학교에는 2008년도에 임용되었으며 활발한 산학협력 연구 활동을 통해 영화 ‘해운대’와 ‘7광구’를 비롯한 다수의 작품에서 VFX 기술에 대한 자문과 R&D를 수행하였다. 주 연구 분야는 고성능 컴퓨팅을 바탕으로 하는 차세대 그래픽스 기술이며 영상 콘텐츠 제작, 미디어 아트, 모바일 그래픽스, 3D 프린팅 등 고품질 디지털 콘텐츠 제작을 위한 기술과 예술의 융합을 추구하고 있다.

배우러 가기