전체 글

전체 글

    스프링 WebMvcConfigurer 인터페이스란?

    WebMvcConfigurer 란? 스프링 프레임워크에서 제공하는 인터페이스이다. 보일러플레이트 코드 없이 요구사항에 맞게 프레임워크를 조정할 수 있게 해준다. 특정한 스프링 클래스를 구현하거나 상속할 필요 없이 MVC 구성정보를 제어할 수 있게 해준다. @EnableWebMvc 를 통해 활성화된 Web MVC 애플리케이션의 구성정보를 커스터마이징하는 것을 돕기도 한다. 스프링 부트에 있는 기본 설정이 마음에 들지 않거나 스프링에 추가적인 설정을 해줄 필요가 있을 때 사용한다. /** * Defines callback methods to customize the Java-based configuration for * Spring MVC enabled via {@code @EnableWebMvc}. * *..

    스프링부트 @EnableConfigurationProperties 애노테이션이란?

    @EnableConfigurationProperties 란? 스프링부트의 애노테이션 중 하나이다. @ConfigurationProperties 애노테이션 이 들어간 빈을 활성화시키기 위해 사용된다. @ConfigurationProperties 애노테이션 은 프로퍼티에 있는 문자열을 매핑하여 JVM 메모리로 올리기 위해 사용된다. 왜 @EnableConfigurationProperties 를 사용하는가? 타입 안정성: 프로퍼티를 바인딩하며 IDE 의 컴파일 타임 검사 및 코드 완성 기능을 활용할 수 있어서 오류 발생 여지가 줄어든다. 재사용성: 클래스에 속성 집합을 정의하고 언제든 해당 클래스를 재사용할 수 있다. 검증: 프로퍼티에 검증 규칙을 쉽게 추가할 수 있다. 관리의 용이성: 관련된 프로퍼티를 클래..

    스프링 부트의 @ConfigurationProperties 애노테이션이란?

    @ConfigurationProperties 란? 스프링 부트의 애노테이션이다. 외부의 configuration properties 값을 매핑하기 위해 사용한다. application.properties 에 하드코딩된 값을 자바 메모리로 가져오는 것이다. 왜 쓰는가? 타입 안정성: 코드 완성 및 리팩토링 기능과 같은 IDE 지원을 포함하여 강력한 속성 타이핑이 가능하다. 값 검증: JSR 303/349 애노테이션들을 이용해 강력한 값 검증 규칙을 추가하는 것이 가능하다. 계층 매핑: 계층이 있는 프로퍼티들을 편리하게 매핑할 수 있다. 보다 체계적이고 가독성이 높은 코드를 작성할 수 있다. 릴렉스 바인딩: 다양한 형태의 프로퍼티 이름을 지원한다. ex) my-property, my_property, myP..

    앤드류 응 Chatgpt Prompt Engineering For Developers 강좌 요약

    출처 앤드류 응의 무료 GPT Course 코스 요약 코스는 총 3파트로 되어있음 파트1: 2개의 원칙 파트2: 반복적인 개발 프로세스 파트3: 여러가지 가능성 (요약, 추론, 변환, 확장, 챗봇 구축) 2개의 원칙 (Two Principles) 원칙 1: 분명하고 구체적인 명령을 써라. (Write clear and specific instructions) 전략 1: 부분을 구분하기 위해 ```, """, , 와 같은 구획문자 (delimiters) 를 사용하라. 입력을 더 잘 정리할 수 있고 프롬프트 인젝션을 방지하는데 도움이 된다. Summarize the text delimited by triple backticks into a single sentence. ``` {text} ``` 전략 2: ..

    스프링의 preHandle() 메서드란? (언제 실행될까?)

    preHandle() 메서드란? HandlerInterceptorAdapter 클래스에서 제공하는 하나의 메서드다. HandlerInterceptorAdapter 를 상속한 클래스를 bean 설정에 등록해두면, 스프링 인터셉터로 활용할 수 있다. xml 을 이용한 빈 설정을 사용하는 경우 @Configuration public class AppConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyInterceptor()); } } Java Config 를 이용한 빈 설정을 사용하는 경우 preHandle() 은 순서..

    MSSQL 내장함수 STUFF 란?

    SQL Server stuff() 내장 함수란? 기존의 문자열에 새로운 문자열을 끼워넣고 싶을 때 사용한다. 양식 STUFF ( character_expression , start , length , replaceWith_expression ) character_expression: 기존의 문자열 varchar(max) 혹은 nvarchar(max) 유형이 아니라면, 8000 byte 까지만 허용 start: 시작 위치 1부터 시작, 1이 가장 첫번째 글자 앞 음수나 0을 넣으면, 함수가 NULL 을 반환 length: 삭제할 문자의 길이 start 지점 뒤에 있는 글자 중 원하는 만큼 지울 수 있다. replaceWith_expression: 끼워넣을 문자열 예시 SELECT STUFF('SQL..

    웹 개발자를 위한 Chat GPT 프롬프트들

    출처 https://www.builder.io/blog/ai-prompts-for-web-developers-chatgpt 의 프롬프트들을 따라쳐서 정리해본 자료입니다. 가능한 것들 코드 생성 (Code generation) SQL 생성 (SQL generation) 코드 완성 (Code completion) 코드 변환 (Code conversion) 코드 설명 (Code explanation) 코드 리뷰 (Code review) 코드 리팩토링 (Code refactoring) 버그 파악 및 수정 (Bug detection and fixing) 시스템 디자인과 아키텍처 (System design and architecture) 검색엔진 최적화 (Search Engine Optimizaiton) 목 데이터..

    간단한 스프링 부트 3 최초 실행 문제 해결 (Could not resolve org.springframework.boot:spring-boot-gradle-plugin)

    에러 발생 경위 스프링 부트로 프로젝트를 생성하려 했다. 최신 버전이 스프링 부트 3.0 으로 프로젝트를 생성하니 켜자마자 에러가 발생했다. 에러 내용 A problem occurred configuring root project 'adhdprotector'. > Could not resolve all files for configuration ':classpath'. > Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.1.1. Required by: project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.1.1 >..

    거인의 노트 서평

    거인의 노트 서평 나는 평소에 기록에 관심이 많았고, 이 책을 기록학 박사님이 쓰셨다고 해서 읽게 됐다. 내가 생각한 이 책의 핵심은 '겉으로 보이지 않는 기록이라는 행위의 숨겨진 이득' 과 '어떻게 재미있게 잘 기록할 수 있는지' 이다. 보통 사람들이 갖는 기록이란 개념은 중요한 지식을 추후에 잊어버리지 않기 위해 어딘가에 적어두는 것 정도로 생각한다. 까먹지 않기 위해 적는 것은 가장 일반적인 기록의 가치이고 그 외에 문제의 복잡함을 해소하는데도 기록을 이용할 수 있다. 아주 간단한 예시로 수학문제를 풀 때 숫자를 적어가면서 풀면 4자리 수의 곱셈도 쉽게 풀 수 있는 반면 머리로만 풀면 매우 어렵다. 파인만은 '파인만 알고리즘' 이라는 것을 만들었는데, 1...

    5가지 테스트 애플리케이션 영역 (사용자 페르소나, 도메인, 비즈니스 우선순위, 인프라 및 구성, 애플리케이션 아키텍처)

    5가지 테스트 애플리케이션 영역 (사용자 페르소나, 도메인, 비즈니스 우선순위, 인프라 및 구성, 애플리케이션 아키텍처) 사용자 페르소나 유사한 속성을 지닌 최종 사용자 집합 ex) 청년층은 화려한 사용자 경험을 원하고 중장년층은 명확하고 사용하기 쉬운 사용자 경험 테스트는 최종 사용자 관점에서 진행해야 함 애플리케이션이 대상으로 하는 페르소나를 알아야 함 페르소나가 애플리케이션을 이해하고 상호 작용하는 방식을 탐색 도메인 산업 분야의 워크 플로우, 프로세스, 전문용어를 알아야 함 ex) 이커머스: 장바구니 담기, 주문 확인, 주문 승인 등과 같은 워크플로우를 거침 비즈니스 우선순위 UI 뿐만 아니라, 비즈니스 최우선 목표에 따라 플랫폼 관점에서 탐색 UI 와 웹서비스는 잘 연결되어 있는지, 웹서비스가 ..

    폴 그레이엄의 의견 불일치 계층 (Paul graham's hierachy of disagreement)

    간혹 회의에서 직장 상사분들이 밑도 끝도 없이 핵심 요점과 상관 없는 이유로 부하직원의 의견에 반박하는 경우를 많이 보아왔는데, 폴 그라함의 의견 불일치 계층이 이를 설명하기에 괜찮은 아이디어 같아서 가져와봤다. 의견 불일치의 계층 (Graham's hierachy of disagreement) 의견 불일치의 계층이 높을수록 덜 짓궂게 만들고 더 행복하게 만든다는 주장 높은 수준의 의견 충돌일수록 현실에서 더 귀하다. 가장 아랫 단계의 의견 충돌인 name-calling 은 단순한 모욕과 다르지 않다. 계층 설명 1단계, 욕설 (name-calling): "야이 바보야!" 같이 의견 불일치를 표현함 2단계, 인신공격 (ad-hominem): 논쟁의 본질보다는 화자의 특성이나 권위를 욕함 3단계, ..

    INP (Interaction to Next Paint) 란?

    INP (Interaction to Next Paint) 란? 대략 2024년 3월부터 FID (First Input Delay) 대신 적용될 Core Web Vital 지표임 사용자가 페이지와 수행한 모든 상호작용의 시간을 측정함 상호작용 중 가장 지연시간이 길었던 지표를 기준으로 INP 를 평가함 평가 기준은 200ms 이하 GOOD, 200ms ~ 500ms 사이 NEEDS IMPROVEMENT, 500ms 이상 POOR 단, (대부분은 없지만) 50개 이상의 상호작용이 있는 페이지에서는 50개 상호작용 마다 가장 나빴던 지연시간 하나를 제외해줌 FID 와의 차이는 FID 는 첫 상호작용의 입력 시간 지연만 측정했던 반면, INP 는 모든 상호작용을 샘플링하여 종합적으로 평가함 원본 글 https:..

반응형