일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- JPA
- AWS
- langgraph
- ai agent
- 디버깅
- spring event
- 크롤링
- 백준
- 트랜잭샨
- jwt 표준
- docker
- 레디스 동시성
- 셀러리
- 프로그래머스
- ipo 매매자동화
- 이분탐색
- 추천 검색 기능
- 카카오
- 구현
- 쿠키
- 완전탐색
- next-stock
- 검색어 추천
- BFS
- 누적합
- 아키텍쳐 개선
- 몽고 인덱스
- gRPC
- 결제서비스
- piplining
- Today
- Total
목록전체 글 (184)
코딩관계론

소개안녕하세요! 이번에는 Celery를 사용한 비동기 프로그래밍에 대해 알아보겠습니다. 최근에 업데이트한 프로그램에서 Celery를 도입하여 작업을 비동기적으로 처리하게 되었는데요, 이를 통해 사용자가 프로그램을 커스텀하게 구성할 수 있게 되었습니다. 우선, 비동기 프로그래밍이란 CPU-bound 작업과 I/O-bound 작업을 구분하여 처리하는 방식을 말합니다. 이를 통해 시스템의 성능을 향상시킬 수 있습니다. 이번에는 이러한 비동기 프로그래밍을 구현할 때 사용한 Celery에 대해 자세히 알아보겠습니다. Celery는 Python 기반의 Task Queue 라이브러리 중 하나로, 비동기적으로 작업을 처리할 수 있습니다. 이를 통해 CPU-bound 작업과 I/O-bound 작업을 효율적으로 처리할 수..

비동기 처리의 개념과 필요성비동기 처리는 순차적으로 처리하는 것이 아니라, 요청이 발생한 순서와 상관 없이 결과를 반환하는 방식을 말합니다. 예를 들어, 웹 어플리케이션에서 사용자의 요청에 대한 처리가 비동기적으로 이루어지면, 서버는 해당 요청을 받은 후 다른 작업을 수행하다가 해당 요청이 완료되면 그 결과를 반환하는 방식으로 동작합니다. 이를 통해 서버의 자원을 효율적으로 사용할 수 있고, 사용자에게 더 빠른 응답이 가능해집니다. 비동기 처리의 필요성은 크게 두 가지로 볼 수 있습니다. 첫째, 대규모 트래픽이 발생하는 웹 서비스에서는 많은 요청이 동시에 발생할 수 있습니다. 이 경우 요청을 순차적으로 처리하면 응답 시간이 길어질 수 있습니다. 따라서 비동기 처리를 통해 대량의 요청을 빠르게 처리할 수 ..

OAuth 2.0의 개념과 목적 OAuth 2.0은 웹이나 모바일 애플리케이션 등에서 서드 파티 애플리케이션(Third-Party Application)이 사용자의 인증 정보를 안전하게 사용할 수 있도록 하는 인증 및 권한 부여 프레임워크입니다. OAuth 2.0의 주요 목적은 사용자가 서드 파티 애플리케이션에게 자신의 인증 정보(아이디, 비밀번호 등)를 제공하지 않고도, 서드 파티 애플리케이션에서 사용자의 개인 정보(예: 이메일, 친구 목록 등)를 안전하게 이용할 수 있도록 하는 것입니다. 예를들면 B 회사가 Google Calendar API에 접근하기 위해 사용자의 Google ID와 비밀번호를 요구하지 않고도, Google에서 로그인을 처리하고, 사용자가 Google Calendar API에 대한..

문제 이해하기 판매원 A가 칫솔을 판매하면 판매한 금액의 10프로가 판매원 A의 상관인 B에게 분배되고, B의 상관인 C에게 분배되는 형태의 판매망을 운영하고 있습니다. 이 때 조직 내 누가 얼만큼의 이득을 가져갔는지 알고자하는 문제였습니다. 문제 해결 방법 설명하기 조직 내 누가 얼마만큼의 이득을 가져갔는지를 파악하기 위해서는 각 판매원이 판매한 금액을 추적해야 합니다. 예를 들어, 판매원 A가 100만원짜리 칫솔을 판매하면, A는 100만원의 10%인 10만원을 B에게, B는 10만원의 10%인 1만원을 C에게 주어야 합니다. 따라서 이 판매망에서 각 판매원이 얼마만큼의 이득을 가져가는지를 계산하려면, 각 판매원이 판매한 금액을 추적하고, 이를 기반으로 각 판매원이 상위 조직원에게 주는 이득을 계산하..

문제 이해하기 양의 정수 n을 k진수로 변환한 후, 다음의 네 가지 규칙에 맞는 소수를 찾는 문제입니다. 0P0 형태의 소수: 양쪽에 0이 있는 소수 P0 형태의 소수: 오른쪽에만 0이 있는 소수 0P 형태의 소수: 왼쪽에만 0이 있는 소수 P 형태의 소수: 양쪽에 0이 없는 소수 예를들면 437674이라는 십지수 정수를 3진수로 변환하면 "211020101011"이 됩니다. 이 숫자들 중에 규칙이 적용되는 숫자를 찾으면 2110(P0 조건) 011(0P 조건), 020(0P0 조건)이 있어 답이 3이 됩니다. 문제 해결 방법 설명하기 1. 10진수를 k진수로 변환할 수 있어야합니다. 10진수에서 n을 k 진수로 변환하는 방법은 아래와 같습니다. n을 k로 나눈 몫과 나머지를 구합니다. 해당 나머지를 가..

문제 이해하기 이진트리를 수로 표현하는 문제입니다. 이진트리의 노드를 가장 왼쪽 노드부터 가장 오른쪽 노드까지, 왼쪽에 있는 순서대로 살펴보고, 더미 노드인 경우 문자열 뒤에 0을 추가하고, 더미 노드가 아닌 경우 문자열 뒤에 1을 추가합니다. 마지막으로 문자열에 저장된 이진수를 십진수로 변환합니다. 문제의 예시인 42를 설명해보자면, 42를 이진수로 변환하면 101010이 됩니다. 이는 완전이진포화트리가 아니기에 0101010으로 변환됩니다. 하위 리프노드에 더미노드가 추가 되야 했지만, 카카오 예시에선 생략되어 있는 모습입니다. 문제 해결 방법 설명하기 1. 이진수를 포화 이진트리로 만들 수 있어야 합니다. 주어진 정수를 이진수로 변환하여 포화 이진트리를 만드는 것이 요구되고, 이때 0을 삽입해야 합..

서론로봇이 미션을 수행하고 그 결과를 종합하여 SMS로 사용자들에게 전달해야 하는 업무가 있었습니다. 단순한 전달이 아닌 각 공장 관리자들의 성격과 특성이 다르기 때문에, 해당 공장 담당자의 미션 결과를 다른 공장 담당자가 보는 것에 대한 거부감이 있었고, 이런 문제들 때문에 로봇이 수행한 미션별로 수신자가 달라져야 했습니다. 이 글은 이러한 문제를 해결하기 위한 개발 과정을 자세히 다를 예정이며,이를 위해 요구 사항 분석, 아키텍처 설계, DB 모델링, 알고리즘 구현 등의 작업을 수행한 결과를 공유할 것입니다.요구사항 분석SMS 예약 미션 알고리즘 개발을 위해 먼저 요구사항을 분석하였습니다. 기본적으로 로봇이 수행한 미션 결과들을 종합한 SMS를 사용자가 원하는 시간에 받아보고 싶다는 요구사항이 있었습..

🚀 1. 개요문제 해결의 필요성기존의 시나리오 기반 상태 전이 방식은 외부 간섭(사람의 통행, 예기치 못한 문 상태 변화 등)에 취약했습니다. 로봇이 외부 간섭으로 인해 미션을 수행하지 못하는 경우가 발생하여 보다 견고한 시스템의 필요성이 요구되었습니다.제안하는 해결 방법데익스트라(Dijkstra) 알고리즘을 이용한 상태 기계(State Machine)를 구현하여, 현재 문의 상태에서 목표 상태까지 최소 비용의 상태 전이 경로를 탐색합니다. 이를 통해 로봇이 외부 간섭에도 안정적으로 미션을 수행할 수 있도록 했습니다.⚠️ 2. 문제 정의문제 상황 설명로봇이 정해진 waypoint에 도착하면 ROLL-UP DOOR의 상태를 확인하기 위해 아두이노와 통신합니다. 로봇은 초기 상태 정보를 받으면 이를 통해 ..

소개 웹 애플리케이션 보안 취약점 중 하나인 CSRF 오류는 인증된 사용자가 의도하지 않은 요청을 악의적인 공격자가 대신 보내는 경우 발생합니다. 이 기술 블로그에서는 CSRF 오류에 대한 개념과 원리, 발생 상황에 대한 예시 등에 대해 다루고, CSRF 오류를 예방하기 위한 방법들을 제시합니다. CSRF 오류의 원인 CSRF 오류가 발생하는 이유 중 하나는 HTTP의 Stateless 특성입니다. HTTP는 클라이언트와 서버 간의 연결을 유지하지 않는 Stateless한 프로토콜이기 때문에, 요청을 보낼 때마다 새로운 연결이 이루어지게 됩니다. 이러한 특성으로 인해, 서버는 요청이 유효한지 검증하기 위해 각 요청에 대한 검증 토큰을 발급합니다. 하지만, 이 토큰이 없는 상황에서 요청을 보내는 공격자가 ..

RDS란 Amazon Relational Database Service (RDS)는 AWS에서 제공하는 관리형 관계형 데이터베이스 서비스입니다. RDS는 다양한 데이터베이스 엔진을 지원하며, MySQL, PostgreSQL, Oracle, SQL Server 및 Amazon Aurora 등을 사용할 수 있습니다. 사용하는 이유 RDS는 데이터베이스 관리 작업을 쉽게 하도록 도와줍니다. 사용자는 데이터베이스 엔진을 설치, 구성, 패치 및 백업할 필요가 없으며, 이를 대신 AWS에서 관리합니다. 이를 통해 시간과 비용을 절약할 수 있습니다. RDS는 스케일링이 가능합니다. 사용자는 데이터베이스 인스턴스의 크기와 용량을 자유롭게 조정할 수 있으며, 필요에 따라 자동 확장이 가능합니다. 이를 통해 데이터베이스 ..