본문 바로가기

Computer

(112)
Database ACID 데이터베이스에서 ACID는 트랜잭션(데이터베이스에서의 작업 단위)이 안전하게 수행되는 것을 보장하기 위한 네 가지 기본적인 속성을 의미합니다. ACID는 Atomicity(원자성), Consistency(일관성), Isolation(독립성), Durability(지속성)의 약자입니다. 각각의 속성을 쉽게 이해할 수 있도록 예를 들어 설명하겠습니다.Atomicity (원자성)원자성은 트랜잭션이 데이터베이스에 모두 반영되거나 전혀 반영되지 않아야 함을 의미합니다. 즉, 트랜잭션의 모든 작업이 성공적으로 완료되거나, 하나라도 실패하면 전체 트랜잭션이 취소되어야 합니다.예시: 은행 계좌 이체를 생각해보세요. A 계좌에서 B 계좌로 돈을 이체할 때, 이 과정은 두 단계로 이루어집니다. (1) A 계좌에서 돈을 빼..
쉽게 풀어쓴 튜링 기계와 튜링 불완전성 안녕하세요! 오늘은 컴퓨터 과학의 깊은 물에서 튀어나온, 들으면 귀에 익숙하지만 정확히 무엇인지 설명하기 어려운 개념인 '튜링 기계'와 '튜링 불완전성'에 대해 쉽고 재미있게 풀어보려고 합니다. 튜링 기계란 무엇일까요? '튜링 기계'는 1930년대에 영국의 수학자 앨런 튜링이 제안한 이론적인 계산 모델입니다. 컴퓨터가 발명되기 전, 사람들은 "이론적으로 컴퓨터가 할 수 있는 모든 계산"이 무엇인지 궁금해했습니다. 튜링 기계는 바로 이 질문에 답하기 위해 고안된 개념이죠. 간단히 말해, 튜링 기계는 무한히 긴 테이프, 테이프 위를 움직일 수 있는 헤드, 그리고 이 헤드가 수행할 수 있는 일련의 규칙(프로그램)으로 구성되어 있습니다. 테이프는 칸으로 나누어져 있고, 각 칸에는 기호(예: 0 또는 1)가 적혀..
graceful shutdown spring: task: execution: pool: core-size: 150 max-size: 1000 queue-capacity: 1500 keep-alive: 60s shutdown: await-termination: true await-termination-period: 60s spring 을 이용한 service 운영시 graceful shutdown 이 제대로 동작하지 않는다면, 위의 옵션이 빠져있는지 확인해보자. ( pool 옵션 제외 )
왜 Vite를 사용해야 하나요? Vite 소개Vite는 프론트엔드 개발을 위한 새로운 빌드 도구로, 빠른 개발 서버와 최적화된 빌드 성능을 제공하는 것이 특징입니다. Vite는 번들링 없이 개발 서버를 시작하며, ES 모듈을 활용하여 더 나은 개발 경험을 제공합니다. Vite의 주요 장점1. 빠른 개발 서버 시작기존의 빌드 도구들은 번들링 과정을 거쳐야 하기 때문에, 큰 프로젝트에서는 개발 서버를 시작하는 데 오랜 시간이 걸립니다. 반면, Vite는 ES 모듈을 사용하여 번들링을 생략함으로써 즉각적인 반응성을 제공합니다. 이는 큰 프로젝트에서도 매우 빠르게 개발 서버를 시작할 수 있게 합니다.2. 빠른 모듈 핫 리플레이스먼트 (HMR)Vite는 모듈 단위로 핫 리플레이스먼트를 수행합니다. 이는 코드가 변경될 때마다 전체 페이지를 새로고..
안전한 소프트웨어 개발을 위한 보안 코딩 관행 소프트웨어 보안은 오늘날 그 어느 때보다 중요한 요소가 되었습니다. 애플리케이션이 취약한 코드로 인해 공격받는 경우, 막대한 피해가 발생할 수 있습니다. 이 글에서는 보안 코딩을 위한 필수 체크리스트를 제공하여 안전한 소프트웨어 개발에 기여하고자 합니다.카테고리주요 항목설명입력 유효성 검사서버 측 유효성 검사모든 입력 데이터는 서버에서 검증해야 함. 클라이언트 측 검사는 신뢰할 수 없음. 데이터 소스 분류신뢰할 수 있는 데이터와 신뢰할 수 없는 데이터를 분류하고 유효성 검사를 다르게 적용. 문자 집합 지정UTF-8 같은 표준화된 문자 세트를 사용하여 입력 처리.출력 인코딩서버 측 출력 인코딩신뢰할 수 없는 데이터는 서버에서 인코딩 처리하여 공격을 방지. SQL 쿼리, OS 명령 등에서 안전한 인코딩 수행..
iOS Not found device 현상 iPhone 12+ Max Device 를 연결했을 경우 인식을 못하는 현상 환경 CPU : M1 Pro OS : 13.1(22C65) 해결책 1. xcode 켜기 2. device connect 3. sudo pkill usbmuxd
p90, p95, p99 latency pXX Latency 에 대해서 pXX 는 percentile XX 라고 읽는다. 백분위 라고 생각하면된다. 내 생각을 정리할겸 표를 만들어 보았다. 응답속도 요청수 % 누적% p1 1 1 1% 1% p3 2 2 2% 3% p7 3 4 4% 7% p15 4 8 8.5% 15.5% p32 5 16 17% 32.5% p66 6 32 34% 66.5% p84.5 7 16 17% 84.5% p93 8 8 8.5% 93% p97 9 4 4% 97% p99 10 2 2% 99% 11 1 1% 100% Total 94 100% 위의 표를 참조해서 아래 글을 이해해보자. p99 의 latency 는 10초이다. 요청의 1%만이 10초보다 오래걸린다. 다른 사이트에서 percentil 99 latency 에 대해 다음처..
Issue with using reflect in kotlin Class kotlin.reflect.jvm.internal.calls.CallerImpl$FieldGetter can not access a member of class 다음의 이슈에 직면하였다. 왜일까 Research 를 하였고.아래 Reference 에 명시한 글을 읽고 나니 이해가 되었다.아래 글의 답변을 번역해두었다.나는 당신의 요점을보고 대부분 동의합니다. 그러나 Kotlin 리플렉션은 약간 다른 모델에서 작동합니다. 컴파일 타임에 컴파일러가 볼 수 있는 것과 최대한 유사한 프로그램 구조를 나타냅니다. 이것이 추구해야 할 올바른 목표라는 점에 대해 이의를 제기할 수 있지만 이 접근 방식에는 특정 이점이 있습니다. 예를 들어 런타임용으로 설계된 시스템(예: DI)이 컴파일 타임에 Kotlin 컴..