🤔 고민의 시작Spring 기반의 프로젝트를 하다 보면, 종종 이런 고민에 마주치게 된다.“파일 URL을 만들어야 하는데, cdn.base-url 같은 환경 설정값이 필요하다. 이걸 Video 엔티티 안에서 처리하면 편하지 않을까?”이건 정말 현실적인 유혹이다. 모든 곳에서 URL 생성 로직이 일관되게 유지되고, 중복도 없고, 보기에도 깔끔해 보인다.하지만… 이게 정말 괜찮은 구조일까?🧱 첫 번째 시도: 정적 유틸리티 + System Propertypublic class CdnUtil { public static final String BASE_URL = System.getProperty("cdn.base-url"); public static String getUrl(String filen..
git ignore.gitignore 파일을 열어서 제외하고 싶은 파일 명 or path 적기git add .git commit & git push작동하지 않는 경우작동하지 않는다면 캐시 때문일 가능성이 높다.캐시 지우기git rm -r --cached .git add .git commit로컬에서만 제외하고 싶다면.gitignore과 같은 .git/info/exlude 파일을 열어서 제외하고 싶은 파일명 적기vi .git/info/exclude바로 반영되지 않는다면 수동으로git update-index --assume-unchanged {파일명}

AbstractJPAQuery.fetchResults(); 의 함수 주석을 가져와봤다. fetchResults requires a count query to be computed. In querydsl-sql, this is done by wrapping the query in a subquery, like so: SELECT COUNT(*) FROM (). Unfortunately, JPQL - the query language of JPA - does not allow queries to project from subqueries. As a result there isn't a universal way to express count queries in JPQL. Historically QueryDSL..
J2EE 엔터프라이즈 급 환경에서 요구하는 분산 객체, 효율적 자원 관리, 컴포넌트 기반 개발 등을 자바 환경에서 제공할 수 있도록 하는 표준 규약 구성 요소 EJB Servelt/JSP JDBC JNDI JavaMail JMS JTA JAF RMI-IIOP JavaIDL 컨테이너 Servlet 동적 웹페이지를 생성하는 데 사용되는 Java 클래스 쓰레드 기반으로 다수의 사용자를 받아도 응답 속도가 빠르다. JSP Java Server Page의 약자. Java 기반 서버에서 실행되는 스크립트 언어 방식으로 동적 웹 페이지를 작성 Servlet으로 변환되어 서비스된다 장점 Servlet보다 쉽고 빠르게 웹 응용 프로그램을 작성할 수 있다. presentation을 위한 html 코드와 비즈니스 로직을 위..
파일 이동 fzf 플러그인 설치.(.vimrc) Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } Plug 'junegunn/fzf.vim' " Use fzf as a file finder nnoremap :Files ide처럼 같은 프로젝트 안에 있는 파일로 이동할 수 있게. ctrl b 만들어볼까 제외 확장자, 폴더 지정 .vimrc 에 설정 nnoremap :Files ~/IdeaProjects 복사 버퍼 통일시키기. ctrl c , vim > y set clipboard=unnamedplus git 명령 vim-fugitive 설치 gradle vim-gradle plugin 설치 자동완성 coc ruby: https://jame..

4장 머스테치로 화면 구성하기 현재 블로그 글은 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 기반으로 했습니다. 서버 템플릿 엔진과 머스테치 템플릿 엔진이란 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어. JSP, Freemaker 또는 React, View 등이 해당한다. 여기서 전자는 서버 템플릿 엔진, 후자는 클라이언트 템플릿 엔진이다. 서버 템플릿 엔진은 서버에서 구동된다는 것이 차이. 서버에서 Java 코드로 문자열을 만든 뒤 HTML로 변환하여 브라우저로 전달한다. 반면 클라이언트 템플릿 엔진은 브라우저에서 실행된다. mustache 란 수 많은 언어를 지원하는 가장 심플한 템플릿 엔진. 자바에서 사용할 때는 서버 템플릿 엔진으로, 자바스크립트에서 사용될 때..

3장 스프링 부트에서 JPA로 데이터베이스 다뤄보자 현재 블로그 글은 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 기반으로 했습니다. JPA JPA는 자바 표준 ORM(Object Relatinal Mapping) 기술이다. 기존의 웹 서비스를 구현할 때 iBatis(현재의 MyBatis) 같은 SQL Mapper를 사용해서 DB에서 데이터를 다루었는데, 이는 실제 SQL을 작성하게 되어있다보니 객체 지향적으로 개발하기 어려웠다. 즉 관계형 데이터베이스와 객체 지향 프로그래밍 언어 간의 패러다임 불일치 문제가 존재했다. 이에 개발된 기술이 ORM. JPA는 객체지향적으로 프로그래밍을 해도 그에 맞게 SQL을 생성하고 실행해주는 기술이다. 이로 인해 패러다임 불일치를 해소했다. Spring Dat..

2장 스프링 부트에서 테스트 코드를 작성하자 현재 블로그 글은 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 기반으로 했습니다. 테스트 코드 우선 TDD와 테스트 코드는 다르다. TDD는 Test Driven Development 테스트 주도 개발로, 개발 전에 테스트 코드를 먼저 작성하는 개발론을 말한다. 항상 실패하는 테스트를 먼저 작성 테스트가 통과하는 프로덕션 코드를 작성 프로덕션 코드를 리팩토링 테스트 코드는 TDD에서 말하는 테스트 코드를 작성하는 것을 말한다. 다음은 책에 나오는 단위 테스트 코드의 장점이다. 개발 단계 초기에 문제를 발견하게 해준다. 리팩토링이나 라이브러리 업그레이드 등으로 코드가 수정되는 경우 기능의 작동 여부를 확인할 수 있게 한다. 기능에 대한 불확실성을 감소할..

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 읽고 웹 서비스를 만들어가는 과정을 기록해보려 한다. 책의 목차와 같은 순서대로 진행해볼 예정이다. 이는 다음과 같다. 1. 인텔리제이로 스프링 부트 시작하기 2. 스프링 부트에서 테스트 코드 작성하자 3. 스프링 부트에서 JPA로 데이터베이스 다뤄보자 4. 머스테치로 화면 구성하기 5. 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 6. AWS 서버 환경을 만들어보자 - AWS EC2 7. AWS에 데이터베이스 환경을 만들어보자 - AWS RDS 8. EC2 서버에 프로젝트를 배포해 보자 9. 코드가 푸시되면 자동으로 배포해 보자 - Travis CI 배포 자동화 10. 24시간 365일 중단 없는 서비스를 만들자 11. 1인 개발 시..

개발 중 어노테이션을 사용해서 AOP를 적용해보려다 어노테이션에 대해 알고 가는 게 좋을 것 같아 스터디한 내용이다. 어디에 사용할 수 있는지? Class instance creation expression new @Interned MyObject(); Type cast myString = (@NonNull String) str; implements clause class UnmodifiableList implements @Readonly Llist { ... } Thrown exception declaration void monitorTemperature() throws @Critical TemperatureException { ... } @interface는 자동으로 Annotation 클래스를 상속..
- Total
- Today
- Yesterday
- 이벤트스토밍
- TroubleShooting
- 코테 log
- gitignore
- Git
- 이펙티브자바
- fetchResults
- 암호화
- 실용주의
- point
- annotation
- IntelliJ
- DesignSystem
- Lombok
- ActiveAdmin
- SHA
- ruby
- Encoding
- ASCII
- sort algorithm
- SQL 전문가 가이드
- querydsl
- WebClient
- 사고..
- Spring-Boot
- Generic
- Java
- effective-java
- aws
- 메모리 릭
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |