728x90
반응형

전체 글 88

[우아한 테크코스 6기 - 프리코스] 1주차 회고

Overview 우아한 테크코스 6기 백엔드에 지원하게 되었다. 이번 6기는 서류를 지원하기만 하면 4주간 진행되는 프리코스에 참여할 기회를 얻게 된다. 기존에는 프리코스만 가볍게 체험해볼 생각으로 원서를 썼으나, 내게 필요한 교육과정이라는 생각이 들어 지원서도 열심히 적고, 프리코스에 임하고 있다. 본 포스팅에서는 1주차 미션 숫자 야구를 수행하는 과정과 회고를 다룬다. Github Link 미션 수행 절차 첫 주차 미션인만큼 메일과 과제 명세서를 자세히 읽어보았다. fork, git clone을 받은 후에 트러블 슈팅을 해주었다. 요구사항 분석 먼저 전체적인 flow를 작성하였다. 그리고 구현할 기능 목록을 작성했다. 0. 들어가며 처음에 숫자야구라는 주제를 보고, 친숙한 게임이기도 하고, 규칙을 모..

Git CRLF

Overview Git clone시 OS간 차이에서 발생하는 빌드 문제를 해결하는 방법을 다룬다. Issue 평범하게 자바 소스코드를 Git clone 받았다. 그리고, 정상적으로 실행이 되는지 $ ./gradlew clean test를 진행했다. 하지만 아래와 같은 오류를 만날 수 있었다. zsh: ./gradlew: bad interpreter: /bin/sh^M: no such file or directory 처음에는 단순한 오류인줄 알고, 늘 그렇듯이 로그를 바탕으로 구글링을 했다. 정보를 찾아본 결과, OS간 개행문자를 처리하는 방식이 달라서 gradlew 파일이 git clone시 변화됐음을 확인할 수 있었다. remote 파일 #!/bin/sh # # Copyright © 2015-2021 ..

Trouble Shooting 2023.10.22

docker image push to github

Intro 생성해놓은 docker image를 github package에 push하고, 이를 공유하는 방법에 대해 다룬다. Generate Token Github Settings > Developer Settings > Personal Access Token(Classic) 여기서 새로운 토큰을 만들어준다. Generate new token 원하는 이름과, repo, packages 권한을 체크한다. 그러고 완료하면 token이 생성되는데, 복사 해준다. 한번 노출되고 다시는 노출되지 않으므로 재사용할 것이라면 어딘가에 저장해두자. Docker login 생성한 토큰을 이용하여 도커에 깃허브 아이디로 로그인할 것이다. $ docker login ghcr.io -u 깃허브아이디도커 컨테이너 레지스트리 서..

Dev/Docker 2023.10.18

fastapi 배포 w/ docker

Intro 본 포스팅에서는 fastapi로 구축한 back-end server를 docker image를 통해 배포하는 방법에 대해 다룬다. Configuration Lang : python 3.11.4 Framwork : Fastapi Dir Structure 프로젝트는 python의 내장모듈인 venv를 이용하여 구축했으며, 대략적으로 아래와 같은 디렉토리 구조를 가진다. - bin - lib - src - api - database - schema - service main.py requirements requirements.txt 파일을 루트 디렉터리 (/src)에 위치시켜, 파일 빌드 시 필요한 의존성을 추가한다. uvicorn fastapi Dockerfile Dockerfile을 통해 doc..

Dev/Docker 2023.10.18

공개키 암호 시스템(1)

공개키 암호 개요 기존 대칭키 암호의 한계 기존 대칭키 암호 체계에서는 1:1 통신 마다 키가 필요하다 즉, n명 통신시에는 $\frac{n(n-1)}{2}$ 개의 키가 필요하다. 통신을 위해 항상 키를 가지고 있어야 한다. 키가 많아지면 오버헤드가 발생한다. Solution : 공개키 (비대칭키) 암호 시스템 공개키 (비대칭키) 암호 시스템 Diffie, Hellman은 1976년 발표된 논문 *"New Directions in Cryptography"* 에서 공개키 암호 시스템을 소개한다. 각 사람마다 한 쌍의 키를 보유한다. (공개키 pubkey, 개인키 secret(private) key) 공개키는 모두에게 공개되고, 개인키는 비밀로 보관한다. 공개키를 안다고 해서 이를 통해 개인키를 유추하는 것..

Security 2023.10.09

Ch04. DATABASE Design & AWS RDS Settings Practice

Ch04. DATABASE Design & AWS RDS Settings Overview AWS RDS를 통해 데이터베이스를 만든다. Datagrip을 이용하여 외부 접속한다. Create New Subnet 저번 포스팅에서 만들었던 subnet외에 새로운 subnet을 생성하여 RDS를 배치할 것이다. 기존에 만든 VPC에 새로운 subnet을 생성하자. 기존 VPC를 선택한다. 이름은 tete-subnet2로 지정해주었고, 필요한 값들을 할당한다. 추후에 생성할 서브넷 그룹을 대비해서 이미 생성해둔 서브넷의 가용영역과 다른 가용영역을 선택해준다. 생성한 subnet을 외부에서 접속 가능한 public subnet으로 만들기 위해 외부와 연결된 라우팅 테이블과 매핑한다. 서브넷 연결 편집을 클릭한다. ..

Activities/UMC 5th 2023.10.08

프록시 캐시와 캐시 무효화

Intro 본 포스팅에서는 프록시 캐시와 캐시 무효화에 대해 다룬다. 프록시 캐시 원(origin) 서버에 직접 접근 원 서버에 클라이언트가 직접 접근하여 리소스를 받게 되면 병목현상이 일어날 수 있다. 프록시 캐시 도입 첫 번째 요청 첫 번째 요청에는 프록시 서버를 거쳐서 원 서버로 요청이 가게 된다. 첫 요청에는 프록시 서버에 리소스가 없으므로 당연한 결과이다. 그리고 원 서버로부터 응답이 오게 되면, 캐시 서버는 이를 캐시로 저장한다. 두 번째 요청 두 번째 요청 시에는 프록시 캐시 서버가 클라이언트들에게 응답을 함으로서 더 빠른 속도로 응답할 수 있다. 이렇게 프록시 캐시 서버에서 저장할 수 있는 캐시를 public 캐시라고 한다. 반면에 클라이언트가 보유하고 있는 캐시는 private 캐시이다...

CS/Network 2023.10.07

검증 헤더와 조건부 요청2

Intro 본 포스팅에서는 검증 헤더와 조건부 요청에 대해 다룬다. 검증 헤더와 조건부 요청이란? 검증 헤더 캐시 데이터와 서버 데이터가 같은지 검증하는 데이터 Last-Modified , ETag 조건부 요청 헤더 검증 헤더로 조건에 따른 분기 If-Modified-Since: Last-Modified 사용 If-None-Match: ETag 사용 조건이 만족하면 200 OK 조건이 만족하지 않으면 304 Not Modified 예시 If-Modified-Since: 이후에 데이터가 수정되었으면? 데이터 미변경 예시 캐시: 2020년 11월 10일 10:00:00 vs 서버: 2020년 11월 10일 10:00:00 304 Not Modified, 헤더 데이터만 전송(BODY 미포함) 전송 용량 0.1..

CS/Network 2023.10.07

검증 헤더와 조건부 요청1

Intro 본 포스팅에서는 검증 헤더와 조건부 요청에 대해 다룬다. 캐시 시간 초과 캐시 유효 시간이 초과해서 서버에 다시 리소스를 요청하면 다음 두 가지 상황이 나타난다. 서버에서 기존 데이터를 변경하지 않은 경우 서버에서 기존 데이터를 변경한 경우 서버에서 데이터를 변경하지 않은 경우 그렇다면, 데이터를 전송해서 새로 받는 대신에 저장해 두었던 캐시를 재사용 할 수 있다. 단, 클라이언트의 데이터와 서버의 데이터가 같다는 사실을 확인할 수 있는 식별자가 필요할 것이다. 첫 번째 요청 첫 번째 요청을 받은 서버는 클라이언트에게 리소스를 보낸다. 이 때, Last-Modified라는 필드에 날짜 값을 넣어서 보내게 된다. 이 값을 통해 해당 리소스의 최종 수정일을 알 수 있다. 웹 브라우저는 수신한 리소..

CS/Network 2023.10.07

캐시 기본 동작

Intro 본 포스팅에서는 캐시 기본 동작에 대해 다룬다. 캐시의 필요성 클라이언트는 웹 서버에 다양한 리소스를 요청하고, 이를 요청하는 클라이언트는 다수이다. 이 때 캐시가 있는 상황과 없는 상황을 가정하고 캐시가 필요한 이유에 대해 학습할 수 있다. 캐시가 없을 때 첫 번째 요청 캐시가 없는 상황에서, 클라이언트가 star.jpg라는 이미지 파일을 서버에 요청해서 받아오는 상황이다. 서버가 클라이언트로부터 GET요청을 받고 이미지 리소스를 돌려주는데 이 때 데이터의 크기는 1.1M로, 헤더 0.1M과 이미지 파일 본체인 바디는 1.0M로 이루어져있다. 두 번째 요청 클라이언트로부터 몇번의 요청이 오든 서버에서는 같은 1.1M 크기의 파일을 전송한다. 데이터가 변경되지 않아도 계속 네트워크를 통해 데이..

CS/Network 2023.10.07
728x90
반응형