테크데이즈 코리아 2014 에서 "The Future of C# and .NET Framework"라는 제목으로 발표한 슬라이드 입니다. 관련 동영상 : http://www.microsoftvirtualacademy.com/training-courses/-techdays-korea-2014-t14
테크데이즈 코리아 2014 에서 "The Future of C# and .NET Framework"라는 제목으로 발표한 슬라이드 입니다. 관련 동영상 : http://www.microsoftvirtualacademy.com/training-courses/-techdays-korea-2014-t14
[TechDays 2015]에서 발표한 "두근두근 ASP.NET 5!" 세션의 발표 자료입니다.
ASP.NET의 Reboot이라고까지 불리는 ASP.NET 5를 미리 만나볼 수 있는 시간을 가져봅니다.
무엇이 달라졌고 개선되었는지, 또 어떤 매력을 가졌는지에 대해서 알아볼 수 있는 ASP.NET 5와의 첫 만남!
그 두근거림을 느껴 보시기 바랍니다.
[TechDays 2015]에서 발표한 "두근두근 ASP.NET 5!" 세션의 발표 자료입니다.
ASP.NET의 Reboot이라고까지 불리는 ASP.NET 5를 미리 만나볼 수 있는 시간을 가져봅니다.
무엇이 달라졌고 개선되었는지, 또 어떤 매력을 가졌는지에 대해서 알아볼 수 있는 ASP.NET 5와의 첫 만남!
그 두근거림을 느껴 보시기 바랍니다.
모바일, 융합, 데이터 관점에서 본 CES 2015 트렌드 & 인사이트 - 경희사이버대학교 모바일융합학과 FIT(Future IT Talk...Dylan Ko
경희사이버대학교 모바일융합학과와 벤처스퀘어가 진행하는 '내 몸에 꼭 맞는 fit한 IT 토크쇼 FIT(Future IT Talk)'의 첫 방송(2015년 2월 3일)에서, 제가 모바일융합학과의 데이터사이언스 전담 겸임교수로 발표한 내용의 발표 자료입니다.
세계 최대의 제품 박람회 중 하나인 CES(소비자가전박람회) 2015 의 핵심 트렌드가 무엇인지 사례로 살펴보고, 그 사례들에서 우리가 모바일과 융합, 데이터 관점에서 배워야 할 인사이트는 무엇인지 이야기했습니다.
* FIT 공식 블로그에서의 소개 글 - http://fit.or.kr/3
* 경희사이버대학교 모바일융합학과 - http://www.khcu.ac.kr/mobile/
* Gonnected Wisdom - http://www.gonnector.com
데이터 분석은 기업과 조직이 더 나은 비즈니스 결정을 내릴 수 있는 통찰력을 제공합니다.
진화하는 e비즈니스 특성에 맞추어 웹사이트의 목적과 성격이 다양해지고 있으며, 이에 따라 웹분석에서 요구되는 가치도 다양해지고 있습니다. 하지만 많은 기업이 적절한 웹분석 도구를 도입하더라도 분석데이터를 이해하고 활용하는데 어려움을 겪어 단순한 트래픽 측정수준에 머물러 있는 경우가 많습니다.
분석 보고서 서비스는 웹사이트에서 수집된 데이터를 분석하여 운용상태를 파악하고 더 나은 퍼포먼스를 내기 위한 '해답'을 제시함으로써, 웹분석의 진정한 가치를 찾을 수 있도록 합니다.bizspring.co.kr
본 샘플 보고서는 BizSpring SmartCare™서비스의 일부분 입니다.
6월14일 COEX에서 열린 정보처리학회의 IT 21 Conference에서 발표한 내용입니다.
스마트 기기의 확산과 함께 웹 기술의 진화는 빠르게 이루어지고 있다. 오늘날 웹 기술은 HTML5와 단말 API 등을 통해 단말의 HW을 제어하고 비동기적으로 원격 데이터베이스를 연동하며 다양한 응용 로직을 처리할 뿐아니라 웹 운영체제(OS)로까지 진화하고 있다. 그러나 웹 기술을 활용한 응용과 서비스가 많아짐에 따라 시스템의 복잡도가 높아지고 새로운 사용자 인터페이스에 대한 요구들도 높아지고 있다. 더불어 PC뿐 아니라 모바일, TV 등 다양한 단말 환경에서 웹 응용이 활용됨에 따라 단말과 플랫폼에 상관없이 보편적 서비스 환경으로 웹 UI/UX에 대한 관심들이 높아지고 있다. 이에 본 발표에서는 이처럼 변화되는 서비스 환경을 중심으로 보다 나은 웹 사용성을 제공하기 위해 진행되고 있는 다양한 모바일/멀티디바이스 웹 UI/UX 관련 이슈 및 기술 표준 동향에 대해 살피고, 향후 웹 사용자 편의와 사용자 경험 개선 극대화를 위해 나아갈 방향들에 대해 고찰해보고자 한다
웹 UI/UX에 관심 있는 분들은 참고해보시길 바랍니다.
[데브기어 온라인세미나] 20160504 새로 강화된 기능들 RAD Studio, Delphi, C++BuilderDevgear
2016년 4월 출시된 개발툴 RAD Studio의 새버전 10.1 베를린의 새로 강화된 기능들을 소개한 온라인 세미나의 발표자료입니다.
RAD Studio는 단 하나의 코드베이스로 윈도우, 맥, 안드로이드, iOS 앱을 개발할 수 있을 뿐만 아니라, 사물인터넷 앱을 가장 빨리 개발할 수 있는 개발툴입니다.
자세히 보기: www.devgear.co.kr/products/rad-stduio
본 자료는 2017년 4월 6일 진행된 온라인 세미나 'RAD Studio 10.2 도쿄' 출시 세미나 자료입니다.
RAD Studio는 오브젝트 파스칼, C++ 중 원하는 언어를 선택해 단 하나의 코드베이스로 윈도우, 리눅스, 맥, 안드로이드, iOS 앱을 개발해 배포할 수 있는 개발툴입니다.
2017년 3월 출시된 새버전 '10.2 도쿄'에서는 최초의 LLVM 기반의 리눅스 컴파일러를 선보였습니다.
본 세미나 관련 자료는 다음 링크를 통해 확인할 수 있습니다.
http://tech.devgear.co.kr/delphi_news/431914
Pivotal은 개발자 생산성을 높이고 운영비용을 줄이면서 성공적인 비지니스를 할 수 있도록 개발 환경의 혁신 문화와 플랫폼을 제공하고 있습니다.
본 세션에서는 플랫폼의 구조와 효과에 대해 소개하며 기업이 진정한 기술선도 업체로 발전해 갈 수 있도록 혁신적은 플랫폼 *PAS, *PKS를 소개합니다.
*PAS: Pivotal Application Service로 개발자에게 기능 구현 속도를 높이고, 운영 팀은 세계 최고 수준의 가용성을 제공해주는 서비스입니다.
*PKS: Pivotal Container Service로 Kubernates의 배포, 관리, 모니터링, 업데이트 등을 자동화하고 Pivotal에서 관리해주는 서비스입니다
RAD스튜디오는 항상 최신 OS 지원을 위해 꾸준히 업데이트 되고 있습니다.
이 자료는 2017년 11월 진행된 온라인 세미나의 발표자료입니다. RAD스튜디오 10.2 버전으로 최신 OS와 기술들을 프로젝트에 적용하고, 개발 영역을 확장하는 방법을 설명합니다.
다루는 내용은 다음과 같습니다:
[최신 기술 적용-운영체제와 기술]
- 윈도우 10, 멀티플랫폼 지원, 사물인터넷, 겟잇 패키지 매니저
[개발 영역 확장-플랫폼과 아키텍처]
- 파이어몽키 프레임워크, RAD서버, 엔터프라이즈 커넥터
*온라인 세미나 다시보기는 다음 링크를 활용하세요:
https://goo.gl/tJK765
Backend.AI (https://backend.ai)는 클라우드 및 온-프레미스 환경에서 여러 사용자가 안전하고 효율적으로 컴퓨팅 자원을 공유할 수 있는 머신러닝에 특화된 인프라 관리 프레임워크입니다. 현재 널리 사용되고 있는 오픈소스 기술인 OpenStack, Kubernetes 등과 비교하여 어떤 특징과 차이점이 있는지 소개하고, 프레임워크의 구조와 기반 기술 및 응용 사례를 데모와 함께 소개합니다.
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
마이크로서비스로 시스템을 구성하면 서비스간에 연관관계가 줄어들면서 서비스 릴리즈 속도가 높아지고 유연하게 대처할 수 있지만, 관리포인트가 늘어나게 되어 운영상에 많은 어려움을 마주치게 됩니다. 배포 될 때마다 생성되고 소멸되는 마이크로서비스를 다른 마이크로서비스가 쉽게 참조하게 하고 마이크로서비스들의 설정 정보를 일관되게 관리하는 일은 쉬운일이 아닙니다. 이러한 문제를 해결하기 위해 Spring Cloud 프로젝트와 같은 도구를 비롯하여 Pivotal Cloud Foundry와 같은 클라우드 플랫폼등이 있습니다. 이번 밋업에서는 마이크로서비스를 운영할 때의 어려운점과 도움을 주는 다양한 도구들에 대해 알아보도록 하겠습니다.
Openshift 활용을 위한 Application의 준비, Cloud Nativerockplace
What is Cloud-native - DevOps, MSA and Cloud-native: Openshift 활용을 위한 Application의 준비, Cloud Native
*웨비나 다시보기 영상 바로가기:
https://www.youtube.com/watch?v=tzSBS-vki6w
Imagine Cup 2015에 참가하기 위해서는, http://imaginecup.com에서 모든 팀원을 등록해야 합니다. Korea Round 제출물 제출 이외에도 반드시 팀 등록을 해야 하니 이 가이드 문서를 참고해 지금 바로 등록하세요. (제작자 : 남소정 인턴)
4. RyuJIT + SIMD
Garbage Collector
Runtime components Compilers
.NET Compiler Platform (Roslyn)
Languages innovation
.NET Framework 4.6
Fully-featured and integrated
.NET libraries and runtime for Windows
Modular and optimized
.NET libraries and runtimes
Base class libraries
NuGet packages
Libraries
9. 기능
WPF 투명 차일드 윈도우 지원
WPF 터치 동작에 대한 성능과 신뢰성 개선
멀티 터치 이벤트에 대하여 신뢰성 개선
UI 스레드가 바쁜 상황에서도 터치 동작이 원할 하도록 성능 개선
WPF 리스트에 대한 스크롤 가상화 개선
리스트상에 포함된 항목 조회의 신뢰성 향상
가상화 중에 레이아웃이 훼손되지 않도록 개선
WPF High DPI 지원 개선
다중 DPI 커서와 모니터 지원, 프레임워크 요소들에 대한 외곽 처리 개선
윈폼 High DPI 지원 개선
10. 라이브러리
WCF 개선
기존 SSL 3.0, TLS 1.0 지원에 TLS 1.1, TLS 1.2 지원 추가
다수의 HTTP 연결을 통해 메시지 전송
ADO.NET 개선
SQL Server 2016에서 사용할 수 있는 Always Encrypted 기능 지원
Async
비동기 제어 흐름상에서 특정 데이터를 유지할 수 있는 기능 추가
Network 관련 타입 개선
System.Net.Sockets, System.Uri 개선
암호화 관련 라이브러리 개선
11. 런타임
64비트 JIT 컴파일러 재작성(“RyuJIT”)
대용량의 64비트 클라우드 작업을 수행하기에 적합
64비트 CLR의 SIMD 지원
SSE2, AVX 등의 하드웨어를 지원
하드웨어 중립적인 코드 작성이 가능
가비지 수집기 개선
피닝(pinning)된 객체 최적화
Gen1에서 Gen2로의 프로모션을 메모리 효율적으로 수행하도록 개선
가비지 수집 금지 영역 지정
어셈블리 로더 성능 개선
12. 도구
새로운 Blend
솔루션 탐색기, 팀 탐색기, 편집기 등의 VS 기술을 결합
Roslyn 기반의 새로운 언어 서비스
속도와 신뢰성 개선
코드 중심의 워크스페이스, WPF의 In-Place 편집
디버깅
Xaml UI 디버깅 도구, 디버거가 결합된 분석 도구
분석
타임라인 기반 분석 도구
14. 참고자료
Announcing .NET Framework 4.6
http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-net-framework-4-6.aspx
.NET Framework의 새로운 기능
https://msdn.microsoft.com/library/ms171868.aspx#v46
NET Framework 4.6의 응용 프로그램 호환성
https://msdn.microsoft.com/library/dn833127.aspx
.NET Framework 4.6 list of changes
https://github.com/Microsoft/dotnet/blob/master/docs/releases/net46/dotnet46-changes.md
.NET Framework API diff
https://dotnet2015.blob.core.windows.net/changes/diff_net452_net46.html
.NET Framework Targeting Pack
http://www.microsoft.com/ko-kr/download/details.aspx?id=48136
Web installer(preferred)
http://www.microsoft.com/ko-kr/download/details.aspx?id=48130
Offline installer
http://www.microsoft.com/ko-kr/download/details.aspx?id=48137
17. RyuJit?
• .NET을 위한 차세대 64비트 JIT 컴파일러
• 코드 생성 속도 개선, 코드 품질 개선
• 고급 최적화 기능 포함(e.g. SIMD, …)
코드 품질
How fast generated code runs
코드 생성 속도
How fast JIT compiler generate app code
18. SIMD(Single Instruction Multiple Data)
• .NET에서 data parallelism을 사용할 수 있도록 함
• 게임, 수식 연산, 이미지 처리 등의 응용 프로그램의 성능을 개선
• nuget을 이용하여 .NET 라이브러리 형태로 이용 가능
29. public class Customer
{
public string First { get; set; } = "Jane";
public string Last { get; set; } = "Doe";
}
Initializers for auto-properties(C# 6.0)
Getter-only auto-properties(C# 6.0)
public class Customer
{
public string First { get; } = "Jane";
public string Last { get; } = "Doe";
}
30. Expression bodies on method-like members(C# 6.0)
public Point Move(int dx, int dy) => new Point(x + dx, y + dy);
public static Complex operator +(Complex a, Complex b) => a.Add(b);
public void Print() => Console.WriteLine(First + " " + Last);
public string Name => First + " " + Last;
public Customer this[long id] => store.LookupCustomer(id);
Expression bodies on property-like function members(C# 6.0)
String interpolation(C# 6.0)
var s = $"{p.Name} is {p.Age} year{{s}} old";
var s = $"{p.Name} is {p.Age} year{(p.Age == 1 ? "" : "s")} old";
31. using static System.Console;
using static System.Math;
using static System.DayOfWeek;
class Program
{
static void Main()
{
WriteLine(Sqrt(3 * 3 + 4 * 4));
WriteLine(Friday - Monday);
}
}
using static(C# 6.0)
32. int? length = customers?.Length; // null if customers is null
Customer first = customers?[0]; // null if customers is null
int length = customers?.Length ?? 0; // 0 if customers is null
Null-conditional operators(C# 6.0)
nameof expressions(C# 6.0)
if (x == null) throw new ArgumentNullException(nameof(x));
WriteLine(nameof(person.Address.ZipCode)); // prints "ZipCode"
Exception filters(C# 6.0)
try { … }
catch (MyException e) when(myfilter(e)) {}
33. Index initializers(C# 6.0)
var numbers = new Dictionary<int, string>
{
[7] = "seven",
[9] = "nine",
[13] = "thirteen"
};
try { res = await Resource.OpenAsync(…); }
catch (ResourceException e)
{ await Resource.LogAsync(res, e); }
finally { if (res != null) await res.CloseAsync();}
await in catch and finally blocks(C# 6.0)
35. Pattern Matching
if (o is Point p && p.X == 5) { WriteLine(p.Y); }
if (o is Point{ X is 5, Y is var y }) { WriteLine(y); }
if (o is Point(5, var y)) { WriteLine(y); }
switch (o)
{
case string s:
WriteLine(s);
break;
case Point(int x, int y):
Console.WriteLine($"({x},{y})");
break;
case null:
Console.WriteLine("<null>");
break;
}
36. Tuple
public (int sum, int count) Tally(IEnumerable<int> values) { … }
var t = Tally(myValues);
Console.WriteLine($"Sum: {t.sum}, count: {t.count}");
public async Task<(int sum, int count)> TallyAsync(IEnumerable<int> values) { … }
var t = await TallyAsync(myValues);
Console.WriteLine($"Sum: {t.sum}, count: {t.count}");
public (int sum, int count) Tally(IEnumerable<int> values)
{
var s = 0; var c = 0;
foreach (var value in values) { s += value; c++; }
return (s, c);
}
37. nullable references
Dog? nullableDog = new Dog("Nullable");
nullableDog.Bark(); Compiler Error – nullable 참조로는 dereference 하지 못함
cannot dereference nullable reference(yet)
if (nullableDog != null)
{
// 컴파일러는 이 scope 내에서는 nullableDog가 null이 아님을 안다.
nullableDog.Bark(); // OK
}
else
{
// 컴파일러는 이 scope 내에서는 nullableDog가 null임을 안다.
nullableDog.Bark(); // Compiler Error – nullable 참조로는 dereference하지 못함
}
38. Non-nullable references
Dog! mandatoryDog = new Dog("Mandatory");
mandatoryDog.Bark(); // OK – null 일 수 없으므로 method 호출 가능
string name = mandatoryDog.Name; // OK – null 일수 없으므로 property 참조 가능
48. Mono.NET Core 크로스 플랫폼
모바일 개발과
.NET/Xamarin 파트너쉽
.NET
Xamarin
Unity
서비스와 웹 응용 프로그램 모바일 앱
Windows Linux Mac OS X
.NET Core
ASP.NET 5
49. 64-bit JIT + SIMD
Garbage Collector
Runtime components Compilers
.NET Compiler Platform (Roslyn)
Languages innovation
.NET Framework 4.6 .NET Core 5
Fully-featured and integrated
.NET libraries and runtime for Windows
Modular and optimized
.NET libraries and runtimes
Base class libraries
NuGet packages
Libraries
50. • 리눅스 환경에서도 .NET 기반의 앱과 서비스를 수행
• 리눅스 환경에서 구동되는 .NET 기반의 앱을 Visual Studio를
이용하여 개발, 배포, 디버깅 수행
• OSX 사용자는 Visual Studio Code 등을 이용하여 Mac에서 .NET
code를 편집, 컴파일, 디버깅
• .NET Core 전체가 GitHub를 통해 오픈소스로 제공
개발자를 위한 이점
53. SSCLI (“Rotor”)
Mar 2002
WiX
Apr 2004
F#
May 2005
ASP.NET
Mar 2012
TypeScript
Oct 2012
Roslyn
Apr 2014
.NET Core
Nov 2014
Mono V1
Jun 2004
Mono
Started
~2002
54. .NET의 오픈 소스화
플랫폼
크로스 플랫폼 지원
오픈소스
RyuJIT, SIMD
Core-CLR
Runtime
components
Compilers
.NET Compiler Platform
(“Roslyn”)
Languages
.NET Core 5 Libraries
.NET Framework 4.6 Libraries
Libraries
.NET
Framework 4.6
.NET
Core 5
github.com/microsoft/dotnet
What is Microsoft open sourcing? (2015)
55. .NET API for Hadoop WebClient
.NET Compiler Platform ("Roslyn")
.NET Map Reduce API for Hadoop
.NET Micro Framework
ASP.NET MVC
ASP.NET Web API
ASP.NET Web Pages
ASP.NET SignalR
MVVM Light Toolkit
.NET Core 5
Orleans
MEF (Managed Extensibility Framework)
OWIN Authentication MiddlewareRx (Reactive Extensions)
Orchard CMS
Windows Azure .NET SDK
Thinktecture IdentityManager
WnsRecipe
Mimekit Xamarin.Auth
Xamarin.Mobile
Couchbase for .NET
Meet the people behind the .NET Foundation
http://www.dotnetfoundation.org/teamhttp://www.dotnetfoundation.org
@dotnetfdn
Mailkit
System.Drawing
ASP.NET 5
Salesforce Toolkits for .NET
NuGetKudu
Cecil
MSBuild
57. 감사합니다.
• MSDN Forum http://aka.ms/msdnforum
• TechNet Forum http://aka.ms/technetforum
Editor's Notes
Announcing .NET Framework 4.6
.NET Framework의 새로운 기능
https://msdn.microsoft.com/library/ms171868.aspx#v46
.NET Framework 4.6의 응용 프로그램 호환성
https://msdn.microsoft.com/library/dn833127.aspx
.NET Framework 4.6 list of changes
https://github.com/Microsoft/dotnet/blob/master/docs/releases/net46/dotnet46-changes.md
.NET Framework API diff
https://dotnet2015.blob.core.windows.net/changes/diff_net452_net46.html
.NET Framework Targeting Pack
http://www.microsoft.com/ko-kr/download/details.aspx?id=48136
Web installer(preferred)
http://www.microsoft.com/ko-kr/download/details.aspx?id=48130
Offline installer
http://www.microsoft.com/ko-kr/download/details.aspx?id=48137
Demo 시연
Demo 시연
Demo 시연
개발자는 개발시에 준 컴파일러 개발도구는 개발자를 더 잘 이해할 필요가 있다. 이를 위해서 개발 도구는 컴파일러를 이해해야 한다.
Demo 시연
Demo 시연
Cold Startup 40% 빨라지고, Memory Usage는 13% 정도 개선
Tailored to Mobile and Client
Desktop .NET is designed for a variety of client, server, and enterprise scenarios.
1.8 billion machines use Desktop .NET and it’s deployed as part of the OS.
.NET needs to run on phones and smaller. .NET Native has a small footprint.
Updates Don’t Break Developers
.NET Native statically links framework libraries with the application.
Apps adopt library innovations on their cadence.
Library innovations are delivered consistently across all devices.
Developers can be confident that Windows Update won’t break their app.
Better Optimizations
JIT-ing has to happen quickly. Optimized compiling doesn’t.
Moving all compilation steps to build time allows us to implement better optimizations.
We now use the C++ backend. T
New runtime mrt.dll(MR.T) 300K로 줄였다. CLR 6M가 넘는다.
Why store app : scope,
Desktop .NET은 NET의 usage scenari가 매우 복잡하고 많다. 다 할 수가 없다. 그래서 Win Store App 먼저..
하지만 멈추지 않을 것이다. Command line이나 WPF 응용 프로그램 등으로 확장 될 것이다.
.NET Deployment와 상관이 없다.
단일의 binary/ 더 이상 .net 을 설치할 필요가 없다. Runtime 조차도 xcopy로 복사
No JIT, S아 released
Static compilication of your .NET code
C++ compiler back end in order to generate MDIL
Machine Dependent IL -- > Native binary
Trident on windows phone, not need to load jit
JIT x64,32bit, arm. C# doesn’t are
MDIL binary that go on device and then the native major
C++ excellect optimization
No JIT, little bit of JIT, Jit can be useful(runtime compilation)
No JITing이 핵심은 아니다. .NET nativ는 단지 핵심적으로 성능과 관련된 여러가지 작업들을 수행했다.
Startup 시간은 최대 60% 빨라지고, 평균 40%정도 빨라진다.
이는 ngen이나 Trident
CLR runtim도 최적화 하였다. MRt100.dll minimum runtime static compile global 분석, global optimizatio을 수행, refactored and optimized libraries frame refactored and again optimized to make sure that app runs faster,
Today focus on store app for modern windows app for now
Tool Chain
C# code ->csc.exe->app.exe->ilc.exe(<-corefx.dll, not the same implementation but same framework, optimized winrt framework)
Ilc.exe has bunch of steps
MCG(Marshing Code Generation) -> g.cs 가 MCG로 들어간다. 다음으로 IL Transform->app.ildll ->Tree shaking UGC backend->MDIL(app.mdil)->rhbind
-> app.exe, app.dll
Windows Phone world. Compliation is happed cloud.
Windows Phone compiler doing(Mdil COMPILER)
Reflection is not allowed