최근 구글 웹로그 분석에서 이 블로그의 방문자를 살펴보다가 아주 오래된 문서들이 여전히 참조되고 있다는 것을 알았습니다. 그래서 시간이 날 때마다 이전 글 중에서 업데이트가 필요한 글들을 갱신하고자 합니다. 이번 글은 2005년 이 블로그를 처음 만들면서 썼던 StringBuilder에 대한 글입니다. 최신 닷넷 프레임워크 4.x에서 변경된 부분도 다루어지므로 끝까지 읽어 보시길 권장드립니다. 문자열 이야기 String과 더불어 StringBuilder는 가장 많이 사용되는 닷넷 클래스 중 하나이다. 그런 의미에서 본좌가 2005년 이곳을 개설함과 동시에 몇 개의 글을 시리즈로 작성했었다. 이 글들은 String과 StringBuilder를 사용하면서 주의할 사항들 그리고 알아두어야 할 것을 다루고 있다...
[More]
407d6d5d-0742-4efb-8fc5-fe3fe0c124eb|5|3.6
Async/await 키워드 시리즈 마지막 글입니다. 지난 글에서 예고한 대로 약간 복잡한 async/await 사용 예로부터 실제 컴파일러가 생성하는 코드를 살펴보도록 하겠습니다. 컴파일러가 어떤 코드를 생성하는지 이해하고 있다면 더욱 더 async/await 키워드를 잘 활용할 수 있을 것이고, 문제가 발생하더라도 좀 더 쉽게 문제를 해결하실 수 있을 겁니다.
간편한 비동기 프로그래밍:async/await (1) – 동기 프로그래밍의 문제점
간편한 비동기 프로그래밍:async/await (2) – 전통적인 비동기 프로그래밍과 그 문제점
간편한 비동기 프로그래밍:async/await (3) – async/await 키워드 소개
간편한 비동기 프로그래밍:async/aw...
[More]
e83573b1-1bbe-49af-a58c-65a033cc7c88|7|4.0
Async/await 키워드에 대한 네 번째 글입니다. 이번 글에서는 async/await의 구체적인 작동 원리를 살펴보고자 합니다. 즉, C# 코드에서 async/await 키워드를 사용했을 때 컴파일러가 생성하는 코드를 살펴봄으로 써 그 원리를 이해하는 것이지요. 굳이 이러한 원리를 모르더라도 async/await 키워드를 사용할 수 있습니다. 하지만 원리를 알고 있다면 다양한 상황에서 발생하는 문제들을 해결하는데 도움이 되리라 믿습니다.
간편한 비동기 프로그래밍:async/await (1) – 동기 프로그래밍의 문제점
간편한 비동기 프로그래밍:async/await (2) – 전통적인 비동기 프로그래밍과 그 문제점
간편한 비동기 프로그래밍:async/await (3) &ndas...
[More]
26b2e10e-e98b-468b-8eb9-a7a290a17efc|1|5.0
Async/await 키워드 세 번째 글이네요. 앞서 두 글은 aysnc/await의 등장 배경을 설명했습니다. UI를 가진 어플리케이션에서 동기 프로그래밍의 문제점과 전통적인 APM(Asynchronous Programming Model) 비동기 프로그래밍 모델의 단점을 중점적으로 설명했는데요, 이번 글에서는 닷넷 프레임워크 4.5와 함께 등장한 C# 5.0의 async/await 키워드에 대해 본격적으로 살펴보도록 하겠습니다.
간편한 비동기 프로그래밍:async/await (1) – 동기 프로그래밍의 문제점
간편한 비동기 프로그래밍:async/await (2) – 전통적인 비동기 프로그래밍과 그 문제점
간편한 비동기 프로그래밍:async/await (3) – asyn...
[More]
0a17cc81-ce22-4232-9e8c-7faccd9952d2|4|5.0
Async/await 키워드에 대한 두 번째 글입니다. 이번 글에서는 UI 상에서 사용할 수 있는 전통적인 비동기 프로그래밍 기법을 살펴보고 이 방법들의 문제점이 무엇인가 살펴보도록 하겠습니다. 기존 비동기 프로그래밍 방식의 문제점을 충분히 이해한다면 왜 async/await 키워드가 등장했는지 이해하기 보다 쉽기 때문입니다.
간편한 비동기 프로그래밍:async/await (1) – 동기 프로그래밍의 문제점
간편한 비동기 프로그래밍:async/await (2) – 전통적인 비동기 프로그래밍과 그 문제점
간편한 비동기 프로그래밍:async/await (3) – async/await 키워드 소개
간편한 비동기 프로그래밍:async/await (4) – async/...
[More]
84bfc78d-8ec5-478c-862e-9defa798a0b6|2|4.5
안녕하세요. 블로그쥔장 입니다. 간만에 다시 키보드를 잡았네요. 시간 없다는 핑계로 이렇게 사이트를 내버려두기도 그렇고 뭐라도 해서 다시 활력을 가져보고자 다시 플로그질을 시작해 볼까 합니다. 항상 그렇듯이 기약은 없답니다. ㅎㅎ
앞으로 몇 차례 닷넷 프레임워크 4.5에 추가된 새로운 키워드인 async/await에 대해 다루려고 합니다. 닷넷 프레임워크 4.5가 나온지 한참도 더 되었지만 async/await 키워드에 대해 심도 깊게 다룬 글들은 별로 없어 보이는지라… 아는 척하기 좋겠다 싶어서 토픽으로 잡았습니다.
사실은 이 글은 2012년 월간 마이크로소프트웨어 1월, 2월에 연재 되었던 제 글을 바탕으로 한 것입니다. ^^
간편한 비동기 프로그래밍:async/await (1) &ndas...
[More]
0550a88b-610c-4574-ad14-b6a39ed7bc8e|6|4.2
블로그 질 재개? 구차한 서론은 때려치우고 바로 본론으로... DataSet에 대하여… 시작하기 전에, 이실직고부터 하겠다. 필자는 엔티티 기반의 프로젝트를 한번 해봤다. 1998년 동양시멘트 프로젝트를 약 1년여 동안 일반 개발자로서 약 100여 개의 화면을 Forte라는 도구를 사용하여 개발해 본 경험이 전부다. 그 외엔 Entity Framework로 다건의 데이터를 조회/추가/수정/삭제하는 WinForm/WPF 예제를 만들어 봤을 뿐이다. 따라서 여기서 이야기 하는 엔티티에 대한 내용은 상당히 주관적일 수도 있음을 밝히는 바이다. 기술적인 이야기를 주저리 주저리 나열하진 않겠다. 공연히 흥분한 내 마음이 차분해 질 수 있으니깐 말이쥐… 대안: 엔티티? DataSet은 엔티티에 비해 꿇리는 점이...
[More]
1a86bb3e-a814-4490-98a3-29e88cbbd9ac|14|4.2
Dispose 패턴 두 번째 글로써 고급 기법에 대해 설명하고자 합니다. 지난 포스트에서는 Dispose 패턴의 기초적인 구현 방법을 설명했었습니다. Dispose 패턴을 구현할 때 관리되지 않는(unmanaged) 자원을 해제할 때에는 약간 더 주의를 기해야 하기 때문에 고급이란 이름으로 별도의 포스트를 작성하게 되었습니다. “나는 패 죽여도 unmanaged 자원을 직접 사용하지 않는다”라고 자신하실 수 있는 독자 분은 이 글을 읽지 않으셔도 되겠습니다. 만약 여러분이 WIN32 API를 직접 호출하여 핸들 값을 얻어내거나 하는 등의 코드를 작성하셔야 한다면 한번쯤 고민을 해 보실 필요가 있습니다. Dispose 패턴 – 정리 필자가 지금까지 여러 차례의 포스트에서 닷넷 CLR의 가비지 컬렉션을 설명...
[More]
f8b98399-b854-4915-bb47-def0711bd1f4|4|5.0
너무 간만에 씨리즈 글을 이어나가자니 뻘쭘 하네요. 이 글을 읽으시기 전에 가비지 컬렉션 다시 보기 씨리즈 글을 먼저 읽어 보시거나 기억을 떠올려 보시는 것이 좋을 듯합니다. 가비지 컬렉션 다시 보기 Part I – 기본 작동 방식 가비지 컬렉션 다시 보기 Part II – 세대별 가비지 컬렉션 위 글을 읽어 본 후에 조금 더 여력이 생긴다면 다음 두 글까지도 읽으시면 더욱 도움이 될겁니다. 가비지 컬렉션 다시 보기 Part III – LOH 가비지 컬렉션 다시 보기 Part IV – 가비지 컬렉션 발생 시기 이 글은 Finalizer 사용 시 주의 사항들 이란 글의 다음 내용이기 때문에 이 글은 반드시 정독 하시거나 기억을 되살리신 후에 본문을 읽으시는 것이 정신 건...
[More]
462e07e0-5428-41b3-9366-1a6e5a57b2ee|4|4.5
닷넷 플랫폼 환경은 메모리 회수를 가비지 컬렉션에 의존하고 있습니다. 그래서 파일, 데이터베이스 연결과 같은 시스템 자원을 해제하기 위해 기존 C/C++과 다른 방식을 취합니다. 그 중 하나가 Finalizer 입니다. Finalizer는 시스템 자원을 해제하기 위한 최후의 보루로써 사용되곤 하지만 잘못된 사용 패턴은 관리되는 힙이 비 효율적으로 사용되게 만듭니다. 과거 제 글에서 아주 간단히 다룬 적이 있는 내용이지만, 이번 포스트에서는 Finalizer의 기본 내용과 사용 시 주의 사항들을 좀 더 자세히 살펴보도록 하겠습니다. 특히, Finalizer는 세대별 가비지 컬렉션과 연관이 있으며 다음에(언젠지 모르지만) 다루게 될 Dispose 패턴과도 밀접한 관련이 있으니 잘 알아 두시면 여러모로 도움이 되...
[More]
73892fae-1ff5-4e26-84da-a23668d29846|3|4.7