안녕하세요 강사님. 강의 잘 듣고 있습니다. 이번 시간에 강사님께서 Spring WebFlux와 Spring Web MVC를 혼용해서 사용하는 경우, 결국에는 Web MVC의 기본 스레드인 톰캣 스레드를 사용해서 스레드 고갈이 될 수 있다고 하셨습니다. 따라서 내부적으로는 WebFlux의 이벤트 루프 스레드가 아닌 톰캣 스레드를 사용해서 블로킹되는 현상이 발생한다로 해석하면 될까요? 저는 혼용할 경우, Mono/Flux 타입 응답에 한해서는 동시 요청 발생 시 이벤트 루프 스레드를 사용하여 IO 작업을 대기하지 않고 해당 스레드가 다른 일을 처리하러 가는 것으로 알고 있었습니다. 혹시 이러한 상황에서 어떤 스레드를 사용하는지 테스트 해볼만한 좋은 방식이 있을까요? 감사합니다.
안녕하세요. 현재 '[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)' 강의를 수강중에 있습니다. 수강 만료일이 10.13.인데, 올해 마지막 실기시험이 11.28.(토) 에 있습니다. 수강만료일과 시험기간내에 공백이 있어 남은 기간(약 1달 반) 정도만 연장이 가능한지 여쭤봅니다.. 정 어렵다면 해당 기간만이라도 소액으로 연장결제가 가능한지 같이 문의드립니다. 올해 마지막 시험이라 꼭 부탁드립니다 ㅠㅠ
Jupyter lab 실행하면 브라우저에 자동으로 뜬다고 알려주셨는데 아래와 같이 명령어를 제대로 인식하지 못하고 있습니다. C:\Users\ g1991.kim >jupyter lab . usage: python.exe C:\Python314\Scripts\jupyter [-h] [--json] [--debug] [--version | --config-dir | --data-dir | --runtime-dir | --paths | subcommand] Jupyter: Interactive Computing positional arguments: subcommand the subcommand to launch options: -h, --help show this help message and exit --version show the versions of core jupyter packages and exit --config-dir show Jupyter config dir --data-dir show Jupyter data dir --runtime-dir show Jupyter runtime dir --paths show all Jupyter paths. Add --json for machine-readable format. --json output paths as machine-readable json --debug output debug information about paths Available subcommands: kernel kernelspec migrate run troubleshoot Jupyter command jupyter-lab not found.
강의와 관련된 질문은 아닌데요 혹시 병현님 PC 사양이 구체적으로 어떻게 되나요? 케이스는 써멀테이크 파워는 마이크로닉스 클래식2 인거는 알겠는데.. 나중에 PC 맞출 때 참고 하려고 합니다. 그리고 병현님 PC 사양으로 많은 양의 데이터를 시각화 했을 때 얼마나 빠르게 되나요? 프로그램 별로 알려주시면 감사하겠습니다. 추가 질문이 있는데, IBM SPSS나 Tableau는 강의에서 안 다루시던데 SPSS,태블로를 사용하지 않는 이유가 무엇인지도 알려주시면 감사하겠습니다.
안녕하세요 강사님! 항상 수업 잘 듣고 있습니다. 저는 그간 데이터 분석가를 꿈꾸며, 강사님의 "머신러닝 완벽가이드", "tensorflow cnn", "pytorch cnn", "transformer 구현 ~", "fastapi 완벽가이드", "kaggle ~" 강의를 몇번이고 들으며 익혀왔습니다. "내가 만든 인공지능 모델이 과연 어떻게 쓰일까"에 대해서 고민하다가 fastapi까지 공부했는데요. 이제는 Data Engineering이나 MLOps Engineering 쪽으로 취업하고 싶다고 결정하여 어떻게 어디서부터 공부할지 막막합니다. 찾아보니 사실상 Data Scientist가 하는 업무를 제외하고 배포가 되는 과정까지를 다 할줄 알아야 하고, 요구하는 기술적 요건도 많아보였습니다.(docker, fastapi, vllm, kafka, airflow 등등..) 이에 강사님께서 제가 앞으로 MLOps쪽으로 간다면 어떤 것을 공부하면 좋을 것 같은지, 대학원을 생각해보는게 좋을지 등을 추천해주셨으면 좋겠습니다.. 강사님 강의만 거의 들어온 상태라서 저 강의에 나온 내용을 제외하면 아무것도 모른다고 가정해주시면 감사하겠습니다 !
(AI 퀀트) 코드 한 줄 안 쓰고 주식 자동 분석 시스템 만들기 feat. Claude CLI
안녕하세요. 더운데 수고 많으십니다. 현재 저만의 웹앱을 만들어 저만의 조건검색식을 만들었습니다. 하루에 한번 조건검색을 만족하는 종목을 찾아줍니다. 여기에 실시간으로(15분봉)으로 조건검색에 맞는 종목을 텔레그램으로 받기 위해서는 어떤 기술스택이 필요한지 궁금합니다. 감사합니다.
안녕하세요 쿠케님! 현재 구현되어 있는 댓글 삭제 로직을 보면 1. 댓글 조회 2-1. 자식 댓글이 존재하면 deleted=true 로 변경 2-2. 자식 댓글이 존재하지 않으면 댓글을 물리 삭제하고, 부모 댓글을 재귀적으로 삭제 이렇게 구현되어 있는데요. 동시성 문제가 발생할 수 있겠다는 생각이 들었습니다! T1 삭제 트랜잭션 T2 답글 트랜잭션 ──────────────────────────────────────────── SELECT 부모 SELECT 자식 → 없음 SELECT 부모 → ACTIVE INSERT 답글 COMMIT DELETE 부모 COMMIT (제가 잘 분석한게 맞나 모르겠네요 ㅎㅎ) 물론 이렇게 꼬일 확률은 낮지만, 이런 케이스에 대해서는 select for update를 거는 것이 좋을지, 아니면 fk를 추가하여 정합성을 보장해줘야 할지, 쿠케님 의견을 묻고 싶습니다.
강사님 안녕하세요, 좋은 강의 여러번 반복해서 잘 듣고 있습니다. 재고 감소와 비교했을때 차이점이 궁금하여 문의드립니다. 안녕하세요 강사님 이전 재고 관리 강의와 차이에 대해 궁금합니다. 이전 질문을 참고하였으나 추가로 더 궁금한게 있어서 문의드립니다. 재고 감소와 쿠폰 발급의 차이점이 너무 헷갈려서 정리하고 있습니다. 두 경우 모두 한정된 수량을 여러 요청이 동시에 차지한다는 점에서는 비슷해 보입니다. 그렇다면 쿠폰도 이벤트 테이블에 잔여 수량을 100개나 300개로 설정하고, 재고처럼 수량을 차감한 뒤 사용자 쿠폰을 생성하는 방식으로 구현할 수 있지 않을까요? 강의에서는 쿠폰 발급의 정합성을 위해서 전체 로직에 락을 걸 필요가 없다고 하셨는데, 그러면 반대로 재고 감소 같은 경우도 마찬가지로 재고 감소의 정합성을 위해 전체로직에 락을 걸 필요 없이 다른 방법으로 하는게 더 나은 방법 아닌가요?? 비슷해 보이는 한정 수량 문제를 서로 다르게 푼 이유를 잘 모르겠습니다 ㅠㅠ
import asyncio import timeit from urllib.request import urlopen from concurrent.futures import ThreadPoolExecutor import threading # 실행 시작 시간 start =timeit.default_timer() # 서비스 방향이 비슷한 사이트로 실습권장(예 게시판 성 커뮤니티) urls = ['https://daum.net', 'https://naver.com', 'http://mlbpark.donga.com', 'https://tistory.com'] async def fetch(url, executor): # 실행 res = await loop.get_running_loop(executor, urlopen, url) # 결과 반환 return res.read()[0:5] async def main(): # 쓰레드 풀 생성 executor = ThreadPoolExecutor(max_workers=10) # future 객체 모아서 gather 에서 실행 futures = [ asyncio.ensure_future(fetch(url, executor)) for url in urls ] # 결과 취합 rst = await asyncio.gather(futures) print('------------------------------') print(('Result :', rst)) if __name__ == '__main__': # 루프 초기화 asyncio.run(main()) # 수행 시간 계산 duration = timeit.default_timer() - start # 총 실행 시간 print('Total Running Time :', duration) 여기에서 loop is not defined라고 나오네요 지금 파이선은 3.14버전을 쓰고있는데 저기 loop를 무엇으로 바꾸면 될지 모르겠어요
강사님 답변처럼 SUPABASE_SERVICE_ROLE_KEY 복사하고 붙인 후 실행 했는데도 아래처럼 나오네요. 무시하고 계속 수업 진도를 나갈려고 하는데 내가 워낙 쌩 초보라 13번째 강의에서도 또 언급되길래 계속 무시하고 수업을 끝까지 들으면 해결 할 수 있는지 의심스럽습니다. 그리고 localhost:8000/docs 가 강사님 처럼 열리지 않네요... ㅠㅠ "사이트에 연결할 수 없음. localhost에서 연결을 거부했습니다"라고 하네요 PS C:\박영준\banbu-stocktrading-final> python run.py ⚠ SUPABASE_SERVICE_ROLE_KEY 미설정 - anon 키 사용 중. RLS가 켜져 있으면 쓰기가 차단될 수 있 습니다. Supabase URL: https://fohjixoviclcuwdtadxf.supabase.co INFO: Started server process [23136] INFO: Waiting for application startup. 서비스 시작 시 경제 데이터 수집을 즉시 실행합니다... 경제 지표 및 주가 데이터 업데이트 작업 시작... 2026-07-27 16:39:01,751 - httpx - INFO - HTTP Request: GET https://fohjixoviclcuwdtadxf.supabase.co/rest/v1/economic_and_stock_data?select=%EB%82%A0%EC%A7%9C&order=%EB%82%A0%EC%A7%9C.desc&limit=1 "HTTP/2 403 Forbidden" 마지막 수집 날짜 조회 중 오류 발생: {'message': 'permission denied for table economic_and_stock_data', 'code': '42501', 'hint': 'Grant the required privileges to the current role with: GRANT SELECT ON public.economic_and_stock_data TO service_role;', 'details': None} 2026-07-27 16:39:01,798 - httpx - INFO - HTTP Request: GET https://fohjixoviclcuwdtadxf.supabase.co/rest/v1/economic_and_stock_data?select=%2A&%EB%82%A0%EC%A7%9C=eq.2005-12-31 "HTTP/2 403 Forbidden" 경제 데이터 업데이트 중 오류 발생: {'message': 'permission denied for table economic_and_stock_data', 'code': '42501', 'hint': 'Grant the required privileges to the current role with: GRANT SELECT ON public.economic_and_stock_data TO service_role;', 'details': None} Traceback (most recent call last): File "C:\박영준\banbu-stocktrading-final\app\services\economic_ service.py ", line 134, in update_economic_data_in_background prev_data_response = supabase.table("economic_and_stock_data").select("*").eq("날짜", previous_date).execute() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\postgrest\_sync\request_ builder.py ", line 96, in execute raise APIError(dict(json_obj)) postgrest.exceptions.APIError: {'message': 'permission denied for table economic_and_stock_data', 'code': '42501', 'hint': 'Grant the required privileges to the current role with: GRANT SELECT ON public.economic_and_stock_data TO service_role;', 'details': None} ERROR: Traceback (most recent call last): File "C:\박영준\banbu-stocktrading-final\app\services\economic_ service.py ", line 134, in update_economic_data_in_background prev_data_response = supabase.table("economic_and_stock_data").select("*").eq("날짜", previous_date).execute() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\postgrest\_sync\request_ builder.py ", line 96, in execute raise APIError(dict(json_obj)) postgrest.exceptions.APIError: {'message': 'permission denied for table economic_and_stock_data', 'code': '42501', 'hint': 'Grant the required privileges to the current role with: GRANT SELECT ON public.economic_and_stock_data TO service_role;', 'details': None} During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\starlette\ routing.py ", line 638, in lifespan async with self.lifespan_context(app) as maybe_state: ~~~~~~~~~~~~~~~~~~~~~^^^^^ File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\ contextlib.py ", line 214, in aenter return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ async with original_context(app) as maybe_original_state: async with original_context(app) as maybe_original_state: ~~~~~~~~~~~~~~~~^^^^^ async with original_context(app) as maybe_original_state: ~~~~~~~~~~~~~~~~^^^^^ File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\ contextlib.py ", line 214, in aenter return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "C:\박영준\banbu-stocktrading-final\app\ main.py ", line 18, in lifespan await startup() File "C:\박영준\banbu-stocktrading-final\app\ main.py ", line 48, in startup await update_economic_data_in_background() File "C:\박영준\banbu-stocktrading-final\app\services\economic_ service.py ", line 251, in update_economic_data_in_background raise Exception(f"경제 데이터 업데이트 중 오류: {str(e)}") Exception: 경제 데이터 업데이트 중 오류: {'message': 'permission denied for table economic_and_stock_data', 'code': '42501', 'hint': 'Grant the required privileges to the current role with: GRANT SELECT ON public.economic_and_stock_data TO service_role;', 'details': None}