안녕하세요. FastAPI 프로젝트의 폴더 구조에 대해서 궁금한 점이 생겨서 질문 드립니다. 처음에는 라우터에 모든 로직을 넣어서 라우터와 Repository만 분리해서 개발을 하다가, 3 레이어드 아키텍처로 분리를 좀 해볼까 생각이 들었습니다. controller, service, repository 이렇게 나누어 보려고 하는데요. 예를들어 user, board와 같은 도메인이 있다고 하면, 각 폴더를 도메인별로 나누어서 구조를 잡는게 좋을까요? 아니면, controller 폴더 안에 user_controller.py, board_controller.py 등의 파일들이 모여있는게 좋을까요? 선생님께서는 실무에서 어떻게 폴더 구조를 가져가시는지도 궁금합니다. 감사합니다.
현재 RecoBooks 함수 정의가 위와 같고, 3초마다 캐시를 업데이트하는 속성이 설정되어 있습니다. 그런데 저는 강사님처럼 error 노출이 되지 않고 캐시되어 있는 동일한 랜덤 도서 목록이 계속 나오고 있습니다. 아래는 npm run dev로 실행했을 때 나온 로그입니다. 여기서 하나 더 궁금한게 있는데 현재 전체 도서 목록을 불러오는 fetch 함수는 요청한 결과를 무조건 캐싱하는 속성이 설정되어 있습니다. 그런데 제 로그를 보면 http://localhost:12345/book 이 api가 두 번 호출되고 있습니다. request memoization이 호출이 안되는 거 같은데 데이터 캐시가 우위적으로 호출되는 건가요??
중간 과정에서 문제 생긴건지 아니면 설치 옵션이 바뀐것지 모르겠지만 PDF 파일에 나온 Windows 환경에서 설치하는 과정에서 DeveloperDefault 옵션이 보이지 않습니다. 그래서 일단 Full 옵션을 선택해서 다운로드 했는데 상관없을까요? ( 아래는 PDF 이미지 입니다. 저는 맨 윗줄 옵션이 아예 누락되서 나오네요. )
MySQL의 기본 데이터 저장 경로는 /var/lib/mysql 이므로, 직접 만든 볼륨에 /data 경로가 아닌 /var/lib/mysql 을 지정해주셔야 합니다. 도커 컴포즈 파일 내 Volumes-top-level-elements 설정 시, sakila_volume: 이하에 external: true 를 지정하지 않으면, {project_name}_db-data 인 이름의 볼륨을 찾고 없으면 해당 볼륨을 생성합니다.(예: sakila-mysql_sakila_volume ) 따라서 external: true 를 지정하거나, name: sakila_volume 을 지정해야합니다. see → https://docs.docker.com/reference/compose-file/volumes/
카일님 안녕하세요. 강의 아주 잘 듣고 있습니다 감사합니다 :) 총 정리 문제 2번에서 추가 질문 드립니다. 제가 처음 풀때 문제를 잘못이해하여, type1 별 가장 많이 포획된 포켓몬 이름과 횟수를 각 type1 TOP 1 들을 구하려고 했습니다. MAX (COUNT) 라는 말도 안되는 쿼리를 작성하면서 고군분투 하였고, 결국 못 풀었습니다. 다행히 채점할때 카일님이 의도하신 출제방향으로는 답이 나와있는 상태여서 이해는 하였습니다 만. ! 커머스라고 가정할 때 각 카테고리별(type1) , 가장 많이 팔린 제품(kor_name), 최다 판매수(cnt) 를 구해야 한다면, 제가 풀지못했던 문제로 해결할 수 있을 것 같아서요. type1 별로 포획량 TOP 1을 구하는 쿼리는 어떻게 작성하면 좋을 까요?
select page_path , count (*) as page_cnt , count ( distinct sess . sess_id ) as unique_page_cnt from ga . ga _sess_hits his join ga . ga _sess sess on his . sess_id = sess . sess_id where visit_stime >= ( '2016-11-01' :: date - interval '30 days' ) and visit_stime < '2016-11-01' and hit_type = 'PAGE' group by page_path order by 2 desc ; 저는 위와 같이 쿼리를 작성했습니다만, 교육 자료에서 temp_01, temp_02로 각각 나눠서 page_cnt와 unique_page_cnt를 구하는 것에 어떠한 장점이 있어서 교안의 쿼리 대로 작성하는지 궁금합니다. 제가 단순히 생각하기에는 비효율적으로 보여서요! 제 쿼리가 비효율적일 수도 있는데, 장단점을 들어보고 싶습니다.
dbeaver 처음 테스트해볼때 SELECT * FROM emp; 해도 전 불려오는 데이터가 없습니다.. 당연하죠 테이블을 넣은적이 없으니..ㅠㅠ 테이블은 SQL 기초때껄 사용하면 되나요?? 이런것에 대한 설명 보완이 필요합니다. SQL Error [942] [42000]: ORA-00942: table or view does not exist Error position: line: 1 pos: 14
pip install faiss-gpu 커맨드 입력하면 아래와 같은 오류가 뜹니다. (langchain) <username>:~/projects/langchain$ pip install faiss-gpu ERROR: Could not find a version that satisfies the requirement faiss-gpu (from versions: none) ERROR: No matching distribution found for faiss-gpu
예를 들어 '.title'을 붙여 넣기 하여 20개가 나오는 경우 선생님 강의에서는 위아래로 움직이는 경우 개발자도구에서만 아니라 실제 페이지에서 title가 가리키는 부분도 함께 표시가 됩니다. 그런데 내가 하는 경우는 그렇지 않네요. 어떤 차이가 있는 것인지 알고 싶습니다.
수업과 같이 npm에 배포하고 제가 만든 ui를 다운받아 import하는 과정에서 해당 이미지와 같이 node_modules에서 export가 나타납니다. 1) lib파일과 index.ts파일을 myapp 폴더로 직접 import했을때는 정상적으로 작동하였습니다. 2) 해당 수업에서 codecamp-ui가 npm 사이트에 아직 배포중이기에 그것도 시험삼아 다운받아서 import하였지만 똑같은 오류가 나타났습니다. 3) node_modules 파일 삭제하고 다시 yarn install로 다운받았지만 같은 오류가 나타났습니다. 그 전 수업까지는 동일하게 오류없이 진행했습니다. 무엇이 문제일까요?
[AI 실무] AI Research Engineer를 위한 논문 구현 시작하기 with PyTorch
안녕하세요 선생님, 주피터 test.ipynb 파일에서 models 파일의 StyleTransfer을 불러오는 기본적인 import가 안되어 문의 드립니다. 혹시 코드의 문제인가 싶어 loss.py라는 파일에 A라는 클래스를 만들고 똑같이 import 시도해 보았지만 실행이 되지 않습니다 ㅜ test와 loss 파일은 실행해 보았고 문제없이 돌아가는 것을 확인하였습니다. gpt를 통해 여러 방법을 시도해 보았지만 잘 풀리지 않아 질문 드립니다..
안녕하세요! 강의 들으며 많은 부분 배우고 있습니다. DateCoverter 정규표현식 부분을 보면서 드는 의문이 있어 질문드립니다. 제가 이해한 바가 맞다면, 정규표현식에서 {1,2} 부분은 앞부분의 패턴을 1번 또는 2번 반복한다고 이해했습니다. 그렇다면 r"20\d{2}/([1-9]|0[1-9]|1[0-2]){1,2}/([1-9]|0[1-9]|[12][0-9]|3[01]){1,2}" 라는 정규표현식에서 월과 일의 숫자를 체크하는 부분이 1번 또는 2번 반복될 수도 있으니 "2023/0303/1212"와 같은 문자열도 통과 가능한 것일까요?
안녕하세요. 백엔드에서 connect.sid 쿠키와 next-auth의 auth.js-session-token을 사용해서 유저 인증을 하는 것 처럼 보입니다. 프론트서버에서 유저가 접근 시 세션 쿠키(connect.sid)를 받아 백엔드에 유저 세션을 확인한다면 next-auth를 사용하지 않아도 되는 것처럼 보입니다. 백엔드에서 auth.js-sessoin-token으로 유저 인증을 한다면 역시 세션 쿠키(connect.sid)가 필요없는 것처럼 보입니다. connect.sid와 auth.js-session-token 쿠키를 모두 사용해야 하는 이유가 있을까요? 만약 둘 다 사용하는게 좋다고 한다면 동기화가 필요할 것 같은데(만료 시간, 세션 무효화 등..), 이건 어디서 어떻게 처리하는게 좋을까요? (예외 질문) connect.sid의 쿠키에 httpOnly 옵션이 false여도 괜찮은가요? 혹시 백엔드에서 connect.sid의 쿠키를 httpOnly로 보냈다면 쿠키파싱이 제대로 안된 것 같습니다. 아래 모듈로 쿠키파싱하면 되는 것 같습니다. 혹시나하고 남겨봅니다. //현재 코드 //import cookie from "cookie"; //const parsed = cookie.parse(setCookie); import { parseSetCookie } from "next/dist/compiled/@edge-runtime/cookies"; const parsed = parseSetCookie(setCookie);
const res = await fetch( `${process.env.NEXT_PUBLIC_BASE_URL}/api/posts/recommends?cursor=${pageParam}`, { next: { tags: ["posts", "recommends"], }, //cache: "force-cache", } ); '/home'에서 포스팅 로딩 시 또는 새로고침 시에 데이터를 최초 조회하는 시점에서 cache: "force-cache"를 제거하면 포스팅이 노출되고 포함하면 포스팅이 안 나오는 현상이 있는데 어떤 이유인지 의심 가는 부분을 못 찾겠어서 질문 드립니다. cache: "force-cache" 주석처리 데이터 존재 cache: "force-cache" 빈 배열