프로젝트가 끝나고 리펙토링을 진행하였다. 그리고 프로젝트 고도화를 위해 어떤것을 할 수 있을지 고민해봤다.일단 내가 맡은 도메인으로 진행을 하는것이 좋을거 같다는 생각이 들었다. 여러가지가 있었지만 그중에서 내가 선택한것은 제고 쪽이다. 현재 동시성을 제어하기 위해 비관적락을 사용해놓은 상태다.비관적락에 대해 복습해보자면 비관적락은 락을 앞단에서 거는거라 생각하면 좋다. 그러니까 DB에서 조회되기전에 락을 걸어서 동시성을 제어하는 방법이라고 생각하면 된다. 그렇다면 왜 비관적락인가를 생각해보면 내가 객체라고 말한적이 있었는데 잘못 말했구 DB다.그러니까 DB는 좀 자기주장이 좀 강한 친구라고 생각하면 이해하기 쉽다. 그리고 비관적락은 외부에서 받은거라 생각하면 된다. 즉, 자기주장이 강하니까 외부에서 처..
클린코드.. 이거만큼 학습하긴 어려운건 없을거 같다. 쉬우면서 어렵고 알거 같으면서도 막상하려고 하면 쉽지 않는 뭐 그런느낌이다.내가 생각할때, 고도화보다 더 중요하다고 생각한다. 왜냐하면 코드를 깨끗이 작성하게 되면 추후 확장성도 증가 할 수 있기 때문이다.코드가 과도하게 비대해지면 결국엔 나중에 수정하려고 하면 어떤걸 수정을 해야 하는지 잘 모르는 경우도 많다고 생각한다.그렇다고 해서 이게 습관화가 되어 있지 않기 때문에 나중에 해야지 하면 결국엔 또 안하게 될거 같다.클린코드 책을 보면 다음과 같은 제안을 하였다. 1. 생성자를 중복 정의할 때는 정적 팩토리 메서드를 사용한다.2. 함수는 작게 만들어라!3. 함수는 한 가지만 해라!4.함수 인수 - 플래그 인수는 추하다.5.반복하지 마라! a.k.a..
외부에서 SQL문법을 넣어 공격하는 기법으로개발자가 예상치 못한 결과를 야기시킬 수 있다.예를들어, 로그인을 시도해야 하는경우 id에 admin을 입력하고 password는 모르는 상황에서로그인이 되게 하려면 --를 붙이면 Sql공격이 가능해진다.보통 SQL문을 작성할때 select * from table where user_id = 'admin'인데 여기다가--은 SQL에서 주석을 뜻하기 때문에 뒤 문장들은 모두 주석처리가 되어진다.그렇게 되면 아이디만 입력해도 로그인이 가능해진다.여기에는 -- 말고도 'or 1=1' 이런 쿼리를 넣거나 다양한 방법으로 공격이 가능하다.그렇다면 이것을 막는 방법은 무엇이 있을까?1. SQL에 해당하는 모든 특수 문자를 막는 방법2.preparestatement로 전달 ..
어제 대략적인 도커학습을 마치고오늘은 Dockerfile에 대해 학습을 하려고한다.내가 잘못알고 있던 부분이 인텔리제이에서 Dockerfile을 run하게 되면 실행이 된다고 생각했다.하지만 아니었다. 이 행위는 단순히 이미지를 만드는 행위이기 때문에 실제로는 실행이 안된다고 했다.그러면 의문이 있다. 도커파일로 도커파일을 어떻게 만들 수 있을까? 나는 단순히 실행 버튼을 눌러서 해결했었는데이거는 아닌가?아닌거 같다.이미지 빌드 방법은 다음과 같다고 한다.표준적인 도커파일 빌드 명령어는 다음과 같습니다:docker build -f Dockerfile -t {도커이름} .여기서:-f Dockerfile: 빌드에 사용할 Dockerfile 지정 (기본값이라 생략 가능)-t my-app: 이미지에 이름 태그 ..
설계에 대한 학습은 어느정도 되있는 상태인데..개발에 대한 마지막이라고 할수 있는 CI/CD에 대한 지식이 너무 전무하다는 생각이 들었다.이 글은 도커에 대한 전반적인 내용은 다루지 않을 예정이다.내가 이해하고 학습한 내용을 작성할예정이다.이렇게 하는이유는 이론적으로 학습한다고 해서 이걸 기억하기에는 쉽지 않을거고도커에 대한 모든 내용을 내가 사용하지 않을 가능성도 높다.그렇기 때문에 도커가 왜 필요하고 어떻게 사용하는등 언제든지 사용할 수 있는 범위해서 공부할 예정이다.그래야 퍼즐처럼 끼워맞추기가 가능할거구 확장을 한다면 조금더 편할거라 생각한다.그러면 내가 왜 CI/CD를 학습하면서 왜 도커를 먼저 학습을 할려고 하는지 이해를 해야한다.그래야 도커와 CI/CD의 연관성을 생각하면서 공부할 수 있기 때..