현재처럼 서비스 구조가 거의 테이블 단위로 DB와 API 서비스가 분리될 때, 이런 구조에서 화면에서 리스트 형태로 두 도메인 데이터를 함께 조회해야 하는 경우가 있을 것 같습니다. 예를 들자면 게시글과 게시글 조회 수를 함께 보여주는 리스트 API가 필요한 상황에서, 단건 조회라면 프론트에서 별도로 API를 호출해도 괜찮을 것 같은데, 페이징 처리나 리스트 형태로 여러 데이터를 묶어서 조회해야 할 때, 실무에서는 보통 한 서비스에서 다른 서비스를 RestClient(Feign 등) 로 호출해서 데이터를 합치는 방식으로 처리하는지, 아니면, 같은 도메인 서비스로 묶어버린다던지 아니면 프론트엔드에서 각각의 API를 호출한 뒤 병합하는 방식으로 처리하는지 궁금합니다. 실제 현업에서는 이런 경우 어떤 접근 방식을 주로 사용하나요?
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 향로님의 추석 챌리지에서 우연히 제목을 보고 바로 구매했는데 아직 완강하지는 못했지만 정말 좋은 강의 같습니다! 선배 개발자님이 개발하시는 느낌으로 보고있습니다! ㅎㅎ 궁금한 점은 혹시 실무에서도 이런식으로 서브쿼리를 이용해서 대규모 데이터에 대해서 처리를 하는지가 궁금해져서 질문 남겨봅니다!
안녕하세요 강사님. 강의에서 Path Enumeration 방식을 활용해 데이터베이스 조회 성능을 최적화하는 방법을 매우 유익하게 배웠습니다. 실제 대규모 서비스 환경에서 이 조회 결과를 Redis로 캐싱하려고 할 때, 캐시를 저장하는 자료구조 선택에 대해 강사님의 의견을 듣고 싶습니다. 현재는 Path를 기반으로 DB에서 계층 구조를 유지하며 정렬된 댓글 목록을 조회하고 있습니다. 이 결과를 Redis에 저장하는 방법으로 아래 두 가지를 고려하고 있습니다. 1. List 구조 (LRANGE) 장점: DB에서 조회한 정렬 순서를 그대로 Redis에 저장할 수 있어, 조회 시 한 번에 가져올 수 있습니다. 고민: CUD(특히 중간 삽입) 발생 시 전체 List를 삭제하고 DB에서 다시 조회해 재저장해야 하므로 비효율적일 수 있습니다. 2. Sorted Set 구조 (ZADD) 장점: 각 댓글을 멤버로 저장하고 Path 값이나 정렬 기준을 score로 부여하면, CUD 발생 시 해당 멤버만 ADD/REMOVE로 처리할 수 있어 갱신이 효율적입니다. 고민: Path 기반의 정렬 값을 Redis의 score로 매핑하는 과정이 다소 복잡합니다. 이처럼 캐싱 로직의 구현 복잡도(Sorted Set)와 갱신 효율성(List의 TTL 전략) 사이의 균형을 고려할 때, 강사님께서는 무한 depth 댓글 구조를 캐싱할 때 어떤 Redis 자료구조가 더 적합하다고 생각하시는지 궁금합니다. 감사합니다.
for i in range(0, 5): list_box = [] for k in range(0, 200): ran_num = random.randint(1,200) list_box.append(ran_num) df[i+2000] = list_box df = df.T 제가 이해하기로는 2000 부터 2004까지 5개의 행을 만들고 각 행에 200개의 자료를 넣는데 1부터 199 까지의 정수를 넣는다. 그렇다면 df.T는 어떤 의미일까요? 그리고 randint 이 함수는 랜덤정수를 생성한다는 것일까요? 1부터 200 사이의 정수를 랜덤으로 넣는다는 의미가 맞을까요?
프로그래밍 시작하기 : 도전! 45가지 파이썬 기초 문법 실습 (Inflearn Original)
# 11.Dict Items Sum d = {'a': 17,'b': 114,'c': 247, 'd': 362, 'e': 220, 'f': 728, 'g': -283, 'h': 922} # 방법1 total = 0 for i in d.values(): total += i print(f'ex1 결과 : {total}') # 방법2 print(f'ex2 결과 : {sum(d.values())}') # 방법3 print(f'ex3 결과 : {sum([d[item] for item in d])}') # 괄호 제외 TypeError Traceback (most recent call last) Cell In[13], line 15 11 print(f'ex1 결과 : {total}') 14 # 방법2 ---> 15 print(f'ex2 결과 : {sum(d.values())}') 18 # 방법3 19 print(f'ex3 결과 : {sum([d[item] for item in d])}') TypeError: 'int' object is not callable 인트가 호출이 안 된다고 뜨는데 이유가 뭔지 알 수 있을까요?
사무실 컴퓨터에서는 CMD 창에서 Pip도 안된다그러고 파이썬 설치도 안된다고 하네요. (현재 행정복지센터 근무중) 보안때문일까요.. 이번 국가정보자원관리원 화재때문일까요.. 사실 이건 질문이라기보다는 하소연 입니다.ㅎㅎㅎ 사무실에서 자동화 시스템을 만들어보려고했는데 안되겠네요. 개인 컴퓨터로 만들어서 사무실 컴퓨터에서 사용할 수 있는 방법도 있는거겠죠?
해당강의 : 2주차;2-10. 2주차 끝&숙제 설명 강사님 안녕하세요. 강의 중 두 번째 문제인 ‘배달의 민족 - 배달 가능 여부’ 문제를 풀이하며, 아래와 같이 코드를 작성해보았습니다. def is_available_to_order(menus, orders): for order in orders: if order not in menus: return "주문 불가능" return "주문 가능" 강의에서 설명하신 set() 을 활용한 방식이 탐색 효율이 높다는 점은 잘 이해했습니다. 이에 대해 생각해보며 , 제가 작성한 방식도 리스트 탐색만으로 충분히 동작하여 데이터 규모가 크지 않은 상황에서는 큰 성능 차이가 없을 것 같다는 생각이 들었습니다. 두 방식 모두 평균적인 입력 크기에서는 큰 차이가 없을 것 같은데, 혹시 제가 사용한 방법도 일정 규모 이하의 데이터에서는 효율적인 접근으로 볼 수 있을지 궁금합니다. 또한, 실제 서비스 코드에서는 어떤 기준으로 set() 변환을 적용하는 것이 바람직한지 알고 싶습니다.
안녕하세요! 현재 코딩테스트 준비중인 학생입니다. 백준에서 현재 문제 유형 별로(DFS, 백트래킹 등등..) 풀어 보고 있습니다. 문제는 구현같은 유형은 몰라도 풀 수 있지만 DP, N-queen문제는 해당 문제를 접해보지 않고서는 풀기 힘들다고 생각합니다. 하루에 한 유형씩 제대로 이해하기 vs 한 유형만 쭉 풀어서 마스터하기 둘 중에 어떤게 더 좋은 접근법이라고 생각하시나요? 막상 유형별로 풀자니 구현, DFS, BFS, DP유형이 코테에 많이 보이는거같아서 고민입니다.
안녕하세요 강사님, 이전에도 같은 질문을 드린 적 있으나 아직 답변을 받지 못해서 다시 한 번 질문 드리는 점 양해 부탁드립니다. 제 강의 기한이 이번달 16일까지이지만.. 혹시나 가능하다면 올해 하반기 시험이 열리는 11월 29일까지 강의 기한을 연장할 수 있을지 문의드리고 싶습니다. 기간 연장이 안된다면..ㅠㅠ 1.5개월 치 수강료라도 결제하고 싶습니다..ㅠㅠ 메일 주소 남겨놓고 갑니다, 답변 해주시면 너무나도 감사하겠습니다!! dabin644@naver.com 감사합니다!
코드 5줄의 마법, 5줄 머신러닝 PyCaret: 데이터 분석 프로젝트에 AutoML 날개 달기
from pycaret.datasets import get_data from pycaret.regression import * insurance_df = get_data('insurance') setup(data = insurance_df, target = 'charges', session_id = 123, fold_shuffle = True, log_experiment = True, experiment_name = 'insurance_v1') best = compare_models(sort = 'R2') 여기까지 실행하는 경우 잘 작동합니다. 다만 뒤에 tunemodel 실행 시 에러나는데 그게 모델이 튜닝이 안되는 모델이 선택되는 경우가 있는 것 같아요 # 어떤 모델이 선택되었는지 확인 print(f"선택된 모델: {best}") print(f"모델 이름: {type(best).__name__}") 선택된 모델: DummyRegressor() 모델 이름: DummyRegressor 이 경우에 pycaret이 처음부터 튜닝할 모델만 알고 가는 게 아니라서 이런 오류가 생기는건지 궁금합니다. 만약 그렇다면 처음부터 include나 exclude로 모델 지정 외에는 없나요?
💡 질문 작성 가이드 보다 빠르고 정확한 답변을 위해, 아래 사항을 참고해 질문을 작성해주세요. 1. 간단한 내용은 ChatGPT로 먼저 확인해보세요. 기본 개념이나 용어 설명은 ChatGPT를 활용하는 것이 더 빠르고 효율적일 수 있습니다. 2. 질문하실 때, 아래 내용을 함께 적어주시면 좋아요. 어느 파트인지 섹션 3 - 브루트 포스 알고리즘[문제풀이]: BOJ 1342 내가 이해한 내용 재귀 + 백트래킹을 이용해서 푸는 방법(방법2) 중 선생님께서 작성하신 dict과 set 객체를 이용한 것이 아닌 collections.Counter를 이용하여 코드를 작성했더니 시간초과가 뜹니다. from itertools import permutations from collections import Counter s = input() def sol(lev): global s, counter, choose, ans # base case if lev == len(s): ans += 1 return # recursive case for k in chars: if counter[k] == 0: continue if (not choose) or (choose[-1] != k): counter[k] -= 1 choose.append(k) sol(lev + 1) choose.pop() counter[k] += 1 counter = Counter(s) chars = tuple(counter.keys()) choose = [] ans = 0 sol(0) print(ans) 궁금한 점 dict과 set을 이용해서 for문으로 직접 주입하는 방식과 Counter 컬렉션을 이용해서 사용하는 방식에 어떤 차이점 때문에 시간초과가 나는지 궁금합니다 (참고로 python3로는 시간초과가 나지만, pypy3로는 통과가 됐습니다. 이 부분도 왜 그런지 궁금합니다.) 파이썬을 선생님 강의로 입문을 해서 그런지 파이썬 기초에 대해 지식이 많이 부족합니다. 알고리즘 본질이 아닌 파이썬에 대해 질문드려 죄송합니다
대부분 하나의 DB만을 사용하다보니 shard key가 고려되지 않은 테이블 설계를 보고 많이 사용했는데 처음부터 shard key는 고려하면서 설계를 하는것이 좋을까요? 저같은 경우처럼 shard key가 고려되지 않은 테이블에서 샤딩을 하기위해서 shard key를 추가하는 작업은 어느정도의 난이도가 있을까요? 강사님이 생각하시는 데이터베이스 샤딩을 위한 기준같은게 있으신지 궁금합니다.