본문 바로가기

Development

(135)
this에 대하여 문제 딱히 this 관련하여 문제는 없었다. 하지만 어제 objectId를 생성하는데 this가 관련이 있어서 이어서 정리해보려고 한다. 시도 일단 가볍게 훑어보자면, 자바스크립트에서 this는 실행 컨텍스트 내에서 현재 객체를 참조하는데 사용된다. 그리고 this가 가리키는 객체는 함수 호출 방식에 따라 결정된다. 1. 함수가 객체의 메서드로 호출되면, 'this'는 그 객체를 참조한다. 2. 함수가 일반적으로 호출되면, 'this'는 전역 객체를 참조한다. 3. 함수가 new 연산자와 함께 호출되면, this는 새로운 객체를 참조한다. 4. call, apply, bind 메서드를 사용하여 함수를 호출하면 첫번째 인수로 전달한 객체를 this로 참조한다. this가 가리키는 객체를 확실히 이해하면 메..
mongoose objectId와 new 키워드 문제 crud 게시판 서버 구현을 하는 중이다. 게시글 작성 API를 구현하는 중에 문제가 발생했다. 수정, 삭제하는데 필요한 게시글의 고유 아이디(postId)를 mongoose의 objectId를 가져와 사용하려고 하는데 정상적으로 생성이 안되는 것이다. 시도 const PostSchema = new Schema({ postId: { type: Schema.Types.ObjectId, // ObjectId로 변경 required: true, unique: true, default: () => mongoose.Types.ObjectId() // default 값으로 ObjectId 생성 }, 새로운 document가 생성될 때마다 positId에 mongoose의 objectId를 할당하기 위해 new..
WIL - Express 미들웨어, RESTful Express란? node.js를 이용하여 빠르고 간편하게 서버 개발을 할 수 있도록 도와주는 프레임 워크이다. middleware(미들웨어)란? express에서 매우 중요한 개념 중 하나. 서버에서 클라이언트의 요청 (request)을 처리하기 전에 실행되는 함수이다. 바꿔말하면 클라이언트의 요청을 가로채 처리를 하거나 다른 미들웨어 함수에 요청을 전달한다. 즉, 클라이언트의 요청을 미들웨어가 최우선적으로 처리한다. app.use() 또는 router.use()로 등록한다. RESTful(Representational State Transfer)이란? 클라이언트와 서버간의 통신 방식을 규정하는 아키텍처(설계도) 스타일 RESTful 웹 서비스는 리소스(자원 = 데이터) 단위로 구성되며, 각 리소스는 ..
TIL - Promise와 await 연산자 (feat. vs GPT) 문제 어제에 이어 자바스크립트의 비동기적 처리에 대해 정리해보려고 한다. 서버 개발 실습을 하는데 route에 async를 붙여 비동기적 처리를 하는 경우가 많더라. 아직까지 이게 서버 동작에 어떤 차이를 주는지 이해가 잘 안가서 더 공부가 필요하다. 시도 요즘 구글링보단 chat gpt를 사용하는 빈도가 늘었다. 검색을 하고 괜찮은 자료들을 찾는 수고를 조금이나마 덜어주는 것 같아서 좋다. promise에 대해 g선생이 설명한 내용을 정리하자면, Promise는 javascript에서 비동기 처리를 할 수 있게 해주는 객체이다. (객체는 모다? key : value 값을 갖는다. 일반적으로!) 예시 코드를 쓰자면, const getData = () => { return new Promise((resol..
JS의 비동기적 처리 (근데 이제 Non - Blocking을 곁들인) 문제 항해99 3주차에 접어들었다. 앞으로 장장 3주 동안 주특기를 연마하게 된다. 나는 node js를 선택했다. 자바스크립트의 대표적인 특징은 비동기적 처리를 한다는 것이다. Sync(동기) & Async(비동기)의 개념에 대해서 흐릿하게 알고 있었는데 이번엔 제대로 짚고 넘어가야겠다는 생각이 들었다. 시도 영상 강의를 통해 학습을 진행했다. 동기 & 비동기의 개념에 대해 상세하게 설명이 진행되었는데 깊이 들어가니 더 헷갈렸다. 게다가 처음 들어보는 Blocking & Non-Blocking에다 promise, await까지...... 동기 비동기 개념을 확실히 짚고 넘어가야겠다는 의지가 꺾이는 순간이었다. 하지만 이번에 제대로 학습하지 않으면 부채는 점점 쌓여갈 것이기 때문에 영상과 노션 자료를 토..
TIL(feat.프로그래머스 1차 비밀지도) 문제 항해99 본과정 알고리즘 주차 마지막 날이다. 프로그래머스 1차 비밀지도 문제에서 막히는 부분이 발생했다. 주어진 숫자를 이진법으로 변환해서 활용해야하는데 문제는 이진법으로 변환한 숫자를 주어진 길이인 n만큼 맞춰줘야한다는 것이었다. 예를들면 n = 5 였을 때 숫자 9를 이진법으로 변환하면 1001이 된다. 1001의 길이는 4이기 때문에 조건을 맞추려면 앞에 0을 붙여줘야한다. 하지만 아무리 해도 앞에 0이 붙지 않았다..... 문제링크 시도 function solution(n, arr1, arr2) { let arr1Binary = []; arr1.map((a) => arr1Binary.push(a.toString(2))) let arr2Binary = []; arr2.map((a) => ar..
소수 구하기 (feat.에라토스테네스의 체) 문제 오늘도 어김없이 난관에 봉착 프로그래머스 소수 찾기에서 효율성 통과에 어려움을 겪었다. 문제링크 시도 function solution(n) { let answer = 0; function isPrime(sum) { for (let i = 2; i
문자열과 영단어 문제 프로그래머스 숫자 문자열과 영단어 문제를 푸는 중 난관에 봉착하였다. 주어진 문자열에 포함된 숫자에 대응되는 영단어를 숫자로 치환해 반환하면 되는 문제였다. 문제링크 시도 function solution(s) { let word = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'] for (let i = 0; i < word.length; i++) { s.split(word[i]).join(i) } return s } 각 숫자에 대응되는 단어로 이루어진 배열을 할당하여 for문으로 반복하며 word의 i번째 요소로 split이 되면 다시 i로 붙여주는 방식이었지만 전혀 치환이 되지 않았다. 두번째 시도 f..