avatar
Articles
40
Tags
244
Categories
4

Home
Archives
Tags
Categories
소프트웨어 올라운더
Home
Archives
Tags
Categories

소프트웨어 올라운더

NestJS - 커스텀 데코레이터로 API 접근 제어하기
Created2024-08-20|프로그래밍
들어가며NesJS는 데코레이터를 적극적으로 활용하여 코드를 간결하고 효율적으로 만드는 프레임워크이다. NestJS는 @Controller, @Get, @Post 등 다양한 내장 데코레이터를 제공하지만, 필요에 따라 커스텀 데코레이터를 생성하여 사용할 수도 있다. 여기에서는 NestJS에서 커스텀 데코레이터를 생성하여 API 접근을 제어하는 방법에 대해서 살펴본다. 특히, 특정 권한을 가진 사용자만 특정 API에 접근할 수 있도록 제어하는 데코레이터를 만들고 적용하는 과정을 다룬다. 커스텀 데코레이터: @Permission 생성하기API 접근 권한을 나타내는 @Permission 데코레이터를 생성해보자. 이 데코레이터는 특정 권한(예: read, write, admin)을 메타데이터로 저장하여, 나중에 가드에서 해당 메타데이터를 확인하고 접근을 제어할 수 있도록 한다. 1234import { SetMetadata } from "@nestjs/common&qu ...
VS Code의 CMake Tools를 사용하여 인자를 넘기면서 디버깅하는 방법
Created2024-08-13|프로그래밍
VS Code에서 CMake Tools를 사용하여 디버깅 시 인자를 넘길 수 있다. cmake.debugConfig 설정을 사용하면 된다. 다음처럼 설정을 진행하자. 단계 1: settings.json 파일 열기VS Code에서 프로젝트 폴더 내 .vscode 디렉터리 안에 있는 settings.json 파일을 오픈한다. 이 파일이 없다면 직접 생성하면 된다. 단계 2: cmake.debugConfig 설정 추가settings.json 파일에 다음과 같이 cmake.debugConfig 설정을 추가한다. 여기서 args 배열 안에 디버깅 시 넘길 인자들을 추가하면 된다. 12345{ "cmake.debugConfig": { "args": ["arg1", "arg2"] }} [“arg1”, “arg2”] 부분을 필요에 따라 수정하여 원하는 인자를 입력한다. 단계 3: ...
Nest.js 인터셉터 이해하기
Created2024-08-08|프로그래밍
들어가며Nest.js는 현대 웹 애플리케이션 개발을 위해 설계된 강력한 프레임워크로, 모듈화와 의존성 주입을 통해 코드의 재사용성과 유지보수성을 높인다. 이러한 구조적 장점 덕분에 Nest.js는 복잡한 애플리케이션을 효율적으로 관리하고 확장할 수 있는 기반을 마련해 놓고 있다. 특히, 인터셉터는 요청과 응답을 가로채어 처리할 수 있는 중요한 기능으로, 성능 최적화, 로깅, 데이터 변환 등 다양한 목적으로 활용할 수 있다. 여기에서는 Nest.js의 인터셉터에 대해 살펴보고자 한다. Nest.js의 중요성과 인터셉터의 역할Nest.js는 모듈 시스템을 통해 애플리케이션을 구성하고, 각 모듈은 독립적으로 개발 및 테스트할 수 있다. 인터셉터는 요청과 응답을 가로채고 수정하며, 이는 애플리케이션의 전반적인 성능과 사용자 경험을 향상시키는 데 중요한 역할을 한다. 예를 들어, 인터셉터를 사용하여 요청에 대한 인증을 수행하거나, 응답 데이터를 특정 형식으로 변환함으로써 클라이언트의 요구에 ...
Python에서 as 키워드의 다양한 활용법과 중요성
Created2024-08-08|프로그래밍
1. 들어가며Python에서 as 키워드는 여러 상황에서 사용되는 중요한 키워드이다. 이것은 주로 예외 처리, 컨텍스트 매니저, 그리고 모듈 임포트 시에 활용되며, 코드의 가독성을 높이고 명확한 구조를 제공하는 데 도움을 준다. 다른 프로그래밍 언어에서도 as와 유사한 기능이 있다. 예를 들어, JavaScript의 TypeScript에서는 as 키워드를 사용하여 타입을 명시적으로 지정할 수 있습니다. 이러한 비교를 통해 as 키워드를 보다 넓은 맥락에서 이해할 수 있을 것이다. 여기에서는 as 키워드의 다양한 용법을 살펴보고, 각 경우에서의 장점과 활용 방법을 알아보자. 2. as 키워드의 중요성과 사용 목적as 키워드는 여러 상황에서 사용되며, 그 사용은 코드의 명확성과 가독성을 높인다. 다음은 주요 사용 사례이다. 예외 처리: 예외 발생 시 그 정보를 변수에 할당하여 후속 처리를 용이하게 함. 컨텍스트 매니저: 자원을 효율적으로 관리하고 자동으로 정리하는 데 도움. 모듈 임포 ...
Python datetime 패키지- 날짜와 시간을 효과적으로 다루는 방법
Created2024-08-08|프로그래밍
파이썬에서 날짜와 시간을 다뤄보고자 한다. 파이썬은 datetime 패키지를 제공한다. datetime 패키지를 사용할 때 필수적으로 파악해야 할 사항을 정리한다. 1. 모듈 불러오기먼저 datetime 모듈을 불러와야 한다. 아래와 같이 간단하게 import 할 수 있다. 1import datetime 2. 현재 날짜와 시간 얻기현재의 날짜와 시간을 얻으려면 datetime 모듈의 now()와 today() 메서드를 사용하면 된다. 12now = datetime.datetime.now() # 현재 날짜와 시간today = datetime.date.today() # 현재 날짜 3. 날짜와 시간 객체 생성특정 날짜와 시간의 객체를 생성할 수 있다. 아래의 예를 참고하자. 123dt = datetime.datetime(2023, 8, 8, 12, 30) # 특정 날짜와 시간d = datetime.date(2023, 8, 8) # 특정 날짜t = d ...
PM2 프로세스 관리- 주요 인터페이스와 메서드 안내
Created2024-07-05|프로그래밍
​PM2는 다양한 인터페이스와 메서드를 제공하여 프로세스를 관리할 수 있도록 해준다. 주요 인터페이스와 메서드에 대해 살펴보자. connect(callback)PM2 데몬에 연결한다. 1234567pm2.connect((err) => { if (err) { console.error(err); process.exit(2); } // 연결 후 다른 PM2 명령 실행}); start(options, callback)새 프로세스를 시작한다.옵션: 스크립트 경로, 이름, 인자, 환경 변수 등 1234567891011pm2.start( { script: "app.js", name: "my-app", args: "arg1 arg2", env: { NODE_ENV: "production" }, }, (err ...
C API와 unique_ptr을 이용한 리소스 관리 패턴 - 안전한 프로그래밍을 위한 접근법
Created2024-07-05|프로그래밍
C API 리소스 관리 패턴C 언어에서 자주 볼 수 있는 리소스 관리 패턴은 다음과 같다. 초기화 함수: 리소스를 할당하고 초기화한다. 정리 함수: 할당된 리소스를 해제한다. 불투명 포인터(Opaque Pointer): 리소스를 나타내는 포인터로, 사용자는 내부 구조를 알 필요가 없다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344#include <stdlib.h>// 불투명 포인터를 위한 구조체 선언typedef struct Resource Resource;// 실제 구조체 정의 (보통 .c 파일에 숨겨져 있음)struct Resource { int some_data; char* more_data;};// 초기화 함수Resource* resource_init(int initial_value) { Resource* r ...
pkg-config를 통한 패키지 찾기 및 등록
Created2024-07-04|프로그래밍
pkg-config란pkg-config는 소프트웨어 개발 시 필요한 라이브러리의 존재 여부와 관련 설정(예: 컴파일러 플래그, 링크 플래그 등)을 관리하고 제공하는 도구이다. 주로 C와 C++ 프로그램에서 라이브러리를 쉽게 사용할 수 있도록 도와주는 역할을 한다. 패키지 찾기‘pkg-config –exists’ 명령은 특정 패키지가 설치되어 있는지 확인하는 데 사용한다. 이 명령은 주어진 패키지가 설치되어 있으면 0을, 그렇지 않으면 0이 아닌 값을 반환한다. 예를 들어, ‘glib-2.0’ 패키지가 설치되어 있는지를 확인하려면 다음과 같이 사용하면 된다. 1234567pkg-config --exists glib-2.0if [ $? -eq 0 ]; then echo "glib-2.0 is installed."else echo "glib-2.0 is not installed."fi 새로운 패키지 등록하기새로운 패키지를 등록하기 위해서는 ...
C++에서 사용하기 위한 gRPC 설치하기
Created2024-07-04|프로그래밍
빈번하게 gRPC를 빌드 하게 되어 스크립트를 만들어 gitgist에 공개했다. 다음 명령어 중 하나를 사용하여 설치할 수 있다. wget을 사용하는 경우, 1wget -O - https://gist.githubusercontent.com/moonyl/f015cfa96400beccba616a5068124a84/raw/8f293296b6c422a22df6c9229070d5c87e1b34c0/install-grpc.sh | bash curl을 사용하는 경우, 1curl -sSL https://gist.githubusercontent.com/moonyl/f015cfa96400beccba616a5068124a84/raw/8f293296b6c422a22df6c9229070d5c87e1b34c0/install-grpc.sh | bash 이 스크립트는 ‘sudo’ 권한이 필요하며, 필요한 경우 비밀번호를 입력하는 메시지가 나타난다. 스크립트를 실행한 후에는 터미널을 재시작하거나 ‘source ...
bash shell에서의 if 문과 함수 리턴 값
Created2024-07-04|프로그래밍
자주 사용하는 C++이나 Javascript, kotlin 등과는 다르게 bash shell에서는 ‘if’ 조건문이 함수의 리턴 값이 0일 때 조건이 만족한다. 이것은 유닉스 전통에 따라, 성공적인 명령은 0을 반환하고 실패한 명령은 0이 아닌 값을 반환하는 규칙을 따르기 때문이다. 다음 예제를 살펴보자. 123456789101112#!/bin/bashmy_function() { # 어떤 작업 수행 return 0}if my_function; then echo "Function was successful."else echo "Function failed."fi 위 스크립트에서 ‘my_function’ 함수는 0을 반환하므로 ‘if’ 조건문이 만족되어 “Function was successful.” 이 출력된다.
12…4
avatar
Sang-moon, Lee
Articles
40
Tags
244
Categories
4
Follow Me
Announcement
This is my Blog
Recent Post
NestJS - 커스텀 데코레이터로 API 접근 제어하기2024-08-20
VS Code의 CMake Tools를 사용하여 인자를 넘기면서 디버깅하는 방법2024-08-13
Nest.js 인터셉터 이해하기2024-08-08
Python에서 as 키워드의 다양한 활용법과 중요성2024-08-08
Python datetime 패키지- 날짜와 시간을 효과적으로 다루는 방법2024-08-08
Categories
  • theory1
  • 이론1
  • 잡담1
  • 프로그래밍37
Tags
child_process AV_TIME_BASE 자동재생정책 HTTP요청 Python개발 소프트웨어개발 애드온개발 코드가독성 spawn cmake 메타데이터 예외처리 NodeJS 서버관리 리팩토링 ARGN 프로그래밍패턴 paremter 깃파라미터 매크로 mp4frag PkgConfig CMakeTools video원소 가변인수 ESM Linux 도커이미지 데이터수집 DevelopmentTools MSE react 트랜스파일 메모리관리 SSD 소켓프로그래밍 CD OpenSource 스트림인덱스 CI
Archives
  • August 20245
  • July 20246
  • June 20245
  • May 20243
  • December 20216
  • November 20211
  • March 20201
  • February 20202
Info
Article :
40
UV :
PV :
Last Update :
©2020 - 2024 By Sang-moon, Lee
Framework Hexo|Theme Butterfly