전체 글
-
fastify-multipart handle multiple file streams and fields in TypeScriptJavaScript & TypeScript 2022. 9. 22. 18:48
Property 'file' does not exist on type 'Multipart'. Property 'file' does not exist on type 'MultipartValue'. @fastify/fastify-multipart 버전이 7.1.2 → 7.2.0 으로 바뀌면서 에러가 발생했다. 릴리즈 히스토리를 보니 Multipart type 이 바뀌게 되어서 발생하는듯 했고 아래와 같이 수정하여 해결했다. 1. Using type predicates const isMultipartFile = (multipart: Multipart): multipart is MultipartFile => { return ( (multipart as MultipartFile).file !== undefined..
-
근황 기록일상 2022. 9. 13. 00:33
나름 정든 블로그인데 끼니를 거르게 한 거 같아서요. 이런저런 근황 기록... 1. TIL 이란 거를 하기로 했어요. 이전에 도마뱀 책 같이 읽던 분 중에 한 분이 노션 페이지 구경시켜주며 같이 해보자고 했는데 별 제약사항도 없고 가끔 말 섞으면 재밌어서 하기로 했어요. 노션 고수분이 페이지를 만들었는데 삐까뻔쩍해요. 다른 분들은 본인 블로그에 기록하길래 저도 노션페이지 말고 블로그에 그냥 적으려구요. 저번 주부터 시작했는데 귀찮지만 하고 있어요... 다 부지런쟁이들 이더라고요. 주에 5번 못 채우면 커피 사는 벌칙이 있어요. 2. 토익을 해볼까 해요. 영어를 못해서 문서 볼 때 너무 제약사항이 크다고 계속 느꼈는데 더 이상 미루면 안 될 것 같아요. 혹시 나중에 백수가 되거나 다른 직업을 가져도 쓸 테..
-
이케아 접시꽂이, 냅킨꽂이 샀어요.일상 2022. 8. 19. 22:47
이케아에서 접시꽂이, 냅킨꽂이 샀어요. 맥북 클램쉘 모드로 쓸 때 보관할 무언가가 필요한데 이상하게 맥북 수직 스탠드 이런 식으로 검색하면 너무 비싸서 안 사고 있었는데 이케아 구경하다가 이거다 싶어서 샀어요. 후기도 찾아봤는데 이렇게 쓰는 사람도 많고 괜찮아 보이더라구요. 접시꽂이는 이것저것 찾아보다가 마침 이것도 책 꽂을 때 쓰면 좋겠다 같아서 샀어요. 사실 지금까지 꼽아둘 책이 없어서 못 꼽아두다가 오늘 책 배송 온 기념으로 꼽고 사진 찍고 글 적어요. 모두 단돈 2,900원이라 안 살 수가 없다... 마침 이거 사면서 배송비에 넣으려고 딴 거 구경하다가 담았는데 가격이 좀 많이 나왔어요... 나머지 장바구니는 다음 기회에 공개됩니다... 이케아 꿀템 검색하면 뭐 좋아 보이는 거 많았어요. 친절히..
-
1장. 타입스크립트 알아보기책/misc 2022. 7. 17. 21:23
1장. 타입스크립트 알아보기 아이템 1~5 아이템 1. 타입스크립트와 자바스크립트의 관계 이해하기 모든 JS 프로그램은 이미 TS 프로그램이다. 반대로, TS는 일반적으로 유효한 JS프로그램이 아니다. 코드의 의도가 무엇인지 타입 구문을 통해 타입스크립트에게 알려줄 수 있기 때문에 코드의 동작과 의도가 다른 부분을 찾을 수 있다. TS는 JS 런타임 동작을 모델링하는 타입 시스템을 가지고 있기에 런타임 오류를 발생시키는 코드를 찾아내려고 한다. 모든 오류를 찾아낼 순 없다. 타입 체커를 통과하면서도 런타임 오류를 발생시키는 코드는 존재할 수 있다. 아이템 2. 타입스크립트 설정 이해하기 cli 가 아닌 설정 파일(tsconfig.json)을 사용하자. 팀원과 공유하기 위함. 엄격한 체크를 하고 싶다면 s..
-
48장. 모듈책/모던 자바스크립트 딥다이브 2022. 7. 10. 20:07
48장. 모듈 48-1. 모듈의 일반적 의미 모듈이란 애플리케이션을 구성하는 개별적 요소로서 재사용 가능한 코드 조각을 말한다. 모듈이 성립하려면 모듈은 자신만의 파일 스코프를 가질 수 있어야 한다. 모듈은 개별적 존재로서 애플리케이션과 분리되어 존재한다. export 된 모듈의 자산은 다른 모듈에서 재사용할 수 있다. 이때 공개된 모듈의 자산을 사용하는 모듈을 module consumer라 한다. 48-2. 자바스크립트와 모듈 이전에 JS는 import, export를 지원하지 않아 여러 개의 파일로 분리하여 script 태그로 로드해도 분리된 자바스크립트 파일들은 결국 하나의 자바스크립트 파일 내에 있는 것처럼 동작한다. 이러한 상황에서 제안된 것이 CommonJS, Asynchronous Modul..
-
47장. 에러 처리책/모던 자바스크립트 딥다이브 2022. 7. 10. 20:06
47장. 에러 처리 47-1. 에러 처리의 필요성 에러가 발생하지 않는 코드를 작성하는 것은 불가능하다. 따라서 언제나 예외적인 상황이 발생할 수 있다는 것을 전제하고 이에 대응하는 코드를 작성하자. 47-2. try … catch … finally 문 console.log('start...'); try { foo(); } catch (e) { console.log(e); } finally { console.log('finally'); } console.log('end...'); 47-3. Error 객체 Error 생성자 함수가 생성한 에러 객체는 message, stack 프로퍼티를 갖는다. message는 Error 생성자 함수에 인수로 전달한 에러 메시지, stack은 에러를 발생시킨 콜 스택의 ..
-
33장. 7번째 데이터 타입 Symbol책/모던 자바스크립트 딥다이브 2022. 7. 10. 20:06
33장. 7번째 데이터 타입 Symbol 33-1. 심벌이란? Symbol은 ES6에서 도입된 7번째 데이터 타입으로 변경 불가능한 원시 타입의 값이다. Symbol 값은 다른 값과 중복되지 않는 유일무이한 값이다. 주로 이름의 충돌 위험이 없는 유일한 프로퍼티 키를 만들기 위해 사용한다. 33-2. 심벌 값의 생성 Symbol 함수 다른 원시 값은 리터럴 표기법을 통해 값을 생성할 수 있지만 심벌 값은 Symbol 함수를 호출하여 생성해야 한다. 이때 심벌 값은 외부로 노출되지 않아 확인할 수 없으며, 다른 값과 절대 중복되지 않는 유일무이한 값이다. const mySymbol = Symbol(); console.log(typeof mySymbol); // symbol console.log(mySymb..
-
알림 시스템 설계책/misc 2022. 7. 9. 16:11
알림 시스템 설계 알림 시스템은 단순히 모바일 푸시 알림(mobile push notification)에 한정되지 않고 모바일 푸시 알림, SMS 메시지, 이메일 세 가지로 분류할 수 있다. 1. 요구사항 분석 어떤 종류의 알림 지원할 것인지? - 푸시 알림, SMS 메시지, 이메일 실시간 시스템(real-time) 시스템인가? - 연성 실시간(soft real-time) 어떤 종류의 단말 지원할 것인지? - iOS, Android, desktop 사용자에게 보낼 알림은 누가 만드는가? - 클라이언트 애플리케이션 프로그램 또는 서버 측에서의 스케쥴링 알림을 받지 않도록(opt-out) 설정 가능한가? - 가능해야 함. 하루에 몇 건의 알림이 필요한가? - 1,000만 건 모바일 푸시, 100만 건 SMS..