Always awake

2024.03.14 본문

개발일지

2024.03.14

죠. 2024. 3. 15. 00:01

개발

  • File을 받을때 URL에서 받는게 나을거같아서 수정
  • 그리고 계속 CORS에러가 뜨네. 안났던거같은데,,, 왜이러지? 일단 프론트를 cors예외로 추가는 해보았다.
  • 아니 백에서도 등록할때 내부ip가 아니라 localhost:5173처럼 등록을 해줘야하네? 당황스럽다. 같은 내부망에서는 localhost가 어디서든 먹히나?
  • 파일 올리는게 생각보다 일이구만. 실제 브라우저에서 돌리는건 또 다른 일이구나를 깨닫는중.
  • 아무튼 결국은 파일 잘 올라간다. 여러 파일 한번에도 올라가고, 이제 비동기 업로드까지 구현했다.
  • 기존에 쓰던 shutil 라이브러리의 copyfileobj는 비동기 지원이 안돼서, aiofiles 패키지를 다운받아 구현했다.
  • destination = f"../../SLAMdata/{project_id}/{randstr}_{filename}" async with aiofiles.open(destination, "wb") as dest: content = await upload_file.read() await dest.write(content)
  • 근데 filename을 ../../route/main.py처럼 조작해버리면.. 파일 경로 우회 공격이.. 가능할지도...... 이런미친... 파일 덮어써지니까 다 날라갈거아녀..
  • 다행히 그저 파일식별을 위해 달았던 randstr이 해당 공격을 조금 막아주었다. 뒤에 달았다면 그것도 그런대로 처참했을지도.
  • 하지만 혹시모르니까 filename에서 . / ;같은건 다른걸로 대체해버린 후 safefilename이라고 바꿔주었다.
  • LightSail Vs EC2
    • EC2는 사실상 DIY, 직접 만들면서 부족한부분은 알아서 추가되면서, 트래픽이든 데이터든 뭐든 이용한만큼 돈을 내는 방식
    • 그에 비해 Lightsail은 어느정도 만들어진 틀 안에서 CPU, RAM, HDD 다 이용하고, 대신 월정액으로 어느정도의 고정된 돈을 내는 방식
    • 확장성은 EC2가, 그냥 작은거 올려보기엔 Lightsail이 낫다고 할 수 있을거같다! 회사에서는 Ec2써야겠지만, 내 개인프로젝트는 라이트셰일로.
  • S3
  • 프로젝트의 라벨 이름들, 클래스들은 언제 만드는게 좋을까?
    • 일단 클래스 하나마다 이름, 설명등을 써야하니 프로젝트 생성 된 후 메인화면에서 만드는게 낫지 않을까?
    • 나중에 써보고 불편하면 바꾸자.
  • DL
    • 출력부를 쪼개면? 혹시 정답률이 올라갈까?

알고리즘

  • 그래프
    • https://boj.kr/9576 책 나눠주기 (G2)
      • 그리디도 될거같긴한데 숫자 크기도 그렇고 보자마자 이분매칭 생각나니까 이분매칭 때리기
      • 말곤 별거없다
    • https://boj.kr/1867 돌멩이 제거 (P3)
      • 돌 하나는 가로달리기 or 세로달리기로 제거될 수 있다.
      • 결국 N*N의 격자판에서 가로달리기 N개와 세로달리기 N개가 연결된 간선이 있고, 이 간선은 돌멩이 하나를 의미한다.
      • 최소한의 정점(달리기)를 선택해서 모든 간선(돌멩이)를 제거해야한다
      • -> 최소 버텍스 커버!
      • 쾨닉의 정리에 의해, 이분 그래프에서의 경우 이는 최대 매칭의 개수와 같음이 알려져있다.
      • 따라서 이분매칭만 잘 만들고 식세우면 끝
  • 세그트리
    • https://boj.kr/22876 츠바메가에시 (P4)
      • 예전에 신촌지역 알고리즘 캠프 랜덤디펜스때 나왔던 문제,. 이제 다시 풀어봤다
      • 구현량이 꽤나 많지만 일단 핵심은 최댓값 2개 가지고있는 세그 만들기
      • 거의 처음으로 C++로 세그트리 구현한거같다! 잘 돼서 기쁘다. pair<int, int>로 하면 그냥 편하게 할수있구나. 파이썬이었으면 차원추가된다고 메모리 엄청먹었겟지..
      • 사람들 풀이를 보니 multiset?을 쓰네. 이걸 쓰면 훨씬 쉽다고? 감이 안오네.. 공부해봐야겠다.

보안

  • FTZ
    • FTZ라는걸 추천하더라 (https://www.youtube.com/watch?v=q3zeTVW3PPs&t=41s)
    • 한번 해봐야겠음.
    • Trainer1 : ls (-a, -l)
    • Trainer2 : pwd, cd, mkdir, rmdir, cp, mv등 기초적인 파일/디렉토리 움직임
    • Trainer3
      • w : 서버 접속자 보기 : TTY는 콘솔, pst는 터미널 접속
      • finger -l 사용자 자세히 보기
      • tty 자신의 터미널 정보 확인
      • ifconfig 현재 접속 서버 ip 확인
    • Trainer4
      • /bin, /etc, /home 등 기본적으로 담긴 정보들 확인
      • /bin, /boot이 각각 리눅스 실행파일 / 부팅파일
      • /etc에 뭔가 되게 많다
        • /passwd, /shadow, /issue.net등..
      • /tmp 에 작업물들 자유롭게 올라가고
      • /home 이 우리가 보는 디렉토리.
    • Trainer5
      • $whoami, $id 등으로 현재 내 정보 보기
      • uname -a로 커널 정보 확인
      • cat /etc/*release 서버 OS버전확인
      • rpm -qa 패키지 정보
      • cat /proc/cpuinfo에 cpu정보

'개발일지' 카테고리의 다른 글

2024.03.13  (4) 2024.03.14