본문 바로가기

반응형

분류 전체보기

(654)
[ Node.js ] CommonJS vs ESM(ECMAScript Module) 비교 CommonJS와 ESM(ECMAScript Modules)은 JavaScript에서 모듈을 정의하고 불러오는 두 가지 주요 방식입니다. 두 모듈 시스템 모두 파일 간의 코드를 분리하고 재사용하는 방법을 제공하지만, 그 방식과 동작 원리에서 큰 차이가 있습니다. 아래에서는 CommonJS와 ESM의 주요 차이점을 설명합니다.1. 역사적 배경CommonJS개발 시기: CommonJS는 Node.js에서 사용하기 위해 만들어졌습니다. 브라우저 환경에서는 기본적으로 사용되지 않으며, Node.js의 초기 버전에서 모듈 시스템으로 채택되었습니다.목적: 서버 사이드 JavaScript의 모듈화를 위해 도입되었습니다.채택: Node.js가 처음 등장했을 때부터 기본 모듈 시스템으로 사용되어 왔으며, 현재도 대부분의..
[ Node.js ] Node.js 버전 역사. Node.js는 2009년에 Ryan Dahl이 처음 발표한 이후로 많은 업데이트와 버전 변경을 겪어왔습니다. 각 버전은 새로운 기능, 성능 향상, 보안 수정 등을 포함하고 있으며, Node.js 프로젝트는 LTS(장기 지원)와 Current(최신 기능) 릴리스라는 두 가지 버전 관리 체계를 따릅니다. 아래는 주요 버전 히스토리입니다:Node.js 주요 버전 히스토리Node.js 0.x 시리즈 (2009-2014)0.1.0 (2009년 5월 27일): 첫 번째 공개 버전. 이벤트 기반 비동기 I/O를 자바스크립트 환경에서 제공하는 것이 핵심 목표였습니다.0.10.x (2013년 3월 11일): 중요한 성능 개선과 스트림 API 개선이 도입됨.0.12.x (2015년 2월 6일): 새로운 기능들이 추가되었..
[ Linux ] useradd - 사용자 추가 및 삭제, sudo 권한 주기 Linux 시스템에서 사용자를 추가하고 삭제하는 방법은 명령어를 통해 수행할 수 있으며, 추가한 사용자에게 sudo 권한을 부여하는 과정도 포함됩니다. 아래는 각 단계별로 필요한 명령어입니다.1. 사용자 추가하기useradd 명령어를 사용하여 새로운 사용자를 추가할 수 있습니다. 사용자 이름을 username으로 가정하면 다음과 같이 사용자를 추가할 수 있습니다.sudo useradd -m username여기서 -m 옵션은 사용자의 홈 디렉토리를 생성합니다.사용자에게 비밀번호 설정:sudo passwd username이 명령어 실행 후, 신규 비밀번호를 두 번 입력해야 합니다.2. 사용자에게 sudo 권한 부여하기usermod 명령어를 사용하여 사용자를 sudo 그룹에 추가합니다.sudo usermod ..
[ Android ] sdcard 폴더 내 앱 데이터를 다른 앱에 제공하기 FileProvider는 Android에서 앱 간에 파일을 안전하게 공유할 수 있도록 도와주는 클래스로, 특히 Android 7.0(API 레벨 24)부터 도입된 "파일 URI 노출(File URI Exposure)" 문제를 해결하기 위해 사용됩니다. FileProvider를 사용하면 content:// 스킴을 사용하는 URI를 생성하여 다른 앱에 파일을 안전하게 공유할 수 있습니다.FileProvider 사용 방법1. FileProvider 설정먼저, FileProvider를 AndroidManifest.xml에 설정합니다. 이를 위해 요소를 추가하고, FileProvider가 제공할 수 있는 파일 경로를 정의하는 XML 파일을 준비합니다. android:name: androidx.core.co..
[ Java ] 자바 버전별 특징 살펴보기 자바는 1995년에 처음 발표된 이후로 여러 번의 주요 업데이트를 거치며 발전해왔습니다. 각 버전은 새로운 기능, 성능 개선, 보안 강화 등을 포함하여 자바 플랫폼의 기능을 확장했습니다. 주요 자바 버전의 특징과 장점을 살펴보겠습니다.1. Java 1.0 (1996)특징: 최초의 공식 자바 릴리스. GUI 애플리케이션 개발을 위한 AWT(Abstract Window Toolkit)와 기본적인 자바 클래스 라이브러리를 제공.장점: 플랫폼 독립성을 제공하여 "Write Once, Run Anywhere"라는 자바의 기본 철학을 확립.2. Java 1.2 (1998)특징: "Java 2"로 불리며, 스윙(Swing) API 도입으로 더 풍부한 GUI 컴포넌트를 제공. JIT(Just-In-Time) 컴파일러 ..
[ Java ] JIT 컴파일러 알아보기 자바의 JIT(Just-In-Time) 컴파일러에 대해 설명하겠습니다.1. JIT 컴파일러란?JIT(Just-In-Time) 컴파일러는 자바 가상 머신(JVM, Java Virtual Machine)의 중요한 구성 요소 중 하나로, 자바 애플리케이션의 성능을 최적화하기 위해 사용됩니다. JIT 컴파일러는 자바 바이트코드를 실행 중에 동적으로 컴파일하여 네이티브 기계어로 변환합니다. 이 과정을 통해 애플리케이션의 실행 속도가 향상됩니다.2. JIT 컴파일의 작동 방식1. 바이트코드 실행: 자바 코드는 먼저 소스코드(.java 파일)에서 바이트코드(.class 파일)로 컴파일됩니다. 이 바이트코드는 JVM에서 해석되고 실행됩니다.2. 프로파일링 및 최적화: JVM은 애플리케이션 실행 중에 성능이 중요한 부분..
[ Rust ] 숫자 변수 선언하기 러스트에서 숫자 변수를 선언하는 방법은 간단합니다. 러스트는 정적 타입 언어이기 때문에 변수의 타입을 명시적으로 선언하거나, 러스트가 자동으로 추론하게 할 수 있습니다. 숫자 변수는 여러 종류가 있으며, i32, u32, f64 등 다양한 타입이 있습니다.예제 1: 정수형 변수 선언fn main() { // i32 타입의 정수형 변수 선언 let x: i32 = 10; // 타입을 명시하지 않고 선언 (i32로 추론) let y = 20; println!("x: {}, y: {}", x, y);}예제 2: 부호 없는 정수형 변수 선언fn main() { // u32 타입의 부호 없는 정수형 변수 선언 let x: u32 = 30; // 타입을 명시하지 않고 선언..
[ Rust ] 반복자 무효화(iterator invalidation)에 대해서 알아보기 반복자 무효화(Iterator Invalidations)는 데이터 구조를 순회하는 동안, 그 데이터 구조가 변경될 때 발생하는 문제입니다. 일반적으로 배열, 벡터, 링크드 리스트 같은 자료 구조에서 반복자를 사용해 요소들을 순회하는 도중에 해당 자료 구조에 요소를 추가하거나 제거하면, 반복자가 가리키는 위치가 잘못되어 예상치 못한 동작을 초래할 수 있습니다. 이 상황을 반복자 무효화라고 합니다.반복자 무효화의 예시 (C++)C++에서 벡터(std::vector)를 사용할 때, 반복자 무효화가 어떻게 발생할 수 있는지 살펴보겠습니다.#include #include int main() { std::vector numbers = {1, 2, 3, 4, 5}; auto it = numbers.begi..

반응형