claude code를 사용하며 파일을 분석시키거나 커맨드 명령을 수행할 때 항상 사용자에게 허락을 받고 진행하는데 가끔 너무 자주 물어봐서 효율이 떨어진다 느껴졌다. plan mode로 계획을 모두 세웠을 때도 가끔 중간에 물어봐서 작업이 끊기기도 한다. 웬만큼 plan을 잘 세워두면 나보다 나을 때가 많기에 믿고 쓰기로 한다. 1. 일회성으로 사용하는 명령claude --dangerously-skip-permissions 2. Windows에서 alias를 영구적으로 설정하는 방법Mac에 비해 윈도우는 좀 복잡한 것 같은데 alias(매크로)로 doskey + AutoRun 조합을 사용하여 해결할 수 있다.먼저 아래 명령을 Power Shell에서 관리자 모드로 실행하여 매크로 파일 생성/편집을 실행..
마샬링(Marshalling)은 객체나 데이터 구조를 전송 및 저장에 적합한 표준 형식으로 변환하는 과정이다. 이 개념은 분산 시스템과 네트워크 통신에서 필수적인 핵심 기술이다. 마샬링과 직렬화의 내용이 혼용되기 쉬워서 정리하려고 한다. 거기에 더해 언마샬링에 대해서도 간단하게 적어보았다. 마샬링(Marshalling)마샬링은 프로그램 내부 메모리에 존재하는 객체를 외부로 전달 가능한 형태로 바꾸는 과정이다. 메모리 구조는 프로세스마다 다르기 때문에 그대로는 다른 시스템이나 프로세스가 이해할 수 없다. 이 문제를 해결하기 위해 객체의 구조와 값을 JSON, XML, 바이너리 스트림과 같은 표준 포맷으로 변환하는 작업이 마샬링이다. 마샬링이 필요한 대표적인 이유 3가지를 간단하게 다음과 같이 정리할 수 ..
Spring 기반 애플리케이션을 설계하다 보면 Service 인터페이스와 이를 구현한 ServiceImpl 클래스를 분리하는 구조를 흔히 접하게 된다. 처음 Spring을 접하는 입장에서는 굳이 왜 이렇게 나누는지 의문이 자연스럽게 든다. 이 구조는 객체지향 설계 원칙, 특히 OCP(Open-Closed Principle)와 깊게 연결되어 있다고 하지만 여기에 대한 필요성과 논의는 오래도록 있어온 것 같다.이 글에서는 Service와 ServiceImpl의 관계를 객체지향 관점에서 정리하고, 이 구조가 OCP를 어떻게 만족시키는지 살펴보려 한다. 먼저 OCP(Open-Closed Principle)가 무엇인지 알아보자. OCP(Open-Closed Principle) OCP는 “소프트웨어 엔티티는 확장..
자주 사용하는 정렬 알고리즘들을 정리해보려 한다. 버블 정렬(Bubble Sort)정의: 인접한 원소들을 비교하여 큰 값을 뒤로 보내는 정렬시간복잡도: O(n²) - 삽입/삭제 후 재정렬 필요, 검색 O(n) 의사코드for i = 0 to n-2: for j = 0 to n-2-i: if arr[j] > arr[j+1]: swap(arr[j], arr[j+1]) 선택 정렬(Selection Sort)정의: 최솟값을 찾아 앞쪽부터 차례로 배치하는 정렬시간복잡도: O(n²) - 삽입/삭제 후 재정렬 필요, 검색 O(n)의사코드for i = 0 to n-2: min_idx = i for j = i+1 to n-1: if arr[j] 삽입 정렬(In..
최근 수업 중 custom loss를 구현하는 과제에서 알게 된 trick인데 softmax 연산을 수행할 때 내부적으로 overflow나 underflow를 방지하기 위한 방법으로 이 방식을 사용한다고 한다. 이름에 나오듯 Log와 Summation 그리고 Exponential을 이용한 트릭이다. exp를 기존 방식대로 계산해보면 아래와 같이 overflow가 발생하게 된다. import numpy as npx = np.array([1000, 1000, 1000])print(np.exp(x))# [inf inf inf] x와 같은 logit(입력값)을 구해 softmax 연산을 위해 적용하였을 때 overflow가 발생하게 되고 이는 결국 loss가 발산하거나 backpropagation이 실패하는 결..
신호처리에서 LTI 시스템과 같은 부분에 대해 공부하다 보면 Impulse Input(임펄스 입력)과 Impulse Response(임펄스 응답)에 대해 자주 접하게 된다. 더 나아가 이 개념과 함께 Convolution(컨볼루션)에 대해서도 함께 배우게 된다. 여기서 Convolution은 우리가 알고 있는 그 Convolution Neural Network(CNN)의 Convolution이다. 다만, CNN에서 사용하는 Convolution 연산은 수학적으로 엄밀한 의미의 Convolution이 아니라, 실제로는 Cross-Correlation이긴 하지만 어쨌든 단어 자체는 익숙할 것이다.이 글에서는 임펄스 입력과 출력이 무엇인지, 시스템이 그것에 어떻게 반응하는지를 설명하고, 이와 연결된 컨볼루션 ..