TIL101 [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. [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. [PostgrsSQL] 명령어 # 데이터 베이스 진입 psql -d (db이름) psql -U (유저이름) -d (db이름) ## 데이터 베이스 진입한 상태에서의 ## # 나가기 \q # 전체 db instance 목록 \list # 접속한 db의 table 목록 \dt # sequence 목록 \ds # function 목록 \df # view 목록 \dv # 전체 유저 목록 조회 \du TIL/구글링 내용 저장소 2022. 7. 5. [Mac] 현재 사용하고 있는 Port 조회 및 프로세스 킬 nest js 에서 프로젝트 돌릴 때 ctrl + c 로 분명히 종료했는데 프로세스가 살아서 포트를 차지하고 있어서 문제가 발생함 => 강제 종료가 하고 싶다 => losf (list open files) 명령어 사용하여 종료가 필요한 프로세스의 PID를 찾는다 => sudo kill 로 프로세스 강제 종료 # 현재 열린 포트와 포트에 할당된 프로세스 목록 확인 가능 sudo lsof -PiTCP -sTCP:LISTEN # 특정 포트에서 돌아가는 프로세스 조회 가능 sudo lsof -i :PID #ex) sudo lsof -i :3000 # PID 번호의 프로세스 죽이기 sudo kill -9 PID #ex) sudo kill -9 3000 TIL/구글링 내용 저장소 2022. 7. 5. [백준]1005 ACM Craft 1005번: ACM Craft 첫째 줄에는 테스트케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에 건물의 개수 N과 건물간의 건설순서 규칙의 총 개수 K이 주어진다. (건물의 번호는 1번부 www.acmicpc.net 문제 서기 2012년! 드디어 2년간 수많은 국민들을 기다리게 한 게임 ACM Craft (Association of Construction Manager Craft)가 발매되었다. 이 게임은 지금까지 나온 게임들과는 다르게 ACM크래프트는 다이나믹한 게임 진행을 위해 건물을 짓는 순서가 정해져 있지 않다. 즉, 첫 번째 게임과 두 번째 게임이 건물을 짓는 순서가 다를 수도 있다. 매 게임시작 시 건물을 짓는 순서가 주어진다. 또한 모든 건물은 각각 건설을.. TIL/SW&백준 문제 리뷰 2022. 2. 24. 이전 1 ··· 4 5 6 7 8 9 다음 반응형