일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- validation
- 저장프로시저
- TPL
- 영어공부
- execution plan
- C#
- SQL Server Optimizer
- fast in ssms
- IdentityServer4
- async await
- 실행계획 원리
- stored procedure
- ThreadPool
- identityserver
- task
- MSSQL
- oauth2
- slow in the application
- SQLServer
- english
- Dataannotation
- async
- .net
- esl
- SSMS
- query
- identityserver3
- 쿼리 최적화
- await
- 느린 저장프로시저
- Today
- Total
목록2018/07 (13)
Genius DM
See content in English Span Background.NET 은 관리되는 플랫폼으로, 관리된다는 의미는 메모리 접근 및 관리가 안전하면서도 자동으로 관리된다는 의미이다. 모든 타입이 .NET 에 의해 관리되며 .NET 은 실행 스택이나 Managed Heap 상의 메모리를 할당해준다. 플랫폼간 이벤트나 아래 단의 개발을 할 때 네이티브 객체에 대한 접근을 원하거나 시스템 메모리 접근을 원할 수도 있는데, 바로 이것 때문에 interop 이 생겼다. .NET 에는 네이티브 세계로 마샬링될 수 있는 타입들이 존재하며 해당 타입들은 네이티브 API 를 호출하거나 관리되는/네이티브 타입으로 변환할 수 있고 관리되는 코드 상에서 네티이브 구조체를 정의할 수도 있다. 문제점 1 : 메모리 엑세스 패..
See content in English Tuples 튜플에 대해서 알아보자 TuplesSystem.Tuple 네임스페이스로 Key / Value 형태의 속성을 담을 수 있는 형태의 타입을 제공한다. 별도의 타입을 만들기는 싫은데 프로퍼티를 포함한 객체를 지닌 자료 구조를 만들고 싶을 때 사용할 수 있다. 아래 코드는 이름과 나이를 지닌 한 학생의 값을 반환 값으로 사용하는 예제이다. public Tuple GetStudentInfo(string id) { // Search by ID and find the student. return new Tuple("Annie", 25); } Tuple 의 인스턴스를 반환하고 있는데, 첫 번째가 이름이고 두 번째 인자가 나이이다. 추후에 이 메서드를 호출하기 위해 ..
See content in English Quick Diagram Tool For C# Visualstudio Extension 툴 하나를 소개할까 한다. Code visualization 툴 중의 하나인데, Framework 분석할 때, 상속 관계를 한 눈에 보고 싶을 때 사용하기 간편해서 애용하는 편이다. 설치Visualstudio 상단에 도구를 클릭하면 확장 및 업데이트(U) 메뉴가 나온다. 그것을 누르자. 검색을 Quick diagram 으로 검색하면, Quick diagram tool for C# 이 보일 것이다. 그것을 설치한다. 사용하기이제 상속관계를 조사하고 싶은 Class, Interface 등의 개체를 우클릭하면 툴팁 메뉴 최하단에 Add to Quick DiagramAdd to Qui..
See content in English jog your memory Netflix 보다가 사진을 들이밀면서 " 제 얼굴이 기억 안난다구요? 이 사진 보면 기억 날텐데... " 하는 뉘앙스로 어떤 사진을 들이밀면서 You don't know me? Well this one might jog your memory 주인공이 이런 대사를 했다. Context 상으로 이해가 가능해서 굳이 사진 찾아보지 않아도 jog 가 " help someone remember something " 정도 될 것이라는 것을 유추해볼 수 있다. 만약 감이 안오더라도 이렇게 Context 에 기반하여 유추하는 훈련을 해야 영어 감각이 좋아진다. jog 는 조깅할 때 그 jog 가 맞다. 뛰는 의미로써 jog 는 사전의 1번 뜻이고,..
See content in English IdentityServer 간략 구조 IdentityServer 의 간략한 구조를 살펴보고자 한다. OverviewOWIN Open Web Interface for .NET 의 약자이다. http://owin.org/html/spec/owin-1.0.html 에 인터페이스에 대한 정의 및 프로토콜이 명시되어 있다. 기존 ASP.NET 의 지나친 IIS 결합도, 그리고 너무 무거운 System.Web 의 의존성을 탈피하고자 탄생한 인터페이스이다. OWIN 을 통해서 Console Application 은 물론 원하는 Application 도메인에서 호스팅이 가능하며, Func Delegate 를 Middleware 라고 부르는 것이 특징이다. IdentityServ..
See content in English IdentityServer Basic IdentityServer 와 관련된 용어와, 특히 OAuth2 Flow 에 대해서 알아보자. IdentityServer?OpenID 스펙을 구현한 .NET/Katana 기반 프레임워크. OP ( OpenID Connect Provider 라고도 부름 )OpenID Connect specification / OAuth2 specification Protocol TermsOIDC ( OpenID Connect ) OAuth2 기반 Security Layer ( IETF 스펙 아님 ) OAuth2 Access Control 을 위한 RFC 프로토콜 ( IETF 스펙 ) OP ( OpenID Connect Provider ) STS..
See content in English Slow in the Application, Fast in SSMS? Part 2 쿼리 실행 계획을 캐싱하기 SQL Server 가 매번 프로시저를 실행할 때 마다 컴파일 한다면 SQL Server 가 차지하는 CPU 자원 때문에 성능이 저하되는 엄청난 리스크를 겪게될 것이다. 하지만 이 경우가 모든 시스템에 해당되는 사항은 아니기에, 이런 문제에 대해 규명이 필요하다고 느꼈다. 만약 비교적 다수의 비즈니스 분석가들이 평균 1분 정도 소요되는 복잡한 쿼리를 돌리는 빅데이터 웨어하우스 시스템을 생각해보자. 이런 경우라면 매번 프로시저를 컴파일 하는 것이 악영향을 끼치기는 커녕, 오히려 이득을 볼 것이다. 그러나 OLTP 데이터베이스 처럼 다수의 유저들이 짧고도 간단..
See content in English 어플리케이션에서는 느리고, SSMS 에서는 빠르다? Part 1 들어가기 전에예제로 들어가기에 앞서 Northwind 샘플 데이터베이스를 사용했음을 알린다. 해당 데이터베이스는 SQL 2000 에 포함되어있다. 이후 버전은 Microsoft's web site. 에서 다운로드 할 수 있다. 포스트 내용의 핵심적인 것은 모든 버전의 SQL Server 에 적용되긴 하지만, 어쨌든 SQL 2005 혹은 그 이후 버전을 중점적으로 작성되었음을 알린다. 이 포스트에서는 캐싱 계획을 조사하는 몇 가지 쿼리를 다룬다. SQL 2000 이전 버전은 캐싱 계획 측면에서 매우 성능이 낮은 편이다. 포스트에서 제시하는 쿼리를 수행하기 위해서는 서버 상태를 조회할 수 있는 서버 레벨..
See content in English 제너릭의 공변성과 반공변성 제너릭에서 공변성과 반공변성 하나의 용어이자, 최초에 정의된 타입보다 더 정확하거나, 덜 정확한 파생 타입을 사용할 수 있는지에 대한 여부를 결정하는 특성이다. 무슨 말인지 이해가 안 될지도 모른다, 하지만 코드를 보면 이해가 빠를 것이다. 샘플 모델 - Cup > Base 클래스.- PlasticCup > Cup 을 상속하는 파생 클래스.- PaperCup > Cup 을 상속하는 파생 클래스. 이렇게 베이스 클래스와 파생 클래스는 다형성으로 인해 아래와 같은 할당이 가능해진다. IEnumerable plasticCups = new List(); IEnumerable cups = plasticCups; 단순히 베이스 클래스와 파생 클래스..
See content in English 내가 ~ 만큼 앞서고 있었는데 !! 스포츠 게임이든, 실제 게임이든 이기고 있을 때와, 지고 있을 때가 있을 것이다. 축구에서 대한민국 2:1 미국 스코어로 후반 40분까지 지속했다고 가정해보자. 42분에 미국의 동점골이 터지고, 2분 뒤에 바로 역전 골이 터졌다. 그리고 휘슬이 울리기 직전, 한 골이 더 터지면서 경기는 대한민국 2:4 미국 대역전극으로 끝이 났다. 아마 이승우 선수가 해당 경기에 뛰었으면, 이런 얼굴이였을 것이다. " 아 2:1 로 이기고 있었는데 !!!! " 바로 이 때 할 수 있는 말이다. We were up by that much !! 의미 그대로 그 만큼 ( that much ) 위에 ( up ) 있었다는 것이다. 스코어가 더 높았으니,..