분류 전체보기 507

[Blockchain] 개인적으로 생각하는 블록체인 업계의 미래와 쇠퇴

학부 때 블록체인에 대해 꽤나 깊게 공부했던 적이 있다. P2P라는 개념을 접하면서 같이 접했던 개념인데 굉장히 기술적으로 흥미롭게 느껴진 요소들이 많았다. 논문도 읽고 작은 사이드 프로젝트를 하면서 창업 제의도 받았었는데, 결국 "서비스다운" 서비스를 만들기에는 좀 어딘가 간극이 크게 벌어진 부분이 항상 눈에 걸렸다. 그때를 생각하다가 최근 블록체인 업계(흔히들 말하는 Web3포함)를 다시 돌아보자면 돌이킬 수 없는 쇠퇴의 길을 걷고 있는 듯 싶다. 자본은 모두 AI + 로보틱스로 몰리고 있는 와중에서 충분한 시간이 주어졌음에도 가치를 증명하지 못했고 오히려 많은 사건 사고들 때문에 더 몰락을 가속화한 듯 싶다. 뭐 사실 학부 때 지원했던 블록체인 회사 "모두가" 지금은 존재하지 않는다. 모두 사라..

Blockchain 2026.02.07

[vi] vi에서 라인 수 보이게 하는 방법

요즘 vi에서 간단한 작업들을 좀 하는 중인데, GCC 결과로 나온 warning이랑 error가 대체 몇 줄인지 감으로 찾다가 너무 불편해서 VI Editor에서 라인 수를 볼 수 있게 해두었다. 간단하게 아래처럼 하면 된다. vi ~/.vimrc 맨 아래에 아래 추가set number :wq 위처럼 설정하면 이제 매번 vi열때마다 아래처럼 라인 수 볼 수 있다. (아 그리고 아래는 지금 고치는 중이라 좀 틀린 문법이 있을 수 있다. error랑 warning이 지독하게 20개 정도는 나온 것 같아서 막 고치는 중이다.)

Tools/vi 2026.02.07

[개발] Software Engineer와 AI 그리고 미래

나는 AI agent를 적극 활용하는 편이다. 특히 ChatGPT를 여전히 애용하는 중이다. code complete보다 질의응답형 챗봇이 내겐 좀 더 유용했다. code complete 형은 사실 매번 내가 짜려는 거보다 선수쳐서 띄워주는게 싫었다. 내가 잘 작성하고 있는데 희미하게 bot이 예상하는 코드를 제안해주고 얼떨결에 그걸 Complete시켜버리는게 썩 유저 경험이 좋지 않았다. 내가 생각한 코드가 아니라서 대부분 다시 지워버리고 또 짜던 와중에 또 auto Complete시켜버리고, 그게 짜증나서 이런 유형은 잘 쓰지 않는다. (뭐 꽤나 긴 로깅 포매팅 자동 완성에는 도움된다.) GPT는 유료 버전으로 수년간 사용 중인데 며칠 전 처음으로 Cursor를 제대로 써봤는데 꽤 놀라웠다. 모든 c..

Dev 2026.02.01

[C] C89의 implicit declaration과 GCC 컴파일 옵션

아침에 잠깐 이것 저것 살펴보던 중에 gcc(GCC == GNU compiler collection) 컴파일 warning 중에 흥미로운 게 하나 있어서 내용을 정리해본다. 만약 예를 들어 아래와 같은 코드가 있다고 가정하자. #include // signal() #include#include// #include // pause() static void signal_handler(int signo) { if (signo == SIGINT) { fprintf(stdout, "Caught SIGINT!\n"); } else if (signo == SIGTERM) { fprintf(stdout, "Caught SIGTERM!\n"); } else { fprintf(stderr, "Unexpected s..

C & C++/C 2026.01.31

[블로그] 티스토리 블로그 운영에 대한 개인적인 불만

개인적으로 티스토리 블로그 운영에 좀 불편함이 있다. 과거 동영상이 제거되는것도 왜 이런 정책을 가져가나 싶기도하다. 과거에 듣기론 어뷰징 헤비 업로더 유형의 일부 유저들 때문에 이렇게 한다고 알고 있긴 하다. 그런데 그런 유저만 제재하면 될 건데 왜 동영상 제한이 적용되는지?? 좀 이해가 가지 않는다. 꽤 오랜 시간 블로그를 운영해왔고 지금껏 비공개 글까지 포함하면 약 630개 가량의 글을 써왔는데 가끔 보면 블로그 플랫폼으로써 아쉬운 점들이 좀 있다. 대안으로는 - medium- velog - github.io 등이 있지만, 사실 세 플랫폼 모두 썩 좋아보이진 않는다. 개인적으로 github.io는 관리 측면에서 불편함이 꽤 있었다. velog는 커스텀과 플러그인 지원 등이 불편했다. 블로그 카테..

개인적인 생각 2026.01.28

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

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

Dev 2026.01.25

[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 demon)에서 비롯되었다면서 왜 demon이 아니라 daemon process가 맞는..

Linux 2026.01.17

[C] C에서 자주 쓰이는 libc 핵심 함수 모음

최근 C language를 통해서 코드를 좀 짜고 있는데 오랜만에 하려니 libc 핵심 함수들이 좀 헷갈리고 기억이 안나는 경우가 자주 있다. 아래 정리해둔다. 심심할 때 한 번식 눈에 익혀두면 좋다. 온갖 종류의 잡다한 코딩을 하다보면 늘 느끼는 점이 있다. 이런 내용들은 외워지지가 않는 거라 그냥 "익숙"해져야한다. 외우려하지 말고 쓰다보면 언젠가... 녹아들게 되는 것처럼 그냥 그렇게... 그렇게 해야할 듯 하다. void *malloc(size_t size);void free(void *ptr);void *calloc(size_t n, size_t size);void *realloc(void *ptr, size_t size);memset(void *p, int v, size_t n);memc..

C & C++/C 2026.01.13

[C] _GNU_SOURCE 사용

strerrorname_np를 통해서 errno를 EPERM 같은 값으로 출력할 수 있도록 코드를 짰는데, 계속 컴파일러가 strerrorname_np의 리턴값이 int라고 추론했다. 따라서 최상단에 _GNU_SOURCE를 붙여주었고, gcc임을 명시해주는 방식으로 해결할 수 있었다. #define _GNU_SOURCE #include#include#include#include#include#includeint main() { const char* filename = "buccaneer.txt"; int fd = open(filename, O_RDWR); if (fd == -1) { perror("open"); return 1; } struct epoll_event event; int re..

C & C++/C 2026.01.12

[C] stdio buffering control

표준입출력에서 제공하는 사용자 버퍼링 인터페이스는 아래과 같다. 버퍼 미사용행 버퍼 블록 버퍼 각각 버퍼 정책에 대한 영어 표기를 찾아보았는데 내 예상과 달라서 기록해둔다. unbuffered (no buffer일 줄 알았는데 unffered임)line buffered (row buff? line buffer 중 뭘까 싶었는데 \n라서 line buffer라고 한다고 한다. \n -> LF -> Line Feed라서 그렇다.)fully buffered (block buffer일 줄 알았는데 왜 fully? 이건 다음 블로그 포스팅에서 자세히 다루겠다.)

C & C++/C 2026.01.11

[C] 일반적인 에러 상황에서 어떤 값을 리턴하는 게 좋을까?

최근에 C 코드를 좀 짜고 있는데, 에러 상황에서 return을 해야할때 습관적으로 return -1을 해주고 있었다. 그런데 오늘 알게 된건 return -1은 올바르지 않고 return 1이 올바른 관습이라고 한다. 통상 int main에서 성공인 경우 return 0을 하는데, 늘 시스템 콜 중에서 실패인 경우 -1을 주는 경우가 있어서 나도 모르게 int main에서도 return -1을 해버렸다. 그런데 이 경우 쉘이 받아들일때 0~255 내 return value를 받아서 해석하는데 -1을 받아버리니 이게 255가 되어버리고 잘못된 케이스로 인해 프로세스가 종료되었다고 오해석되는 것이다. 그래서 return 1이 맞다고 한다. 쉘은 non-zero를 받을때 에러 케이스에 의해 Fail된거구..

C & C++/C 2026.01.11

[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도 있으니 한 번 검색해보길 권한다. 책은 단순히 시스템 디자인에 대한 사례만 설명하는 것이 아니라 면접을 준비하고 있다는 가정 하에 진행된다. 그래서 책 제목대로 "가상 면접 사례"에 충실한 책이다. 면접관이 요구할 만한 포인트를 먼저 짚어내고 이에 대해 간략한 설계를 한 뒤 이후 상세 설계로..

dev.book 2026.01.04

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

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

dev.book 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

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

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

dev.book 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..