일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래밍언어
- 독후감
- 지혜를가진흑곰
- 알고리즘공부
- 돈
- 자바스크립트
- 성분
- 프로그래머스 알고리즘 공부
- 자바
- 다독
- JavaScript
- 책알남
- 경제
- 주식
- algorithmStudy
- 채권
- 알고리즘 공부
- algorithmTest
- 백준알고리즘
- 투자
- C++
- 재테크
- C
- 화장품
- 책을알려주는남자
- 알고리즘트레이닝
- algorithmtraining
- 독서
- 서평
- Java
- Today
- Total
목록[Snow-ball]server (34)
탁월함은 어떻게 나오는가?
org.springframework.dao.InvalidDataAccessApiUsageException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.; nested exception is java.lang.IllegalStateException: For queries with named parameters you need to use provide names for method parameters. Use @Param for quer..
스프링부트 프로젝트에서 lombok을 사용하는데, 롬복이 JDK21 이상이면 지원하지 않기 때문에 에러가 발생한다. 간단히 JDK를 17로 변경해주면 된다. 1. File > Project STructure 클릭 2. JDK22 버전을 확인해 볼 수 있다 > openjdk-22 클릭 3. [ Download JDK ] 클릭 (기존의 깔려있거나 추가할 수 있으면 추가하자) 4. 17버전을 선택 후 [ Download ] 클릭 5. SDK 행의 내용이 변경된걸 확인할 수 있다. > [ OK ] 버튼 클릭 6. 우측 하단에 설치되는걸 확인할 수 있다. 기다리자.
프로그래밍을 하다보면 log를 기록해야지 좋은 경우가 많다. 그렇기 때문에 나는 NestJS를 사용하는 프로젝트에서는 log를 Winston을 사용하여서 log를 남겨놓는다. 기존의 로그를 남기는 방식은 error.log / combined.log / query.log 에 계속적으로 남겨놓는 방식으로 처리를 하였다. 하지만, 로그를 좀 더 간편하게 찾아볼 필요가 있다고 생각이 들어서 연/월/일로 폴더가 생성되고 일자폴더에 규격에 맞게 저장되길 원해서 수정하게 되었다. 적용 코드: 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4..
스프링 부트의 파일 업로드와 관련된 설정은 1) 별도의 파일 업로드 라이브러리(commons- fileupload 등)를 이용하는 경우와 2) Servlet 3버전부터 추가된 자체적인 파일 업로드 라이브러리를 이용하는 방식으로 구분 할 수 있다. 별도의 파일 업로드 라이브러리는 WAS의 버전이 낮은 경우나 WAS가 아닌 환경에서 스프링 부트 프로젝트를 실행한다면 별도의 라이브러리를 사용하는 것이 좋다. 나의 경우에는 스프링 부트 자체에서 지원해주는 이미지 업로드 기능을 사용해보았다. 파일 업로드 위한 설정 1 2 3 4 5 6 7 8 9 10 server.port = 8080 spring.servlet.multipart.enabled=true spring.servlet.multipart.location=..
nestjs 프로젝트로 websocket을 구현해서 postman으로 테스트를 해보겠다. 간단하게 테스트를 해볼것이기 때문에 코드레벨은 간단히 정의해보았다. 88번 포트로 웹소켓 통신을 시작할 것이고, 연결이 되기 시작했다면 'message'라는 값으로 통신을 시작할 것이다. 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 32 33 34 35 36 37 38 @WebSocketGateway(88, { transports: ['websocket'], cors: { origin: '*', methods: ['GET', 'POST'], transports: ['websocket', 'polling'], cr..
Nestjs에서 Swagger를 사용하는데 base.offset.pagination.intput.dto에 어노테이션을 선언을 해도 지속적으로 에러가 발생했다. 기존의 많은 프로젝트에도 똑같이 적용하고 잘됬던 코드라 많이 의아했다. 문제의 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 export class BaseOffsetPaginationInputDto { @IsNumber() @ApiProperty({ type: Number, required: true, default: 1, }) public readonly page!: number; // 리스트 행 개수 @IsNumber() @ApiProperty({ type: Number, required: true..
의존성 주입(Dependency Injection)이란? 의존성 주입이란 무엇일까? 위키백과에 의존성 주입을 검색해본다면 한줄로 요약이 가능할 것이다. 의존성 주입은 하나의 객체가 다른 객체의 의존성을 제공하는 테크닉이다. 우리는 위의 한 줄에서 얻어야하는 것은 "테크닉" 이라는 부분이다. 즉, 우리가 코드를 작성할 때 사용하는 테크닉들 중 하나인 것이다. 그러면 우리는 고민을 해봐야하는 것 중 한가지는 어떤 테크닉이라는 것일까? 그 답은 바로 컴포지션이다. 즉, 합성(포함)이다. 쉽게말해서, 합성의 테크닉들 중 한가지라고 보면 된다. 그렇다면 역으로 생각해볼 수 있다는것은 Nestjs나 Spring boot 에서 제공하는 의존성 주입은 결국 우리가 흔하게 구현하는 new ClassName() 의 컴포지..
정의 리스코브 치환의 원칙은 줄여서 LSP라고 부른다. LSP를 한마디로 한다면 "서브 타입은 언제나 슈퍼 타입으로 교체할 수 있어야 한다." 라고 할 수 있다. 즉, 서브 타입은 언제나 상위인 슈퍼 타입과 호환될 수 있어야 한다. 달리 말하면 서브 타입은 슈퍼 타입이 규정한 규약을 전부 지켜야 한다. 상속은 구현상속(inheritance), 인터페이스 상속(implements) 중 어떤걸 사용더라도 궁극적으로 다형성을 통한 확장성 획득이 목표이다. LSP 원리 또한 서브 클래스가 확장에 대한 인터페이스를 준수해야만 함을 의미하고 있다. 한줄로 정리하자면, LSP는 application program을 중단하지 않고 슈퍼 클래스의 개체를 해당 하위 클래스의 개체로 교체될 수 있다는 것이다. 말로는 헷갈릴..