대학생들의 개발 경험
과제해커톤 공모전
• 대부분의 대학생들은 위 3가지로 개발 경험을 쌓게됩니다.
• 과제를 통해 이론을 구현하는 능력을 키울 수 있습니다.
• 해커톤, 공모전을 통해 내손으로 직접 서비스를 만들어 볼 수 있습니다.
• 하지만 대부분 1회성 코드들입니다.
20.
대학생들의 개발 경험그리고 고민
• 그래도 이왕 코드를 만들어내는거 제대로 만들어보고 싶다.
• 코드 구조를 어떻게 잡아야할까?
OOP를 배웠으니 적용해보고 싶은데..
디자인 패턴도 배웠는데..
• 서비스를 한 이후 버그를 어떻게 잡아낼까?
서비스가 되면 이미 내손을 떠난 자식.
사고치면 어떻게 고치지?
21.
고민 1. 예쁜코드 만들기
• 분명 내가 짠 코드인데 왜이리 더러울까?
• OOP 도 배웠고, 디자인 패턴도 배웠다.
• 적용해볼까?
• ( 털썩 )
디버깅 환경 구축- Eclipse
• maven 을 이용하여 프로젝트를 구축한 경우
• 이클립스에서 자동으로 source code를 attach 시켜준다.
• 만약 자동으로 attach 가 안되면, 아래 사진처럼 pom 설정
35.
디버깅 환경 구축- eclipse
• 독립적인 시스템일 경우, IDE에서의 디버깅 가이드
문서가 존재한다
참조 : https://wiki.apache.org/cassandra/RunningCassandraInEclipse
36.
디버깅 환경 구축– 기타 환경
• Python
• pip install 시, 소스코드가 설치되므로 크게 신경쓰지 않아도
된다.
• 리눅스 환경의 C/C++
• gcc –g 로 디버그 심볼을 붙인다.
• gdb로 분석하거나, eclipse 로 원격 디버깅을 설정한다.
• printf 로 로그를 찍는다.
• 윈도우 환경의 C/C++
• 프로젝트 설정에서 참조설정에 dll 의 소스코드 위치 명시
• https://msdn.microsoft.com/library/4c8f14c9.aspx
• 기타 각 언어에 맞는 디버깅 환경을 찾아서 구축
37.
오픈소스 분석 방법에대한 노하우
API 코드 흐름을 따라가면서 분석
API 코드를 따라가다보면 어떤 파일들이 있고
어떤 용도로 쓰이는지 쉽게 파악할 수 있다
38.
API 코드 흐름따라가기
• 분석할 라이브러리를 사용하는 예제코드를 만든다.
• 처음에는 “정의 따라가기” 기능을 통해 API 내부
코드를 눈으로 분석한다.
• 눈으로 어느정도 분석이 끝나면, 실제로 실행하면서
변수값을 확인하면서 정확한 동작을 분석한다.
39.
API 코드 흐름따라가기
• 분석 시 유의할 점은, 모든 내용을 완벽히 이해하려
하지 말자 (나중에 다 알게된다)
‘이런 애들을 초기화하는구나 ‘로넘어가면 마음이 편하다.
40.
오픈소스 분석 방법에대한 노하우
Diagram 을 그리면서 분석 과정을 메모
Component Diagram
41.
Diagram을 그리면서 분석과정 메모
• 우리들의 뇌는 기억력이 좋지 않다.
• 먼저 API 함수 자체의 Flow Chart 를 그린다.
• 이 함수가 대략적으로 어떤 동작을 하는지 알 수 있다.
• if/else 를 너무 상세히 그리지 말자
• API 함수에서 다른 모듈을 사용한다면, 각 모듈간
연관관계를 그리자 (Component Diagram)
• 마지막으로 Sequence Diagram 으로 모듈 간 호출
순서를 정리하자
42.
오픈소스 분석 방법에대한 노하우
개발과정을 역추적
• 내가 지금 보는 코드는 수 많은 고민과 토론을 통해
탄생
• 코드만 봐서는 이해가 안되는 부분이 존재한다.
• 커밋로그, 코드리뷰 기록을 통해 개발 과정을
역추적하여 역사를 되짚어본다.
현업에 대한 이야기
•학생들은 경험할 수 없는 현업의 생생한 이야기
• 원하는 직업의 현실적인 삶의 이야기를 들을 수 있다.
• 현업으로 가기 전, 배우면 좋은 지식들
• Git의 다양한 기능
• Git Branch 전략
• 테스트 코드 작성 (TDD)
• 다양한 개발 방법론
• 등..
58.
커리어에 대한 조언
•무엇을 좀 더 심화적으로 공부해야하는지?
• 최신의 트랜드는 무엇인지?
• 미래에는 어떻게 될 것인지?
• 이를 위해 나는 무엇을 준비해야하는가?
개발자 커뮤니티
• PythonKorea
• 한국 러스트 사용자 그룹
• 라 스칼라 코딩단
• C++ Korea
• Golang Korea
언어
• 인공지능 스터디
• 손고리즘
• 바벨피쉬
• IAMROOT
이론
65.
개발자 커뮤니티
• 한국스프링 사용자 모임
• Flask Korea
• Django
• OSXDEV
• OpenStack Korea Group
• Korea Docker User Group
• 우분투한국커뮤니티
• 안드로이드 팁!팁!팁
• 한국 MySQL 사용자그룹
프레임
워크
플랫폼