전체 글 288

[Networking] Socket Programming (소켓 프로그래밍) - 파이썬 구현

가독성과 포괄적인 표준 라이브러리로 인해 널리 사용되는 Python을 사용해 서버와 클라이언트 모두에 대한 Socket Programming의 간단한 예제다. 다음은 TCP 서버와 클라이언트를 설정하는 방법에 대한 기본 예제다. 매우 기본적인 예시이며 실제 애플리케이션에서는 오류, 여러 클라이언트 및 보다 정교한 데이터 처리를 해야한다.  TCP Server Code: 이 서버는 지정된 호스트와 포트에서 수신 대기하고, 연결을 수락하고, 클라이언트로부터 메시지를 수신한 후 응답을 다시 보냅니다.import socketdef run_server(host='127.0.0.1', port=65432): with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as..

[Networking] Socket programming (소켓 프로그래밍) - 2

Socket programming은 인터넷 네트워킹의 맥락에서나 Linux와 같은 운영 체제 내에서 다양한 목적으로 다용도로 사용된다. 인터넷 네트워킹: Socket programming은 인터넷을 통한 통신을 가능하게 하는 데 광범위하게 사용된다. 이를 통해 서로 다른 컴퓨터의 서로 다른 애플리케이션이 네트워크를 통해 통신할 수 있다. 예를 들어, 웹사이트에 접속하면 브라우저는 Socket을 사용하여 웹 서버와 통신한다.운영 체제: Linux와 같은 운영 체제 내에서 Socket은 인터넷 통신뿐만 아니라 프로세스 간 통신(IPC)에도 사용된다. Socket은 프로세스가 같은 컴퓨터에 있더라도 네트워크 프로토콜 스택을 사용하여 서로 통신할 수 있는 방법을 제공한다. 이는 Linux 환경 내 시스템 프로그..

[Algorithm] Coq

Coq는 주로 소프트웨어와 수학적 증명의 형식적 검증에 사용되는 증명 도우미이다. 수학적 주장, 정의, 정리를 표현하기 위한 공식 언어와 이러한 주장에 대한 증명을 대화식으로 구성하고 검증하는 메커니즘을 제공한다. 전반적으로 Coq는 공식적인 추론과 검증을 위한 강력한 플랫폼을 제공하므로 소프트웨어 개발, 암호화, 안전이 중요한 시스템 등 정확성과 신뢰성이 중요한 영역에서 유용하게 사용할 수 있다. Coq의 주요 기능은 다음과 같다. 종속 유형 (Dependent Types): Coq는 귀납적 구조(Inductive Constructions)의 계산법이라는 유형 이론을 기반으로 한다(따라소 "COQ"라는 이름이 붙었다.). 유형이 용어에 종속되거나 그 반대의 경우도 허용하는 종속 유형을 지원한다. 이 기..

[Machine Learning] Federated Learning (연합 학습)

Federated Learning은 로컬 데이터 샘플을 보유한 여러 분산형 edge device 또는 server에서 모델을 교환하지 않고도 학습할 수 있는 머신 러닝 접근 방식이다. 중앙 서버와 같은 한 곳에서 모든 데이터를 수집하는 대신 데이터가 저장된 곳으로 모델을 보내 로컬에서 학습한 다음 학습한 내용(예: model updates 또는 gradients)만 중앙 서버나 aggregator로 다시 보낸다. 이 프로세스는 원시 데이터가 디바이스를 벗어나지 않고 집계된 insight만 공유되므로 사용자 개인정보를 보호하는 데 도움이 된다. 특히 의료(환자 데이터), 금용(거래 기록) 또는 IoT(사물 인터넷) 디바이스와 같이 데이터 개인 정보 보호가 중요한 시나리오에서 유용하다. 또한 네트워크를 통해..

[Algorithm] Factory Method Pattern (팩토리 메소드 패턴)

Factory Method Pattern은 객체 지향 프로그래밍에서 사용되는 창조적인 디자인 패턴이다. 이 패턴은 객체의 인스턴스화 프로세스를 서브 클래스에 위임하는 방법을 제공해 애플리케이션 아키텍처의 유연성을 높이고 분리할 수 있도록 한다. 이 패턴은 런타임까지 객체의 정확한 유형과 종속성을 확인할 수 없을 때 유용하다. 주요 개념Creator Classes: 객체를 생성하는 메서드를 선언하는 추상 클래스다. Factory Method 라고도 하는 이 메소드는 제품 클래스의 객체(product class)의 객체를 반환하기 위한 것이다.Concrete Creators: creator class를 상속하고 Factory Method를 재정의해 특정 product의 인스턴스를 반환하는 클래스다.Produ..

[Networking] Socket Programming (소켓 프로그래밍) - 1

Socket Programming은 일반적으로 서로 다른 시스템에서 실행되지만 같은 시스템에 있을 수도 있는 서로 다른 프로세스 간의 통신을 가능하게 하는 방법이다. 본질적으로는 통신 채널의 엔드포인트인 'Socket'을 만드는 것이다. Socket Programming은 네트워크를 통해 통신하는 모든 애플리케이션의 기본이므로 네트워크 소프트웨어 개발에 매우 중요하다. Socket의 정의: Socket은 네트워크에서 실행 중인 두 프로그램 간의 양방향 통신 링크의 endpoint다. Socket읜 포트 번호에 바인딩 되어 TCP 계층에서 데이터가 전송될 애플리케이션을 식별할 수 있다.작동 방식: Socket Programming은 일반적으로 TCP/IP 프로토콜 스택을 사용한다. 데이터는 네트워크 프로토..

[Algorithm] Nested Constructor (중첩 생성자)

Nested Constructor는 일반적으로 클래스의 한 생성자가 같은 클래스의 다른 생성자를 호출해 초기화의 일부를 수행하는 디자인 패턴을 말한다. 이는 공통 초기화 로직을 단일 생성자에서 중앙 집중화하여 코드 중복을 줄이고 유지 관리성을 높이는 데 도움이 될 수 있다. 이 개념은 생성자 오버로딩을 지원하는 Java 및 C++과 같은 언어에서 가장 일반적으로 사용된다.  Java: Java에서 this() 를 사용해 같은 클래스 내에 다른 생성자를 호출할 수 있다. 'Car(String make, String model)' 생성자는 같은 클래스 내의 다른 생성자를 'this(make, model, 2020)'을 통해 호출할 수 있고 이는 'make'와 'model'을 재사용한다.public class..

[Embedded] CPU Core (CPU 코어)

CPU core는 단순히 thread를 처리하는 것 이상의 역할을 한다. 컴퓨터 시스템 내 거의 모든 연산 작업의 중심이다. 다음은 CPU core의 주요 기능과 책임 중 일부다. 이러한 기능은 CPU core 설계에 깊숙히 통합되어 있으며 컴퓨터 시스템의 전반적인 핵심 기능의 정교함은 계속 증가해 소프트웨어 및 기술의 증가하는 요구를 처리할 수 있는 고급 기능을 통합하고 있다. 명령어 실행주요 역할: core의 주요 역할을 프로그램의 명령어 집합을 실행하는 것이다. 여기에는 기본적인 연산, 데이터 관리 및 논리 연산이 포함된다. 간단한 애플리케이셩이든 운영 체제든 모든 프로그램은 CPU core가 실행하는 명령어로 세분화된다.처리 주기: 각 core는 클러 주기를 기반으로 작업을 수행하며, 설계(sup..

[Algorithm] Queue vs Thread

Queue와 Thread라는 용어는 프로그래밍에서 일반적으로 멀티태스킹 및 동시 실행과 관련된 별개의 개념을 나타낸다. 성능과 효율성이 중요한 환경에서 효과적인 프로그래밍을 위해서는 아래 개념을 이해하는 것이 중요하다. Queue개념: Queue는 데이터를 선입선출(FIFO) 방식으로 저장하고 관리하는 데 사용되는 데이터 구조다. 대기열에 가장 먼저 추가된 항목이 가장 먼저 제거된다. 이는 사람들이 줄을 서는 것과 비슷하며, 가장 먼저 줄을 선 사람이 가장 먼저 서비스를 받는 것과 비슷하다.사용법: Queue는 프로그래밍에서 작업, 데이터 처리 또는 이벤트를 순차적으로 처리하기 위해 자주 사용된다. 또한 데이터를 처리하기 전에 일시적으로 보관하는 버퍼링을 관하는 데에도 사용할 수 있다.유형: Linear..

[Embedded] MOSFET (Metal-Oxide-Semiconductor Field-Effect Transistor)

MOSFET (Metal-Oxide-Semiconductor Field-Effect Transistor, 금속 산화막 반도체 전계 효과 트랜지스터)는 전자 신호를 증폭하거나 전환하는 데 사용되는 트랜지스터의 일종이다. 소스, 드레인, 게이트의 세 가지 단자가 있다. 게이트 단자에 인가된 전압은 소스와 드레인 사이의 전류 흐름을 조절해 MOSFET이 스위치 또는 증폭기 역할을 할 수 있도록 한다. MOSEFET은 낮은 전력 소비와 높은 효율로 인해 전자 장치에 널리 사용된다.