목록분류 전체보기 (257)
Joonas' Note

아래 글에서 이어지는 내용입니다. [FastAPI + React] 소셜 로그인 구현하기 - 기본 환경 구축 들어가기 전에 React는 CRA(Create React App)를 통해 생성한 어플리케이션을 사용하며, 여기서는 5.0.1 버전을 사용했다. 나머지 모듈들은 package.json에서 확인할 수 있다. FastAPI는 0.83.0 버전을 사용했고,. blog.joonas.io 이 글의 목표 Backend는 FastAPI users를 사용해서 라우팅까지 전부 간단하게 구현이 끝났다. 그럼 API에서 생성된 유저 관련 라우터들을, 아래와 같이 React에서 사용할 수 있도록 연동해보자. 전체 내용 앞으로 구현할 내용은 간단하다. 리액트에서 폼을 만들어서, 백엔드의 로그인 엔드포인트로 요청하면, 받은 ..

들어가기 전에 React는 CRA(Create React App)를 통해 생성한 어플리케이션을 사용하며, 여기서는 5.0.1 버전을 사용했다. 나머지 모듈들은 package.json에서 확인할 수 있다. FastAPI는 0.83.0 버전을 사용했고, 그 외에 필요한 패키지들과 버전은 requirements.txt에 적혀있다. 이 글에서는 백엔드로는 RESTful한 API 서버를 FastAPI로 구축하고, 프론트는 React를 별도로 실행한다. 두 프레임워크 모두 기본적인 내용만 다루어도 글이 너무 길어지므로, 각 프레임워크의 기본 예제를 모두 사용했다는 것을 가정하고 글을 작성할 예정이다. React 한국어 튜토리얼 - https://ko.reactjs.org/tutorial/tutorial.html F..

--orphan 옵션으로 체크아웃하면, 이전 히스토리가 아예 없는 새로운 브랜치가 만들어진다. git checkout --orphan brand-new-branch 위 커맨드를 실행하면 brand-new-branch라는 이름으로 새로운 브랜치가 생기는데, 이전 히스토리가 없다. 이대로 커밋을 하나 쌓아보면 이렇게 된다. 참고 How to create a new (and empty!) "root" branch? I would like to define a new "root" branch in this git repository. By "root" branch I mean a branch that is entirely independent of all the other branches in the repos..

JUnit5에서는 4가지 Lifecycle 관리 annoation을 제공한다. JUnit4에서도 있었지만 이름이 바뀌었다. @BeforeAll - (JUnit4 @BeforeClass) @BeforeEach - (JUnit4 @Before) @AfterAll - (JUnit4 @AfterClass) @AfterEach - (JUnit4 @After) Lifecycle 관리 단위를 클래스마다로 바꿀 수 있는데, 호출 순서가 조금 바뀐다. 클래스 인스턴스가 생성되고 호출되므로, @BeforeAll과 @AfterAll은 더 이상 static 함수가 아니어도 된다. 실제 코드는 아래와 같다. HTML 삽입 미리보기할 수 없는 소스 출력이나 클래스 내부 변수의 상태를 확인해보면, 상태가 다른 것을 확인할 수 있다.

설명 이미지들의 평균 픽셀값을 확인하고 싶은 경우에 사용하면 된다. 오래 걸리는 경우에 로딩을 표시하려고 tqdm을 사용했는데 그냥 빼도 된다. 이미지의 픽셀값을 전부 다 저장하고 평균을 출력하다간 메모리가 터진다. 그래서 Moving average로 해결했다. 코드 HTML 삽입 미리보기할 수 없는 소스 결과 아래와 같이 1,000장 정도 되는 얼굴 사진을 모두 겹쳐서 그려볼 수 있다.

(이전글 작성 중) 논문: https://arxiv.org/pdf/1703.10593.pdf 논문 저자 PyTorch 구현체: https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix/ CycleGAN Image-to-Image Translation에 대한 논문 중 pix2pix를 기반으로 나온 이후의 논문이다. (pix2pix는 작성중) 그러다보니, Discriminator는 PatchGAN을 쓰고, Generator로는 LSGAN을 사용하고 있다고 한다. pix2pix는 데이터 셋에서 변환하려는 두 이미지 쌍을 pair하게 가지고 있어야했지만, CycleGAN에서는 unpair한 데이터 셋 A, B를 주어도 잘 변환하는 점이 특징이다. 즉, 실제 사진을 모네..

예전에 블로그 스킨을 수정한 적이 있다. 블로그 스킨 수정 반응형이면서 심플했던 티스토리 기본형 #2를 사용하고 있었다. 오랫동안 사용했는데, 갑자기 몇 가지 고치고 싶은 부분이 생겼다. 왼쪽에 블로그 제목이 너무 큰 부분을 차지하고 있어서, 글에 blog.joonas.io Version 1.4 - 2023/06/03 - 다크 모드 지원 (오른쪽 상단 스위치로 수동 설정 또는 시스템 설정을 통해 자동으로 반영) Version 1.3 - 2023/01/29 - 글 목록에서도 목차(TOC) 생성을 시도하는 오류 수정 - 코드 블럭에 대한 CSS를 아래와 같이 수정 Version 1.2 - 2023/01/03 grid layout으로 인한 레이아웃 깨지는 버그 수정 Version 1.1 - 2022/06/18..

이전 글 - [딥러닝 일지] WGAN (Wasserstein GAN) WGAN-GP 논문: https://arxiv.org/abs/1704.00028 앞선 WGAN에서 애매하게 넘어간 것이 있다. 바로 weight clipping 이다. 얼마만큼의 weight로 clipping을 제한할 것인가는 매직 넘버였다. 논문에서는 [-0.01, 0.01]을 사용했지만, 대부분의 가중치들이 양쪽 끝에 걸린 것을 볼 수 있다. Gradient penalty는 weight clipping처럼 한 쪽으로 몰려있지 않고 가중치가 고르게 퍼져있다. 변경 사항으로는, loss function을 gradient penalty를 계산해서 새로 정의한 것과, 판별자 모델에서 배치 정규화(Batch normalization) 층이 ..