이전에 정수형 설명하실 때에는 int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; printf("%d", arr[2]) 이런것처럼 선언하실 때 앞에 *(포인터) 가 없었는데 문자열을 설명하실때에는 char *arr[2][2] = {{"Hello", "World"},{"app",dev"}}; 이런식으로 선언하실 때 *(포인터) 가 있더라구요. 포인터를 붙이신 이유와 써야될 떄 안 쓸때 차이점을 알 수 있을까요?
원래는 장고 프레임워크를 주로 이용했었습니다. MTV와 MVC의 View가 장고는 비즈니스로직을 처리해서 Template에 주고, M은 스프링의 Repository와 비슷하다고 생각했습니다. 조금 헷갈리는게, MVC일 때 V는 확실히 랜더링 부분만 담당하는 것이 이해가 갑니다. 다만 Controller가 비즈니스 로직을 담당하는데, Service와 의미가 겹치지 않나 싶었고 보통 django에서는 view에서 처리한 데이터를 Model을 통해 넣는다던지 아니면 model을 통해 가져온 데이터를 view로 하여금 template에 전달한다는 느낌이었는데 오늘 강의의 그림을 보니 controller -> model -> view 인 것 처럼 보여서 그러면 MTV의 M과 MVC의 M은 또 많이 다른건가 싶었습니다. 심지어 이것을 더욱 헷갈리게 하는 것이 Repository인데... MVC인데 뭔가 MVC+Service+Repository인건가 싶기도 하고 헷갈리네요 ㅠㅠ Service - Controller : 프로젝트가 거대해지면 비즈니스로직은 서비스에서 처리하고 컨트롤러는 서블릿 형태의 역할로만 남는건가 싶기도 하고(추측) Model-Repository : 레포지토리가 아무리 봐도 후에 JPA ORM을 사용할 수 있는 영역일 것 같은데, 그렇다면 오늘 강의의 그림에서 보여진 Model은 단순히 컨트롤러에서 View로 데이터 전달을 위한 임시보관소인가 싶습니다. Model은 그림상 DB랑 연결되는 느낌은 없는데.. 아니면 Model은 껍데기고 Model이 리포지토리에 구축된 JPA ORM을 이용해서 DB랑 통신하는 개념일지... 질문이 장황한데... 헷갈려서 그렇네요 답변 주시면 감사하겠습니다:)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요. 선생님 학습 도중 이해가 되지 않아 질문 드립니다. 1. 스프링 부트는 자동으로 글로벌 Validator로 등록한다. 위 말은 즉, 글로벌 Validator가 Bean Validation인가요 ? 2. 필드 타입 오류의 발생유무의 상관없이 글로벌 Validator는 적용되고 Bean Validation(ex : itemValidator)는 적용이 되거나/안되거나 인가요?
[질문 내용] 안녕하세요! 해당 강의를 듣던 와중에 (1:24까지 들었다가 막혔습니다.) 더이상 진도를 못나가게되어 질문드립니다. 자바 버전 추천하는게 55.0 까지인거 같은데, 저의 자바 클래스 파일 버전은 61이라서 에러가 나면서 그레이들 빌드가 되고 있지 않습니다. 어떻게 해야할까요?
강의 듣고 복습하면서 과제도 푸는 중에 갑자기 인터넷 페이지로 보기 위해 실행을 하니, 500번 오류가 수업(example)랑 과제(practice) 둘다 뜨면서 아무것도 뜨지 않습니다.. import 해오는 부분은 아무 이상이 없고, 과제 같은 경우도 이전에 문제 없었던 페이지에서도 같은 500번 오류가 뜹니다 ㅠ
이해가 어려운 섹션이나 영상 설명은 질문으로 꼭 남겨주세요. 기출문제를 풀다가 막힌 개념이 있나요? 질문으로 회차나 번호, 개념을 예시로 질문해주세요. 답변에 도움이 됩니다. 이론 문제는 통합본 PDF 파일로 제공될 예정입니다. (6월 중 업로드 예정) 합격을 가르는 것은 역시 코드해석문제. 이론을 외울 시간이 없다면 코드에 익숙해지고, 중요 개념을 몇 가지 외워가면 합격할 수 있습니다. 코드 풀어주시는거 따로 풀어보고싶은데 파일은 없나요???
올려주신 코드에서 ManyToMany 관계를 맺기 전에 pk(즉, id) 값이 필요하기 때문에 bulk_create를 수행하고 tag_set.add 매서드를 호출한다고 강의에서 설명해주셨습니다. def create_posts(orig_post_list): """포스팅 생성""" category_dict = {category.name: category for category in Category.objects.all()} tag_dict = {tag.name: tag for tag in Tag.objects.all()} user_list = list(User.objects.all()) post_list = [] for orig_post in orig_post_list: post = Post( category=category_dict[orig_post["category_name"]], author=choice(user_list), title=orig_post["title"], status=choice([Post.Status.DRAFT, Post.Status.PUBLISHED]), content=orig_post["content"], ) post._tag_list = orig_post["tag_list"] post.slugify() post_list.append(post) if post_list: print(f"{len(post_list)} 개의 포스팅 생성") Post.objects.bulk_create(post_list, batch_size=1000) for post in post_list: _tag_list = [tag_dict[tag_name] for tag_name in post._tag_list] post.tag_set.add(*_tag_list) 그러나 해당 코드를 실행 시 여전히 tag_set.add를 위해서는 id가 필요하다고 에러가 발생합니다. 사용 중인 DB는 mysql 이며, 일단 임시 변통으로 bulk_create 전에 id를 직접 할당하여 해결하였습니다. for idx, orig_post in enumerate(orig_post_list): post.id = idx + 1 # id는 0이 될 수 없음 그러나 이는 --clear argument를 주었기 때문에 가능한 행위였습니다. 수정하기 위해서 하기와 같은 방법이 적절할까요? 그리고 왜 제 경우만 에러가 발생하는 걸까요? if post_list: print(f"{len(post_list)} 개의 포스팅 생성") Post.objects.bulk_create(post_list, batch_size=1000) tag_lists = [t for t in orig_post["tag_list"]] post_list = Post.objects.all() # id 로드를 위함 for post, tag_list in zip(post_list, tag_lists): _tag_list = [tag_dict[tag_name] for tag_name in tag_list] post.tag_set.add(*_tag_list)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. @PostMapping("/upload") public String saveFile(@RequestParam("itemName") String itemName, @RequestParam("file") MultipartFile file) throws IOException { if (!file.isEmpty()){ String fullPath = fileDir + file.getOriginalFilename(); log.info("파일저장 fullPath={}",fullPath); file.transferTo(new File(fullPath)); } return "upload-form"; } SpringUploadController 에 있는 savFile 입니다. @RequestParam String itemName 없어도 되는거죠 ? @RequestParm MultipatrFile file은 현재 파일이 빈값인지 아닌지 확인해야하기때문에 필요한거같은데 itemName은 필요가없을거같아서요 view단에서 값을 넘겨야하는것도 없는거같구요 답변 부탁드립니다 ~
model 폴더에서 PostImage는 interface를 사용하시고 Post컴포넌트에서는 type을 사용하셨는데 두 개를 다르게 사용하는 강사님만의 기준이 있나요 ? 제가 공부한 바로는 간단한 객체 타입일 경우 둘다 사용해도 상관없다. type은 복잡한 유니언 타입을 지정할때 사용한다 interface는 확장이 필요할 경우 사용한다고
안녕하세요 강사님, 강의 잘 보고 있습니다. 다름이 아니라, pretrained model에서 강의에서와 같이 (1) model의 feature extraction 부분에서 Conv2d의 kernel_size를 줄이고 (2) model의 fully connected layer에서 출력 크기를 10으로 줄인 부분에서 의문이 있어서 글을 남기게 되었습니다. (2)의 경우는 사실 fully connected layer가 복잡한 구조..?를 가지지는 않는다고 생각하여 다시 학습하는 데 별로 문제가 없다고 생각합니다. 하지만, (1)의 경우, 모델의 초반에서 아예 kernel size를 변경했고, 모델 프리징 강의에서 언급하신 바와 같이 그렇게 바꾸게 되면 임의의 랜덤 값으로 가중치가 초기화된다고 말씀하셨는데..! 그렇다면 Imagenet 모델로 사전 학습한 것이 의미가 있는건지 살짝 의문이 듭니다ㅠㅠ 사전 학습 모델의 목적이 그대로 웨이트를 사용한다는 것보다 모델의 구조를 가져온다는 것이라면 납득이 되지만, 사전 학습에서의 가중치가 transfer learning 될 때 어떻게 사용되고 변하는지를 잘 몰라서 이런 궁금증이 생긴 것 같습니다.. 항상 좋은 강의 감사합니다!!
질문을 온전히 이해할 수 있도록, 모든 맥락을 전달해주세요. 질문은 질문자가 번거로워야 보다 좋은 답변을 얻으실 수 있습니다. 시행착오를 알려주시면 곧바로 원하는 문제에 집중할 수 있습니다. 오류 메시지는 일부만 알려주시기보다 전체 오류 메시지를 캡처해서 주시면, 오류 파악에 도움이 됩니다. 당신의 파이썬/장고 페이스메이커가 되겠습니다. ;-) 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
import os from dotenv import load_dotenv from langchain_openai import ChatOpenAI load_dotenv() OPENAI_API_KEY = os.environ["OPENAI_API_KEY"] llm = ChatOpenAI(model="gpt-3.5-turbo-0125", openai_api_key=OPENAI_API_KEY) #chain 실행 llm.invoke("지구의 자전 주기는?") 저는 VSCode로 강의를 따라하고 있었습니다. Failed to batch ingest runs: LangSmithError('Failed to POST https://api.smith.langchain.com/runs/batch in LangSmith API. HTTPError(\'403 Client Error: Forbidden for url: https://api.smith.langchain.com/runs/batch\ ', \'{"detail":"Forbidden"}\')') 이 오류가 뜨면서 실행이 안되는 이유를 모르겠습니다. 현재 상황은 이렇습니다. OPENAI_API_KEY는 정확합니다. 혹시나 해서 openai 튜토리얼을 따라해보니, 유효한 api key라는것을 확인할 수 있었습니다. llm.invoke("지구의 자전 주기는?") 구문을 실행시키면 해당 오류가 뜹니다. 전체 패키지를 재설치해도 결과는 같았습니다.
안녕하세요, 좋은 강의 만들어주셔서 감사합니다. '조합 알고리즘' 부분 진도 나가고 있는데, 다음과 같이 시도했더니 오답이 떴습니다. 아예 처음부터 L개의 원소를 뽑아 조합을 만든 다음, 모음과 자음의 갯수가 미달되면 해당 조합은 지우는 방식으로 시도해봤는데, (for문이 세개나 나와서 좀 조잡한 풀이 같아 보이긴 하지만..ㅠㅠ) 이 풀이가 틀리게 되는 이유를 혼자 힘으론 찾기가 어려워서 도움을 구해봅니다...! from itertools import combinations L, C = input().split() chars = list(input().split()) mo = ['a', 'e', 'i', 'o', 'u'] candidates = list(combinations(chars, int(L))) for can in candidates: mo_num, ja_num = 0, 0 for i in can: if i in mo: mo_num += 1 else: ja_num += 1 if mo_num < 1 or ja_num < 2: candidates.remove(can) sol = [] for ans in candidates: ans_str = '' for i in sorted(ans): ans_str += i sol.append(ans_str) for i in sorted(sol): print(i)
안녕하세요. 좋은 강의 잘 듣고 있습니다. 감사합니다. 이번에 실무에 적용해보려고 이 강의를 수강하였는데요, 제가 하고 싶은 자동화는 한글파일로 된 신청서의 표에 적힌 정보를 가져와서 다른 한글파일의 표에 넣는 것입니다. 강의를 듣던 중 한글 파일의 표를 생성하고 쓰는 것은 알게 되었는데 한글 파일에 작성된 표에서 정보를 가져오는 방법은 알지 못해 질문드립니다. 감사합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요, 영한쌤 !! 현재 제가 듣고 있는 강의는, "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 섹션 1. 프로젝트 환경설정 - View 환경설정 입니다. intellij에서 기동은 되고 페이지도 잘 뜨고 ㅣ있지만, 현재 계속 서버가(tomcat?) 돌아가고 있는 모습이 보여서 질문드립니다. 이게 정상은 아닌거같아서요. 어떤 설정으로 변경해야할까요? 그리고 기동을 중지했을때, 이런 빨간색 에러 표시가 납니다. 강의듣는덴 문제가 없지만 어떤 오류인지 뭐가 잘못됬는지 알고 싶습니다. 감사합니다.
[질문]은 굵은 글씨로 표시해 두었습니다. application.properties에 강의에서 나온 대로 입력하였는데, 아래와 같은 에러가 발생하였습니다. j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] due to: Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided) 검색을 해보니, Hibernate가 H2 데이터베이스 Dialect을 자동으로 인식하지 못하기 때문이라 하여 아래와 같은 코드를 추가하여 문제를 해결하였습니다. spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect 최종적으로 스프링부트어플리케이션도 잘 작동하고, 테스트코드도 통과하였습니다. 본 강의에서는 5줄 만으로도 코드가 잘 작동하는데, 왜 저는 H2 데이터베이스를 명시적으로 설정하는 코드를 추가로 작성해야 하는지 궁금합니다. 최종 application.properties 코드 spring.datasource.url=jdbc:h2:tcp://localhost/~/test spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=none spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect 질문용 파일 : https://drive.google.com/file/d/1JpK0g8GjAL0quy9aOx-EMB8nF599Tk-U/view?usp=sharing ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)