자바에서 0.1 + 0.2가 0.3이 아닌 이유, 그리고 엡실론으로 비교하기
·
카테고리 없음
자바로 계산기 같은 걸 만들어보다가 한 번쯤 겪는 당황스러운 순간이 있습니다. 0.1 + 0.2를 계산했는데 결과가 0.3이 아니라고 나오는 상황입니다. 분명 초등학교 때 배운 계산인데, 컴퓨터가 틀렸나 싶어지죠.사실 이건 버그가 아니라 부동소수점(floating point)을 다루는 컴퓨터라면 피할 수 없는 특성입니다. 이번 글에서는 왜 이런 일이 생기는지, 그리고 실무에서는 이 문제를 어떻게 우회하는지 정리해보겠습니다.1. 직접 확인해보기말보다 코드로 먼저 보는 게 빠릅니다.public class FloatingPointExample { public static void main(String[] args) { double a = 0.1; double b = 0.2; ..
박테리아 소멸 과정으로 이해하는 시간복잡도 O(log N)
·
알고리즘/자료구조
O(N)이나 O(N²)은 그래도 감이 오는데, O(log N)은 처음 보면 좀 낯섭니다. "로그가 갑자기 왜 튀어나오지?" 싶은 경우가 많습니다. 그런데 사실 O(log N)은 아주 익숙한 상황 하나만 떠올리면 금방 이해가 됩니다. 바로 뭔가를 계속 반으로 줄여나가는 상황입니다.이번 글에서는 "박테리아가 매년 절반씩 줄어들다가 결국 사라지는" 아주 단순한 예시를 가지고, 왜 이런 상황이 O(log N)이 되는지 수식으로 직접 따라가 보고, 실제로 이 패턴이 어떤 알고리즘에서 쓰이는지도 같이 살펴보겠습니다.1. 문제 상황박테리아가 N마리 있고, 1년이 지날 때마다 그 수가 절반(½)으로 줄어든다고 해봅시다.0년차: N1년차: (½)¹ × N2년차: (½)² × N3년차: (½)³ × N...Y년차: (½)..
코딩 테스트 필수 개념, 시간 복잡도(빅오 표기법) 제대로 이해하기
·
알고리즘
알고리즘 문제를 풀다 보면 "이 코드는 시간 초과 나겠는데?" 혹은 "이 정도면 통과하겠다"는 감을 잡아야 할 때가 많습니다. 이 감을 수치화한 것이 바로 시간 복잡도(Time Complexity)이고, 이를 표현하는 대표적인 방법이 빅오 표기법(Big-O Notation) 입니다.이번 글에서는 빅오 표기법이 왜 필요한지, 어떻게 계산하는지, 그리고 실전 코딩 테스트에서 어떻게 활용하는지까지 예시 코드와 함께 차근차근 정리해보겠습니다.1. 연산 횟수부터 시작하기다음과 같은 함수가 있다고 가정해봅시다.public class SolutionExample { public static int solution(int n) { int count = 0; // 구간 1: n번 반복 (n..
클로드 코드 권한 모드, 상황에 맞게 골라 쓰고 있나요
·
AI/Claude Code
권한 모드가 왜 중요한가클로드 코드는 코드를 읽는 것부터 파일을 고치고, 셸 명령을 실행하는 것까지 다양한 작업을 대신 해줍니다. 문제는 이 모든 작업을 매번 사람이 일일이 승인하다 보면 속도가 확 떨어진다는 점이고, 반대로 전부 자동으로 넘겨버리면 의도하지 않은 파일이 지워지거나 이상한 명령이 실행될 위험이 생긴다는 점입니다.권한 모드는 바로 이 지점, 즉 "얼마나 자율적으로 움직이게 둘 것인가"를 정하는 설정입니다. 세션 중간에 바꿀 수도 있고, 설정 파일의 defaultMode 값으로 아예 기본값을 고정해둘 수도 있습니다.여러가지 모드, 각각 언제 쓰면 좋을까모드설명default표준 동작입니다. 도구를 처음 쓸 때마다 권한을 물어봅니다. 처음 써보는 저장소이거나, 뭘 할지 아직 감이 안 잡힐 때 가..
클로드 코드, 권한 하나 잘못 주면 사고 납니다
·
AI/Claude Code
AI 코딩 어시스턴트를 프로젝트에 들이면 가장 먼저 걱정되는 게 하나 있습니다. "얘가 내 파일을 마음대로 지우거나, 이상한 명령어를 실행하면 어떡하지?" 하는 부분이죠. 클로드 코드(Claude Code)는 이 문제를 권한 시스템으로 해결합니다. 어떤 도구를 자동으로 써도 되는지, 어떤 건 물어보고 써야 하는지, 어떤 건 아예 막아야 하는지를 세밀하게 정할 수 있습니다. 오늘은 이 권한 관리를 어떻게 확인하고 설정하는지 정리해보겠습니다.클로드가 사용하는 도구들클로드 코드는 코드베이스 작업을 위해 여러 도구를 씁니다. 셸 명령을 실행하는 Bash, 파일을 수정하는 Edit, 계획을 세우는 EnterPlanMode, 격리된 작업 공간을 만드는 EnterWorktree까지 종류가 꽤 다양합니다.문제는 이 도..
누가 커밋했는지 아무도 몰랐던 SVN 저장소, 인증 없는 코드베이스를 고치기까지
·
Back end/서버
들어가며레거시 프로젝트를 맡다 보면 종종 이런 문장을 마주하게 됩니다. "이거 왜 이렇게 되어 있어요?" "글쎄요, 예전 개발자가 만들어놓은 거라..."저희 팀이 운영 중인 SVN 저장소도 그랬습니다.겉으로는 평범하게 잘 돌아가고 있었지만, 누가 언제 무엇을 커밋했는지, 시스템 상으로는 아무도 알 수 없었습니다. 이 글은 "커밋 기록에 작성자가 안 남는다"는 사소해 보이는 문제 하나를 파고들어,실제 원인을 찾고 해결하기까지의 과정을 정리한 기록입니다.문제 상황: 이름은 있는데, 계정은 없다svn log를 찍어보면 이런 식이었습니다.------------------------------------------------------------------------r5410 | (no author) | 2026..
[AI] Astryx, 8년간 메타 내부에만 있던 디자인 시스템
·
AI
메타(Meta)가 사내에서 8년간 갈고 닦아온 디자인 시스템 Astryx를 2026년 무료로 공개했습니다. 사내 앱 1만 3천 개 이상에서 검증된 컴포넌트 세트를, 이제 누구나 가져다 쓸 수 있게 된 거죠. 개인 프로젝트로 화면을 빠르게 찍어내야 하는 입장에서 꽤 반가운 소식이라 정리해봤습니다.Astryx가 뭔가요?디자인 시스템은 버튼, 입력창, 내비게이션 같은 UI 컴포넌트와 색상·서체 규칙을 하나의 세트로 묶어놓은 것을 말합니다. Astryx는 그 세트를 150개 이상의 완성형 컴포넌트와 7종의 테마로 제공합니다. MIT 라이선스라 상업 프로젝트에도 무료로 쓸 수 있고, 현재는 퍼블릭 베타 단계입니다.왜 눈여겨볼 만한가일반적인 디자인 시스템 소개라면 여기서 끝날 텐데, Astryx의 진짜 포인트는 A..
[AI] 기획 초안을 짜주는 AI 동료, '매니패스트(Manyfast)' 사용기 (PRD부터 유저플로우까지)
·
AI
💡 빈 문서의 막막함을 깨부수기: AI 기획 도구를 만나다서비스를 새로 시작하거나 토이 프로젝트를 기획할 때, 가장 힘든 순간은 언제일까요?바로 "어디서부터 어떻게 정리해야 하지?"라며 빈 화면을 마주하고 있을 때입니다. 주니어 기획자는 물론이고 개발자가 사이드 프로젝트를 시작할 때도 기획의 뼈대를 잡는 일은 늘 심리적 피로감이 큽니다. 최근 프로젝트 기획 초안을 빠르게 구조화하기 위해 AI 기획 도구인 매니패스트(Manyfast)를 도입해 테스트해 보았습니다.한 줄의 아이디어가 어떻게 완벽한 기획 산출물로 변하는지 그 과정을 공유합니다.🛠️ 매니패스트(Manyfast)란?아이디어를 입력하면 일방적으로 문서를 뱉어내는 것이 아니라, 대화형 질문을 통해 서비스의 본질을 파악하고 PRD(제품 요구사항 문..