전체 글

전체 글

    [ASP.NET Core] 의존성 주입(Dependency Injection)

    [ASP.NET Core] 의존성 주입(Dependency Injection)

    흔히 '관심사의 분리'라 하는 것으로 MVC pattern의 가장 중요한 특징 중 하나에 해당합니다. program을 이루는 각 부분의 밀접도를 최소화하여 독립성을 유지하고자 하는 개념으로 new를 통해 곧바로 instance를 생성하는 것이 아니라 interface를 이용해 의존성 주입을 구현하고 이로 인해 program을 이루는 각 구성요소의 관심사를 최대한 분리하고자 하는 것이 핵심입니다. 응용 program의 상호의존성이 너무 강하면 하나의 변경사항으로 다른 쪽 수정사항을 유발하게 되고 또 그것으로 인해 생각지 못한 전혀 다른 부분에서의 수정 작업을 거쳐야 하는 등 비효휼적인 과정이 너무 많이 발생할 수 있습니다. 따라서 의존성을 줄이면 서로 간의 변경사항에 대한 영향력을 최소화할 수 있게 됩니다..

    [ASP.NET Core] MVC Pattern

    [ASP.NET Core] MVC Pattern

    MVC는 Model, View, Controller를 의미하는 것으로 이 3개의 구조를 통해 web project가 완성되는 것을 말합니다. 해당 구조의 간단한 예를 만들어 보기 위해 가상의 website에서 login 하는 과정으로 mvc pattern구조를 적용해 보도록 하겠습니다. Visual Studio 2019를 시작해 새 project에서 'ASP.NET Core Empty'를 선택합니다. project이름 따윈 중요하지 않으므로 대충 입력하고 넘어갑니다. project는 아무것도 없는 상태에서 시작하므로 몇 가지 사전 설정이 필요합니다. project에서 startup.cs file을 열고 다음과 같이 수정합니다. namespace WebApplication1 { public class St..

    샤오미 미노트북 프로 15(xiaomi Mi Notebook Pro 15) - 사용기

    샤오미 미노트북 프로 15(xiaomi Mi Notebook Pro 15) - 사용기

    샤오미 노트북을 구매하고 한 달간을 사용해 봤는데 총평을 먼저 하자면 전체적으로 만족스러운 노트북인 듯합니다. 우선 성능부터 확인해 보자면 CINEBENCH R23으로 측정 결과 싱글코어 1275점, 멀티코어 4006점으로 평가되었습니다. 그래픽 측정을 위한 Fire Strike점수는 아래와 같으며 Time Spy값은 다음과 같이 측정되었습니다. 각 성능 측정치는 해당 측정 툴을 3회 연속 동작 후 얻어진 값임을 말씀드립니다. 그럼 이제 노트북을 사용하면서 느낀 단점과 장점에 대해 말씀드리겠습니다. 1. 장점 ● 디스플레이 해당 노트북의 디스플레이는 OLED 제품이며 15.6인치에 3.5K 해상도를 가지고 있습니다. 최대 600 nit 밝기까지 지원해서 밝은 대낮에 야외에서 사용해도 무리가 없을 정도였습..

    .NET과 C# 시작하기

    .NET과 C# 시작하기

    1. 개발환경 Programming을 하려면 그에 맞는 개발환경이 갖추어져 있어야 할 것입니다. 이를 위해 Microsoft에서는 다음과 같은 Code편집기와 IDE(integrated Development Environments)를 제공하고 있습니다. Visual Studio Code GitHub Codespaces Visual Studio 2019 또는 Visual Studio 2019 for Mac ● Vsual Studio Code 가벼우면서도 최신의 개발환경을 지원하는 Code편집기로는 Visual Studio Code가 있으며 Windows, MacOS나 Red Hat/Ubuntu와 같은 Linux등 다양한 운영체제를 지원하기도 합니다. Visual Studio Code는 기본기능 이외에 다양..

    [C#] TCP/IP 통신

    [C#] TCP/IP 통신

    1. TCP/IP 컴퓨터 사이에 데이터를 주고받으려면 나름대로의 규칙이 필요합니다. 어떠한 방법으로 어떠한 방식을 통해 전송할 것인가를 정해야 하고 그래야 데이터를 그 약속대로 보내고 받을 수 있을 것입니다. 데이터를 주고받기 위한 이러한 규칙을 '프로토콜'이라고 부르며 세상에 존재하는 다양한 프로토콜 중 'TCP/IP'는 사실상 인터넷의 표준 프로토콜이라 할 수 있습니다. TCP/IP는 논리적으로 몇개의 계층구조로 나누어지는데 최상단 응용계층부터 링크(네트워크 접근) 계층까지 각 계층마다 층을 이루고 있으며 이러한 층을 'TCP/IP 스택'이라고 합니다. 웹 브라우저에서 부터 카톡과 같은 메신저나 유튜브 등 다양한 인터넷 서비스들이 이 'TCP/IP 프로토콜'을 통해 이루어지고 있습니다. ● 패킷 인터..

    [.NET] 가비지 컬렉션(Garbage Collection)

    [.NET] 가비지 컬렉션(Garbage Collection)

    1. 가비지 컬렉션의 개요 가비지 컬렉션은 메모리 수거를 의미하며 .NET CLR의 가비지 컬렉터가 가비지 컬렉션을 수행하여 메모리를 관리합니다. C나 C++에서는 객체를 위한 메모리 공간을 확보하고 객체를 할당한 후에 해당 객체의 작업이 종료되면 할당했던 메모리의 힙을 가리키는 포인터를 통해 메모리를 해제하는 작업을 직접 구현해야 합니다. 문제는 이 과정에서 메모리 해제를 제대로 해주지 않으면 메모리가 낭비되는 결과를 초래하게 된다는 것입니다. C/C++런타임이 객체를 메모리에 할당하는 과정을 보면 일단 여러 개의 블록으로 나누어진 메모리를 링크드 리스트로 연결해 관리하는데 만약 객체를 할당해야 하는 순간이 오면 해당 객체를 할당할만한 적당한 메모리 블록을 찾은 뒤 해당 블록을 다시 객체에 맞게 나누어..

    [C#] Thread(스레드)와 Task(태스크)

    [C#] Thread(스레드)와 Task(태스크)

    1. 프로세스와 스레드 프로세스라 함은 실행파일이 실행되어 실행파일과 관련된 모든 데이터가 메모리에 적재되어 실행되는 상태를 말합니다. 프로세스는 자신만의 스레드를 가질 수 있으며 이 스레드로 프로그램에 필요한 동작을 수행합니다. 따라서 프로세스는 반드시 하나이상의 스레드를 가지며 스레드는 CPU가 프로그램 실행을 위해 시간을 할애하는 기본 단위가 됩니다. 프로그램이 내부에 여러작업을 수행해야 하는 경우라면 스레드를 여러 개 사용하는 '멀티스레드'를 구현합니다. 예를 들어 문서편집기 프로그램의 경우 사용자가 문서를 작성하고 있으면 주기적으로 자동 저장을 해야 할 때 문서작성용 스레드와 자동 저장을 수행하는 스레드가 각각 필요할 것입니다. 시간이 오래 걸리는 계산 작업을 수행하는 경우에도 사용자가 중간에 ..

    [C#] 파일과 디렉터리 다루기

    1. 파일 및 디렉터리 .NET 에서는 파일과 디렉터리를 다룰 수 있도록 아래와 같은 클래스를 제공하고 있습니다. File 파일을 다룰 수 있는 정적메서드 사용 FileInfo 정적메서드 대신 인스턴스메서드 사용 Directory 디렉토리를 다룰 수 있는 정적메서드 사용 DirectoryInfo 정적메서드 대신 인스턴스메서드 사용 정적 메서드를 사용할지 인스턴스를 통해 사용할지의 결정사항은 정확히 정해진 바 없으나 보통 파일이나 디렉터리의 복사, 이동 등 한두 가지 작업만 하는 경우라면 간단하게 정적 메서드를 사용하며 하나의 파일이나 디렉터리에 대해 여러 가지 작업을 수행하는 경우는 인스턴스를 사용합니다. 정적 메서드나 인스턴스 메서드나 메서드의 이름은 약간씩 다르지만 결국하는 일은 모두 비슷합니다. 우..