이론114 그래프 탐색하기 : BFS와 DFS 그래프와 트리는 정점(Node)과 간선(Edge)으로 이루어진 자료구조입니다. 점과 선을 통해 데이터를 저장하기 때문에, 그래프의 경우 도로, 전력망, 네트워크 등 우리가 살고있는 실제 세계를 모델링하는데 많이 사용되며 트리의 경우 컴퓨터의 디렉토리와 같은 계층 구조를 모델링하는데 사용됩니다. 어떤 트리나 그래프에서 특정 노드를 찾기 위해서는 구조 전체를 탐색할 필요가 있습니다. 기존 자료구조의 형식이나 특징에 따라 효율적인 탐색을 할 수 있도록 하는 몇 가지 방법이 있는데, 대표적으로 BFS(Breadth-First Search)와 DFS(Depth-First Search) 두 가지가 있습니다. 오늘 포스팅에서는 이 두 가지 탐색 방법들의 특징과 각 방법을 사용하기 좋은 케이스 등을 알아보겠습니다. B.. 2023. 3. 24. DES 알아보기 (Data Encryption Standard) 우리가 인터넷 상에서 데이터를 송·수신하는 것을 떠올려보면, 송신자에서 수신자에게 데이터가 전달되기까지 생각보다 꽤 많은 경로를 거쳐 지나간다는 것을 알 수 있습니다. 이런 점을 미루어보면 전송 과정 가운데 중간자가 요청을 가로채거나 하여 우리의 데이터가 남의 손에 들어가는 일은 그리 이상한 일이 아니라는 것을 깨닫습니다. 보수적으로 접근하면 오히려 항상 노출되어 있다고 보는 것이 무방합니다. 이렇게 위험한 데이터 통신이지만, 우리는 남에게 보여져서는 안되는 민감한 정보들을 하루에도 몇 번씩 보내곤 합니다. 아이디, 비밀번호, 계좌번호, 신상정보, 사생활 등등... 이런 정보들이 중간자에게 들어가서 악용될 수 있다고 생각하면 정말 끔찍한 일이 아닐 수 없겠죠. 그래서 사람들은 외부로부터 데이터의 기밀성을.. 2023. 3. 18. Nginx 리버스 프록시로 Mixed Content 우회하기 우리가 어떤 웹 서비스를 배포한다고 하면, 흔히 프론트엔드단에 보안 접속을 위한 https 프로토콜 연결을 적용해주게 됩니다. http대신 https를 사용함으로써 통신 내용을 암호화하면 중간자로부터 사용자의 정보를 보호할 수 있기 때문에 대부분의 서비스가 https 연결을 사용하고 있습니다. 이러한 특성 때문에 https 프로토콜을 사용하는 측에서는 오직 https 프로토콜을 사용하는 서비스끼리만 통신할 수 있습니다. 우리가 https 프로토콜을 사용한다고 해도, 상대측이 http 프로토콜을 사용하고 있다면 부분적으로만 암호화가 이루어진 상태이기 때문에 공격자가 암호화되지 않은 정보에 접근할 수 있어 위험하기 때문입니다. 실제로 https 프로토콜을 이용하는 측에서 http 프로토콜을 이용하는 측으로 .. 2023. 3. 12. JavaScript의 모듈 시스템에 대하여 오늘은 자바스크립트의 모듈 시스템에 대해 알아보겠습니다. 자바스크립트에서 어떻게 모듈 시스템이 생기고, 지금의 모습으로 발전해왔는지에 대한 내용을 배경 설명과 함께 작성해보도록 하겠습니다. 최초의 자바스크립트 최초의 자바스크립트에는 모듈 시스템이 없었습니다. 지난 글이었던 웹 표준에 대한 고찰에서 이야기 했던 내용처럼, 원래 HTML은 단순히 HyperText라고 부르는 정보를 전달하기 위한 문서였습니다. 자바스크립트는 이 HTML에 붙어 약간의 상호작용을 더해주는 한정된 역할만을 갖고 있었습니다. 다시 말하면, 그 당시의 자바스크립트 코드는 모듈 시스템을 구성할 필요가 없는 규모의 프로젝트였다는 의미입니다. 하지만 시간이 흘러 자바스크립트는 점점 더 많은 일을 할 수 있게 되었습니다. 단순한 정보 전달.. 2023. 3. 4. Yarn PnP가 Typescript를 인식하지 못할때 Cannot find module 'react' or its corresponding type declarations. Yarn berry 버전, 그 중에서도 PnP를 사용해 본 적이 있다면 한 번 쯤은 VSCode가 Typescript를 인식하지 못하는 오류를 겪어본 경험이 있으실겁니다. 보통 프로젝트를 처음 시작할때 가장 많이 발생하고, 이미 진행중인 프로젝트의 구조를 변경하다가 발생하기도 하는 오류입니다. Yarn의 공식 문서에서도 이 문제에 대한 해결 방안을 따로 섹션을 만들어 놓을 정도로 잘 알려진 오류이긴 하지만 막상 겪어보면 상당히 당황스럽습니다. 여기에서 안내하는 방법을 따르면 대부분의 문제는 해결됩니다. 저도 이 방법으로 매 번 효과를 보았었는데, 프로젝트 중간에 구조를 변경했던 이번 경.. 2023. 2. 25. 웹 표준에 대한 고찰 먼저 이 글을 쓰기 시작하면서, 웹 표준을 Frontend 카테고리에 넣는게 맞는지에 대한 의문이 들었습니다. 웹 표준은 직군에 상관없이 웹 서비스를 개발하고 운영하는 입장에서 응당 공부하고 지켜야 할 부분이지만, 이번에 다룰 내용은 굳이 나누자면 프론트의 입장에서 지켜야 할 원칙들을 위주로 작성할 예정이기에 우선 프론트 카테고리에 두고 시작하였습니다. 웹 표준이란 무엇일까 HTML, CSS, Javascript 등 프론트엔드 기술에 익숙하지 않은 동아리원들을 대상으로 스터디를 진행하며 리뷰를 하고 있었는데, 한 분이 제출하신 코드 중 현재는 사용되지 않는 라는 코드에 대해 "웹 표준" 을 근거로 들며 다른 방식을 권장한다는 코멘트를 남긴적이 있었습니다. 문득 생각이 들었습니다. 웹 표준이란 정확히 무엇.. 2023. 2. 15. 이전 1 ··· 3 4 5 6 7 8 9 ··· 19 다음