전체 글 54

[AWS] AWS 계정 생성 시 해야할 일

신규 AWS 계정을 생성하는 경우 계정의 용도를 떠나 무조건 해야하는 일들이 3가지가 있다. 보안과 내 호주머니속의 작고 소중한 돈을 지키기 위해서..! 1. Admin 계정 생성하기 IAM으로 이동해서, Root 권한을 가진 유저가 아닌 Admin 권한을 가진 계정을 생성한다. Root 계정을 사용하다가 Root 권한을 가진 유저가 탈취될 경우 그 계정은 더 이상 사용하지 못하는 상황이 발생하기 때문에 당신의 비즈니스가 한 순간에 무너지는 리스크를 지게 된다. 그러므로 꼭 Admin 권한을 가진 계정을 신규 생성하여 사용하자. IAM 서비스로 이동해서 사용자 그룹으로 이동한 후 사용자를 생성한다. 사용자를 생성하기 위한 여러 정보를 입력해주고 그룹 생성을 누른 뒤 AdministratorAccess ..

개발/개발꿀팁 2023.12.21

Linux screen

리눅스에서 긴 백그라운드 작업을 실행하는게 귀찮을 때가 있다. 리눅스에서 작업을 하다보면, 아주 큰 파일을 복사하거나 배치작업을 수행하거나 등등 시간이 오래 걸리는 작업을 수행하는 경우가 있다. 이런 경우에, 네트워크 문제가 발생하여 세션 연결이 끊기거나 작업중인 것을 깜빡하고 터미널을 닫는 경우 아주 곤란해지곤 한다. 물론 nohub이라는 아주 좋은 프로세스를 백그라운드로 실행하는 방법이 있다. 하지만 nohub도 몇가지 불편한 점이 있는데. 1. nohub의 경우 프로세스 자체가 백그라운드로 돌기 때문에 프로세스의 표준 출력이나 표준 에러를 잘 기록하도록 설정해주어야 한다. 2. 작업을 중단하려는 경우 프로세스를 죽여야한다. 프로세스를 죽이는 명령어를 자주 까먹곤 한다. 3. 작업의 중간에 입력을 ..

개발/Linux 2023.12.14

[AWS] Elasticbeanstalk 소스코드 위치

소스코드 위치 : /var/app/current AWS Elasticbeanstalk을 사용할 때, 빌드는 성공해서 소스코드는 배포가 되었는데 자꾸 502 에러가 발생하는 경우가 있다. 502 에러를 만나는 경우 대부분의 경우에 elasticbeanstalk에 의해 생성된 ec2 인스턴스에서 웹서버가 동작중이지 않은 경우가 많다. 그렇다면 왜 서버가 동작중이지 않을까? 뭐 여러가지 이유가 있겠지만 내가 겪었던 문제는 1. 권한이 없어 로그를 저장하는 폴더를 생성하지 못하고 죽는다. 2. 시작 명령어가 잘못되서 /src/main.js를 실행해야하는데 /main.js만 주구장창 실행중이다. 3. 80포트를 점유하지 못하고 죽는다. 등등이 있었다. 이 문제는 직접 인스턴스에 접속해서 서버를 실행해보면 쉽게 파..

개발/개발꿀팁 2023.12.12

Q Learning과 DQN

목차 1. Q learning이란? 2. Q러닝을 이용한 미로찾기 3. Q러닝을 이용한 Cartpole 4. DQN을 이용한 Cartpole 1. Q learning이란? Q러닝이란? 모델이 없는 Model-Free상태에서 학습하는 강화학습으로 유한한 마르코프 결정과정(FMDP)에서 특정 Agent가 특정 상황에서 특정 행동을 할 수 있는 최적의 Policy를 배우는 것. 현재 상태로부터 시작해 모든 연속적인 단계들을 거쳤을 때 전체 보상의 예측값을 극대화하는 것을 목표로 한다. 특정 State에서 행하는 Action의 가치를 평가하고, 그 가치를 극대화 하는 쪽으로 행동하는 것이라고 볼 수 있겠습니다. 위 식에서 감마는 Discount Factor인데, 0~1사이로 현재로부터 멀리 떨어진 보상의 가치가..

개발 2023.12.09

mongodb 인스턴스 만들기

우분투 기준으로 설명 1. AWS EC2 인스턴스 생성 2. Data 디렉토리로 사용할 100 GB EBS 생성 3. EBS 인스턴스에 마운트 ubuntu@ip-10-0-160-31:~$ sudo file -s /dev/xvdc ubuntu@ip-10-0-160-31:~$ sudo mkfs -t xfs /dev/xvdc ubuntu@ip-10-0-160-31:~$ sudo mkdir /journal ubuntu@ip-10-0-160-31:~$ sudo mount /dev/xvdc /journal ubuntu@ip-10-0-160-31:~$ sudo file -s /dev/xvdc ubuntu@ip-10-0-160-31:~$ sudo lsblk -f 4. 인스턴스에 mongodb 다운로드 https://w..

Database/MongoDB 2023.12.07

Virtual Memory

Virtual Memory Virtual Memory란? Physical Memory와 Logical Memory를 구분해주는 것. Logical Memory가 Physical Memory보다 훨씬 더 크기 때문에 실행에 필요한 부분만 메모리에 적재한다. 프로세스간 주소공간을 공유할 수 있게 해준다. Physical Memory를 신경쓰지 않고 효율적인 프로세스를 생성할 수 있게 해준다. 다음과 방식을 통해서 Virtual Memory가 구현된다 Demand Paging Data전체가 아닌 하드디스크에서 Data를 필요한 순간에만 Memory로 가져오는 것. 필요할 때에만 가져오기 때문에 I/O 입출력이 줄어든다. 메모리를 효율적으로 사용할 수 있다. 응답시간이 빨라진다. 더 많은 사용자를 수용할 수 있..

Computer Science/OS 2023.12.05

8강. 연습문제

8.4 Compare the main memory organization schemes of contiguous memory allocation, pure segmentation, and pure paging with respect to the following issues: a. external fragmentation contiguous memory allocation : 큰 메모리공간을 연속으로 할당할 수 있는 자리에 연속적으로 큰 메모리공간을 할당하기 때문에 작은 메모리공간이 남을 수 있고 그렇게 external fragmentation이 발생하게 된다. pure segmentation : Segment 단위로 메모리를 연속으로 할당하기 때문에 작은 free memory가 생기는 external ..

Computer Science/OS 2023.12.05

Memory Management (2)

Page Table Structure Paging을 위해서는 Paging Table을 효율적으로 관리하는 방법이 필요하다. Hierarchical Paging 하나의 Page Table을 여러개의 계층적인 Page Table로 쪼개는 것. Two-level Page Table방식을 사용한다. Ex. 책의 목차. Two-Level Paging Table Example Logical Address가 32bit로 구성이 되고, 페이지가 4K크기일 때 page number는 20bit → 한 테이블에 100만개의 항이 있음. → 메모리로 올라올 때 공간을 많이 차지한다. → p1 = 10bit, p2 = 10bit로 쪼갬. page offset 은 12bit → 4K크기를 위해 12비트가 필요. (p,d) → ..

Computer Science/OS 2023.12.04