본문 바로가기
728x90
반응형

전체 글129

[Typescript] as const 대신 Object.freeze를 쓰면, 타입이 조용히 무너진다 클로드 코드가 짜준 두 줄프로젝트 진행하다 이런 두 줄을 클로드 코드가 작성해줬음.export const COLUMN_ALIGNMENTS = ['left', 'center', 'right'] as const;export type ColumnAlignment = (typeof COLUMN_ALIGNMENTS)[number];그리드 컬럼의 정렬 방향을 정하는 계약이었음. alignment: "center" 같은 값이 백엔드에서 오면 그 컬럼을 가운데 정렬하는 기능.as const가 뭔지 찾아보다가 "배열 안의 값들이 넓은 string이 아니라 그 값 자체로 굳는다"는 걸 알게 됐고, 그러자 자연스럽게 다음 질문이 나왔음. as const는 readonly라는데, 그럼 런타임에도 못 바꾸는 건가?아니면 Obj.. 2026. 8. 25.
Agent 개발 파이썬 에이전트 예제 요약LLM은 단순히 문자열로만 응답만 할수있고Agent는 LLM의 응답내용을 기반으로 이것저것 동작하는 백엔드임 llm은 대화 내용을 기억하지 못함 →따라서 클라이언트나 백엔드자체에서 사용자와 llm간의 대화 내용을 매번 전체 응답내용을 주고받음.이중 llm에게 제공되는 사용 가능한 툴과 툴에 대한 스펙을 제공하고,llm은 FAST API를 활용하여 툴을 사용하고 툴 사용한 결과에 따른 응답을 주고 받음.아래는 예제를 활용한 응답 결과실제로 사용하려면별도의 폴더를 만들어 위 예제 코드를 다운받고,폴더를 열고 여백을 우클릭 -> 터미널에서 열기 or 파워쉘 열기 후아래의 파이썬을 실행 스크립트를 활용 (파이썬 설치가 안되어있다면 설치할 것) python -m venv .venv... 2026. 8. 4.
Open WebUI 커스터마이징 준비 방법 정리 필수 전제 조건python 3.11 설치 완료 및 환경변수 설정 완료node.js 버전은 18.13.0 ~ 22.x.x open web ui 깃허브 클론이든 포크든 일단 가져와야함. 커스터마이징(개발) 트랙에선 프로젝트 폴더의 backend 폴더에서 `pip install -r requirements.txt` 명령어를 실행해서 의존성 다운프로젝트의 백엔드 실행은 `start_windows.bat` 파일을 사용하여 실행한다.또는 uvicorn으로 실행해야함. `python -m uvicorn open_webui.main:app --port 8080 --reload`--reload는 코드 고칠 때마다 백엔드 자동 재시작 옵션백엔드가 정상적으로 떠 있는지 확인한다. (open-webui serve는 기본적으.. 2026. 5. 28.
윈도우 앱 스토어 - 파이썬 다운그레이드 오류 윈도우 앱 스토어로 파이썬을 설치하면 안돼-> 왜? 환경변수를 꼬이게 만듦.-> 정확히는: WindowsApps\python.exe 라는 가짜 stub이 PATH 맨 앞에 박혀서 진짜 Python을 가로챔.Python 설치할 때 "Add Python to environment variables" 체크박스반드시 켜기-> 안 켜면 Python은 설치되는데 PATH에 등록이 안 됨-> 즉 python, pip 명령이 안 먹힘-> 끄고 깔면 직접 PATH 추가해야 함 (귀찮음)PATH에 등록해야 할 폴더는 두 개임-> C:...\Python311\ (python.exe가 여기 있음)-> C:...\Python311\Scripts\ (pip.exe가 여기 있음)-> Scripts 폴더 빼먹으면 .. 2026. 5. 28.
ELK 스택 구성 및 로컬 네트워크 접속 설정 - 삽질 기록 개인 서버에 ELK 스택을 docker-compose로 구성하고 GitLab CI로 배포 자동화하는 과정에서 두 가지 문제가 발생했다.Kibana가 며칠째 "서버 준비 안 됨" 상태 → kibana_system 패스워드 미설정 + CI에서 curl 명령어 실행 불가로컬 네트워크에서 Kibana 접속 불가 → docker-compose 포트 바인딩이 127.0.0.1로 고정되어 있었음구성 환경개발/배포 서버: Windows + Docker (WSL2 기반)ELK 버전: Elasticsearch 8.13.4 / Kibana 8.13.4 / APM Server 8.13.4배포 방식: GitLab Runner + CI/CD 파이프라인구성 파일: docker-compose.elastic-shared.ymlELK .. 2026. 4. 28.
개발자만큼 가성비 안나오는 직군이 없음 온고지신이라고여태까지 있었던 기술들을 전부 익히고, 새로 나오는 기술도 배워서, 사용할 줄 알아야하는데 취직하려면, 직접 서비스 해보고, 정량적인 평가로 다른사람에게 설명하고 자기 자신을 세일즈 할줄 알아야하면서이렇게 취직해봤자 하루에 일당 10만원도 벌기도 힘든 직군이 없는듯 하면 할수록 모르겠다. 갈피를 못잡겠음백엔드만 할줄 알아서 백엔드로 취직하니까 CI/CD는 기본에 프론트도 할 줄 알거라 생각하는 사람들이 한두명이 아님. 덕분에 기술스택 쌓느라 시간 더 쓰니까 이젠 AI가 나와서 쓱싹쓱싹.10년 공부하고 AI 덕분에 인재풀 좁혀버리기 귀찮은걸 쉽게 해결할수있게 돼서 편해지긴 했는데, 그만큼 취업문이 좁아짐ㅋㅋㅋㅋㅋ 2026. 4. 27.
Blue-Green 배포 전략 배경: 백엔드 빌드 중 다운타임 문제 논의 중 정리핵심 개념운영 환경을 항상 두 벌 유지한다.[사용자] │[로드밸런서 / nginx] │ ├──→ [Blue 환경] ← 현재 운영 중 (트래픽 100%) │ └──→ [Green 환경] ← 대기 중 (트래픽 0%)배포 순서:1. Green에 새 버전 배포 + 테스트2. 로드밸런서 전환 → Green이 운영 (트래픽 100%)3. Blue는 대기 상태로 전환다음 배포 때는 Blue에 올리고 또 전환. 계속 교대.장단점장점항목내용다운타임 0전환이 nginx reload 수준 (수 밀리초)즉시 롤백문제 생기면 이전 환경으로 트래픽 전환 — 재빌드 불필요운영과 동일 환경 테스트Green이 실제 운영 인프라에서 뜬 채로 검증 가능안전한 DB 마이.. 2026. 4. 25.
카카오톡 인앱에서 구글로그인시 403 리디렉션 문제 1. 문제상황구글 리디렉션으로 로그인 처리를 진행하는데테스트를 위해 지인들에게 카카오 문자로 url을 전달했고, 테스트를 진행 요청했더니다들 로그인 단계에서 403에러가 터짐. 2. 문제의 원인구글에서는 인앱 브라우저에서 리디렉션을 허용하지 않음.구글은 카카오뿐만이 아니라 인스타, 페이스북등 다른 앱에서 자체적으로 지원하는 브라우저에 대해서보안상 리디렉션을 허용하지 않음 (아마도 인앱이라면 api키 가로챌 수 있기 때문에?)때문에 인앱을 우회하는 방식을 사용하거나 인앱에서 브라우저로 이동시키는 방법이 필요함. 3. 해결 방법페이지 로드시 중간에 user-agent를 감지해서 브라우저로 튕겨내야함.안드로이드는 intent를 사용해서 튕겨낼수있고 ios는 버튼을 눌러서 사용자가 브라우저로 이동하게 해야함. .. 2026. 4. 13.
[CI/CD] 깃랩 러너 볼륨 할당 문제 깃랩 러너를 대화형으로 사용하면 볼륨을 할당하지 못함. 초기 환경구성미니PC ↔ 개발PC 미니 PC : 깃랩구동 , 운영프로그램, 배포전 환경 테스트용 개발 CI/CD 및 프로그램 구동, nginx) 개발PC : 프론트, 백엔드 IDE 구동 및 개발 사건의 발단.1. 개발환경은 미니 PC에 깃랩, 돌려야하는 백, 프론트, DB ,nginx를 전부 몽땅올림.개발용과 배포용으로 두개씩올림.2. 레디스 도입 -> 미니 PC 터짐. (깃랩 멈춤, 응답없음, 핑응답 무시, ssh 접속 불가)3. 한참뒤에 다시 원상복구. 문제의 시작1. 운영이나 개발환경을 노트북으로 옮기자.2. 그동안 미니pc안에서 전부 사용하던 내용보다는 게이트웨이 형식으로 미니PC에다 nginx를 써보자!가 오늘 하루를 날린 이유가 됨. 도커.. 2026. 4. 7.
구글 인증 401 오류 이상하다 로컬에서 로그인할때 유저 정보가 없으면 유저 회원가입을 유도하는 페이지로 이동을하는데개발 서버에 배포된 건 왜 유저 회원가입을 유도하는 페이지로 이동하는게 아니라, 내 403 에러가 나오는거지?출력도 해봤고, 구글 콘솔에 https://172.30.1.65.sslip.io:8443 이미 추가해서 백엔드에서는 이전이랑 바뀐게 없는데.....오류 응답 하는 방법만 수정하고 추가한 것 같은데....제대로 응답이 안됨.심지어 UsersExceptionEnums 클래스를 추가해서오류 발생하면 RootException 으로 throw 던지게하고,전역 오류 처리하는 클래스 ExcpetionController 에서 CustoumException을 받아서 처리하는 부분은 주석처리해놔서 오류가 나야할텐데, 분명히.. 2026. 2. 16.
깃랩 CI/CD 구축 후기 깃랩 CI/CD주요 목표미니PC 활용해서 CI/CD 적용 후 미니PC의 도커에서, 배포환경과 개발환경을 분리하되동일한 배포, 및 운영 환경 자동화 구축세부 목표배포, 개발환경은 미니PC를 일컫는 말이며,로컬 환경은 개발인 진행중인 PC를 일컫는 단어로 정의함.배포환경 및 개발 환경을 동일하게 구성할 것(배포 환경에 따라 소스코드 변경할 필요가 없어야함)배포, 개발, 로컬환경에서는 SSL 인증서를 이용한 보안쿠키를 사용해야하며,(레디스 미적용으로 인한 별도의 쿠키 사용 필요.)배포와 개발 환경에서와 동일하게로컬환경에서도 개발서버의 nginx의 리버스 프록시로 로컬PC의 IDE에 접속하도록 구성함.도커 네트워크를 구분하여, 개발환경과 배포환경의 기본 로직 구조를 동일하게 맞출것.배포, 개발 환경을 배포하되,.. 2026. 2. 6.
의지할 대상 찾지 말기 도커로 ci / cd 구성하는게예상보다 말도 안되게 진척이 안되서제미나이 cli 에 의지하고 넘겨서라도 빠르게 해결하려고 했는데해결이 안되고, 오히려 복잡하고 불필요한 낭비라고이것저것 마음대로 잘라내버리고 간소화 시키면서,기존에 필요에 의해 작성한 스크립트를 전부 날리면서 더 꼬여버리면서 심적으로 감당이 안됐는지번아웃 때문에 겪었봤던 미주신경성 실신이 또 왔음. 내 상황을 나름 객관적으로 보고있다고, 완전 타인을 보는 시선으로, 필요에 따라 나를 분리해서 바라보는걸로 스트레스 관리를 나름 잘 관리하는, 발전된 방법으로 관리를 진행했다고 생각했는데....당초 상정했던 기간을 초과하며 발생한 스트레스가, 제미나이 cli를 통해 직접적인 도움을 받을 수 있다고 생각했으나,불가능하다 라는 생각이 들었고, 여기.. 2026. 1. 28.
728x90
반응형