백엔드 공부 29

IntelliJ plugin의 버전을 변경해 보자 - method tester (4)

https://hello-backend.tistory.com/335 IntelliJ plugin을 만들고 배포해 보자 - method tester (3)IntelliJ plugin을 만들고 배포해 보자 - method tester (3)(이 내용은 플러그인의 테스트와 배포에 관한 내용이다. 구현 부분은 이전 글을 참고하면 좋다.)만들었으니 이거를 테스트하고 배포해 보면 된hello-backend.tistory.com지금까지 IntelliJ 에서 Plugin을 만들고 이를 배포해 보았다.그런데 이게 변경이 필요할 때가 있다. 이 때에 플러그인에 어떻게 반영하는지 빠르게 알아보자. - build.gradle.kts파일을 보면 version =  어쩌고 이런게 있다.거기서 버전을 하나 올려준다.version ..

데이터 중심 애플리케이션 설계 3장 정리

대부분 애플리케이션은 하나의 데이터 모델을 다른 데이터 모델 위에 계층을 둬서 만듬그래서 데이터 저장과 질의를 위한 다양한 범용 데이터 모델을 살펴본다.관계형 모델과 문서 모델Relation각 관계는 순서 없는 tuple 모임근원은 비즈니스 데이터 처리(트랜잭션이나 일괄처리)NoSQLNot Only SQLRDB에서 지원하지 않는 특수 질의RDB보다 동적이고 표현력이 풍부한 데이터 모델 요구 등객체 관계형 불일치보통은 개발이 객체지향 프로그래밍으로 이루어짐임피던스 불일치에의 문제관계형 객체 사이의 전환 계층을 필요로 하는것ORM은 이러한 보일러플레이트 양을 줄여주지만 차이를 완벽히 숨길수는 없음예시이력서 같은걸 생각해보면 JSON표현으로 적합JSON을 쓰면 모든 정보가 한곳에 있어서 한번 가져오면 싹다 ..

백엔드 공부 2024.11.19

데이터 중심 애플리케이션 설계 1장 정리

정리계산 중심 → 데이터 중심옛날처럼 계산을 막 알고리즘으로 쫘라라라락 하는거 아니고 이제는 애플리케이션은 데이터를 보여주는거에 집중하는 중이다.요즘은 하나의 도구로는 개발이 힘들다. 여러 task를 애플리케이션 단에서 묶어서 처리하는거신뢰성뭔가 잘못되더라도 지속적으로 올바르게 동작함결함 : 사양에서 벗어난 시스템의 한 구성 요소. 장애 : 사용자에게 필요한 서비스를 제공하지 못하고 서비스가 멈춤.하드웨어 결함카카오에서 불난거처럼 고장나는 경우가 많음이런거는 주로 이중화같은 방법으로 처리하는것 같음다중 시스템 구성하면 중단시간 없는 처리 가능소프트웨어 오류하드웨어는 하나 잘못되면 해결방법이 있는데 이거는 주로 상관관계가 얽혀있어서 좌르르르륵 망할수 있다.이거 문제가 뭔가 알수없게 특정 상황이 되면 나타난..

백엔드 공부 2024.11.15

IntelliJ plugin을 만들고 배포해 보자 - method tester (3)

IntelliJ plugin을 만들고 배포해 보자 - method tester (3)(이 내용은 플러그인의 테스트와 배포에 관한 내용이다. 구현 부분은 이전 글을 참고하면 좋다.)만들었으니 이거를 테스트하고 배포해 보면 된다.(사실 근데 테스트는 이미 많이 해야한다 나는 처음부터 된 것처럼 썼지만 엄청 테스트 많이함)Test 방법인텔리제이 오른쪽에 build.gradle을 보면요렇게 선택된 두개가 있다.먼저 runIde에 대해 설명하면저거 한번 수행해보면 intelliJ community 였나? 아무튼 인텔리제이 프로젝트 하나가 나오게 될 것이다.이게 테스트 환경이라고 생각하면 된다.저기서 원하는 프로젝트를 만들거나 열고, 이후에 테스트를 진행해 본다.좋은 점은 문제가 있거나 확인할 부분들이 플러그인 콘..

IntelliJ plugin을 만들어 보자 - method tester (2)

IntelliJ plugin을 만들고 배포해 보자 - method tester (2)(이 내용은 플러그인의 구성 요소와 내용에 관한 글이다. 어떤 로직을 어떻게 구현했는지와 대략적인 플러그인 플로우에 관한 것.)이전 글에서 어떤 것을 만들지에 대한 내용을 찾았다.그러면 이를 실제로 한번 만들어 볼 것이다.https://github.com/JetBrains/intellij-platform-plugin-template젯브레인에서는 플러그인을 만들기 위한 템플렛을 지원한다.플러그인을 만들기 위해서 여기서 fork해서 템플렛을 복제한다.그리고 하나씩 원하는 기능을 만들어 보면 된다.plugin.xml플러그인의 정보와 이후 기능을 부여할 action 동작에 관한 기본적인 정의를 하는 부분이라고 생각하면 된다. ..

IntelliJ plugin을 만들어 보자 - method tester (1)

IntelliJ plugin을 만들고 배포해 보자 - method tester (1)(이 내용은 어떤 플러그인을 만들까에 대한 내용이다. 만드는 방식은 이후에 적을 예정이다.)개발을 하면서 프로젝트의 크기가 커지고 기능을 잘 나누어 둔다면 하나의 메서드를 여기저기서 재활용하는 경우가 참 많아지게 된다.그리고 이를 처음에 만들 때에는 잘 만들어 두었고 더이상 변경의 여지가 없을 거라고 생각했는데, 어떠한 이유로 리팩터링을 진행할 수 있다.근데 그렇게 되면 이게 잘 고쳐졌는지, 다른 로직에 이상이 없는지를 바로 테스트하기가 참 애매하다.예를 들어, 다음과 같은 클래스가 있다고 가정해 보자.import org.springframework.stereotype.Component;@Componentpublic cl..

SLASH22의 왜 은행은 무한스크롤이 안되나요 영상을 보고..

카카오 브런치에서 백엔드를 담당하고 있는데, 거기서 연재 작품 전체 라는 슬롯에서 무한스크롤을 적용해 보았다. 그리고 우연한 계기로 토스뱅크에서 무한스크롤을 도입한 계기가 있어서 이를 살펴 보았는데, 좀 신기하고 재밌어 보였다. SLASH22의 왜 은행은 무한스크롤이 안되나요 를 보고 정리해 보았다. 상황 보통 은행앱이 조회기간 설정을 한다(1주일, 1개월, 6개월 등등...) 그리고 지정된 기간만큼이 쫘라락 조회되는(그만큼만) 방식이다. -> 즉 스크롤은 있는데 무한스크롤로 페이지 조회 후 넘어가는 이런게 없다. 상황 이해 이 이유를 알려면 은행 시스템에 대한 이해가 필요한데 은행 앱 - 채널계 - 계정계 은행 시스템은 이렇게 분리되어 있다. 계정계는 실제로 유저의 돈을 다루며 원본 데이터가 저장되는 ..

백엔드 공부 2024.04.20

채널(channel), 컨텍스트(Context)

채널(channel), 컨텍스트(Context) 이전에 고루틴을 나누는 방법을 보았는데, 동시성을 제어하는 방법들을 살펴봤다. 그리고 거기서 역할을 나누는 것이 있었고... 이 때에 쓰이는게 채널이다. 채널 : 고루틴끼리 메세지를 전달할 수 있는 메세지 큐 데이터를 FIFO로 넣고 -> 빼고 이렇게 하는거임 이거 다른말로 Thread-safe Queue이다. 채널의 크기 기본 크기 0 처음 만들면 크기가 0으로 생성된다. 그리고 make(chan int, 20) 이런 식으로 크기를 정해줄 수 있다(이러면 20개짜리 크기) 이거 그래서 채널 만들어놓고 데이터 넣은 다음에 안빼주면 무한히 대기하게 된다ㄷㄷ 이런것을 좀비 고루틴, 록은 고루틴 릭이라고 하는데(채널을 닫아주지 않아 무한 대기를 하는 고루틴) 이..

Springboot3.0에서 [Spring] Could not resolve all files for configuration ':classpath'. 해결하기!!

Springboot3.0에서 [Spring] Could not resolve all files for configuration ':classpath'. 해결하기!! Springboot3.0이 나왔다!! 근데 이거를 깃에서 클론받아서 쓰려하면 Could not resolve all files for configuration ':classpath'. 요런 에러가 나면서 안될때가 있다. 이게 안되는 이유는 아마 JDK버전 문제일 가능성이 크다. 왜냐면 Spring Boot 3.0 이상 버전에서는 JDK17이상만 지원하기 때문! 그니까 당신의 컴터는 다른 JDK인데 필요한게 JDK17이상이기 때문 해결법 IntelliJ의 preference에 들어가서 cmd + , Build, Ex..

spring boot의 self invocation, 이유와 해결법

spring boot의 self invocation, 이유와 해결법 회사에서 개발하는데 캐싱과 관련하여 self invocation 관련해서 이슈를 들었다. 그래서 한번 찾아보게 되었다. invocation 이거는 메서드 호출이라고 생각하면 된다. self-Injection?? 일단 문제상황에 대해 알아본다 다음과 같은 코드를 작성한다. (그리고 캐시 설정은 되어있다고 가정한다.) Ryoochan.java import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; @Entity public cl..