
요즘 개발하고 있는 건은 이런저런 이유로 커밋을 못하고 개발을 하고 있었다. 나는 인텔리제이로 주로 작업을 하고, 가끔 이클립스를 사용할 때가 있는데, 오늘은 이클립스로 내가 작업하고 있는 프로젝트를 새로 열다가 내가 작업하고 있는 프로젝트를 그대로 이클립스로 여는 실수를 했고, 그러다가 내가 커밋하지 않은 작업을 날리게 되었다.(...) 이럴 때 사용할 수 있는 방법이 로컬 기록이다. 인텔리제이의 로컬 기록 기능에 대한 자세한 설명은 아래 링크 참고. https://blog.jetbrains.com/ko/2020/03/26/local-history-intellij-save-your-code-ko/ IntelliJ IDEA의 로컬 기록(local history)이 여러분의 삶 코드를 구할 수 있습니다 |..

HTTP 메시지는 크게 세 가지로 구성된다. 시작줄, 헤더, 본문. 만약 시작줄에서 오류가 발생한다면 서버는 어떻게 반응할까? 건너건너 듣기론 다른 팀에서 이런 경우를 테스트해야할 일이 생겼다고 해서 나도 테스트를 해보았다. 우선 시작줄에 오류를 만들어내기 위하여 아래의 글을 참고하여 Burp Suite를 사용했다. QA로 일하고 있는 지인에게 물어봤는데, 이런 프록시툴을 테스트할 때 꽤 사용한다고 한다. 주로 많이 사용되고 있는 툴은 Charles(찰스)와 Fiddler(피들러)이라고 한다. Postman으로도 간단한 프록시 기능을 할 수 있다고 한다. https://velog.io/@tkaqhcjstk/%ED%8C%A8%ED%82%B7%EB%B3%80%EC%A1%B0%ED%88%B4-Burp-suit..

이번에 내가 담당한 부분 중 다른 분이 개발하신 파일 업로드 기능의 수정 개발이 있다. 어떤 수정이냐하면 서버 디스크 용량이 부족할 경우 적절한 처리를 하는 수정이다. 수정개발은 다 했는데 테스트 환경을 만들기가 애매했다. 실제로 더미 파일을 인터넷에서 받아서 넣을수도 있지만 큰 용량의 파일을 FTP로 옮기는 데 시간이 걸릴 것 같았고, 좀 더 쉽게 테스트할 수 있는 방법이 없나 찾아보다가 fallocate 명령어를 이용했다. ChatGPT에 fallocate에 대해 물어봤는데 아래와 같이 대답했다. df -h 로 디스크 사용량을 확인한 후, 아래의 명령어로 파일을 만들어줬다.(fallocate는 실제 파일을 채우지 않고 파일 크기만 설정하기 때문에 20G의 파일도 금방 만들어졌다.) fallocate ..
KEEP 제각각이던 통계정책을 정리했다. 기존에 정리 안되어 있던 부분을 정리하니 내용을 더 파악하기 쉬웠다. CountDownLatch에 대해 공부했었는데, 그 내용을 프로젝트에 적용해볼 수 있었다.(https://dakafakadev.tistory.com/220) 배우기에만 그치지 않고 이렇게 실무에 적용하는 것이 좋다. 원래 문서작업은 각자 하고 취합을 따로 하는 방식이었는데, MS제품의 공유 기능을 사용해보자고 제안했고 결과적으로 문서작업에 드는 시간을 단축할 수 있었다.(https://dakafakadev.tistory.com/208) PROBLEM 통계 쿼리 때문에 어려움을 겪었다. 그래도 문제있는 쿼리가 있다면 어떻게 접근해야할지 경험해볼 수 있는 기회였다. 계속 비슷한 업무(CRUD)가 반..
얼마전 신입분이 현재 개발중인 소스에 결함이 있다며 부르셨다. 내용을 보니 JSESSIONID가 같아서 한쪽에서 세션이 풀리는 문제였는데, 그렇게 설명은 해드렸지만 좀 더 자세하게 알아볼 필요가 있어서 글로 남긴다. JSESSIONID는 서블릿 컨테이너에서 접속한 사용자를 식별하기 위한 식별자라고 보면 된다. 톰캣에서는 아래와 같이 JSESSIONID를 생성한다.(https://tomcat.apache.org/ 에서 Source Code Distributions에서 tar.gz이나 zip으로 소스를 받은 뒤 열어보면 확인할 수 있다.) package org.apache.catalina.util; public class StandardSessionIdGenerator extends SessionIdGene..

이번 프로젝트에서 나를 제일 애먹인 건 데이트피커였다... 챗GPT한테도 물어보고 인터넷에도 찾아봤지만 비슷한 기능에 대한 정보가 없어서 내가 구현한 내용을 정리해본다. 구현해야 하는 기능은 아래와 같았다. 라디오버튼 "일", "월"이 있고, "일"을 선택하면 데이트피커로 일단위 선택을 할 수 있고, "월"을 선택하면 데이트피커로 월단위 선택을 할 수 있다. 선택한 날짜에 따라 날짜 선택 범위가 제한된다.(예를 들어, 시작일을 4월을 선택하면 종료일은 4월 전을 선택할 수 없고, 시작일도 종료일을 넘겨서 선택할 수 없다.) 기본 데이트피커에서 선택 가능한 최대 과거일은 3개월전, 선택 가능한 최소 현재일은 전일이다. 일 월 위와 같은 라디오버튼을 만들었고, 각 라디오버튼에 클릭하면 데이트피커를 변경하는 ..
이번 프로젝트에서 여러 서버로 요청을 보내는 기능을 하나 맡게 되었는데, 구현하는 과정에서 겪은 어려움과 어떻게 해결했는지 기록해본다. 내가 맡은 기능은 스케줄을 돌면서 여러 서버로 요청을 보내고 결과를 받아서 처리하는 기능이었다. 기존코드는 한 스케줄이 시작되면 다른 스케줄은 접근할 수 없도록 AtomicBoolean으로 처리가 되어 있었고, 서버를 for문을 돌리며 요청하고 있었다. 그런데 한 가지 문제가 발생했다. 결과를 줘야하는 상대서버에서도 고도화를 진행하면서 응답속도가 현저히 느려졌다. 각 서버를 굳이 for문을 돌리며 요청할 필요가 없었기 때문에 속도를 위해 서버들에 비동기로 요청하는 것으로 변경했다. 서버들에 비동기로 요청하면서 발생하는 문제 중 하나는 비동기작업이 끝났는지 어떻게 알 수 ..
기획자가 따로 없는 우리팀은 산출물을 개발자 본인이 직접 작성해서 대리님들이 그 자료를 취합하여 산출물을 작성해왔다. 근데 이걸 몇 번 해오다보니 비효율적이라는 생각이 들었다. 취합을 한 사람이 맡아서 하게 되면 그사람은 그만큼 다른 업무를 해결할 시간을 뺏기게 된다. 그리고 한사람이 취합하다보니 놓치는 부분이 있을지도 몰라서 각 부분을 담당한 사람들이 다시 한 번 체크할 겸 확인을 해야하고, 수정할 부분이 있으면 수정을 요청해야 한다. 문서를 동시에 작성할 수 있는 방법이 없을까 찾아보다가 MS Office 제품의 공동 작업 기능을 알아보게 되었다. 마침 회사에서 Office365를 결제해줘서 직접 사용해보면서 결정할 수 있어서 좋았다. 내가 혼자 테스트로 사용해본 바로는 공동작업을 할 때 변경내용이 ..