분류 전체보기 64

[프로그래머스]정수를 나선형으로 배치하기

https://school.programmers.co.kr/learn/courses/30/lessons/181832 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krfunction solution(n) { //1. 배열초기화 const answer = new Array(n).fill(0).map(()=>[...Array(n).fill(0)]) let dir = 'r' //2. 채우기 //위치 변경해가면서 채우기 // rdlu let x = 0; let y = 0; for(i=1;i=1 && answer[y][x-1] == 0){ ..

[aws ec2, crontab]자동 재배포 도입 후기

개요EC2 서버가 부하로 인해 MySQL과의 연결이 끊어지는 문제를 해결하기 위해 주기적으로 서비스 상태를 확인하고, 필요 시 자동으로 재배포하는 스크립트를 도입하였습니다. 이 과정에서 monitor_deploy.sh를 작성하고, cron을 활용하여 주기적으로 실행하도록 설정하였습니다.1. monitor_deploy.sh 스크립트 작성내용#!/bin/bash# 설정URL="http://localhost:5000" # 헬스체크할 URLDEPLOY_SCRIPT="/home/ubuntu/deploy_test/scripts/deploy.sh" # 실행할 배포 스크립트LOG_FILE="/home/ubuntu/deploy_test/monitor.log" # 로그 파일..

개인프로젝트 2025.02.10

[python,Flask]임시 파일 생성 및 처리 방식 비교

파일을 생성하고 반환하는 방식은 웹 애플리케이션에서 자주 사용되는 패턴입니다. 현재 사용하고 있는 방식은 tempfile.mkdtemp()를 사용하여 임시 디렉토리를 만들고, 해당 디렉토리에 파일을 저장한 후 반환하는 구조입니다. 이 방법이 일반적으로 사용되는지, 그리고 대체 방법과 비교했을 때의 장단점을 정리해보겠습니다.1. 현재 방식 (tempfile.mkdtemp())✅ 장점보안성 확보임시 디렉토리를 생성하여 외부 접근을 방지할 수 있음.OS가 제공하는 임시 저장소를 사용하므로, 별도의 관리가 필요 없음.다중 사용자 처리 가능각 요청마다 별도의 디렉토리를 생성하므로, 여러 사용자가 동시에 요청해도 파일이 충돌할 가능성이 낮음.자동 삭제 가능@after_this_request를 활용하여 응답이 끝난 ..

카테고리 없음 2025.02.10

[python].pyc 파일이 왜 생기는가?

.pyc 파일은 Python이 소스 코드를 바이트 코드(bytecode)로 컴파일한 결과물입니다.Python은 스크립트 언어이지만 실행 속도를 향상시키기 위해 .py 파일을 직접 실행하는 것이 아니라 내부적으로 바이트 코드(.pyc)를 생성하여 실행합니다..pyc 파일은 __pycache__ 폴더에 자동으로 저장됩니다.파이썬 인터프리터가 실행될 때 소스 코드(.py)가 변경되지 않았다면, 기존의 .pyc 파일을 사용하여 속도를 높입니다..pyc 파일을 git에 포함해야 할까?No!.pyc 파일은 Python이 자동으로 생성하는 캐시 파일이므로, Git에 포함할 필요가 없습니다.오히려 Git에서 .pyc 파일을 추적하면 불필요한 파일이 쌓이고, 환경마다 다른 .pyc 파일이 생성될 수 있기 때문에 충돌을 ..

개발공부 2025.02.10

[diykitten] 사용하고 있는 파이썬 라이브러리 정리

Python을 사용하여 다양한 기능을 개발하면서 여러 개의 모듈을 추가하게 되었다. 이미지 처리, PDF 생성, S3 파일 관리, 웹 API 개발 등 여러 요소를 다루면서, 각 모듈이 프로젝트에서 어떤 역할을 하는지 정리하고, 왜 추가하게 되었는지 설명하고자 한다.1. Flask - 웹 API 개발✨ 추가 이유웹 API를 통해 클라이언트와 서버 간 데이터를 주고받기 위해 Flask를 사용했다. Flask는 가볍고, 빠르게 REST API를 만들 수 있는 프레임워크로, 프로젝트의 핵심 백엔드 역할을 한다.🔍 사용 예시@app.route('/generate-png/', methods=['GET'])def generate_png_api(file_id): return send_file(png_path, ..

개인프로젝트 2025.02.10

[python,Flask]Flask의 @after_this_request 데코레이터 사용법

1. @after_this_request란?Flask에서 @after_this_request 데코레이터는 특정 뷰 함수가 실행된 후, 응답을 반환하기 직전에 추가적인 처리를 할 수 있도록 해주는 기능입니다.이는 요청이 끝난 후 임시 파일을 삭제하거나, 특정 로그를 남기는 등의 작업을 수행할 때 유용하게 사용할 수 있습니다.2. 기본 사용법@after_this_request는 뷰 함수 내에서 정의되어야 하며, 하나의 인자로 응답 객체 (response)를 받는 내부 함수를 필요로 합니다.from flask import Flask, request, jsonify, send_file, after_this_requestimport osimport tempfileapp = Flask(__name__)@app.ro..

개발공부 2025.02.10

[python]자바스크립트와 파이썬의 비동기 처리 방식 비교

비동기 프로그래밍은 프로그램이 블로킹 없이 여러 작업을 동시에 실행할 수 있도록 하는 중요한 개념입니다. 자바스크립트와 파이썬 모두 비동기 처리를 지원하지만, 방식이 다릅니다. 이번 글에서는 자바스크립트와 파이썬의 비동기 처리 방식의 차이점을 비교해보겠습니다.1. 자바스크립트의 비동기 처리자바스크립트는 싱글 스레드 이벤트 루프(Event Loop) 기반의 비동기 모델을 사용합니다. 이는 비동기적으로 실행되는 코드가 별도의 스레드에서 실행되지 않고, 이벤트 루프를 통해 관리된다는 것을 의미합니다.1.1 콜백 함수 (Callback)가장 기본적인 비동기 처리 방식은 콜백 함수입니다.console.log("Start");setTimeout(() => { console.log("Async Task Done..

개발공부 2025.02.10

[개발 고민]프레임워크를 사용할 것인가, 라이브러리를 조합할 것인가?

🚀 고민의 시작: 프레임워크가 항상 최선인가?웹 개발을 할 때, 우리는 흔히 프레임워크(Framework) 를 사용할지, 아니면 필요한 라이브러리(Library)를 조합해서 직접 설계할지 고민하게 된다.나는 처음에 프레임워크가 빠르고 편리한 해결책이라고 생각했지만, 점점 의문이 들기 시작했다. "꼭 이 방식을 따라야만 할까?" "필요한 기능만 쓰고 싶은데, 왜 강제적인 구조를 따라야 하지?" 라는 고민이 생겼다.프레임워크는 개발 속도를 높여주고, 팀원들이 일관된 방식으로 개발하도록 도와주지만, 때로는 불필요한 기능까지 강제하고 개발의 자유도를 제한하기도 한다.반면, 라이브러리 기반 접근법은 더 유연한 개발이 가능하지만, 직접 모든 것을 구성해야 하는 부담이 있다. 그렇다면, 어떤 경우에 프레임워크를 사..

개발공부 2025.02.10

[fabricjs]"Trying to initialize a canvas that has already been initialized"

개요Fabric.js를 React 환경에서 사용하다 보면 fabric: Trying to initialize a canvas that has already been initialized. Did you forget to dispose the canvas? 오류를 만날 수 있습니다. 이 오류는 Fabric.js에서 동일한 Canvas를 여러 번 초기화하려고 할 때 발생합니다. 본 글에서는 해당 오류가 발생하는 원인과 해결 방법을 정리합니다.오류 발생 원인Fabric.js는 캔버스를 생성하고 관리하는 라이브러리로, React의 StrictMode에서 두 번 렌더링되는 경우가 있습니다. 이에 따라 useEffect 훅 내부에서 new fabric.Canvas()를 실행하면 두 번 생성되면서 위 오류가 발생할 ..

개인프로젝트 2025.02.08