[C++ Korea 2nd Seminar] Ranges for The Cpp Standard LibraryDongMin Choi
Microsoft Melting Pot
C++ Korea 2nd Seminar
Ranges for The Cpp Standard Library
https://channel9.msdn.com/Events/Channel9-Korea/cplusplus/Ranges-for-The-C-Standard-Library
[C++ Korea 2nd Seminar] Ranges for The Cpp Standard LibraryDongMin Choi
Microsoft Melting Pot
C++ Korea 2nd Seminar
Ranges for The Cpp Standard Library
https://channel9.msdn.com/Events/Channel9-Korea/cplusplus/Ranges-for-The-C-Standard-Library
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
C++11을 시작으로 모던 C++이 도입된 지도 어느새 6년이라는 시간이 흘렀습니다. 올해는 C++17 표준이 도입될 예정입니다. 그만큼 많이 개선되고 새로운 기능들이 많이 도입되었기에 실무에서 사용해보고 싶은 경우도 많습니다. 하지만 이미 서비스 중이라 기존 프로젝트를 새 버전의 VS로 마이그레이션하기 어려운 프로젝트가 많습니다. 그렇다고 아예 불가능한 일도 아닙니다. 이번 세미나에서는 기존 프로젝트를 새 버전의 VS로 마이그레이션하면서 발생했던 문제와 마이그레이션 이후 모던 C++을 사용하면서 발생했던 문제, 그리고 해결법을 설명하고자 합니다. 또한 새 버전의 VS에 생긴 유용한 기능들도 함께 알려드립니다.
NHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
C++11을 시작으로 모던 C++이 도입된 지도 어느새 6년이라는 시간이 흘렀습니다. 올해는 C++17 표준이 도입될 예정입니다. 그만큼 많이 개선되고 새로운 기능들이 많이 도입되었기에 실무에서 사용해보고 싶은 경우도 많습니다. 하지만 이미 서비스 중이라 기존 프로젝트를 새 버전의 VS로 마이그레이션하기 어려운 프로젝트가 많습니다. 그렇다고 아예 불가능한 일도 아닙니다. 이번 세미나에서는 기존 프로젝트를 새 버전의 VS로 마이그레이션하면서 발생했던 문제와 마이그레이션 이후 모던 C++을 사용하면서 발생했던 문제, 그리고 해결법을 설명하고자 합니다. 또한 새 버전의 VS에 생긴 유용한 기능들도 함께 알려드립니다.
NHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
2015 SINVAS USER CONFERENCE - SPL/SSPL을 통한 임베디드 소프트웨어 개발방안Suji Lee
2015 SINVAS USER CONFERENCE
- SPL/SSPL을 통한 임베디드 소프트웨어 개발방안
(임베디드 소프트웨어 개발을 위한 최적화 방안)
ENKISOFT : http://www.enkisoft.co.kr/
SINVAS : http://www.sinvas.com/
FACEBOOK : https://www.facebook.com/enkisoft2001
TWITTER : https://twitter.com/enkisoft2001
PyQGIS 개발자 쿡북(PyQGIS Developer Cookbook) 한국어 판 SANGHEE SHIN
PyQGIS Developer Cookbook의 한국어판입니다.
한국오픈소스GIS포럼의 지원으로 번역되었으며, 원본은 http://docs.qgis.org/2.8/en/docs/pyqgis_developer_cookbook/index.html 에서 확인할 수 있습니다. 한국어 웹 버젼은 http://docs.qgis.org/2.8/ko/docs/pyqgis_developer_cookbook/index.html 에서 보실 수 있습니다.
지은이: QGIS 프로젝트팀
번역: 권용찬
펴낸이: 한국오픈소스GIS포럼
문서라이선스: Creative Commons Attribution-ShareAlike 3.0 licence (CC BY-SA)
4. 한 번 컴파일 해보면?
dll 파일이 나온다
이제 이 dll 파일을 불러오는 일이 남았다
5. dll 링크의 두 가지 방법
• 암시적 링크
• Static library 가져오기와 같다
• 프로세스가 시작될 때 dll을 가져옴
• 명시적 링크
• 프로세스가 실행 중일 때 dll을 가져옴
6. 암시적 링크
• 대부분의 프로그램이 암시적 링크를 쓴다
• 왜냐? 쉽기 때문이지
• 암시적 링크에는 dll과 .lib 파일이 모두 필요하다
• 당연히 이 lib 파일은 dll 만드는데 사용한 것과 같아야 한다
• dll을 가져다 쓰는 쪽에서는 dll에 있는 어떤 함수를 사용한다고 호출을
구현하는 부분이 있어야 한다
• 귀찮으면 헤더 파일(.h)로 하나 떼서 던져주면 된다
• 프로그램이 실행될 때 DLL들을 쭉 불러와서 호출한 함수가 있는지 검사
한다
• 없으면 프로그램이 바로 죽는다!
7. 암시적 링크
• 동적 링크된 참조가 있으면 프로그램이 실행될 때 해당 dll 파일
을 프로세스의 주소 공간에 매핑한다
• 이때 dll이 없으면 프로세스가 죽는다. 바로 위에 말한 것
• dll에 대한 진입점 함수(초기화나 종료)가 있으면 운영 체제가 그
함수를 호출한다
• 이때도 true가 반환되지 않으면 프로세스가 죽는다
• dll은 프로세스가 실행될 때 한 번 로드되고 계속 프로세스 주소
공간에 남아있다
14. 암시적 링크 따라하기
• 주의할 점
• 이 부분을 헤더에서 해결하게 하고 #include로 헤더 파일만 가져오면 귀
찮은 일을 안 해도 된다. 함수가 1000개면 1000개 다 선언할 것인가??
15. 암시적 링크 따라하기
위쪽이 .h 파일
아래쪽이 .cpp 파일
이런 식으로 ifdef를 써서
dll을 만드는 프로젝트인지
불러오는 프로젝트인지 판단
16. 암시적 링크 따라하기
Dll을 만들었던 .h
파일을 가져오면
함수를 하나하나 선언할
필요가 없어진다
물론 이렇게 상대경로로
가져오는 방법은 안 좋다
17. 암시적 링크 따라하기
• 주의할 점 2
• #pragma comment 말고 프로젝트 종속성에 lib 파일을 추가해도 된다
• 이건 static library 만드는 거랑 똑같아서 따로 설명하진 않음
• 외부에서 제공한 dll이 아니라 직접 만들어서 쓰는 dll이면 같은 솔루션
안에 프로젝트로 넣어 놓고 작업하는 편이 좋다
18. 명시적 링크
• 명시적 링크가 필요한 상황들이 있다
• 실행 시점까지 무슨 dll을 불러올지 모르는 경우
• 예를 들어 설정 파일에 따라 불러올 dll이 바뀌거나 하는 경우
• 암시적 링크는 dllmain 함수에 오류가 있거나, 해당 dll이 없으면
프로세스가 바로 죽는다
• 명시적 링크는 이런 상황에서 경로를 다시 설정하도록 하는 등 프로세스
가 에러에서 복구될 수 있는 기회를 준다
19. 명시적 링크
• dll을 많이 불러오는 프로세스는 암시적 링크로 만들었을 때 dll
로드에 시간이 많이 든다
• 실행 속도를 높이기 위해 즉시 사용할 함수들을 명시적으로 불러오고 나
머지 dll 파일을 암시적으로 가져올 수 있다
• 필요 없는 dll은 실행 도중에 해제할 수도 있다
• 프로그램과 import library 사이의 연결이 필요 없다
• 어차피 실행 도중에 불려오니까…
20. 명시적 연결 따라하기
• 세 가지 함수가 필요하다
• LoadLibrary
• 프로세스 내 주소 공간에 dll을 할당하는 함수이다
• 실패하면 NULL을 반환함
• DLL 파일의 usage count를 1씩 증가시킨다
• GetProcAddress
• Export된 심볼의 시작 주소를 얻어온다
• FreeLibrary
• DLL 파일의 usage count를 1씩 감소시키고, 0이 되면 파일 이미지를 매핑 해제
21. 명시적 연결 따라하기
• 암시적 연결과 비슷하게 헤더 파일을 가져와서 사용하는 함수 하
나를 만든다
당연히 안 된다