2024/08 6

[ubuntu 22.04] lxc 설정하기

LXC (Linux Containers) 설치 및 활용 가이드이 문서는 LXC(Linux Containers)의 개념을 설명하고, 설치부터 기본 설정, 컨테이너 생성 및 관리, 그리고 포트 포워딩을 통한 고급 활용까지의 과정을 상세히 기술함.1. LXC란 무엇인가?**LXC (Linux Containers)**는 운영체제 수준의 가상화 기술임. 전체 운영체제를 새로 설치하는 가상 머신(VM)과 달리, LXC는 호스트 리눅스 커널의 기능을 공유하여 프로세스, 네트워크, 파일 시스템 등을 격리된 공간(컨테이너)에서 실행함. 이 방식은 거의 네이티브에 가까운 성능을 제공하며, 빠르고 효율적인 개발 및 테스트 환경 구축에 유용함.2. LXC 설치 및 기본 설정LXC 설치 및 기본적인 환경 설정을 진행함. (Ub..

인프라 2024.08.31

[RaspberryPI] 라즈베리 파이 dwc 커스텀 usb_hid_gadget 설정

라즈베리 파이를 USB 키보드/마우스로 설정하기 (TinyPilot HID 설정 가이드)TinyPilot과 같은 원격 KVM(Keyboard, Video, Mouse) 프로젝트 구성 시, 라즈베리 파이는 단순한 소형 컴퓨터가 아닌, 연결된 서버를 제어하는 주변 장치 역할을 수행해야 함. 즉, 라즈베리 파이의 USB 포트가 키보드와 마우스처럼 동작하도록 설정하는 것이 필요함.이 가이드는 라즈베리 파이가 USB '호스트(Host)'가 아닌 USB '가젯(Gadget)'으로 작동하도록 설정하는 과정을 상세히 기술함. 이 과정은 커널 모듈에 대한 이해와 USB 장치의 동작 방식을 직접 구성하는 내용을 포함하고 있음.1. 핵심 용어 이해본격적인 설정에 앞서, 이 작업에 필요한 세 가지 핵심 요소(UDC, dwc2..

인프라 2024.08.30

[Java] 도메인 계층 vs 서비스 계층

도메인 계층 vs. 서비스 계층: 역할과 책임 명확히 구분하기객체 지향 설계를 하거나 클린 아키텍처를 적용할 때, 많은 개발자가 "이 비즈니스 로직은 어디에 두어야 할까?"라는 고민에 빠지곤 합니다. 특히 **도메인 계층(Domain Layer)**과 **서비스 계층(Service Layer)**의 역할을 명확히 구분하는 것은 견고하고 유지보수하기 좋은 애플리케이션을 만드는 핵심입니다.오늘은 이 두 계층의 역할과 책임을 실제 코드 예시를 통해 명확하게 알아보겠습니다.1. 핵심 비즈니스의 심장, 도메인 계층 (Domain Layer)도메인 계층은 애플리케이션의 가장 핵심적인 부분입니다. 비즈니스의 규칙과 상태, 그리고 그에 따른 로직이 모두 이곳에 정의됩니다.역할: 애플리케이션의 핵심 비즈니스 규칙과 로직..

[Java ] 3-Tier 아키텍처와 DTO:

웹 애플리케이션을 개발할 때 "사용자가 입력한 데이터는 어디로 가서 어떻게 처리될까?"라는 질문은 아키텍처 설계의 가장 기본이 되는 질문입니다. 이 데이터의 여정을 체계적으로 안내하는 지도가 바로 3-Tier 아키텍처이며, 이 여정에서 데이터를 안전하게 실어 나르는 전용 차량이 DTO(Data Transfer Object)입니다.오늘은 웹 애플리케이션의 뼈대를 이루는 3가지 계층과, 각 계층 사이에서 데이터가 어떻게 DTO를 통해 안전하게 이동하는지 알아보겠습니다.1. 애플리케이션의 3가지 핵심 계층견고한 웹 애플리케이션은 보통 세 가지 주요 계층으로 역할을 나눕니다. 각 계층은 자신만의 명확한 책임이 있습니다.① 프레젠테이션 계층 (Presentation Layer) - 고객을 맞이하는 창구역할: 사용..

[Java] Java의 String은 왜 불변(Immutable)할까?

(feat. 메모리, 스레드, 해시코드)Java를 공부하면서 가장 먼저 마주한 흥미로운 사실이 있었다. 바로 String 클래스가 불변(immutable) 이라는 점이다.분명히 나는 str = str + " World"; 와 같은 코드로 문자열을 변경했다고 생각했는데, Java는 이를 "변경"이 아니라 "새로 생성"이라고 말한다.1. String은 변경되는 것이 아니라, 새로 만들어진다먼저 의문이 들었다. "str = str + 'World' 했는데, 왜 불변이라고 하지?"그래서 실제로 참조가 바뀌는지 직접 확인해봤다.import java.util.Arrays;public class Main { public static void main(String[] args) { String str..

[Java] equals overriding 과 hash code

자바에서 ==, equals, hashCode의 차이와 역할== 연산자의 동작객체의 참조 주소를 비교한다.두 객체가 같은 메모리 주소(참조)를 가리키는지 확인한다.참조 변수는 스택 영역에 저장되고, 객체는 힙 영역에 저장된다.따라서, ==는 스택 영역에 있는 두 참조 변수를 비교하여, 같은 객체를 가리키고 있는지 판단한다.Person person1 = new Person("John", 25);Person person2 = new Person("John", 25);System.out.println(person1 == person2); // false를 반환위 예제에서 person1과 person2는 각각 서로 다른 힙 영역에 객체를 가지고 있으므로, == 연산자는 false를 반환한다.equals 메서드의..