Toss Daily Log 5

euc-kr to utf-8 내 업무 중 하나는 한글(hwp)문서와 관련 된 작업을 하는 것이다. 한글파일 안에 들어갈 데이터를 사용자로부터 입력받아서 파싱하여 미리 만들어 둔 한글 템플릿에 적용 하는게 나의 주 업무이다. 한글 문서에 입력될 텍스트를 파싱할 때 euc-kr로 인코딩을 한다. euc-kr (Extended Unix Code for Korean)는 한글을 표현하기 위해서 사용한(했던) 인코딩 중 하나이고 한국의 레거시 프로젝트에서 많이 사용 되었다고 한다. euc-kr의 특징은 variable size이다. 한글은 2 byte, 그 외 알파벳, 숫자와 같은 ascii 문자는 1 byte를 차지한다....

December 23, 2024 · 1 min · Jun

Toss Daily Log 4

프로젝트 구조 변화 어제 살펴본 프로젝트 구조를 유지보수, 개발자 생산성, 확장성 측면에서 개선하기 위해 어떤 구조를 적용 시킬 수 있을까? 현재는 ifr 모듈에서 작업을 하고 나서, jenkins에서 파이프라인을 돌린 후, 메인 애플리케이션의 파이프라인을 돌린다. 문제는 ifr을 수정하는 인원이 우리 팀 내에도 많고, 타업무에서도 각자 ifr을 돌린 후 메인 애플리케이션을 또 돌리기 때문에, 빌드 파이프라인이 불필요하게 돌아가는 경우가 많다. 이는 Build Coupling이 높다고 표현할 수 있다. 각 Ifr 모듈의 변화를 적용하기 위해서는 모듈을 우선 빌드 한 후, 메인 애플리케이션을 (이 순서대로) 빌드 해야한다....

December 20, 2024 · 1 min · Jun

Toss Daily Log 3

이 프로젝트는 여러 git 리포지토리로 구성되어 있으며, 각 리포지토리는 비즈니스 업무 단위로 나뉘어 있다. 내가 속한 팀은 4가지 업무를 담당하고 있고, 이 중 나는 두가지 업무를 맡았고 각 업무당 또 다시 두개의 git 리포지토리로 나뉜다. 프로젝트의 구조 여기서 다소 희한한 프로젝트의 구조를 엿볼 수 있다. 각 업무마다 Ifr과 If module이 있다. Ifr Module은 외부 업무에서 사용 될 로직이 구현 되어 있고, If Module은 우리 팀의 다른 업무에서 사용이 될 로직이 들어 있다....

December 19, 2024 · 1 min · Jun

Toss Daily Log 2

프로젝트의 버그들 아래는 내가 마주한 결함들의 원인들 중 일부이다. 기술적으로 어려운 것은 없지만, 언어의 대한 이해가 부족하다면 예외 상황이 나타나야지만 존재를 알 수 있는 버그들이 많다. 물론 테스트 코드가 예외케이스 별로 잘 짜여져 있으면 미리 잡을 수 있겠지만, 이 프로젝트는 테스트 코드가 없기도 하고, 업무 로직이 상당히 방대하고 복잡하기 때문에 실제로 익셉션이 터지기 전까지는 모를 수도 있다. 레거시 javascript 코드를 큰 고민 없이 java로 변환하면서 생기는 버그. substring(int beginIndex, int endIndex) 함수: 자바스크립트의 함수에서는 endIndex가 beginIndex보다 작아도 exception 없이 넘어가지는 반면, 자바에서는 IndexOutOfBoundsException이 던져진다....

December 18, 2024 · 1 min · Jun

Toss Daily Log 1

생각의 시작: 변화와 과정 내가 생각했을때 이번 과정에서 가장 중요한 것은 결과보다 과정이다. 완벽한 기능을 추가하는 것 보다 주어진 환경에서 어떤 가치를 만들어낼 수 있는지를 보여주는 것이 핵심이라고 생각 한다. 이를 위해 앞으로 한 달간 나의 고민과 과정을 매일 기록하려 한다. 도전 과제: 프로젝트의 현실 현재 참여 중인 ~공공 프로젝트~는 레거시 시스템을 개선하는 프로젝트다. SI 프로젝트라 그런가 다음과 같은 형상을 띈다: 그대로 복제된 레거시 로직 새로운 시스템은 기존 시스템의 로직을 거의 그대로 옮겨왔다....

December 17, 2024 · 2 min · Jun