전체 글

🔥
실패한 풀이 class Solution { fun solution(n: Int, m: Int): IntArray { var answer = intArrayOf().toMutableList() if(m %n != 0) answer.add(1) else answer.add(n) answer.add((n*m)/answer[0]) return answer.toIntArray() } } 경우의 수를 if 문으로 나눠봤다. 실패한 풀이 2 class Solution { fun solution(n: Int, m: Int): IntArray { var answer = intArrayOf().toMutableList() if(m %n == 0) { answer.add(n) answer.add(m) } else if (n..
회원가입, 로그인 서비스 로직 만들어놓고 이메일 인증 구현하기 기본 구현 => 익명 닉네임 만들기 목표 : 익명 닉네임 생성 목적 : 익명 게시판의 게시글 작성자를 익명으로 나타내기 위해 1 UUID 메소드 이용 UUID : 고유성이 보장되는 id를 만들기 위한 표준규약 : 중복되기 어려운 값들을 길게 만들어서 단일 값을 보장함 8-4-4-4-12 UUID.randomUUID() => 무작위 생성 가능 근데 익명을 나타내기 위함인데 굳이 이렇게 길 필요가 없을 것 같다. 2 Random() 이용 문자열 랜덤 뽑기 val chars = "abcdefghijklmnopqrstuvwxyz" val random = java.util.Random() var nickname = "" for(i in 1..10) {..
정렬을 해서 인덱스가 0인 요소를 제거하면 순서가 바껴서 그대로 반환할 수 없다. 풀이 실패 요소를 제거하기 위해 array가 아닌 다른 컬렉션으로 바꾼 뒤 제거하고 다시 array로 반환해야 한단다. 다른 사람 풀이 class Solution { fun solution(arr: IntArray): IntArray { var answer = intArrayOf() var arrs = arr.toMutableList() // MutableList 로 변환 arrs.remove(arrs.minOrNull()) // minOrNull()로 최솟값 제거 answer = arrs.toIntArray() // 다시 IntArray 로 변환 if(arrs.size == 0) answer = intArrayOf(-1)..
백오피스 프로젝트 240122 ~ 240129 *presentation layer 내가 맡은 기능 회원가입 + 이메일 인증 게시글 좋아요 회원가입 api 아이디(이메일) 중복 검사 아이디, 비밀번호 => User 객체로 저장 => 인증 여부 상태 기본값 false 입력받은 아이디(이메일)로 인증코드 전송(메일전송서비스 호출) *인증코드 db 저장 ( 유저 id + 인증코드 ) 인증 코드 api 아이디(이메일), 비밀번호, 인증코드 받는데 *인증코드 유효시간 둘지? 코드 일치하면 인증 여부 상태 true 전환 로그인 api 아이디(이메일), 비밀번호 받고 사용자 인증 여부 상태조회해서 false 면 로그인 불가 이메일 비밀번호 검사 토큰 발급 => 리프레쉬 토큰도 발급 이메일 서비스 - 내 계정, 비밀번호..
투두 개인과제 인가기능이 안먹길래 왜 이러나 한참 찾았는데 @EnableMethodSecutiy 어노테이션을 안 넣었다. 생각도 못하고 필터만 계속 쳐다봤었다.🥲 MockMvc : 스프링에서 제공하는 웹 애플리케이션 테스트 : 컨트롤러의 동작을 테스트하는 데 사용. HTTP 요청을 작성하고 응답을 검증할 수 있다. AWS 배포 ? 일래스틱 빈스토크 생성 참조 생활코딩 책 보고 따라해보려는데 출간된지 얼마나 됐다고 ui나 생성과정이 책이랑 다르다 .! 그래서 블로그 뒤져보느라 또 한참이 걸렸다. 일단 일래스틱 빈스토크로 애플리케이션 생성을 하려는데 그보다 먼저 EC2 키 랑 인스턴스 프로파일을 생성해야 한다. 이 key 를 이용해서 빈스토크 애플리케이션 클라우드 인스턴스에 안전하게 로그인 할 수 있다고 하..
n을 3진법 상에서 앞뒤로 뒤집는다는게 자연수 n 을 3진법으로 바꾼 뒤 뒤집는 거겠지? 예로 나온 45의 경우 45 -> 1200 -> 0021 -> 7 3진법 변환 -> 뒤집음 -> 10진법 변환 와 하나도 모르겠다 .! n을 3으로 나눈 나머지를 n 이 0보다 작아질때까지 문자열에 차례대로 넣어서 앞뒤 반전된 3진법을 만들고 var answer: Int = 0 var x = n var y: String = "" while(x >0) { y += (x %3).toString() x /=3 } => 0021 이 문자열의 길이를 토대로 10진법으로 바꿔야하는데 reversed() 로 뒤집어서 => 1200 0번째 숫자 1은 3의 0승 * 1 1번째 숫자 2는 3의 1승 * 2 import kotlin.m..
완료여부 api 분리 @Controller @Service security 적용 implementation("org.springframework.boot:spring-boot-starter-security") implementation("io.jsonwebtoken:jjwt-api:0.12.3") runtimeOnly("io.jsonwebtoken:jjwt-impl:0.12.3") runtimeOnly("io.jsonwebtoken:jjwt-jackson:0.12.3") 시큐리티 로깅 (yml) logging: level: org: hibernate: SQL: debug orm: jdbc: bind: trace springframework: security: debug 토큰에 id, email, role..
Kotlin 대/소문자 변환 toUpperCase / toLowerCase 내 풀이 => 실패 class Solution { fun solution(s: String): String { var answer = "" s.mapIndexed{ i, n -> if( i%2 ==0 || i ==0 ) answer += n.toUpperCase() else answer += n.toLowerCase() } return answer } } 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다. 이게 문제인 것 같은데 문자열 전체로 본 인덱스가 아니고 "try hello world" 면 "try" 에서의 짝/홀수, "hello"에서의 짝/홀수? 힌트 .split(" ") "..
🚩 스프링 시큐리티 인증 403 예외처리 인증이 안된 상태로 시도할 때 401이 떠야하는데 403이 뜬다. => AuthenticationEntryPoint 를 custom 해준다. @Component class CustomAuthenticationEntryPoint(): AuthenticationEntryPoint { override fun commence( request: HttpServletRequest, response: HttpServletResponse, authException: AuthenticationException ) { response.status = HttpServletResponse.SC_UNAUTHORIZED response.contentType = MediaType.APPLI..
스프링 심화 주차 Spring Security filter 들이 정말 많고 이름이 헷갈린다 책이나 블로그에 UserDetails 같은 인터페이스들이 많았지만 다 비슷비슷하게 생겨서 정신이 없었다. SecurityContextHolderFilter : SecurityContext 객체를 생성, 저장, 조회 SecurityContextHolder.get ~~ 으로 저장된 유저 정보를 바로 꺼내왔었다. CSRF : 유저가 특정 이미지 등을 클릭할 때 서버측으로 의도치 않은 http 요청을 전송하게 하여 공격하는 걸 막는 필터 LogoutFilter : 설정된 로그아웃 URL 로 요청이오면 세션 무효화, 쿠키 삭제, Context 비움 swagger 상에서 authorization 로그아웃 해준거랑 같은건가? ..
다시은
재은로그