- Today
- Total
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- PLSQL
- javascript
- 프로시저
- url파라미터
- 문제해결
- mysqli
- spring boot
- sql
- dbeaver
- 환경세팅
- 오라클
- php
- PDO
- 워드프레스
- TIL
- 비주얼코드
- 의존성주입
- 트러블슈팅
- 코덱스
- 백엔드
- 오류해결
- PROCEDURE
- 클론코딩
- Hostinger
- 이클립스
- 쿼리개선
- Oracle
- iframe
- MariaDB
- 엘리멘터
목록전체 글 (122)
개발 공부중
지난 글에서는 Gemini가 모르는 책에 대해 잘못된 질문을 만들지 않도록, 책 소개와 사용자 보완 정보를 전달한 과정을 정리했다.이번에는 질문의 내용과 다른 문제를 발견했다.BOOKMATE에서는 로그인하지 않으면 화면에서 AI 기능을 사용할 수 없도록 제한해두었다. 그런데 서버 코드를 확인하니 일부 API에는 로그인 확인이 연결되어 있지 않았다.화면에서는 사용할 수 없어도, 서버에 직접 요청하면 기능을 실행할 수 있는 구조였다. 버튼을 막으면 충분한 줄 알았다화면에서는 비로그인 사용자에게 로그인 안내를 보여주고 AI 기능 사용을 제한했다. 그래서 로그인하지 않은 사람이 AI를 호출하는 일도 막혀 있다고 생각하기 쉬웠다.하지만 화면의 버튼과 서버의 API는 별개였다.인증을 적용하기 전 AI 라우터의 구조..
그런데 책을 바꿔가며 사용하다 보니 질문이 늦게 나오는 것보다 더 중요한 문제가 있었다.Gemini가 책 내용을 모르는데도 질문을 만들어준다는 것이었다.문장은 자연스러웠다. 하지만 실제 작품과 다른 내용을 전제로 질문하면 독서토론에는 쓸 수 없었다.책 제목과 저자만으로는 부족했다처음에는 책 제목과 저자를 전달해서 질문을 만들었더니『노인과 바다』나 『데미안』처럼 유명한 작품에서는 괜찮았다.그런데 최근에 나온 책을 테스트하니 작품 내용을 제대로 알지 못하면서 제목만 참조한 듯한 질문이 생성됐다. 제미나이가 모르는 책을 어떻게 해결할까1) 먼저 Google Search Grounding을 시도했다. 모르는 책이면 검색해서 자료를 찾고, 그 자료로 질문을 만들게 하면 될 것 같았다.하지만 나는 무료 사용자라 호..
이번에는 Google Gemini를 연결한 뒤, 질문이 생성될 때까지 기다려야 했던 요청 구조를 바꾼 이야기다.BOOKMATE에서는 새로운 북클럽을 열면 Gemini가 독서토론 질문을 만들어준다. 그런데 질문 생성에 시간이 걸리다 보니 북클럽 화면에 들어가는 것까지 같이 늦어졌다. 처음에는 한 번의 요청에서 전부 처리했다처음 흐름은 단순했다. 사용자가 책을 선택하고 북클럽에 들어가면, 서버가 Gemini를 호출하고 질문을 받아온 뒤 응답하는 방식이었다.POST /enter→ Gemini API 호출→ 질문 생성 대기→ 결과 처리 및 저장→ 응답한 번 요청해서 책 정보와 질문을 같이 받으니 프론트엔드에서는 이해하기 편한 구조였다. 응답이 오면 그 데이터로 북클럽 화면을 보여주면 됐다.문제는 Gemini의 ..
이번에는 친구들과 책을 읽고 질문과 생각을 나누는 웹 서비스, BOOKMATE를 만들었다.이전 프로젝트와 다르게 Antigravity를 사용해봤고, 코드를 작성하기 전에 설계를 정리하는 데도 시간을 많이 썼다. 이 글은 BOOKMATE 개발기를 시작하면서, 어떤 서비스를 만들려고 했고 왜 MD 파일로 기준을 정리했는지에 대한 이야기다.사이트 주소 : https://bookmate-kmzj.onrender.com/ 이번에는 Antigravity를 사용해봤다지난 프로젝트에서는 gpt나 제미나이 대화창을 이용한 방식으로 만들었다.이번에는 AI 코딩 도구인 Antigravity를 사용하면서 다른 방식으로 프로젝트를 진행해보고 싶었다.지난 프로젝트를 하면서 느낀점은 AI가 일관성을 유지하도록 설계를 분명히 해야된..
안티그래비티로 작업하면서, 다른 PC에서도 이어서 작업할 수 있는 방법이 궁금해졌다.프로젝트 코드를 옮기는 것은 어렵지 않지만, Python과 라이브러리까지 다시 설치하고 실행 환경을 맞추는 과정이 번거로울 것 같았다. 그때 알게 된 도구가 Docker였다. 1. Docker를 쓰면 무엇이 달라질까?Docker는 프로그램과 실행에 필요한 환경을 이미지로 구성하고, 이를 컨테이너라는 독립된 공간에서 실행하는 도구다.FastAPI 프로젝트라면 Python, 필요한 라이브러리, 소스코드 등을 이미지에 담을 수 있다.처음 접할 때는 아래 세 가지를 구분하면 이해하기 쉽다.Dockerfile실행 환경을 만드는 설정 파일조리법이미지프로그램 실행에 필요한 파일과 환경을 담은 패키지준비된 밀키트컨테이너이미지를 바탕으..
VS Code에서 Codex를 사용하다 보면 채팅 목록에서 보관(Archive) 버튼을 누를 때가 있다.문제는 보관 버튼을 누르는 순간 해당 대화가 일반 채팅 목록에서 사라지는데,VS Code Codex에서는 보관된 채팅 목록을 화면에서 바로 확인하거나 복원하는 메뉴를 찾기 어려웠다. 처음에는 대화가 삭제된 줄 알았지만 확인해보니 실제 채팅 데이터는 그대로 남아 있었다.이번 글에서는 직접 해본 Codex 보관 채팅 복원 방법을 정리했다.1. Codex 채팅은 어디에 저장될까?Windows 환경에서 Codex 관련 데이터는 사용자 폴더 아래의 .codex 폴더에 저장된다.C:\Users\사용자명\.codex 내 환경에서는 다음과 같은 구조였다.C:\Users\user\.codex├─ sessions├─ a..
증상매시간 정상적으로 돌던 크론탭이 어떤 시점을 이후로 실행되지 않았던 걸 발견했다.스크립트는 수정한 적이 없고 크론탭으로 설정해둔 로그에는 오류도 없었다. 로그 확인/usr/sbin/crond -n 로그를 확인해보니 다음과 같은 메시지가 나왔다.pam_unix(crond:account): expired password for user tomcat (password aged)(tomcat) PAM ERROR (Authentication token is no longer valid; new one required)(tomcat) FAILED to authorize user with PAM (Authentication token is no longer valid; new one required) 첫 줄에 ..
4편까지 닷홈빌더에서 PHP로 넘어온 이유부터, FCM 웹 푸시를 붙이고 버그를 잡고 구독 기능의 DB 구조를 설계한 과정까지 정리했다. 이번 글은 이 시리즈를 마무리하는 글로, 만들고 나서 든 생각들을 정리했다.관리자 페이지 제작빌더로 사이트를 운영할 때 관리자 페이지가 있었다. 근데 기능이 제한적이라 회원이 몇 명인지, 어떤 글이 올라오는지, 문의가 들어왔는지 같은 것들을 빌더가 제공하는 화면 안에서만 제한적으로 볼 수 있었다. 그래서 내가 원하는 방식으로 데이터를 들여다보거나 조작할 방법이 없었다.PHP로 새로 만들면서는 이 부분을 직접 설계할 수 있었다. 그래서 운영에 필요한 관리자 페이지를 따로 만들었다.대시보드 — 사이트 전반의 현황을 한눈에 보는 첫 화면회원관리 — 가입한 회원 목록과 상태를..
