얼마전 신입분이 현재 개발중인 소스에 결함이 있다며 부르셨다. 내용을 보니 JSESSIONID가 같아서 한쪽에서 세션이 풀리는 문제였는데, 그렇게 설명은 해드렸지만 좀 더 자세하게 알아볼 필요가 있어서 글로 남긴다. JSESSIONID는 서블릿 컨테이너에서 접속한 사용자를 식별하기 위한 식별자라고 보면 된다. 톰캣에서는 아래와 같이 JSESSIONID를 생성한다.(https://tomcat.apache.org/ 에서 Source Code Distributions에서 tar.gz이나 zip으로 소스를 받은 뒤 열어보면 확인할 수 있다.) package org.apache.catalina.util; public class StandardSessionIdGenerator extends SessionIdGene..
최근에 다른 분이 OpenSSL을 업데이트하다가 문제가 생겨 도움을 요청하셨는데 그 문제와 관련하여 포스팅해본다. Ubuntu 20.04에는 기본적으로 openssl 1.1.1f가 설치되어 있다고 한다. 그런데 최신버전의 openssl(1.1.1t)을 설치해야하는 상황이었고, 업데이트를 하기 위해 작성한 스크립트로 설치를 하면 1.1.1t가 적용되지 않는다는 것이었다. 설치를 완료하고 버전을 확인하는 명령어를 실행하면 다음과 같은 메시지가 표시됐다. /usr/bin/openssl: symbol lookup error: /usr/bin/openssl: undefined symbol: EVP_mdc2, version OPENSSL_1_1_0 그런데 스크립트없이 그냥 아래와 같이 설치를 하면 1.1.1t가 제..
이번 프로젝트에서 나를 제일 애먹인 건 데이트피커였다... 챗GPT한테도 물어보고 인터넷에도 찾아봤지만 비슷한 기능에 대한 정보가 없어서 내가 구현한 내용을 정리해본다. 구현해야 하는 기능은 아래와 같았다. 라디오버튼 "일", "월"이 있고, "일"을 선택하면 데이트피커로 일단위 선택을 할 수 있고, "월"을 선택하면 데이트피커로 월단위 선택을 할 수 있다. 선택한 날짜에 따라 날짜 선택 범위가 제한된다.(예를 들어, 시작일을 4월을 선택하면 종료일은 4월 전을 선택할 수 없고, 시작일도 종료일을 넘겨서 선택할 수 없다.) 기본 데이트피커에서 선택 가능한 최대 과거일은 3개월전, 선택 가능한 최소 현재일은 전일이다. 일 월 위와 같은 라디오버튼을 만들었고, 각 라디오버튼에 클릭하면 데이트피커를 변경하는 ..
이번 프로젝트에서 여러 서버로 요청을 보내는 기능을 하나 맡게 되었는데, 구현하는 과정에서 겪은 어려움과 어떻게 해결했는지 기록해본다. 내가 맡은 기능은 스케줄을 돌면서 여러 서버로 요청을 보내고 결과를 받아서 처리하는 기능이었다. 기존코드는 한 스케줄이 시작되면 다른 스케줄은 접근할 수 없도록 AtomicBoolean으로 처리가 되어 있었고, 서버를 for문을 돌리며 요청하고 있었다. 그런데 한 가지 문제가 발생했다. 결과를 줘야하는 상대서버에서도 고도화를 진행하면서 응답속도가 현저히 느려졌다. 각 서버를 굳이 for문을 돌리며 요청할 필요가 없었기 때문에 속도를 위해 서버들에 비동기로 요청하는 것으로 변경했다. 서버들에 비동기로 요청하면서 발생하는 문제 중 하나는 비동기작업이 끝났는지 어떻게 알 수 ..
우여곡절 끝에 개발자로 일한 지 만 2년이 되었다. 지난 2년을 돌아보니 좀 더 성장하지 못했다는 아쉬움이 남는다. 분명 더 성장할만한 기회들이 있었을텐데. 지난 만 1년차 회고를 오랜만에 읽었는데 이후 1년동안 참 다양한 일들이 있었구나, 싶다. 1년차 회고를 쓰고 난 바로 이후쯤부터 내가 썩 내켜하지 않았던 업무를 맡게 되었고, 이후로 1년간 너무 힘들었다. 썩 내키진 않았지만 내게 주어진 일이니 잘하고 싶었는데, 아귀가 잘 맞지 않는 느낌이었다. 더구나 개발과도 거리가 먼 업무이니 마음이 제대로 잡히지도 않았다. 그래도 최근에 이런 저런 이유로 다른 분에게 인수인계를 거의 마쳤다. 그외에 개발자로서 성장했었던 포인트들을 꼽자면, 1. 중첩된 @Transactional을 실험해보며 전파 속성에 대해 ..
매번 파이콘을 다니면서 내가 업무에서 사용하는 자바, 스프링 컨퍼런스는 없나 하고 기다렸는데, 마침 한국스프링사용자모임에서 스프링캠프 2023을 연다고 해서 다녀왔다. 오픈한지 43초만인가에 티켓이 동났다고 해서 엄청 인기있는 컨퍼런스구나 싶었다. 이하의 내용에는 세션 관련 내용이 포함되어 있지만 모든 내용을 담고 있지 않고, 정확하지 않은 내용을 포함하고 있을 수 있습니다. 추후 유튜브로 영상이 올라온다고 하니 자세한 내용은 해당 영상을 참고해주세요. 11시부터 12시까지가 접수였는데, 11시 40분쯤 도착했는데 다들 인프런, 현대 부스 등에 가있어서 그런지 자리가 꽤 남아 있었고, 나름 좋은 자리에 앉게 되었다. 파이콘은 동시에 여러 세션이 진행되서 듣고 싶은 세션이 겹치면 그 중 하나를 택일해야 하..
기획자가 따로 없는 우리팀은 산출물을 개발자 본인이 직접 작성해서 대리님들이 그 자료를 취합하여 산출물을 작성해왔다. 근데 이걸 몇 번 해오다보니 비효율적이라는 생각이 들었다. 취합을 한 사람이 맡아서 하게 되면 그사람은 그만큼 다른 업무를 해결할 시간을 뺏기게 된다. 그리고 한사람이 취합하다보니 놓치는 부분이 있을지도 몰라서 각 부분을 담당한 사람들이 다시 한 번 체크할 겸 확인을 해야하고, 수정할 부분이 있으면 수정을 요청해야 한다. 문서를 동시에 작성할 수 있는 방법이 없을까 찾아보다가 MS Office 제품의 공동 작업 기능을 알아보게 되었다. 마침 회사에서 Office365를 결제해줘서 직접 사용해보면서 결정할 수 있어서 좋았다. 내가 혼자 테스트로 사용해본 바로는 공동작업을 할 때 변경내용이 ..