inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

176만명의 커뮤니티!! 함께 토론해봐요.

트랜잭션 질문

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

public class OrderApiController { @GetMapping("/api/v1/orders") public List<Order> orderV1() { List<Order> all = orderRepository.findAllByString(new OrderSearch()); for (Order order : all) { order.getMember().getName(); order.getDelivery().getAddress(); List<OrderItem> orderItems = order.getOrderItems(); orderItems.forEach(o -> o.getItem().getName()); } return all; } } public class OrderRepository{ public List<Order> findAllByString(OrderSearch orderSearch) { String jpql = "select o from Order o join o.member m"; boolean isFirstCondition = true; //주문 상태 검색 if (orderSearch.getOrderStatus() != null) { if (isFirstCondition) { jpql += " where"; isFirstCondition = false; } else { jpql += " and"; } jpql += " o.status = :status"; } ... 트랜잭션을 따로 붙히지 않았는데 상관없는건가요? List<Order> all = orderRepository.findAllByString(new OrderSearch()); 이 때 연관관계매핑되어 있는 객체들은 지연로딩에 의해 프록시로 존재하고 for (Order order : all) { order.getMember().getName(); order.getDelivery().getAddress(); List<OrderItem> orderItems = order.getOrderItems(); orderItems.forEach(o -> o.getItem().getName()); } 이 때 강제호출 되어서 쿼리가 나가는 게 맞나요? orderRepository.findAllByString에서 repository에서 작업이 마쳐서 트랜잭션이 커밋되어서 영속성 컨텍스트에는 아무값이 없을 거 같은데 컨트롤러에서 리턴하기 전까지 하나의 트랜잭션 안에서 작동이 이뤄지는 건가요? 트랜잭션이 언제 시작하고 언제 종료되는 지 궁금합니다

  • java
  • spring
  • spring-boot
  • jpa
kongminoo 댓글 2 좋아요 0 조회수 150

url 차이 질문

해결됨

FastAPI 완벽 가이드

@app.get("/items") # 함수에 개별 인자값이 들어가 있는 경우 path parameter가 아닌 모든 인자는 query parameter # query parameter의 타입과 default값을 함수인자로 설정할 수 있음. async def read_item(skip: int = 0, limit: int = 2): return fake_items_db[skip : skip + limit] @app.get("/items_nd/") # 함수 인자값에 default 값이 주어지지 않으면 반드시 query parameter에 해당 인자가 주어져야 함. async def read_item_nd(skip: int, limit: int): return fake_items_db[skip : skip + limit] 안녕하세요 url 차이에 관해 질문드립니다. 위에 url은 "/items" 인데, 아래 url은 "/items_nd/" 으로 끝에 /가 붙어있는데요. 둘다 query params로 구성되어 있는데 위는 /로 안끝나고, 아래는 왜 /로 끝났는지 이유가 궁금합니다.

  • python
  • sql
  • sqlalchemy
  • FastAPI
코드몽키 댓글 1 좋아요 0 조회수 142

curl 되고 ping이 안되는 이유는 무엇일까요?

해결됨

스스로 구축하는 AWS 클라우드 네트워크 - 기본편

route table 구성까지 실습을 하였습니다. 그런데 회사에서 실습해야하는 상황이라 라우트 테이블 구성하고 security inbound를 0.0.0.0/0 이 아닌 회사ip/32 설정하니 ping 동작이 막혀서 동작을 안하더라구요. 그래서 curl을 해보니 이건 또 동작을 합니다. outbound도 설정을 안했는데요. 왜 그런지 알수 있을까요?

  • 네트워크
  • aws
SpeedGogo 댓글 2 좋아요 0 조회수 459

분류카드 실습

미해결

[개정판] 파이썬 머신러닝 완벽 가이드

안녕하세요 위와 같이 코드를 실행하면 아래와 같이 에러가 뜨네요 ㅠ 집에선 잘됬던거 같은데 회사에서 똑같이 하니 왜그런건지 ..!..ㅠ

  • python
  • 머신러닝
  • 통계
kyb1053 댓글 3 좋아요 0 조회수 197

delegate, emit 필요한 이유

미해결

[React 1부] 만들고 비교하며 학습하는 React

안녕하세요. delegate와 emit 함수의 필요성이 잘 와닿지 않는데, 왜 필요한걸까요?

  • react
  • mvc
박호정 댓글 2 좋아요 0 조회수 257

[인프런 빅쿼리 빠짝스터디 1주차] 퍼널 작성 흐름을 익히는게 어려웠다

해결됨

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

목차 과제별 작성 쿼리 쿼리 작성 후 느낀점 과제별 작성 쿼리 (1) ARRAY·STRUCT ## 연습문제 1번 -- select -- title, -- genre -- from advanced.array_exercises -- cross join unnest(genres) as genre ## 연습문제 2번 -- select -- title, -- actor.actor, -- actor.character, -- from advanced.array_exercises -- cross join unnest(actors) as actor ## 연습문제 3번 -- select -- title, -- actor.actor, -- actor.character, -- genre -- from advanced.array_exercises -- cross join unnest (actors) as actor -- cross join unnest (genres) as genre ## 연습문제 4번 -- select -- user_id, -- event_date, -- event_name, -- user_pseudo_id, -- event_param.key, -- event_param.value, -- event_param.value.int_value -- from advanced.app_logs -- cross join unnest(event_params) as event_param -- where -- event_date = '2022-08-01' PIVOT ## 연습문제 1번 -- select -- order_date, -- sum(if(user_id=1, amount, 0)) as user_1, -- sum(if(user_id=1, amount, 0)) as user_2, -- sum(if(user_id=1, amount, 0)) as user_3, -- from advanced.orders -- group by -- order_date -- order by -- order_date asc ## 연습문제 2번 -- select -- user_id, -- sum(if(order_date='2023-05-01', amount, 0)) as 2023-05-01 , -- sum(if(order_date='2023-05-02', amount, 0)) as 2023-05-02 , -- sum(if(order_date='2023-05-03', amount, 0)) as 2023-05-03 , -- sum(if(order_date='2023-05-04', amount, 0)) as 2023-05-04 , -- sum(if(order_date='2023-05-05', amount, 0)) as 2023-05-05 -- from advanced.orders -- group by -- user_id ## 연습문제 3번 -- select -- user_id, -- max(if(order_date = '2023-05-01', 1, 0)) as 2023-05-01 , -- max(if(order_date = '2023-05-02', 1, 0)) as 2023-05-02 , -- max(if(order_date = '2023-05-03', 1, 0)) as 2023-05-03 , -- max(if(order_date = '2023-05-04', 1, 0)) as 2023-05-04 , -- max(if(order_date = '2023-05-05', 1, 0)) as 2023-05-05 -- from advanced.orders -- group by -- user_id ## 앱 로그 데이터 배열 PIVOT -- with base as ( -- select -- user_id, -- event_date, -- event_name, -- user_pseudo_id, -- event_param.key as key, -- event_param.value.string_value as string_value, -- event_param.value.int_value as int_value -- from advanced.app_logs -- cross join unnest(event_params) as event_param -- where -- event_date = '2022-08-01' and -- event_name = 'click_cart' -- ) -- select -- user_id, -- event_date, -- event_name, -- user_pseudo_id, -- max(if(key = 'firebase_screen', string_value, null)) as firebase_screen, -- max(if(key = 'food_id', int_value, null)) as food_id, -- max(if(key = 'session_id', string_value, null)) as session_id, -- from base -- group by all 퍼널 ## step1 : 퍼널정의, 유저 집계 방식 정하기 ## step2 : 데이터 확인 -- select -- *, -- event_param.key, -- event_param.value.string_value, -- event_param.value.int_value, -- from advanced.app_logs -- cross join unnest(event_params) as event_param -- where -- event_date between '2022-08-01' and '2022-08-18' -- limit 100 ## step3 : pivot 해서 concat 하기 좋은 형태로 만들기 with base as ( select *, max(if(event_param.key = 'firebase_screen', event_param.value.string_value, null)) as firebase_screen, max(if(event_param.key = 'food_id', event_param.value.int_value, null)) as food_id, max(if(event_param.key = 'session_id', event_param.value.string_value, null)) as session_id from advanced.app_logs cross join unnest(event_params) as event_param where event_date between '2022-08-01' and '2022-08-18' group by all ) ## step4 : concat해서 퍼널 컬럼 정의하기 , base2 as ( select *, concat(event_name, '-', firebase_screen) as event_name_with_screen from base ) ## step5 : 퍼널별 유저수 쿼리 작성 I step_number, cnt 컬럼 생성 -- select -- event_name_with_screen, -- case -- when(event_name_with_screen = 'screen_view-welcome') then 1 -- when(event_name_with_screen = 'screen_view-home') then 2 -- when(event_name_with_screen = 'screen_view-food_category') then 3 -- when(event_name_with_screen = 'screen_view-restaurant') then 4 -- when(event_name_with_screen = 'screen_view-cart') then 5 -- when(event_name_with_screen = 'click_payment-cart') then 6 -- else null -- end as step_number, -- count(distinct user_pseudo_id) as cnt -- from base2 -- group by -- 1 -- having -- step_number is not null ## step6 : 일자별 퍼널 쿼리 작성 select event_date, event_name_with_screen, case when(event_name_with_screen = 'screen_view-welcome') then 1 when(event_name_with_screen = 'screen_view-home') then 2 when(event_name_with_screen = 'screen_view-food_category') then 3 when(event_name_with_screen = 'screen_view-restaurant') then 4 when(event_name_with_screen = 'screen_view-cart') then 5 when(event_name_with_screen = 'click_payment-cart') then 6 else null end as step_number, count(distinct user_pseudo_id) as cnt from base2 group by all having step_number is not null order by event_date 쿼리 작성 후 느낀점 (1) ARRAY·STRUCT I 쿼리를 풀고난 이후 느낀점 1. '~별'이라고 해서 무조건 GROUP BY는 아니다 ARRAY 또는 STRUCT 같은 구조체 타입 컬럼을 만나기 전에는 '~별'이라는 텍스트가 있을 때 GROUP BY를 떠올렸습니다. 그러나 구조체 타입 컬럼을 다루고난 이후, 생각이 달라졌습니다. 비구조체 컬럼을 구조체 컬럼과 함께 출력할 때는 '~별'을 GROUP BY로 출력할 수 없다는 걸 알았습니다. 2. CROSS JOIN을 2개 이상 사용할 때는 CROSS JOIN을 2개 이상 입력할 때는 쉼표를 사용하지 않는다는 걸 알았습니다. 다른 구간에서 요소를 2개 이상 입력할 때는 쉼표를 사용해서 요소를 분리 했었는데, CROSS JOIN은 아니였습니다. CROSS JOIN을 2개 이상 사용할 때 쉼표를 쓰면 다음과 같은 오류가 발생하는 걸 알았습니다 : --> Syntax error: Unexpected keyword CROSS at [24:1] (2) PIVOT I 쿼리를 풀고난 이후 느낀점 1. 날짜 데이터와 다르게 일반 숫자데이터는 따옴표를 쓰지 않는다 EX) if(user_id=1, amount, 0) --> O if(user_id='1', amount, 0) --> X + if(user_id='2024-10-22', amount, 0) --> O 2. 컬럼명에 대시(또는 한글)를 사용할 때는 따옴표가 아닌 백틱으로 컬럼명을 감싼다 대시를 컬럼명으로 할 때는 백틱을 사용. as 2023-05-01 --> O as '2023-05-01' --> X + as 빠짝스터디 --> O as '빠짝스터디' --> X 3. 일반 테이블을 피봇테이블로 만들 때 고려해 봐야 할 2가지 1. 행에 2개 이상 중복이 있는지 확인한다. 2. 2개 이상 중복이 있지만, 피봇테이블로 변경 했을 때 효율적인지 생각해 본다. 위 2개 조건을 모두 충족하는 컬럼을 피봇테이블 만들 때 기준 컬럼으로 삼음. EX) *'앱 로그 데이터 배열 PIVOT 하기' 테이블 참고 student 열 중복 있음 (A, A, A, B, B, B) 기준 열로 삼으면 → 각 학생의 모든 과목 점수를 한눈에 볼 수 있어서 효율적! subject 열 중복 있음 (수학, 영어, 과학이 2번씩) 기준 열로 삼으면 → 과목별로 학생들의 점수를 볼 수는 있지만, 한 학생의 전체 성적을 보기는 어려움 score 열 중복이 없음. 기준 열로 삼으면 → 같은 점수끼리 모이겠지만, 효율이 떨어짐. (3) 퍼널 I 쿼리를 풀고난 이후 느낀점 1. concat 할 때 따옴표 사용 주의 처음 concat 할 때 다음과 같이 입력했습니다. concat(event_name, '-', 'firebase_screen') 'firebase_screen'라고 작성했었는데, 이렇게 하니깐 firebase_screen 내에 있는 데이터랑 concat 된 게 아니라 'firebase_screen'라는 문자 자체랑 concat이 되어서 혼란스러웠습니다. concat 내에서는 따옴표를 쓰지 않고, 컬럼끼리 연결해야겠다는 걸 알게 됐습니다.

  • sql
  • bigquery
  • 인프런
  • 빠짝스터디
  • 빅쿼리
레스 댓글 1 좋아요 0 조회수 224

new HashMap 관련한 import 문제

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[질문 내용] 코드에서 private static Map<Long, Member> store = new HashMap<>(); 부분이 있는데요.. 중간에 코딩시에 HashMap 부분에 빨간줄이 그어져있어서 뭔가 문제지 했는데 나중에 코드를 보니까 import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Optional; 처음 작성시엔 위의 코드로 import 가 되어있었는데 동영상 후반에 보니까 아래 코드로 변경되어져 있었습니다. import java.util.*; 위 import 부분을 강의영상에서 변경된 부분을 못찾았는데 어떠한 이유로 그렇게 변경된건지 알고 싶습니다.

  • java
  • spring
  • mvc
  • spring-boot
우대희 댓글 2 좋아요 -1 조회수 280

antd Menu 질문

미해결

따라하며 배우는 노드, 리액트 시리즈 - 영화 사이트 만들기

안녕하세요 강사님 혹시 메뉴가 한개만 있는데도 불구하고 "..." 이라는 메뉴 아래에 "나의 favorite" 으로 생겼습니다. 굳이 "..." 라는 메뉴 아래에 "나의favorite"이 생기지 않고, "Home" 오른쪽에 "나의 favorite" 을 바로 생성하고 싶은데, 이런경우 어떻게 해결 하면 될까요? [NavBar] [NavBar] [NavBar.js] import React, { useState } from 'react'; import LeftMenu from './Sections/LeftMenu'; import RightMenu from './Sections/RightMenu'; import { Drawer, Button } from 'antd'; import Icon from '@ant-design/icons'; import './Sections/Navbar.css'; function NavBar() { const [visible, setVisible] = useState(false) const showDrawer = () => { setVisible(true) }; const onClose = () => { setVisible(false) }; return ( <nav className="menu" style={{ position: 'fixed', zIndex: 5, width: '100%' }}> <div className="menu__logo"> <a href="/">Logo</a> </div> <div className="menu__container"> <div className="menu_left"> <LeftMenu mode="horizontal" /> </div> <div className="menu_rigth"> <RightMenu mode="horizontal" /> </div> <Button className="menu__mobile-button" type="primary" onClick={showDrawer} > <Icon type="align-right" /> </Button> <Drawer title="Basic Drawer" placement="right" className="menu_drawer" closable={false} onClose={onClose} visible={visible} > <LeftMenu mode="inline" /> <RightMenu mode="inline" /> </Drawer> </div> </nav> ) } export default NavBar [LeftMenu.js] import React from 'react'; import { Menu } from 'antd'; function LeftMenu(props) { return ( <Menu mode={props.mode}> <Menu.Item key="mail"> <a href="/">Home</a> </Menu.Item> <Menu.Item key="favorite"> <a href="/favorite">나의 Favorite</a> </Menu.Item> </Menu> ) } export default LeftMenu

  • react
  • node.js
  • 웹앱
  • mongodb
  • express
iokl3319 댓글 1 좋아요 0 조회수 342

게임 개발용 컴퓨터 사양을 모르겠어요

미해결

유니티를 주로 사용할것같고 언리얼엔진 또한 사용할것 같은데 인터넷에서 견적 맞춘거 보면 너무 부담되는 가격이여가지고 언리얼 엔진과 유니티 엔진을 원할하게 구동시키기 위해서 컴퓨터를 어떻게 구매해야 할까요

  • 게임개발
  • 컴퓨터
  • 사양
leee8818 댓글 1 좋아요 0 조회수 1795

findAllByString() 실행 시 총 쿼리 7번 날아갑니다.

해결됨

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 이전 질문 내역에서 하이버네이트6 최적화 문제라는 답변을 봤는데.. 아직 패치가 안된건지 2024 년에도 총 7번 쿼리날아가네요. 디버깅 해보니 address = order.getDelivery().getAddress(); // LAZY 초기화 이 부분에서 select d1_0.delivery_id, d1_0.city, d1_0.street, d1_0.zipcode, d1_0.status from delivery d1_0 where d1_0.delivery_id=? 2024-10-22T14:07:35.134+09:00 DEBUG 6578 --- [nio-8080-exec-1] org.hibernate.SQL : select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 where o1_0.delivery_id=? 이렇게 두번 쿼리가 실행되네요.. 그래서 List<Order> all = orderRepository.findAllByString(new OrderSearch()); 여기서 쿼리 한번 name = order.getMember().getName(); // LAZY 초기화 여기서 쿼리 한번 address = order.getDelivery().getAddress(); // LAZY 초기화 여기서 쿼리 두번 주문 리스트가 2개 있으므로 1 + 2 * (1 + 2) = 7 번 실행됩니다. 궁금한 점은 select o1_0.order_id, o1_0.delivery_id, o1_0.member_id, o1_0.order_date, o1_0.status from orders o1_0 where o1_0.delivery_id=? 이 쿼리는 왜 추가적으로 실행되는지 모르겠습니다.

  • java
  • spring
  • spring-boot
  • jpa
ewgregerg c 댓글 2 좋아요 0 조회수 279

프로젝트의 구조가 궁금합니다

미해결

코드로 배우는 React 19 with 스프링부트 API서버

백엔드는 spring 에 내장 톰캣이 서버이고 프론트엔드의 서버는 node js인가요? 그렇다면 aws에다가 백엔드 프론트 엔드 따로 서버를 구축하는게 맞는 방법인가요??

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
김우철 댓글 2 좋아요 0 조회수 209

01-04. 부서지는 타일에서 첫번째타일

해결됨

[유니티6] 따라하면서 배우는 실전 게임 제작 2D Platformer

부서지는 타일에서 이상하게도 첫번째 타일을 정확히 맞추려해도 점프가 더 안 올라가면서 막히더라구요. 그래서 게임오브젝트를 찾아보니 부서지는 타일 좌측아래부분에 Level01 게임오브젝트의 BoxCollider가 있어요. 그래서 이것의 크기를 줄여야 했습니다.

  • C#
  • unity
idim7 댓글 3 좋아요 0 조회수 262

수업자료를 어떤 곳에 넣어야 하나요?

미해결

문과생도, 비전공자도, 누구나 배울 수 있는 파이썬(Python)!

압축파일에 있는 자료를 관련 폴더에 다 넣어봐도 주피터에 뜨질 않습니다 ㅠ

  • python
댓글 1 좋아요 0 조회수 312

react에서 modal & portal 사용시 에는 어떻게 작성해야될까요

해결됨

실무에 바로 적용하는 스토리북과 UI 테스트

개요 react-modal 라이브러리를 사용하고 있다가 Storybook에 등록하여 관리하고 싶어서 작성하는데 아래와 같이 컴포넌트를 작성했다가 스토리북 화면에서에러가 발생하였습니다. 강사님께서는 Modal의 경우 어떤식으로 해서 Storybook을 동작가능하게 하셨는지 궁금합니다. 현재는 Modal.setAppElement('body')로 처리하여 임시로 실행되게 하였으나, 더 좋은 다른 방법이 있을지 질문드립니다. import Modal from 'react-modal'; Modal.setAppElement('#root'); // 모달이 열린 상태에서도 접근성을 보장하기 위해 필요합니다. const BaseModal: React.FC<BaseModalProps> = ({ Missing Context/Providers: You can use decorators to supply specific contexts or providers, which are sometimes necessary for components to render correctly. For detailed instructions on using decorators, please visit the Decorators documentation.

  • react
  • typescript
  • tailwind-css
  • storybook
  • ui-testing
  • modal
  • portal
  • react-modal
  • root
배찬 댓글 3 좋아요 0 조회수 444

백준 22988 번 문제

해결됨

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

#include<iostream> #include <vector> #include <algorithm> using namespace std; int n, target; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> target; vector<int>vec(n); for (int i = 0; i < n; i++) { cin >> vec[i]; } int cnt = 0; sort(vec.begin(), vec.end()); int l = 0, r = n - 1; float liq = target / 2.f; int remain = 0; while (l < r) { if (target == vec[r]) { r--; cnt++; continue; } int sum =vec[l] + vec[r]; if (sum >= liq) { l++; r--; cnt++; } else { l++; remain++; } } if (l == r) { remain++; } cout << cnt+(remain/3); return 0; } 이렇게 코드 작성했는데 결과는 맞는데 왜 제출하면 틀렸다고 나올까요??

  • 코딩-테스트
  • 알고리즘
jwk 댓글 1 좋아요 1 조회수 236

3.5 Retrieval 효율 개선을 위한 데이터 전처리 - 동일한 결과가 안나옴

해결됨

RAG를 활용한 LLM Application 개발 (feat. LangChain)

안녕하세요, 강의 수강 중 아무리 실행해도 결과가 영상과 동일하게 나오지 않아서 질문드립니다. 실습에 사용중인 tax.docx 파일에서 제55조의 그림으로 되어 있는 테이블을 마크다운으로 변환한 tax_with_markdown.docx로 실습 진행하고 있습니다 . 강의에서 올려주신 마크다운 변환된 파일과 코드로 실행했는데, retriever.invoke(query) 결과에서 제55조가 나오지 않아서 result 값이 제대로 나오지 않습니다. 파인콘 인덱스를 삭제하고 새로 만들어도 결과는 동일하게 나옵니다. 원인이 무엇인지 알 수 있을까요? from langchain_community.document_loaders import Docx2txtLoader from langchain_text_splitters import RecursiveCharacterTextSplitter text_splitter = RecursiveCharacterTextSplitter( chunk_size = 1500, # 문서를 쪼갤 때, 하나의 chunk가 가질 수 있는 토큰 수 chunk_overlap = 200 # 문서를 쪼갤 떄, 중복을 허용하는 토큰 수 ) loader = Docx2txtLoader("tax_with_markdown.docx") document_list = loader.load_and_split(text_splitter=text_splitter) document_list[52] # 마크다운 부분 잘 나오는 거 확인 from dotenv import load_dotenv from langchain_openai import OpenAIEmbeddings load_dotenv() # API Key 필요 (환경 변수) embedding = OpenAIEmbeddings(model='text-embedding-3-large') import os import time from pinecone import Pinecone from langchain_pinecone import PineconeVectorStore index_name = 'tax-index-markdown' pinecone_api_key = os.environ.get("PINECONE_API_KEY") pc = Pinecone(api_key=pinecone_api_key) database = PineconeVectorStore.from_documents(document_list, index_name=index_name, embedding=embedding) query = '연봉 5천만원인 직장인의 소득세는 얼마인가요?' from langchain_openai import ChatOpenAI llm = ChatOpenAI(model='gpt-4o') from langchain import hub prompt = hub.pull("rlm/rag-prompt") from langchain.chains import RetrievalQA retriever = database.as_retriever() qa_chain = RetrievalQA.from_chain_type( llm, retriever = retriever, chain_type_kwargs = {"prompt":prompt} ) # llm 모델과 벡터데이터베이스와 프롬프트 템플릿 준다. retriever.invoke(query)

  • vector-database
  • llm
  • langchain
  • rag
  • openai-api
장은조 댓글 2 좋아요 0 조회수 222

코드 정정방법 문의(문서 끼워 넣기 관련)

해결됨

직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피

지난 번에 답변주신 코드에서 일부 수정하여 아래와 같이 코드를 실행해 보면 제대로 작동되지 않습니다. ChatGPT에 물어봐도 정확한 문제원인과 해결책을 알려주지 않아서 질문 올립니다. 제가 원하는 기능은, 바탕화면의 combine 폴더 안에 n개의 hwp파일을 위치 시킨 상태에서, 코드를 실행하면 hwp 문서들을 순서대로 끼워넣기 하여 "취합본.hwp"으로 저장하는 기능입니다. 지난 번에 일코님이 알려주신 코드는.. "개구리.hwp, 너구리.hwp, 다람쥐.hwp, 라마.hwp, ... "를 먼저 생성하고 나서 "취합본.hwp"을 만들어 내는 방법이었으므로, "# 샘플문서 생성"에 해당하는 코드를 제거하고 제가 원하는 기능으로 작동하기를 기대했습니다. 위와 같이 바탕화면의 combine 폴더 내에 1.hwp, 2.hwp, 3.hwp, 4.hwp, 5.hwp 문서를 넣어 두고 해당 폴더가 활성화된 상태에서 아래의 코드를 실행시켰습니다. from pyhwpx import Hwp # 임포트 hwp = Hwp() # 한/글 실행 import os # 끼워넣기 hwp.open(os.listdir()[0]) # 첫 번째(0) 파일 열기 for i in os.listdir()[1:]: # 첫 번째(0) 파일은 제외하고 두 번째(1)파일부터 아래 들여쓰기한 코드 반복 hwp.MoveDocEnd() # 한/글의 문서 끝으로 이동해서 hwp.BreakPage() # <----------------------- 페이지나누기(Ctrl-Enter) hwp.insert_file(i) # 문서끼워넣기(기본값은 섹션, 글자, 문단, 스타일 모두 유지) hwp.save_as("취합본.hwp") # 반복이 끝났으면 "취합본.hwp"로 다른이름으로저장 hwp.Quit() # 한/글 프로그램 종료 그러니까 원하는 대로 작동되지 않고 아래와 같이 나타납니다. [질문] 위의 코드는 왜 제가 원하는대로 작동이 되지 않는지? 또 그 해결방법은 무엇인지? [추가질문] 아래 코드 4줄은 한/글 자동화 코딩에서 거의 필수적으로 항상 쓰는 것 처럼 이해했었는데요. 위의 코드를 짜 주실 때 아래 4줄의 코드는 전혀 사용하지 않으셨었는데, 그 이유를 알 수 있을까요? import win32com.client as win32 hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") hwp.XHwpWindows.Item(0).Visible = True hwp.RegisterModule("FilePathCheckDLL","FilePathCheckerModule") 궁금합니다. 답변 부탁드립니다. 감사합니다.

  • python
  • 한컴오피스
  • 레벨업
learner 댓글 1 좋아요 1 조회수 198

조회되는 빈이 2개 이상이더라도 문제가 없는 이유

미해결

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] AllBeanTest에서 DiscountService에 의존 관계를 주입할 때, Map과 List를 사용했기 때문에, RateDiscountPolicy, FixDiscountPolicy 두 가지 빈이 등록되어 있어도 문제가 없는 건가요??

  • spring
  • 객체지향
eoyeong 댓글 2 좋아요 0 조회수 326

01-03 부서지지 않고 튀는 타일 충돌처리 부분 코드 바뀌어야 될 것 같습니다.

해결됨

[유니티6] 따라하면서 배우는 실전 게임 제작 2D Platformer

설마 소스코드가 잘못 되었을 거라고는 상상을 못하고,,, 아무리 이것저것 설정을 바꾸고 새로 시도해봐도, 강의처럼 되지 않아서 하루종일 고생했습니다.... bounce되는 타일과 충돌했을 경우, 타일이 바운스되어야 되는데 그것이 안되요. 그래서 처음에는 내가 잘못 따라한 것인가 싶어서 강의를 몇번 돌려보고 확인하고, 코드도 확인하고, 배포한 소스코드랑도 비교해 보아도 도저히 답이 안나왔습니다. 그런데, 강사님은 해당코드로 작동이 잘 되니... 이상합니다. 우선, 플레이어가 타일과 부딪치면 타일충돌체에 맞아서 아래로 튕겨나옵니다. 그래서 ResetVelocityY를 해 줄 필요가 없습니다. 위로 솟아서 날라가지 못해요. 저절로 충돌되어 튕겨나오면서 아래로 내려옵니다.(혹시 mass를 늘려서 힘이 강하게 되면 모르겠습니다.) 진짜 문제가 된 부분은 UpdateAboveCollision() 메소드 부분입니다. if( movement.Velocity.y >=0 && movement.HitAboveObject !=null) 이렇게 조건을 걸어놓았는데, 플레이어가 타일과 충돌하면, 충돌하는 순간 속도가 0 가 되고 곧바로 아래로 떨어지면서 속도가 마이너스가 됩니다. 그런데, 위 조건에서는 속도가 0 보다 클 경우로 하니, 이 조건을 만족하지 못해서 그 아래의 코드가 실행되지 못합니다. 제가 충돌할 때의 플레이어리디드바디속도를 출력하니 모두 마이너스였습니다. (다른 스크립트에서 속도를 읽을 때는 충돌시점에서 0.0001라도 경과한 시점) 그래서 위 조건을 충족하지 못하니, 충돌해도 타일이 위로 바운스 되지 못했었습니다. 그래서 void UpdateAboveCollision (){ if ( movement . HitAboveObject != null ){ 이 조건으로 하면 됩니다. 여기서 ResetVelocityY() 도 호출할 필요 없습니다.

  • C#
  • unity
idim7 댓글 2 좋아요 0 조회수 206

인기 태그

인프런 TOP Writers

주간 인기글