본문 바로가기

분류 전체보기

(122)
버퍼(buffer)와 스트림(stream) 버퍼와 스트림은 데이터를 처리하는 핵심 개념이다. 데이터를 효율적으로 전송하고 처리하는데 도움이 된다 버퍼 : 버퍼는 일시적으로 메모리에 데이터를 저장하는 구조다. 주로 크기가 고정되어 있으며 바이너리 데이터를 저장할 수 있다. 버퍼의 주요 목적은 데이터를 적절한 속도로 전송하고 처리하는 것이다. 예를 들어 소켓이나 파일 등의 입출력 작업에서 데이터를 버퍼에 저장하여 한 번에 읽거나 쓰는 작업을 수행할 수 있다. 이를 통해 비동기식 처리를 지원하며 성능 향상을 도모한다. 스트림 : 스트림은 데이터의 흐름을 나타내는 객체로 버퍼와 함께 작동하여 데이터를 청크(chunk) 단위로 처리한다. 스트림은 대용량 데이터를 처리하는 데 유용하며 메모리 효율을 높이는 데 도움이 된다. 스트림은 네 가지 유형으로 분류된..
node.js 모듈 시스템 node.js의 모듈 시스템은 코드를 작성하고 관리하기 쉽게 하기 위해 자바스크립트 파일을 여러 개의 작은 단위로 분리할 수 있는 기능을 제공한다. 이렇게 분리된 파일을 모듈이라고 부르며 각 모듈은 다른 모듈에서 사용할 수 있는 함수, 객체. 변수 등을 정의할 수 있다. 모듈을 사용하는 방법은 3가지가 있다. 내장 모듈 사용하기 node.js는 기본적으로 다양한 내장 모듈을 제공한다. 내장 모듈을 사용하려면 require 함수를 사용하여 모듈을 불러온다. const fs = require('fs'); 외부 모듈 사용하기 NPM(node package manager)을 사용하여 다른 개발자가 작성한 외부 모듈을 설치하고 사용한다. npm install axios node.js에서 모듈 시스템은 주로 Com..
개발 방법론 개발 방법론은 소프트웨어 개발 과정에서 사용되는 절차와 방법을 말한다. 이를 통해 개발자들은 프로젝트를 계획하고 관리하며 소프트웨어를 개발하고 유지보수할 수 있다. 소프트웨어 개발 방법론은 대표적으로 워터폴, 애자일 두 가지 방법론이 있다. 워터폴 방법론 워터폴 방법론은 계획 단계에서부터 순차적으로 진행되는 방식이다. 요구사항 정의 → 디자인 → 개발 → 테스트 → 배포 단계를 거치며 각 단계가 완료되어야 다음 단계로 넘어간다. 이 방법론은 각 단계가 분리되어 있어 각 단계에 발생한 문제를 해결하기 쉽다는 장점이 있다. 하지만 순차적으로 진행되기 때문에 프로젝트 일정이 지연될 가능성이 높다. 애자일 방법론 애자일 방법론은 작업 계획을 짧은 단위로 세우고 시제품을 만들어 나가는 사이클을 반복하여 고객의 요..
웹 보안 웹 개발에서 보안과 관련된 문제는 여러 가지 문제가 있다. 클라이언트 쪽에 구현된 보안 장치는 쉽게 무력화될 수 있다. 사용자가 개발자가 예상 못 한 패턴으로 사용할 수 있다. 사용자는 반드시 웹 브라우저 만을 사용하지 않는다. HTML 폼 필드에 보이지 않는 값으로 값을 변조할 수 있다. HTTP 쿠키 안에 포함되어 전달되는 세션 토큰을 조작할 수 있다. 정상적으로 제공될 특정 값을 제거할 수 있다. 악의적인 쿼리를 강제로 삽입해 입력값을 조작할 수 있다. 보안 문제를 해결하기 위해서는 여러 방법이 존재한다. SQL Injection 방어 SQL Injection은 데이터베이스를 공격하는 기법 중 하나다. 악의적인 SQL 문을 실행시켜 데이터베이스를 비정상적으로 조작하는 공격 기법이다. SQL Inje..
자료구조 알고리즘 자료구조 데이터 구조(Data Structure)는 컴퓨터 과학에서 데이터를 효율적으로 저장하고 조직화하고 관리하며 검색할 수 있는 방법이다. 데이터 구조는 알고리즘의 성능을 크게 향상시킬 수 있으며 프로그래밍에서 중요한 역할을 한다. 여러 종류의 데이터 구조가 있으며 각각의 데이터 구조는 특정한 목적에 따라 설계되어 사용된다. 일반적으로 사용되는 데이터 구조 배열(Array) : 같은 유형의 요소들을 연속된 메모리 공간에 저장하는 선형 데이터 구조 인덱스를 사용하여 빠른 검색과 수정이 가능 사용 예 : 같은반 학생들을 저장하는 데 사용할 수 있다. 연결 리스트(Linked List) : 노드들의 집합으로 각 노드가 다음 노드를 가리키는 포인터를 사용하여 연결되어 있는 선형 데이터 구조 동적 크기 조정이..
데이터베이스와 ORM 데이터베이스(Database) 데이터베이스는 구조화된 데이터를 저장, 관리 및 검색할 수 있는 시스템이다. 데이터베이스는 일반적으로 관계형 데이터베이스(RDBMS)와 NoSQL 데이터베이스로 구분할 수 있다 관계형 데이터베이스 테이블과 같은 개체를 사용하여 데이터를 구조화한다. SQL를 사용하여 데이터에 접근 및 조작을 수행한다. 대표적으로 MySQL, PostgreSQL, Oracle 등이 있다. NoSQL 데이터베이스 비관계형 구조를 가지며 문서, 그래프, 키-값 쌍 등 다양한 데이터 모델을 사용한다. NoSQL 데이터베이스는 확장성이 뛰어나고, 대용량 데이터를 처리하기에 적합한 경우가 많다. 대표적으로 MongoDB, Redis 등이 있다. ORM(Object Relational Mapping) O..
RESTful API RESTful API는 REST 원칙을 따르는 API를 말한다. API는 서로 다른 소프트웨어 간에 데이터와 기능을 공유할 수 있게 도와주는 인터페이스이다. REST는 웹 기반 시스템에서 사용되는 아키텍처 스타일로 간편하고 확장 가능한 인터페이스를 제공하는 것이 목표다. RESTful API는 다음의 특징을 가진다. 자원 지향 아키텍처 : RESTful API에서 모든 것은 자원으로 표현되며 각 자원은 고유한 URI를 통해 식별된다. 상태리스 : 서버가 클라이언트의 상태를 저장하지 않고 각 요청 독립적으로 처리된다. 이러한 상태리스 특성은 서버의 확장성과 신뢰성을 높여준다. 캐시 사용 가능 : RESTful API는 캐스를 사용하여 응답을 저장할 수 있다. 이를 통해 성능을 향상 시키고 서버의 부하를 줄..
HTTP와 HTTPS HTTP(HyperText Transfer Protocol) 웹에서 데이터를 전송하기 위한 프로토콜, 클라이언트와 서버 간에 요청 및 응답을 주고받는 방식으로 동작한다. HTTP는 상태가 없는 stateless 프로토콜, 각 요청과 응답은 독립적이고 서버는 이전 요청의 정보를 저장하지 않는다. 동작 순서 클라이언트에서 서버로 요청 : HTTP요청은 메서드(GET, POST, PUT, DELETE), 요청 URL, 프로토콜 버전, 헤더 정보, 요청에 대한 내용을 포함 서버에서 요청 처리 : 서버는 클라이언트의 요청을 받아 처리하고, 적절한 응답을 준비한다. 요청 처리는 웹 페이지를 반환하거나 데이터베이스에서 정보를 가져오는 등의 작업이 포함된다. 서버에서 클라이언트로 응답 전송 : 서비는 처리된 요청에 대..