수십 년 동안 데이터베이스 시스템은 사용자가 선택할 수 있는 여러 격리 수준을 제공했습니다. 고급형의 "serializability"부터 저가형의 "read committed" 또는 "read uncommitted"에 이르기까지 다양합니다. 이러한 서로 다른 격리수준은 어플리케이션에게 수많은 동시성 버그를 노출시킬 수 있습니다. 그럼에도 불구하고 많은 데이터베이스 사용자들은 현재 사용중인 데이터베이스의 기본 격리수준을 고수하고 어떤 격리수준이 자신의 어플리케이션 환경에 가장 적합한지 고려하지 않습니다. 이러한 관행은 매우 위험합니다. Oracle, IBM DB2, Microsoft SQL Server, SAP HANA, MySQL, PostgreSQL 과 같은 유명한 데이터베이스들은 “serializab..
로컬에서 서버를 올리며 외부 엔드포인트에서 어떤 데이터들을 어떤 형태로 타입마다 주는지 대략 확인하기 위해 많은 양의 콘솔라인이 필요했었다. 물론 한번씩 호출하고 드래그하고 할 수 있었지만 개발자인데 굳이..? 전에는 어떤 환경변수 조절해서 처리했던 것 같은데 인텔리제이 내부에 해당 셋팅이 가능하도록하는 인터페이스가 존재하여 이에 대해 공유하고자 한다. 1. Shift 2번 -> settings 입력 2. console 검색 -> Editor/General/Console -> Override console cycle buffer size 체크 -> 값 입력.
안녕하세요. 오늘은 무작위 스캔공격이라는 부분에 대해서 공유하고자 합니다. 일단 제가 무작위 스캔공격이라는 것을 확인할수 있던 부분은 바로 서버 포트 8080을 스프링부트 어플리케이션 포트로 열어놨고 로그파일을 하루마다 생성했기 때문에 파악할 수 있었는데요. 실제 저의 api 주소 호출이 아닌 웬 이상한 요청들이 오는게 아니겠나요... 대표적으로 /public/index.php 라던가.. /TP/index.php 라던가.. 절대 저와 함께 개발하는 클라이언트 개발자들이 호출할 주소가 아니었는데 말이죠.. 이외에 모든 무작위 스캔공격이 의심되는 요청주소는 아래의 링크에서 확인해보세요!! chinsun9.github.io/2020/11/10/%EB%AC%B4%EC%9E%91%EC%9C%84-%EC%8A%A4..
안녕하세요! 오늘은 스터디 운영방법에 대한 소개를 해보는 포스팅을 해보려고합니다. 오늘날 2020년 11월은 한창 코로나의 영향을 받고나서 언택트라는 개념이 많이 자리잡은 때입니다. 얼마전 사회적 거리두기가 2단계로 올라감에 따라 저와 스터디 멤버들은 스터디할 공간의 부재에 따른 재택스터디로 프로젝트 스터디를 진행하게 되었으나.. 마땅히 방법이 떠오르지 않아 어려워하고 있었는데요. 그때 화면공유만 좀 어느정도 할 수 있으면, 개발중에 코드리뷰나 디자인 혹은 클라이언트와 API 개발자 사이의 의사소통이 가능할 것 같고, 오디오도 공유할 수 있으면 좋겠다! 싶을때 생각나는 플랫폼이 있었습니다. 바로 Discord!! discord.com/ Discord | Your Place to Talk and Hang ..
안녕하세요. 오늘은 간단하게 Maven에서 했던 Rest Docs 문서를 뽑는 케이스를 그대로 Gradle로 개발했을 때 발생했던 문제..? 난항..? 점에 대해서 공유해보고자 합니다. 일단 발생한 난항점은 다음과 같았어요. > Task :asciidoctor NO-SOURCE 느닷없이 이런 메시지가 뜨면서 gradle에서 문서를 뽑아내지 못하는..? 즉, gradle에 등록된 asciidoctor 명령어로 문서를 뽑으면 되는 단계였는데.. 소스를 찾지 못하는 문제였습니다. 왜 소스를 못찾는지에 대해서 검색을 해보니.. Maven 과 Gradle이 엄연히 다른 빌드 툴이라는게 생각이 나가지고 좀 차이점에 대해서 알아보았습니다.(Spring Rest Docs로 문서를 뽑을때의 차이점을 이야기 한겁니다.) ..
JUnit5의 @DisplayName 어노테이션을 이용해서 여러 테스트의 이름을 붙여주어 표시하려고 하였으나 다음과 같이 달랑 Test Results 라는 문구만 나오고 표시되지 않았다... 해결방법 Settings -> Build, Execution, Deployment -> Build Tools -> Gradle 로 가서 위의 빨간색 네모에 표시된 내용을 아래처러 바꿔주면 된다. 결과 확인!! 잘되네요!! ㅎㅎ
안녕하세요. 오늘은 하이버네이트와 Spring Data JPA에 대하여 차이점을 알아보는 글을 발견하여 괜찮은 내용일 것 같아서 직접 번역/의역 과정을 거쳐서 포스팅하였습니다. 번역과정에서 구글 번역기를 활용하였으며 좀더 국어와 의미적인 부분을 맞추는 작업이 있었으므로 독자마다 원문과 내용차이가 있을 수 있으므로 이상하다 싶은 부분이 있으시다면 원문을 참조하여 주시고 댓글로 알려주시면 감사하겠습니다. 확인해보고 저도 배우고 싶습니다. 원문 : dzone.com/articles/what-is-the-difference-between-hibernate-and-sprin-1 What Is the Difference Between Hibernate and Spring Data JPA? - DZone Java I..
안녕하세요. 오늘은 최초 프로젝트 구조를 잡을 때, 에러처리가 굉장히 중요한데요. 자바에서 에러처리는 try/catch 문을 활용하거나 throws Exception과 같은 문법을 활용하는데요. 스프링에서 관점지향 프로그래밍인 AOP와 @RestControllerAdvice, @ExceptionHandler를 이용하여 전체적인 에러처리하는 방법에 대해서 공유하고자 합니다. 구조는 아래와 같이 만들어보았습니다. 프로젝트 구조 Request 요청이 지나가는 순서대로 소스를 살펴보겠습니다. 1. RestControllerAspect.java @Aspect @Component public class RestControllerAspect { /** * Controller 클래스 프록시 * @param procee..