분류 전체보기
-
callback, promise, async/await의 특징과 차이점 간단 정리Topic/JavaScript 2022. 5. 21. 09:10
callback 함수의 매개 변수인 함수 비동기 처리 시 동기처리할 때 콜백패턴을 사용한다. 자유도가 높은 장점이 있으나 콜백지옥이 우려되니 조심! promise JavaScript가 동기 처리이기 때문에 비동기 처리를 위해 promise를 사용합니다. 에러핸들링할 때는 catch 로 에러 처리가 가능하다. promise 지옥이 발생할 수 있으니 적당히 써야함 async / await promise보다 비동기적인 상황 표현이 쉽다. 에러핸들링 기능이 없어서 try catch문을 활용해야한다. 비동기코드를 동기코드처럼 읽게 해주어서 가독성이 좋다.
-
[final project] 4주 동안의 4인 프로젝트 회고 (feat. 코드스테이츠)project 2022. 5. 20. 20:39
4주 간의 코드스테이츠 파이널 프로젝트가 종료되었다. 프로젝트를 시작하며 SR 기획을 했던게 엊그제 같은데 시간이 참 빠르다. 팀장으로서 제대로 팀원들과 소통했는지, 올바른 방향으로 프로젝트를 이끌었는지 되돌아보게 되는 4주 간의 시간이었다. 처음 프로젝트 기획에서는 배달비를 더치페이하는 새로운 플랫폼을 만들자! 라는 아이디어로 나름 신박한 아이디어라고 다들 생각했고 프로젝트를 신나게 시작하게 되었는데, 진행하다보니 우리와 같은 서비스를 만든 팀이 전 기수, 전전 기수에도 있다는 것을 발견하고는... 역시 세상에 새로운 아이디어는 없는 것인가... 라는 살짝 힘빠지는 일도 있었다. 그래도 어쨌든 우리의 기획 방향은 정해졌고 우리 팀 더치킹은 그저 우리의 할 일을 묵묵히 해나가자는 마음으로 차곡차곡 로직을..
-
클로져란? / 호이스팅과 TDZTopic/JavaScript 2022. 5. 20. 09:35
클로져란? 클로져란 함수 내부에 선언되는 함수를 뜻한다. 클로져는 은닉화, 캡슐화의 2가지 특징을 가진다. 외부함수가 소멸한 후에도 변수를 기억하며 일반함수는 실행 후 전역변수 초기화가 되지만, 클로져는 선언 시 환경을 기억한다. 메모리에 객체들이 남아있어 클로져를 남발하게 되면 오버플로우 발생가능성을 높인다. 호이스팅과 Temporal Dead Zone 호이스팅은 변수나 함수의 선언이 끌어올려지는 것을 뜻한다. var (선언 & 초기화) -> 할당 / let 선언 -> 초기화 -> 할당 / const (선언 & 초기화 & 할당) let, const는 초기화되기 전까지 TDZ에서 대기(선언단계와 초기화단계 사이에 TDZ!) let, const도 호이스팅된다! 호이스팅 Yes (되지만) 참조오류 Yes -..
-
[final project] S3 이미지 업로드 AWS 에러(feat. ACL)error handling 2022. 5. 9. 21:44
Error Message 스크린샷 또는 코드 공유 클라이언트에서 S3로 보내주는 로직을 구현하고 react-app에서 실행했지만 계속 오류가 뜨고 디버거가 실행되었다.Solution putObject의 두번째 인자인 data와 err까지 모두 데이터로 찍었더니 맨 위 사진같이 에러 로그가 출력되었다.이 문장으로 구글링을 해보니 S3에서 권한 - 객체 소유권 편집 문제였고 아래와 같이 수정하니 잘 작동했다 ! console.log('loginUser:', loginUser); console.log('data:', data); console.log('err:', err); The bucket does not allow ACLs 원인과 해결과정 이 과정에서 콘솔 로그들은 모두 잘 찍혀들어와서 로직 상 문제라기..
-
[final project] 프로젝트 2주차 회고project 2022. 5. 1. 21:59
전체 4주의 기간 중 절반인 2주가 지났습니다. 프로젝트를 진행하느라 매일 정신없는 하루를 보내는 중이에요.. 나중에 이 기간 동안의 협업 내역과 감정을 잊고 싶지 않아서 주말동안 잠깐 짬을 내서 회고를 작성해봅니다. 잘하고 있는 점은 우선 각자 맡은 파트에 대해서 끊임없이 도전하고 노력해서 문제를 해결하려 한다는 점이 팀원들에게 고마웠고 매일 2번 꾸준히 미팅을 하며 서로의 진행 상황에 대해 공유하는 점이 느리지만 한 걸음씩 프로젝트를 완성하고 있다는 기분이 들어 건물을 쌓아 올리는 느낌이 들기 시작했습니다. 팀원의 건강 문제로 며칠간 진행이 안 되긴 했지만 그런 부분까지 감안해서 프로젝트 기간에 시간 분배를 잘 해야한다고 느꼈습니다. 그래서 저는 프로젝트가 시작한 2주 전부터 지금까지 평일에 꾸준히 ..
-
[final project] TypeOrm에서 req.params 컴파일 오류 & typeorm-seeding 설치 오류error handling 2022. 4. 23. 15:58
클라이언트에서 정보를 받아 /parties/:id 로 patch 요청을 한 경우 body에는 파티의 바꾸고 싶은 정보들이 들어있고, params에 해당 party의 id를 담아서 서버로 보내주는데 그것을 typeorm에서 findOne 메소드 내에서 저것이 자꾸 존재하지 않는다고 나오고 따로 잘못 작성한 부분이 없는 것 같아서 구글링으로 버전 문제인지 찾아봤고 지금 깔았던 버전은 0.3.-- 이었는데 대부분 0.2.--을 쓰고 있어서 혹시나 해서 지우고 다시 낮은 버전으로 설치해습니다. 낮은 버전으로 해봤더니 오류도 사라지고! getConnection과 getRepository에 가운데 흰 줄이 가있던 것도 사라졌어요 그리고 0.3.--에서는 typeorm-seeding이 버전 문제로 설치되지가 않아서 ..
-
[final project] typescript & typeorm / isAuthorized import 에러error handling 2022. 4. 22. 11:01
... src/controllers/parties.ts:4:10 - error TS2305: Module '"../controllers/tokenFunctions/index"' has no exported member 'isAuthorized'. 4 import { isAuthorized } from '../controllers/tokenFunctions/index'; ~~~~~~~~~~~~ src/controllers/parties.ts:73:1 - error TS1128: Declaration or statement expected ... controllers/parties 파일에서 파티를 생성할 때 우선 isAuthorized(req)로 해당 요청에 토큰이 있는지 확인해야 한다. 그런데 이 과정에서..