일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- circuitbreaker
- 쿼리셋합치기
- 주니어개발자
- 좋은코드란
- 일급함수
- 프로젝트설정
- 객체비교
- SpringBoot
- Not Null constraint failed
- 상속모델
- Spring
- django
- bulk_create
- Npoem
- IOC
- 토이프로젝트
- 2차원배열 정렬
- DI
- GraphQL
- 마이크로서비스패턴
- cannot import name
- n poem
- API문서화
- resilience4j
- 운영체제
- Java
- bean-validator
- 함수형프로그래밍
- circular dependency
- 컨트리뷰팅
- Today
- Total
목록분류 전체보기 (43)
코딩 하는 가든
프로세스와 스레드의 차이 프로세스와 스레드의 차이에 대해서 기록합니다. 먼저 프로세스와 스레드의 차이를 알기 전에 프로세스가 무엇이고 어떻게 구성되어 있는지 알아보겠습니다. 프로세스란 프로그램의 실행 단위입니다. 프로그램은 우리가 알고 있듯이 우리가 원하는 기능을 수행해주는 소프트 웨어 입 니다. 프로그램은 여러 소스코드 등으로 구성되어 있고 프로그램을 실행시키면 정해진 약속에 따라 자기의 역할을 수행하게 됩니다. 프로그램의 소스코드를 읽고 계산하여 결과를 내려면 메모리 상에 코드를 올려놓고 cpu로 계산을 해야 할 것입니다. 이렇게 실행을 위해 메모리 상에 올라와 있는 프로그램을 프로세스라고 합니다. [프로세스] 실행된 프로그램(프로세스)은 운영체제에 의해 메모리 공간을 할당받게 되는데, 하나의 프로세..
의존성 주입을 받는 여러 가지 방법 스프링 프레임워크에서는 IoC 컨테이너를 통해 의존성 주입을 받는다는 것을 이전 글에서 알아보았습니다. 앞선 글에서는 컨테이너에서 꺼낸 배터리 빈을 Toy의 생성자로 넣어 주었습니다. 이는 의존성 주입의 한 종류라고 볼 수 있겠습니다. 스프링 프레임워크에서 의존성을 주입 받는 방법은 크게 3가지 정도가 있습니다. 1. 생성자를 통한 주입 2. Setter를 통한 주입 3. 필드를 통한 주입 각각의 방법에 차근차근 알아보겠습니다. 우선 세 방법에 대해 보기 전에 @Autowired 어노테이션에 대해 알아야 합니다. 이전 글에서 우리는 Battery Bean을 찾아 Toy 객체에 직접 넘겨주는 작업을 했습니다. 프로젝트에는 무수히 많은 Bean과 그들의 의존 관계가 있을 ..
이전 글에서 DI의 개념과 Spring에서의 DI가 어떻게 이루어지는지 살펴보았습니다. 대략 아래와 같은 구조로 이루어 진 객체들이 어떻게 의존성 주입이 일어나는지 코드를 통해 알아보겠습니다. 먼저 객체가 IoC컨테이너에 의해 관리되려면 스프링 Bean 등록을 해야 합니다. Bean으로 등록하는 방법은 xml 설정과 자바 코드로 등록하는 방법이 있는데 여기서는 자바 코드로 등록을 해보겠습니다. 다음과 같은 Battery 클래스가 있습니다. 이 Battery 클래스를 스프링 빈으로 등록해보겠습니다. (간단한 예시여서 따로 게터, 세터로 관리하지 않았습니다.) 스프링 Bean으로 등록을 하기 위해선 먼저 @Configuration 어노테이션을 가진 클래스를 하나 생성합니다. 그리고 @Bean 어노테이션을 가..
DI란? DI는 Dependency injection(의존성 주입)의 줄임 말로 어떤 객체가 다른 객체의 의존성을 제공 하는 것입니다. 어떤 장난감이 있고, 그 장난감이 작동 하기 위해서는 건전지가 필요하다고 가정 해 보겠습니다. 위의 상황을 소스 코드로 표현 하면 다음과 같을것 입니다 Toy toy = new Toy(); Battery batteryA = new Battery(); // 배터리 A를 주입 toy.setBattery(batteryA); 위처럼 Toy가 정상 작동 하기 위해서는 Battery가 필요합니다. 다시 생각해 보면 Toy는 Battery에 의존적임을 알 수 있습니다. 이 상황을 그림으로 나타내보면 다음과 같습니다. 하지만 이같은 상황에는 문제점이 있는데, A 건전지를 B 건전지로 ..
지난 6개월을 돌아보며... 본인은 컴퓨터 공학부의 4학년 학부생으로 이번 1학기를 인턴으로 대체하여 개발을 해왔습니다. 소셜 커뮤니티를 운영하는 스타트업의 백엔드 개발 포지션으로 근무를 하였으며 Django, DRF를 기반으로 한 서비스 API 제작부터 클라우드 서비스를 활용한 운영, 컨테이너 배포까지 다양한 경험을 해보았습니다. 학부 과정만으로는 접하기 힘든 기술들을 많이 접해볼 수 있는 좋은 기회였기도 하고 6개월은 이 모든 걸 익히기엔 부족한 시간이라 아쉬움이 남기도 합니다. 지난 6개월을 돌이켜보며 느꼈던 점을 간략히 적어보고자 합니다. 성장은 가진 권한의 크기 만큼 (스타트업 인턴의 장점) 제가 있던 곳은 저를 포함해 3명의 백엔드 개발자가 있었습니다. 한때는 두 명이서 백엔드 개발을 할 때도..
스프링 프레임워크에 컨트리뷰트를 하다. 최근 어쩌다 보니 스프링 프로젝트에 두 번의 커밋을 찍게 되었다. 사실 큰 기능은 아니지만 스프링 같은 거대한 프로젝트 어딘가에 나의 흔적이 남는다는 것 자체로 굉장히 뿌듯한 경험이었다. 사실 학생 개발자로서 간단하고 작은 프로젝트를 해오다가 이런 대규모 프로젝트에 도장을 하나 찍었다고 생각하니 진짜 개발자로 진화(?)를 한듯한 기분이었다. 그리고 놀랐던 것은 두 번의 커밋으로 컨트리뷰터 (20.06.17 기준) 100위에 안착 했다는 것이다. 리액트 프로젝트의 경우 100위의 커밋이 20여 개인 것을 생각해 보았을 때 오픈소스 활동이 그렇게 활발한 것 같지는 않았다... 스프링 메인테이너의 땡스를 받다. 오픈소스 활동에 참여하는 방법은 매우 다양하다. 소스 코드의..
[오늘의 에러] Npoem(개인 프로젝트) 서버의 EC2에 hibernate auto ddl로 테이블을 생성하다 아래와 같은 에러가 발생하였다. GenerationTarget encountered exception accepting command : Error executing DDL "alter table ~~" via JDBC Statement Caused by: java.sql.SQLSyntaxErrorException: (conn=152) Specified key was too long; max key length is 767 bytes Error excuting DDL 에러가 나는 경우가 몇 가지 있을 것이다. (alter table drop foreign key, alter table add ..
[n poem]springboot + graphql 이전글 에서 프로젝트의 구조에 대해서 살펴보았다. 다시 복습을 해보자면 프로젝트는 크게 Domain / Service / Resolver 의 세 패키지 단위로 나뉘며 요청이 들어왔을 때 Resolver의 어느 메소드를 호출할 것인지는 미리 정해놓은 Schema에 의해서 결정이 된다. 이번에는 이 Schema를 어떻게 정의하는지에 대해 알아보겠다. 우선 스키마는 resources/graphql 디렉토리 안에 *.graphqls 라는 확장자로 파일을 만들어 작성해야 한다. 우리는 크게 오브젝트에 관한 스키마, 쿼리 요청에 대한 스키마, 뮤테이션 요청에 대한 스키마를 작성 할 것이다. 아래와 같은 Poem이라는 Entity가 있다고 가정 하자. (아래 엔터티..