분류 전체보기

· 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에서 경험하게 될 문화나 가져야 할 자세에 대해 고민하는 시간을 가지라는 말을 내포할지도 모른다.(아닐지도 ㅎㅎ) 그래서 커뮤니티나 구글링을 통해 정리된 생각을 이 글에 조금씩 적어보려 한다. 처음 말해보고 싶은 내용은 고등학교나 대학교까지의 학생으로서의 자세와 사회에 나온 직장인으로서의 자세이다. 직장인이라고 함은 단순히 돈을 버는..
· C언어
1. 함수의 원형 malloc과 free 함수의 원형은 다음과 같다. void *malloc(unsigned int size); void free(void *p); malloc 함수의 반환형은 (void *) 형이라서 용도에 맞는 포인터 형으로 형 변환 후 사용해야 한다. 컴파일러 마다 자동으로 되는 것도 있지만 호환성을 위해선 꼭 해야 하는 과정이다. 2. 반환값이 널 포인터인지 반드시 확인하기 메모리 할당 함수는 원하는 크기의 공간을 할당하지 못하면 0번지인 널 포인터를 반환하게 된다. 이는 보통 NULL로 표기하는데 stdlib.h에서 매크로 정의로 0이라 되어 있기 때문에 전처리 과정에서 0으로 바뀐다. 즉 정수 0과 같다고 생각해도 된다. 그러나 널 포인터는 포인터의 특별한 상태를 나타내기 위해..
· 일상
휴...저 장염으로 개고생하다 왔어요ㅜ 다들 조심하라고 후기 남깁니다 ㅎ6일 동안 장염 동안 엄청 개고생하고 느낀건...고기는 꼭 완전 익혀먹기...물론 싱싱하지 않다면 잘 익혀먹어도 난리난다. 내 친구는 별 일 없는 거 보니 내가 좀 덜 싱싱한 부분을 먹은 모양이다.4주 프로그램 끝나고, 친구랑 부천 곱창 맛집 '황소 곱창' 가서 맛나게 소주와 고기를 때리고 왔다. 내가 뭘 먹었는지 품목과 그에 따른 굽기를 정도로 표현하면1. 곱창(웰던)2. 대창(웰던, 또는 더 기름기 쫙 빼서 쫀득바삭하게)3. 막창(웰던)4. 유창(레어? 핏기 없음)5. 벌양(레어? 핏기 없음)6. 천엽(생)7. 간(생)이 된다. 사장님께서 직접 구워주셨고, 난 믿고 먹었다만..3일 뒤 화요일에 몸살이 오더니 수요일부턴 폭풍이 왔다..
· C언어
int ary[3][4] 다음은 자료형이 int [4]이고 논리적으로 세 개의 일차원 배열을 요소를 갖는 2차원 배열이다. 여기에서 일곱 번째 물리적인 요소의 값에 접근하려면 먼저 포인터 연산을 할 것이기 때문에 정수 연산에 대해 변화하는 주소를 이해해야 한다. ary는 배열의 이름이자 이차원 배열의 첫 번째 부분 배열(ary[0])의 주소를 말한다. 그러므로 ary의 시작 주소를 100이라 가정하고, ary + 1처럼 정수 연산을 하게 되면 ary + 1 == ary + (1 * sizeof(ary[0])) == 100 + 16 == 116 이런 식으로 된다. 여기서 2를 더하면 바로 일곱 번째 요소에 접근할 수 있다고 생각할 수 있지만 (ary + 1) + 2로 하면 같은 원리로 ary + 3이 되어..
· C언어
Piscine 끝나고 C언어 책 목차를 쭉 보니까 4주 동안 이런걸 했었구나하는 생각이 든다. 생각 보다 굉장히 범위가 넓었던.... 하여튼 아직 15장을 보고 있으니 어서 끝내고 내가 하고 싶은 공부 이어서 해야지~~ 01-1 프로그램과 C 언어 01-2 컴파일과 컴파일러 사용법 02-1 C 프로그램의 구조와 데이터 출력 방법 02-2 상수와 데이터 표현 방법 03-1 변수 03-2 데이터 입력 04-1 산술 연산자, 관계 연산자, 논리 연산자 04-2 그 외 유용한 연산자 05-1 if문 05-2 if문 활용과 switch ~ case문 06-1 while문, for문, do ~ while문 06-2 반복문 활용 07-1 함수의 작성과 사용 07-2 여러 가지 함수 유형 08-1 배열의 선언과 사용 ..