반응형

2026/07 16

자바 시작하기 — JVM과 바이트 코드, 그리고 개발 환경

자바 시작하기 — JVM과 바이트 코드, 그리고 개발 환경프로그래밍 언어는 사람의 언어와 기계어 사이를 잇는 다리입니다. 사람 쪽에 가까운 고급 언어와 기계 쪽에 가까운 저급 언어가 나뉘어 있고, 자바는 그중 고급 언어에 속합니다.이 글은 2021년 6월 기준 기록입니다.자바는 한 번 작성해서 어디서나 실행하려고 만들어졌다자바는 썬 마이크로시스템즈에서 발표한 언어입니다. 다양한 서버 운영체제에서 단 한 번의 작성으로 모든 곳에서 실행 가능한 언어는 자바뿐이었기 때문에, 공공기관 웹 애플리케이션 구축용 언어로 성장했습니다. 이 "한 번 작성"이라는 성질이 자바의 첫 번째 특징인 이식성입니다. 자바로 개발된 프로그램은 소스 파일을 다시 수정하지 않아도, 자바 실행 환경(JRE)이 설치되어 있는 모든 운영체제..

IT·테크/개발 2026.07.19

README.md - 소개

md 파일 여는 프로그램이 없어서 직접 만들었습니다 — 오프라인 마크다운 에디터 README.md메모장으로 열리던 .md 파일이 답답해서, 결국 리더를 하나 만든 이야기입니다.깃허브에서 받은 프로젝트 폴더를 열고 README.md 를 더블클릭했더니, 메모장이 떴습니다. # 과 * 과 백틱이 날것 그대로 박힌 화면. 분명 누군가는 이 문서를 예쁘게 조판된 모습으로 보라고 썼을 텐데, 제 화면에는 기호만 잔뜩이었습니다. VS Code 를 켜자니 문서 하나 읽자고 켜는 게 과했고, 웹 마크다운 에디터는 편했지만 제 글을 남의 서버에 올려야 했습니다. 회사 문서든 개인 메모든, 붙여 넣기 전에 한 번씩 손이 멈추더군요. 마땅한 게 없어서 직접 만들었고, 그게 README.md 입니다.이름이 곧 사용법입니다 — ..

[AI] 000 - 개요

AI 엔지니어링 공부, 밑바닥부터 시작합니다요즘 AI 없이 일한 날이 거의 없습니다. 개인적으로도 쓰고, 회사에서도 지원을 받아 적극적으로 쓰고 있습니다. 주로 AI 에이전트에게 애플리케이션 설계와 개발, 데이터 분석, 자료 정리를 맡깁니다. 특히 난이도가 높지는 않은데 번거롭고 시간만 잡아먹는 일 — 거기서는 정말 압도적인 효율을 체감합니다. 그런데 얼마 전에 문득 이런 생각이 들었습니다.이렇게 잘 쓰고 있는데, 정작 이 안에서 무슨 일이 벌어지는지 저는 설명하지 못합니다.쓰는 것과 아는 것 사이SNS와 인터넷에는 에이전틱 AI 관련 정보와 경험 글이 매일 쏟아집니다. ChatGPT가 크게 주목받던 시기부터 지금까지, 변화 속도가 점점 빨라진다고 느낍니다. 저도 그 흐름 위에서 도구를 갈아타며 따라왔습..

IT·테크/AI 2026.07.18

ShotLog - 자기 자신을 찍는 캡처 프로그램

앱에게 시켰습니다 — 자기 스크린샷을 직접 찍으라고테스트 프로젝트가 0개인 앱이 스스로를 검증하고 릴리스 에셋까지 만드는 법 — CLI 훅 네 개.UI 를 한 줄 고쳤습니다. 옵션 하나가 늘어서 창에 행이 하나 추가됐을 뿐입니다. 그런데 그 한 줄 때문에 스토어 리스팅 스크린샷을 여덟 장 다시 찍어야 했습니다. 한국어 넷, 영어 넷. 앱을 띄우고, 언어를 바꾸고, 그럴듯한 샘플 데이터를 손으로 채워 넣고, 창 크기를 맞추고, 캡처하고, 배경을 지우고, 1366×768 캔버스에 앉히고… 여덟 번.세 번째 릴리스에서 손이 멈췄습니다. 이건 제가 할 일이 아니라는 생각이 들더군요. 화면을 찍는 앱을 만들면서, 정작 그 앱의 스크린샷은 제가 손으로 찍고 있었습니다. 그래서 앱에게 시켰습니다.창을 열지 않고 회귀..

ShotLog - 예외 처리의 중요성

절대 죽지 않게 만들었더니, 조용히 지웠습니다예외를 삼키는 코드가 데이터를 지우는 방식 — fail-soft 의 뒷면.안전하려고 세운 규칙이 사실은 가장 위험한 코드였다는 걸 뒤늦게 아는 순간이 있습니다. 저는 그걸 catch 블록 하나에서 겪었습니다. 제 앱에는 규칙이 하나 있습니다. 핫키와 저장소 IO 에서는 절대 예외를 던지지 않는다. 프로젝트 문서 맨 아래 "함정" 항목에 제가 직접 적어 둔 문장이고, 나름 근거도 분명했습니다. 그래서 모든 Load() 와 Save() 를 try/catch 로 감쌌습니다. 앱은 무슨 일이 있어도 죽지 않았고, 저는 그걸 잘한 일이라고 생각했습니다. 그런데 그 규칙을 순진하게 지킨 코드가 사용자의 캡처 기록을 통째로, 아무 소리 없이 지울 수 있다는 걸 나중에 알았..

ShotLog - 스토어 배포 중 발생한 문제

겉은 1.2.0.0, 속은 1.1.0.0첫 게시는 한 번이지만, 업데이트는 계속됩니다 — 두 번째 제출에서 만난 함정들.세 파일의 버전을 전부 1.2.0.0 으로 맞췄습니다. ShotLog.csproj, app.manifest, Package.appxmanifest. 이건 제가 제 문서에 손수 적어 둔 규칙이라, 체크리스트를 보면서 한 줄씩 확인까지 했습니다. 빌드하고, 업로드하고, 커피를 한 잔 내리고 돌아왔더니 화면에 빨간 줄이 하나 떠 있더군요. "패키지 전체 이름이 이미 존재합니다 — SlnU.ShotLog_1.1.0.0_X64_…"1.1 이라니. 방금 세 군데를 다 고쳤는데요. 파일 이름조차 1.2.0.0 이라고 적혀 있는 그 패키지를, 스토어는 1.1 이라고 읽고 있었습니다. 앱을 스토어에 처..

ShotLog - 소개

캡처와 기록 사이의 틈화면을 찍는 순간, 그 생각도 같이 붙잡아 두는 도구를 만들었습니다.스크린샷 폴더를 열어 봅니다. Screenshot (47).png, Screenshot (48).png, 스크린샷 2026-06-12 143052.png… 스무 장, 서른 장. 분명 하나하나 이유가 있어서 찍었을 겁니다. 그런데 지금 그 이유를 한 장도 기억하지 못하겠더군요. 이상한 일입니다. 화면은 픽셀 하나 안 틀리고 그대로 남아 있는데, 왜 찍었는지만 사라졌습니다. 이 오류가 재현된다는 걸 알리려던 건지, 이 UI 가 마음에 들어서였는지, 이 문단을 나중에 인용하려던 건지. 남은 건 증거뿐이고, 증언은 없습니다. 생각해 보면 당연했습니다. 캡처는 0.1초 만에 끝나는데, 그걸 기록으로 만드는 일 — 이름 붙이고..

Pulsar - 켠 김에 타이머

상주하니까, 타이머도 됩니다항상 트레이에 떠 있는 앱의 두 번째 정체성 — Pulsar 의 타이머 이야기입니다.“25분만 집중하자” 하고 타이머를 켜려는데, 그 타이머가 어디 있죠? 폰은 책상 저쪽에 엎어져 있고, 브라우저에 열어 둔 뽀모도로 탭은 어느새 스무 개째 탭 뒤로 밀려나 있고, 주방 타이머는… 주방에 있습니다. 정작 하루 종일 제 눈앞에 켜져 있는 건 이 PC 인데, 그 PC 에는 마땅한 타이머가 없더군요. 게다가 폰 타이머를 끄러 손을 뻗는 순간 그 폰이 저를 유튜브로 데려가는 것도, 솔직히 한두 번이 아니었습니다. 지난 글에서 즐겨찾기를 네 가지 방식으로 꺼내는 런처 Pulsar 를 소개했습니다. 그런데 이 앱을 만들다 문득 이런 생각이 들었습니다. “얘는 어차피 항상 켜져 있잖아?” 트레..

Pulsar - 소개

취향을 못 골라서, 네 개를 다 만들었습니다하나의 데이터, 네 개의 성격 — 제가 만든 데스크톱 런처 Pulsar 이야기입니다.즐겨찾기, 어디에 두고 사세요? 누구는 바탕화면 구석에 아이콘 바를 띄워 두고, 누구는 단축키를 눌러 목록을 불러내고, 누구는 그냥 검색창에 이름 몇 글자를 칩니다. 저도 런처를 하나 만들어 보려고 앉았는데, 정작 첫 줄부터 막히더군요. 기능이 아니라 “그래서 이걸 어떻게 꺼낼 건데?” 에서요. 주변에 물어봤더니 답이 다 달랐습니다. macOS 를 쓰던 친구는 화면 아래 독이 없으면 허전하다 하고, 어떤 분은 화면을 가리는 건 질색이라 커서 옆에 잠깐 떴다 사라지길 원하고, 키보드에서 손을 떼기 싫은 개발자는 "그냥 검색해서 엔터"면 된다 합니다. 취향은 하나로 안 모였습니다. ..

파란 경고창을 지우기까지 — Atlas 를 Microsoft Store 에 올린 이야기

내가 만든 앱을 세상에 내놓는 방법을 다시 정한 이야기 — GitHub 릴리스에서 Microsoft Store 로. 몇 달을 매달려 만든 앱을 처음으로 누군가에게 건넸을 때, 제가 마주한 건 고맙다는 말이 아니라 파란 전체 화면이었습니다. “Windows 의 PC 보호 — 게시자를 알 수 없는 앱입니다.” 굵은 경고 아래, 작게 접혀 있는 “실행” 버튼. 제 몇 달치 작업이 화면 위에서는 조심해야 할 무언가처럼 보였습니다. 더 뼈아팠던 건 — 이게 안전하다는 걸, 만든 저조차 증명할 방법이 없었다는 것입니다.이건 Atlas 라는 앱을 처음 어떻게 세상에 내놓았고, 저 파란 경고창이 왜 그렇게 마음에 걸렸으며, 결국 그 경고가 뜨지 않는 선반 위로 앱을 통째로 옮긴 이야기입니다. (Atlas 가 어떤 앱인..

반응형