본문 바로가기

전체 글120

[Data-Structure] Array, Linked-List Array : 배열이라는 뜻의 Array는 가장 기초적인 자료구조 형식으로, 논리적/물리적 저장 위치가 동일하다는 특징을 가지고 있다. 접근 (Access) : 위치 정보를 나타내는 인덱스(Index)를 이용하여 해당 원소에 바로 접근이 가능하다. 접근에 대한 시간 복잡도는 O(1)이라는 특성을 가지고 있는데 이는 삽입(Insert)/삭제(Delete)는 다른 결과를 보여준다. 삽입(Insert) / 삭제 (Delete) : [0,1,2,3,4,5,6,7,8,9] 이라는 Array에 '5' 라는 원소에 접근을 하여 삭제를 하게 된다면 [0,1,2,3,4, ,6,7,8,9] 이와 같이 바뀌게 되는데 '4'와 '6' 사이에 어떠한 값이 들어간 것이 아닌 빈 공간이 생겨버리게 된다. Array의 특성 상 빈 .. 2022. 12. 24.
[Database] ORM(Object-Relational Mapping) ORM (Object-Relational Mapping) : 객체와 관계형 데이터 베이스의 데이터를 자동으로 매핑해주는 것을 의미 Java와 같은 객체 지향 프로그래밍 언어들은 클래스를 선언하여 인스턴스에 정보를 저장하는 것처럼 관계형 데이터 베이스는 테이블을 생성하고 스키마를 기반으로 인스턴스에 정보를 저장한다. 여기서 클래스와 테이블은 모델 간의 불일치가 존재하고, 이를 ORM을 통해 객체 간의 관계를 바탕으로 Query문을 자동으로 생성하여 불일치를 해결한다. ORM의 간단한 예시로 SQL query문과 Python의 웹 프레임워크인 Django의 queryset을 비교해볼 수 있다. Example : # SQL SELECT ID FROM USER WHERE AGE = 50; 이는 SQL query.. 2022. 12. 23.
[Network] Cross-Origin Resource Sharing (CORS), Same-Origin Policy (SOP) 1. SOP (Same-Origin Policy) Cors를 이해하기 앞서 SOP라는 정책에 대하여 이해할 필요가 있다. 프로토콜, 호스트 및 포트가 같은 경우 URL은 동일한 출처를 가지고 있는 URL로 정의할 수 있다. https://ssnotebook.tistory.com의 각 부분 예시 - 프로토콜 : https - 호스트 : ssnotebook.tistory.com - 포트 : 생략 (http://127.0.0.1:80이라는 주소에서 :80의 부분에 해당) 위의 기준으로 3가지 조건이 같지 않다면 다른 출처를 뜻하게 되는 것이며, 특정 출처를 가진 자원과 다른 출처를 가진 자원(문서 또는 스크립트)이 상호작용 하지 못하도록 요청 발생을 제한하는 정책이 SOP이다. CSRF(Cross-Site R.. 2022. 12. 16.
[CS] Base64 (Encode/Decode) 1. 인코딩(Encoding) / 디코딩(Decoding) 인코딩(Encoding) : 파일에 저장된 정보의 형태나 형식을 특수한 목적(데이터 표준화, 보안 등)을 위해서 일정 규칙에 따라 다른 형태로 변환하는 행위 (암호화 또는 부호화라고도 불림) 디코딩(decoding) : 인코딩에 의해 변환된 데이터를 변환되기 전 기존의 데이터로 변환시키는 행위 (복호화라고도 불림) 2. Base64 Base64 : 2진수(Binary)로 이루어진 8bit 데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 문자로 표현하기 위해 만들어진 인코딩 방식이며 64진법을 기반으로 사용한다. 3. 인코딩 과정 1. 원본 문자 -> 문자를 ASCII 기반의 8bit binary(2진수)로 변환 ex) 'A' -> [10진.. 2022. 11. 30.
[Web] 토큰 기반 인증 / JWT (Json Web Token) 1. 토큰 기반 인증이란? 사용자가 자신의 신원을 검증하여 대가로 본인을 나타내는 고유 Access Token을 받는 프로토콜이다. 2. 인증 토큰 유형의 분류 인증 토큰은 전부 접근을 허용하나 다음의 세 가지의 유형 별로 다르게 작동한다. 1) Connected : 키, 디스크, 드라이브 등의 물리적 장치가 액세스를 위해 시스템에 연결 2) Contactless : 장치가 서버와 통신이 가능할 정도로 가까이 있으나 연결은 되어있지는 않은 상태 3) Disconnected : 장치가 다른 장치와 접촉이 없더라도 장거리 통신을 통하여 서버와 통신하여 작동 3. JWT (Json Web Token) 사용자가 웹/앱을 통하여 시스템에 액세스를 하는 수가 늘어나면서 플랫폼에 대한 안전한 인증 방법에 대한 필요성.. 2022. 11. 9.
[Network] DNS (Domain Name System) - Domain Name System이란? DNS를 알아보기 전에 먼저 Internet Protocol(IP)에 관하여 알 필요가 있다. * IP : 인터넷에 연결된 컴퓨터들은 IPv4와 IPv6의 방식의 숫자로 된 고유 주소를 가지고 있다. 사용자가 인터넷에 연결된 다른 장치를 찾고 상호작용을 하기 위해서는 해당 장치의 고유 IP를 알아야 했다. 그러나 숫자로 구성된 IP를 외우는 것은 쉽지 않았고 그래서 생긴게 DNS(Domain Name System)이다. DNS를 통하여 어렵게 IP를 외우지 않아도 문자로된 도메인 주소를 입력하면 브라우저에서 요청을 하여 그에 알맞은 IP를 변환해줌으로 통신이 가능하게 되었다. ※ Domain Name의 간단한 예시로 구글(www.google.com)이나 유튜브(.. 2022. 11. 4.