니름은 마이크로서비스를 위한 인터페이스 정의 언어(IDL) 컴파일러이자 원격 프로시저 호출(RPC) 프레임워크입니다. 스포카에서 서비스 지향 설계(SOA)를 적극적으로 도입하면서 쓰기에 적합하도록 구현되었습니다.
제품을 개선하기 위해서는 코드를 고쳐야 합니다. 그런데, 고친 코드가 행여 제품을 망가뜨리는 것이 아닐까 망설이고 고민할 때가 많습니다. 단위 테스트가 있다면 제품을 안전하고 빠르게 개선할 수 있습니다. 하지만 서비스 지향 설계로 제품을 만들다 보면 여러 개의 서비스들이 서로 통신하게 됩니다. 그리고 다른 서비스에 통신하는 기능도 단위 테스트를 작성해야 합니다.
서비스 간 단위 테스트는 까다로운 처리가 많이 필요합니다: 단위 테스트 안에서 요청을 흉내 내기, 실제 서비스를 띄워서 단위 테스트에서 테스트용 서비스에 요청하거나, 또는 요청과 응답을 흉내 내기, 요청한 내용을 역직렬화하고 응답할 내용을 직렬화 하기 등… 니름을 사용하여 서비스를 작성하면 서비스의 인터페이스와 구현을 분리할 수 있습니다.
요청이나 직렬화 등의 작업도 니름이 대신 처리하므로 추상화됩니다. 따라서 단위 테스트를 쉽게 작성할 수 있습니다. 서비스 지향 설계에서 니름을 사용하여 단위 테스트를 작성하면서 느낀 장점과 이것이 기존 방법들과 어떤 차이가 있는지 공유하고 싶습니다.
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
C++11을 시작으로 모던 C++이 도입된 지도 어느새 6년이라는 시간이 흘렀습니다. 올해는 C++17 표준이 도입될 예정입니다. 그만큼 많이 개선되고 새로운 기능들이 많이 도입되었기에 실무에서 사용해보고 싶은 경우도 많습니다. 하지만 이미 서비스 중이라 기존 프로젝트를 새 버전의 VS로 마이그레이션하기 어려운 프로젝트가 많습니다. 그렇다고 아예 불가능한 일도 아닙니다. 이번 세미나에서는 기존 프로젝트를 새 버전의 VS로 마이그레이션하면서 발생했던 문제와 마이그레이션 이후 모던 C++을 사용하면서 발생했던 문제, 그리고 해결법을 설명하고자 합니다. 또한 새 버전의 VS에 생긴 유용한 기능들도 함께 알려드립니다.
니름은 마이크로서비스를 위한 인터페이스 정의 언어(IDL) 컴파일러이자 원격 프로시저 호출(RPC) 프레임워크입니다. 스포카에서 서비스 지향 설계(SOA)를 적극적으로 도입하면서 쓰기에 적합하도록 구현되었습니다.
제품을 개선하기 위해서는 코드를 고쳐야 합니다. 그런데, 고친 코드가 행여 제품을 망가뜨리는 것이 아닐까 망설이고 고민할 때가 많습니다. 단위 테스트가 있다면 제품을 안전하고 빠르게 개선할 수 있습니다. 하지만 서비스 지향 설계로 제품을 만들다 보면 여러 개의 서비스들이 서로 통신하게 됩니다. 그리고 다른 서비스에 통신하는 기능도 단위 테스트를 작성해야 합니다.
서비스 간 단위 테스트는 까다로운 처리가 많이 필요합니다: 단위 테스트 안에서 요청을 흉내 내기, 실제 서비스를 띄워서 단위 테스트에서 테스트용 서비스에 요청하거나, 또는 요청과 응답을 흉내 내기, 요청한 내용을 역직렬화하고 응답할 내용을 직렬화 하기 등… 니름을 사용하여 서비스를 작성하면 서비스의 인터페이스와 구현을 분리할 수 있습니다.
요청이나 직렬화 등의 작업도 니름이 대신 처리하므로 추상화됩니다. 따라서 단위 테스트를 쉽게 작성할 수 있습니다. 서비스 지향 설계에서 니름을 사용하여 단위 테스트를 작성하면서 느낀 장점과 이것이 기존 방법들과 어떤 차이가 있는지 공유하고 싶습니다.
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
C++11을 시작으로 모던 C++이 도입된 지도 어느새 6년이라는 시간이 흘렀습니다. 올해는 C++17 표준이 도입될 예정입니다. 그만큼 많이 개선되고 새로운 기능들이 많이 도입되었기에 실무에서 사용해보고 싶은 경우도 많습니다. 하지만 이미 서비스 중이라 기존 프로젝트를 새 버전의 VS로 마이그레이션하기 어려운 프로젝트가 많습니다. 그렇다고 아예 불가능한 일도 아닙니다. 이번 세미나에서는 기존 프로젝트를 새 버전의 VS로 마이그레이션하면서 발생했던 문제와 마이그레이션 이후 모던 C++을 사용하면서 발생했던 문제, 그리고 해결법을 설명하고자 합니다. 또한 새 버전의 VS에 생긴 유용한 기능들도 함께 알려드립니다.
[C++ Korea 2nd Seminar] C++17 Key Features SummaryChris Ohk
C++은 10년 만에 C++11/14를 발표하면서 '모던 C++'이라는 이름으로 발전했습니다. 그만큼 새로운 기능들이 많이 추가되었습니다. 그리고 2017년, C++은 C++17이라는 이름으로 또 한 번의 발전을 준비하고 있습니다. 3년 주기로 빠르게 변화하는 모던 C++에 대비하기 위해, C++17에 추가될 주요 기능들을 살펴보고자 합니다.
모던 C++의 시초인 C++11은 C++ 코드 전반에 많은 변화를 가져왔습니다. 그리고 최근 C++20의 표준위원회 회의가 마무리되었습니다. 내년에 C++20이 도입되면 C++11이 처음 도입되었을 때와 비슷한 규모, 또는 그 이상의 변화가 있을 것이라고 예상하고 있습니다. C++20에는 Concepts, Contract, Ranges, Coroutine, Module 등 굵직한 기능 외에도 많은 기능들이 추가될 예정입니다. 이번 세션에서는 C++20에 추가될 주요 기능들을 살펴보고자 합니다.
Legacy code refactoring video rental systemJaehoon Oh
Legacy Code Refactoring
- 마틴 파울러의 Refactoring 책 1장 예제를 워크샾 형태로 구성했다.
- 레거시 코드인 비디오 렌탈 시스템을 리팩토링 하는 방법을 단계적으로 살펴본다.
- 마이클 페더스의 Characterization Test 방법을 이용해서 Legacy Code 의 테스트를 작성한다.
- 새로운 기능을 추가할 때는 Sprouting Pattern(마이클 페더스가 만든 용어)를 이용해서 기능을 추가한다.
- 코드 스멜을 찾고 코드 스멜을 제거하면서 코드의 설계를 개선한다.
자바 개발자가 파이썬 개발을 배우면서 실무에 활용하고 집필을 하면서 겪었던 경험담 및 생각을 코드와 함께 풀어본다. 자바에 익숙한 사람이 파이썬을 배우고 있거나, 자바와 파이썬의 사이에서 고민을 했던 사람들에게 비교를 위한 기본 정보를 제공한다. 더 나아가 컴파일 언어와 스크립트 언어의 차이점, 개발 생산성을 측정할때 간과하는 컴파일 시간 및 순수 코딩 시간에 대한 통찰을 이끌 생각이다.
[C++ Korea 2nd Seminar] C++17 Key Features SummaryChris Ohk
C++은 10년 만에 C++11/14를 발표하면서 '모던 C++'이라는 이름으로 발전했습니다. 그만큼 새로운 기능들이 많이 추가되었습니다. 그리고 2017년, C++은 C++17이라는 이름으로 또 한 번의 발전을 준비하고 있습니다. 3년 주기로 빠르게 변화하는 모던 C++에 대비하기 위해, C++17에 추가될 주요 기능들을 살펴보고자 합니다.
모던 C++의 시초인 C++11은 C++ 코드 전반에 많은 변화를 가져왔습니다. 그리고 최근 C++20의 표준위원회 회의가 마무리되었습니다. 내년에 C++20이 도입되면 C++11이 처음 도입되었을 때와 비슷한 규모, 또는 그 이상의 변화가 있을 것이라고 예상하고 있습니다. C++20에는 Concepts, Contract, Ranges, Coroutine, Module 등 굵직한 기능 외에도 많은 기능들이 추가될 예정입니다. 이번 세션에서는 C++20에 추가될 주요 기능들을 살펴보고자 합니다.
Legacy code refactoring video rental systemJaehoon Oh
Legacy Code Refactoring
- 마틴 파울러의 Refactoring 책 1장 예제를 워크샾 형태로 구성했다.
- 레거시 코드인 비디오 렌탈 시스템을 리팩토링 하는 방법을 단계적으로 살펴본다.
- 마이클 페더스의 Characterization Test 방법을 이용해서 Legacy Code 의 테스트를 작성한다.
- 새로운 기능을 추가할 때는 Sprouting Pattern(마이클 페더스가 만든 용어)를 이용해서 기능을 추가한다.
- 코드 스멜을 찾고 코드 스멜을 제거하면서 코드의 설계를 개선한다.
자바 개발자가 파이썬 개발을 배우면서 실무에 활용하고 집필을 하면서 겪었던 경험담 및 생각을 코드와 함께 풀어본다. 자바에 익숙한 사람이 파이썬을 배우고 있거나, 자바와 파이썬의 사이에서 고민을 했던 사람들에게 비교를 위한 기본 정보를 제공한다. 더 나아가 컴파일 언어와 스크립트 언어의 차이점, 개발 생산성을 측정할때 간과하는 컴파일 시간 및 순수 코딩 시간에 대한 통찰을 이끌 생각이다.
Devtree에서 진행했던 Lightmapping workshop 1일차 자료.
Full version은 다음 링크에서 받으실수 있습니다 : http://illu.tistory.com/1178
비엘북스에서 출간된 유니티, 언리얼 그리고 VR편을 보시면 좀 더 이해가 쉽습니다. 본 슬라이드 셰어 내용은 기본적인 내용만 설명되어있습니다.
Light Tutorial Django
Studybee 3주차 - 가볍게 배우는 장고!!
Django를 이용해 블로그를 만들기 전에 가볍게 Django에 대해 알아보고 익숙해져 봅시다.
**http://www.studybee.kr 에서 운영하는 '초심자를 위한 웹개발' 클래스에서 만드는 교재이며,
장고를 이용해 간단하게 블로그를 만드는 것을 목표로 하고 있습니다.
Chapter 2. 업무 자동화를 위한 컴퓨터 세팅 | 6개월 치 업무를 하루 만에 끝내는 업무자동화 |...Byunghyun Ban
* SlideShare 오류로 빈 화면이 나올 경우 다운로드하여 이용해주시기 바랍니다.
<6개월 치 업무를 하루 만에 끝내는 업무 자동화, 2020, 생능출판사>의 수업용 PPT 자료입니다. 교재로 활용하실 경우 출판사를 통해 한 학기 분량의 PPT를 제공받으실 수 있습니다.
3. 2
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
https://www.assetstore.unity3d.com/kr/#!/content/10761
Sonagi
Debug
Watcher
Console
에셋스토어에서
30$에 판매중
4. 3
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
https://www.assetstore.unity3d.com/kr/#!/content/10761
Sonagi
Debug
Watcher
Console
에셋스토어에서
30$에 판매중
5. 4
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
Sonagi
Debug
Watcher
Console
에셋스토어에서
30$에 판매중
https://www.assetstore.unity3d.com/kr/#!/content/10761
6. 5
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
Sonagi
Debug
Watcher
Console
에셋스토어에서
30$에 판매중
https://www.assetstore.unity3d.com/kr/#!/content/10761
7. 6
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
Sonagi
Debug
Watcher
Console
에셋스토어에서
30$에 판매중
https://www.assetstore.unity3d.com/kr/#!/content/10761
8. 7
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
Sonagi
Debug
Watcher
Console
에셋스토어에서
30$에 판매중
https://www.assetstore.unity3d.com/kr/#!/content/10761
9. 8
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
https://www.assetstore.unity3d.com/en/#!/content/18424
CVS Viewer
에셋스토어에서
2$에 판매중
10. 9
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
Effect UI사이에 낑겨 넣기
UIEffect로 변신하기
11. 10
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
http://www.tasharen.com/forum/index.php?topic=393.0
12. 11
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
http://www.tasharen.com/forum/index.php?topic=393.0
13. 12
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
http://www.tasharen.com/forum/index.php?topic=393.0
그래서 코드에서 UITexture의 Widget을 받아와 파티클 시스템 렌더러의
renderQue를 바꿔주면 됨
14. 13
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
https://kldp.org/node/120862
Excel파일 csv파일로 저장하기
엑셀은 csv 저장시에 기본값으로 ansi 인코딩을 따르는데
Save as 옵션에서 인코딩을 변경할수는 있으나 안돼요
왜 안되는지는 모르겠으나
안돼요
Notepad에서도 깨져요
그래서 인터넷에서 찾아보니
유니코드 텍스트로 저장해 메모장에서 인코딩을 UTF-8로 저장한 뒤
일본어와 번체 등등등을 지원하는 프로그램으로 열어 t를 모두 ,로
변환하는 방식을 취하고 있더랍니다.
여태까지도 그렇게 써왔대요
프로그래머분이 excel파일을 받아서 csv파일로 변환했었다고 합니다.
15. 14
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
https://jaimonmathew.wordpress.com/2011/08/23/excel_addin_to_work_with_unicode_csv/
Excel파일 csv파일로 저장하기
16. 15
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
https://jaimonmathew.wordpress.com/2011/08/23/excel_addin_to_work_with_unicode_csv/
Excel파일 csv파일로 저장하기
17. 16
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
Excel파일 csv파일로 저장하기
또한 csv파일은 ’,’ 로 구분해서 저장되게 되어있는데 (default)
Cell 내용에 ‘,’가 들어있으면 구분하게 되어버려요.
그래서 Cell 내용을 적을 때는 “” 사이에 넣어 구분을 한다고 합니다.
18. 17
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
https://www.assetstore.unity3d.com/en/#!/content/18424
CVS Viewer
에셋스토어에서
2$에 판매중
19. 18
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
https://www.assetstore.unity3d.com/en/#!/content/18424
CVS Viewer
20. 19
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
Unity에서 Linq 쓰기
http://neue.cc/2014/07/01_474.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public interface IMyInterface
{
void MyMethod < T > ( T x ) ;
}
public class MyImpl : IMyInterface
{
public void MyMethod < T > ( T x )
{
}
}
IMyInterface intf = new MyImpl ( ) ;
intf. MyMethod ( "hogehoge" ) ; // 죽지 않는다
// System.ExecutionEngineException : Attempting to JIT compile method
//'MyImpl : MyMethod <int> (int)'while running with --aot-only.
intf. MyMethod ( 100 ) ; // 죽는다 c
제네릭 메서드를 인터페이스로 받아
구조체를 전달하면 죽는다.
21. 20
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
Unity에서 Linq 쓰기
1
2
3
4
5
// 어디서나 좋고 호출하지 않아도 좋으니까 사용 구조의 형태를 부르는 코드를 어딘가에 써 두는
static void _CompilerHint ( )
{
new MyImpl ( ) . MyMethod ( default ( int ) ) ;
}
결론은
1. 인터페이스를 안받도록 하기.
2. 받아야 할 상황이 있다면 어딘가에 코드를 써놓는다.
3. 제네릭메소드가 아니라 인터페이스라면 죽지 않는다.
//IMyInterface <T> 이런식으로
http://neue.cc/2014/07/01_474.html
22. 21
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
Unity에서 Linq 쓰기
1
2
3
4
5
6
7
8
9
10
11
12
static void Death < T > ( )
{
// 여기에서는 아직 죽지 않는다
var ACT = new Action < T > ( _ => { Debug. Log ( "hoge" ) ; } ) ;
// System.ExecutionEngineException : Attempting to JIT compile
// method '<Death> b__0 <int> (int)'while running with --aot-only.
act ( default ( T ) ) ; // 호출하면 죽을
}
// 이런 코드 호출하면 죽을
Death < int > ( ) ; c
http://neue.cc/2014/07/01_474.html
23. 22
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
Unity에서 Linq 쓰기
1
2
3
4
5
6
7
8
9
10
11
12
static void Death < T > ( )
{
var _dummy = 0;
var ACT = new Action < T > ( _ =>
{
Debug. Log ( "hoge" ) ;
_dummy. GetHashCode ( ) ; // 뭐라도 외부 변수를 캡처
} ) ;
act ( default ( T ) ) ; // 죽지 않는다
} c
작성자의 말을 빌리면 캡쳐 안한게 성능상 더 좋긴 한데
AOT에서 죽으면 그딴거 다 소용 없다고 쓰라고 합니다
http://neue.cc/2014/07/01_474.html
24. 23
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
Unity에서 Linq 쓰기
Linq에서 죽는것도 Lambda와 Generics와 Struct 조합같이 Generics의 메
소드 값에서 Lambda가 호출되고 있을 가능성이 매우 높음
해결 방법은 dll코드이기 때문에 수정할수 없음
그래서 보통 사용을 안하고는 하는데
문제는 mono 2.8에서 개선되었다고 합니다
근데 유니티 mono는 2.8이 아닌게 함정인겁니다.
유니티 4.5.1 기준으로 mono버전은 2.6이라고 합니다
직접 구현하던가 아니면
http://neue.cc/2014/07/01_474.html
25. 24
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
Unity에서 Linq 쓰기
https://www.assetstore.unity3d.com/kr/#!/content/18131
26. 25
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
Unity에서 Linq 쓰기
https://github.com/RyotaMurohoshi/UniLinq
27. 26
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
Unity에서 Linq 쓰기
http://qiita.com/RyotaMurohoshi/items/d3a2068f1ad787325ec0
새 mono에서는 해결이 되었으니 그 코드를 복붙해서 해결하면 되지 않을까
라고 생각해서 해봤는데 안됐다고 합니다.
그 외에 여러가지 우회 방법을 사용했으나 몇가지는 아직 예외가 발생해서 아
마 mono의 Linq 외에 컴파일러에서 변형이 있지 않았을까 추측한다고 합니
다.
LINQ to Objects 관련 코드를 복붙했고
네임스페이스를 System.Linq에서 UniLinq로 변경
.NET Framework4 이상이 아니면 안되는 #ifdef를 적절하게 변경
FULL_AOT 라는 #ifdef 가 있으면 그쪽의 코드를 사용하도록 변경
Function <T> .Identity()와 PredicateOf <T> .Always를 사용하지 않도록
변경
GetEnumerator 메서드가 호출되므로 정의할 필요가 없는 메소드 정의를 추
가 하였다고 합니다.
28. 27
03 정식출근
뭐 여하튼 출근을 하게 됐습니다
자 여기서 공유합니다 우리 프로젝트 좋은 것 배운 것
Unity에서 Linq 쓰기
http://qiita.com/RyotaMurohoshi/items/6fb02e50d9e08b487f47
요딴 라이브러리 믿을수 없다 이런분들을 위해서
해결방법도 있어요~
왜냐하면 제작자가 설명을 해주거든요~
는 가서 읽어보시면 될 것 같습니다.