본문 바로가기

전체 글7

2023 작년목표는 개발도 블로그도 열심히, 알고리즘까지 더해 주니어개발자로써 기반을 다지자였다. 개발은 열심히한거 같은데 생각보다 기술적인 역량은 늘어난거같지 않다는게 함정. 블로그는 구석에 박아두고, 알고리즘공부도 목표치엔 한참 못미쳤지만 최소목표는 간신히 턱걸이 react랑 typescript, webpack관련해서도 봐야하는데 할 게 많구만 오랜만에 장문의 글을 쓰고 있으니 여러생각이 스며든다. 일단 내 블로그에 글을 작성하고 있으니 내집같은 안락함이 느껴진다. 전에는 블로그도 넷상에 공개되는 공간이라 조심스러웠다면, 이제는 이런 구식컨텐츠를 볼 사람이 얼마나 있을까라는 안심과 간혹 보여지는정도는 나쁘지 않은거 같기도하고 ... 관심이 필요한걸지도 작년말에는 정말 생각이 많았었지 세상을 너무 편협하게 보고.. 2024. 1. 4.
브라우저 캐시 관리 프로젝트를 마치고 테스트운영중인데 운영사이트에 특정기능이 작동하지 않는다는 문의가 왔다. 알아보니 어제 저녁에 수정한 기능인데 정상작동하는지 확인하고 올렸음에도 문제가 있다는 것이었다. 근데 문제는 30여명의 이용자가 있는데 대부분 안된다고 하니 급히 문제를 찾기 시작했다. 당시 의심정황은 다음과 같았다. 코드가 저장되지 않은 상태로 원격저장소에 올라갔다 배포과정에서 실수가 있었다 브라우저 캐시가 남아서 이전코드가 작동했다 이용자들의 환경이 특수 환경이다 하나씩 짚어나가기 시작했는데 로컬에서 정상작동하고 팀원들의 컴퓨터에서도 정상작동하는 것으로 보아 1번은 패스,. 동작하는 코드로 war파일을 재배포하여 운영에서 확인하여 정상작동하는 것을 확인. 2번도 패스. 3번은 고객사에 강력새로고침 방법을 알려드렸.. 2023. 6. 22.
setInterval로 타이머 만들기 setInterval 1초당 타이머의 1초가 증가하게 만들었는데 타이머가 오작동한다는 문의가 들어왔다. 내 컴퓨터에선 항상 잘 작동하는데 신기할 노릇이다. 결론부터 말하자면 setInterval 1000ms는 1000ms가 아니라는 것. updateStopwatch메서드가 동작할 때마다 현재시간과 시작시간의 차이를 계산하여 해결했다. 시간을 200ms로 한 이유는 너무 짧으면 컴퓨터에 부하가 걸리게 되고 길면 빠트리는 초가 발생했기 때문이다. 100ms부터 50ms씩 늘려 시간을 빠트리지 않는 시간이 200ms였다. 평소에 getTime()을 이용해 시간을 구했었는데 valueOf()도 똑같이 동작하는걸 확인했다. // stopwatch 시작 function startStopwatch() { stopwa.. 2023. 6. 13.
log4j2 레거시 코드가 log4j로 되어있었기에 log4j2로 마이그레이션 작업을 진행하였다. 기존에는 jdbc관련 로그들이 수없이 올라왔기에 상황에 따라 주석 혹은 로그레벨의 설정에 따라 필요한 정보만 콘솔출력되고 파일에 저장되게 하였다. private static final Logger logger = LoggerFactory.getLogger(LoginController.class); // controller 진입 시 info level 로그 logger.info("login_chk() RUN! - param: {}", param); // 비밀번호 같은 민감한 정보는 마스킹처리 logger.info("login() RUN! - param: {USER_ID={}, SECR_NUMB={}}", param.get.. 2023. 5. 4.