목록전체 글 (63)
be programmer
🗃 리눅스의 주요 디렉토리bin기본 명령어들이 저장된 디렉토리boot부팅에 필요한 가진 파일들이 저장되는 곳dev시스템 디바이스 관련 파일들이 저장되는 것etc시스템 설정에 관련된 각종 파일들이 저장되는 곳home사용자의 홈 디렉토리가 생성되는 곳lib커널과 프로그램에 필요한 각종 라이브러리가 저장되는 곳mediaCD, USB같은 외부 장치를 연결하는 곳mnt탈부착 가능한 장치들을 임시로 연결하는 곳(WSL의 경우 윈도우의 디렉토리와 연결)opt추가 패키지가 설치되는 곳rootroot(최고관리자)계정의 홈 디렉토리run실행중인 서비스와 관련된 파일들이 저장되는 곳sbin시스템 관리자용 명령어들이 저장되는 곳sys리눅스 커널 관련 정보가 있는 곳tmp시스템 사용중 발생하는 임시데이터가 저장되는 곳usr기..
Spring 환경에서 기존 jakarta.servlet.http.Cookie 대신 org.springframework.http.ResponseCookie를 사용할 때 얻는 가장 큰 장점은 강력한 보안 옵션 지원과 빌더 패턴을 통한 높은 편의성입니다.구체적인 장점을 비교 분석해 드리겠습니다.1. 크로스 도메인 보안 (SameSite 속성 지원)기존 Cookie: SameSite 속성을 직접 설정하는 메서드가 없습니다. 크롬 등 최신 브라우저의 CSRF 차단 정책에 대응하기 위해서는 response.setHeader("Set-Cookie", "...")와 같이 문자열로 직접 헤더를 포매팅해야 했습니다.ResponseCookie: .sameSite("Lax"), .sameSite("Strict"), .same..
환경: AWS EC2 t3.micro (RAM 1GB / EBS 디스크 기본 8GB / Ubuntu OS)1️⃣ [시작] AWS EC2 접속 및 네트워크 세팅1. EC2 터미널 접속AWS EC2 콘솔 ➔ [인스턴스] ➔ sekai-server 선택 ➔ [연결] (EC2 Instance Connect)를 통해 웹 터미널 접속.터미널은 여러 탭으로 복제(우클릭 ➔ 탭 복제)하여 동시에 작업 가능.2. 올바른 외부 접속 주소 (URL)❌ https://172.31.x.x:8081 (사설 IP 및 SSL 미설정으로 접속 불가)⭕ http://[EC2 퍼블릭 IP 또는 탄력적 IP]:8081AWS 사설 IP(172.31.x.x)는 EC2 내부용이므로, 외부 브라우저에서는 퍼블릭 IP로 접속해야 함.2️⃣ [이슈 ..
이전에 구현한 Spring 기반 크롤러 사이트가 어느정도의 부하를 견딜수 있는지 궁금했다. nGrinder라는 것이 있어서 이것을 통해 알아보기로 했다. nGrinder는 다음과 같은 방식으로 작동된다. 설치설치는 다음의 사이트에서 war파일을 다운로드 받고, 아래 명령어 입력해서 할수 있다.https://github.com/naver/ngrinder/releases Releases · naver/ngrinderenterprise level performance testing solution. Contribute to naver/ngrinder development by creating an account on GitHub.github.com java "-Djava.io.tmpdir=C:\Users\u..
1. HTTP Stateless(무상태성)와 상태 유지 기법 무상태성(Stateless)이란?HTTP 프로토콜은 서버가 이전에 자기를 찾아왔던 클라이언트(사용자)를 기억하지 못한다는 특징이 있습니다.즉, 사용자가 로그인을 하고 다음 페이지로 이동했을 때, 서버는 "아까 그 사람이네?" 하고 알아보지 못합니다.장점: 서버가 사용자의 상태를 일일이 기억하고 있을 필요가 없어서 메모리가 절약되고, 서버를 여러 대 늘리기(확장하기) 쉽습니다.단점: 로그인 상태를 유지해야 하는 웹서비스에서는 매번 누군지 증명해야 하는 번거로움이 생긴다.상태를 유지하기 위한 기술들 (극복 방법):Cookie (쿠키): 사용자의 브라우저에 저장하는 작은 메모지 같은 데이터입니다. 서버가 로그인한 사용자에게 "너는 1번 회원이야"라고..
배포까지 감안하고 개인 프로젝트를 하는것이다 보니 학교다닐때 어렴풋이 배웠던 개인 인증 개념에 있어서, 다시 한번 볼수 있는 기회였다.public void addInterceptors(InterceptorRegistry registry) { //관리자 페이지 접속 경로 및 관리자 API 요청에 대해 1차 인증 거치기 registry.addInterceptor(adminAuthInterceptor) .addPathPatterns("/my-secret-inbox-9982", "/admin.html", "/api/admin/**");}이 코드를 통해 1차적으로 인증을 거친다.그 이후 인터셉터 클래스가 실행되어 아래 메서드가 실행된다. //리퀘스트, 응답, 핸들..
CORS 보안 명세 때문에 발생한 에러이다.나는 처음에 일반적인 CORS 설정을 정의했는데, 쿠키를 설정하고, 보안 관련 메서드도 추가하면서 allowCredentials()를 true로 설정하게 되었다.확장해가면서 그런 메소드들과 allowedOrigins(”*”)를 그대로 쓰다가 에러가 발생했는데,구글링 결과 그냥 allowedOrigins()를 allowedOriginPattern(”*”)로 변경하라고 했고 바로 해결이 되었다.
https://www.acmicpc.net/problem/16947 전형적인 탐색 문제이다.문제를 읽어보면 사이클을 dfs, 재귀 등 방법으로 찾고, 사이클로부터 파생되는 지선의 깊이를 구해서 출력하면 된다.나는 사이클을 dfs로 찾고, 지선의 깊이를 bfs로 찾았다. 사이클을 찾을땐 재귀로 찾는게 편하다 생각했다. 왜냐하면 나한테 익숙했고, 처음 지점을 기억하고 계속 재귀하기에 사이클의 시작점?을 찾는덴 dfs가 가장 적합하다고 여겼기 때문이다. 사이클을 찾으면 true를 반환하여 탐색을 그만 둔다. 아닐 경우 탐색을 해야하기에 사이클 탐색 배열에 false를 준다. 이외 사이클에서 파생된 지선의 깊이는 bfs로 찾았다. 사이클 찾기public static boolean dfs(int prev, int..
