반응형
이전 글들에서는 러스트를 활용해 CLI 유틸리티, 웹 서버, 데이터베이스 연동 REST API, JWT 인증 등 백엔드 개발 영역에서의 활용 예제를 다루었습니다. 이번에는 시야를 전환하여 WebAssembly(WASM)를 통해 브라우저 환경에서 러스트 코드를 실행해보며, 프런트엔드 세계와의 접점을 탐구해보겠습니다.WASM을 사용하면 C++처럼 네이티브 언어로 작성한 코드를 브라우저에서 실행할 수 있으며, 러스트는 WASM 지원을 공식적으로 잘 갖추고 있습니다. 이를 통해 다음과 같은 장점을 누릴 수 있습니다.성능 향상: CPU 집약적인 연산을 자바스크립트 대신 러스트 WASM 모듈로 처리 가능안전성 보장: 러스트 언어 특성에 기반한 메모리 안전성, 에러 처리 장점을 웹 환경에도 적용C++ 대비 단순성: ..
1. Hit the Nail on the Head이번에 소개할 표현은 "Hit the Nail on the Head"입니다. 이 표현은 문제의 핵심을 정확히 지적하거나, 완벽하게 맞는 해결책을 제시하다는 의미로, 소프트웨어 개발에서 정확한 분석이나 적절한 해결책을 설명할 때 자주 사용됩니다.2. 의미"Hit the Nail on the Head"는 "못의 머리를 정확히 치다"라는 뜻으로, 문제나 상황의 본질을 정확히 짚어내거나 적합한 조치를 취했음을 비유적으로 나타냅니다.예:"당신이 말한 해결책은 문제의 핵심을 정확히 짚었어요."→ "Your suggestion really hit the nail on the head."3. 어원이 표현은 목공 작업에서 비롯되었습니다. 못을 박을 때 머리를 정확히 쳐야 ..
지금까지는 DQN 계열(가치기반) 알고리즘에 집중했지만, 강화학습에는 정책기반 접근도 중요한 축을 차지합니다. 정책기반 알고리즘은 상태→행동 확률분포를 직접 파라미터화하는 방식으로, 연속형 행동공간이나 고차원 문제에서 장점을 발휘하고, DQN 대비 다른 하이퍼파라미터 특징을 갖습니다.RLlib은 대표적인 정책기반 알고리즘인 A2C(Advantage Actor-Critic)와 PPO(Proximal Policy Optimization)를 기본 지원합니다. 이 글에서는 A2C, PPO를 다양한 환경에서 간단히 실행해보고, Config를 통해 파라미터를 조정하는 방법을 살펴봅니다.A2C와 PPO 간단히 복습A2C(Advantage Actor-Critic):Actor-Critic 구조를 사용하여 상태 가치함수를..
1. Clown Town이번에 소개할 표현은 "Clown Town"입니다. 이 표현은 혼란스럽거나 비효율적인 상황을 의미하며, 소프트웨어 개발에서 혼란스러운 프로젝트 관리, 팀워크 문제, 또는 불안정한 시스템 상태를 설명할 때 자주 사용됩니다.2. 의미"Clown Town"**은 "서커스 같은 엉망진창인 상태", 즉, "혼란스럽고 우스꽝스러운 상황"을 나타냅니다. 이 표현은 보통 유머러스하면서도 약간의 비판적인 뉘앙스를 포함합니다.예:"회의가 제대로 진행되지 않고 모두 다른 이야기를 하고 있었습니다."→ "That meeting was a total clown town."3. 어원이 표현은 서커스에서 광대(clown)가 등장하는 혼란스럽고 어수선한 분위기에서 유래되었습니다. 비유적으로는 조직적이지 않고,..
1. Cross That Bridge When You Come to It이번에 소개할 표현은 "Cross That Bridge When You Come to It"입니다. 이 표현은 미리 걱정하지 말고, 문제가 실제로 닥쳤을 때 해결하자는 의미로, 소프트웨어 개발에서 예측하지 못한 문제나 걱정을 지나치게 미리 논의하지 말자는 태도를 나타낼 때 자주 사용됩니다.2. 의미"Cross That Bridge When You Come to It"는 "그 다리를 건널 때 생각하자"라는 뜻으로, 현재 당장 필요하지 않은 문제에 대해 미리 걱정하거나 에너지를 소모하지 말자는 메시지를 담고 있습니다.예:"우리는 이 문제에 대해 나중에 생각해도 됩니다. 지금은 다른 것에 집중합시다."→ "We’ll cross that b..
앞선 글에서 RLlib을 이용하면 Config 기반으로 알고리즘과 파라미터를 손쉽게 변경할 수 있음을 확인했습니다. 이번 글에서는 이산적 행동 공간 환경(Discrete Action Space)에서 DQN과 그 변형(Double DQN, Dueling DQN, Prioritized Replay 등)을 RLlib으로 실행하는 방법을 자세히 살펴보고, 다양한 환경(예: CartPole, Atari)을 적용하는 예제를 소개하겠습니다.이산 행동 알고리즘과 RLlibDQN은 이산적 행동 공간을 전제로 개발된 알고리즘으로, RLlib에서 DQNTrainer를 통해 바로 사용할 수 있습니다. 지난 글에서 DQN에 Double/Dueling 옵션을 추가하는 방법을 봤는데, 여기서는 좀 더 다양한 설정(우선순위 리플레이..
이전 글에서는 데이터베이스를 연동한 간단한 To-Do 리스트 REST API를 구현하며, 러스트 생태계를 활용한 웹 개발의 기초를 다졌습니다. 이번 글에서는 인증(Authorization)과 토큰 기반 인증(JWT)을 적용해, 좀 더 실전적이고 안전한 REST API를 만들어봅니다. 이를 통해 사용자가 로그인하고, 발급받은 토큰(JWT)을 사용해 권한이 필요한 API에 접근하는 패턴을 익힐 수 있습니다.이번 프로젝트의 주요 목표는 다음과 같습니다.JWT 발급 및 검증: 사용자가 로그인 시도 시 JWT를 발급하고, 이후 요청 시 해당 토큰을 헤더에 담아 접근 권한을 확인하는 패턴 구현비밀번호 해싱(BCrypt) 및 보안 처리: 사용자 정보(아이디, 비밀번호) 관리 시 평문 비밀번호 대신 해싱 처리Actix..
1. The Elephant in the Room이번에 소개할 표현은 "The Elephant in the Room"입니다. 이 표현은 모두가 알고 있지만 말하지 않는 큰 문제나 논란거리를 가리킵니다. 소프트웨어 개발에서는 팀 내에서 명백한 문제를 회피하거나 민감한 주제를 다루지 않는 상황에서 자주 사용됩니다.2. 의미"The Elephant in the Room"은 "방 안에 있는 코끼리"라는 뜻으로, 크고 명백한 문제이지만, 불편하거나 다루기 어려워 아무도 언급하지 않는 상황을 비유적으로 표현합니다.예:"우리 모두 알고 있지만 아무도 말하지 않는 것이 있네요. 중요한 문제입니다."→ "There’s an elephant in the room we need to address."3. 어원이 표현은 18..
이전 글에서는 Actix-web 프레임워크를 활용해 간단한 웹 서버 애플리케이션을 구현하며, HTTP 요청 처리와 JSON 응답, 비동기 패턴 등을 익혔습니다. 이번 글에서는 여기서 한 걸음 더 나아가 데이터베이스 연동을 통해 간단한 REST API를 구축해보겠습니다. 이를 통해 실제 백엔드 서비스 개발에 한 걸음 더 다가설 수 있습니다. 이번 프로젝트의 주요 목표는 다음과 같습니다.데이터베이스 연동: SQLite 등 간단한 로컬 DB를 연계, CRUD(생성, 읽기, 업데이트, 삭제) 중 일부를 구현해 실전적인 REST API 구조를 익힙니다.SQLx 크레이트 활용: Rust 비동기 데이터베이스 드라이버인 sqlx를 사용해 비동기 DB 접근을 구현합니다.마이그레이션(Migration) & 스키마 정의: ..
이전 글에서 우리는 RLlib을 이용해 단 몇 줄의 코드로 DQN을 CartPole 환경에서 돌려보았습니다. 그러나 실제로 다양한 환경, 알고리즘, 파라미터 조합을 시도하려면 RLlib이 어떻게 설정을 관리하고, 어떤 구조로 동작하는지 이해하는 것이 중요합니다. 이번 글에서는 RLlib의 핵심 개념인 Config, Trainer, Policy, Rollout Worker 등에 대해 자세히 살펴보고, Config 설정과 Trainer 활용법에 대해 좀 더 다양한 예제를 다루겠습니다.RLlib 핵심 개념 자세히 알아보기RLlib은 크게 다음과 같은 구성요소로 이뤄져 있습니다.Trainer:알고리즘 실행의 중심 클래스입니다. 예를 들어, DQNTrainer, PPOTrainer, SACTrainer 등 알고리..