일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- TCP
- 수학
- 크롤링
- ip
- HTTP
- 레벨 1
- 프로그래머스 레벨 2
- HTTP 완벽 가이드
- Crawling
- BFS
- Node.js
- dp
- type challenge
- 가천대
- dfs
- 그래프
- Nestjs
- 자바스크립트
- 쉬운 문제
- 알고리즘
- 타입 챌린지
- 백준
- 문자열
- javascript
- 프로그래머스
- Algorithm
- 타입스크립트
- typescript
- 소켓
- socket
- Today
- Total
목록프로그래밍 (478)
kakasoo
EC2란? EC2는 AWS에서 제공되는 가장 인기있는 서비스로, 하나의 서비스가 아니라 고수준에서 여러 서비스들을 포괄하는 단어이기도 하다. 가상 머신을 임대하는 것 외에도 데이터를 가상 드라이브 또는 EBS에 저장하거나, ELB로 부하를 분산, 오토 스케일링 그룹으로 서비스를 확장하는 것 모두가 EC2 서비스에 포함된다. EC2에서 가상머신을 임대할 때 선택사항 OS ( Linux, Windows, Mac OS )를 선택해야 하며, 나는 Amazon Linux 2를 사용한다. 컴퓨터 성능, 코어 수 ( = 프리티어로 t2.micro를 사용하기 때문에 코어는 1개 ) 램 (RAM, Random Access Memory) 의 크기를 선택해야 하며, 마찬가지로 프리티어에서는 1GiB이다. 스토리지의 크기 (..
결제 및 비용 관리 탭 예산 확인은 AWS 콘솔에서 우측 위 자신의 프로필을 누르고, [결제 및 비용관리] 탭을 누르면 확인할 수 있다. [과금 정보 및 비용 관리 홈]에서는 자기가 이번 달에 사용한 금액을 AWS 서비스 ( = 리소스 ) 별로 확인해볼 수 있다. 예시로 보여준 이미지는 IAM 사용자로 로그인하였기 때문에 권한이 없어 아무것도 나오지 않는데, 이럴 경우 Root에서 권한을 줘야 한다. IAM User가 예산을 확인할 수 있게 권한 주기 이번에는 Root 계정으로 로그인하여, 계정 프로필 탭에서 [계정]을 누른다. ( 예시 이미지에서는 여전히 IAM이지만 루트로 해야 한다 ) 계정 탭에 들어가서 스크롤을 하면 아래에 [결제 정보에 대한 IAM 사용자 및 역할 액세스] 라는 섹션이 존재한다...
자격 증명 보고서 ( = IAM Credentials Report ) 제목의 둘은 IAM 보안 도구로 묶이는 도구들인데, 도구라고 해서 거창한 것은 아니고 권한을 체크하는 버튼 두 개일 뿐이다. IAM 자격 증명 보고서 ( = IAM Credentials Report )는 계정 레벨에서 사용이 가능하며, 모든 사용자의 정보를 볼 수 있다. 보고서는 계정에 있는 사용자와 다양한 자격 증명의 상태를 포함하고 있는데, 여기에는 MFA 인증 여부 따위의 정보가 나온다. 이는 보안 관리자에게 어떤 사용자에게 주목해야 하는지 정보를 제공해준다. IAM 대시보드 좌측 사이드에서 자격 증명 보고서를 누르고, 보안 인증 보고서 다운로드 버튼을 누르면 CSV 형태로 볼 수 있다. 액세스 관리자 ( = IAM Access ..
IAM Role ( = 역할 ) Role은 사용자와 같지만 실제 사람이 사용하도록 만들어진 것이 아니고 AWS 서비스에 의해 사용되며, IAM 대시보드에서 사용할 수 있다. 아직 EC2에 대한 걸 배웠지만, 만약 EC2 인스턴스를 만든다면, EC2 인스턴스가 AWS에서 어떤 작업을 수행하길 원할 수도 있다. 이럴 때 EC2 내부 코드 상에 자격증명을 하는 대신 EC2에 필요로 하는 권한을 담아 IAM Role을 만들고 이를 하나의 개체로 묶을 수 있다. 이러면 EC2 인스턴스가 AWS 개체에 접근하고자 할 때 Role에 따라 접근할 수 있는 자원을 확인할 것이다. 일반적으로는 EC2 Instance Roles과 Lambda Function Roles이 존재하지만, 그 외에도 많은 서비스에 Role을 적용..
AWS 리소스에 접근하는 방법 AWS에는 3가지 접근 방법으로, 콘솔, CLI, AWS SDK가 있다. 콘솔은 대시보드 형태로 웹 상에서 직접 AWS 리소스를 다룰 때 사용하지만, CLI나 AWS SDK는 외부 환경에서 리소스를 다룰 수 있다. 따라서 CLI, AWS SDK는 권한 인증이 필수적인데, 이 때 액세스 키를 필요로 한다. ( 액세스 키는 절대 다른 사람에게 공유해선 안 된다. ) 액세스 키 아이디 ( Access Key ID ) 는 username과 같고 시크릿 액세스 키 ( = Secret Access Key ) 는 password와 같다. CLI는 AWS에서 제공하는 커맨드 라인 인터페이스로 쉘과 같은 환경에서 명령어로 AWS를 사용할 수 있게 해준다. SDK는 Software Devel..
IAM 사용자 보호 방법 2가지 사용자들은 계정에 접근 권한이 있고 구성을 변경하거나 리소스 삭제가 가능한 경우도 많다. 따라서 적어도 루트 계정만은 반드시 보호해야 하며, 전체 IAM 사용자도 보호하는 것이 좋다. 그룹과 사용자의 정보가 침해당하지 않게 보호하는 매커니즘은 2개가 있다. 비밀번호 정책 MFA의 사용 ( 다요소 인증 ) 비밀번호가 더 어려워지게 특정 유형 글자 사용을 강제하거나 비밀번호 최소 길이를 지정할 수 있다. 또 비밀번호를 수정할 수 없게 하거나, 90일마다 비밀번호를 만료시켜 변경하게 할 수도 있고, 이전에 사용한 것과 동일한 비밀번호를 사용하는 것을 막아 보안을 더 안전하게 유지할 수 있다. 이런 식으로 비밀번호 정책을 이용하면 계정에 대한 치명적인 공격을 막는 데에 도움이 된..
사용자, 사용자 그룹 ( Users, User Groups ) 에 대한 설명 Alice, Bob, Charles, David, Edward, Fred 6명의 사람들이 있다고 해보자. Alice, Bob, Charles는 Developer이고, David, Edward는 Operation팀에 속한다. 마지막으로 Fred는 어느 팀에도 속하지 않았다고 해보자. 이 때, 이 6명의 사람들을 각각 User ( = 사용자 ) 라고 하고, 정의된 3개의 그룹을 User Group ( = 사용자 그룹 ) 라고 정의한다. 사용자들은 자신의 그룹으로부터 권한을 상속받아 사용할 수 있기 때문에 그룹을 이용해서 권한을 관리하는 편이 더욱 효율적이다. 반면, Group Aduit Team 처럼, Charles, David가 ..
소유권이 이전될 때의 문제 use std::io; // 어떤 외부 크레이트를 사용할지는 use로 명시 가능하다. fn main() { let mut input = String::new(); some_fn(input); io::stdin().read_line(&mut input); // (1) let mars_weight = calcuate_weight_on_mars(100.0); println!("weight on Mars: {}kg", mars_weight); } fn calcuate_weight_on_mars (weight: f32) -> f32 { (weight / 9.81) * 3.711 } fn some_fn (s:String) {} 이 코드에서 (1) 구간에는 에러가 났다. 이유는 이 라인에 ..
러스트에는 소유권(Ownership)이라는 개념이 있고, 이는 다른 언어에서는 보기 힘든 특성이다. 일단 소유권의 세 가지 규칙을 먼저 보자. 러스트에서는 변수(variable)가 각 값(value)에 대한 소유권을 가진다. 소유자(owner = variable)가 범위(scope)를 벗어나면 그 값은 해제(deallocate)된다. 특정 시점에 소유자는 단 하나만이 존재할 수 있다. 지난 번에 작성한 코드 use std::io; // 어떤 외부 크레이트를 사용할지는 use로 명시 가능하다. fn main() { let mut input = String::new(); // 구조체를 사용하여 빈 문자열을 생성한다. io::stdin().read_line(&mut input); // 주소를 참조할 수 있도록..
type Fill = T extends [infer H, ...infer R] ? [...L, 0][Start] extends undefined ? Fill : [...L, 0][End] extends undefined ? Fill : Fill : L 위처럼 프로퍼티가 하나 추가된 상황만을 생각해보자. type Fill< T extends unknown[], N, Start extends number = 0, End extends number = T['leng..
type Length = T['length']; type Push = [...T, P]; type NTuple = Length extends N ? T : NTuple; type Add = Length; 이렇게 4개는 타입 챌린지를 풀다 보면 많이들 쓰게 되는 타입들이다. Length는 사실 제네릭 T[’length’]의 접근을 축약한 것이기 때문에 크게 어렵지 않을 것이다. Push는 Tuple T를 받아 P를 담은 새 튜플로 추론되는 타입이다. NTuple은 튜플 T가 N만큼의 크기가 될 때까지 재귀적으로 Push하는 타입이다. Add는 N1, N2를 그 크기만큼의 튜플로 만든 다음, 그 튜플을 합쳐 다시 Length를 구하는 방식으로 두 수의 합을 구하는 타입이다. 이 네 가지 타입이 자주 쓰이는 ..
러스트도 다른 언어와 같이 표준 라이브러리들을 제공한다. ( Node.js로 치면 코어 모듈과 같다 ) 예를 들면 해시맵, 벡터, 그 외 수많은 자료구조가 존재하고 입출력 기본 요소 역시 포함된다. 이를 통해 사용자에게 직접 입력을 받아, 기존의 프로그램이 입력에 의해 동작하게끔 수정할 예정이다. 표준 라이브러리는 외부 크레이트로, 이 크레이트는 기본적으로 모든 곳에서 바로 사용할 수 있단 의미다. std - Rust std - Rust §The Rust Standard Library The Rust Standard Library is the foundation of portable Rust software, a set of minimal and battle-tested shared abstraction..