XSS (Cross Site Scripting)
·
미분류글
XSS (Cross Site Scripting) 흔한 보안 공격이다. 스크립트 태그 XSS 공격을 막는 방법 1. 입력 데이터 검증하기 방어할 수 있는 가장 단순한 방법은 스크립트 태그의 특수문자를 HTML Entity라는 것으로 치환하는 것이다. 서버와 클라이언트측에서 문자열 데이터 중 스크립트 문자를 로 replace 처리하면 된다는 것이다. 에에 <가 뭔데? HTML 문서에서는
하나의 Repo에 여러 Repo의 커밋기록 담기
·
미분류글
하나의 Repo에 여러 Repo의 커밋기록 담기 우테코에서 fork해서 진행한 여러 프로젝트가 있다. 잔디를 심기 위해 각 프로젝트(미션)을 하나의 개인 Repository에 넣어 폴더로 정리하고 싶었다. 아래 방법이 가장 직관적이고 마음에 든다. 방법 1. 일단 모든 것을 담아둘 Repository를 만들고 clone해온다. 2. 아래 명령을 수행한다. git subtree add --prefix=만들디렉토리명 저장소주소 브랜치명 // 예시 git subtree add --prefix=java-racingcar-6 https://github.com/yyeennyy/java-racingcar-6.git main 커밋로그 확인하기 woowa-precourse에서 subtree를 각각 add한 후의 그래프는..
[DB] 인덱스 사용 이유 이해하기
·
Database
Intro DB에 데이터 양이 많다면 쿼리 수행이 느리다. 쿼리의 성능을 높이기 위해 인덱스를 잘 활용하는 것이 좋다. "인덱스: DB 테이블 검색 성능을 높여주는 자료구조" . . ★ 참고로, 아래 영상의 도움을 크게 받아 정리했다. 강추한다. https://www.youtube.com/watch?v=iNvYsGKelYs INDEX란? 테이블 검색 성능을 높여주는 자료구조라고 했다. 어떤 자료구조길래? . . person 테이블에서 age가 25인 행을 찾고 싶다. 그렇다면 다음과 같은 select문이 익숙할 것이다. SELECT * FROM person WHERE age = 25 그런데 데이터가 막 10억개로 무지 많은 상황에서 모든 행을 다 뒤져 찾는다면, age = 25를 찾는 것이 무지 느리다...
이펙티브 자바
·
yyeeennyy
이펙티브 자바 남은 2023년은 자바 공부를 잘 해보려고 이펙티브 자바 Ebook을 구매했다. 한번 쭉 보면서 정리할 것이다. 갠적으로 정한 공부 순서 8장: 메서드 9장: 일반적인 프로그래밍 원칙 4장: 클래스와 인터페이스 10장: 예외 12장: 직렬화 2장: 객체 생성과 파괴 11장: 동시성 5장: 제네릭 6장: 열거 타입과 애너테이션 7장: 람다와 스트림 3장: 모든 객체의 공통 메서드 방향이나 목적의식이 없어도 무슨 일인가를 하면 어디론가 갈 수는 있다. 하지만 목적의식을 가지고 어딘가에 가는 경우라면, 반드시 가야 하는 그곳에 도달하기 위해 '해야만 하는' 행동이 따르기 마련이다. ─ the one thing, 187p
[운영체제] Process Control Block(PCB)
·
컴퓨터구조 & OS
Process Control Block(PCB) PCB는 프로세스의 모든 정보를 가지고 있다. OS가 프로세스 스케줄링을 위해 PCB의 정보를 사용한다. 즉 OS가 다른 프로세스로 전환할 때(Context switch), 처리되고있던 프로세스는 자신의 PCB에 작업 정보를 저장한다. 그러면 이 프로세스가 다음에 다시 CPU를 점유했을 때, 이전에 하던 작업을 이어서 처리할 수 있겠다. ∨ PCB의 생성과 제거 생성 참고: https://studyblog4244.tistory.com/109 [운영체제] 3-2. 프로세스 생성 이번에는 프로세스가 생성되는 과정에 대해서 자세히 다뤄보겠습니다. 프로세스가 생성되는 과정 프로세스가 생성되는 과정을 단계별로 알아보겠습니다. 우선 프로세스는 fork()라는 시스템 ..
[운영체제] 프로세스 상태도
·
컴퓨터구조 & OS
Intro 각 프로세스는 우리의 RAM에서 이런 구성으로 할당이 되어 돌아간다. * 참고(논외): 프로세스가 new상태일 때 값들이 세팅된다. 보조기억장치 내부에 Virtual Address Space(VAS, 가상 주소 공간)이 생성되는데, 거기에 이러한 값들을 준비둔다. 프로세스가 ready상태가 되기 전에 VAS의 값들을 메인메모리에 올린다. 매번 이렇게 RAM에서 활발히 돌아가고 있는 프로세스가 어떤 상태를 거쳐가며 실행되고 종료되는지! 즉 프로세스 상태도를 짚어볼 것이다. 프로세스 생성 프로세스 생성의 세가지 경우를 보자면... 1. OS가 생성 2. 현존하는 프로세스가 다른 프로세스를 생성 (부모 & 자식 프로세스) 3. 사용자 요청으로 생성 프로세스의 종료 프로세스는 정상 or 비정상종료 될..
졸업프로젝트 최우수상
·
yyeeennyy
가벼운 기록 글! 이번 2023년 9월 21일 전설의 목요일! 엔지니어링페어(공대축제)에서 최우수상을 탔다! (컴퓨터공학과 중 1등!) 지난 6월 23일 컴공/인공지능 창의축전때는 장려상이었다. 으으!!! 그때는 정말 살떨렸다ㅠㅂ ㅠ 지금 생각해보면 매번 역량 이상을 쏟아부었던 것 같다. 그렇게 한 학기를 (상당히 열심히) 졸프에 쏟았던 터라서 기대를 많이 했다. 그래서 장려상이 꽤나 아쉬웠다 (우수상 훼이크 사건도 한몫 함) 그렇지만 이당시 프로젝트의 단점은 분명했기에 장려상은 쉽게 납득이 되었다. 그리고 팀원들과 반성을 많이 했다. 대회가 끝나고 우리팀은 우리가 장려상인 이유 찾기, 한계점 파악, 방향 재설정에 최선을 다했다. 이번 엔페때는 크게 바라지 않고 그냥 열심히 발표하고 오자는 느낌이었다. ..
[운영체제] 프로세스 스케줄링: 멀티프로그래밍 vs 타임쉐어링
·
컴퓨터구조 & OS
멀티 태스킹 Task(작업)을 OS의 스케줄링 기법에 의해 번갈아 수행한다. 스케줄링은 여러 방식이 있다. 혼용해서 쓰긴 하지만, 하나씩의 개념을 간단히 알아보자. - 멀티프로그래밍 방식 - 타임쉐어링 방식 (시분할 방식) - 리얼타임 방식 (실시간 시스템 방식) 멀티 프로그래밍 하나의 CPU에 대하여 RAM에 여러 프로세스를 적재하는 것임. 멀티 태스킹을 구현하는 스케줄링의 방식 중 하나이다. 유니 프로그래밍은 입출력을 기다리는 시간들이 굉장히 낭비입니다. CPU연산이 끝나고 I/O연산이 진행될 때는 CPU가 쓰이질 않는데, I/O가 끝나길 대기하게 됩니다. 반면 멀티 프로그래밍은 효율적입니다. CPU가 쓰이지 않을 때 다른 프로세스에게 CPU연산을 넘겨줍니다. I/O 작업으로 넘어갈 때, 끝나길 하염..
[python] gpu(cuda) 프로세스 정리하기
·
컴퓨터구조 & OS
CUDA를 사용하는 프로세스 종료하기저희 flask 서버에서는 gpu를 사용하는 모델을 2개 돌립니다. - spleeter (mr제거) - cnn 분류기 spleeter 작업 후 cnn분류기가 연이어 있습니다. 문제는 spleeter가 끝나더라도 gpu 메모리가 곧장 내려가지는 않습니다. 정리해줘야 합니다. Out Of Memory가 잘 터지기 때문이죠! 그래서 gpu 정리 기능을 추가했습니다. gpu 점유 프로세스를 모두 정리하는 코드입니다. (의도치않은 gpu 프로세스가 종료되지 않는지 검토하고 사용해야 합니다.) (cpu 환경에서는 CudaAPIError가 터지기 때문에, 아무 것도 안하도록 예외처리했습니다.)from numba import cuda from numba.cuda.cudadrv.dev..
[Nvidia][Docker] 컨테이너에서 GPU 돌리기!
·
컴퓨터구조 & OS
아래는 시행착오 글입니다. https://splendidlolli.tistory.com/648 Linux gpu 세팅[2] | 기존 컨테이너에서 GPU 사용하도록 변경하기우리 서비스에서 각종 모델이 돌아가기 때문에 GPU가 있으면 좋다. (아니! 필요한 수준) 조교님께서 연구실 서버 + gpu를 사용할 수 있도록 해주셨다. (감사합니다) 어제는 GPU 세팅을 완료했다. 이splendidlolli.tistory.com gpu 세팅하기는 버전호환 문제가 있어 꽤나 까다롭습니다. tmi를 말하자면 저는 컨테이너에 GPU를 구동하기 위해 필요한 것들을 설치할 때마다 시간을 굉장히 (하루이틀 온종일) 소비했습니다. 그러나 몇달전 도전에서 실패, 몇주전에도 실패했습니다. 그리고 이번에 성공했습니다! 실패의 이유는 ..