본문 바로가기

분류 전체보기44

HTTP/1.0 ~ 3.0까지 HTTP/1.0HTTP/1.0은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계되었습니다. 이는 RTT 증가를 불러오게 되었습니다.서버로부터 파일을 가져올 때마다 TCP의 3-웨이 핸드셰이크를 계속해서 열어야 하기 때문에 RTT가 증가하는 단점이 있었습니다.RTT패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간이며 패킷 왕복 시간RTT증가를 해결하기 위한 방안매번 연결할 때마다 RTT가 증가하니 서버에 부담이 많이 가고 사용자 응답 시간이 길어졌습니다. 이를 해결하기 위해 이미지 스플리팅, 코드 압축, 이미지 Base64 인코딩을 사용하곤 했습니다.이미지 스플리팅많은 이미지를 다운로드받게 되면 과부하가 걸리기 때문에 많은 이미지가 합쳐 있는 하나의 이미지를 다운로드받고, 이를 기반.. 2025. 5. 20.
SOLID 원칙이란? SOLID 원칙: 객체 지향 설계의 5대 원칙SOLID는 소프트웨어 설계를 더 유지보수 가능하고 확장 가능하게 만드는 5가지 원칙을 의미합니다.로버트 C. 마틴(Robert C. Martin, "Uncle Bob")이 정리한 객체 지향 프로그래밍(OOP)의 중요한 설계 원칙입니다.좋은 설계란 시스템에 새로운 요구사항이나 변경사항이 있을 때, 영향을 받는 범위가 적은 구조를 말한다. 그래서 시스템에 예상하지 못한 변경사항이 발생하더라도, 유연하게 대처하고 이후에 확장성이 있는 시스템 구조를 만들 수 있습니다.즉, SOLID 객체 지향 원칙을 적용하면 코드를 확장하고유지 보수 관리하기가 더 쉬워지며, 불필요한 복잡성을 제거해 리팩토링에 소요되는 시간을 줄임으로써 프로젝트 개발의 생산성을 높일 수 있습니다.1.. 2025. 2. 19.
HTTP/HTTPS란 HTTPHTTP(Hypertext Transfer Protocol)는 클라이언트와 서버 간 HTML과 같은 하이퍼미디어 문서를 전송하기 위한 통신 규칙 세트 또는 프로토콜이다. 사용자가 웹 사이트를 방문하면 사용자 브라우저가 웹 서버에 HTTP 요청을 전송하고 웹 서버는 HTTP 응답으로 응답한다.즉, HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜인 것이다. 클라이언트-서버 프로토콜이란 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미한다.클라이언트와 서버는 개별적인 메시지 교환에 의해 통신한다.요청(Requests): 클라이언트에 의해 전송되는 메시지응답(Responses): 서버에서 응답으로 전송되는 메시지HTTP의 무상태성HTTP는 무상태(stateless) .. 2025. 2. 10.
js에서 비동기란 무엇일까? 개요JavaScript를 공부하면서 가장 헷갈렸던 부분 중 하나는 비동기 처리였습니다.JavaScript는 싱글 스레드로 동작한다고 배웠는데, 동시에 여러 작업을 비동기적으로 처리할 수 있다고 하니 혼란스러웠습니다.“싱글 스레드인데 어떻게 비동기(병렬 처리)를 할 수 있을까?”결론부터 말하자면, JavaScript에서 비동기는 병렬로 작업을 처리한다는 뜻이 아닙니다.이 혼란은 비동기 처리의 본질을 제대로 이해하지 못한 데서 비롯됩니다.1. JavaScript는 싱글 스레드JavaScript는 싱글 스레드 기반 언어입니다. 즉, 한 번에 하나의 작업만 실행할 수 있습니다.모든 JavaScript 코드는 기본적으로 메인 스레드에서 실행되며, 콜 스택(Call Stack)을 통해 하나씩 처리됩니다.동기 작업의.. 2024. 12. 26.
[프로그래머스][js] 주차 요금 계산 문제 분석자동차들이 주차장에 들락날락하고 있다.각 차량마다 누적 주차 시간을 구해서 기본요금과 단위요금을 계산한다.문제 풀이function solution(fees, records) { var answer = []; var cars = {}; const timeTom = (time) => { let [a, b] = time.split(":").map(Number); return a * 60 + b; } for (let i = 0; i 0) { ans += Math.ceil(extime/fees[2]) * fees[3]; } cars[c].push(ans); } c = Object.keys(cars.. 2024. 7. 6.
JS - forEach(), reduce() forEach()const a = [1,2,3,4,5];라는 배열이 있다고 하자.forEach()를 통해 각 배열의 원소들을 순회할 수 있다.a.forEach((n, idx, arr) => { console.log(n, idx, arr);})1 0 [ 1, 2, 3, 4, 5 ]2 1 [ 1, 2, 3, 4, 5 ]3 2 [ 1, 2, 3, 4, 5 ]4 3 [ 1, 2, 3, 4, 5 ]5 4 [ 1, 2, 3, 4, 5 ]forEach문의첫번째 인자 n : 각 배열의 원소들두번째 인자 idx : 원소들의 인덱스세번째 인자 arr : 순회하는 배열reduce()const a = [1,2,3,4,5];라는 배열이 있다고 하자.reduce()는 배열의 요소를 순차적으로 순회하며 숫자든 배열이든 객체든.. 2024. 7. 5.
[백준][js] 20436_ZOAC 3 문제https://www.acmicpc.net/problem/20436 결과풀이const fs = require("fs");const filePath = process.platform === "linux" ? "/dev/stdin" : "boj/input.txt";const input = fs.readFileSync(filePath).toString().trim().split("\n");key = [['q','w','e','r','t','y','u','i','o','p'],        ['a','s','d','f','g','h','j','k','l'],        ['z','x','c','v','b','n','m']];right = ['y','u','i','o','p','h','j','k','l','.. 2024. 6. 23.
[자료구조] 배열, 링크드 리스트 1. 배열[array] 동일한 데이터 유형을 가집니다. 주로 동일한 데이터 유형을 가지지만 이질형 데이터도 지원 가능한 프로그래밍 언어도 있음 이질형 데이터들이 모인 집합체는 주로 레코드라고 함. 실제 메모리 상에서 물리적으로 데이터가 순차적으로 저장되기 때문에 데이터에 순서가 있으며, index가 존재하여 indexing 및 slicing이 가능합니다. indexing : index를 사용해 특정 요소를 리스트로 부터 읽어들이는 것 slicing : 요소에 특정 부분을 따로 분리해 조작하는 것 장점 인덱스를 이용한 접근이 가능하기 때문에 모든 요소에 빠르게 접근할 수 있습니다. 기록 밀도가 1이기 때문에 공간 낭비가 적습니다. 리스트, 그래프 등은 데이터 외에 포인터 등 부가정보를 가지기 때문에 기록밀.. 2023. 7. 15.
산업체 특강 리뷰 - level up! Level UP!(산업체 특강 리뷰)  본 리뷰는 학교 수업 중 산업체특강이라는 수업에서 여러 전문가 강사님들을 초청해서 좋은 강의들을 들을 수 있게되어 이번 주에 들었던 권문범 강사님의 강의에 대한 리뷰입니다.권문범 강사님(피닉스 다트, 개발이사)프로필-http://maskkwon.tistory.com/?fbclid=IwAR2Jx9were1BhvF5zihPpi8G_ikYD26xOsiTJ2Oa8EFDzQzbcoyZg7ML3RI 강사님의 이번 특강의 계기는 매년 핵데이 멘토로 참여하면서 학생들의 아쉬운 점을 많이 느끼게 되었다고 합니다.  아쉬운 점은 학생들이 성능을 잘고려하지 않는다는 것과 협업이 어색하다는 것, 그리고 오픈소스를 ‘사용만’ 한다는 점인데요, 특히 오픈소스 사용에 대해 아쉬운 점이 많아,.. 2023. 3. 20.