목록Language (16)
개발자공부일기
Express란?Express는 웹 및 모바일 애플리케이션을 위한 일련의 강력한 기능을 제공하는 간결하고 유연한 Node.js 웹 애플리케이션 프레임워크이다. 사실상 Nodejs의 표준 웹서버 프레임워크로 불려질 만큼 많은 곳에서 사용하고 있다. 그렇다면 Node.js와 Express는 무슨 관계인가? Node.js는 Chrome의 V8엔진을 이용하여 javascript로 브라우저가 아니라 서버를 구축하고, 서버에서 JavaScript가 작동되도록 해주는 런타임 환경(플랫폼)이라고 했다. Express는 이런 Nodejs의 원칙과 방법을 이용하여 웹애플리케이션을 만들기 위한 프레임워크이다. 프레임워크란?이처럼 목적에 필요한 것을 고민할 필요 없이 이용할 수 있도록 일괄로 가져다 쓰도록 만들어 놓은 '구조..
────────────────1.화살표 함수(Arrow Function)란?────────────────화살표 함수는 ES6에서 추가된 새로운 함수 문법이다.기본 형태const add = (a, b) => { return a + b;};조금 더 줄이면const add = (a, b) => a + b; // 한 줄이면 return 생략 가능매개변수가 하나면 괄호도 생략 가능const square = x => x * x;객체를 바로 반환할 때는 소괄호로 감싸야 한다const makeUser = (name, age) => ({ name, age });여기서 객체를 반환할때 소괄호를 쓰는 이유는 {}만 있으면 이게 로직을 감싼건지 객체인지 구별하지 못하기 때문이다. ────────────────2. this와..
auto란 무엇인가?auto는 C++11부터 도입된 타입 추론 키워드입니다. 즉, 변수 선언 시 개발자가 자료형을 직접 쓰지 않아도 컴파일러가 자동으로 판단하여 변수 타입을 정해줍니다.예전에는 반복자를 다음과 같이 선언해야 했습니다.std::vector::iterator it = vec.begin();하지만 auto를 사용하면 아래처럼 훨씬 간단하게 쓸 수 있습니다.auto it = vec.begin();auto의 주요 특징복잡한 타입도 자동 처리: 반복자, 람다, map, pair 등에서 유용코드 가독성 향상: 자료형 생략으로 깔끔한 코드 작성 가능유지보수에 유리: 자료형이 바뀌어도 변수 선언을 바꿀 필요가 없음rbegin()과 rend()란 무엇인가?STL 컨테이너에서는 일반적으로 begin()과 e..
최근 프로젝트에서 Middleware를 통해 인증 로직을 추가하던 중, 문제가 발생했다.JWT 토큰을 검증하기 위해 jsonwebtoken 라이브러리를 사용했는데, 실행 시 "Edge 환경에서는 지원되지 않는다"는 에러가 나온 것이다.분명히 환경을 바꾼 적이 없는데, 왜 Edge 환경에서 실행되는 걸까?이번 글에서는 Next.js에서 Node.js와 Edge 환경이 각각 어디서 실행되고, 어떤 차이가 있는지를 정리해본다.Next.js 안의 실행 영역Next.js 프로젝트는 단순히 서버에서만 돌아가는 게 아니다. 내부적으로 여러 실행 영역이 나뉘어 있고, 각각의 영역이 다른 런타임을 사용한다. 크게 네 가지로 나눌 수 있다.브라우저(Client)사용자의 PC나 스마트폰에서 실행되는 부분React 클라이언..
회사측에서 한달인턴을 시작하기 전에 알아보면 좋다고하신 크롤링 도구들을 살펴볼 예정이다.모두 Python에서 동작한다(Python에서만 동작하는 도구도 있지만 아닌 도구들도 있다.)1. Requests개요HTTP 요청을 통해 웹 페이지의 HTML 코드를 가져오는 가장 기본적인 크롤링 도구입니다.자바스크립트 렌더링이 필요 없는 정적 페이지 크롤링에 매우 적합합니다.동작 방식서버에 GET, POST 등 HTTP 요청을 보냅니다.서버로부터 받은 응답(response)의 본문을 파싱하거나 저장합니다.보통 BeautifulSoup, lxml 등의 HTML 파서와 함께 사용합니다.주요 메서드 및 매개변수requests.get(url, params=None, headers=None, cookies=None, time..
C++란 무엇인가C++은 고성능, 고수준, 저수준 프로그래밍을 모두 포괄할 수 있도록 설계된 범용 프로그래밍 언어이다.1980년대 초반, Bjarne Stroustrup에 의해 AT&T 벨 연구소(Bell Labs)에서 개발되었다.그 목적은 기존 C 언어의 효율성과 제어 능력을 유지하면서, 객체지향 프로그래밍(Object-Oriented Programming, OOP)의 구조적 설계 개념을 통합하는 데 있었다.1. 역사적 배경C++은 초기에 "C with Classes"라는 이름으로 불렸다.이는 기존의 C 언어에 클래스(class)라는 개념을 추가한 것에서 출발했기 때문이다.이후 점진적인 확장을 거쳐 템플릿, 예외 처리, 표준 라이브러리(STL), 멀티스레딩 지원 등의 기능을 추가하면서 현재에 이르고 있..
C#에서 인터페이스 (Interface)를 사용하는 이유1. 다형성 (Polymorphism) 제공인터페이스를 사용하면, 여러 클래스가 동일한 메서드를 구현하더라도 그 메서드의 실행 방식은 다르게 할 수 있습니다. 즉, 인터페이스를 통해 여러 다른 타입의 객체들이 동일한 메서드를 호출할 수 있도록 하여 다형성을 구현합니다.예를 들어:public interface IShape{ void Draw();}public class Circle : IShape{ public void Draw() { Console.WriteLine("Drawing a circle"); }}public class Square : IShape{ public void Draw() { ..
행렬의 크기를 입력받고 두 행렬의 값들을 입력받아 두 행렬을 더하는 백준문제를 다음과 같은 코드로 풀었다.#include using namespace std;int main(void){ int n=0,m=0; cin>>n; cin>>m; int A[n][m],B[n][m],C[n][m]; for(int i=0;i>A[i][j]; } } for(int i=0;i>B[i][j]; } } for(int i=0;i근데 뭔가 찜찜해서 GPT한테 피드백을 받아보니 코드를 보면 동적으로 크기가 정해지는 2차원 배열을 선언하고 있습니다. 하지만 C++에서는 가변 길이 배열(VLA, Variable Length Array)을 공식적으로 지원하지 ..
