현재는 VCS로 SVN을 사용하고 있는데, 다음 프로젝트에서는 git을 사용할 수도 있다고 해서 평소 사뒀던 git 관련 책을 읽었다. 개인적으로는 git을 자주 사용하고 있기 때문에 이해하기는 그렇게 어렵지 않았고, 깃의 내부 구조가 어떻게 되고 어떻게 돌아가는지 알게 되어 좋았다. 내가 참고한 책은 토미의 Git with 소스트리로, 이곳을 통해 PDF파일로 구매했다. 책은 git의 각 기능에 대해 설명하고 이를 소스트리로 어떻게 동작시키는지로 구성되어 있는데, 나의 경우 소스트리를 사용하지 않고 거의 CLI(아니면 깃크라켄)로 사용하기 때문에 소스트리 사용법은 과감하게 패스했다. 본 포스팅은 위에 말한대로 어느 정도 깃을 사용한 경험을 바탕으로 내가 모르거나 정리가 필요한 부분만 집중적으로 책의 내..
테스트를 할 때 필수적인 사항은 대량의 데이터가 준비되어 있어야 한다는 것이다. 대량의 데이터를 DB에 넣는 방법 중에 파일로 만들어서 넣는 방법이 빠르다고 해서 해보았다. 우선 CSV 파일을 만든다. 이때, 데이터는 CSV 파일에 적힌 그대로 들어가는데 VARCHAR라고 ''를 붙이게 되면 ''까지 같이 들어가게 된다. 그러니 그냥 문자열을 적는다. CSV 파일을 만들어서 서버에 옮기고 아래와 같이 실행하면 된다. load data local infile '[파일경로]' into table [insert할 테이블명] fields terminated by '[데이터 구분자. CSV의 경우 ,]' lines terminated by '\n' IGNORE 1 LINES // 첫번째 줄에는 각 컬럼명이 표시되..
요즘 한창 핫한 Chat GPT. 코드를 짜달라고 하면 짜주기도 한다는 것은 들어서 알고 있었다. 그렇지만 개인적인 용도로 한 두개의 질문을 해보았을 뿐 업무에서 사용해볼 생각은 하지 못하고 있었다. 최근 우리 팀이 진행하는 프로젝트에서 성능때문에 문제가 되고 있는 쿼리를 맡게 되었다. 생각보다 간단하게 풀 수 있을 것 같은데, 복잡한 방법으로 짜서 쿼리를 보기만 해도 답이 없다 싶었다. 어쨌든 요번에 내가 맡게 된 이상 꼭 쿼리를 개선하고 싶어서 이래 저래 생각을 해보고 있었다. 그러다가 이걸 누군가에게 물어보고 싶다는 생각이 들었고, 번뜩 Chat GPT가 생각났다. 그래서 Chat GPT에 안 되는 영어지만(영어가 좀 더 결과가 정확하다고 해서) 내가 쿼리를 짜는 대상 테이블에 어떤 정보들이 있고,..
발단 나는 회사에서 개발 외에 운영업무도 맡고 있는데, 어느날 고객사로부터 우리 서버가 메모리를 과도하게 사용하고 있다는 알림이 왔다고 전해들었다. 그래서 문제의 원인이 우리가 개발한 소스인지 아니면 그외의 원인이 있는 것인지 확인하기 위해 서버에 접속했다. 전개 우선은 제일 먼저 한 일은 우리가 개발한 애플리케이션이 실제로 메모리를 과도하게 사용하고 있는지 보는 것이다. ps -ef --sort -rss 위 명령어를 사용하면 메모리를 많이 사용하는 순으로 볼 수 있다. 또, top으로도 확인할 수 있다. 이때 shift + M을 누르면 메모리 사용 내림차순으로 정렬해서 볼 수 있다. 주의해서 봐야할 것은 RES이다. 또, 해당 프로세스에 대한 정보를 확인하기 위해 아래의 명령어를 이용하여 정보를 확인했..
작년 7월에 @ControllerAdvice로 같은 예외일 때 뷰나 데이터를 내려주는 분기처리를 할 수 없을까 고민했었다. @ControllerAdvice로 같은 예외일 때 뷰나 데이터를 내려주는 분기처리를 할 수 없을까에 대한 고민 @ControllerAdvice로 같은 예외일 때 뷰나 데이터를 내려주는 분기처리를 할 수 없을까에 대한 고민 이 고민은 파라미터 유효성 체크를 편하게 하는 방법을 찾아보다가 시작되었다.(파라미터 유효성 체크를 편하게 해보자) 현재 우리 프로젝트는 JSP뷰를 사용하고 있다. 그리고 한 컨트롤러 클래 dakafakadev.tistory.com 내내 저 고민을 하고 있었지만 이것저것 할 게 많아서 손을 못 대고 있던 찰나, 마침 내게... 예외에 따른 뷰와 객체 반환 분기처리를..
JPA란 과거 자바 진행에서는 EJB 안에 엔티티 빈이라는 ORM 기술이 포함되어 있었으나, 너무 복잡하고 기술 성숙도도 떨어지고 J2EE 애플리케이션 서버에서만 동작하는 등의 어려움이 있었음. 이때 하이버네이트라는 오픈소스 ORM 프레임워크가 등장했는데 가볍고 실용적이고 기술 성숙도도 높았음. 결국 EJB 3.0에서 하이버네이트를 기반으로 새로운 자바 ORM 기술 표준이 만들어졌는데 이것이 JPA. JPA가 제공하는 CRUD API 저장 정확히 이야기하면 아래 코드는 엔티티 매니저를 사용해서 회원 엔티티를 영속성 컨텍스트에 저장한다. jpa.persist(member); 조회 String memberId = "helloId"; jpa.find(Member.class, memberId); 수정 JPA는 ..
2022년이 얼마 남지 않은 이 시점에 나는 개발자로 경력을 시작한지 1년 7개월이 되었다. 빛나는 3년차가 되기 위해 정신없이 공부를 해온 것 같은데 돌이켜보면 여러 가지 일을 한번에 하느라 집중을 제대로 못했다는 생각도 든다. 한해동안 내가 무엇을 했는지 정리해보려고 회고를 적는다. 개발 관련 강의 6개 완강 인프런 강의 수료증을 보니 올해에만 6개 강의를 완강했다. 자바와 스프링 강의인데, 스프링의 threadlocal, 트랜잭션과 전파, 자바8의 Stream, 동시성 처리 등을 공부했다. 바쁘다, 바쁘다 하는 와중에도 강의를 끝마쳤다는 건 정말 칭찬할만하다. 그런데 저 강의들의 내용들을 전부 다 내가 소화했다고 보기는 어려워서 가볍게 한 번 더 들어야겠다. 컴퓨터과학 전공 시작 올해부터 컴퓨터과학..