터미널 오픈소스 도구 모음
·
IT
터미널 오픈소스 도구 모음btop (https://github.com/aristocratos/btop)CPU, 메모리, 디스크, 네트워크 상태 및 프로세스 통계를 실시간으로 확인하는 터미널 리소스 모니터. Mole (https://github.com/tw93/Mole)시스템 청소, 앱 삭제, 디스크 분석 및 실시간 성능 모니터링을 제공하는 올인원 툴 Sniffnet (https://sniffnet.net/)인터넷 트래픽을 간편하게 추적하고 관리할 수 있도록 도와주는 네트워크 모니터링 도구 k9s (https://k9scli.io/)Kubernetes 클러스터와 상호작용하기 위한 터미널 기반 UI
속도의 병목이 이동하고 있다
·
IT/AI
속도의 병목이 이동하고 있다처음에는 Copilot과 Windsurf를 단순 코드 자동완성 용도로 사용했고, 이후에는 ChatGPT와 Claude에게 채팅으로 물어보며 개발을 해왔다. 근래 반년 동안은 JetBrains AI와 Claude Code만 사용하여 개발하고 있는데, 확실히 체감이 다르다. 단순 AI 자동완성 때와 달리, Code Agent를 본격적으로 활용하니 작업 속도가 정말 말도 안 되게 빨라졌다는 것을 느끼고 있다.이전에 궁금해서 측정했었던 하루 개발 라인이 50~500 라인 정도였던 것에 반해(정확히 기억나지 않는다… 기록해 둘걸), 지금은 혼자서 하루에 수천 라인까지 개발이 가능하다. 구현은 순식간에 되었는데, 배포까지 걸리는 시간은 빨라지기는 했지만 비해서는 빨라지지는 않은 것처럼 느..
내보내정 Git Worktree 주요 명령어
·
IT/Git
내가 보려고 내가 정리한 Git Worktree 주요 명령어# feature 브랜치로 새 worktree 생성git worktree add ../my-feature my-feature# main 기준으로 새 브랜치를 만들면서 worktree 생성git worktree add -b my-feature ../my-feature main# 특정 브랜치 기준으로 새 브랜치를 만들면서 worktree 생성git worktree add -b my-feature ../my-feature ur-feature# 현재 worktree 목록 확인git worktree list# worktree 삭제git worktree remove my-feature# 강제 삭제 (변경사항 있어도)git worktree remove -..
Run Claude Code with Ollama Local & Cloud Models
·
IT/AI
지난 1월 말, Ollama에 흥미로운 기능이 추가 되었다. 아주 메일을 3통이나 보내더라. 출시된 기능은 바로 launch 명령어다.https://ollama.com/blog/launch이번에 추가된 ollama launch는 Claude Code, OpenCode, Codex와 같은 에이전트형 도구들을 로컬 또는 클라우드 모델과 연결해 실행할 수 있게 해주는 기능이다. 문서에서는 아래 모델들을 권장하고 있다. 사용법은 기존 Ollama 명령어만큼이나 간단하다.ollama launch claudeollama launch claude --config위의 명령어로 Claude code로 실행할 수 있고 터미널에서 사용하고 싶은 모델을 선택할 수 있다.동작 확인을 위해서 테트리스 개발을 요청해 보았다. 먼저..
백엔드 관점에서 본 개인정보 보호법 및 안전성 확보조치 핵심 요약
·
IT
백엔드 관점에서 본 개인정보 보호법 및 안전성 확보조치 핵심 요약본 문서는 개인정보 관련 법령 중, 시스템 설계 및 구현 단계에서 개발자가 반드시 숙지하고 적용해야 할 핵심 사항을 선별하여 정리했습니다.법령의 복잡한 표현 대신 개발 실무 관점에서 이해하기 쉬운 형태로 재구성하였으며, 법령의 구체적인 전문은 문서 하단의 [참고 섹션] 링크를 통해 확인하실 수 있습니다.개인정보 보호법1. 개인정보의 정의 (Data Definition)무엇을 보호해야 하는가?기본 정의: 살아 있는 개인을 알아볼 수 있는 정보(성명, 주민번호, 영상 등).결합 정보: 해당 정보만으로는 누군지 몰라도, 다른 정보와 쉽게 결합하여 식별할 수 있다면 개인정보로 봅니다.가명정보: 가명처리(비식별화)를 했더라도 추가 정보 없이는 식별 ..
다중 DataSource 환경에서 장애 격리하기: LazyConnectionDataSourceProxy 활용기
·
Kotlin & Java/Spring
다중 DataSource 환경에서 장애 격리하기: LazyConnectionDataSourceProxy 활용기배경어떠한 사정으로 현재 사용중인 MySQL에서 추가로 Oracle DB를 연동해서 View Table을 통해 기능을 구현하게 되었다. 해당 Oracle DB는 Spring Batch 2개의 Job에서만 사용하고 있으며, 향후 Oracle 연동 기능이 확장될 가능성은 없다.예측한 장애 상황Spring Boot 기동 시 Oracle DataSource 빈 생성이 실패하면 어떻게 될까?ApplicationContext 로딩 자체가 실패하여 Oracle과 무관한 다른 배치 잡들도 모두 실행 불가 상태가 된다. Oracle DB 장애 때문에 우리 서비스의 전체 배치가 멈추는 상황이 발생할 수 있는 것이다..
2025년 실서비스 보안 취약점 발견 후기
·
IT
2025년 실서비스 보안 취약점 발견 후기P사: 암호 평문 저장 및 요청에 평문 암호 사용P사는 요식업 서비스로, 평소처럼 이용하던 중 우연히 잘못눌러서 네트워크 탭이 열렸고 또 그 요청이 우현히 눈에 보여서 보안 취약점을 발견하게 되었다. 회원 로그인 시 ID와 Password를 쿠키에 평문 상태로 저장을 했고 이 암호는 그대로 HTTP Request 시 쿠키에 저장된 해당 정보를 평문 그대로 전송하고 있었다.깜짝 놀란 난 즉시 해당 업체에 문의 글을 남겼고 다행히 업체 측의 대응은 빨랐다.1차 연락: 빠른 조치를 취하겠다는 약속2차 연락: 인증 방식을 JWT로 변경 완료했다는 확인하지만 이후 Broken Access Control 문제로 정보가 노출되고 있다는 뉴스를 보았다. 힝. P사: Promet..
프로그래머의 뇌, 후기
·
책책책 책을 읽읍시다
프로그래머의 뇌 (펠리너 헤르만스 지음 / 차건희 옮김)최근 '프로그래머의 뇌'(펠리너 헤르만스 지음)라는 책을 읽으며 코드를 이해하는 과정에 대해 생각해보는 시간을 가졌다. 이 책은 개발자가 코드를 읽을 때 겪는 혼란을 인지 과학의 관점에서 분석하고, 뇌가 정보를 처리하는 방식을 설명을 하고 있다.저자는 코드가 초래하는 혼란을 크게 세 가지로 분류하고 있다.코드가 초래하는 세 가지 종류의 혼란생소한 코드를 처음 접하면 누구나 혼란을 느낄것이고 상황에 따라서 다른 혼란을 느낄 것이라고 얘기한다.저자는 각 상황별로 다음처럼 정의 했다.지식의 부족익숙하지 않은 프로그래밍 언어정보의 부족메소드의 정확한 기능처리 능력의 부족너무 많은 변수로 따라가기 힘든 상황 코드에 영향을 주는 인지과정그리고 그것을 인지 과정..
[Mac] 맥 환경, Jetbrains IDE 과거 버전 삭제
·
IT
[Mac] 맥 환경에서 Jetbrains 과거 버전 삭제1. IDE 에서 삭제2. 직접 삭제, 해당 경로 진입 후 삭제하려는 버전의 폴더 rm 명령어로 삭제
좋은 엔지니어 되기: 핵심 원칙과 실천 방안
·
IT
좋은 엔지니어 되기: 핵심 원칙과 실천 방안이 글은 0x0001 블로그에 게시된 "좋은 엔지니어 되기"(https://0x0001.cc/blog/good-engineer.md) 글을 바탕으로 내용을 정리하고 재구성한 것입니다. 원문에는 보다 상세한 내용이 포함되어 있으니 참고하시면 좋습니다.1. 엔지니어의 정의엔지니어는 과학적 원칙을 적용하여 문제를 분석하고, 설계, 코드 작성, 제작, 창조 등을 통해 문제를 해결하며 세상을 더 나은 곳으로 만드는 사람입니다.2. 소프트웨어 엔지니어에게 요구되는 역량컴퓨터의 작동 원리 이해: 하드웨어와 소프트웨어가 어떻게 상호작용하는지 깊이 있게 이해해야 합니다.기초부터 학습: 추상화된 언어나 기술에만 의존하지 않고, 기초부터 학습하여 탄탄한 기반을 마련해야 합니다.3...
[JIRA] 태스크와 릴리즈 버전 관리 자동화
·
IT
[JIRA] 태스크와 릴리즈 버전 관리 자동화, Automate task and release versioning.Jira와 GitHub을 연동하면 프로젝트 관리의 효율성을 크게 높일 수 있습니다. 이 글에서는 스프린트 진행 태스크와 릴리스 버전링을 중심으로, 개발자 입장에서 활용할 수 있는 자동화 팁을 소개합니다. (제가 현 회사에서 사용하는 방법으로 환경별로 다를 수 있고 이렇게도 하는구나 정도만...)태스크 상태 전환 흐름 정의태스크 상태 전환 흐름은 다음과 같이 정의합니다. 개발 단계별로 태스크 상태를 자동으로 변경하게 되도록 하여, 팀원 간 협업과 프로세스 관리에 도움이 됩니다.OPEN → IN_PROGRESS → IN_DEV_REVIEW → READY_FOR_QA → IN_QA → READY_..
JVM Garbage Collection Tuning
·
Kotlin & Java
JVM Garbage Collection TuningSpring boot + Kotlin GC 튜닝 Spring Boot + Kotlin을 기반으로 GC 튜닝을 실습하고 모니터링을 통해서 아웃풋이 어떻게 변화되는지 모니터링 해보자.우선 스프링부트 사용시 가장 일반적으로 많이 사용될 스택과 코드 구성을 구성했다.Backend: Spring Boot + KotlinDatabase: MySQL, RedisMonitoring: Micrometer + Prometheus + GrafanaContainerization: DockerService일반적으로 많이 사용되고 간단하게 구성을 했다.@Serviceclass OrderService( private val productRepository: ProductR..
JVM Garbage Collection Algorithm
·
Kotlin & Java
JVM Garbage Collection AlgorithmSerial GC가장 단순한 형태의 GC 알고리즘으로 단일 스레드로 동작.단일 스레드에서 동작을하여 쓰레드간 통신 오버헤드가 발생하지 않아 경우에 따라서 상대적으로 효율적일 수도 있다.싱글 코어에서 100MB 미만의 데이터를 다루는 경우 이점을 가질 수 있다.특정 하드웨어나 OS 등의 환경에서는 default로 사용된다. (조선시대 환경)java -XX:+UseSerialGC -jar Application.javaParallel GCJava8 Default GCThroughput Collector 로도 불리며 Serial GC와 유사하다. 다른 점은 멀티 쓰레드 환경에서 GC를 수행한다는 것이다.멀티 코어 환경에서 중간-큰 사이즈를 처리하는 어플리..
JVM Garbage Collection
·
Kotlin & Java
JVM Garbage CollectionGarbage Collection(GC) 은 JVM이 더 이상 사용되지 않는 객체(garbage) 를 자동으로 찾아 메모리에서 제거하는 기능이다.  Garbage Collection 실행 조건GC는 메모리 사용 상황에 따라 JVM이 판단하여 실행. 주로 아래 같은 상황에서 트리거 됨.Eden 공간 부족: JVM 메모리 구조에서 Young Generation 영역에 객체를 할당할 공간 부족한 경우Survivor 공간 부족: 객체를 Survivor로 옮기려고 할 때 공간 부족한 경우Old Generation 공간 부족: Old 영역이 임계치에 도달하는 경우 (FULL GC 발생)OOM 임박: OOM이 발생할 가능성이 있는 경우 Garbage Collection 메모리 ..
HTTP (Hypertext Transfer Protocol) 개념알기, HTTP/3
·
IT/Web
HTTP (Hypertext Transfer Protocol) 개념알기, HTTP/3HTTP/3는 전송 계층에서 TCP 대신 QUIC을 사용한다.QUICHTTP/3에서 QUIC 기능을 통해 지연 시간 단축, 네트워크 안정성, 빠른 성능을 가능하게 한다.훨씬 낮은 대기 시간 제공TCP는 핸드쉐이크 후 별도로 TLS 과정을 수행하지만 QUIC은 핸드쉐이크 단일 과정에서 처리UDP를 통해 개별 스트림이 독립적으로 실행연결 ID(Connection ID)로 세션 유지 가능Wifi에서 Lan으로 변경 등 네트워크 변경 상황에서도 연결 ID를 통해 연결 유지할 수 있다.네트워크 전환 중에도 연결을 유지할 수 있다.개별 스트림 기반 전송으로 손실된 스트림만 재전송 가능HTTP/2는 다중화 프로토콜로 여러개의 동시 H..
Consistent hashing, 일관된 해싱
·
IT/알고리즘
Consistent hashing, 일관된 해싱 일관된 해싱(Consistent hashing)은 해싱 기법중 하나로 해싱 테이블 크기가 조정될 때 전체 키중에서 n/m 만 remmaping하면 되는 방법 이다. (n: 키의 개수, m: 슬롯 개수)* 일반 해시 테이블에서는 거의 모든 키를 다시 매핑 해야 한다.우선 Hash에 대한 부분부터 짚고 넘어가자. Hash table(=Hash map) 해시(Hash)는 임의의 데이터를 고정된 크기의 값으로 변환하는 과정으로 변환된 값을 해시 값 또는 해시 코드라고 하다. 이렇게 변환된 해시 값을 배열의 인덱스에 사용하는 자료구조로 Dictionary 혹은 Map 이라고도 부르며 이를 해시 테이블이라 하며 이런 특징을 이용하여 빠른 접근, 빠른 삽입, 빠른..
[분산 시스템] Raft Consensus Algorithm, 뗏목 합의 알고리즘
·
Infrastructure
Distributed Consensus Algorithm(분산 합의 알고리즘) 분산 합의 알고리즘은 여러 노드로 구성된 분산 시스템에서 모든 노드들이 특정 값에 대해서 동의(consensus) 하도록 만드는 알고리즘으로 분산 환경에서 데이터 일관성, 장애 허용성, 시스템 안정성을 보장하는데 사용 된다.주요한 3가지 특징을 가지고 있다.Consistency (일관성): 모든 노드가 동일한 데이터를 공유Fault Tolerance (장애 허용성): 일부 노드가 장애가 나더라도 시스템은 정상적으로 작동Eventual Agreement (최종 동의): 네트워크 상태가 안정적이면 모든 노드가 같은 결론으로 동작 Raft Consensus Algorithm, 뗏목 합의 알고리즘Raft 는 분산 합의 알고리즘 중 하..
[분산 시스템] CAP Theorem: Consistency, Availability, Partition tolerance
·
Infrastructure
CAP Theorem : Consistency, Availability, Partition tolerance 이전에 소프트웨어 시스템의 성능을 향상시키는 방법은 하드웨어 성능을 올리거나(scale up) 구현 알고리즘을 수정하는 방향이였고 현재에 들어서는 수평적 확장의 방법(scale out)의 세번째 옵션을 선택할 수 있게 되었다. 2010년도에 들어서 글로벌 서비스와 클라우드화 복잡한 애플리케이션 요구사항에 따라 성능 요구가 증가함에 따라서 수평적 확장이 필요해졌고 현재에서 비지니스를 진행하게 위해서는 분산 환경이 필요로 하고 수평적 확장으로 가져온 성능 이점은 복잡성이라는 비용을 지불한다.  CAP Theorem은 분산 시스템에서 Consistency(일관성), Availability(가용성), P..
Ollama Model Update 모델 일괄 업데이트 방법
·
IT/AI
Ollama Model Update 모델 일괄 업데이트 방법#!/bin/bashollama list | tail -n +2 | awk '{print $1}' | while read -r model; do ollama pull $modeldone
HTTP (Hypertext Transfer Protocol) 개념알기, HTTP/2
·
IT/Web
HTTP (Hypertext Transfer Protocol) 개념알기, HTTP/2Stream, Stream Multiplexing (다중 요청 처리)하나의 TCP 연결에서 여러 개의 요청과 응답을 동시에 처리할 수 있습니다. 이를 통해 지연 시간(latency)을 줄이고 더 빠른 웹 페이지 로딩을 가능하게 합니다.HTTP/2는 하나의 TCP Connection에서 요청을 처리할 수 있는 반면 HTTP/1.1은 여러개 Connection을 가지는 것을 확인서버 푸시(Server Push)HTTP/2는 서버 푸시(Server Push) 기능을 제공하여, 클라이언트가 요청하지 않은 리소스도 미리 보내는 방식으로 성능을 향상시킬 수 있습니다. 헤더 압축 (HPACK)HTTP/2는 헤더 압축을 통해 요청과 응..