밀집 배열(dense array) 밀집 배열은 동일한 크기의 메모리 공간이 빈틈없이 연속적으로 나열된 자료구조이다. 배열의 요소는 하나의 데이터 타입으로 통일되어 있으며 서로 연속적으로 인접해 있다. 이러한 밀집 배열이 자료구조(data structure)에서 말하는 배열이다. 이러한 일반적인 의미의 배열은 각 요소가 동일한 데이터 크기를 갖고, 빈틈없이 연속적으로 이어져 있다. 그러기에 아래의 연산을 통해 단 한 번의 연산으로 임의의 요소에 접근할 수 있다. 검색 대상 요소의 메모리 주소 = 배열의 시작 메모리 주소 + 인덱스 * 요소의 바이트 수 이처럼 매유 효율적이고 고속으로 동작하는 방식을 임의 접근(random access)라고 부르며 시간 복잡도는 O(1)이다. 다만, 정렬이 되지 않은 배열에..
객체의 프로퍼티(속성)는 점표기법을 통해 접근한다. const adventurer = { name: 'Alice', cat: { name: 'Dinah', }, }; const catName = adventurer.cat.name; console.log(catName); // Dinah 다만, 이렇게 중첩된 객체를 다룰 때 조심해야 할 부분이 있다. const adventurer = { name: 'Jake', }; const catName = adventurer.cat.name; console.log(catName); 이렇게 cat 프로퍼티를 가지고 있지 않은 adventurer은 cat 프로퍼티가 undefined이므로 adventurer.cat.name에 접근하면 에러가 발생한다. 그래서 catNa..
리액트 개발을 하다 보면 for 문이나 while 문보다는 Array 객체의 메서드(map, reduce, filter)를 더 자주 사용한다. 이러한 방식을 선언형 프로그래밍(Declarative Programming)이라고 하며 리액트 개발에서는 선언형 프로그래밍 방식이 더 선호된다. 그리고 이와 대비되는 개념은 명령형 프로그래밍(Imperative Programming)이라 한다. 반복문에서의 명령형 프로그래밍과 선언형 프로그래밍 명령형 프로그래밍 명령형 프로그래밍(Imperative Programming)은 기존에 일반적으로 사용되는 프로그래밍 방식이다. const numbers = [1, 2, 3, 4, 5]; let sum = 0; // numbers 배열의 짝수 합 for (let i = 0;..
세션과 쿠키의 작동 방식: Django에서 로그인 시, 사용자의 세션 정보는 서버의 데이터베이스에 저장됩니다. 이 세션에는 랜덤으로 생성된 세션 ID가 포함되어 있습니다. 서버는 이 세션 ID를 쿠키에 담아 브라우저로 보냅니다. 브라우저는 이 쿠키를 저장하고, 이후 동일한 도메인으로 요청을 보낼 때마다 이 쿠키를 함께 전송합니다. 도메인 기반 쿠키: 쿠키는 도메인을 기준으로 작동합니다. 특정 도메인에서 생성된 쿠키는 해당 도메인에 대한 요청 시에만 브라우저에 의해 전송됩니다. 이는 보안과 관련된 중요한 특징입니다. CORS 설정: 프론트엔드(예: React)와 백엔드(Django)가 다른 도메인 또는 포트에서 실행될 때, 백엔드에 대한 AJAX 요청을 위해 CORS_ALLOWED_ORIGINS 설정이 필..
Django는 사용자 인증 및 관리를 위해 여러 유틸리티 함수를 제공합니다. check_password, set_password, authenticate, login, logout 함수들을 예시로 들 수 있습니다. 1. check_password() 용도: 사용자의 비밀번호가 입력된 비밀번호와 일치하는지 확인합니다. 예시: from django.contrib.auth.models import User user = User.objects.get(username='myusername') if user.check_password('mypassword'): print("비밀번호가 일치합니다.") else: print("비밀번호가 일치하지 않습니다.") 2. set_password() 용도: 사용자의 비밀번호를 ..
JavaScript에서 접근자 프로퍼티와 캡슐화 접근자 프로퍼티: Getter와 Setter JavaScript에서 객체의 프로퍼티에는 크게 두 가지 유형이 있습니다. 데이터 프로퍼티와 접근자 프로퍼티입니다. 데이터 프로퍼티 기본적으로 변수에 값을 할당하는 것처럼 객체의 프로퍼티에 값을 저장하는 것을 '데이터 프로퍼티'라고 부릅니다. const car = { model: "Sedan", year: 2022 }; 접근자 프로퍼티 반면에, 접근자 프로퍼티는 실제 값을 갖지 않습니다. 대신, 다른 프로퍼티의 값을 읽거나 저장할 때 작동하는 get과 set 메서드를 정의합니다. const student = { _score: 90, get score() { return this._score; }, set scor..