분류 전체보기 48

Spring Security Custom Fiilter 적용(UsernamePasswordAuthenticationFilter를 활용해 모든 권한을 가진 tester 계정 만들기)

[환경] - Spring Security 5.7.6 기준, Java 8 이상 'test'라는 계정을 이용해 모든 권한 테스트를 편하게 하고 싶을 때, UsernamePasswordAuthenticationFilter를 활용하면 간단하게 할 수 있다. 그럼 해당 필터를 커스텀하여 테스트를 좀 더 손쉽게 만들어 보자. UsernamePasswordAuthenticationFilter Spring Security가 제공하는 formLogin을 이용하면 UsernamePasswordAuthenticationToken을 내려주는데 바로 이 토큰을 제공하는데 필터다. username과 password로 로그인을 하려고 하는지 체크하고, 만약 로그인이면 여기서 토큰을 처리하고 가야 할 페이지로 보내준다. 이제 이 필..

개발/Java|Spring 2023.02.07

git 간단 명령어 모음

[목차] 1. 설정 및 기초 2. git branch 3. git push, pull, clone 1. 설정 및 기초 이름, 메일 설정 git config --global user.name "~~~" git config --global user.email "~~~" 설정 확인 git config --list git초기화 git init 트래킹(전체파일) git add . 커밋 with message git commit -m "~~~" 위 작업을 한 번에 git commit -am "~~~" 로그 확인 git log reset --hard : 모두 원복 reset --mixed : add 하기 전으로 (작업영역의 내용 변경이 더 필요할 때) reset --soft : commit 하기 전으로 (주로 이전 ..

개발/Etc 2023.01.25

2023 올해의 컬러 비바 마젠타 (팬톤 컬러)

팬톤에서 올해의 컬러를 선정하는 방법 많은 사람들이 알다시피 미국 색채 전문 기업 팬톤에서 매년 12월 다음 해를 대표할 올해의 컬러를 선정한다. 올해의 컬러 선정은 1999년에 2000년의 컬러인 'Cerulean Blue'를 선정하면서 시작되어 올해 햇수로만 23년 차가 되었다. 한 해 동안 일어나는 모든 일들이 색상에 영향을 미칠 수 있고, 이런 사건들이 색의 언어를 통해 어떻게 표현되고 반영되는지 보여주고자 한 것이다. 팬톤에서는 매년 올해의 컬러를 선정하기 위해 글로벌 컬러 전문가 팀이 전세계를 샅샅이 뒤지고 있다고 한다. 다양한 분야의 문화적 현상을 조사하고, '미래 시장조사', '빅데이터 분석', '타당성 분석' 3단계에 걸쳐 해당 연도에 알맞은 색을 선정한다. 한 해를 하나의 색으로 함축하..

디자인 2023.01.25

인텔리제이(IntelliJ) 코드 실시간 반영(서버 자동 재시작)

환경 IntelliJ Spring Boot Gradle 의존성 추가 dependencies { developmentOnly("org.springframework.boot:spring-boot-devtools") } 인텔리제이 설정 추가 - 2021.2 버전 이전 윈도기준 컨트롤+시프트+A 누른 후 Actions 탭에서 Registry 검색 -> compiler.automake.allow.when.app.running 체크 - 2021.2 버전 이후 File -> Settings -> Advanced Settings 항목 중 Allow auto-make to start even if developed application is currently running 체크 application.yml (프로퍼티) ..

개발/Java|Spring 2023.01.19

스프링 의존성주입 생성자주입(@RequiredArgsconstructor 쓰는 이유)

1. @Autowired는 변경이 어렵다 @Service @Transactional(readOnly = true) public class MemberService { @Autowired private MemberRepository memberRepository; } 2. 그래서 변경을 위해 Setter Injection 사용 하지만 조립한 이후에 바꿀 이유가 없음. @Service @Transactional(readOnly = true) public class MemberService { private MemberRepository memberRepository; @Autowired public void setMemberRepository(MemberRepository memberRepository) {..

개발/Java|Spring 2023.01.18

Spring Security Authentication(인증)

Authentication은 인증된 결과만 저장하는 게 아니라 인증을 하기 위한 정보와 인증을 받기 위한 정보가 하나의 객체에 동시에 들어있다. AuthenticationProvider가 어떤 인증에 대해서 허가를 할 것인지 판단하기 위해 직접 입력된 인증을 보고 허가된 인증을 내주는 방식이기 때문이다. Authentication Mechanism Username and Password 사용자 이름/비밀번호로 인증하는 방법 OAuth 2.0 Login 소셜 로그인. OpenID Connect 및 비표준 OAuth 2.0 로그인 SAML 2.0 Login SAML 2.0 로그인 Central Authentication Server(CAS) 중앙인증서버(CAS) 지원 Remember Me 세션이 만료된 사용..

개발/Java|Spring 2023.01.18

distinct 로 중복 제거 시 속도 저하 문제

요구사항 : 결과값에서 중복 제거 구현된 기능 중 약 100만 건 가량의 데이터가 조회되는 기능이 있었다. left join 문이지만 단순 조회라서 위 이미지에서 보는 것처럼 시간 성능은 126ms 근처를 오가는 수준. 중복 결과를 제거해야 될 요구사항이 생겨 distinct를 이용해 간단히 해결하려고 했다. 하지만, 문제 발생 속도 저하라는 더 큰 문제에 직면했다. (0.1초에서 14초로 늘어나다니...😱) 참고로 중복 제거 결과 데이터의 양은 약 31만건. 문제 원인 DB 조회 후 응답 객체로 도메인 객체를 바로 사용하고 있었다. 도메인은 건드릴 수 없는 상황이고, 기존의 도메인 객체는 이미 컬럼이 엄청 많은 상태다. 그래서 인덱스를 태워도 Distinct 사용 시 압도적으로 높은 cost가 발생할 ..

개발/Java|Spring 2023.01.18

Spring Security 개념, 아키텍처, 필터 순서, 예제

[목차] 1. Spring Security 개념 2. 아키텍처 3. 필터 순서 4. 샘플예제 스프링 시큐리티는 한 번에 이해가 쉽지 않다. 지금도 마찬가지지만, 공부하는 마음으로 조금씩 정리해 본다. 참고로 문서는 Spring Security 5.7.6 버전 기준이며, Java 8 이상의 런타임 환경이 필요하다. Spring Boot with Gradle 환경이다. 스프링 부트는 스프링 시큐리티 관련 의존성을 모두 묶어 'spring-boot-starter-security' 라는 스타터를 제공한다. 스타터는 스프링 이니셜라이저를 사용하면 쉽고 간단히 만들 수 있고, 아래처럼 수동으로 gradle 설정을 추가할 수도 있다. dependencies { compile "org.springframework.bo..

개발/Java|Spring 2023.01.17

웹 성능 개선 - 폰트편

[TL;DR] 기본적으로 사용하는 폰트를 최소화하고, 폰트 사이즈를 줄여 'woff2' 포맷 파일로 'preload' 한다. 폰트가 적용된 글자수가 적다면 불필요한 글자를 제거한 서브셋 폰트를 사용하자. 잘 모르겠다면 구글 웹폰트를 사용하자. 쓰려는 폰트가 없거나 더 욕심나면 커스텀 하자. 디자이너와 개발자 모두 읽을 수 있도록 가벼운 수준으로 작성했으니 참고 부탁드립니다. [목차] 1. 사용 폰트 최소화 2. font-display - FOUT vs FOIT 3. 폰트 사이즈 줄이기 4. 폰트 호출 시점 앞당기기 5. 구글 웹폰트 1. 사용 폰트 최소화 기본적으로 사용하는 폰트는 최소화하는 게 좋다. 당신이 디자인을 하든 개발을 하든 모두 해당된다. 나처럼 열심히 공부하지 않은 날라리라도 모던 디자인을..

개발/Etc 2023.01.12

Cumulative Layout Shift(누적 레이아웃 이동, CLS)

layout shift는 영상 예시를 보면 쉽게 이해할 수 있다. 영상은 이곳에서 가져왔다. 웹에 접속해서 페이지를 로드할 때 서버에서 아직 응답을 받지 못한 데이터가 있을 수 있다. 그때 ui 상으로는 더 하단에 있더라도 더 빨리 렌더링 되는 순서대로 차곡차곡 다른 데이터들이 먼저 자리를 차지하게 된다. 결국 뒤늦게 도착한 데이터는 정해진 영역에 마치 비집고 들어가는 것처럼 보이게 된다. html 구조상에 위차한 영역에 들어가는 것 뿐인데도 말이다. 이 문제는 해당 영역에 공간을 별도로 설정해 두지 않아서 발생한다. 위 영상에서도 버튼 클릭처럼 중요한 이벤트를 처리하는데, 클릭 순간 갑자기 안보이던 영역이 추가로 생기면서 버튼이 밀리는 현상이 발생한다. 사용자가 전혀 원하지 않은 다른 버튼을 클릭하게 ..

개발/Etc 2023.01.11
728x90
반응형