브라우저로 웹사이트에 접속할 때 도메인을 입력하면 일어나는 일들 내용 출처 : https://preamtree.tistory.com/35 , https://hello-judy-world.tistory.com/189 [IT 기술면접 준비자료] 당신이 브라우저로 웹사이트에 접속할 때 일어나는 일들 (부제: DNS 이야 당신이 인터넷으로 웹 페이지에 접속 할 때 어떤 네트워크 작용이 일어나는지 설명하는 것. "어느정도로 자세히 설명해야하는가?" 에 대한 명확한 기준은 없지만, 대학 시절 배운 지식만으로도 preamtree.tistory.com 숫자로 되어있는 긴 ip 주소는 사람이 외우기 어렵다는 단점을 가지고 있다. 그래서 ip주소를 특정 별명을 매핑 해준 것이 도메인 주소이다. DNS는 도메인 이름과 ip..
왕초보일지
기본 파일 다시 만들어서 https://gamzzang.tistory.com/98 aws ec2 + putty 배포 시도 전제: aws ec2 인스턴스 생성하고 putty 로 접속(ppk 키는 생성완료) 1 2G 용량의 스왑 파일 생성 => 왜 2G 냐 하면 프리티어 기본 제공량 1G 관련 => 통상 스왑메모리는 기존 크기의 2배만큼 설정해준다고 한다. => 디스크 공간을 메모리처럼 활용하여 처리 속도는 떨어지나 프리티어 용량 대비 설정해주는게 훨씬 빠르다. => 나는 테스트하는 과정이라 안했지만 시스템 재부팅이 되어도 만들어진 스왑이 적용될 수있게 할 수 있다. sudo fallocate -l 2G /swapfile 2 생성한 파일에 루트 사용자만이 읽고 쓸 수 있도록 변경 sudo chmod 600 ..
ec2 로 똑같이 배포하는데 참조 블로그 빌드 속도 향상을 위해 스왑메모리 사용 참조 블로그1 참조블로그2 - 내 메모리로 할당 스왑 영역 활성화 스왑 메모리 2기가 생성 java 를 설치하려고 하는데 Unable to locate package openjdk17-jdk 라고 뜬다. sudo apt update 한 후에 다시 sudo apt install openjdk-17-jdk 하니 다운로드가 되었다. git clone 해오고 프로젝트 이름 디렉토리로 이동해서 빌드 명령을 했는데 다음과 같이 거부되었다. Permission denied 권한이 없기 때문에 권한을 주면 실행이 가능하다고 한다. chmod +x ./gradlew 기다림이 또 시작됐다. 다른 방법도 있지만 이왕 이 방식으로 시작해본거, 성..
error code 를 정의하고 적용했다. enum class ErrorCode(val code: Long, val message: String, val statusCode: HttpStatusCode) { ... // MEMBER //MEMBER_ID_NOT_FOUND(3001, "id에 해당하는 MEMBER 를 찾을 수 없습니다.", HttpStatus.NOT_FOUND), MEMBER_EMAIL_NOT_FOUND(3002, "이메일이 존재하지 않습니다.", HttpStatus.NOT_FOUND), MEMBER_EMAIL_DUPLICATE(3003, "이미 사용중인 이메일입니다.", HttpStatus.CONFLICT), MEMBER_PASSWORD_MISMATCH(3004, "비밀번호가 일치하지 않..
스프링에서 구글 이메일 메일 발송하기 의존성 implementation("org.springframework.boot:spring-boot-starter-mail:3.0.5") application.yml spring: mail: host: smtp.gmail.com port: 587 username: password: properties: mail: smtp: auth: true starttls: 환경변수로 메일과 비밀번호 설정 메일 설정 (안해줘도됨) 더보기 @Configuration @PropertySource("classpath:application.yml") class EmailConfig { @Value("\${spring.mail.host}") private val host: String? ..
Error Code http 상태 코드 이외에 애플리케이션의 error 를 별도 정의할 필요성이 있다. http 상태 코드 안에서 세부적으로 나눈다고 보면 될 것 같다. 상황에 따라 전달할 수 있어 api 문서의 가독성이 높아진다. 그렇기 때문에 단순히 따로 정의한 code 만 반환하는 것이 아니라 human-readble 한 정보를 포함하도록 한다. RF7808 에서 제시한 형태처럼 분류를 할 수도 있고 { "type": "/errors/incorrect-user-pass", "title": "Incorrect username or password.", "status": 401, "detail": "Authentication failed due to incorrect username or passwor..
회원가입, 로그인 서비스 로직 만들어놓고 이메일 인증 구현하기 기본 구현 => 익명 닉네임 만들기 목표 : 익명 닉네임 생성 목적 : 익명 게시판의 게시글 작성자를 익명으로 나타내기 위해 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) {..
백오피스 프로젝트 240122 ~ 240129 *presentation layer 내가 맡은 기능 회원가입 + 이메일 인증 게시글 좋아요 회원가입 api 아이디(이메일) 중복 검사 아이디, 비밀번호 => User 객체로 저장 => 인증 여부 상태 기본값 false 입력받은 아이디(이메일)로 인증코드 전송(메일전송서비스 호출) *인증코드 db 저장 ( 유저 id + 인증코드 ) 인증 코드 api 아이디(이메일), 비밀번호, 인증코드 받는데 *인증코드 유효시간 둘지? 코드 일치하면 인증 여부 상태 true 전환 로그인 api 아이디(이메일), 비밀번호 받고 사용자 인증 여부 상태조회해서 false 면 로그인 불가 이메일 비밀번호 검사 토큰 발급 => 리프레쉬 토큰도 발급 이메일 서비스 - 내 계정, 비밀번호..
투두 개인과제 인가기능이 안먹길래 왜 이러나 한참 찾았는데 @EnableMethodSecutiy 어노테이션을 안 넣었다. 생각도 못하고 필터만 계속 쳐다봤었다.🥲 MockMvc : 스프링에서 제공하는 웹 애플리케이션 테스트 : 컨트롤러의 동작을 테스트하는 데 사용. HTTP 요청을 작성하고 응답을 검증할 수 있다. AWS 배포 ? 일래스틱 빈스토크 생성 참조 생활코딩 책 보고 따라해보려는데 출간된지 얼마나 됐다고 ui나 생성과정이 책이랑 다르다 .! 그래서 블로그 뒤져보느라 또 한참이 걸렸다. 일단 일래스틱 빈스토크로 애플리케이션 생성을 하려는데 그보다 먼저 EC2 키 랑 인스턴스 프로파일을 생성해야 한다. 이 key 를 이용해서 빈스토크 애플리케이션 클라우드 인스턴스에 안전하게 로그인 할 수 있다고 하..
완료여부 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..