본문 바로가기

개발

(48)
자바스크립트 변수 선언 방법 비교 var, let, const 자바스크립트 변수 선언 방법 비교 var, let, const 1: 자바스크립트의 변수 선언 방식 변수는 프로그래밍에서 핵심적인 개념 중 하나입니다. 자바스크립트에서는 다른 언어와 달리 여러가지 변수 선언 키워드를 제공합니다. var부터 최신 ES6에 도입된 let과 const까지 살펴보겠습니다. 2: 각각의 변수 선언 키워드(var vs. let vs. const) var: - 함수 스코프를 가집니다. - 호이스팅 현상으로 인해 먼저 정의되기 전에도 사용할 수 있습니다. - 재선언이 가능합니다 . let: - 블록 스코프를 가집니다. - 호이스팅 현상은 발생하지만 초기화되기 전까지 접근할 수 없습니다. - 재선언은 불가능하며, 값의 변경은 가능합니다 const: - 블록 스코프를 가집니다. - 상수로서..
Docker Compose 개념과 사용법 명령어 정리 Docker Compose 개념과 사용법 명령어 정리 Docker Compose는 여러 개의 컨테이너를 정의하고 관리하기 위한 도구입니다. 이 글에서는 Docker Compose의 기본 개념과 활용 방법에 대해서 알아보겠습니다. Docker Compose 개요 Docker Compose는 도커 컨테이너간의 관계, 네트워크 및 볼륨 설정 등을 간략한 구성을 통해 관리할 수 있는 도구입니다. 이를 통해 애플리케이션의 여러 구성 요소들을 쉽게 묶어 관리할 수 있으며 YAML 형식의 파일로 작성됩니다. Docker Compose 설치 및 실행 a) 설치 Windows 및 Mac의 경우: Docker Desktop 설치시 자동으로 포함됩니다. https://www.docker.com/products/docker-..
도커(Docker) 명령어 총 정리 도커(Docker) 명령어 총 정리 Docker는 컨테이너 기술을 기반으로 애플리케이션을 실현하는 가상화 플랫폼입니다. 도커에서 자주 쓰이는 명령어에 대해 알아보겠습니다 Docker 개요 Docker는 컨테이너 기술을 활용하여 애플리케이션과 필요한 라이브러리 및 종속성을 묶어 하나의 패키지로 관리할 수 있는 플랫폼입니다. 이를 활용하면 코드, 라이브러리, 시스템 도구 등을 포함한 완전한 개발 환경을 쉽게 이식 및 배포할 수 있습니다. 자주 사용하는 도커 명령어 a) 이미지 관련 명령어 도커 이미지 목록 조회: docker images 이미지 받기(pull): docker pull 이미지 삭제: docker rmi 이미지 업로드(push): docker push 이미지 태그(tag): docker tag ..
모놀리식 마이크로서비스 아키텍처 차이점과 장단점 모놀리식 마이크로서비스 아키텍처 최근 IT 관련 아티클들을 둘러보면 모놀리스로부터 마이크로서비스 아키텍처로 전환하는 이야기가 빈번하게 보입니다. 이런 이야기들을 통해 대두되는 모놀리스와 마이크로서비스는 각각 소프트웨어 아키텍처 패턴에 대한 개념입니다. 특히, 꽤 최근에 등장한 마이크로서비스 아키텍처 때문에 두 가지 패턴 사이에서 비교가 자주 이루어집니다. 이 두 패턴은 서로 다른 장점과 단점을 가지고 있습니다. 지금부터 두 개의 아키텍처 패턴에 대해 자세히 살펴보도록 하겠습니다. 모놀로식(Monolithic) 모놀로식(Monolithic) 아키텍처는 하나의 소프트웨어를 구성하는 모든 모듈과 코드를 한 프로젝트에서 통합적으로 관리한다는 의미입니다. 이 방식에서 애플리케이션을 가동하기 위해서는 프로젝트를 실..
Django REST Framework(DRF) Serializer 이해하기, 장단점 Django REST Framework(DRF)는 Django 기반의 웹 API 개발을 위한 프레임워크입니다. 이 글에서는 DRF에서 중요한 역할을 하는 Serializer에 대해 알아보겠습니다. Serializer란? Serializer는 Django REST Framework에서 데이터의 직렬화(Serialization)와 역직렬화(Deserialization)를 담당하는 컴포넌트입니다. Django의 Model 인스턴스나 QuerySet을 JSON, XML 등의 컨텐츠 형태로 변환하거나, 반대로 클라이언트로부터 전달받은 데이터를 Model 인스턴스로 변환하는 작업을 수행합니다. Serializer는 데이터 유효성 검사와 같은 추가 기능도 제공합니다. Serializer 사용 방법 기본적으로 DRF에..
스택(Stack)과 큐(Queue): 개념과 활용 방법 스택(Stack)과 큐(Queue): 개념과 활용 방법 스택(Stack)과 큐(Queue)은 자료구조의 기본 개념 중 하나입니다. 이 글에서는 스택과 큐의 개념, 내부 동작 방식, 그리고 각각의 활용 방법에 대해 살펴보겠습니다. 스택(Stack) 스택은 후입선출(LIFO, Last-In-First-Out)의 구조를 가진 자료구조입니다. 스택의 내부 동작 방식은 데이터의 삽입(push)과 제거(pop)가 동일한 쪽에서 이루어지며, 최상위 항목(top)에만 접근이 가능합니다. 스택의 활용 방법으로는 함수 호출(Stack-based memory allocation) 등이 있습니다. 큐(Queue) 큐는 선입선출(FIFO, First-In-First-Out)의 구조를 가진 자료구조입니다. 큐는 데이터의 삽입(e..
해시 테이블(HashTable): 개념 및 활용 방법 해시 테이블(HashTable): 개념 및 활용 방법 해시 테이블(HashTable)은 데이터를 저장하는 자료구조 중 하나입니다. 이 글에서는 해시 테이블의 개념, 내부 동작 방식 및 활용 방법 등을 살펴보겠습니다. 해시 테이블이란? 해시 테이블은 키(key)와 값(value)을 쌍으로 저장하는 자료구조로, 특정한 값을 입력하면 해당 값이 저장되어 있는 위치를 반환하는 해시 함수(hash function)로 액세스할 수 있습니다. 해시 테이블은 데이터 검색 속도가 빠르다는 장점이 있으며, 데이터의 삽입, 삭제, 검색 등 다양한 작업에 적합합니다. 해시 함수와 해시 충돌 해시 함수는 임의의 길이를 가진 입력 값에 대해 고정된 길이의 결과 값을 반환하는 함수입니다. 해시 함수는 입력 값이 동일하면 항상 동일..
자바스크립트를 활용한 브라우저 개발자 도구 차단 방법 자바스크립트를 활용한 브라우저 개발자 도구 차단 방법 브라우저 개발자 도구는 웹 개발자들이 웹 페이지의 코드를 디버깅하고 분석하는 데 유용한 도구입니다. 그러나 때로는 보안 및 저작권 문제로 인해 개발자 도구의 사용을 제한하고 싶을 수도 있습니다. 이 글에서는 자바스크립트를 사용하여 브라우저 개발자 도구를 차단하는 방법과 보안의 한계에 대해 알아보겠습니다. 브라우저 개발자 도구 차단 방법 자바스크립트를 사용하여 브라우저 개발자 도구의 사용을 차단할 수 있지만, 이는 완벽한 차단이 아닌 일시적인 방법에 불과합니다. 일반적으로 다음과 같은 방법들을 사용하여 개발자 도구의 사용을 어렵게 만들 수 있습니다. 아래는 예시 코드입니다: document.addEventListener('keydown', functio..
자바스크립트 우클릭 방지: 빠르고 간편한 구현 방법 자바스크립트 우클릭 방지: 빠르고 간편한 구현 방법 자바스크립트를 사용하여 웹 페이지에서 우클릭을 방지하고, 원하는 요소의 보호와 사용자 경험을 향상시킬 수 있습니다. 이 글에서는 자바스크립트를 이용한 우클릭 방지 기능의 구현 방법과 주의점을 다루겠습니다. 자바스크립트를 사용한 우클릭 방지 구현 자바스크립트를 사용하여 웹 페이지 전체를 대상으로 우클릭 방지를 구현하는 방법은 다음과 같습니다. javascript document.addEventListener("contextmenu", function (e) { e.preventDefault(); // 우클릭 메뉴를 방지하도록 기본 동작 제거 }); 특정 요소에 대해서만 우클릭 방지를 구현하려면 해당 요소에 이벤트 리스너를 등록합니다. javascript ..
트리(Tree) 자료구조의 이해와 활용: 특징, 구현 및 사용 사례 알아보기 트리(Tree)는 계층적인 구조를 가진 자료구조로, 많은 분야에서 사용되며 효율적인 검색, 정렬 등의 연산을 가능하게 합니다. 이 글에서는 트리 자료구조의 특징, 구현 및 사용 사례를 살펴보겠습니다. 트리(Tree) 자료구조란? 트리는 계층 구조를 가진 노드(Node)로 구성된 비선형 자료구조입니다. 트리에는 루트 노드(Root Node), 부모 노드(Parent Node), 자식 노드(Child Node) 등으로 구성되며, 이러한 관계를 통해 일련의 노드들이 연결됩니다. 주요 용어로는: 루트 노드(Root Node): 트리 구조의 첫 번째 노드로, 모든 노드의 조상입니다. 부모 노드(Parent Node): 자식 노드를 가지고 있는 노드입니다. 자식 노드(Child Node): 한 노드에 연결된 하위 ..
ArrayList와 LinkedList 비교: 특징, 성능 차이 및 활용 상황 파악하기 자료구조의 선택은 프로그래밍의 효율성과 성능에 큰 영향을 미칩니다. ArrayList와 LinkedList는 서로 다른 특성을 가진 리스트 구조입니다. 이 글에서는 두 자료구조의 특징, 성능 차이 및 활용 상황을 알아보겠습니다. ArrayList와 LinkedList의 특징 ArrayList: 동적 배열로 구현된 리스트로, 인덱스를 사용하여 원소에 빠르게 접근할 수 있습니다. 원소 삽입/삭제 시 모든 원소를 이동시켜야 한다는 단점이 있습니다. LinkedList: 노드를 통해 이전/다음 원소와 연결되어 있는 리스트입니다. 원소 삽입/삭제가 빠르지만, 원소에 접근하려면 앞에서부터 순차적으로 찾아야 하는 단점이 있습니다. 성능 차이 원소 접근: ArrayList가 인덱스를 사용하여 원소에 직접 접근하기 때문..
자료구조(DataStructure)의 종류와 특징, 사용법 이해하기 자료구조는 프로그래밍의 핵심 요소로, 데이터를 효과적으로 저장 및 처리하기 위한 구조를 의미합니다. 이 글에서는 주요 자료구조의 종류와 특징, 그리고 사용법에 대해 알아보겠습니다. 자료구조(DataStructure)란? 자료구조란 데이터를 저장하고 구조화하는 방법입니다. 주어진 문제의 성격에 맞춰 적절한 자료구조를 선택하고 활용하면 프로그램의 효율성, 가독성, 유지 보수성이 크게 향상됩니다. 자료구조의 종류와 특징 자주 사용되는 다양한 자료구조 중 몇 가지를 소개하겠습니다. 각 자료구조의 특징과 장단점을 이해하고 적절한 상황에 맞게 활용해야 합니다. 배열(Array): 고정된 크기의 연속적인 메모리 할당으로 구성된 자료구조입니다. 인덱스를 사용하여 빠른 접근이 가능하지만, 크기 변경이 어렵다는 단점이 있..
파이썬 클래스와 인스턴스 이해하기: 개념, 예제 코드 및 활용 방안 소개 파이썬 클래스와 인스턴스 이해하기: 개념, 예제 코드 및 활용 방안 소개 파이썬은 객체 지향 프로그래밍 언어로, 클래스와 인스턴스를 활용하여 구조화된 코드를 작성할 수 있습니다. 이 글에서는 파이썬의 클래스와 인스턴스 개념을 소개하고 예제를 통해 이해를 돕겠습니다. 클래스(Class)란? 클래스는 객체의 공통된 속성(attribute)과 동작(method)을 추상화한 설계도입니다. 즉, 클래스를 통해 연관된 데이터와 기능을 하나로 묶어서 캡슐화할 수 있으며, 더 나아가 상속과 같은 객체 지향의 기능을 활용할 수 있습니다. 간단한 클래스 예시: python class Person: def __init__(self, name, age): self.name = name self.age = age def int..
파이썬 데코레이터의 원리 및 활용법: 코드 가독성과 효율성 향상 시키기 파이썬 데코레이터는 코드의 확장성과 재사용성을 개선하여 가독성과 효율성을 향상시키는 방법입니다. 이 글에서는 파이썬 데코레이터의 원리와 활용법에 대해 알아보겠습니다. 데코레이터란? 데코레이터는 함수나 메소드의 기능을 변경하지 않으면서 부가적인 처리를 추가할 수 있는 기법입니다. 파이썬에서는 기존 함수를 호출하는 것이 아닌, 함수를 감싸고 있는 새로운 함수를 호출함으로써 이 기법을 구현합니다. 데코레이터 작성하기 데코레이터는 전달받은 함수를 개조하여 반환하는 함수를 사용해 작성할 수 있습니다. 예제를 통해 간단한 데코레이터를 만들어 보겠습니다. python def my_decorator(func): def wrapper(): print("Something is happening before the func..
파이썬 GIL(Global Interpreter Lock) 이해하기: 병렬처리에 관한 성능 제한과 해결 멀티스레딩을 활용할 때 파이썬의 Global Interpreter Lock(GIL)이라는 특징에 자주 부딪힙니다. 이번 글에서는 GIL에 대한 이해와 이로 인한 병렬 처리 성능 제한 문제 및 해결 방법을 알아보겠습니다. 파이썬 GIL(global interpreter lock) 이란? 파이썬 GIL은 CPython 인터프리터에서 스레드가 동시에 실행되지 않도록 제어하는 메커니즘이자 잠금 기능입니다. GIL은 동시에 실행되는 스레드가 공유 리소스에 접근할 때 발생하는 동기화 문제를 방지하기 위해 도입되었습니다. 그러나 이로 인해 하나의 프로세스 내에서 여러 스레드를 실행하더라도 한 번에 하나의 스레드만 실행되어 CPU 바인드 작업에 병목 현상이 발생할 수 있습니다. GIL(global interpreter..
파이썬 제너레이터와 이터레이터: 차이점, 장단점, 사용법 파이썬 제너레이터와 이터레이터는 파이썬에서 데이터를 순차적으로 처리하는 데 사용되는 객체입니다. 이터레이터는 데이터를 순차적으로 읽을 수 있는 객체이며, 제너레이터는 이터레이터를 생성하는 함수입니다. 이터레이터 이터레이터는 __iter__() 메서드를 구현하는 객체입니다. __iter__() 메서드는 이터레이터를 반환합니다. 이터레이터는 next() 메서드를 사용하여 데이터를 순차적으로 읽을 수 있습니다. next() 메서드는 다음 데이터를 반환하고, 더 이상 데이터가 없으면 StopIteration 예외를 발생시킵니다. 제너레이터 제너레이터는 yield 키워드를 사용하여 데이터를 생성하는 함수입니다. yield 키워드는 함수의 실행을 중단하고 데이터를 반환합니다. 함수가 다시 호출되면 yield 키워드..
DRF-Spectacular을 활용한 Django Swagger 사용법과 예제 코드 가이드 더 정확한 문서화를 위해 DRF-spectacular관하여 찾아보고 쉽게 포스팅된 사용법이나 예시코드가 없어서 정리해서 올려본다. api는 view_set을 기준으로 설명합니다 1. 먼저 drf-spectacular를 설치해준다 pip install drf-spectacular 2. settings.py 설정 settings.py INSTALLED_APPS = [ ''''''~~~ "drf_spectacular", ] # docs SPECTACULAR_SETTINGS = { # General schema metadata. Refer to spec for valid inputs # https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0...
Django ORM 관련 꼭 봐야할 글 https://intrepidgeeks.com/tutorial/pyconkorea-django-orm-query-set-structure-and-principle-and-optimization-strategy-course-summary
[Docker] docker-compose cache없이 설치하기 자주 까먹어서 정리해둠 docker-compose build --no-cache
Docker 사용하지않는 컨테이너 전체 삭제 Docker Stop된 Container 한번에 지우기 (일괄삭제) 하나하나 docker rm {container name}을 하기란 힘들다! 방법1: 1.13버전부터 이렇게 공식적으로 명령을 지원한다. (Since Docker 1.13.x you can use Docker container prune:) docker container prune 방법2: 그전에는 이렇게 지웠다. docker rm $(docker ps -q -f status=exited) (보너스) 안쓰는 자원 정리하기 clean up all unused containers, networks, images (both dangling and unreferenced), and optionally, volumes, in one command...