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
실무 경험/실무 개발 & 협업

[블록체인] - Integer overflow 와 underflow

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

2025. 4. 21. 23:56
실무 경험/개발 도구 & API 테스트

IntelliJ IDEA - 한번 알아두면 유용한 IDEA 캐시 삭제하기

단일 모듈의 프로젝트를 멀티모듈로 전환하면서 IDEA 캐싱으로 인해 단일 모듈의 Gradle 파일을 캐싱하고 있었다. 이로 인해 .git 디렉토리를 제회하고 모두 삭제를 해보았고, 프로젝트 삭제하고 다시 클론했는데 해결되지 않았다. 2개의 간편하고 무식하면서 간단한 방법이었지만 해결이 안되어 IDEA 캐싱을 진행해 보았다. 무척이나 간단하다.

2024. 3. 15. 01:12
실무 경험/개발 도구 & API 테스트

IntelliJ IDEA - 한번 알아두면 유용한 자동으로 파일 끝에 개행 추가하기 (no newline at end of file) + feat. Prettier

no newline at end of file 란 무엇일까, Github, GitLab을 사용하다 보면 한번쯤 보고 지나쳤을 키워드이다. Git GUI 클라이언트 툴인 Fork 에서도 no newline at end of file 이라는 문장을 쉽지 않게 볼 수 있었다. [위키백과]POSIX(포직스, /ˈpɒzɪks/)는 이식 가능 운영 체제 인터페이스(移植可能運營體制 interface, portable operating system interface)[1]의 약자로, 서로 다른 UNIX OS의 공통 API를 정리하여 이식성이 높은 유닉스 응용 프로그램을 개발하기 위한 목적으로 IEEE가 책정한 애플리케이션 인터페이스 규격이다. 이러한 인터페이스 규격이 나온 배경을 알아야 하는데, 찾아본 사례로는..

2024. 3. 14. 20:43
실무 경험/실무 개발 & 협업

2022 - 휴가 쓰자마자 우마카세에서 삼겹살로 강등당한 사연: 크리스마스 전전날의 악몽 (TLS 이슈)

평화로운 날 2022년 12월 23일. 크리스마스 이브 전날이자, 코로나 백신 접종으로 얻은 소중한 1일 휴가였다. 오전에는 멘토님, 그리고 그의 제자분과 건대 롯데백화점에서 커피챗을 하며 시간을 보냈다.하지만 이날의 메인이벤트는 저녁이었다. 크리스마스 기념으로 청담동 우마카세를 예약해 뒀기 때문이다. 인천에서 차를 끌고 올라오는 친구를 기다리며 카페에 앉아있던 오후, 너무나 평화롭게 시간을 때우고 있었다. 오후 6시. 친구가 거의 도착했다는 연락을 받았고, 나는 청담동으로 이동할 채비를 했다. 딱 3분 뒤, 내 휴대전화가 진동하기 전까지는 모든 게 완벽했다.18:03, 재앙의 시작장애 알림 문자와 동시에 회사에서 전화가 걸려 왔다. "야 서비스 안된다"카페 테이블에 급하게 노트북을 펼쳤다. VPN을 통..

2024. 2. 29. 01:06
실무 경험/실무 개발 & 협업

2023 - 모니터링을 구축해서 프로젝트 운영을 편하게 하자

장애의 시작 - Slony-I 리플리케이션 붕괴출근 후 오전 10시, 사이트에 접속이 안된다는 메세지를 받았다. 상황 분석PostgreSQL Slony-I 로 Master-Slave 리플리케이션 구성되어 있다. Slave 서버 한 대가 삭제되었다. (직원중에는 이 서버에 대해 아는 사람이 없었다)Master 서버의 디스크가 가득 찼다. 문제의 Slave 서버 한대가 사라진 후 문제가 시작되었다. 장애 원인Slony-I 는 Slave 로 복제 데이터를 전송할 때 트랜잭션 로그(WAL)를 사용한다. Slave에 전달이 지연되거나 다운되면 아래와 같이 문제가 발생할 수 있다. Master 에서는 WAL 로그를 계속 생성함 Slave가 복구될 때까지 로그를 보관WAL 로그가 디스크를 가득 채움 (500GB → ..

2024. 2. 29. 01:04