All Pages
delegate 2. 사용 방법
delegate 2. 사용 방법
2023.10.09C#의 대리자는 함수를 변수처럼 사용하는 방법일 뿐이다. C/C++ 에서는 함수 포인터의 개념과 비슷하고, 대부분의 언어에서 Callback(콜백) 개념으로 구현되어 있다. 대리자 선언 1. 선언방법 델리게이트_키워드 함수_반환형 델리게이트_이름(함수_시그니처); delegate return_type delegate_name(int num1, int num2); [.NET Frame 1.0] 델리게이트_키워드 함수_반환형 델리게이트_이름 = new 델리게이트_키워드(함수_이름) delegate return_type delegate_name = new delegate(funtion); [.NET Frame 2.0] 델리게이트_키워드 함수_ 반환형 델리게이트_이름 = 함수_이름 delegate void de..
5. 비동기 TCPListener 예제
5. 비동기 TCPListener 예제
2023.10.06동기화 코드의 문제점 데이터를 보내는 작업과 받는 작업이 블록되는 문제 상황을 강제로 발생시켜보자.네트워크 프로그램은 많은 부분에서 비동기 코드가 필요하다. Read( ) 함수의 동작은 C언어의 Scanf( ) 동작과 유사하다.Read( ) 함수는 stream에 전달받은 데이터가 있다면, 데이터를 읽어들인다. 하지만 읽을 데이터가 없다면, 데이터가 들어올 때까지 대기하는데, 이때 실행 흐름은 블록된다. 만약 이 상태에서 데이터를 전송시키고 싶다면, Send( ) 가 실행 제어권을 가지지 못하기에 전송 작업 실행은 불가능하다.위의 예제 프로젝트의 소스코드는, 이전 포스트와 동일하다.TCPServer, TCPClient_Protocol 을 실행시면, 한 번의 전송 이후 각자 Read( ) 에서 서로 멈춘상태..
4. 프로토콜
4. 프로토콜
2023.10.06프로토콜 1 응용 프로그래밍에서 네트워크를 사용해 데이터를 송수신 할때 사용하는 규칙을 의미한다. 네트워크 응용 프로그래밍에서, 일반적으로 데이터를 보낼 때는 정확한 바이트 파악 할 수 있다. 하지만 데이터를 받을 때는 몇 바이트가 올지 알 수가 없다. 그리고 데이터가 분산되어 여러번 전달 될 수도 있다. 그렇기에 네트워크 응용 프로그래밍은 서버와 클라이언트 사이에 주고 받는 데이터의 크기 및 데이터 구조 등에 대해 프로토콜(규칙)을 개발자가 정해야 한다. 프로토콜(규칙)의 예시 헤더에 차후 보낼 바이트의 크기 전송한다. 전달하는 데이터 마지막에 특정한 End of Message 마크를 사용한다. 일정 시간 아무 데이타가 없으면 수신 종료한다. 연결 종료시점까지 데이터를 읽는 방법 만약 이러한 프로토콜이..
3. TCPClient, TCPListener 예제
3. TCPClient, TCPListener 예제
2023.10.06TCPClient & TCPListener 내부적으로 System.Net.Sockets.Socket 클래스를 사용한다. 하지만 Socket 으로 작업하는 것보다 훨씬 간결하다. 네트워크 데이터 송수신은 기본적으로 바이트 자료형을 사용한다. 따라서 문자열을 보낼 경우 먼저 바이트로 인코딩한 후, 일반 영문은 ASCII로 인코딩하고, 한글 등 비영문 문자열은 UTF8 인코딩을 사용한다. 실행 흐름 TCPListener Server의 Listen( ) 동작을 의미한다. using System.Net.Sockets; using System.Net; namespace TcpServerTest { class Program { static void Main(string[] args) { // [1] 서버의 Liste..
2. .Net Socket 예제
2. .Net Socket 예제
2023.10.06프로그래밍 기술을 바라보는 개발자의 관점 모든 프로그래밍 기술은, 현실의 문제를 컴퓨터를 사용해 해결하는 하나의 방법일 뿐이다. 모든 프로그래밍 기술은, 인간이 사용해왔고, 현실에 존해하는 방법과 동일하다. 대표적으로 데이터베이스와 네트워크가 현실의 도서관과 물류 운송과 개념이 같다. 네트워크 개념 네트워크 동작은 물류 시스템과 비슷하다. 운송하는 대상이 상품에서 데이터로 변경되었을 뿐이다. 물류 운송처럼 네트워크 통신은 어떤 기기의 저장장치에 있는 데이터를 다른 기기에 저장장치로 옮기는 것이다. 문제가 있다면, 물류 센터의 시스템이 복잡하듯, 네트워크 통신은 서버의 데이터를 관리하는 방법이 어렵다. 우체국 택배를 보내는 절차와 통신 절차를 비교해보자. 물류 통신 대상 물건 데이터 1 상품의 크기에 맞춰..
1. 소켓 네트워크
1. 소켓 네트워크
2023.10.06Socket Socket Socket은 단말(eg. 전화기)을 논리적으로 추상화한 형태로, 일반적인 프로그램의 네트워크 기능은 Socket 표준 기반으로 구현되어 있다. C, C++, C#, Java, Python 등 프로그래밍 언어에서 사용하는 네트워크 라이브러리는 내부적으로 Socket 표준을 기반으로 한다. 그 중, 가장 기반이 되는 Low level Socket API 는, C언어 POSIX library 에 포함된 된 이다. 프로그래밍 언어마다 사용법이 상이한 네트워크 라이브러리 제공하더라도, Socket 을 조금 더 편리하게 사용하도록 발전된 형태의 라이브러리들에 불과하다. 그렇기에 C#, Java, Python 도 C언어의 Low level Socket API 와 비슷한 구현이 가능한 방법을..
Thread 04. Task, Async, Await
Thread 04. Task, Async, Await
2023.10.05비동기 프로그래밍CPU(중앙처리장치)는 정말 많은 작업을 요청받고 처리한다. 데이터를 읽고 쓰고, 네트워크로 데이터를 주고 받고, 화면 픽셀을 계산하는 작업 모두 중앙처리장치의 처리가 필요하다. 이런 중앙처리장치가, 특정 작업의 완료를 기다리는 것은 너무 비효율적이다. 그래서 중앙처리장치가 비효율적으로 낭비되지 않도록 비동기 프로그래밍 기술을 사용하여, 중앙처리장치가 입출력과 같은 낭비될만한 작업을 기다리는 대신 다른 업무를 처리하도록 하고 입출력이 완료되었을 때 기존 작업을 다시 시작하도록 프로그래밍한다. C# 에서 비동기 프로그래밍C# 에서 비동기 프로그래밍 Thread, ThreadPool 기반 기술로 시작했지만, Task Parallel Library (TPL) 기반 기술과 async / awa..
Thread ③ 스레드 사용법, 예제
Thread ③ 스레드 사용법, 예제
2023.10.04C# 은 MSDN이 정답이다. C# Threading 관련 기술 Thread System.Threading 네임스페이스에 정의되어 있다 .NET Framework 1.0부터 사용 가능하다 Thread에 실행될 로직을 넘겨주며, 생성한 후 명시적으로 실행 해야 한다. Thread는, 생성, 삭제될 때 상대적으로 많은 시스템 자원을 사용해 비효율적이다. ThreadPool 은 Thread 를 미리 생성해 두고, 필요할 때 사용하고 반환하는 방식으로 기존 Thread 를 개선했다. ThreadPool System.Threading 네임스페이스에 정의되어 있다 .NET Framework 1.0부터 사용 가능하다 ThreadPool은 특정 이름을 지정할 수 없다. Join 과 같은 조정을 사용할 수 없다. 백그라..
3. 닷넷(.NET) Framework
3. 닷넷(.NET) Framework
2023.10.04C# 을 공부하다는 것은, 닷넷(.NET) 프레임워크를 공부한다는 의미다. 학습방향 프레임워크란 무엇인가? 프로그래밍에서 프레임워크는 왜 중요한가? .NET 플랫폼에서 프레임워크를 이해해야 하는 이유는? Visual Studio 살펴보기 개발 프레임워크 선택 프레임워크(Framework) 의미 [어원] 'FRAME (틀, 규칙)' + 'WORK (작업)' 시스템 시스템은 왜 사용할까? 프렌차이즈는 매장 인테리어부터, 메뉴구성, 결제시스템, 접객 및 운영 방법까지 모든 것을 제공해 준다. 제조공정 - 분업과 대량생산, 그리고 생산 효율 향상 프레임워크 예 버튼, 폼 양식, 다이얼로그 등과 같이 자주 사용되는 UI를 미리 구현해서 제공하는 프레임워크이다. 프레임워크와 라이브러리 차이 프로그래밍 언어도, 정해..
2. 닷넷(.NET) Platforms
2. 닷넷(.NET) Platforms
2023.10.04C# 은 의 프로그래밍 언어 중 하나다. 학습방향 플랫폼은 무엇인가? 프로그래밍에서 플랫폼과 아키텍쳐는 왜 중요한가? .NET 이 추구하는 개발 플랫폼이란? Visual Studio 에서 살펴보기 프로젝트 생성 과정 개발 플랫폼 선택 Platform 의미 사람이 모이는 곳 [어원] ‘Flat(평평한) + Form(모습)’ 사람은 왜 모일까? 그곳에서만 가능한 무엇인가를 하기 위해서 특정 서비스를 이용하기 위해서 승강장 - 사람들이 기차를 쉽게 타고 내릴 수 있도록 평평하게 만든 장소를 의미한다. IT 산업과 Platform 플랫폼은 다양한 종류의 시스템이나 서비스를 제공하기 위해 공통적이고 반복적으로 사용하는 기반 모듈, 어떤 서비스를 가능하게 하는 일종의 ‘토대’로 정의한다. 제품·서비스·자산·기술·노..
1. 프로그래밍이란?
1. 프로그래밍이란?
2023.10.04더보기 파이썬 자료형 기본 자료형 - 숫자형, 문자형 복합 자료형 - 리스트, 딕셔너리, 튜플 로직, 순서도 순차구조, 선택구조, 반복구조 함수 로또, 숫자야구, 달력, 가위바위보 미니 프로젝트 키오스크 C언어 자기 주도 학습 C언어 스터디 학습 계획서 일정표 C언어 개발환경 설정 VSCode 에디터 MinGW 컴파일러 프로그래밍이란? 빌드, 실행 프로그래밍 언어, 어셈블리, 기계어 자료형 10진수, 2진수, 16진수 bit, Byte ASCii 로직, 순서도 파이썬 예제, 과제 컨버팅 별찍기, 피라미드 만들기, 풍차 돌리기 메모리 값의로 전달 포인터로 전달(참조) 미니 프로젝트 레전드 오브 복이 외전 "지호의 대모험 C++ 자기 주도 학습 C++ 스터디 학습 계획서 일정표 분할 컴파일, 헤더 사용 이유..
영문 입력 키보드 레이아웃 제거
영문 입력 키보드 레이아웃 제거
2023.09.23문제. 윈도우 기본 언어를 English, 입력을 Korean 으로 쓰게 되면 아래 이미지 왼쪽처럼 입력에서 English(US) 가 기본 입력 레이아웃으로 추가되어 삭제가 불가능하다. 한/영 전환시 불편하다. 해결법. Add a language 에서 언어를 english (united states) 로 설치하고 삭제하면, 입력에서 레이아웃이 제거된다. 순서. ① win + i ② Time & language >> Language & region ③ Add a language 클릭 ④ english (united states) 검색 ⑤ 체크 해제 후, 설치 ⑥ 설치된 english (united states) 제거 ⑦ 입력 레이아웃에서 English(US) 가 삭제된다.