본문 바로가기

전체 글

(115)
2023년 회고록 오랜만에 글을 써보게 된다. 저번 회사는 육체적으로 정신적으로 너무 힘든 곳이였다. 9시에 출근후, 9시에 퇴근하는 일이 기본이며 기존 업무시간에는 개발보다는 운영 업무 또는 에러 관련한 DB 보정처리에 급급하였다. 새벽에 에러 알람때문에 깨는 일이 종종이었으며, 주말마저 에러처리에 시간을 다 쏟아부었다. VAN과 해외결제에 대해서는 정말 많이 배우게 되었고 내가 원하던 결제 시스템의 큰 그림인 카드사, VAN, PG 모두 경험을 하게되었으며, 승인 매입, 백오피스까지 회사에서 필요로하는 기술들은 모두 사용해 보았으며, 금융권의 기술 부채를 이기기위해 aws cloud 사용까지 큰 틀로써는 너무 만족스러운 결과였다. 평소처럼 개발건을 마치고, 새벽 2시쯤 집에 도착하여, 집에서 혼자 공부를 하고 있을때,..
4년차 회고록 너무 늦게 회고록을 쓴게 아닌가.. 하지만 내 성장을 기록하기 위해 작성을 해보았다. 2번째 직장 퇴사히기까지 한일 새해가 지나자 마이데이터, 신규 결제시스템 한꺼번에 오픈을 하여, 정신없이 시간이 흘렀다. 이제 SI 에서 SM 으로 운영에 집중할때가 되었었다. 이커머스쪽 결제 시스템 말고도 다른 곳에서도 우리 결제시스템을 원하는 곳이 있어서 가맹점에게 어떻게 하면 더 쉽게 연동을 할 수 있게 해줄까 고민이 많았다. 그래서 가맹점 연동을 위해 위와 같은 페이지를 만들어 연동 배포를 하니 너무 만족하는 표정들이 보여 그동안 고생헀던 것들이 사라져갔다. 두번째로는 해외 결제 시스템(Apple pay)을 카드사와 연동 시키는 일을 하였다. 지금은 흔히 알고 있는 애플페이이지만 처음에는 크림페이로 사용했다. 정..
무료 APM 어떤 것이 있을까? APM이 무엇일까? 애플리케이션 성능 관리(APM, Application Performance Management)는 WAS 모니터링, 데이터베이스 모니터링에 대한 상세 분석부터 최종 사용자가 체감하는 End to End 관점의 서비스 품질 측정까지 최적의 애플리케이션을 제공하는 것을 말한다. 일단, 무료를 알기 전에 유료 APM을 알아보자. 1위는 국내 시장 점유률 65%을 차지하는 제니퍼소프트의 제니퍼이다. 현재 요청되는 요청수와 JVM의 Heap 메모리까지 체크가 가능하고 개인적으로 프로젝트를 할떄 제니퍼 덕분에 Socket이 리소스를 계속 가지고 있어 서버가 요청온것을 다 처리 못하는 일이 있었는데 그것도 제니퍼로 체크가 가능하여 해결했던적이 있다. 2위는 티맥스 소프트이다. SysMaster 라..
[이펙티브 자바] 습관적으로 사용하는 Object 메소드 equals의 일반 규약을 지켜 재정의하라 String와 같은 class가 같은지 확인하는 메소드입니다. class에서 equals와 hashcode를 오버라이딩해본 사진이다. hashcode도 오버라이딩하는 이유는 논리적으로 같은 객체라면 같은 hashcode를 반환하기 위해서이다. Speaker의 해시 코드를 재정의 해주지 않으면, 값이 두개가 들어가게 되어 Map의 값이 2개는 일이 벌어지게 된다. hashCode를 재정의할때, Objects.hasCode로 재정의할 수 있다. 하지만, 속도가 상대적으로 더 느리다. 해시코드를 지연 초기화(lazy initialization) 하는 방법 지연초기화를 통해 캐쉬처리하면 유용한데 스레드 안전성까지 고려해야한다. 실제 업무에서는 lombok을 사용하여 @..
[이펙티브 자바] 객체 생성과 파괴(2) 1. Boxing type 대신 Primitive Type을 권장한다. 왼쪽 사진이 Boxing Type으로 계산 했을 경우고 오른쪽이 primitive Type으로 사용하였을 경우이다. 실제 실행 속도를 계산해보면 10배정도의 빠른 실험 결과를 볼 수 있다. Boxing Type을 남용하지 않도록 주의하는 것 뿐만 아니라, 의도치 않은 Auto Boxing을 조심해야한다. 2. UtilClass에서 또한 primitive type을 권장한다. 숫자 타입인지 검증하는 유틸을 만든다고 생각한다면 반환값을 boolean 과 같이 프리미티브 타입을 권장한다. 단, primitive type이 항상 옳은 것은 아니다. price가 null인것과 0은 의미가 다르다. 0은 이벤트 중 0원으로 측정할 수 있는것이고..
제로베이스 백엔드 스쿨 6달 후기 ‘이 글은 데이원컴퍼니로부터 소정의 원고료를 지급받아 작성되었습니다. ’ 제로베이스 백엔드 스쿨 마지막 달은 팀프로젝트가 주요업무였다. 처음에는 오프라인으로 깃허브관련하여 제로베이스 백엔드 스쿨에 강의에 있었던 양세열 강사님께서 교육을 진행하시고, 마지막 10분 정도는 팀원을 정하는 시간이였다. 2팀은 완성이 되었는데 저를 포함한 사람은 자동으로 팀을 구성하여 진행하였다. 프론트엔드 개발자분들과 한팀이 되었고, 프로젝트 주제를 정해야 했다. 내가 생각하기에 주제는 모든 팀원들이 이해할 수 있고, 재미있는 프로젝트를 선정하게 되었다. 그 동안 제로베이스 하면서 기프트카드도 많이 받아 기프트콘 선물하는 프로젝트를 하면 어쩌나 생각을 하였다. 저는 카카오 오븐을 통해 노션으로 화면 명세서를 팀원분들에게 보여 ..
[이펙티브 자바] 객체의 생성과 파괴 1. Constructor와 static Factory method의 비교 생성자는 저희가 흔히 알고 있는 방식이 Movie에 있는 값들을 받아 생성하는 식으로 많이 사용한다. static Factory method 방식은 빈 생성자를 만든 후, return 을 해주는 방식을 말하고 있다. 그런데 이게 좋은건가? 라는 생각을 하게 된다. 약간 예제로 설명하게 되면다면, 밑에 같은 상황으로 사용할수 있을것같다. API 에서 받은 Reqeust Parameter 값을 원하는 값으로 변환시킬수 있다. 또한, 파라미터가 한개면 from으로 두개 이상이면 of로 표현한다. static Factory metho를 사용하면 장점들이 있다. 1. 이름을 가질수 있다. 2. Simple하고 명확하게 사용할 수 있다. 3..
[코딩 테스트] 백준 - 약수 구하기(2501) 약수 구하기 문제 어떤 자연수 p와 q가 있을 때, 만일 p를 q로 나누었을 때 나머지가 0이면 q는 p의 약수이다. 6을 예로 들면 6 ÷ 1 = 6 … 0 6 ÷ 2 = 3 … 0 6 ÷ 3 = 2 … 0 6 ÷ 4 = 1 … 2 6 ÷ 5 = 1 … 1 6 ÷ 6 = 1 … 0 그래서 6의 약수는 1, 2, 3, 6, 총 네 개이다. 두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오. 저는 자연수 p 만큼 반복문을 도는데, 나머지가 0이되는 경우가 있으면 q를 -1을 하고, 0이되면 return 을 한다. import java.io.BufferedReader; import java.io.IOException; import java.io.Inp..