Development
204개의 글
외부 서비스 웹훅을 로컬에서 테스트하고 서명 검증하기: smee, ngrok, HMAC, 재전송 방어
외부 서비스 연동을 붙이다 보면 웹훅(webhook) 처리에서 한 번은 멈춘다. 결제 완료, 저장소 push, 메시지 수신 같은 이벤트를 상대 서비스가 우리 서버로 POST해주는 구조인데, 문제는 …
Spring Boot @Async 스레드 폭증과 큐 적체 잡기: ThreadPoolTaskExecutor 설정과 MDC 전파
@Async 하나 붙였다가 운영에서 스레드가 이상하게 늘거나 응답이 밀리는 상황은 자주 온다. 그런데 그 원인을 검색하면 "@Async는 요청마다 스레드를 무한 생성해서 서버가 죽는다"는 설명이 많…
Git 히스토리에 커밋된 비밀번호와 API 키 완전히 제거하기 (git filter-repo, BFG, gitleaks)
사내 저장소를 정리하다 보면 config/deploy.env 같은 파일이 3년 전 커밋에 그대로 들어 있는 경우를 종종 만난다. 최신 커밋에서는 이미 지워져 있어서 눈에 안 띄다가, 저장소를 공개로…
Python(57868) MallocStackLogging: can't turn off malloc stack logging because it was not enabled. 해결방법
1. 현상 macOS 상에서 수행 중인 파이썬 프로그램에서 다음과 같은 에러가 발생했습니다. Python(57868) MallocStackLogging: can't turn off malloc st…
파이썬 장고 프로젝트 1분만에 생성하기 (Python Django Project)
1. 개요 파이썬 장고 프로젝트를 생성하는 방법. 맥OS를 기반으로 한다. 2. 장고 설치 다음 명령어를 통해 장고를 설치한다. pip install django 또는 pip3 install dja…
Node.js에서 PostgreSQL 연결하고 조회(SELECT) 쿼리 실행 결과 JSON 받아오기
1. 배경 Node.js에서 PostgreSQL 데이터를 SELECT하여 JSON으로 반환하는 API 생성. 기본적인 연결 방법은 /index.php/development/2288-node-js-p…
Node.js의 pg 모듈을 이용한 PostgreSQL 연결
1. 배경 Node.js 기반으로 PostgreSQL 연동하여 작업 실행. 2. pg 설치 npm install pg 3. Connection Pool const { Pool } = require(…
Node.js의 Callback vs. Promises vs. Async Await 차이점
1. 개요 Callback vs Promises vs Async Await 차이점은 무엇인가? 2. Callback JavaScript에서 함수는 객체이다. 따라서 객체를 매개변수로 함수에 전달할 …
Springboot - PostgreSQL - DataSource - Maven 연동
1. 배경 Springboot 기반으로 PostgreSQL 연동하여 작업 실행. 2. Maven Dependency dependency groupid org.postgresql /groupid ar…
Linux에 SDKMAN 설치하기
리눅스에 SDKMAN을 설치하는 문서이다. 1. 파일 다운로드 $ curl -s "https://get.sdkman.io" | bash -+syyyyyyys: `/yho:` -yd. `/yh/` +…
Google 제공 Github 샘플로 Python Flask App 만들기 (그리고 App Engine, GKE에 배포까지)
1. 개요 구글 깃허브에서 제공하는 앱 2. 상세 2.1. 디렉토리 생성 mkdir sample-app 2.2. 깃 클론 git clone https://GitHub.com/GoogleCloudPl…
초 Simple Python 애플리케이션 만들기 (테스트용)
1. 개요 각종 테스트에 사용할 간단 파이썬 애플리케이션을 만들어본다. 2. 구성 2.1. 상위 디렉토리 생성 mkdir -p sample-app 2.2. sample-app/main.py samp…
Java Array Sort (자바 배열 정렬)
1. 개요 자바 언어에서 배열(Array)을 정렬하는 방법이다. Arrays.sort 를 사용한다. 2. 숫자 정렬 import java.util.Arrays; public class ArraySo…
Java Random Number (난수) 생성하기
1. 개요 자바를 이용하여 랜덤한 숫자를 생성하는 방법 2. Math.Random() 사용 private void getNumberByMathRandom() { double randomValue =…
vscode HTTP Client 익스텐션
개요 vscode의 REST Client 익스텐션을 활용해서 손쉽게 REST API 테스트를 수행할 수 있다. API 요청 자체를 파일로 작성하여 버전관리를 할 수 있다. 사용법 vscode의 ex…
gvm(go version manager)
gvm(go version manager) gvm은 nvm처럼 golang의 버전을 관리해주는 도구이다. 패키지매니저로 go를 설치할 때 버전이 너무 낮아서 곤란하거나, 바이너리로 설치했는데 go …
ModuleNotFoundError: No module named 'requests'
1. 개요 macOS Big Sur 업데이트 이후 파이썬 환경이 전반적으로 망가짐 2. 현상 ModuleNotFoundError: No module named 'requests' 3. 해결 pyth…
dyld: Library not loaded: /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation 에러 해결
1. 개요 macOS 환경 얼마전 Big Sur 업데이트 2. 현상 dyld: Library not loaded: /System/Library/Frameworks/CoreFoundation.fram…
Cypress로 UI 테스트하기
1. 개요 UI 테스트 도구인 Cypress의 설치방법과 실행방법에 대해 소개한다. 2. Cypress 설치 프로젝트 폴더에서 npm이나 yarn을 사용하여 Cypress를 설치한다. $ npm i…
django swagger 사용하기
개요 장고에서 Swagger를 사용하여 API Doc을 사용하는 방법을 알아본다. 필요 모듈 djangorestframework와 django-rest-swagger 설치가 필요하다. #requir…
Saga Pattern (사가 패턴)
1. 개요 Saga Pattern에 대해 알아보는 시간이다. 2. Saga Pattern이란? Saga Pattern 2PC를 사용할 수 없는 분산 환경에서 데이터 일관성을 위한 방안이다. 예전에 …
Spring Boot application.properties @Value
1. 개요 application.properties에 값을 정의하고 코드 내에서 사용하는 방법 2. 설정 startup.complete.code=20 3. 코드 @Value("${startup.co…
Swagger2 3.0.0 /swagger-ui.html 404 에러
1. 개요 Swagger2 및 UI 버전을 3.0.0으로 잡았을 때 /swagger-ui.html가 열리지 않는 현상 2. 해결 잘 모르겠으나 2.9.2로 되돌리고 나서는 잘 된다. !-- http…
[Python] PIP 실행 시, Error 발생할 때 대처방법.(pip 못찾음, SSL)
Python에서 주요 패키지나 라이브러리를 설치할 때 사용하는 pip 명령어 수행 시, 에러가 발생하는 경우가 있다. 1. pip 명령어를 못 찾을 때. python -m ensurepip --de…