목록분류 전체보기 (294)
Muscardinus
이차원 배열 생성 const map = Array.from(new Array(3), () => new Array(3)); for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { map[i][j] = 1; } } map[0].push(3); map
한 줄로 입력을 받을 때 const fs = require('fs'); const input = fs.readFileSync('/dev/stdin').toString().trim().split(" "); // input이 숫자일 경우 // Number 처리 필요 여러 줄로 입력을 받을 때 const fs = require('fs'); const input = fs.readFileSync('/dev/stdin').toString().trim().split("\n"); // input이 숫자일 경우 // Number 처리 필요
TCP 커넥션 HTTP는 아직까지는 TCP로 이루어져 있다 HTTP를 TCP를 바탕으로 요청하나는 과정 1. 목적지의 IP: port로 TCP 커넥션을 맺고 2. 목적지 서버로 GET을 하고 3. 응답 메세지를 읽고 4. 커넥션을 끊는다 TCP는 소켓을 기반으로 커넥션이 맺어지는데, 케넥션을 맺어주는 server측 bind port는 따로 있고, 실제 connection이 맺어지는 port는 다르다 또한 하나의 port에 여러 개의 connection이 존재할 수 있다 이는 왜냐하면 TCP는 4-tuple을 기반으로 커넥션을 정하기 때문이다. 4-tuple : , : TCP 커넥션 성능 관리 TCP 성능이 많이 느려지는 이유 TCP 커넥션의 핸드세이크 설정 3-way 헨드세이크가 문제 SYN과 SYN-A..
메세지의 흐름 메세지는 항상 인바운드에서 아웃바운드로 이동한다 메세지의 각 부분 HTTP 메세지는 부분적으로 나뉘어져 있다 HTTP/1.0 200 OK // 시작줄 --------------------------- Content-type: text/plain // 헤더 Content-length: 10 --------------------------- Hi I'm a message! // 본문 전체적으로 시작줄은 HTTP 프로토콜과 status를 명시하고 헤더에는 본문에 담긴 Content의 종류와 길이 그리고 본문에는 내용을 명시하고 있다. 메서드 (Method) HTTP를 요청하기 위해서는 메서드라는 것이 존재하는데 메서드 설명 메세지 본문이 있는가? GET 서버에서 어떤 문서를 가져온다 없음 HEA..
웹 리소스란? 웹에 콘텐츠를 제공하는 모든 것 웹 서버는 모든 HTTP객체 데이터에 MIME(Multipurpose Internet Mail Extension) 타입을 설정한다 우리가 개발할때 사용하는 Content-Type 혹은 Accept-Type에서 헤더로 지정한다 URI는 Uniform Resource Identifier의 약자로서 자원의 식별자 같은 느낌이다 https://www.naver.com/special/download.gif 오늘날 위와 같은 URL이 URI가 되는 것이다 https:// -> scheme www.naver.com -> 인터넷 서버의 주소 /special/domain.gif -> 리소스 트랜잭션 HTTP Protocol을 통해서 요청 명령과 응답 결과로 이루어진 하나의 ..
SortableList.jsx import React, { useState, useCallback } from "react"; import "./SortableList.css"; import SortableListItem from "./SortableListItem"; function SortableList({ data, onDropItem, onClickItem, renderItem }) { const [startIndex, setStartIndex] = useState(0); const [listData, setListData] = useState(data); const onDragStart = (index) => setStartIndex(index); const onDrop = useCallback..
class Router { routes = []; notFoundCallback = () => {}; addRoute(url, callback) { this.routes.push({ url, callback }); return this; } checkRoute() { const currentRoute = this.routes.find( (route) => route.url === window.location.hash ); if (!currentRoute) { this.notFoundCallback(); return; } currentRoute.callback(); } init() { window.addEventListener("hashchange", this.checkRoute.bind(this)); i..