전체 글

하고 싶은 것들을 하며 성공하기
개요 개발을 하다보면 누군가가 이미 만들어둔 프로그램 또는 코드를 사용하게 된다. 이때 어떤 것은 프레임워크라 하고, 어떤 것은 라이브러리라고 하는데 결국 둘 다 다른 사람이 만든 것이라 차이가 헷갈린다. Spring을 공부하다 이 차이를 깨닫게 되었다. 개념 상 헷갈리는 이 둘, 구분할 수 있을까? 프레임워크 이는 사용했을 때 제어권을 자신이 작성한 코드가 아닌 다른 무엇인가 가졌을 때이다. 예를 들어 Spring의 IoC 컨테이너(Inversion of Controll Container)는 사용하는 객체를 Bean으로써 싱글톤으로 관리해주며, 필요할 때 하나씩 가져올 수 있게 한다. IoC(제어의 역전)이란 프로그램에서 프로그램의 비즈니스를 담당하는 주 객체들이 객체의 생성이나 보조적인 흐름을 관리하..
· Spring
개요 테스트 코드를 작성하며 @Test와 @SpringBootTest와 같은 어노테이션을 보게 되었는데 이 둘의 차이는 무엇인지 찾아봤다. 단위 테스트와 통합 테스트 - 단위 테스트: 스프링이나 컨테이너, JPA 등의 도움 없이 순수하게 자바 코드로 테스트하는 것 - 통합 테스트: 스프링과 컨테이너, JPA 등의 도움을 받아 실제 비즈니스 상에서의 환경과 최대한 비슷하게 만들어 테스트하는 것 -> 사진에서 보이듯이 클래스에 @SpringBootTest를 붙인 것과 붙이지 않은 것의 차이이다. 둘의 차이는? 둘의 가장 큰 차이는 결국 실행 시간이다. 단위 테스트는 메모리 상에서 다른 컨테이너의 도움 없이 자바만 실행하므로 굉장히 빠르게 테스트를 할 수 있는 반면, 통합 테스트는 그렇지 않기 때문에 많은 시..
개요 기존에는 github에서 Repository를 먼저 생성하고, repository의 ssh주소를 복사하여 git clone 방식으로 처음부터 git이 존재하는 디렉토리에서 파일 버전 관리를 해왔다. 그러나 오랜만에 기존 작업물이 존재하고, github에서 새롭게 repository를 만들어 git을 연결하려니 기억이 안 나 찾아봤고, 이를 정리해보려 한다! (2021년 9월에 42서울 피신을 하며 했던 작업인데 너무 오래 전이라 기억이 안 나....) 주의 기존에 .git 디렉토리가 존재했다면 이미 버전관리가 되고 있을 가능성이 있습니다! 방법 먼저 github repository를 생성한다. 터미널에서 git과 연결 시킬 directory로 이동한다. git init 명령어를 입력한다. githu..
· SQL
개요 spring과 JPA를 사용하여 만든 서버 애플리케이션을 빌드하고 실행 했을 때 mysql client 프로그램을 통해 어떻게 데이터베이스에 저장된 데이터를 볼 수 있을까? 방법 데이터베이스 만들기 mysql> create database strcat; Query OK, 1 row affected (0.04 sec) 존재하는 모든 데이터베이스 보기 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | strcat | | sys | +--------------------+ 5 rows in set (0.05..
· Spring
개요 서비스를 만들던 중 실 사용자를 만들게 될 제품을 만드는 것이니 Transaction을 도입하면 좋지 않겠나하는 피드백을 42내 캐비넷 서비스의 동료에게 받게 되었다. 트랜잭션에는 읽기 전용 옵션이 있는데 이를 적용하면 최적화가 된다는 내용을 접했고, CUD와 Read를 나누기 위해 주석으로 서비스 클래스를 나누던 도중, 'findBoard()'와 같이 특정 키를 이용해 Repository를 직접 접근하여 도메인을 가져오는 메서드는 트랜잭션을 걸어야 할까라는 고민을 하게 되었다. // BoardService.java public Board findBoard(String encryptedBoardId) { Long boardId = secureDataUtils.decrypt(encryptedBoard..
Pipe 란 Pipe 는 @Injectable() decorator 가 달린 class 이다. 이는 PipeTransform interface 로 구현되어 있다. Pipe 의 두 가지 종류 transformation: 입력 데이터를 원하는 데이터 타입으로 변환한다. validation: 입력 데이터가 유효한지 평가한다.(ex. null, undefined ...)예제 내가 사용해볼 예제는 다음과 같다.@Get('/:id') getBoardById(@Param('id', new ParseIntPipe({ errorHttpStatusCode: HttpStatus.FORBIDDEN })) id: string): Board { return this.boardsService.getBo..
공부하는 날 어떤 공부를 했는지 개발일지를 적을 계획이다. 그런데 현재 이미 플랫폼을 여러 개 사용하고 있어서 어떤 것을 선택할지 고민된다. 42 Seoul 에서 공부하는 내용과 개인적인 공부 내용, 강연과 책 내용 정리는 모두 Notion 으로 정리 중이고, Github 에도 꾸준히 내가 작성하는 코드를 업로드 중이고, 42 스터디 그룹인 '구해줘 카뎃'을 진행하며 오늘 공부한 내용을 slack 에 공지하기 때문에 블로그에 글을 업로드해야만 하는 이유를 찾아야 한다. 또 지금까지는 공부하는 분야 등을 카테고리로 나눠 정리했는데 날짜 별로 분류하면 좋을까에 대한 물음도 생각해 볼 계획이다. 공부하는 분야나 과제 별로 분류해서 정리하면 장점이 많다. 그 중에서 가장 좋은 점은 쉽게 원하는 정보를 찾아갈 수..
· 일상
42서울의 본과정은 11월 15일에 5기 오리엔테이션을 시작으로 16일부터 본격적으로 시작된다. 시작되기 전 과정에서의 과제 등을 확인할 수 있는데 8일에 진행한 Kick-off 미팅에서 보컬님들의 조언으로는 그전까지 과제하지 말고, 커뮤니티나 실컷 보면서 여러 정보를 습득하라고 말씀해주셨다. 아직 원격 접속에 대한 안내도 없어서 어찌 보면 과제에 치중하지 말고, 앞으로 42에서 경험하게 될 문화나 가져야 할 자세에 대해 고민하는 시간을 가지라는 말을 내포할지도 모른다.(아닐지도 ㅎㅎ) 그래서 커뮤니티나 구글링을 통해 정리된 생각을 이 글에 조금씩 적어보려 한다. 처음 말해보고 싶은 내용은 고등학교나 대학교까지의 학생으로서의 자세와 사회에 나온 직장인으로서의 자세이다. 직장인이라고 함은 단순히 돈을 버는..
jayoon
자윤 블로그