41일차
TIL 210503
1. 주말알고리즘 스터디 통해 배운 것
로또의 최고 순위와 최저순위
: 비어있는 숫자가 무엇이냐에 따라 로또 당첨 최대 순위와 최저순위를 출력해야하는 문제 였다.- 경우의 수를 나눠서 규칙을 찾아야 한다. 로또 당첨 번호와 내 번호가 같은 것이 있을때, 최고 순위 번호는 어떻게 변하지?
- 비어있는 숫자가 있는경우 최저 순위 는 어떻게 변하지? 규칙을 찾은 다음에 코딩하기
문자열 내 마음대로 정렬하기
: 첫번째 글자를 기준으로 정렬하되 첫번째 글자가 같은 경우에는 그 문자 자체를 비교해서 return 처리해주면 두번째 인덱스 기준으로 비교할 수 있다.
function solution(strings, n) {
strings.sort(function(a,b){
if(a[n] > b[n]) return 1;
if(b[n] > a[n]) return -1;
if(a > b) return 1;
if(b > a) return -1;
return 0;
});
return strings;
2. 서버….랑 친해질 수 있을까?
- nodemon을 통해서 파일에 변화가 있으면 출력을 바로 할 수 있다(liverserver와 비슷한 것 같다)
- http 트랜잭션 해부
- 서버 생성
const http = require('http');
const server = http.createServer((request, response) => {
// 여기서 작업이 진행됩니다!
});
- http 요청이 서버에 오면 node가 트랜잭션을 다루려고 request, response 객체를 전달하며 요청 핸들러 함수를 호출한다.
- 요청을 처리할때 메소드와 url을 확인한 후 이와 관련된 적절한 작업을 실행할 것이기 때문에 아래 작업필수!
const { method, url } = request;
//method는 일반적인 http 메서드/동사 가 된다
//url 은 전체 URL에서 서버, 프로토콜, 포트를 제외한 것으로 세번째 슬래시 이후의 나머지 전부라고 볼 수 있다.
3. chatterbox-server 과제를 하면서 알게 된 점!
- module.export 의 중요성.
- 이렇게 힘들게 body를 받는 이유 ..data는 용량이 크기 때문에 나눠서 수신받기 떄문
let body = [];
request.on('data', (chunk) => {
body.push(chunk);
}).on('end', () => {
body = Buffer.concat(body).toString();
// 여기서 `body`에 전체 요청 바디가 문자열로 담겨있습니다.
});
server.listen(port, ip);
는 서버가 계속해서 돌게 끔 프로세스를 유지한다.response.writeHead(200,{'Content-Type':'application/json'})
을 통해 명시적으로 응답 스트림에 헤더를 작성할 수 있다.response.end(JSON.stringify(responseBody))
를 통해서 데이터를 JSON으로 포매팅- 헤더를 항상 설정해줘야 한다.
const defaultCorsHeaders = {
"access-control-allow-origin": "*",
"access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS",
"access-control-allow-headers": "Content-Type, Accept",
"access-control-max-age": 10 // Seconds.
};
4. 콘솔 디버깅
- nodemon –inspect-brk server/bascir-server.js
- vs.code 에서 빨간점 찍는게 breakpoint 였구나!