본문 바로가기

전체 글64

[WEB] HTTP / HTTPS 1. HTTP / HTTPSHTTP는 HyperText Transfer Protocol의 약자로 WWW상에서 정보를 주고 받는 프로토콜이다.쉽게 말해 HTTP는 웹 브라우저와 웹 서버가 웹 페이지와 같은 데이터나 자원을 주고 받을 때 사용하는 통신 규약이다.HTTP는 하이퍼텍스트, 즉 텍스트의 교환이기 때문에 악의적인 누군가(해커)가 네트워크에서 신호를 가로채어 본다면 내용이 노출되는 문제가 있다. HTTPS는 이러한 HTTP의 보안의 문제를 해결하기 위해 HTTP에 SSL을 추가한 것으로 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 해주고, 서버와 브라우저가 민감한 정보를 주고 받을 때 해당 정보가 도난당하는 것을 막아주는 역할을 한다.즉, HTTPS는 인터넷 상에서 정보를 암호화하는.. 2024. 1. 8.
[Web] 웹 브라우저 성능 개선 및 웹 서버 부하 완화 0. 웹 서버 부하 완화 및 웹 페이지 조회 성능 개선웹의 본질은 웹 서버가 클라이언트(웹 서버 혹은 웹 브라우저)의 요청에 따라 그에 맞는 웹페이지를 반환한다.웹 페이지 뿐 아니라 영상, 음성, 이미지 등 모두 반환 = 통칭 HTTP Resource웹의 본질에 따라웹 브라우저는 매번 웹 서버에게 요청해서 결과를 받아와야 하고웹 서버는 매번 웹 브라우저의 요청에 대해 결과를 만들어 반환해야한다.그래서 웹 브라우저와 웹 서버는 너무 힘들다.웹 브라우저 : 결과가 똑같다면 웹 브라우저는 매번 웹 서버에서 결과를 받아올 필요가 없다.이전에 받았던 결과를 저장 후, 매번 같은 요청이 오면 저장한 결과를 재사용하면 되지 않을까?웹서버 : 결과가 똑같다면, 웹 서버는 매번 웹 브라우저에게 만들어 줄 필요가 없다.이.. 2024. 1. 7.
[WEB] Cache / HTTP Cache 1. 메모리 계층 구조캐시에 대해서 이야기 하기 전 데이터를 저장하는 공간의 속도와 용량의 관계에 대해서 먼저 이야기 해보자.위의 그림으로 보면 아래쪽으로 갈수록 데이터를 저장할 수 있는 용량의 크기가 커지고 속도는 느려진다.반대로 위쪽으로 갈수록 데이터를 저장하는 용량은 작아지지만 속도가 빨라진다.이처럼 기본적이로 데이터를 저장하는 공간에서 속도와 저장용량은 반비례라고 생각할 수 있다. 사실 아래에서도 많은 이야기를 하겠지만 기본적으로 컴퓨터 공학의 발전은 효율을 굉장히 따지면서 큰 발전을 이루었던 것 같다. 속도도 빠르고 저장 용량도 크면 매우 좋겠지만 비용이 많이 들고 그러한 비용을 다른 곳에 쓰는 것이 더 큰 효율을 낼 수 있었다.2. 파레토의 법칙갑자기 파레토의 법칙을 이야기 하는 것이 이상하겠.. 2024. 1. 6.
[Web] 웹 구성 간 흐름 0. 웹 전체 개요 학습의 중요성웹의 본질은 클라이언트가(웹 브라우저)가 요청을 주고 웹 서버가 그에 맞는 결과는 받는 그 사이의 모든 것이다.1. 웹의 등장세계의 여러 대학과 연구기관에서 일하는 물리학자들 상호간 신속한 정보교환과 공동 연구를 위해 개발여러 컴퓨터에 저장된 논문, 실험결과 등의 문서들을 공유하기 위한 기술 논문, 실험 결과 등의 문서 = 웹 페이지웹 페이지는 특수한 언어(HTML)로 제작되어 있어서 인간이 바로 읽을 수 없음웹 페이지 리더기 = 웹 브라우저여러 컴퓨터 = 웹 서버 : 각 컴퓨터는 웹 페이지를 제공한다(serve)는 측면에서 웹 페이지 제공자 = 웹서버라고 할 수 있음 1-1. 웹 페이지HTML : 문서CSS : 서식 - Cascading의 의미는 무엇일까?Selector.. 2024. 1. 5.
[OS] Process / Thread Process와 Thread모두 프로그램의 실행과 관련된 단어들이다.  프로세스와 스레드의 차이점을 결론부터 말하자면Process는 실행의 단위, Thread는 Process 내에서 실행되는 흐름의 단위로 Process는 독립적으로 실행되지만 Thread는 Process 내의 Thread들 끼리는 Heap, Data 등(Stack은 개별 할당)을 공유한다. 그렇다면 프로세스와 스레드 모두 프로그램의 실행과 관련된 단어라면 프로그램과 프로세스의 차이점은 무엇일까? 간단하게 설명하면 프로그램은 아직 실행되지 않은 파일 그 자체로 쉽게 말해 코드 덩어리라고 보면 될 것 같다.반대로 프로세스는 프로그램을 실행하였을 때 해당 파일이 컴퓨터 메모리에 올라가게 되고 동적인 상태의 프로그램이다.간단하게 요약하자면 음식.. 2023. 12. 29.
[알고리즘/프로그래머스] 아이템 줍기 (Lv.3) [ 문제이해 ] 이 문제는 좌표평면에 여러개의 사각형이 놓여 하나의 다각형의 형태로 이루어져 있을 때, 다각형의 둘레를 따라 캐릭터가 이동하며 아이템이 놓여있는 곳까지의 최소 거리를 구하는 문제이다. 문제의 경우에서는 2개 이상의 다각형 또는 한 직사각형이 다른 직사각형을 완전히 포함하는 경우를 제외하기 때문에 어렵지 않은 문제였다. [ 문제풀이 ] 이 문제에서의 키 포인트라면 좌표 평면을 기준으로 플레이어가 둘레를 따라 움직여야 한다. 하지만 일반적인 DFS로 해결하려 한다면 위의 빨간줄을 따라 캐릭터가 이동한다면 캐릭터가 (3, 5)에 위치한다면 (4, 6)으로 이동할 뿐 아니라 (3, 6)으로도 이동할 수 있다. 이 방법은 생각보다 매우 쉽게 해결되었다. 그 방법은 바로 모든 좌표를 2배로 늘려주어.. 2023. 10. 4.
[OS] SystemStructure & Program Execution 1 CPU + Memory → ComputerI/O deviceInput : I/O device에서 입력된 데이터가 컴퓨터로 보내지는 방향Output → 컴퓨터에서 데이터를 처리 후 그 결과를 필요한 device로 내보내는 방향1. CPUcpu는 pc가 가리키는 메모리주소에 있는 Instruction을 읽고 실행하는 것.다음 Instruction을 읽기 전에 Interrupt line을 체크하여 Interrupt가 있다면 기존에 실행중인 작업 멈추고 cpu를 누가 쓰고 있었든 상관없이 cpu제어권이 운영체제에게 넘어가게 된다.운영체제는 매 Interrupt 마다 Interrupt가 걸린 이유가 os 안의 커널 함수로 정의되어 있다.Interrupt Vector(인터럽트 번호와 주소의 쌍) / 실제 해야 하는.. 2023. 10. 4.
[알고리즘/프로그래머스] 양과 늑대 (Lv.3) [ 문제이해 ] 문제의 기본 유형은 이진 트리 모양의 초원에 각 노드마다 양 또는 늑대가 한마리씩 놓여있다. 이때, 루트 노드에서 출발하여 각 노드를 돌아다니면서 노드에 있는 동물을 데리고 다니는데 양의 수가 늑대의 수보다 항상 많아야 한다. 만약 늑대의 수가 더 많다면 양은 모두 잡아먹혀 양은 0마리가 된다. 또한, 한번 방문한 노드를 다시 방문할 수 있고, 중간에 양이 잡아 먹히지 않으면서 가장 많은 수의 양을 모으는 경우에서 양의 수를 결과값으로 내면 된다. [ 문제풀이 ] 사실 문제 자체는 어렵지 않아 처음 문제를 접했을 때, 간단한 DFS문제로 해결하면 되는 줄 알았다. 하지만 보통의 DFS의 경우 한번 방문한 노드의 경우 다시 방문하지 않는다. 이 문제에서는 방문한 노드를 다시 방문해도 되지만.. 2023. 10. 4.
플로이드 와샬(Floyd-Warshall)알고리즘 최단 거리를 구하는 다양한 알고리즘이 있지만 오늘은 플로이드 와샬의 개념과 구현에 대해서 한번 포스팅 해보려고 한다. 1. 플로이드 와샬 알고리즘 개념플로이드 와샬 알고리즘과 다른 최단 경로를 찾는 알고리즘의 차이점은 플로이드 와샬의 경우 모든 정점에서 모든 정점으로의 최단 경로를 한번에 구한다. 즉 정점과 정점, 모든 쌍의 최단 경로를 구하는 것이다. 방법은 먼저 가능한 모든 쌍을 표현하는 행렬(이차원 배열)을 선언하고 다이나믹 프로그래밍(dp)의 방식으로 각각의 원소들(각 쌍의 최단거리)을 업데이트 해나간다.업데이트 기준를 행하는 기준은 현재 거쳐가는 정점이다거쳐가는 정점을 기준으로 알고리즘을 수행한다.i 에서 j 로 가는데 해당 정점을 경유해서 가는 것이 더 빠르다면 그 정점을 거쳐서 가는걸로 업데.. 2023. 10. 2.