수달의 IT 세상

[Ubuntu, Docker] Docker 설치하기 포스트 Teaser

[Ubuntu, Docker] Docker 설치하기

카테고리:

2 분 소요

Docker 도커(Docker)는 컨테이너 기반 가상화 플랫폼으로, 소프트웨어를 패키징하고 배포하는 데 사용한다. 컨테이너는 애플리케이션과 그 의존성을 컨테이너에 패키징하여 이식성이 뛰어나며 환경 간에 일관성 있는 실행을 제공한다. 도커는 이러한 컨테이너 기술을 쉽게 사용할 수 있도록 도와주는 도구와 플랫폼을 일컽는다. ※ 본 게시글은 Ubuntu 24.04 LTS 버전을 기준으로 작성되었습니다. 1. 이전 버전 및 비공식 버전 제거하기

[C#] 생산자 소비자 문제에 사용 가능한 Concurrent Class 사용하기 포스트 Teaser

[C#] 생산자 소비자 문제에 사용 가능한 Concurrent Class 사용하기

카테고리:

2 분 소요

생산자-소비자 문제 생산자-소비자 문제(Producer-Consumer Problem)는 컴퓨터 과학에서 다중 스레드 또는 프로세스 간 협력 및 동기화에 관련된 전형적인 문제 중 하나이다. 여기서 생산자(Producer)는 공유 자원(버퍼나 큐 등)에 데이터를 생성하고 삽입하는 작업을 수행하고, 소비자(Consumer)는 공유 자원에서 데이터를 제거하고 소비하는 작업을 수행한다. 이때 발생할 수 있는 문제들은 크게 4가지로 분류한다.

[C#] DLLImport로 외부 DLL 함수 호출하기 포스트 Teaser

[C#] DLLImport로 외부 DLL 함수 호출하기

카테고리:

1 분 소요

DLLImport DllImport는 P/Invoke(플랫폼호출) 방법 중 하나로 C#에서 .NET 외의 코드나 라이브러리, 특히 C나 C++로 작성된 코드를 호출할 때 사용한다. 이를 사용하여 C# 코드에서 외부 DLL 함수를 호출한다. 소스 코드 아래는 DllImport를 사용하는 기본적인 예제로 kernel32.dll에 있는 MessageBox 함수를 호출한다. using System; using System.Runtime.Inte

[Ubuntu, Nginx] PHPMyAdmin 설치하기 포스트 Teaser

[Ubuntu, Nginx] PHPMyAdmin 설치하기

카테고리:

3 분 소요

PHPMyAdmin php로 작성된 PHPMyAdmin은 MySQL 데이터베이스를 관리하기 위한 웹 기반의 오픈 소스 관리도구이다. 웹 브라우저를 통해 MySQL 데이터베이스에 접속하여 데이터베이스를 관리, 조작하는 등 데이터베이스 안의 테이블을 만들고 수정하고, 데이터를 삽입, 수정, 삭제할 수 있다. ※ 본 게시글은 Ubuntu 22.04 LTS 버전을 기준으로 작성되었습니다. 1. php 설치 및 연동하기 https://syudal

[C#] 비동기 이벤트 기반 소켓 서버 구현하기 포스트 Teaser

[C#] 비동기 이벤트 기반 소켓 서버 구현하기

카테고리:

4 분 소요

서버의 종류 서버를 구현하는 방식에는 크게 단일 스레드 기반 서버와 다중 스레드 기반 서버로 나뉜다. 다중 스레드 기반 서버의 경우, 각각의 스레드가 연결을 담당하여 통신하므로 이해가 쉽다. 하지만, 단일 스레드인데 어떻게 여러 클라이언트의 접속을 해결하느냐는 의문이 든다. Node.js의 libuv 구현체의 Event Loop를 사용하여 구현한 서버를 보면 이해할 수 있다. C#의 SocketAsyncEventArgs에서도 운영체제에서

[C#] 콜백 함수 포스트 Teaser

[C#] 콜백 함수

카테고리:

3 분 소요

콜백 함수 콜백 함수(callback function)는 프로그래밍에서 특정 이벤트가 발생했을 때 호출되는 함수를 가리킨다. 콜백 함수는 다른 함수나 컴포넌트에 의해 호출되는 함수로서, 보통 이벤트 핸들러로 비동기적인 프로그래밍이나 이벤트 기반 프로그래밍에서 자주 사용된다. 이벤트 처리(Event Handling): 사용자가 버튼을 클릭하거나 다른 이벤트가 발생했을 때 특정 작업 수행 비동기 작업(Asynchronous Operat

[C#] 크로스 스레드 작업이 잘못되었습니다. 오류 해결하기 포스트 Teaser

[C#] 크로스 스레드 작업이 잘못되었습니다. 오류 해결하기

카테고리:

최대 1 분 소요

문제 상황 C#으로 멀티 스레드 프로그래밍을 하다보면, 컨트롤이 자신이 만들어진 스레드가 아닌 스레드에서 액세스하는 경우에 아래와 같은 메시지를 출력한다. 이럴 때는 Invoke함수를 사용하여 컨트롤이 자신이 만들어진 스레드 아닌 스레드에서의 함수 호출을 위임한다. 소스 코드 아래의 텍스트박스의 텍스트를 바꾸는 예제이다. private void InvokeAccess(TextBox textBox, string data) {

[Ubuntu, Cloudflared] Cloudflared로 Ngrok처럼 Tunneling하기 포스트 Teaser

[Ubuntu, Cloudflared] Cloudflared로 Ngrok처럼 Tunneling하기

카테고리:

3 분 소요

Cloudflare Cloudflare는 사이트를 운영할 때 WAF(Web Application Firewall; 웹 어플리케이션 방화벽), CDN(Content Delivery Network; Content Distribution Network), DDoS(Distributed Denial of Service attack; 분산 서비스 거부 공격), 서버의 원본 IP 숨기기 등의 중요한 기능을 무료로 제공한다. Cloudflared(Clo