총 삽질들 514

#085_닷넷(.NET)_ ADO.NET -DB & DBMS

안녕하세요 삽잡이입니다. 이번시간에는 ADO.NET에 본격적으로 들어가기전에간단하게(?) DB에 관련된 기초적으로 알아야될 사항들에 대해서 알아보려고합니다. DB는 말 그대로 'Data Base'입니다.DB와 DBMS를 헷갈려하실 수 있는데 DB는 DB일뿐이고, DBMS는 DataBase Management System 즉, DB 관리 시스템입니다. 여기서, Data Base는 일련의 데이터의 규칙성을 가지는 데이터를 뜻합니다.데이터가 규칙성을 가지고 있다면, 파일, 네트워크, DBMS, XML, Binary, Memoery 등 어디에 있던지DB라고 부를 수 있습니다. 다시 말씀드리지만,데이터들이 규칙적으로 있는 집합이라면 DB라고 부를 수 있습니다. 그런데, 이 규칙적으로 모여있는 데이터들의 집합을 사..

#084_닷넷(.NET)_ ADO.NET - ADO.NET 개념 & Provider

안녕하세요 삽잡이입니다. 이번시간에는 ADO.NET에 대해서그리고, Provider라는 개념에 대해서 알아보려고합니다. ADO.NET은 크게 세부분으로 나눌 수 있습니다.이를 Three Face라고 부르는데,'연결 계층', '비연결 계층', 'Entity Framework'로 나뉠 수 있게 됩니다. Entity Framework는 가장 최근에 나온 최신 프레임워크이지요.DB를 다룰 때 크게 이 세가지 방법으로 다룰 수 있습니다.비연결 계층, Entity Framework는 MS 전용의 DB 다루는 방법이고,연결 계층 만이 공용적으로 DB를 다루는 방법이지요. 어떤 OS이던 똑같이 사용할 수 있는 방식과,MS 전용의 Library를 사용하는 방식이 있다 이겁니다.이 MS 전용의 라이브러리라는 의미는MS사 ..

#083_닷넷(.NET)_ ADO.NET - ADO.NET Intro

안녕하세요 삽잡이입니다! OS가 만들어지고, 그 위에 닷넷 프레임워크가 올라가는 사실은 모두 아실 것입니다.이 닷넷 프레임워크라는 놈의 핵심은 바로, CLR이지요.CLR이 런타임으로써 모든 어플리케이션이 이 위에서 놀게 됩니다. 닷넷 프레임워크라는 것은 닷넷을 이루는 '뼈대'로써,BCL, Visual Studio, Library 등을 통합적으로 일컷는 용어입니다. 그런데, CLR에서는 항상 BCL(Base Class Library)라이브러리를 로드시켜줍니다.해당 라이브러리는 간단하게 형식들의 집합입니다.모든 형식들의 집합이라는 것입니다. APP이 실행될 때 내용물을 확인하고 CLR이 BCL에서 필요한 모듈들을 로드시켜줍니다.즉, 외부 형식을 가져오기 위해 메모리 상에 로드를 시켜줘야합니다.이는 형식의 타..

#082_닷넷(.NET)_.Net Framework 기본 - 객체 직렬화

안녕하세요 삽잡이입니다. 객체의 직렬화를 살펴보도록 하겠습니다.객체의 직렬화는 '객체'를 바이트 배열로 써놨다가, 다시 바이트 배열로 복원하려고 쓰는 기능입니다. 이제부터 본격적으로 stream에 대한 이야기를 하려고 하는 것입니다. 파일, 스트림을 만든 이유는 객체에 무엇인가를 쓰기 위해서입니다.즉, 어플리케이션의 무엇인가를 쓰기 위해서라는 것이죠. 그런데, 이전 시간에 공부한 내용은 객체를 사용한 것이 아닙니다. 객체 지향에서 과연 얼만큼문자열만을... 혹은 정수만을 읽고 쓰겠습니까?객체가 주가 되는 일이 다반사지 않겠습니까? 프로그램은 사용자와 소통하는 UI영역과 이 UI의 데이터를 보관하고 보여주기 위한 데이터 모델로 나뉠 수 있습니다. 데이터는 다시 UI와 밀접한 View 모델이라는 것과,관련성..

#081_닷넷(.NET)_.Net Framework 기본 - 파일(File) & 스트림(Stream)

안녕하세요 삽잡이입니다. .NET Framework의 System.IO 네임스페이스는파일 및 메모리 기반의 입출력 서비스를 제공하는 기본 클래스 라이브러리 영역입니다. 해당 네임스페이스에는'Directory, DirectoryInfo, File, FileInfo, FileStream' 등이 있습니다. Type Class에 대해서 기억이 나십니까? Method에 대한 Info 배열, Property에 대한 Info배열 등등을 구할 수 있었습니다. 일반적으로, Info는 '인스턴스화' 될 수 있는 객체이 붙입니다. 따라서, 정리를 해보자면...Directory는 정적 메서드들을 사용하는 타입 클래스입니다.그리고, DirectoryInfo는 인스턴스로 new 연산자로 디렉터리를 사용하는 것입니다.즉, 정적 기..

#080_닷넷(.NET)_.Net Framework 기본 - Thread Pool &TPL

안녕하세요 삽잡이입니다. 쓰레드 풀은 간단하게, 쓰레드의 모임 공간입니다. 어떤 작업이 무수히 많이 들어올 때각각 작업을 모두 쓰레드 하나씩 독립적으로 수행한다고 해봅시다.들어오는 작업마다 쓰레드를 띄워주면 얼마나 비효율적이겠습니까? 무조건 쓰레드를 띄워버리면 배보다 배꼽이 더 커지게 되버리죠.왜냐하면, 쓰레드를 관리하는 리소스 뿐만 아니라, 스케쥴링 비용까지 들기 때문에 무조건 쓰레드를 띄우지 않는게 좋다 이겁니다.따라서, 쓰레드 풀이라는 것을 만들게 된 것입니다. 예를 들어,쓰레드를 3개만 만들어 두고 풀에 집어넣었다가,작업이 들어오게되면 풀에 있던 쓰레드가 처리를 하게 만드는 것입니다. 즉, 쓰레드를 3개까지만 만들어두는 것입니다.작업이 끝나게 되면 풀에 들어가고,또 작업이 오면 수행하고 이렇게 말..

#079_닷넷(.NET)_.Net Framework 기본 - Thread 생성 & 동기화

안녕하세요 삽잡이입니다. 이전 시간까지 비동기 대리자를 통해서우리가 제어할 수 없는... 쓰레드를 경험해봤습니다.그런데, 이번에는 사용자가 실제로 쓰레드를 생성해보는 시간을 가져보려고합니다. 닷넷에서 제공해주는 Threading 네임 스페이스는 멀티스레드 응용 프로그램을 직접 만들 수 있게 해주는 다양한 타입을 제공해줍니다. 몇가지 특성에 대해서 간략하게 알아보자면,Interlocked 라는 타입은 원자적인 연산을 지원해줍니다.그리고 Monitor가 있는데,해당 타입이 가장 많이 동기화를 수행할 때 사용하는 타입입니다. Threading 네임 스페이스 중에서도,Thread 클래스에서는 Sleep 메서드를 많이 사용합니다.이는 정적 메서드지요. 그리고 인스턴스 수준에서는 IsBackground 인스턴스를 ..

#078_닷넷(.NET)_.Net Framework 기본 - 비동기 대리자(delegate) & 멀티 쓰레드(Multi Thread)

안녕하세요 삽잡이입니다. 이번 시간은 아마 매우 어려운 시간이 될 수도 있을 것 같습니다.이해가 안가시더라도 천천히 여러번 읽어보시고... 제가 잘못되게 서술했을 수는 있으나...(-_-;;)어떠한 느낌인지를 느껴보시길 바랍니다... 쓰레드는 OS의 자원입니다.그런데, 이 쓰레드에 대해서 공부를 하고자할 때 띄우고, 동기화 제어하는 것이 어렵다면 어려운 부분입니다.이를 쓰레드의 동시성 문제라고 합니다. 쓰레드의 동시성 문제에 관련되어 '휘발성', '원자적'이라는 단어는 중요한 용어가 됩니다. 해당 용어들이 주가되어 쓰레드 동시성에 문제가 생기게 될 수 있습니다.그러면 하나씩 살펴보도록 하겠습니다. 'volatile'을 우리말로 휘발성이라고 합니다. 여러 쓰레드가 접근하는 코드의 경우를 생각해보시길 바랍니..

#077_닷넷(.NET)_.Net Framework 기본 - 객체 컨텍스트

안녕하세요 삽잡이입니다. 닷넷에서의 프로세스는어플리케이션 도메인이 한개 이상 존재할 수 있다고 했었습니다.기본 APP Domain과 그 이외에 사용자가 이름을 붙일 수 있는 Sub App Domain들이 있지요.이를 닷넷에서는 논리적인 프로세스라고 볼 수 있다고 했습니다. 그런데, APP Domain에는 컨텍스트라는 것이 포함이 됩니다.기본은 무조건 Context 0 이지요.즉, App Domain이 만들어지면, 기본적으로 컨텍스트가 만들어지는데,이는 사용자가 만들고 제거해주는 것이 아닙니다.사용자가 만드는 컨텍스트는 0번을 제외한 다른 번호의 컨텍스트가 되는 것이지요. 닷넷의 프로세스가 기본적으로 뜰 때 App Domain이 생성되듯이,기본 컨텍스트도 생성이 됩니다. 이러한 컨텍스트는 도대체 무엇일까요..

#076_닷넷(.NET)_.Net Framework 기본 - 어플리케이션 도메인

안녕하세요 삽잡이입니다. 프로그램을 나누라고 한다면 '응용 프로그램'과 'OS'로 나눌 수 있습니다. 여기서 응용프로그램을 이전에는 해당 어플리케이션에서 직접 로드를 했었습니다.그런데, 닷넷에서는 기존의 Win32 응용 프로그램과 다르게,실행 파일이 프로세스 내에 직접 호스팅 즉, 로딩되지 않습니다. .Net의 실행파일은 바로 응용프로그램 도메인이라는 논리적으로 격리된 프로세스에 호스팅 즉, 로드가 되지요. 응용프로그램 도메인을 어플리케이션 도메인이라고 부르는데,도메인이라는 단어는 컴퓨터 용어에서 많이 사용됩니다. 공통적으로 도메인이라는 용어의 의미는 바로 '영역'을 뜻합니다.즉, 어떤 틀을 짓는다는 느낌이지요. 그래서 어플리케이션 도메인이란 뭐냐?프로세스란, 메모리상에 올라와 있는 프로그램이죠.그런데 ..