IntelliJ IntelliJ idea 커맨드 명령으로 실행하기이 포스팅에서는 MacOS M1, M2 칩셋 버전 IntelliJ 에서 Command Line Launcher 설정이 잘 되지 않는 현상을 해결하는 이야기를 다룹니다. 문제 발생 idea 명령으로 IntelliJ 실행이 안되네..? 개발자라면 (특…
redis내 redis가 해킹당했다고? 심지어 local인데?사건의 발단 어느날.. redis와 관련된 기능을 개발해야 할 일이 있어 redis를 local에서 docker 컨테이너로 실행 후 테스트를 해보고 있었습니다. 기능은 아주 간단해서 어떤 특정한 상황 때 hash 자료구조로 redis에 key val…
springbootEmbedded Tomcat과 Tomcat의 차이이번 포스팅에서는 내장톰캣과 설치형으로 사용하는 외장톰캣이 무엇이 다른지, 그리고 내장톰캣으로는 해결 할 수 없는것이 있는지 간단하게 알아보았습니다. 포스팅 내용을 작성하기 전 이 내용을 조사해본 것은 전 직장 동료분과 오랜만에 만나 개발 담소를 나…
kotlinJPA 양방향 Entity 무한재귀 문제해결JPA ORM으로 개발하다보면 꽤나 많은 양방향 참조가 필요한 모델들이 있습니다. 그런데 문제는 이런 양방향관계를 가진 객체를 직렬화 하려고 할 때 무한참조가 되어 StackOverFlow를 발생시키는데요. 그렇다고 해서 ORM이 가진 장점을 포기하…
kotlinKotlin JPA Entity 모델링하기최근 스프링부트를 개발 할 때 Kotlin으로 많이 개발하고 있는데요, 특히나 이 포스팅에서는, JPA Entity 모델링 을 할 때 주의해야 할 점들을 살펴보겠습니다. Entity 모델링 먼저 코틀린에서 Entity 클래스를 작성할 때는 로 선언…
javascriptES20202020년이 되면서 javascript 표준 규격인 ECMA script 에도 몇가지 추가된 사항들이 생겼습니다! 어떤 것들이 있는지 한번 살펴보겠습니다. 널 병합 연산자 (Nullish coalescing operator) 널 병합 연산자란 왼쪽…
javaSpring 중복코드 줄여보기Spring 다형성, 상속성을 이용한 중복코드 줄여보기 스프링부트를 활용하면 상당 부분 설정이 편리해진 부분이 있었지만, 흔한 MVC 패턴에서(물론 실제 개발은 MVVM 패턴으로 개발중) 엔드포인트 혹은 엔티티가 늘어 날 때마다 반복되는 코드들이 생…
springbootJPA N+1현상 삽질JPA N+1현상 querydsl fetchJoin 삽질한 경험 공유 Kotlin SpringBoot(2.2.4) querydsl(4.2.1) 문제 JPA로 쿼리를 하다보면, N + 1 문제를 마주하게 될 수도 있는데요. 사실 저의 문제는 정확하게 …
reactReact debugging 하기안녕하세요 이번에는 React로 프론트엔드 개발할 때 Visual Studio Code + Debugger for Chrome 를 활용한 디버깅 하는 방법에 대해 알아보겠습니다. 이미 디버거를 잘 활용하고 계셨던 분이라면 굳이 이 포스팅을 보실 필요…
kotlin코틀린 필드와 속성안녕하세요 이번에 소개할 내용은 코틀린에서의 필드(field)와 속성(property) 입니다. 얼핏 보면 비슷해보이지만 전혀 다른 개념인데요. 저도 너무 헷갈리고 대체 어떻게 이해해야 좋을까 고민하다가 이 글을 작성하게 되었습니다. 그럼 대체 …
gitGit merge 스마트하게 하기주요 옵션 : 일단 병합을 한다음에 병합에 실패한 것으로 가정후 커밋은 하지 않습니다. (커밋되지 않은 코드를 스테이지에만 올려놓고 코드를 마지막으로 점검하거나, 리뷰 할 때 쓸만함 ) : fast-forward 되어질 병합 형태라도 반드시 머지 커…
java제네릭 1편 와일드카드 (Generic Wildcard)Java 와일드카드 제네릭 제네릭은 Unbound wildcard라고 불리며, 어떤 타입이 될지 모른다 라는 의미입니다. wildcard가 사용된 제네릭은 타입으로 들어온 타입에 대하여 관심이 없다 라는 의미도 되며 기능적인 메소드 외에 원소 값과…
imageExif metadata로 이미지 회전시키기Exif? 디지털 카메라 등에서 사용되는 이미지 파일 메타데이터 포맷으로, 카메라가 촬영한 사진, 녹음파일에 시간 등의 각종 정보를 담기 위해 개발되었다. 즉, JPEG, TIFF 6.0과 RIFF, WAV 포맷에 이미지나 소리에 대한 정보를 추가로…
javaSOLID 5원칙에피소드 예전에 전 직장 동료 분들과 함께 하는 점심 식사 자리에서 데이터 모델링에 대한 심화 적인(?) 주제로 대화를 나누다가 객체지향에 대한 주제로 번졌고, 그 중 동료분이 “SOLID 아시죠?” 라는 질문에 저는 “가수 SOLID요?” 라고 답…
javaJPA Locking낙관적 락 충돌이 발생하지 않을 거라고 낙관적으로 가정하는 방법 데이터베이스 레벨이 아닌 JPA레벨에서 버전 관리 기능을 통해 구현되어있음 테이블에 version 관리를 할 컬럼을 지정해놓고 읽었을 때의 버전과, 변경 할 때의 버전이 같지 않으면 예…
aopAOP 관점지향프로그래밍AOP 직역하면 관점지향프로그래밍 인데, 한국말로 들으면 전혀 와닿지 않습니다. 좀 더 이해가 가기 쉬운 의미로 해석해보자면, 애플리케이션 전체에 걸쳐 사용되는 기능을 재사용하도록 지원하는 것입니다. 실무에서는 흔히 공통적인 흐름의 코드를 적용시켜 …
jvmJVM GC종류와 튜닝GC 종류 먼저 GC에는 크게 Minor GC, Major GC, Full GC가 있는데, Minor GC와 Full GC에서는 GC를 하기위해 JVM으로부터 구동되는 애플리케이션이 모두 stop 되는 stop-the-world가 상태가 됩니다. S…
reflectionJava ReflectionJava Reflection 객체를 통해서 객체 클래스 정보를 분석해내는 프로그래밍법을 의미한다. 또한 위키백과에서 설명하기로는 컴퓨터 과학에서의 Reflection(반영)은 런타임 시점에 사용되는 자신의 구조와 행위를 관리하고 수정할 수 있는 프로…
직렬화직렬화(Serialization)!?직렬화 객체의 상태를 저장하기 위해서 객체를 byte stream 으로 변환하는 것을 의미한다. 그 반대는 deserialization(역직렬화) 라고 한다. 흠.. 직렬화를 알고 싶었는데 stream?이 또 뭐란 말인가? 컴퓨터의 stream에 대…