전체 글
CORS(x-csrf-token 헤더 허용)
프론트단에서 API 호출을 하는데 GET요청은 아무런 문제가 없으나 POST에서만 CORS에러가 발생하였다. 발생한 에러는 아래와 같다. cess to XMLHttpRequest at 'http://localhost:8080/api/v1/board' from origin 'http://localhost:3000' has been blocked by CORS policy: Request header field x-csrf-token is not allowed by Access-Control-Allow-Headers in preflight response. 글자그대로 x-csrf token 헤더를 허용하지 않아서 발생한 에러였다. 사용하는 서버에서 x-csrf를 허용해주면 해결된다. 난 스프링에서 Filte..
세그멘테이션모델 인퍼런스결과를 원본과 합치기
컴퓨터비전 중 Segmentation태스크와 관련한 프로젝트를 진행하다 마주친 문제 중 하나를 작성해보려고 한다. 미리 말하자면 세그멘테이션 모델의 인퍼런스 결과인 마스크 사진과 원본을 합성하는 내용을 다룬다. 케글이나 데이콘같은 Competition이야 이미지 분류의 경우 f1 score, 세그멘테이션 같은 경우 mIoU같은 metric을 평가지표로 모델의 성능을 평가하는데 초점을 두지만 실제로 AI를 활용한 서비스에서는 모델 인퍼런스의 결과를 활용하는 것도 중요하다. 이미지분류같은 경우 다른 테스크에 비해 간단해 초보자도 조금만 찾아보면 쉽게 실제 서비스에 적용할 수 있으나 Object Detection, Segmentation같은 경우 초보자가 인퍼런스 결과를 활용하기가 쉽지 않다. 글쓴이의 경우 ..
[BOJ,백준][파이썬] 16918, 봄버맨
문제링크 ✨IDEA N이 작기에 매초마다 모든 maps(graph)를 보면서 폭탄을 터뜨리거나 폭탄을 설치하면 된다 폭탄이 새로설치되면 그 위치는 3으로 표시하고 폭탄이 존재하지 않는 위치는 -1로 표시한다 init() : 시작시 폭탄이 설치되어있는 위치를 3초라는 의미에서 3으로 변경, 폭탄이 없는 자리는 -1 is_in(r, c) : 폭탄을 터트릴 때 maps(graph) 밖으로 나가는 것을 체크하는 함수 insert_bomb(R, C) : 폭탄이 설치되어있지 않은 위치(-1)이면 새롭게 폭탄을 설치(3) bomb() : 맵 전체를 탐색해 폭탄이 있는 위치를 검색하고 폭탄을 터뜨림 deal_time() : 일초가 지날 때마다 맵에 기재된 시간을 갱신 CODE import sys from collect..
파이썬 환경변수 설정으로 보안관리하기
프로그래밍을 할 때 DB정보, AWS정보, 계정정보 등과 관련된 사항은 코드에 노출되거나 github같은 곳에 올라가면 보안적 측면에서 위험하다, 환경변수 설정으로 해당 내용들을 코드에 노출되지 않게 설정해보자 이를 python-dotenv라이브러리를 사용함으로써 관리할 수 있다 설치 pip install python-dotenv 사용법 실행할 프로젝트 디렉토리 내에 .env 파일을 생성한다 환경변수로 설정할 키워드를 작성한다 ex) aws_secret_key=엑세스키지롱 문자열의 경우에도 ""가 필요하지 않다 불러올 .py파일에서 from dotenv import load_dotenv 로 라이브러리를 불러온 후 아래와같이 os.getenv("불러올 환경변수 이름") 으로 불러온다 이렇게 열심히 중요정보..
파이썬 도커 이미지 선택
파이썬 서버를 띄우기 위해 Alpine이미지를 선택했다가 어마무시한 속도에 경악해서 찾아본 내용들이다. 보통 이미지를 선탁할 때 가벼운 Alpine 리눅스 로커 이미지를 선택한다. (=> 다른 리눅스 배포판과 비교해 사이즈가 작음) 그러나 파이썬에서 `Alpine`을 선택하게 되면 무시무시한 속도에 경악을한다 PyPI(파이썬 패키지 인덱스, 파이썬 패키지 저장소)에 있는 파이썬 라이브러리들은 wheel포맷을 사용하나 Alpine 리눅스는 wheel을 지원하지 않는다. 따라서 소스코드(.tar.gz)를 내려 받아 컴파일을 하기 때문에 속도가 느리다 따라서 Apline 이미지를 사용하면 모든 python 패키지의 모든 C코드를 컴파일 해야한다 아래는 이미지 별 빌드 속도이다. 참고 및 출처 Using Alp..
우분투에 mysql 설치하기
도커와 마찬가지로 적어둔 메뉴얼이 박살나서 작성하는 설치 명령어 Update Server & install mysql $ sudo apt update $ sudo apt install mysql-server root 계정 접속 sudo mysql -u root -p Create ID CREATE USER 'ID'@'host' IDENTIFIED WITH mysql_native_password by 'password'; ex) CREATE USER 'hero'@'%' IDENTIFIED WITH mysql_native_password by '1201'; 변경 사항 적용 FLUSH PRIVILEGES; DB 생성 create database [DB NAME]; ex) create database hero_d..
우분투에 도커 설치하기
따로 저장해두었던 메뉴얼이 포팅이 박살나고 잘 안되서 그냥 작성해두는 우분투에 도커 설치하는 명령어들 내용은 공식문서와 동일하다 공식 Docs Uninstall old versions $ sudo apt-get remove docker docker-engine docker.io containerd runc 저장소 설정 $ sudo apt-get update $ sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release 도커 공식 GPG 키 추가 $ sudo mkdir -m 0755 -p /etc/apt/keyrings $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg -..
(운영체제, OS)단편화와 단편화 해결법
단편화(Fragmentation)란 ? 기억장치의 빈공간이 여러개의 조각으로 나뉘는 현상 이는 기억장치의 사용 가능한 공간을 줄이거나, 읽기/쓰기의 수행속도를 늦춤 내부 단편화 메모리를 할당 할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 메모리 공간이 낭비되는 현상 외부 단편화 메모리가 할당 및 해제 작업의 반복으로 메모리 중간중간에 사용하지 않는 메모리가 생기고 이를 합쳤을 때는 메모리가 충분하지만 실제로는 할당할 수 없는 상황 단편화 해결방법 통합기법 단편화로 인해 분산된 메모리공간들을 인접해 있는 것들끼리 통합 시킴(재배치 필요x) 외부단편화 해결법 - 압축 주기억장치에 분산되어 있는 단편화된 공간들을 통합하여 하나의 공간으로 만듦(재배치 필요) 비용이 많이 들어 자주쓰지 않고 정해진 ..