Logic in Code,
Freedom in Travel.

인생 뭐 있나 사람 사는거 다 똑같지

분류 전체보기

실무 경험/실무 개발 & 협업

휴먼에러를 방지하는 방법 1 - git add -p(git add partial (or patch)

우리가 커밋을 하고 코드를 push/merge 할 때에는 잘 동작하고 테스트도 잘 통과되었기 때문에 그랬을 것이다. 내가 서비스의 이해도가 깊고, 코드를 장악하고 있고, 테스트 커버리지가 100 이 나온다 하더라도 주의하고 침착해야 한다. 코드 한줄로 회사가 문을 닫을수도 있는게 개발자, 엔지니어로서의 책임이라 생각된다. 엔지니어의 책임으로서 꼭 알아야 할 1가지가 있다면 git add -p 이다.git add -p는 변경된 파일의 일부만 선택적으로 스테이지에 추가할 수 있도록 도와주는 기능이다. 전체 파일을 한 번에 커밋하지 않고, 필요한 부분만 선택해서 커밋하고 싶을 때 사용하며 매번 사용하는 습관을 들이면 좋다.습관을 들인다면 10년후 누군가 내 코드의 의도를 쉽게 파악하는데 도움이 된다. 누가 ..

2025. 4. 24. 00:14
Database

[Database] - CAP + 서비스를 잘 설계하려면

이미지가 좀 이상하긴 하지만.. 이론상 CAP 를 100% 충족시키지 못한다. CPA 에는 일관성, 가용성, 파티션 허용성이라는 세 가지 속성 중 두 가지만 보장할 수 있다. 일관성 (Consistency)모든 노드가 동일한 시점에 동일한 데이터를 볼 수 있도록 보장어떤 데이터에 대한 쓰기가 완료되면, 그 이후에 해당 데이터에 접근하는 모든 클라이언트는 최신 정보를 보게 된다.가용성 (Availability)클라이언트의 요청(R/W)에 대해 항상 응답을 받을 수 있도록 보장시스템의 일부 노드에 문제가 생기더라도, 남은 노드들이 계속해서 요청에 응답할 수 있어야 하며, 클라이언트는 항상 응답을 받을 수 있어야 합니다. 단, 그 응답이 최신 상태인지(일관성)는 보장하지 않을 수 있다. 파티션 허용 (Part..

2025. 4. 22. 10:42
실무 경험/실무 개발 & 협업

[Block Chain] - Integer overflow 그리고 underflow

새로운 토큰을 상장하기 위해서는 스마트 컨트릭트(Smart Contract) 를 검토해야했다.해당 토큰이 어떤 로직으로 작동하며, 보안상 취약점이나 비정상적인 동작 가능성이 있는지를 스마트 컨트릭트를 통해 확인할 수 있다.그래서 새로운 토큰을 상장하기 위해서는 스마트 컨트릭트를 확인하고 특약이 필요한지 검토 후 계약을 해야한다. Smart Contract 검토 목적Contract 검토 내용Tokenomics 구조 파악 : 발행량, 공급량, 디플레이션 구조 등소유권(Ownership) 및 관리자 권한 : 특정 주소에 과도한 권한이 집중되어 있는지이벤트 및 트랜잭션 로그 확인: 정상적인 기록 구조가 있는지위험 로직 존재 여부 : 거래 중단, 밴 기능, 과도한 세금(Tax), 자동 유동성 이동 등네트워크별 차..

2025. 4. 21. 23:56
도서/불친절한 SQL 프로그래밍

불친절한 SQL 프로그래밍 - 4부 관리 구문 - 18장 DML 문

DML 문UPDATE / DELETE 실수 방지 습관쿼리를 실행하기 전 트렌젝션으로 묶는다.쿼리를 작성할 때 SELECT 절을 사용하여 삭제할 데이터를 확인한다.SELECT a.*, (SELECt sum(x.comm) FROM emp x WHERE x.deptno = b.deptno) FROM t1 a WHERE t1 a WHERE EXISTS (SELECT 1 FROM emp x WHERE x.deptno. a.deptno);이후 쿼리를 UPDATE / DELETE 쿼리로 변경한다.UPDATE t1 a SET a.sal = (SELECt sum(x.comm) FROM emp x WHERE x.deptno = b.deptno) WHERE EXISTS (SELECT 1 FROM emp x WHERE x.d..

2025. 2. 18. 02:40
Database/RDBMS

Postgres Auto vacuum 의 중요성

PostgreSQL 를 사용하다 보면 어느 순간 디스크가 기하급수적으로 늘어난다.DELETE / UPDATE 가 지속적으로 발생하면서 디스크는 크게 줄지 않고, 비용은 점점 올라간다.뿐만 아니라 쿼리 성능 저하, 인덱스 비대화의 문제로 데이터베이스의 성능이 점차 떨어진다.Auto vacuum이 안 돌면 생기는 성능 이슈1. 쿼리 성능 저하UPDATE, DELETE가 많아지면 dead tuples 이 쌓인다.PostgreSQL은 MVCC 방식이라, 삭제된 데이터도 실제로는 지워지지 않고 남아 있는데 이걸 지워주는 게 vacuum이다.vacuum 은 백그라운드에서 autovacuum 이 실행되며, 쿼리로 명령어를 작성할 수 도 있다.이것이 제대로 돌지 않으면 테이블이 점점 무거워진다. 이 과정으로 전체 테이..

2025. 2. 17. 19:53
도서/불친절한 SQL 프로그래밍

불친절한 SQL 프로그래밍 - 1부 기본 개념 - 3장 오라클 데이터베이스

3.1 개념 오라클 사에서 개발한 ORDBMS(Object–relational database) 제품으로 2016 년도 기준으로 41.6 % 의 점유율을 가지고 있다. 그 외 유사한 DBMS 으로는 RDBMS, OODBMS 가 있다. 구분관계형 데이타베이스(RDBMS)객체지향 데이타베이스(OODBMS)객체 관계형 데이타베이스(ORDBMS)데이터 모델문자, 숫자, 날짜의 단순한 정보 타입만 지원사용자 정의 타입 및 비정형 복합 정보 타입 지원사용자 정의 타입 및 비정형 복합 정보 타입 지원주된 질의 언어SQLOQLSQL 확장대규모 정보 처리 능력좋음보통좋음시스템 안정성좋음보통좋음장점성숙한 기술: 오랜 역사로 인해 많은 연구와 개발이 이루어졌으며, 신뢰성과 안정성이 높다.표준화: SQL이라는 표준화된 질의 ..

2025. 1. 13. 13:30