[C++ Korea] Effective Modern C++ MVA item 9 Prefer alias declarations to type...Seok-joon Yun[C++ Korea] Effective Modern C++ MVA Item 9 Prefer alias declarations to typedefs +윤석준
[C++ korea] effective modern c++ study item 7 distinguish between () and {} w...Seok-joon Yun[C++ Korea] Effective Modern C++ Study (신촌) Item 7
Distinguish between () and {} when creating objects.
Object를 생성할 때 ()와 {}를 구분하라.
- 윤석준
[C++ Korea] Effective Modern C++ MVA item 8 Prefer nullptr to 0 and null +윤석준Seok-joon Yun[C++ Korea] Effective Modern C++ MVA item 8 Prefer nullptr to 0 and null +윤석준
C++17 Key Features Summary - Ver 2Chris OhkC++은 10년 만에 C++11/14를 발표하면서 '모던 C++'이라는 이름으로 발전했습니다. 그만큼 새로운 기능들이 많이 추가되었습니다. 그리고 2017년, C++은 C++17이라는 이름으로 또 한 번의 발전을 준비하고 있습니다. 3년 주기로 빠르게 변화하는 모던 C++에 대비하기 위해, C++17에 추가될 주요 기능들을 살펴보고자 합니다.
이 발표는 이전에 발표했던 내용에서 일부 사례 추가 및 최신 내용으로 갱신한 버전입니다.
C++20 Key Features SummaryChris Ohk모던 C++의 시초인 C++11은 C++ 코드 전반에 많은 변화를 가져왔습니다. 그리고 최근 C++20의 표준위원회 회의가 마무리되었습니다. 내년에 C++20이 도입되면 C++11이 처음 도입되었을 때와 비슷한 규모, 또는 그 이상의 변화가 있을 것이라고 예상하고 있습니다. C++20에는 Concepts, Contract, Ranges, Coroutine, Module 등 굵직한 기능 외에도 많은 기능들이 추가될 예정입니다. 이번 세션에서는 C++20에 추가될 주요 기능들을 살펴보고자 합니다.
[C++ Korea 2nd Seminar] C++17 Key Features SummaryChris OhkC++은 10년 만에 C++11/14를 발표하면서 '모던 C++'이라는 이름으로 발전했습니다. 그만큼 새로운 기능들이 많이 추가되었습니다. 그리고 2017년, C++은 C++17이라는 이름으로 또 한 번의 발전을 준비하고 있습니다. 3년 주기로 빠르게 변화하는 모던 C++에 대비하기 위해, C++17에 추가될 주요 기능들을 살펴보고자 합니다.
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기Chris Ohk기존에 작성해 놓은 C++ 코드에 모던 C++를 적용하기는 쉽지 않습니다. 막상 개선하려고 마음먹었다고 해도, 어디서부터 바꿔야 할 지 막막하기만 합니다. 이 세션에서는 기존 C++ 코드에서 모던 C++를 적용해 프로그램의 구조와 성능을 개선하는 방법에 대해서 설명합니다. 그리고 기존 C++ 코드에 모던 C++를 적용할 때 주의해야 될 점에 대해서도 살펴봅니다.
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...Seok-joon Yun[C++ Korea] Effective Modern C++ Study (신촌) Item 14
Declare functions noexceptif they won’t emit exceptions.
예외를 발생하지 않는 함수인 경우 noexcept를 선언하자.
- 윤석준
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23Seok-joon Yun[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
Item 20, 21, 23
Item 20 : Use std::weak_ptr for std::shared_ptr-like pointers that can dangle. +정은식
Item 21 : Prefer std::make_unique and std::make_shared to direct use of new. +이동우
Item 23 : Understand std::move and std::forward. +제한재
[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...Seok-joon Yun[C++ Korea] Effective Modern C++ Study
Item 19 Use shared_ptr for shared-ownership resource management
공유자원 관리엔 std::shared_ptr을 사용하자.
+윤석준
[C++ Korea] Effective Modern C++ Study item 24-26Seok-joon Yun[C++ Korea] Effective Modern C++ Study item 24-26
Item 24: Distinguish universal references from rvalue references. +석정로
Item 25 : Use std::move on rvalue references,
std::forward on universal references. +서승덕
Item 26 : Avoid overloading on universal references. +윤석준
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...Seok-joon YunEffective Modern C++item 18 Use std::unique_ptr for exclusive-ownership resource management +윤석준
- MVA Version
Nexon Developers Conference 2017 Functional Programming for better code - Mod...Isaac JeonNexon Developers Conference 2017
NDC 2017
더 좋은 코드를 위한 함수형 프로그래밍 - 모던 C++를 중심으로
전이삭
[C++ Korea] Effective Modern C++ Study item14 16 +신촌Seok-joon Yun[C++ Korea] Effective Modern C++ Study item14 16 +신촌
Item 14 : Declare functions noexcept if they won't emit exceptions. +윤석준
Item 15 : Use constexpr whenever possible. +이동우
Item 16 : Make const member functions thread safe. +제한재
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris OhkC++11을 시작으로 모던 C++이 도입된 지도 어느새 6년이라는 시간이 흘렀습니다. 올해는 C++17 표준이 도입될 예정입니다. 그만큼 많이 개선되고 새로운 기능들이 많이 도입되었기에 실무에서 사용해보고 싶은 경우도 많습니다. 하지만 이미 서비스 중이라 기존 프로젝트를 새 버전의 VS로 마이그레이션하기 어려운 프로젝트가 많습니다. 그렇다고 아예 불가능한 일도 아닙니다. 이번 세미나에서는 기존 프로젝트를 새 버전의 VS로 마이그레이션하면서 발생했던 문제와 마이그레이션 이후 모던 C++을 사용하면서 발생했던 문제, 그리고 해결법을 설명하고자 합니다. 또한 새 버전의 VS에 생긴 유용한 기능들도 함께 알려드립니다.
월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전 기법 세미나, C++ 게임 개발자를 위한 C# 활용기법tcaesvk2011-12-02
월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전 기법 세미나
C++20 Key Features SummaryChris Ohk모던 C++의 시초인 C++11은 C++ 코드 전반에 많은 변화를 가져왔습니다. 그리고 최근 C++20의 표준위원회 회의가 마무리되었습니다. 내년에 C++20이 도입되면 C++11이 처음 도입되었을 때와 비슷한 규모, 또는 그 이상의 변화가 있을 것이라고 예상하고 있습니다. C++20에는 Concepts, Contract, Ranges, Coroutine, Module 등 굵직한 기능 외에도 많은 기능들이 추가될 예정입니다. 이번 세션에서는 C++20에 추가될 주요 기능들을 살펴보고자 합니다.
[C++ Korea 2nd Seminar] C++17 Key Features SummaryChris OhkC++은 10년 만에 C++11/14를 발표하면서 '모던 C++'이라는 이름으로 발전했습니다. 그만큼 새로운 기능들이 많이 추가되었습니다. 그리고 2017년, C++은 C++17이라는 이름으로 또 한 번의 발전을 준비하고 있습니다. 3년 주기로 빠르게 변화하는 모던 C++에 대비하기 위해, C++17에 추가될 주요 기능들을 살펴보고자 합니다.
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기Chris Ohk기존에 작성해 놓은 C++ 코드에 모던 C++를 적용하기는 쉽지 않습니다. 막상 개선하려고 마음먹었다고 해도, 어디서부터 바꿔야 할 지 막막하기만 합니다. 이 세션에서는 기존 C++ 코드에서 모던 C++를 적용해 프로그램의 구조와 성능을 개선하는 방법에 대해서 설명합니다. 그리고 기존 C++ 코드에 모던 C++를 적용할 때 주의해야 될 점에 대해서도 살펴봅니다.
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...Seok-joon Yun[C++ Korea] Effective Modern C++ Study (신촌) Item 14
Declare functions noexceptif they won’t emit exceptions.
예외를 발생하지 않는 함수인 경우 noexcept를 선언하자.
- 윤석준
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23Seok-joon Yun[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
Item 20, 21, 23
Item 20 : Use std::weak_ptr for std::shared_ptr-like pointers that can dangle. +정은식
Item 21 : Prefer std::make_unique and std::make_shared to direct use of new. +이동우
Item 23 : Understand std::move and std::forward. +제한재
[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...Seok-joon Yun[C++ Korea] Effective Modern C++ Study
Item 19 Use shared_ptr for shared-ownership resource management
공유자원 관리엔 std::shared_ptr을 사용하자.
+윤석준
[C++ Korea] Effective Modern C++ Study item 24-26Seok-joon Yun[C++ Korea] Effective Modern C++ Study item 24-26
Item 24: Distinguish universal references from rvalue references. +석정로
Item 25 : Use std::move on rvalue references,
std::forward on universal references. +서승덕
Item 26 : Avoid overloading on universal references. +윤석준
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...Seok-joon YunEffective Modern C++item 18 Use std::unique_ptr for exclusive-ownership resource management +윤석준
- MVA Version
Nexon Developers Conference 2017 Functional Programming for better code - Mod...Isaac JeonNexon Developers Conference 2017
NDC 2017
더 좋은 코드를 위한 함수형 프로그래밍 - 모던 C++를 중심으로
전이삭
[C++ Korea] Effective Modern C++ Study item14 16 +신촌Seok-joon Yun[C++ Korea] Effective Modern C++ Study item14 16 +신촌
Item 14 : Declare functions noexcept if they won't emit exceptions. +윤석준
Item 15 : Use constexpr whenever possible. +이동우
Item 16 : Make const member functions thread safe. +제한재
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris OhkC++11을 시작으로 모던 C++이 도입된 지도 어느새 6년이라는 시간이 흘렀습니다. 올해는 C++17 표준이 도입될 예정입니다. 그만큼 많이 개선되고 새로운 기능들이 많이 도입되었기에 실무에서 사용해보고 싶은 경우도 많습니다. 하지만 이미 서비스 중이라 기존 프로젝트를 새 버전의 VS로 마이그레이션하기 어려운 프로젝트가 많습니다. 그렇다고 아예 불가능한 일도 아닙니다. 이번 세미나에서는 기존 프로젝트를 새 버전의 VS로 마이그레이션하면서 발생했던 문제와 마이그레이션 이후 모던 C++을 사용하면서 발생했던 문제, 그리고 해결법을 설명하고자 합니다. 또한 새 버전의 VS에 생긴 유용한 기능들도 함께 알려드립니다.
월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전 기법 세미나, C++ 게임 개발자를 위한 C# 활용기법tcaesvk2011-12-02
월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전 기법 세미나
NDC 11 자이언트 서버의 비밀승명 양2011 NDC(Nexon Developers Conference)에서 발표한 마비노기 영웅전(미국명 Vindictus)의 자이언트 서버 아키텍처에 대한 슬라이드입니다. 게임 서버의 분산 서비스 아키텍처를 바닥부터 만들어낸 과정과 결과에 대한 내용을 담고 있습니다.
NDC 2011, C++ 프로그래머를 위한 C#tcaesvkThis document summarizes the history of C# and .NET Framework versions from Visual Studio .NET Rainer in 2002 to Visual Studio 2010 Dev10. It covers features introduced in each new version of C# and .NET Framework including generics, LINQ, lambda expressions, extension methods, and more. It also briefly discusses the Reactive Extensions for .NET Framework 3.5 which added asynchronous programming capabilities using an observer pattern.
Cross linking PresentationperedelcampoEste documento describe la técnica de cross-linking para el tratamiento del queratocono. Explica que el cross-linking crea nuevos enlaces entre las fibras de colágeno de la córnea mediante la aplicación tópica de riboflavina y luz UV, lo que aumenta la resistencia de la córnea. Se detallan los pasos de la técnica quirúrgica, y se concluye que es un procedimiento eficaz y seguro para detener la progresión del queratocono.
[NDC] 인디 게임 개발사의 콘솔도전기Seokho LeeNDC 2015 이석호 - 인디 게임 개발사의 콘솔 도전기
Nexon Developer Conference 2015의 발표에 사용한 슬라이드입니다
콰트로기어에서 콘솔 게임 '블랙위치크래프트' 개발을 진행하면서
많은 질문을 받은 항목들을 콰트로기어의 사례와 함께 소개하였습니다
콘솔 게임 개발에 관심이 있는 개발자들에게 도움이 되는 정보가 되길 바랍니다
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung HaNDC 2017 발표 슬라이드
싵ӗ 영상 링크: https://youtu.be/e9Tv3jkmqKk
게임 내 정보를 추가 구현이나 패치 없이 실시간으로 수집할 수 있다면 어떨까요? 이런 아이디어를 실제로 가능하게 구현한 NEXON ZERO 발표 슬라이드 입니다.
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계Sungkyun Kim이미 많은 개발자들이 C#의 장점을 누리고 있으나, 본 PT에서는 높은 성능과 생산성을 동시에 달성하기 위해 C/C++로 개발된 native 게임 코드에 스크립트 언어로서 C#을 통합 할 수 있는 방법을 제시한다. 이를 위해 오픈소스 .Net 프레임웍인 Mono의 사용방법과 모바일 플랫폼에서의 특이사항들을 자세히 설명한다.
또한, C/C++언어에 C#을 비롯한 다양한 스크립트 언어를 효율적으로 혼합하여 게임을 구현할 수 있는 아키텍처를 제시한다. clang과 reflection을 이용하여 서로 다른 언어 간 인터페이스 노출을 자동화하고, 게임 내 오브젝트의 생명주기를 자동으로 관리할 수 있는 기법에 대해 설명한다.
20150212 c++11 features used in crowJaeseung Hahttp://github.com/ipkn/crow
Crow 프로젝트에서 사용한 C++11 기법들을 실제 구현에 대한 설명을 포함하여 자세히 설명한 발표자료입니다.
C++11 features used in Crow
video:
http://youtu.be/MixS9c3mE6U
https://vimeo.com/119627253
Going asynchronous with netty - SOSCON 2015Kris JeongPresentation document of netty at SOSCON 2015
Presentation title is "Going asynchronous with netty"
Speaker 정경석(Kris jeong)
18. 메시지 생성
C# : LCG (Lightweight Code Generation)
4.0에서는 Expression Trees로 대체 가능
var dm = new DynamicMethod(…);
var il = dm.GetILGenerator();
…
@delegate = dm.CreateDelegate(…);
C++ : Visual Studio 매크로 또는 하드 코딩
19. 쟁점
좋은 점
• C#은 데이터 형식만 만들면 직렬화 코드를
작성할 필요가 없다.
나쁜 점
• C++ 코드 생산성
• C# 형식의 가변성 / 제네릭 처리
20. 프로토콜 반복기 (client)
var op = new Operation() { … };
op.OnComplete += _ => { … }; // ②
op.OnFail += _ => { … }; // ②’
RequestOperation(loc, op); // ①
24. 대리자 기반
C# 대리자를 IDL (Interface Definition
Language)로 사용
[OperationContract]
public delegate bool
Authenticate(string credential);
ref T, out T
25. 코드 생성
C++ Client / CLI Service를 가정하고
C++ / CIL 코드 생성
Hindley-Milner 형식 유추
불변성 : ref
가변성
공변성 : out, return
반공변성 : in
26. 코드 사용 (C++ client)
channel->BeginAuthenticate(
credential, endAuthenticate,
object);
void EndAuthenticate(IAsyncResult*
asyncResult)
{
bool result = channel->
EndAuthenticate(asyncResult);
}
27. 코드 사용 (CLI server)
public void Handle(
long clientID,
ref AuthenticateInvoke arg)
{
var response =
new AuthenticateReturn(
ref arg,
Validate(arg.Credential));
Server.Current.Return(
clientID, ref response);
}
28. 쟁점
좋은 점
C#에서 패킷을 기술하면 클래스 자동 생성
나쁜 점
프로토콜의 연관성을 기술할 방법이 없음
클라이언트/서비스 코드의 대칭성 없음
높은 요구 배경 지식 Copy&Paste
유지보수성 (C++ / CIL)
33. 코드 사용 (client)
public void SampleMethodAsync(int arg1, ref
float arg2);
public void SampleMethodAsync(int arg1, ref
float arg2, object userState);
public event
SampleMethodCompletedEventHandler
SampleMethodCompleted;
protected IAsyncResult BeginSampleMethod(int
arg1, ref float arg2, AsyncCallback
callback, object @object);
protected bool EndSampleMethod(IAsyncResult
asyncResult, out float arg2, out string
arg3);
34. 코드 사용 (client)
// C#
client.SampleMethodAsync(arg1, ref arg2,
e =>
{
try
{
string arg3;
var result = e.Return(
out arg2, out arg3);
…
}
catch (CommunicationException)
{
…
}
});
35. 코드 사용 (client)
// C++
using namespace IServiceProviderEvents;
…
client->SampleMethodCompleted() +=
new SampleMethodCompletedEventHandler(*this, &OnSampleMethodCompleted);
…
client->SampleMethodAsync(arg1, arg2);
void OnSampleMethodCompleted(Object* sender, SampleMethodCompletedEventArgs* e)
{
try
{
float arg2;
String arg3;
bool result = e->Return(arg2, arg3);
…
}
catch (const Pointer<Exception>&)
{
…
}
}
36. 코드 사용 (server)
// C#
public override bool SampleMethod(
int arg1, ref float arg2,
out string arg3)
{
…
}
// C++
bool SampleMethod(int arg1, float& arg2,
/*out*/String& arg3)
{
…
}
37. 쟁점
좋은 점
작업을 위해 필요한 코드의 자동 생성으로
실제 개발에 투하되는 시간을 확보
C++ / CLI 양 쪽에서 일관성 있게 작업
나쁜 점
상속을 사용해서 생기는 제약