본문 바로가기

전체 글

(11)
[서평] 출판사: 길벗, 책: 코드 작성 가이드, 저자: 이시가와 무네토시 https://www.gilbut.co.kr/book/view?bookcode=BN004068 코드 작성 가이드현직 LINE 개발자가 알려주는 읽기 쉽고 코드 리뷰하기 좋은www.gilbut.co.kr  이 글은 글또 커뮤니티와 길벗 출판사의 후원을 받아 서평을 작성했음을 알립니다.  이시가와 무네토시의 코드 작성 가이드는 개발자들이 가독성 높은 코드를 작성할 수 있도록 실무 중심의 조언을 제공하는 책입니다. LINE에서 현직 개발자로 활동 중인 저자가 자신의 경험을 바탕으로 집필했으며, 특히 복잡하지 않으면서도 읽기 쉽고 유지보수하기 좋은 코드를 작성하는 데 초점을 맞추고 있습니다. 이 책은 단순히 코드 작성법만을 다루는 것이 아니라, 개발 과정 전반에서 가독성이 중요한 이유와 이를 향상시키기 위한 방..
[회사에 기여하기 - 1] 빌더 패턴을 사용한 코드 개선 과정 Intro입사한 지 한 달이 되지 않아 아직까지는 버그 티켓을 처리하고 있습니다. 그렇다 보니 코드 몇 줄을 추가하는 작업이 대부분입니다.그럼에도 개선할 부분이 없는지 고민하고 유지 보수성이나 단위 테스트를 추가하려고 노력하고 있습니다.빌더 패턴을 사용하여 코드를 개선한 경험을 공유하겠습니다. 빌더 패턴 개선전 예시 코드from datetime import datetimefrom docx import Documentfrom docx.enum.text import WD_PARAGRAPH_ALIGNMENTfrom docx.shared import Ptdef create_meeting_minute(meeting_details, participants): document = Document() ..
2024년 10월까지 회고 첫 번째 이직6개월의 공백기를 지나 올해 1월 원하던 B2C 서비스 회사로 이직에 성공했다.그러나 6월에 희망퇴직을 하게 되었다. 짧은 기간이었지만 많은 것을 보고 배웠다. 6개월이었지만 그 회사에 보낸 시간부터 회고해 보겠다. 적응첫 이직이라 상당히 쫄았고 적응이 늦었다. 지금 돌이켜보면 첫 1-on-1 시간에 수습 기간 결과에 따라 함께 갈지 아닐지 결정된다는 말에 나의 모든 것이 평가받겠구나 혼자 지레 겁을 먹었다. 그래서 혼자 해보고 증명해보려고 질문을 늦게 하거나 질문하는 것이 나의 부족함을 드러내는 것일까 봐 조심스러웠다. 앞으로는 질문하는 것이 나의 부족함을 드러내는 것이라는 생각을 깨부셔야겠다. 개발내가 입사한 시기가 레거시 청산 마무리 단계여서 동료들이 각자 메인 담당 도메인이 있었고, ..
공식, 이론, 실제를 모두 확인하며 병렬 프로그래밍 성능 개선하기! 1. Intro 2. 원인 분석 2. 해결 방법 📌 INTRO 멀티스레딩으로 집계 기능을 개발한 뒤 운영 서버에서 성능 테스트를 수행했습니다. 로컬에서 테스트와 달리 성능 저하가 발생했습니다. 성능 개선의 공식, 이론, 실제를 모두 측정 및 확인하고 개선한 경험을 공유하겠습니다. 📌 원인 분석 멀티스레드를 사용한 이유는 I/O와 CPU 작업을 분리하고 병렬 처리가 가능한 부분에는 CPU를 최대한 활용하기 위해서입니다. 개발 완료 후 성능테스트를 하며 CPU 사용량을 모니터링했습니다. 80% ~ 90% 사용량을 보여 CPU가 알차게 사용되었다 판단했으나 처리시간이 단일스레드와 별 차이가 없었습니다. CPU 사용량 중에 CPU 모드 별로 얼마나 차지하는지 확인이 필요했습니다. System 모드라면 OS 커널..
동기화된 리스트를 빠르게 조회하기 - synchronizedList와 CopyOnWriteArrayList 성능 비교해봅시다 1. Intro 2. create 3. add 4. get 5. 결론 📌 INTRO 최근 멀티스레딩 프로그래밍을 하며 동시성 제어 기능이 구현된 클래스는 단지 동시성 제어 목적으로 아무거나 가져다 쓰면 안 된다는 것을 배웠습니다. synchronizedList와 CopyOnWriteArrayList를 비교해 보고 간단한 테스트를 해보겠습니다. 📌 create synchronizedList 인자로 넘겨받은 동기화되지 않은 리스트를 암묵적 락이 적용된 동기화된 클래스로 wrapping 해서 리턴해줍니다. 리스트를 새로 생성하지 않기 때문에 생성 비용이 크지 않습니다. CopyOnWriteArrayList 반면 CopyOnWriteArrayList는 리스트의 원소를 새로운 배열에 복사합니다. 리스트의 크기가 ..