안녕하세요 선생님. material까지 강의를 들으면서 두 가지 궁금한 점이 생겼습니다. 로컬 서버에서 ctrl+s 하면 자동으로 핫로딩되어 코드 변경사항이 화면에 반영되는 것으로 알고 있습니다. (리액트의 경우는 root부터 리렌더링) 그런데 핫로딩을 했을 때 바로 반영되는 코드가 있고, 직접 브라우저에서 새로고침해줘야 반영되는 코드가 있었습니다. <핫로딩 시 안변함 (only 새로고침으로만 변경사항 반영됨)> material wireframe 적용 camera fov, far 속성 그 외 등등 <핫로딩 시 변함> Geometry 종류 변경 transform 속성 변경 (position, scale, rotation) mesh color 변경 materal 종류 변경 그 외 등등 위와 같은 차이가 발생하는 이유를 잘 모르겠습니다. 내부 동작면에서 뭔가 다른게 있는 걸까요? (three.js 코드를 까보면 좀 명확해지려나요...) Mesh의 정의를 어떻게 내려야할지 잘 모르겠습니다. 아래 두 가지 중 어느 쪽이 더 맞는 설명일까요? Geometry와 material을 감싼 껍데기 Geometry와 material로 이루어진 하나의 물체 또, 종종 3D 모델링에서 정육면체, 삼각형 등을 오브젝트라고 부르는 걸 들은 적 있는 것 같은데, 해당 오브젝트라는 명칭이 맞는 명칭인가요? 그렇다면, Mesh = 오브젝트 라고 부를 수 있을까요? 감사합니다.
어디를 수정해야 할까요? 지금 계속 다시 해보고 있는데 해결이 되지 않습니다ㅠ 앞서 이렇게 했었는데 해결되지 않아 다시 해보고있습니다..! tailwind.config.js 의 content에 이렇게 입력하는게 맞나요?? index.css에 이렇게 오류가 떠서요 ㅠㅠ -> 우측하단 언어모드를 tailwindCSS로 바꾸면 밑줄은 사라지는데 npm start 실행시 이렇게 뜹니다..!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] // 인증 번호 확인 @Transactional public void confirmAuthenticationInfo(AuthenticationRequest.Confirm request){ MemberCertificationHistory history = findById... // 엔티티 조회 ... validateExpiration(history); ... } // 만료 일시 검증 @Transactional private void validateExpiration(MemberCertificationHistory history){ if(history.isExpired()){ processExpiration(history); // 만료 처리 . 트랜잭션 분리 throw new ServerException("만료됨"...); } } // 인증 정보 만료 처리 @Transactional(propagation = Propagation.REQUIRES_NEW) private void processExpiration(MemberCertificationHistory history){ history.getMemberCertificationInfo().processExpiration(); memberCertHisRepository.save(history); // 엔티티 저장 } 안녕하세요 위 코드에서 궁금한점이 있는데 내부호출에 관한 내용인지 질문드립니다. 간단하게 confirmAuthentication() , validateExpiration() , processExpiration() 3가지 메서드가 있는상황이구, 차례로 호출하며 validateExpiration()에서 throw를 던지는 상황입니다. 문제는 validateExpiration()를 내부에서 트랜잭션이 분리 처리(REQUIRES_NEW)되어 있는 processExpiration()를 타게되고, processExpiration()는 분리된 트랜잭션이니 .save()를 통해 저장이되고, 다시 validateExpiration()으로 돌아와 throw를 처리하게 되어 processExpiration()에서 저장된것은 롤백되지 않을것으로 예상하였습니다. 그런데 로그를보니 insert쿼리도 나가지 않고, 따로 롤백에 관한 내용도 찍히지 않았습니다. 따라서 내부호출이 된건가 생각을해보니 제가 아는 내부호출이라는 문제는 동일한 클래스에서 트랜잭션이 적용되지 않은 메서드에서 트랜잭션이 적용된 메서드 호출시 내부 호출이 발생하는걸로 알고있는데 위 예제에선 이미 최상위 메서드에서 트랜잭션이 적용되어 있는상태인데 따로 생성된 트랜잭션이 실행되지 않아서 혹시 이건 내부호출 문제가 맞는것인지, 아니면 다른 제가 간과한것이 있는지 궁금하여 질문드립니다 .
버젼이 달라서인지.. CNA 했을 때 tailwind.config.js 파일이 없었습니다. 강의에서는 원래부터 존재하던데.. 그래서 어떻게어떻게 추가를 했는데. Error: It looks like you're trying to use tailwindcss directly as a PostCSS plugin. The PostCSS plugin has moved to a separate package, so to continue using Tailwind CSS with PostCSS you'll need to install @tailwindcss/postcss and update your PostCSS configuration. 라는 에러가 끝나지를 않네요 ㅠ GPT한테 열심히 물어봤는데 도저히 해결이 안돼서 문의드립니다. 밑은 제가 설정해둔 코드입니다. tailwind.config.js /** @type {import('tailwindcss').Config} */ module.exports = { content: [ "./src/**/*.{js,ts,jsx,tsx,html,css}", // 필요한 파일들 포함 "./app/**/*.{js,ts,jsx,tsx}", // Next.js의 `app` 폴더 추가 "./components/**/*.{js,ts,jsx,tsx}", // 컴포넌트 폴더 추가 ], theme: { extend: { colors: { 철수가좋아하는색깔: "#3498db", // 나만의 부트스트랩 만들기 영희가좋아하는색깔: "green", }, }, }, plugins: [], }; postcss.config.js module.exports = { plugins: { tailwindcss: {}, autoprefixer: {}, }, }; globals.css /* @import "tailwindcss"; */ @tailwind base; @tailwind components; @tailwind utilities; 로 해도 안되고, @import "tailwindcss"; 도 안됩니다...
from langchain.retrievers.document_compressors import DocumentCompressorPipeline from langchain_community.document_transformers import EmbeddingsRedundantFilter # 중복 문서 제거 redundant_filter = EmbeddingsRedundantFilter(embeddings=embeddings_model) # 쿼리와 관련성이 높은 문서만 필터링 relevant_filter = EmbeddingsFilter(embeddings=embeddings_model, similarity_threshold=0.5) # Re-ranking re_ranker = LLMListwiseRerank.from_llm(llm, top_n=2) pipeline_compressor = DocumentCompressorPipeline( transformers=[redundant_filter, relevant_filter, re_ranker] ) pipeline_compression_retriever = ContextualCompressionRetriever( base_compressor=pipeline_compressor, base_retriever=chroma_db.as_retriever() ) question = "테슬라 회장은 누구인가요?" compressed_docs = pipeline_compression_retriever.invoke(question) print(f"쿼리: {question}") print("검색 결과:") for doc in compressed_docs: print(f"- {doc.page_content} [출처: {doc.metadata['source']}]") print("-"*100) print() `(4) DocumentCompressorPipeline` - 여러 압축기를 순차적으로 결합하는 방식 - BaseDocumentTransformers를 추가하여, 문서를 더 작은 조각으로 나누거나 중복 문서를 제거하는 등의 작업도 가능 여기에서 result = chain.invoke() 로 받아서 result의 데이터를 보면, context = result['context'][i] query_similarity_score = context.state['query_similarity_score'] 이렇게 similarity_score 처럼 rerank score같은거 보고싶은데, # 크로스 인코더를 사용하여 유사성 점수를 계산합니다. sentence_pairs = [[query, prediction]] similarity_scores = cross_encoder_model.predict(sentence_pairs) 이런식으로 계산을 해야하나요? 추출하고 싶은데 방법을 잘 모르겠습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 갑자기 선수강의에 없었던 정적페이지크롤링 파일이 나오는데 이건 어떻게 해야 하나요. 어디서 참고해야 하나요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요, 리액트 학습 중에 궁금한 게 있어서 질문드려요. 기본 path 가 아닌 라우트로 바로 접속을 할때, html을 받으면 라우팅이 이뤄지구 useeffect로 api 요청이 가면서 페이지 렌더링이 이뤄지는건가요?
getPostRecommend() 함수 내부에서 tags : ['post', 'recommends'] 로 설정이 되어있는데, queryClient.prefetch 함수나, useQuery 함수의 queryKey와 항상 동일하게 일치시켜야 하나요? 불러온 데이터를 캐싱할 경우, react-query에서만 관리를 키를 관리해도 되지 않을까요?
혹시 현재 25년 3월기준 이 강의를 들으면 리액트 버전 차이로 인해 렌더링 방식이라던지 다른 점이 있어서 수강할때 불편할까요? - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
케이테스트 사이트는 썸네일 부터 결과 페이지 까지 모두 통이미지로 되어있습니다. 결국 테스트성격에 맞는 이미지들을 만들어야하는데 테스트 하나당 결과 페이지까지 합쳐서 15개 정도를 만들어야 할듯 합니다. 이 부분은 어디서 뭘 참고하거나 공부해야 감을 잡을수 있을까요? 아니면 이미지에 관련된 수업이 예정되어 있는지요~ 소중한 강의 감사합니다~
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 def solution(l,k): result = [] curr = [] def backtracking(start, curr): if len(curr) == k: result.append(curr[:]) return for i in range(start, len(l)): curr.append(i+1) backtracking(i + 1, curr) curr.pop() backtracking(0, curr) return result 위의 코드에서 if len(curr) == k: 안에 result.append(curr[:]) 대신 result.append(curr)을 넣으면 result = [[], [], [], [], [], []]와 같이 값이 제대로 추가가 안 되던데 무슨 차이가 있는 건가요? main 함수에서 test1 = [] test2 = [1,2,3] test1.append(test2) print(test1) test1 = [] test1.append(test2[:]) print(test1) 이와 같이 테스트를 해보면 두 프린트 결과 모두 [[1,2,3]]으로 동일하게 나오는데 위의 경우는 달라서 질문 드립니다.