분류 전체보기 497

[개발] UTM 사용 시 System Clock과 실제 물리 시간이 맞지 않는 경우

최근 몇가지 Linux에서 개인적으로 확인해보고 싶은 내용이 있어서 MacOS UTM에서 가상화로 Ubuntu를 띄워놓고 작업 중이었다. 그런데 작업을 하다가 commit을 했는데 왜 오늘 날짜인 25일에 잔디가 심어지지 않는 이상한 현상을 발견했다. 가상머신 시스템 Clock을 보니 이상하게도 어제 24일 13시로 찍혀있었다. 아무리 UTC가 차이가 난다고 해도 -8시간을 훌쩍 넘어서 거의 22시간 가량 차이가 날리는 없다고 생각했다. (오늘은 25일이다. 이 글을 쓰는 시점은 대략 오전 11시) 음 아마도 UTM 가상 머신을 종료하지 않고 어제 하루 동안 그대로 두었는데, 그 순간 시스템 Clock이 멈춰버린 것으로 추축했다. 어제 밤중에 작업을 하다가 UTM 가상 머신을 Log off -> Po..

개발 이야기 11:32:10

[C] What is #define _XOPEN_SOURCE 600 ??

잠깐 지나치다가 눈에 띄어 정리해둔다. 종종 등장하는데, 아래 링크에 굉장히 깔끔하게 정리되어있다. 아래만 글만 읽어보면 된다. _GNU_SOURCE를 쓰는게 꼭 좋은 점 만은 아니라고 한다. Linux말고 다른 플랫폼을 생각한다면? 그런데 다른 플랫폼 고려할 케이스가 일단 나한테는 없다. 나는 _GNU_SOURCE 정도면 될 듯 싶다. https://stackoverflow.com/questions/5378778/what-does-d-xopen-source-do-mean

C & C++/C 2026.01.24

[Cloud] Virtualization에 대한 Lecture 그리고 AWS Annapurna Labs

오늘 기술 블로그를 찾아보다가 Virtualization -> AWS Nitro -> Annapurna Labs 흐름으로 좀 찾아보게 되었다. https://cseweb.ucsd.edu/~yiying/cse291-winter24/reading/ Reading and Schedule - CSE 291 Virtualization and Cloud Computing cseweb.ucsd.edu 위 자료는 굉장히 좋은 자료다. 위 강의에서 제공하는 Slide가 있는데 참 좋은 내용이 들어있어서 링크 첨부한다. https://cseweb.ucsd.edu/~yiying/cse291-winter24/reading/Overview.pdf 보다보니 AWS Nitro System에 대해 보게 되었고 AWS Annapur..

Cloud 2026.01.18

[Linux] 프로세스 스케쥴링

오늘 Linux CFS를 보면서 관련된 내용이 있어 아래 정리한다. 프로세스 스케쥴링 종류에는 주로 두 가지가 있다. Preemtive Scheduling (선점형 스케쥴링)- 스케쥴러가 강제로 CPU를 뺏어서 다른 프로세스에게 할당하는 방식이다. - Linux CFS (Completely Fair Scheduler)- 현대 OS에서는 대부분 선점형을 쓴다고 보면 된다. Non-Preemtive Scheduling (비선점형 스케쥴링)- 프로세스가 양보해야만 다른 프로세스에게 CPU가 할당되는 방식이다. (coorporative 협력 기반 방식이라고도 불린다)- cooporative라고 불리는 이유는 CPU턴을 잡은 프로세스가 다른 프로세스에게 양보(yield)해야만 다른 프로세스에게 CPU턴이 가..

Linux 2026.01.17

[Linux] Daemon Process의 명칭과 발음

흔히들 데몬 프로세스라고들 많이 부른다. 영어 표기로는 daemon이고 이건 그리스 신화에 나오는 신성한 존재를 의미한다. 그리고 헷갈리는 demon은 크리스트교에서 나오는 우리가 흔히 알고 있는 "마귀", "악마"다. 그런데 Background에서 돌아간다는 의미에서는 daemon이 맞는 의미다. 그러므로 개인적으로는 데몬 프로세스가 아니라 데이먼(Daemon) 프로세스 or 데이몬(Daemon) 프로세스라고 부르는 게 좀 더 올바르다는 생각이 든다. 헷갈림을 방지하기 위함이고 정통 의미대로 보자면 이게 맞는 듯 싶다. 그런데 daemon process 자체는 멕스웰의 사고 실험인 멕스웰 도깨비(Maxwell's daemon)에서 비롯되었다면서 왜 demon이 아니라 daemon process가 맞..

Linux 2026.01.17

[Git] Git 동작 방식

아침에 좀 코드를 짜는데 git 동작 중에 내가 모르던 부분이 있어서 잠시 헷갈려서 이참에 내용 다시 정리한다.코드 좀 짜고 git diff를 했는데 왜 추가된 내역이 안나오지? 싶었다. diff는 분명 working tree staging간에 비교하는거 아닌가? 싶었다. 그런데 결론은, git diff의 경우는 파일이 새로 추가된 경우는 보여주지 않는다고 한다. 즉 추가되었는데 아직 untracked상태라서 git diff를 해도 보이지 않고 추가한 뒤에 수정을 하면 tracked가 되므로 그때부터는 약간의 코드 수정을 하고 git diff를 하면 보인다고 한다. 그리고 untracked상태인 파일이 추가된게 있는지 보려면 git status를 하면 된다. ㅋㅋㅋ... 이런건 가끔 가다가도 분명 ..

Infrastructure/Git 2026.01.10

[책] 가상 면접 사례로 배우는 대규모 시스템 설계 기초

오랜만에 시간이 생겨서 주말에 책을 읽었다. 이번에 읽은 이 책은 이미 많은 개발자분들 께서 알고 계시는 책인데 시스템 디자인에 대한 책으로 이미 유명한 책이다. 가상 면접 사례로 배우는 대규모 시스템 설계 기초라는 책이다. 알렉스 쉬라는 분께서 쓰신 책이고 이미 해외에서 한 번 유명세를 탔다가 번역되어서 들어온 책이다. 관련해서 공식적으로 운영되는 저장소인지는 모르겠으나 내용이 잘 정리된 Github Repo도 있으니 한 번 검색해보길 권한다. 책은 단순히 시스템 디자인에 대한 사례만 설명하는 것이 아니라 면접을 준비하고 있다는 가정 하에 진행된다. 그래서 책 제목대로 "가상 면접 사례"에 충실한 책이다. 면접관이 요구할 만한 포인트를 먼저 짚어내고 이에 대해 간략한 설계를 한 뒤 이후 상세 설계로..

2026.01.04

[책] 그린 소프트웨어 Building Green Software

최근에 흥미로운 책을 한 권 읽었다. 교보문고 장바구니에 담아둔 지는 꽤 오래되었는데 다시 한번 장바구니를 훑어보다가 개요가 참 이색적이라는 생각이 들어서 데려왔다. 그린 소프트웨어라는 책이다. 그린 소프트웨어 | Building Green Software | A Sustainable Approach to Software Development and Operations 그린 소프트웨어? 이쪽 분야에서 환경에 대한 책은 본 기억이 없어서 소프트웨어 최적화에 대한 이야기인가? 라고 생각했는데, 제목 그대로 친환경 소프트웨어란 무엇인지에 대한 책이다. 여지껏 개발자들은 종종 인프라 비용/실행 비용 최적화/메모리/데이터 사이즈/서버 부하 등등에 대해서는 자주 고려했으면서 우리가 하는 기술적 의사 결정이 환경..

2026.01.03

[생각] 2025년 회고록

2025년이 마무리되었고, 2026년이 시작되었다. 새해를 시작하는 기념으로 2025년에 대한 개발자 회고록을 작성해보고자 한다. 올 한해는 빠르게 지나갔던 것 같다. 핵심이 되는 백엔드 프로젝트에 많은 기여를 해왔던 한 해였다. 늘상 발생하는 수많은 자잘한 수정 요청부터 굵직한 feature들까지 이것저것 해왔다. 핵심 프로젝트를 꽤나 깊숙하게 이해하게 되었던 한해였다. 새로오신 분께 프로젝트에 대해 설명해드리고 필요하실거라고 생각되는 문서를 미리 예상해서 만들어서 드렸던 경험은 누군가에게 도움을 주었다는 점에서 스스로 만족스러웠다. (실제로도 많은 도움이 되셨다고 하셔서 기분이 좋았다.) 꼭 같은 팀원이 아니더라도 누군가를 도울 수 있는 내가 되어서 좋았던 한 해였다. 그 외 서브가 되는 프로젝트..

개인적인 생각 2025.12.26

[OS] OS 개발 2일차

드디어 qemu로 EFI를 띄웠다. qemu-system-x86-64를 통해 띄우면 아래처럼 나온다.(아... 근데 아키텍쳐 맞추는 설정 다 찾아보는게 살짝 고통스럽다) 참고로 자꾸 실행이 안되길래 확인해봤는데 qemu-system-x84_64라고 잘못 적어서 계속 실행시켰었다. x86_64라고 써야한다. 역시 사람은 오타를 자주 낸다. 세팅할때 좀 번거로움이 있는 듯 하다. 현재 구조가 macOS(ARM) -> UTM ubuntu 22.04(ARM)를 사용하는 중인데, 내가 사용할 스크립트의 TARGET_ARCH가 x64이다. 그래서 이것 때문에 계속 오류가 발생해서 (당연히 arch가 맞지 않으니 어디선가 자꾸 깨진다.)그래서 그냥 UTM 가상화가 아니라 Full 에뮬레이션으로 전환해서 ub..

Operating systems 2025.12.26

[OS] OS 개발 1일차

실습에 사용할 머신- macOS UTM에 ubuntu 20.04 LTS 설치 (arm64로 설치)22.04로 깔았었다가 LLVM-dev관련 패키지가 20.04에서 지원되지 않아서 삽질했다. (꼭 22.04로 설치해야하셔요 ㅠ_ ㅠ) UTM 사용 방법은 아래가 가장 친절하니 참고 - https://velog.io/@pjm2571/Linux-Arm64-Ubuntu-22.04-Mac-Silicon-OS-%EC%84%A4%EC%B9%98 혹시 UTM사용할때 머신이 부팅되었는데도 아래 문구가 뜨면서 움직이지 않더라도 5 ~ 10초 기다리면 알아서 진행됨 display output is not active utm 다 설치되고 터미널 켜지면 아래를 입력 sudo apt updatesudo apt install u..

Operating systems 2025.12.25

[책] 실패를 통과하는 일 리뷰/서평

최근 괜찮은 책이 있다는 글을 보고 이 책을 사서 읽게 되었다. 비개발 서적인데 스타트업에 대한 이야기다. 국내에서 이미 개발자들 사이에선 유명하신 호돌맨님께서 추천한다는 글을 올리셔서 나도 사서 읽게 되었다. 꽤나 재밌게 읽었다. 이 책은 박소령님께서 쓰신 "실패를 통과하는 일"이라는 책이다. 내용은 창업자가 회사를 창업하고 투자를 받고 사람들을 레이오프하고 개인적 어려움을 이겨낸다던지 하는 등의 내용이다. 결국에는 회사를 매각하는 엔딩인데 책 두께도 두껍지 않아서 읽기 좋다. 사실 내용 자체가 고난을 이겨내는 과정에 대한 이야기가 주를 이루지만 개인적으로는 스타트업 생태계에 대한 내용들을 접할 수 있어서 좋았다. 투자를 어떻게 받는건지 대표가 어떻게 발로 뛰게 되는건지 등 재밌는 내용들이 ..

2025.09.17

[SpringBoot] SpringBoot 프로젝트 생성 시 Project Metadata 정리

Group프로젝트를 구분하는 조직/회사/팀의 도메인 - 회사도메인: com.mycompany- 개인 프로젝트: io.github.razelo Artifact빌드 결과물 이름jar또는 war로 패키징된 산출물 파일의 이름이 됨 artifact를 razelo-backend라고 하면 빌드 시 razelo-backend-0.0.1-SNAPSHOT.jar의 파일 생성 Name프로젝트의 표시용 이름 보통 Artifact와 같게 쓰는데 달라도 상관없음 SpringBoot는 spring.application.name 기본값으로 이걸 사용합니다. Package name코드의 루트 패키지 경로 기본적으로 Group + Artifact 조합으로 자동 생성됨 여기서 지정하는 값이 @SpringBootApplication..

[개발] Keep It Simple Stupid에 대한 생각

개발에 대해 요즘 자주 하는 생각을 정리해보고자 한다. 어떤 문제가 발생했을때 어떻게 해결하는게 가장 좋을까라는 생각을 자주 하곤 한다. 만약 개인 프로젝트였다면 써보고 싶었던 기술을 쓰거나 시간이 얼마나 걸리던 간에 fancy해보이는 방법을 선택할 것 같다.그런데 보통 대다수의 개발자들이 그렇듯 일상에서 마주하는, 해결해야할 문제의 99퍼센트는 회사 프로젝트에서 발생한다. 나 또한 그렇다. 그런 상황 속에서 항상 선택하는건 지금 당장 적용 가능한 가장 간단하고 빠른 해결 방법을 적용하게 된다. 물론 설계 단계라면 시간이 충분하니 고민을 해보고 문제는 없는지 검토하는 시간이 여유롭고 R&D할 수 있는 시간도 조금은 주어진다.크리티컬하지 않은 이슈의 경우도 고민할 수 있는 약간의 시간이 주어진다. (..

개발 이야기 2025.08.23

[서평] 스프링으로 시작하는 리액티브 프로그래밍

현재 사내 백엔드 프로젝트의 메인 기술 스택으로 Spring WebFlux를 사용 중이다. 최근 잠시 주말에 시간이 생겨서 WebFlux와 리액티브 프로그래밍에 대해 좀 더 살펴볼 기회가 생겼다. 사실 이 책 자체는 사놓은지는 오래 되었는데 이제서야 시간이 좀 생겨서 읽게 되었다. 책 제목은 아래와 같다. 스프링으로 시작하는 리액티브 프로그래밍 (Spring WebFlux를 이용한 Non-Blocking 애플리케이션 구현) https://product.kyobobook.co.kr/detail/S000201399476 우선 내용 자체는 굉장히 심플하다. 제목이 스프링으로 시작한다고 해서 Spring WebFlux에 대한 내용이 많지는 않다. WebFlux에 대한 내용은 마지막 챕터에 배치되어있는데..

2025.08.23

[java] bounded wildcard 표현

가끔 오픈소스 코드 보다보면 내부에 아래 같은 표현이 있어서 뭔가 싶었는데 이참에 정리해봤다. : Unbounded Wildcard : 어떤 타입이든 허용 (제한 없음) : Upper Bounded Wildcard : T 또는 T의 하위 타입 (상한 제한) : Lower Bounded Wildcard : T 또는 T의 상위 타입 (하한 제한) 기억하기 어려우면 PECS로 기억하면 된다. Producer extends / Consumer super 생산자는 extends를 쓰고, Consumer는 super를 쓴다 정도로, 아래 예시 보면 좀 이해가 도움이 될 듯 static void copy(List dest, List src) { for (T e : src) { // src는 값을..

Java 2025.07.27

[MySQL] GROUP BY ... ROLLUP 쿼리

간만에 쿼리 공부하던 중 재밌는 쿼리가 있어서 소개한다. 쿼리는 아래와 같다. (이거 indent 왜 깨지지?) SELECT IF(GROUPING(first_name), 'All first_name', first_name) AS first_name, IF(GROUPING(last_name), 'All last_name', last_name) AS last_name, COUNT(*) FROM employees GROUP BY first_name, last_name WITH ROLLUP; 보면 first_name, last_name 순으로 GROUP BY를 하는데 WITH ROLLUP을 통해 subtotal을 보여주려고 하고 있다. 이때 내가 처음본 절이 위에서 IF(GR..

Database/MySQL 2025.06.15

[k8s] 쿠버네티스 기초 스터디 1

쿠버네티스 스터디 교재- 쿠버네티스 교과서https://product.kyobobook.co.kr/detail/S000208711643 쿠버네티스 교과서 | 엘튼 스톤맨 - 교보문고쿠버네티스 교과서 | 기초부터 핵심 기술, 실무 활용, 효과적인 운영법까지! 실전 투입을 위한 준비로 제격인 쿠버네티스 교과서쿠버네티스는 지금도 변화 중이고 거대한 기능을 갖춘 강력한 플product.kyobobook.co.kr 로컬실습- rancher Desktop- kubectl 쿠버네티스- 컨테이너를 자동으로 배포/관리/스케일링/복구해주는 컨테이너 오케스트레이션 툴 기능- 배포 자동화- 셀프 힐링 (첫 학습간 살펴본 내용 - Pod를 수동으로 삭제 시 Deployment가 자동으로 되살려놓음)- 로드 밸런싱- 수평 확장 ..

kubernetes 2025.04.16

[Dev] TOCTOU (Time of check to time of use)문제란 무엇인가?

Java List의 컬렉션 팩토리 메서드인 of를 살펴보던 중 내부 코드에서 흥미로운 코멘트를발견했다. 아래 Java 코드를 보자. comment like:// copy and check manually to void TOCTOU ?  /** * Creates a new List from an untrusted array, creating a new array for internal * storage, and checking for and rejecting null elements. * * @param the List's element type * @param input the input array * @return the new list */ ..

개발 정보 2025.01.01