본문 바로가기

분류 전체보기

(128)
10479 - 따르릉 따르릉 step 1더보기맥스를 반지름이 0.5인 원으로 생각하면 조금 복잡합니다. 사람을 점으로 표현할 수 있는 방법이 없을까요?맥스의 중심을 기준으로 자동차의 빨간 원 안에 들어가면 차와 충돌하게 됩니다. 차 부분만 확대하면 다음과 같습니다.0.5만큼 살찌웠다고 생각하면 됩니다. 그럼 맥스에 해당하는 점이 자동차 주위 빨간 영역과 겹치는지 확인하면 됩니다.step 2더보기지금부터 자동차를 고정시킬 것입니다.맥스는 위로 M의 속도로, 차는 오른쪽으로 B의 속도로 달립니다.그럼 이건 차가 고정되어 있고 맥스가 위로 M, 왼쪽으로 B의 속도로 달리는 것과 같습니다. 맥스는 t초 뒤에 출발합니다. 그 말은 맥스가 처음 위치에서 Bt미터 왼쪽에서 출발한다는 것과 같습니다. 그럼 자동차 입장에서 맥스가 어떻게 움직이는지..
spring boot - 환경 변수 작업을 하다 보면 코드나 깃에 들어가면 안되는 변수들(ex. 비밀번호)이 있습니다. 이런 변수들을 잘 관리하기 위해 환경변수를 만듭니다.환경변수 세팅저는 config를 관리하는 패키지에 PropertyConfig파일을 만들었습니다. @Configuration: 세팅 파일임을 선언합니다.@PropertySource("classpath:static/properties/env.properties"): 어떤 파일을 환경변수로 사용할 것인지 정의합니다.지정한 파일에 환경변수 파일을 넣습니다. .gitignore에 해당 파일을 꼭 넣어줍니다. 이것을 빠트리면 모든 비밀번호가 공개됩니다. 만약 gitignore이 동작하지 않는다면git rm -r --cached . 로 캐시를 지우고 다시 진행하 됩니다.사용법저는 s..
알고리즘 - 프로젝트 1 - 레이튼 교수와 이상한 마을 135 유튜브를 보다가 오랜만에 레이튼 교수 시리즈를 다시 접하게 되었습니다. 모바일 버전이 있다는 걸 알게 되어 설치하고 플레이해봤는데, 마지막 문제가 정말 인상 깊었어요. 블럭을 움직여 빨간 사각형을 밖으로 빼내는 문제였습니다. 이건 누가 봐도 코딩으로 해결을 하라는 거죠. 바로 visual studio를 켜줍니다.알고리즘각 판의 상태를 정점으로, 한 상태에서 다른 상태로 이동할 수 있을 때 간선으로 연결을 해 주면 그래프가 만들어 집니다. 그럼 다익스트라나 BFS를 통해서 이 문제를 해결할 수 있습니다.정점빈 칸도 블럭이라 생각을 하고 각 블럭의 좌측 상단에 번호를 매깁니다. 빈칸은 0, 초록색은 1, 파란색은 2, 보라색은 3, 빨간색은 4로 번호를 매겨줍니다. 왼쪽 위부터 오른쪽으로 쭉 가면서 숫자를 ..
react - 소스 코드로 페이지 전환 헤더의 우측 상단에 로그인 탭이 있는 경우가 있습니다. 해당 탭을 누르면 로그인 창으로 이동합니다. 해당 기능을 구현해 봅시다.Nav  디자인우선 nav탭을 디자인해 봅시다. Navbar.Text : nav창의 우측 상단에 보여줍니다. text라고 되어 있지만 안에 넣은게 버튼이여도 됩니다.Button : 예쁜 버튼입니다. 그냥 버튼이 아니라 예쁜 버튼입니다.onClick={move} : 클릭 시 move함수를 호출합니다.variant="primary" : 예쁜 파란 버튼을 보여줍니다. 이렇게 하면 화면이 큰 상태에서는 이렇게 보이고 줄어들면  이렇게 보입니다. 오른쪽 위 버튼을 누르면 창이 열리면서 버튼도 함께 보입니다.탭 이동탭은 useNavigate를 이용해서 이동할 수 있습니다. onClick을 ..
webgoat Crypto Basics 인코딩과 디코딩은 보안에서 정말 중요한 요소입니다. 반대로 이걸 뚫을 수 있다면 많은 정보를 얻을 수 있습니다.base64첫번째 문제는 base64에 대한 것입니다. 문제에 있는 d2ViZ29hdDpwYXNzd29yZA==를 복호화하면 됩니다. burp suite에서는 암호화, 복호화 기능도 지원해 줍니다. 이 기능을 이용해 해결할 것입니다. 오른쪽의 decode as를 base64로 바꾸고 문제에 있는 문자열을 입력하면 해답이 나옵니다. xor encoding다음은 xor인코딩 관련 문제입니다. 아쉽게도 burp suite에는 xor 인코딩 기능이 없습니다. 그러니 다른 사이트에서 알아봅시다.https://gchq.github.io/CyberChef/ 에서는 다양한 인코딩, 디코딩 기능을 제공해 줍니다..
spring boot - 메일 전송 이메일 인증을 통해서 회원 가입을 하는 경우 서버에서 메일을 보낼 수 있어야 합니다. 계정 설정구글 계정 - 보안으로 이동합니다. 그리고 2단계 인증을 해줍니다. 이제 앱 비밀번호를 설정해 주겠습니다. 앱 비밀번호로 가면 아래와 같이 나옵니다.  그럼 16개의 알파벳이 나옵니다. 구글은 이걸 따로 적어두지 않아도 된다고 하지만 이거 나중에 써야 하므로 적어둡니다. 이제 메일을 설정할 것입니다. gmail - 설정으로 갑니다. 전달 및 POP/IMAP로 가서 둘 다 사용으로 체크해 줍니다. 서버이제 서버 설정을 합니다. build.gradle에 다음 의존성을 넣어줍다. implementation 'org.springframework.boot:spring-boot-starter-mail' : 이메일을 보내기..
1314 - 동굴 탐험 step 1더보기$N+1$개의 비트로 이루어진 2진수를 생각합니다. $i$번째 비트가 0이면 i번째 사람이 왼쪽에 있다는 뜻이고 1이면 오른쪽에 있다는 뜻입니다. $N+1$번째 비트는 지도의 위치입니다. 0이면 지도가 왼쪽, 1이면 오른쪽에 있다는 뜻입니다.step 2더보기$N$개의 비트로 이루어진 또 다른 2진수를 생각합니다. 자신에 해당하는 비트가 1인 사람들이 함께 움직입니다. $1010_{(2)}$면 2, 4번 사람이 함께 움직입니다.믿을 수 있는 사람이 없다거나 무게가 넘어서 건널 수 없는 경우가 있습니다. 1부터 $2^N-1$까지 모든 경우에 대해 이동이 되는지 안되는지 구해 둡니다.step 3더보기처음 생각한 $N+1$개의 비트로 이루어진 2진수를 정점으로 생각합니다. 이동이 가능한지, 그때..
[논문 리뷰] NEfficientNet: Rethinking Model Scaling for Convolutional Neural Networks (EfficientNet) ConvNet을 사용하는 네트워크들은 네트워크의 폭, 깊이, 해상도를 잘 바꾸면 모델의 성능이 향상된다고 합니다. 그럼 가장 성능이 좋은 값을 인공지능이 찾도록 하면 되지 않을까요? 이 논문은 여러 파라미터들을 잘 찾아주는 인공지능에 대한 것입니다.  접근법우선 문제에 대한 정의를 해 봅시다. i번째 Conv레이어는 다음과 같이 정의됩니다. $Y_i=F_i(X_i)$ $Y_i$는 출력 텐서, $F_i$는 연산, $X_i$는 입력 텐서입니다.입력 텐서는 (H_i, W_i, C_i)로 표현되는데 $H_i$는 너비, $W_i$는 높이, $C_i$는 채널 수입니다. ConvNet $N$은 $F_k\odot F_{k-1}\odot... F_1(X_1) = \bigodot_{j=1... k} F_j(X_1)$로 표..
웹 개발 - 프로젝트 2 - 6. streak lover 로그인 유저가 여러 명 있다고 가정하고 로그인 기능을 개발할 것입니다.우선 데이터베이스와 백엔드를 연결해 주고 유저 정보를 담는 간단한 db를 만들었습니다. 로그인은 쿠키, 세션, 토큰 등 다양하게 있지만 저는 세션 인증을 이용해 로그인을 구현할 것입니다. 보통 다음 과정으로 이루어집니다.유저가 로그인을 합니다.서버에서 세션 ID를 발급합니다.클라이언트에서는 해당 정보를 쿠키에 저장합니다.다음에 요청할 때 쿠키에 저장된 정보를 같이 보냅니다. 이를 통해 이미 로그인한 유저임을 알 수 있습니다.백엔드부터 한번 진행해 보겠습니다.백엔드우선 아이디, 패스워드를 가져오면 해당 정보를 찾는 것까지 진행했습니다. 그럼 쿠키에 저장하는 것이 남았네요. 요청할 때 HttpSession을 가져오도록 합니다. 그리고 유저 정보가..
react - 페이지 전환 페이지가 하나만 있는 홈페이지는 거의 없습니다. router를 이용해 여러 페이지를 컨트롤 해 봅시다.npm i react-router-dom 를 이용해 router를 하게 해주는 패키지를 설치합니다. index.js로 가서 App를 BrowserRouter로 감싸줍니다. 이제 페이지를 2개 만듭니다. 저는 login과 streak 페이지 2개를 만들었습니다. app.js에서 Routes와 Route를 추가해 줍니다. path에 경로를 넣어주고 element에는 컴포넌트를 넣어주면 됩니다. 이제 url에 /login을 하면 login에서 만든 페이지나 나옵니다.