전체 글145 [AWS] AWS 볶음밥1 리전, 가용영역 리전(Region)은 2개 이상의 가용영역(AZ)으로 이뤄져 있음 리전은 완전 독립적 ex) seoul == ap-northeast-2 가용영역은 1개 이상의 데이터 센터(DC) 가용영역 내는 내부망처럼 동작 가용영역들 간은 고속 프라이빗 링크 사용해서 연결 고가용성을 위해 2개 이상의 가용영역 연결하는 경우가 많음 ex) 서울 리전에는 4개의 가용영역 존재 => 1개 죽어도 전체 서비스 마비X 리전을 선택하는 요인 거버넌스 - ex) 국가에서 공공기관 서비스은 국가내에 데이터가 있어야 한다라는 규칙이 있으면 지켜야 할 것 지연시간 - 거리가 멀수록 지연시간이 늘어나니 사용자가 많이 사용하는 지역에 있어야 사용자가 실체감하는 성능을 높일 수 있음 서비스 가용성 - 리전에 따라 제공되는 서.. TIL/AWS 2022. 7. 20. [TypeScript]이펙티브 타입스크립트 Item 6~10 Item 6 타입스크립트에서 제공하는 언어 서비스 사용하는 것이 좋다 언어서비스가 제공하는 기능으로는 코드 자동 완성, 명세 검사, 검색, 리팩터링 등등 편집기의 타입추론을 보고 타입스크립트가 값의 타입을 어떻게 이해하는지 알 수 있음 Item 7 한가지 값만 포함하는 타입 = literal 타입 2개 혹은 3개 포함하는 타입 = union 타입 type A = 'A'; // 리터럴 타입 type One = 1; // 리터럴 타입 == 유닛 타입이라고 불리기도함 type A1 = 'A' | 1; // 유니온 타입 const a: A1 = 'A' // 정상 const b: A1= 'B' // 에러 & 은 두 타입의 인터섹션(교집합)을 계산 타입간의 교집합은 인터페이스의 속성이 아니라 값의 집합(= 타입의 .. TIL/TypeScript 2022. 7. 19. [TypeScript] 이펙티브 타입스크립트 Item 1~5 Item1 모든 자바 스크립트 프로그램은 타입 스크립트 프로그램 (자바 스크립트에 문법적인 오류가 없다면, 유효한 타입스크립트 프로그램이기도 함) 타입 스크립트는 자바 스크립트의 런타임 동작을 모델링함 => 런타임 오류 찾으려 시도 But, 모두 찾진 못함 자바 스크립트에서는 허용되지만 타입스크립트에서는 문제가 되는 경우 존재 (ex 잘못된 매개 변수 개수로 함수 호출하는 경우 등) Item2 타입 스크립트는 타입 정보 가질때 효과적 => noImplicitAny 를 설정하여 타입을 명시하자 strictNullChecks 옵션은 null과 undefined을 허용하지 않음으로서 관련된 오류를 잡아줌 Item3 타입체크와 컴파일이 동시에 이루어지지 않기에 타입 오류를 수정하지 않고도 컴파일하여 다른 부분 .. TIL/TypeScript 2022. 7. 18. [DB] 외래키를 사용해? 말어? 이번 프로젝트에서 DB를 설계하고 구현하면서 외래키를 사용하지 않지만 외래키의 역할을 하는 컬럼을 만들어서 테이블을 구성하였는데, 이에 대한 고민들 적어보고자 한다. 서비스에서 여러 소셜 로그인을 지원하고자 하는데 같은 유저 A가 있을 때 나는 유저의 특정 정보는 유저 엔티티에 두고 카카오 로그인을 사용한다면 카카오 유저를 만들어 유저와 연결하고 구글 로그인을 사용한다면 구글 유저를 만들어 유저와 연결하는 방식으로 DB를 구성하고자 했다. 그 중 유저와 카카오 유저의 케이스를 들고 와서 처음 말했던 외래키에 대한 이야기를 하고자 한다. // 유저 엔티티 @Entity() export class User { @PrimaryGeneratedColumn() id: number; @Column({ nullabl.. TIL/DB 2022. 7. 16. [소마] 중간 기록 - 예비과정 어느새 7월이다 4월부터 2달 정도의 예비과정 6월 부터의 본과정 11월 까지의 여정이니 현재 얼추 3분의 1~ 절반 정도 진행된 것인데 예비과정은 사실 중요하다면 중요하지만 프로젝트를 본격적으로 진행하는 기간은 아니기에 이제 막 시작한 기분이다. 그치만 기억이 더 흐릿해지기 전에 주저리주저리 적어놓고자 한다. 예비 과정 벌써 정확한 기억이 잘 안나는데 왜냐하면... 그때 학교를 다니면서 진행하다 보니 나도 아무래도 소마활동에 엄청 적극적일 수가 없고 그렇다 보니 몰입이 덜되서 기억에 덜 남았던 것 같다. 소마가 매우 자율적인 분위기임에도 그래도 최소한의 활동 커트라인을 정해두었기에 예비 과정에서 멘토님들의 자유멘토링들을 들었었다. 또한 당시 자유멘토링에서 연수생들이 삼삼오오 모이고, 이때 자연스럽게 이.. 주저리주저리 2022. 7. 15. [JavaScript] var, let, const var, let, const는 자바스크립트에서의 변수 선언 방식이다 var 변수 재선언, 재할당 가능 var test = 'jobum'; // 출력하면 jobum 나옴 console.log(test); var test = 'jobum!!'; // 출력하면 jobum!! 나옴 console.log(test); let 변수 재선언 불가능, 재할당 가능 let test = 'jobum'; // 출력하면 jobum 나옴 console.log(test); let test = 'jobum!!'; // 에러 발생 console.log(test); let test = 'jobum'; // 출력하면 jobum 나옴 console.log(test); test = 'jobum!!'; // 출력하면 jobum!! 나옴 con.. TIL/구글링 내용 저장소 2022. 7. 14. [Nest.js] Passport-KaKao Strategy 관련 삽질 Kakao 로그인 / 로그아웃 (velog.io) 우선 처음 구현할 때 위의 블로그 글을 참조하여 구현하였다. 이후 내 입맛에 맞게 만들기 위해 수정을 해보려고 했는데 오픈된 자료는 적고 passport-kakao 공식 문서는 불친절하고 아주 죽을 맛이였다. (그냥 내가 멍청할수도??...) 문제 위의 블로그의 글처럼 controller 로 login, redirect,... 그리고 몇 개의 라우터로 카카오 공식 문서가 알려주는 대로 api 콜을 날려서 토큰과 유저 정보를 받아오는데 나는 여기에 kakao Strategy 를 만들어 @UseGuard() 데코레이터로 유효성 검사 등등의 작업을 시켜주고 싶었다. 나는 이제 구현하면서 몇가지 의문이 들었는데 사고의 흐름을 적자면 1. redirect 라우터에.. TIL/삽질 기록소 2022. 7. 13. [표기법] Snake Case, Pascal Case, Camel Case, Kebab Case 스네이크 케이스 ( Snake Case ) 모든 단어가 소문자로 시작한다. 단어와 단어 사이는 '_'로 연결된다. snake case => snake_case 파스칼 케이스 ( Pascal Case ) 모든 단어들이 대문자로 시작한다. 단어와 단어 사이는 붙인다. pascal case => PascalCase 카멜 케이스 ( Camel Case ) 첫 단어는 소문자로 시작하고, 두번째 단어부터 대문자로 시작한다. 단어와 단어 사이는 붙인다. camel case => camelCase 케밥 케이스 ( Kebab Case ) 모든 단어가 소문자로 시작한다. 단어와 단어 사이는 '-'로 연결된다. kebab case => kebab-case TIL/구글링 내용 저장소 2022. 7. 11. [typeORM, Nest.js] OneToOne 관계 관련 삽질 기록 문제 원래 기존의 User 테이블이 유저의 모든 정보를 들고 있는 방식 보안 및 소셜 로그인 방식들을 확장하기 위해 기존 유저 Entity가 공통적이고 좀 덜 중요한 정보만 들고 있고 localUser, kakaoUser 등의 Entity 들과 OneToOne 관계를 맺는 DB를 수정하고자 하였음 One-to-One | TypeORM TypeORM 공식 홈페이지의 One-To-One 페이지의 예시는 유저와 프로필이였지만 찾는 본질적인 관계 자체는 똑같았기에 좋은 참고자료가 되었고, 추가적인 구글링을 통해 얻은 정보로 구현하였을 때 해결 과정 Service에서 콘솔 로그를 찍어보면 이미 저장한 user 와 localuser가 잘 검색되고 localuser 객체를 user의 local_user 필드에 할당해.. TIL/삽질 기록소 2022. 7. 10. [Node] Passport 모듈 Passport 란? Passport 모듈은 Node js의 미들웨어로 사용자 인증을 구현해준다 클라이언트가 서버에 요청할 자격이 있는지 인증할 때 사용 Ex) 소셜 로그인(Naver, Kakao 로그인 등)할 때 passport 모듈 사용 Passport.js (passportjs.org) Passport.js Simple, unobtrusive authentication for Node.js www.passportjs.org passport에는 Strategy를 제공하고 있어 이를 그대로 가져다 사용하여 기본적인 로그인 부터 여러 사이트의 소셜 로그인 서비스를 비슷하게 구현할 수 있음 Strategy의 종류 - Local Strategy(passport-local) : 로컬 DB에서 로그인 인증 방식.. TIL/구글링 내용 저장소 2022. 7. 7. OAuth란? OAuth = Open Authorization 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로 사용되는 프로토콜 즉 우리가 요즘 흔히 쓰는 소셜 로그인(네이버, 카카오, 구글, 페이스북, 애플 등등 계정으로 다른 웹이나 어플 로그인)을 할 때 사용하는 프로토콜 이라 할 수 있다 OAuth 는 Resource Owner : Resource(개인정보)를 들고 있는 유저 즉 사용자 Client : 애플리케이션 서버 Authorization Server : 권한을 부여해주는 서버 Resource Server : 사용자의 개인정보 들고 있는 어플리케이션 ex) 네이버 카카오 Access Token : Re.. TIL/구글링 내용 저장소 2022. 7. 7. [Mac] AWS EC2 인스턴스 접속 AWS EC2 인스턴스 접속 pem 키를 발급 받는다 example.pem 의 키 파일 권한 변경(chmod 600 : 소유자는 읽고쓰기, 나머지는 아무권한도 없음) chmod 600 pem파일 #ex)chmod 600 ec2-public-seoul.pem pem파일을 사용하여 ec2에 접속 ssh -i pem경로 ec2-user@ec2의 퍼블릭 ipv4 or domain #ex) ssh -i ~/Downloads/ec2-public-seoul.pem ec2-user@11.22.133.111 @ 앞에 붙는 사용자 이름 ec2-user 는 인스턴스 이미지의 종류에 따라 달라질 수 있다고 함 ssh -i ~~ 명령어를 대체하는 법 pem 파일을 ~/.ssh/ 로 복사 cp pem키파일 ~/.ssh/ #ex).. TIL/구글링 내용 저장소 2022. 7. 6. 이전 1 ··· 7 8 9 10 11 12 13 다음 반응형