2026/06 40

[JavaScript] Node.js에서 .js와 .mjs 파일의 차이점

Node.js에서 JavaScript 파일을 작성하다 보면 .js와 .mjs확장자를 볼 수 있다.두 파일 모두 JavaScript 코드를 작성하는 파일이긴 하지만 모듈을 사용하는 방식에 차이가 있다. 프로젝트 환경에 따라 사용하는 모듈 방식이 달라지며, 모듈 방식에 따라 .js 또는 .mjs 확장자를 사용하게 된다.모듈(Module)이란?모듈은 관련된 기능이나 코드를 하나의 파일로 분리하여 관리하는 방식을 말한다. 프로젝트의 규모가 커질수록 하나의 파일에 모든 코드를 작성하게 되면 관리가 매우 어려워진다.그래서 기능별로 파일을 나눈 뒤, 해당 기능을 필요로 하는 파일에서 기능이 속해있는 파일을 불러와 사용하는 방식으로 프로젝트는 만들어진다. 예를 들어 회원 기능은 user.js, 관리자 기능은 admin..

웹 개발 2026.06.30

[JavaScript-Study Planner] D-Day, 정렬 기능 구현

JavaScript 기본 문법과 조작을 복습하기 위해 간단한 Study Planner를 제작하였다.TODO 리스트를 진행하며 배운 할 일을 등록하고 완료 상태를 관리하는 구조에서마감일 설정과 D-Day계산, 마감일 기준 정렬 기능을 추가하여 구현하였다. 🔗 GitHub: https://github.com/sdesign416/Mini-Projects/tree/main/02_StudyPlanner🔗 Demo: https://sdesign416.github.io/Mini-Projects/02_StudyPlanner/ 주요 기능학습 계획 등록하기(과목, 상세내용, 날짜)D-Day 계산계획 완료 상태 변경계획 삭제D-Day 기준 정렬1. 데이터 저장 구조입력받은 계획을 배열 안에 객체 형태로 저장하여 관리..

[Web Crawling] 웹 크롤링(Web Crawling) 설정방법(headers, robots.txt)

웹 크롤링(Web Crawling)은 웹사이트에 존재하는 데이터를 자동으로 수집하는 기술을 말한다.웹 크롤링은 기본적으로 웹페이지의 HTML 구조를 분석하고 필요한 데이터가 들어있는 태그를 찾아 원하는 값만 추출하는 방식으로 동작한다.사람이 직접 웹페이지에 접속하여 뉴스, 상품 정보, 이미지 등을 확인하는 과정을 프로그램이 대신 수행한다고 생각하면 된다.예를 들어 쇼핑몰 상품 정보를 모으거나, 뉴스 기사 제목을 수집하거나, 여러 페이지의 데이터를 분석해야 할 때 사용된다.1. 크롤링 라이브러리 설치Python에서 웹 크롤링을 하기 위해선 별도로 두가지 라이브러리를 설치해야한다. 1_1) RequestsRequests는 웹 서버에 요청을 보내 응답을 받아오기 위해 사용하는 라이브러리로쉽게 말해 Python..

데이터분석 2026.06.24

[알고리즘] 다익스트라 - heapq를 이용한 구현

[알고리즘] 다익스트라(Dijkstra)알고리즘 - 최단 경로와 동작 원리다익스트라 (Dijkstra) 알고리즘은 시작 정점에서 다른 모든 정점까지의 최단거리를 구하는 알고리즘이다. 예를 들어 지도 어플에서 현재 위치에서 목적지까지 가장 빠른 길을 찾거나네트워크에sdesign416.tistory.com다익스트라는 현재까지 발견한 거리 중 가장 짧은 정점을 선택하면서 최단 거리를 갱신하는 방식이다.하지만 정점이 많아질 경우 매번 가장 가까운 정점을 찾는 과정에서 많은 시간이 필요하다.이를 해결하기 위해 실제 구현에서는우선순위 큐(Priority Queue)와 힙(Heap) 자료구조를 사용한다.1. 우선순위 큐(Priority Queue)우선순위 큐는 일반적인 큐와 다르게먼저 들어온 데이터가 아니라 우선순위..

[알고리즘] 다익스트라(Dijkstra) - 최단 경로와 동작 원리

다익스트라 (Dijkstra) 알고리즘은 시작 정점에서 다른 모든 정점까지의 최단거리를 구하는 알고리즘이다. 예를 들어 지도 어플에서 현재 위치에서 목적지까지 가장 빠른 길을 찾거나네트워크에서 데이터가 이동하는 최적 경로를 찾을 때 사용된다. 다익스트라 알고리즘은 그래프의 가중치를 기준으로 최단 거리를 계산하기 때문에 가중 그래프에서 많이 사용된다. ※ 단, 다익스트라 알고리즘은 음수 가중치가 있는 그래프에서는 사용할 수 없다. 1. 최단 경로 알고리즘(Shortest Path Algorithm) 최단 경로 알고리즘은 그래프에서 특정 정점에서 다른 정점까지 이동할 때 가장 적은 비용이 드는 경로를 찾는 알고리즘이다.그래프의 가중치를 기준으로 최단 경로를 판단하기 때문에거리, 시간, 비용 등 어떤 값을 ..

[알고리즘] 그래프(Graph) - 가중치, 인접행렬, 인접리스트

그래프(Graph)는 정점(Vertex)과 간선(Edge) 으로 이루어진데이터간의 연결 관계를 표현한 자료구조이다. 트리가 계층 구조를 표현하고 있다면그래프는 객체들의 관계를 표현하는데 사용된다. 예를 들어 지하철 노선도, 길찾기 시스템등은 모두 그래프로 표현할 수 있는 예시이다. 즉, 트리는 위에서 아래로 뻗어나가는 구조를 유지해야 하지만그래프는 점과 점이 서로 연결되어 있어트리보다는 좀 더 자유롭게 연결된다라고 생각하면 된다.💡 트리와 그래프의 차이트리는 그래프의 한 종류에 속한다.하지만 트리는 계층 구조를 표현하기 위해 몇가지 제한 조건을 가진 그래프라 생각하면 된다.구분트리그래프구조계층 구조연결 구조방향 부모 → 자식 관계자유로운 연결사이클없음 가능루트 노드존재없을 수 있음예시폴더구조, 조직도지..

[알고리즘] 그리디(Greedy) 탐욕 알고리즘 - 거스름돈, 회의실, 배낭

그리디(Greedy) 알고리즘은 문제를 해결할 때 현재 시점 기준으로 가장 최선의 선택을 반복적으로 수행하며 결과에 도달하는 알고리즘으로탐욕적인 선택을 한다해서 탐욕 알고리즘이라고도 불린다. 그리디 알고리즘은 각 단계에서 가능한 최선의 선택을 하지만,그 선택이 전체 문제에 대해서 최적해를 보장하는지는 문제별로 다르게 나타난다. 쉽게 말해, 나무만 보고 숲은 보지 못하는 당장의 이익에만 얽매이는 모습이라 생각하면 된다.1. 그리디 알고리즘 동작 흐름그리디 알고리즘은 현재 상황에서 선택할 수 있는 후보들을 확인한 후,후보들 중 가장 좋아보이는 최선의 선택을 한다.선택한 결과를 문제에 반영하여 문제가 해결될 때 까지 반복하는 동작을 한다. 이때 특이한점은한 번 선택한 결과를 다시 되돌아가지 않는다는 점이다. ..

[JavaScript] 정규식(Regex)에서 +는 언제 사용할까?

JavaScript 정규식을 배우면서 회원가입 유효성 검사를 구현해보았다.전화번호와 이메일 검사를 만들면서 아래 코드를 작성하다보니전화번호 정규식에선 +를 사용하지 않고, 이메일 정규식에선 +를 사용하는 차이점이 있었다.이 외에도 어떤 부분에는 +를 사용하고 어떨때는 +를 사용하지 않는 경우가 있었다.이번 글에선 정규식의 +의 의미와 언제 사용하는지에 대해 정리하려한다.// 전화번호const expHpText = /^\d{3}-\d{3,4}-\d{4}$/// 이메일const expEmailText = /^[A-Za-z0-9\-\.]+@[A-Za-z0-9\-]+\.[A-Za-z]+$/+의 의미정규식에서 +는 앞에 있는 패턴이 1번 이상 반복된다는 의미를 가지고 있다.예를 들어 아래 코드는 영문 또는 숫자를..

웹 개발 2026.06.22

VSCode에서 바로 Github에 프로젝트 올리기

[Git, Github] Git 설치, Git과 Github 설정Git과 Github는 완전히 다르다.Git은 내 컴퓨터 안에서 소스코드를 기록하는 도구의 개념이고Github는 도구로 만든 결과물을 개발자들과 공유하고 협업할 수 있게 하는 공간의 개념이다.1. Git 설치하sdesign416.tistory.com컴퓨터에 Git이 설치되어있어야 하며VSCode에서 작업중인 프로젝트(올리고 싶은)를 열어두어야 한다. 1) 소스제어 > Initialize Repository VSCode 왼쪽 사이드바에 소스제어 아이콘을 클릭 후Initialize Repository를 클릭한다.2) 특정 파일만 빼고 올리고싶을 때폴더아이콘을 클릭하여 프로젝프 폴더로 돌아가.gitignore 파일을 하나 생성한다.생성된 파일 안..

웹 개발 2026.06.18

[알고리즘] 탐색 알고리즘② - 깊이 우선 탐색 (DFS), 너비 우선 탐색 (BFS)

[파이썬 알고리즘] 탐색 알고리즘① - 선형 탐색(Linear), 이진 탐색(Binary)탐색 알고리즘 (Search Algorithms)탐색(Search)은 말 그대로 탐색을 말하는데,여러 데이터 중에서 원하는 값을 찾는 과정을 의미한다. 예를 들어 연락처에서 특정 사람의 전화번호를 찾거나,도서관에sdesign416.tistory.com1. DFS (깊이 우선 탐색)DFS(Depth First Search)는 깊이 우선 탐색이라고도 부르며한 방향으로 끝까지 내려가보는 방식을 말한다. DFS는 한 경로를 끝까지 탐색한 뒤더이상 갈 곳이 없을경우 다시 돌아와 다른 길을 탐색하는 방식이다.깊게 들어갔다가 되돌아오는 탐색이라 생각하면 된다.1_1) DFS 동작 과정시작 정점을 방문한다.현재 정점과 연결된 정점..