프로그래밍 9

레거시 코드를 혁신하다 NX Monorepo로 모놀리스를 분해한 이야기

소프트웨어 프로젝트가 장기적으로 운영되다 보면, 아키텍처는 확장성, 유지보수성, 그리고 개발자 경험에 중요한 역할을 합니다. 오늘은 레거시 모놀리스를 NX Monorepo를 활용해 모듈화된 시스템으로 변환한 사례를 소개합니다. 이 변화는 코드베이스의 유연성을 높이고, 미래에도 견딜 수 있도록 만들며, 개발자 경험을 한층 더 즐겁게 만들었습니다. 🚀문제: 압박받는 레거시 코드베이스이 프로젝트는 약 4년간 운영된 레거시 코드베이스로, Vue를 중심으로 한 현대적인 스택과 REST API를 기반으로 구축된 다중 앱 프론트엔드 생태계였습니다. 초기에는 빠른 프로토타이핑과 배포가 가능했지만, 프로젝트가 확장되면서 다음과 같은 문제가 발생했습니다:성능 저하: 새로운 앱 추가 시 빌드 속도가 느려지고 전반적인 성능..

파이썬으로 임의의 타원을 그리는 방법 수학과 프로그래밍의 만남

안녕하세요, IT 애호가 여러분! 오늘은 고등학교 수학과 프로그래밍을 접목하여 파이썬을 활용해 임의의 타원을 그리는 방법에 대해 알아보겠습니다. 이 주제는 수학 III에서 다루는 '식과 곡선' 단원과 관련이 있는데요, 수학적 개념을 활용하여 프로그래밍으로 시각화하는 과정을 통해 수학을 더욱 흥미롭게 배울 수 있습니다.타원이란 무엇인가요?타원은 두 초점에서의 거리 합이 일정한 점들의 집합으로 정의됩니다. 이 개념은 수학에서 자주 등장하며, 그래프로 표현하면 마치 찌그러진 원처럼 보입니다. 타원의 방정식은 다음과 같이 일반적으로 표현됩니다:(x²/a²) + (y²/b²) = 1여기서 a와 b는 타원의 반장축 길이입니다. 이 값에 따라 타원의 모양이 달라집니다.파이썬으로 타원을 그려보자파이썬에서는 수학적 계산..

파이썬 2025.05.28

30분 안에 AI 에이전트를 만드는 방법 Boost Agents 101

오늘은 Boost라는 프레임워크를 활용하여 30분 만에 AI 에이전트를 만드는 방법을 소개합니다. AI 기술이 점점 더 일상에 스며들고 있는 지금, 누구나 간단한 설정과 코딩으로 자신만의 AI 에이전트를 만들어 볼 수 있습니다. Boost는 CopilotKit에서 개발한 오픈소스 프로젝트로, 개발자들이 빠르게 AI 에이전트를 구축하고 테스트할 수 있도록 돕는 툴입니다.이 프레임워크는 다음과 같은 주요 단계를 통해 AI 에이전트를 설정합니다:환경 설정: Python과 Boost를 설치합니다. Boost는 가벼운 라이브러리로, 몇 가지 간단한 명령어로 설치가 가능합니다.기본 에이전트 생성: Boost CLI(Command Line Interface)를 사용해 기본 AI 에이전트를 초기화합니다. 이 단계에서는..

파이썬/AI 2025.05.22

초보자를 위한 Spring Boot 가이드 핵심 개념 총정리

Spring Boot는 Java 기반의 프레임워크로, 기존 Spring 프레임워크의 확장판이라 할 수 있습니다. 이 프레임워크는 개발 과정에서의 복잡함을 줄이고 간소화된 설정으로 빠르고 효율적인 애플리케이션 개발을 가능하게 합니다. 특히, Spring Boot는 반복적인 설정 코드(보일러플레이트 코드)를 최소화하여 개발자가 비즈니스 로직에 집중할 수 있도록 돕습니다.Spring Boot의 주요 특징Spring Dependencies: Spring Boot는 다양한 의존성을 제공하며, 이를 통해 자동 설정(auto-configuration)을 지원합니다. 주요 의존성은 다음과 같습니다:Spring Boot Starter Web: 웹 애플리케이션 및 RESTful 서비스를 구축하기 위한 의존성.Lombok:..

기타 2025.05.08

JavaScript 배열 메서드 Sort, Map, Filter, 그리고 Reduce 완벽 가이드

JavaScript에서 배열은 데이터 관리와 조작을 위한 강력한 도구입니다. 그중에서도 sort, map, filter, 그리고 reduce 메서드는 데이터 변환과 처리를 위해 자주 사용되는 핵심 메서드들입니다. 이 글에서는 각 메서드의 사용법과 실전 예제를 통해 그 작동 방식을 자세히 알아보겠습니다.1. Array.prototype.sortsort 메서드는 배열 요소를 특정 순서로 정렬합니다. 기본적으로 문자열을 기준으로 정렬하지만, 사용자 정의 비교 함수를 사용하면 복잡한 정렬 로직도 구현할 수 있습니다.예제: 숫자 오름차순 정렬javascriptconst numbers = [42, 7, 19, 73, 23];numbers.sort((a, b) => a - b);console.log(number..

Web/JS 2025.04.08

React와 Node.js로 확장 가능한 애플리케이션 구축하기

오늘날의 개발자들에게 가장 큰 도전 중 하나는 확장 가능한 애플리케이션을 구축하는 것입니다. 특히, 대규모 사용자 기반, 복잡한 기능, 높은 트래픽을 다뤄야 할 때 그 중요성은 더욱 커집니다. React와 Node.js는 이러한 문제를 해결하기 위한 강력한 조합으로, 빠르고 유지 관리가 용이한 확장 가능한 애플리케이션을 구축할 수 있습니다. 이 글에서는 React를 프론트엔드로, Node.js를 백엔드로 활용하여 확장 가능한 애플리케이션을 만드는 방법을 알아보겠습니다.React와 Node.js를 선택해야 하는 이유React는 동적이고 효율적인 사용자 인터페이스를 구축할 수 있는 프론트엔드 JavaScript 라이브러리입니다. 특히, 변경된 부분만 업데이트하고 렌더링하도록 설계되어 대규모 애플리케이션에서 ..

Web/JS 2025.02.20

이영훈닷컴 프로젝트 도메인 활용과 다양한 플랫폼 통합 전략

이영훈 닷컴의 운영 계획 변경이영훈닷컴 운영은 IT, 프로그래밍 등 관련 소식들을 큐레이션 하고 싶어 시작하려고 한다. 그리고 이영훈닷컴 도메인 구매 일시는 스파르톤4회 끝나고 구매 하였다.이 도메인은 https://leeyounghun.com 파이썬애니웨어 호스팅 운영 하려고 했으나 도메인 연동 하려면 돈을 내야한다. 난 돈이 없기 때문에 도메인 1년씩만 빠져 나가는 방향으로 프로젝트를 잡기 때문에 돈내고 파이썬 애니웨어 사용할 필요가 없다.그래서 이리 저리 정보 검색 하다가 노코드로 해볼까? 그래서 버블, 웹플로우, 윅스, 아임웹 등 국내외 가입 하면서 체크 해보았다.일단 자바스크립트만 작동만 가능하다면 노코드 방향으로 가도 나쁘지 않을거라 생각했다. 티스토리 : 한국어로 작성하는 블로그 활용 (bl..

태천인 2024.07.21

숙취가 안된 코딩 그리고 장고와 DRF: 쿼리큘럼 추측 및 개인 학습 계획

커리큘럼 추측 영상 3개 추가 그리고 장고 기초 심화 구분 이전 수업에 대한 커리큘럼 추측을 남긴 적 있다.1차와 2차 부분에서 장고 기초와 심화 구분이 있는데 시간표 공유 된 거 보니 추측은 맞았다.https://blog.leeyounghun.com/23 쿼리큘럼 예측 그리고 듣고 싶은 강의 물어보기 플라스크 SQL 웹서버 복습쿼리큘럼 설명회 듣고 수업이 이렇게 진행되지 않을까?깃허브파이썬알고리즘SQLCS웹개발플라스크장고기초심화프로젝트취업준비(이력서)쿼리큘럼 설명회에 AI관련 언급은 있었지만 6번~ 8번 사blog.leeyounghun.comhttps://blog.leeyounghun.com/entry/%ED%94%8C%EB%9D%BC%EC%8A%A4%ED%81%AC-%EC%A0%95%EC%A0%81-..

초보자를 위한 Flask와 FastAPI의 세션 관리

Flask의 세션 관리Flask 애플리케이션 생성 및 Secret Key 설정Flask에서 세션을 사용하려면 먼저 애플리케이션을 생성하고 secret_key를 설정해야 합니다. 이 secret_key는 세션 데이터를 안전하게 보호합니다.from flask import Flask, sessionapp = Flask(__name__)app.secret_key = 'supersecretkey' 세션에 데이터 저장세션에 데이터를 저장하려면 session 딕셔너리를 사용합니다. 예를 들어, 사용자의 이름을 세션에 저장할 수 있습니다.from flask import request@app.route('/set_session/')def set_session(): session['username'] = reques..

파이썬/FastAPI 2024.07.11