[2013.07.16] PythonKorea강남스터디 발표 - flask testingDaeHyun Sung
2013년 7월 16일자
PythonKorea강남스터디 2주차 발표 Flask Testing 자료입니다.
발표주제는 Flask의 테스트에 대한 소개입니다.
TDD의 간단한 소개와 unittest모듈 소개 및 Flask에서 unittest사용하는 방법과 unittest의 기능을 확장한 Flask-Testing모듈에 대해 소개를 합니다.
[2013.07.16] PythonKorea강남스터디 발표 - flask testingDaeHyun Sung
2013년 7월 16일자
PythonKorea강남스터디 2주차 발표 Flask Testing 자료입니다.
발표주제는 Flask의 테스트에 대한 소개입니다.
TDD의 간단한 소개와 unittest모듈 소개 및 Flask에서 unittest사용하는 방법과 unittest의 기능을 확장한 Flask-Testing모듈에 대해 소개를 합니다.
파이썬으로 코딩 기초를 배우고 플라스크로 웹서비스 개발을 배우는 과정을 다루고 있습니다.
- 입문용 자료입니다.
ABCD : http://www.abcds.kr/
Facebook Group : https://www.facebook.com/groups/562787713823026/
한성일 : https://www.facebook.com/jamie.han.16
iheart79@gmail.com
쫄지마,글로벌! 평범한 개발자의 좌충우돌 글로벌 오픈소스 도전하기Sangmin Shim
영어를 몰라 해외 사이트는 눈팅만 하셨다고요? 내가 만든 라이브러리가 해외에서도 통할 것 같다고요? 오픈소스 프로젝트에 도움만 받아보셨다고요? 해외에서 발표도 해보고 싶으시다고요?
우리나라에는 국내에서만 활동하기에는 너무 아까운 프로젝트와 인재가 많습니다. 하지만 일이 바빠서, 영어를 못해서 시도하지 못하는 수 많은 개발자들을 위해서 좌충우돌 그 흔한 토익 점수도 없는 평범한 개발자의 글로벌 오픈소스 라이브러리 콜리(Collie)를 통한 도전기를 전해 드립니다.
이 시간에는 개발을 잘하는 법도, 영어를 잘하는 법도 없습니다. 대신, 그 모든걸 할 수 있는 용기를 드리겠습니다.
DEVIEW 2013 DAY1 Track3 - 6세션에 발표한 내용 입니다.
http://deview.kr/2013/detail.nhn?topicSeq=16
9xD Django Study
파이썬 웹프로그래밍 - Django로 배우는 쉽고 빠른 웹개발 Charter 2
발표자 - 김한성
ppt 내용 : 실습 예제 및 내용 요약
개발툴 : pycharm
개발환경 : python 3.5 이용(일부 예제의 경우 동작안함 - 주석 참고)
소스코드 : 2 page github 링크이용
"손코딩뇌컴파일눈디버깅" 모임을 소개합니다.
백문이 불여일런, 트라이얼앤에러(Trial and Error) 식의 몹쓸 교육을 받아 온 개발자들이 코딩하기 전에 신중하고 꼼꼼하게 생각해보기란 쉽지 않습니다.
개발 시간 중 디버깅 시간이 절반 이상을 차지하고 있는 실정에 버그를 줄이기 위해 TDD니 유닛테스트니 많은 방법들이 개발되고 있지만 가장 일차적으로 중요한 것은 개발자들이 꼼꼼히 따져보는 것이 아니겠는지요?
미국의 선진 SW회사들은 이미 화이트보드에 PS문제를 푸는 것을 인터뷰 방식으로 채택하고 있습니다. 이는 이와 같은 풀이 방식이 개발자들의 기본 역량을 측정하기에 알맞은 지표라는 것이고, 개발자들이 기본적으로 갖춰야 할 역량이기도 하다는 것 입니다.
또한 자신의 생각을 명확하게 정리하고 다른 사람이 이해할 수 있도록 전달하는 Communication Skill 도 개발자가 갖춰야 할 역량 중 하나 입니다. 알고리즘을 어떻게 구현할 것인가를 팀원들과 소통하면서 자연스럽게 생각을 정리하고 전달하는 연습도 할 수 있습니다.
컴퓨터에 앉아 코딩하기 전 펜과 종이를 들고 눈과 머리와 손을 굴려 보시는 것은 어떠신지요??
파이썬으로 코딩 기초를 배우고 플라스크로 웹서비스 개발을 배우는 과정을 다루고 있습니다.
- 입문용 자료입니다.
ABCD : http://www.abcds.kr/
Facebook Group : https://www.facebook.com/groups/562787713823026/
한성일 : https://www.facebook.com/jamie.han.16
iheart79@gmail.com
쫄지마,글로벌! 평범한 개발자의 좌충우돌 글로벌 오픈소스 도전하기Sangmin Shim
영어를 몰라 해외 사이트는 눈팅만 하셨다고요? 내가 만든 라이브러리가 해외에서도 통할 것 같다고요? 오픈소스 프로젝트에 도움만 받아보셨다고요? 해외에서 발표도 해보고 싶으시다고요?
우리나라에는 국내에서만 활동하기에는 너무 아까운 프로젝트와 인재가 많습니다. 하지만 일이 바빠서, 영어를 못해서 시도하지 못하는 수 많은 개발자들을 위해서 좌충우돌 그 흔한 토익 점수도 없는 평범한 개발자의 글로벌 오픈소스 라이브러리 콜리(Collie)를 통한 도전기를 전해 드립니다.
이 시간에는 개발을 잘하는 법도, 영어를 잘하는 법도 없습니다. 대신, 그 모든걸 할 수 있는 용기를 드리겠습니다.
DEVIEW 2013 DAY1 Track3 - 6세션에 발표한 내용 입니다.
http://deview.kr/2013/detail.nhn?topicSeq=16
9xD Django Study
파이썬 웹프로그래밍 - Django로 배우는 쉽고 빠른 웹개발 Charter 2
발표자 - 김한성
ppt 내용 : 실습 예제 및 내용 요약
개발툴 : pycharm
개발환경 : python 3.5 이용(일부 예제의 경우 동작안함 - 주석 참고)
소스코드 : 2 page github 링크이용
"손코딩뇌컴파일눈디버깅" 모임을 소개합니다.
백문이 불여일런, 트라이얼앤에러(Trial and Error) 식의 몹쓸 교육을 받아 온 개발자들이 코딩하기 전에 신중하고 꼼꼼하게 생각해보기란 쉽지 않습니다.
개발 시간 중 디버깅 시간이 절반 이상을 차지하고 있는 실정에 버그를 줄이기 위해 TDD니 유닛테스트니 많은 방법들이 개발되고 있지만 가장 일차적으로 중요한 것은 개발자들이 꼼꼼히 따져보는 것이 아니겠는지요?
미국의 선진 SW회사들은 이미 화이트보드에 PS문제를 푸는 것을 인터뷰 방식으로 채택하고 있습니다. 이는 이와 같은 풀이 방식이 개발자들의 기본 역량을 측정하기에 알맞은 지표라는 것이고, 개발자들이 기본적으로 갖춰야 할 역량이기도 하다는 것 입니다.
또한 자신의 생각을 명확하게 정리하고 다른 사람이 이해할 수 있도록 전달하는 Communication Skill 도 개발자가 갖춰야 할 역량 중 하나 입니다. 알고리즘을 어떻게 구현할 것인가를 팀원들과 소통하면서 자연스럽게 생각을 정리하고 전달하는 연습도 할 수 있습니다.
컴퓨터에 앉아 코딩하기 전 펜과 종이를 들고 눈과 머리와 손을 굴려 보시는 것은 어떠신지요??
Origin Link : http://www.oss.kr/oss_information6/1435
세션2 : 공개SW개발과 우분투 환경의 개발툴
우분투 이야기
- 우분투 한국 이야기
- 우분투 장점
- 우분투 개발 환경
- 우분투에서의 협업 툴 활용
(강사) 강분도 (우분투한국사용자모임 대표)
넥슨코리아 사내 발표자료로 왓 스튜디오에서 파이썬으로 《야생의 땅: 듀랑고》 서버를 비롯한 여러가지 도구를 만든 경험을 공유합니다.
- 게임서버와 각종 툴, 테스트/빌드/배포 시스템을 만들 때 사용한 재료
- 파이썬 코드 품질 개선, 디버깅, 프로파일링, 최적화
- 파이썬 오픈소스 생태계와 왓 스튜디오가 하는 오픈소스 활동
2. Speaker
송태웅 (Taeung Song, https://github.com/taeung)
2016 NIPA Open Frontier Lab 3 기
2015 Linux kernel - perf 프로젝트 contributor 활동 중
2014 ( 주 ) XS 선임연구원 ( 네트워크 , 서버 , ARM, etc.)
2013 NIPA 창의도전형 R&D 2 기
2012 NIPA SW Maestro 3 기
2011 ( 주 ) MTOME 개발연구원 ( 임베디드 , WinAPI)
5. To conclude 결론 부터 말하자면
오픈소스 컨트리뷰션을 왜하는지 ?
하면 어떤방식으로 하는지 ?
새로운 개발방식을 익히기위해 ( 오픈소스 개발방식 )
새로운 개발방식으로 .. ( 오픈소스 개발방식 )
6. To conclude 결론 부터 말하자면
새로운 개발방식 이란 ? ( 오픈소스개발방식 )
오픈소스 개발 방식의 특징 ( 사견 )
뒤에 이어서 설명
✔ 갑으로 시작해서 을 , 병 , 정 , 무 , 기 .. 로 끝나지 않고
✔ 개발자로 시작해서 개발자로 끝난다
✔ 코드도 모르면서 말만하는 팀장 / 사장 없다
✔ 소스를 공개하면서 비가시성의 상당한 문제 극복
✔ 집단지성을 활용한 비대한 발전
✔ 자본주의 사회에서 돈도 안되는 오픈소스가 소프트웨어의 역사를 이끄는 이유
8. Linux kernel – perf 현재 참여하는 오픈소스 소개
현재 참여하는
오픈소스 소개
오픈소스 참여 계기 오픈소스 활동 이력 여러가지
오픈소스
컨트리뷰션
작전
앞으로의 길
9. Linux kernel – Perf 현재 참여하는 오픈소스 소개
1) Linux 기반 성능분석 도구 perf (2009)
2) 커널 또는 특정 프로그램 (perf 로 알 수 있는것들 )
“ 특정 프로그램 또는 시스템 전반적으로 성능분석”
Events(Cpu-cycles, system call, cache-misses, page-faults, context-switch) 가
언제 / 얼마나 / 어떻게 발생 되었는지를 살펴보는것이다
✔ 어느함수가 cpu 를 많이 잡아먹는지 ?
✔ 어느코드부분이 메모리할당을 얼마나 하는지 ?
✔ cache-misses 가 어떤 코드 부분 때문에 발생하는지 ?
✔ 특정 커널 함수가 불려지는지 혹은 얼마나 불려지는지 ?
10. Perf 도구 간단한 예제로 알아보기
예시 ) Taeung_Program 분석
# perf record Taeung_Program ^c ( 성능정보수집 )
# perf report ( 성능정보 통계출력 )
# ./Taeung_Program
# perf top (record+report)
< 그림 1> perf top ‘에서 Taeung_Program’ 선택시
11. Perf 도구 간단한 예제로 알아보기
예시 ) Taeung_Program 분석
특정 프로그램 함수 (main) 에 대한 assembly code 단위 분석
< 그림 2> perf top 에서 annotate 기능으로 어셈블리 코드
12. Perf 도구 perf 의 장점 및 특징
✔ 특징
✔ 장점
'Performance counters' 라는 HW registers 를 기반
커널 및 프로그램의 감속 없이
Profiling 을 위한 Target 프로그램 재컴파일 없이
프로그래밍 언어 종속적이지 않게
커널버전에 따른 각 버전이 존재 (kernel 코드와 함께 개발 )
C program (user space) (Linux kernel 소스의 tools/perf 경로 )
Command line tool
* 공식 Linux kernel – perf 저장소 : http://git.kernel.org/cgit/linux/kernel/git/tip/tip.git
13. 현재 참여하는
오픈소스 소개
오픈소스 참여 계기 오픈소스 활동 이력 여러가지
오픈소스
컨트리뷰션
작전
앞으로의 길
Motivation 오픈소스개발에 참여한 계기
14. Motivation 오픈소스개발에 참여한 계기
개인적인 개발실력에 대한 의문 / 생각 ( 졸업 전 )
개발자 ? 이것저것 조합하는 유저 ?
Core 개발자 , 프로 개발자가 되고싶은 마음
내가만든 프로그램 , 제품이 내가만든것인가 ?
15. Motivation 가내 하고싶은 SW 찾기
졸업 후 첫 회사 다니면서 고민 / 생각
Low level, system 분야의 관심 → ( 주 ) XS
순수한 (?) 소프트웨어 vs 업무 및 제품 의존적인 소프트웨어
Web (frontend, backend), AngularJS, Django, Jquery, Bootstrap
ARM, Linux porting, L4/Fiacso, QT/C++, Ncurses
NAS(Network Attached Storage), bash, python
시스템 소프트웨어 개발에 관심 ( 커널모듈 , 데몬 , Utility, syscall)
16. Motivation 오픈소스 개발의 시작
회사내의 오픈소스 참여기회
회사업무로 인해 → L4/Fiasco → Mailing List 경험
Porting & Device Driver 관련 가이드 문서공유 ( 첫 오픈소스 기여 )
< 그림 3> l4-hackers 메일링리스트에 공유한 Device driver & Porting 가이드 문서
17. Motivation 오픈소스 개발의 시작
회사외의 오픈소스 참여시도
오픈소스 분석 목적 스터디 , 국내 kernel 커미터 contact
무산됨 , 더딘진행 , 진입장벽 난관에 봉착
소스 읽고 이해해보고 , perf 소개 강의도 듣고
스터디에서 perf 분석시작
C 문법은 알지만 Source Reading 의 어려움
18. 현재 참여하는
오픈소스 소개
오픈소스 참여 계기 오픈소스 활동 이력 여러가지
오픈소스
컨트리뷰션
작전
앞으로의 길
Contribution 오픈소스 활동 이력
19. Contribution 첫 PATCH 작업 (perf)
처음 적용된 Bug fix 기여 perf tools: Modify error code for when perf_session__new() fails
< 그림 4> 첫 commit 정보 스크린샷
20. Contribution 지속적인 기여활동 (perf)
perf-config 가관련 기능추 기여 (2 개 commit 적용 )
perf-config subcommand 가기능추 완료
perf-config Document 가추 완료
perf-config 의 get, set 가기능추 중
perf-config options (list, list-all, remove, skel, system, user 등 ) 가추 중
toggle zeroing of samples 가기능추 기여 (1 개 commit 적용 )
perf top 실행 중 zeroing of samples 기능에 toggle 가버튼 추 작업 완료
Bug fix 기여 (6 개 commit 적용 )
perf_session__new() 실패 시 에러처리 완료
perf subcommands (mem, kvm, report, kmem, inject) 도중 에러처리 완료
perf_session__delete() 수행안하는 부분 수정보완 완료
더디고 느리지만 계속해서
Contributor 로 활동 진행
21. Contribution 활동 이력 (perf)
perf-config 가관련 기능추 기여 (2 개 commit 완료 / 22 개 patchset 계속진행중 )
< 그림 5> perf-config 의 usage message
22. Contribution 활동 이력
< 그림 6> perf-config 가관련 기능추 24 개 patchset cover letter
Contribution 활동 이력 (perf)
23. Contribution 활동 이력
< 그림 7> 최근 적용된 perf-config 명령 , doc 2 개의 커밋관련 메일
Contribution 활동 이력 (perf)
24. Contribution 활동 이력Contribution 활동 이력 (perf)
Linux kernel – perf 정식 git ‘저장소 tip’
Maintainer : Arnaldo, Ingo, Jiri, 김남형
https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
< 그림 8> 리눅스 커널 perf 정식 git 저장소에 적용된 commit 정보 (2014-2015)
30. Opensource 유망 오픈소스 정리자료
< 그림 11> 유망 오픈소스 정리 PDF (http://www.oss.kr/oss_repository12/103649)
OSS 에서 정리한 전세계 유망 오픈소스 정리 자료 (2013 기준 )
31. Opensource 가내 참여할 오픈소스 찾기 ? (IMHO)
졸업 이후 3~5 년 안에 한 분야 만큼은 전문성을 지녀야한다고봄 ( 준 전문가 ?)
하나의 분야에 대한 선택이 필요 ( 메타인지 필요 )
1) Big data
2) OS (memory, device driver, sched, network, FS etc.)
3) Embedded (RTOS, firmware, etc.)
4) Web (frontend, backend)
5) Web brower
6) Cloud, Paas, Baas, etc
7) Language, Compiler (Rust, Go, etc.)
8) AI
9) X-window system (Gnome, KDE, Unity, Xfce, etc.)
10) Tools (eclipse, IDE, git, etc.)
11) Application (mobile, PC, embedded, etc.)
...
32. Opensource 가내 참여할 오픈소스 찾기 ? (IMHO)
하나의 분야에 대한 선택작전 ( 진입장벽 부수기 )
✔ 구글링을 통한 주체적인 선택 ( 능력자들 )
✔ 오픈소스 분석 스터디 그룹활동 ( 분야선택 , source reading, etc)
✔ 해당 분야를 하는 회사에 실무경험 쌓기 ( 회사일과 오픈소스병행 )
33. Opensource 가내 참여할 오픈소스 찾기 ? (IMHO)
하나의 분야에 대한 선택작전 ( 진입장벽 부수기 )
✔ 구글링을 통한 주체적인 선택 ( 능력자들 )
✔ 오픈소스 분석 스터디 그룹활동 ( 분야선택 , source reading, etc)
✔ 해당 분야를 하는 회사에 실무경험 쌓기 ( 회사일과 오픈소스병행 )
< tip: 프로젝트 별 간단정리 공유 (5 분 ) >
- 사용언어
- 총라인수 , 소스폴더 구조 (2-3 depth)
- 대표기능 1 개 시나리오 설명
- 소스받기→ ( 컴파일 / 세팅 ) → 실행 방법 ( 간단한 사용법 )
34. 현재 참여하는
오픈소스 소개
오픈소스 참여 계기 오픈소스 활동 이력 여러가지
오픈소스
컨트리뷰션
작전
앞으로의 길
How to contribute 오픈소스 컨트리뷰션 작전 (IMHO)
35. How to contribute 오픈소스 컨트리뷰션 작전 (IMHO)
메인테이너가 쉽게받아줄거라
예상되는 PATCH/Pull-request 는 ? ( 사견 )
1 위 – Refactoring ( 가장 부담 zero)
2 위 – Bugfix ( 명확한 버그라면 )
3 위 – Documentation ( 첫 접근성은 좋으나 기술적인 description 이 문제 )
4 위 – Minor features
그 이후 new feature 나 core 부분은 신뢰가 필요하다고봄 ( 다수의 commits 필요 )
36. How to contribute 오픈소스 컨트리뷰션 작전 (IMHO)
가보통 어떻게 짜는 ? ( 문법다 안다고 좋은영작못하듯 )
작전 1) 시나리오 기반 Source Reading
작전 2) 오픈소스의 설계구조
질 좋은 오픈소스를 통한 나만의 소스 데이터베이스 필요
명확한 feature 이해 → 구현방식이해
(by navigator (ctags, cscope, intelij, eclipse, etc))
소스구조 공유 (http://aosabook.org/en/index.html)
좋은구조 , 좋은 Name, 간결한코드
37. 현재 참여하는
오픈소스 소개
오픈소스 참여 계기 오픈소스 활동 이력 여러가지
오픈소스
컨트리뷰션
작전
앞으로의 길
Future plan 오픈소스에서의 앞으로의 목표
38. Future plan 오픈소스에서의 앞으로의 목표
1. Linux kernel 에대한 PATCH 작업 ( 기본실력쌓기 )
- perf : Bugfix, minor features, new features, etc.
- frace 등 기타 서브시스템에 대한 Bugfix 작업
2. 알고리즘 코딩훈련
- Knapsack, Quick-sort, Cheese, etc.
3. 커널 및 CS 관련 이론학습
- Tracing, Network, Memory, File System, etc.
올해 1 년간의 목표
39. Future plan 오픈소스에서의 앞으로의 목표
향후 목표와 방향
✔ Linux kernel Committer (@kernel.org, @apache.org 등의 위엄 )
✔ 개발자로서의 성장 ( 프로개발자 되기 , 오픈소스 개발패러다임에서의 실력자 )
✔ 오픈소스로 다져진 실력으로 취업 목표