본문 바로가기

전체 글26

[Embedded OS] 1. 개발환경 구성하기 임베디드 OS 개발을 위한 개발환경을 구성해보자.가상환경 설치(UTM)UTM은 맥, iOS, visionOS용 오픈소스 가상환경 어플리케이션이다. 주로 QEMU 에뮬레이터 프로젝트를 기반으로 한다.다음 링크에서 UTM을 설치한다.다음 링크에서 Ubuntu Linux Server LTS iso를 다운받는다.UTM에서 + 버튼을 누르고 다음과 같이 설정한다.가상화(Virtualize) 선택운영체제 Linux하드웨어 4GB(4096MB)부팅 이미지 Boot from ISO image, 다운받은 Ubuntu Linux iso 선택저장소 32 GB공유할 폴더 생성해서 지정이름을 지어서 생성하면 완료된다.가상환경에 Ubuntu Linux 설치 & ssh 세팅방금 설정한 가상환경을 실행하면 우분투를 설치하는 터미널 .. 2026. 3. 17.
[클린 코드] 5주차: 11, 13장 11장: 시스템높은 추상화 수준(시스템 수준)에서도 깨끗함을 유지해야 함시스템 수준에서의 확장관심사를 적절히 분리해 관리하면 소프트웨어 아키텍처는 점진적으로 발전할 수 있다.관심사 분리제작-사용 분리관심사를 분리하지 않은 대표적인 경우초기화 지연/계산 지연: 필요할 때까지 객체 생성을 미루는 방법필요한 경우 그 때 생성하므로 생성자에 의존테스트를 위해 테스트 더블 필요일반 런타임 로직과 객체 생성 로직을 전부 테스트해야 함 → SRP 위반시스템 생성-시스템 사용을 분리하는 방법main 분리생성은 main이나 main이 호출하는 모듈에 집약main은 생성 역할, 애플리케이션은 생성된 객체 사용애플리케이션은 생성 과정에 대해 알 수 없음팩토리애플리케이션은 생성 시점은 결정하지만 생성 방법은 모름의존성 주입객.. 2025. 6. 6.
[HTTP 완벽 가이드] 5부 학습 18장: 웹 호스팅웹 호스팅: 컨텐츠 리소스를 저장, 중개, 관리하는 일웹 호스팅을 위해 서버가 필요하다.호스팅 서비스전용 호스팅은 개발자가 ISP로부터 직접 자체 서버를 구매해 사용하는 방식이다.가상 호스팅공유 호스팅/가상 호스팅: 웹 호스팅 업자는 컴퓨터 한 대를 여러 고객이 공유하게 해 저렴한 웹 호스팅 서비스를 제공한다.호스팅 업자는 복제 서버 더미(서버 팜)을 만들고 부하를 분산한다.하지만 HTTP 요청에 호스트 정보가 없다면 공용 웹 서버가 호스팅하고 있는 가상 웹 사이트 중 어떤 곳에 접근하려고 하는지 알 수 없다.위 문제를 해결하기 위한 방법은 다음과 같다.1. URL 경로를 통한 가상 호스팅URL 자체에 원하는 웹 서버를 명시하도록 API를 작성하는 방식이다.호스트명이 URL에 포함되어 .. 2025. 5. 29.
[클린 코드] 4주차: 9, 10장 9장: 단위 테스트⌜단위 테스트⌟ - 블라디미르 코리코프단위 테스트의 구조준비-실행-검증실행 구절은 한 줄을 넘기면 안 됨, 넘어가면 API의 캡슐화가 지켜지지 않은 것검증 구절(Assert)은 한 테스트에서 여러 가지를 검증해도 되지만 너무 커지는 것은 지양해야 함좋은 단위 테스트의 요소리팩토링 내성: 테스트를 실패로 바꾸지 않고 애플리케이션 코드를 리팩토링할 수 있는지 여부테스트는 코드에 유연성, 유지보수성, 재사용성을 제공한다.테스트 코드를 깨끗하게 유지하면 실제 코드도 지속적으로 깨끗하게 유지할 수 있음깨끗한 테스트 코드깨끗한 테스트 코드를 만들려면 가독성이 필요하다.Build-Operate-Check 패턴각 테스트 구조를 명확히 세 부분으로 나눔도메인 특화 언어(DSL)시스템 조작 API 대신 .. 2025. 5. 29.
[클린 코드] 3주차: 7, 8장 7장: 오류 처리깨끗하게 오류 처리하기try-catch-finally 문부터 작성하기예외를 반환하는 단위 테스트 작성단위 테스트에 맞춰 코드 구현catch 블럭에서 예외 잡기강제로 예외를 발생시키는 테스트 케이스를 작성하면 try 블럭의 트랜잭션 범위부터 구현할 수 있다.언체크 예외 사용하기일반적인 애플리케이션은 의존성이라는 비용이 이익보다 크다.체크 예외는 OCP 원칙을 위반한다.하위 단계의 코드를 수정하면 상위 단계 코드도 전부 고쳐야 한다.예외에 의미 제공하기오류 메시지에 전후 상황, 실패한 연산 이름, 실패 유형을 담아 오류 발생 원인/위치를 찾기 쉽도록 한다.호출자를 고려해 예외 클래스 정의하기오류를 분리하는 이유는 오류를 잡아내기 쉽도록 하기 위해서이다.예외 클래스의 정보로 오류를 구분해도 괜.. 2025. 5. 29.
[HTTP 완벽 가이드] 3부 학습 11장: 클라이언트 식별과 쿠키개별 접촉웹 서버는 요청을 보낸 사용자를 식별하거나 방문자가 보낸 연속적인 요청을 추적할 수 있다.웹 사이트들은 개인화된 서비스를 제공한다.개별 인사사용자 맞춤 추천저장된 사용자 정보세션 추적HTTP가 사용자를 식별하는 데 사용하는 기술은 다음과 같다.HTTP 헤더사용자에 대한 정보를 전달하는 일반적인 HTTP 요청 헤더는 다음과 같다.From: 사용자의 이메일 주소User-Agent: 사용자의 브라우저Referer: 사용자가 현재 링크를 타고 온 근원 페이지(사용자가 직전에 방문한 페이지)Authorization: 사용자 이름과 비밀번호Client-ip(확장): 클라이언트의 IP 주소X-Forwarded-For(확장): 클라이언트의 IP 주소Cookie(확장): 서버가 생.. 2025. 5. 23.