일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 좋은코드란
- 프로젝트설정
- SpringBoot
- 주니어개발자
- bulk_create
- Java
- resilience4j
- 컨트리뷰팅
- 마이크로서비스패턴
- 상속모델
- 함수형프로그래밍
- API문서화
- Not Null constraint failed
- 운영체제
- django
- n poem
- bean-validator
- IOC
- 쿼리셋합치기
- 토이프로젝트
- 일급함수
- DI
- GraphQL
- circular dependency
- Npoem
- circuitbreaker
- 객체비교
- 2차원배열 정렬
- Spring
- cannot import name
- Today
- Total
목록전체 글 (43)
코딩 하는 가든
[n poem]springboot + graphql 시작하기 [주의] 이 글은 스프링 부트 에서 Graphql의 요청을 처리하는 인터페이스 계층인 Datafetcher와 Resolver 중 Resolver를 사용합니다. 스프링 부트 + 그래프 큐엘 프로젝트를 하기에 앞서 보통의 스프링 프로젝트의 구조를 살펴보자. 아래의 프로젝트는 N poem 프로젝트를 진행하기에 앞서 혼자 진행했던 스프링 게시판 만들기의 프로젝트 구조이다. 패키지는 크게 Domain / Service / Controller 계층으로 나뉜다. - Controller : API의 엔드포인트를 정의하는 인터페이스 계층 - Service : 실제 비지니스 로직이 실행되는 계층 - Domain : 도메인 모델을 정의하는 계층 graphql이 r..
N poem 프로젝트 설정 -JDK JDK는 1.8을 사용한다 - Gradle 버전 설정 ./radlew wrapper --gradle-version 4.10.2 그레이들 5.X 버전이 최신인 현재 4.10.2로 다운 그레이드를 하는 이유는 그레이들 5.X 버전과 프로젝트에서 사용 할 자바 라이브러리인 Lombok과의 호환이 잘 이루어지지 않기 때문이다. - dependency 추가 dependencies { implementation('org.springframework.boot:spring-boot-starter-web') // spring boot implementation('org.springframework.boot:spring-boot-starter-data-jpa') //jpa impleme..
Protected Banch란? GITHUB 에서 어떤 브랜치를 어떤 행위에 대해서 보호하기 위한 조치이다. 예를 들어 우리의 소중한 마스터 브랜치는 언제나 잘 작동하는 올바른 코드가 올라가야 할 것이다. 이 원칙을 지키기 위해 마스터 브랜치에는 항상 올바른 커밋 혹은 머지가 되어야 할 것이다. 그래서 깃 허브는 코드를 적용 하기 전 안전 장치로 protected branch라는 것을 마련 해 두었다. 우리는 이러한 브랜치를 보호하기 위해서 브랜치들에 대해 protection rule들을 설정 해 줄 수 있다. GITHUB Repository - > Settings - > Branches 에 가면 다음과 같은 화면을 볼 수 있을 것이다. Branch protection rule 의 오른쪽에 있는 Add ..
N Poem 프로젝트 학교 친구들과 간단한 토이 프로젝트를 진행 하기로 하였다. 친구들끼리 가끔 장난으로 삼행시, 사행시 등 N 행시 짓기를 많이 했었는데 이 때의 관건은 누가누가 빠르고 재미있는 N행시를 만드느냐 였다. 이러한 평소의 놀이 방법에 착안하여 더 재미있는 N행시를 빠르게 만드는 사람이 우위를 선점하는 게임적 요소가 있는 웹사이트를 만들고자 하는 프로젝트가 시작 되었다. 방식은 간단하다. 유저에게 랜덤으로 단어가 주어지고 유저는 해당 단어에 대한 N행시를 만들면 된다. 재미있는 점은 단어가 주어지고 N행시를 완성 할 때 까지 시간을 측정 할텐데, 완성된 N행시는 다음과 같이 나올 것 같다. 휴 : 휴~ 이영자 매니저 하기 게 : 게(?) 힘들다 소 : 소문이 맞았어 이 삼행시는 70초 만에 ..
좋은 코드란 무엇인가 멋쟁이 사자처럼을 하던 시절 우연히 만난 대장 이두희 님이 이런 말을 한 적이 있다. '좋은 코드란 무엇일까요? 좋은 코드란 실제로 유저들이 사용하는 코드라고 생각해요. 학교 과제로 아무리 잘 짠 알고리즘과 자료구조 코드도 사용하는 유저들이 없다면 쓸모없지 않을까요?' 사실 맞는 말이다. 아무리 잘 짠 코드여도 세상에서 쓰이지 않는 코드라면 무슨 가치가 있겠는가? 하지만 그 당시 느끼기로는 두희님은 이 말을 어떠한 '서비스' 에 초점을 두고 한 말이었다고 생각한다. 하지만 꼭 서비스화 되어 실제 유저들에게 사용되지 않더라도 가치 있는 코드는 충분히 많다. 어떤 코드는 지식을 전수하기 위해 교육을 목적으로 작성되었을 것이다. 또 어떤 코드는 인류 기술의 진보를 위한 연구의 목적으로 작..
마이크로 서비스 패턴 운이 좋게도 길벗에서 진행하는 도서 리뷰 이벤트에 당첨되어 무료로 좋은 책을 읽을 수 있는 기회가 생기게 되었다. 본인은 현재 학부 4학년 학생으로 1학기를 학점 인정 인턴으로 대체하여 스타트업에서 백엔드 개발 근무를 하고 있다. 사실 이 책을 선정하면서도 '내 수준에서 이런 책을 선택해도 될까?'라는 질문을 스스로에게 수도 없이 던졌다. 백엔드 근무를 하고 있으면서도 사실 서버 아키텍처 쪽에 대한 관심은 있지만 지식이 매우 부족하고 경험도 없기에 이벤트에 당첨되고 책을 읽기 전까지 두렵기도 했다. 하지만 다행히도 읽는데 큰 어려움은 없었으며 배울 점이 굉장히 많은 책이라고 느꼈다. 그래서 나 같은 '주니어'라는 타이틀을 달기도 민망한 찐새내기 개발자의 입장에서 어떠했는지를 리뷰해 ..
Bulk_create란? 백엔드 개발을 하다 보면 한 번의 요청으로 테이블에 대량의 레코드를 삽입하게 될 경우가 있다. 예를들어 서비스를 이용하는 모든 유저들에게 노티스를 보내고 싶을 때, 다음과 같은 코드로 노티스 레코드를 생성 할 수 있을 것이다. users = User.objects.all() for user in users: Notification(user=user, contents="반갑습니다.").save() 하지만 위와 같은 방법으로 for문을 돌며 다수의 오브젝트를 만들어 낼 경우 save() 메소드 한 번당 DB와의 connection이 한번 발생 하며 insert구문을 수행 하게 된다. 즉, 반복 횟수 == connection수가 되어서 서비스에 큰 부하가 생겨 장애를 야기할 수도 있다..
Swagger 설정해보기 Swagger란? Swagger는 개발자가 API서버를 개발 할 때, API의 스펙에 대한 명세를 편리하게 할 수 있는 API 자동 문서화 도구 (프레임워크) 이다. Spring Boot에 적용 할 수 있는 유명한 API 자동 문서화 도구로는 크게 Swagger와 Rest Docs가 있는듯 하다. 원래 Django로 Rest API서버를 개발 하면서 자동 문서화 도구로 Swagger를 사용해 왔었기 때문에 이번 혼자 하는 프로젝트 에서도 익숙한 Swagger를 사용 하기로 결정했다. 그에 따라 Spring Boot에 Swagger 설정을 해보고 그 방법을 기록해 보기로 하였다. (현재 gradle을 사용 하고 있기 때문에 gradle 기준으로 작성) 1. Swagger 의존성 설..