묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결토비의 스프링 6 - 이해와 원리
Payment 엔티티에 exRateProvider 주입
강의 중간 PaymentService 에 Payment 엔티티에 exRateProvider 도 주입해서 사용할 수 있다 라고 들었고, 이거는 한번 고민해보셨으면 좋겠다라고 강의 내용이 있어 질문드립니다.예전에 제가 토비님께서 제작하신 토비의 스프링 공부했던 Rich Domain Model 에 관련된 사항 같습니다.해당 내용으로 적용 시켜볼때는 Spring AOP 가 아닌 AspectJ를 이용해서 엔티티 생성자 전후로 PointCut 으로 마치 Target(Payment 엔티티) 생성자에 exRateProvider 를 주입해주는걸로 방법이 생각나는데 정확하게 이 방법이 일단 맞을까요?"몇가지 방법이 있다고" 저는 들었던거 같은데 이외의 적용 할수있는 스프링 원리가 있을까요? 추가로 현재 exRateProvider 경우 환율 정보를 외부 API, 고정 환율 가져오는 구현체로 구성되어있는데 만약 DB Access 를 통해서 가져오는 구현체(exRateRepository)로 런타임에 의존 관계를 맺는 경우 에도 엔티티 생성자로 넣는 방법도 위처럼 생각한 방향대로 적용하면 되는걸까요?즉 스프링에서 관리하는 Bean 을 POJO 로 주입 하는 방법에 대해서 궁금합니다!
-
미해결토비의 스프링 6 - 이해와 원리
@Transactional private 사용유무
proxy 패턴으로 애플리케이션 서비스에서 반복적인 트랜잭션 처리 적용까지는 이해했습니다.여기서 만약 애플리케이션 서비스 내부에서 private 로 두개의 트랜잭션은 어떻게 적용해야할까요?아래는 제가 생각한 흐름입니다.가령 현재 강의에서는 OrderService 내부에서 주문 정보만 생성하고 있는데 주문 후 결제까지 이뤄진다면?public class OrderServiceImpl implements OrderService { private final OrderRepository orderRepository; private final PaymentRepository paymentRepository; public OrderServiceImpl( OrderRepository orderRepository, PaymentRepository paymentRepository ) { this.orderRepository = orderRepository; this.paymentRepository = paymentRepository; } @Override public Order createOrder(Order order) { // 주문 도메인 생성 // 결제 도메인 생성 } @Transactional private void save(Order order, Payment payment) { // 주문 및 결제 정보 저장 } }제가 찾아보기로는 @Transactional 경우 Proxy 패턴으로 스프링에서 begin, rollback, commit 을 자동으로 수행해주는데 이를 private 으로 선언 한 경우 스프링에 private 메소드에 접근을 못해서 정상 동작을 안하는걸로 알고 있습니다.(강의를 듣고서) 제가 추측하기로는 TransactionTemplate 으로 프록시 패턴으로 적용한경우 private 메소드에는 접근을 못하니깐 애노테이션 또한 정상동작을 안하는것으로 생각됩니다.(제 추측이 틀렸다면 자세한 설명 부탁드립니다.) 그러면 애플리케이션 서비스는 기술 의존적으로 바뀌게 될텐데 private 함수에서 애노테이션이 아닌 TransactionTemplate 을 써야되나? 강의 듣고서는 이정도밖에 생각이 안드는데 어떤식으로 접근하고 private 에서도 트랜잭션을 적용하기위한 원리는 어떤게있는지 답변 주시면 감사하겠습니다!
-
해결됨GraphQL 완전정복 (키오스크를 만들며 배우는 풀스택 과정) - [2024 부분 리뉴얼]
모듈 버전이 안맞아서 발생하는 문제 같습니다;;;
DISABLE_WEBSOCKETS=true meteor.bat run 을 실행했는데, 다음과 같이 발생했습니다. package.json, .meteor/packages 는 다음과 같습니다.
-
해결됨아바타 커뮤니티앱 만들기 (React Native Expo)
저장 버튼이 생기지 않습니다.
저장 버튼을 동일하게 작성했는데 화면상에 그려지지 않더라구요. 공식문서도 확인해보고 찾아보는데, isFocused나 useLayoutEffect등을 통해 실험해봐도 저장 버튼이 보이지 않습니다.무엇을 잘못 작성했나 싶어 자료를 다운로드 받아 post 의 _layout.tsx 와 write.tsx도 복사, 붙여넣기 하여 확인했는데도 저장버튼이 보이지 않았습니다. 그런데, post의 _layout에서 headerRight을 작성하니 보입니다. setOptions가 동작하지 않는 것 같이 보이는데, 원인을 잘 모르겠습니다.어떻게 해결하면 될까요? import CustomButton from "@/components/CustomButton"; import DescriptionInput from "@/components/DescriptionInput"; import TitleInput from "@/components/TitleInput"; import useCreatePost from "@/hooks/queries/useCreatePost"; import { ImageUri } from "@/types"; import { useNavigation } from "expo-router"; import { useEffect } from "react"; import { FormProvider, useForm } from "react-hook-form"; import { StyleSheet } from "react-native"; import { KeyboardAwareScrollView } from "react-native-keyboard-aware-scroll-view"; type FormValues = { title: string; description: string; imageUris: ImageUri[]; }; export default function PostWriteScreen() { const navigation = useNavigation(); const createPost = useCreatePost(); const postForm = useForm<FormValues>({ defaultValues: { title: "", description: "", imageUris: [], }, }); const onSubmit = (formValues: FormValues) => { createPost.mutate(formValues); }; useEffect(() => { navigation.setOptions({ headerRight: () => ( <CustomButton label="저장" size="medium" variant="standard" onPress={postForm.handleSubmit(onSubmit)} /> ), }); }, []); return ( <FormProvider {...postForm}> <KeyboardAwareScrollView contentContainerStyle={styles.container}> <TitleInput /> <DescriptionInput /> </KeyboardAwareScrollView> </FormProvider> ); } const styles = StyleSheet.create({ container: { margin: 16, gap: 16, }, }); import { colors } from "@/constants"; import { Feather } from "@expo/vector-icons"; import { Link, Stack } from "expo-router"; export default function PostLayout() { return ( <Stack screenOptions={{ headerTintColor: colors.BLACK, contentStyle: { backgroundColor: colors.WHITE, }, }} > <Stack.Screen name="write" options={{ title: "글쓰기", headerShown: true, headerLeft: () => ( <Link href={"/"} replace> <Feather name="arrow-left" size={28} color={"black"} /> </Link> ), }} /> </Stack> ); } +추가로 확인한 부분.app의 _layout.tsx에서 <Stack.Screen name="post" options={{ headerShown: false }} />이 친구를 주석하면 헤더가 두 개 나오게 되는데, 숨겨놨던 루트에 저장 버튼이 떠 있더라구요.이걸 어떻게 수정하면 되는건지.. 어렵네요
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
게시글 테스트 데이터 삽입 에서 SQL 최대 2만건 삽입 되는문제
게시글 데이터 삽입 부분에서요, 영상 강의에서는 데이터 1200만건 삽입 하는데 대략 13분 정도 걸리는걸 확인 햇는데, 저는 2초만에 끝나더니 삽입된 갯수 확인해보니까 2만건만 추가 되고 더 추가 안된거같은데 어떤 문제가 있을가요??아래는 코드랑 영상에서 설명한 sql 설정값 첨부 했습니다. @SpringBootTest public class DataInitializer { @PersistenceContext EntityManager entityManager; @Autowired TransactionTemplate transactionTemplate; Snowflake snowflake = new Snowflake(); CountDownLatch latch = new CountDownLatch(EXECUTE_COUNT); static final int BULK_INSERT_SIZE = 2000; static final int EXECUTE_COUNT = 6000; @Test void initialize() throws InterruptedException { ExecutorService executorService = Executors.newFixedThreadPool(10); for(int i = 0; i < EXECUTE_COUNT; i++) { executorService.submit(() -> { insert(); latch.countDown(); System.out.println("latch.getCount() = " + latch.getCount()); }); } latch.await(); executorService.shutdown(); } void insert() { transactionTemplate.executeWithoutResult(status -> { for(int i = 0; i < BULK_INSERT_SIZE; i++) { Article article = Article.create( snowflake.nextId(), "title" + i, "content" + i, 1L, 1L ); entityManager.persist(article); } }); } }
-
미해결
BTS 앱 만들기 이미지 파일을 찾을 수 없습니다.
본분 어디에 링크되어 있는지 찾지 못했습니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
기출6회 제2유형
아래 문제해설을 보니 pred = rf.predict(X_val) 로 반영 pred = rf.predict(test) 로 반영해도 문제없나요?# 랜덤포레스트 from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(random_state=0) rf.fit(X_tr, y_tr) pred = rf.predict(X_val) f1_score(y_val, pred, average='macro')
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
4회기출, 제2유형
안녕하세요. 마지막에 저희 행/열 확인하잖아요. 거기에서 2154 , 1이 나오는데답변 행 : 2154test 행 : 2154동일하다는 걸 검증하는거죠? <class 'pandas.core.frame.DataFrame'> RangeIndex: 2154 entries, 0 to 2153 Data columns (total 10 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 ID 2154 non-null int64 1 Gender 2154 non-null object 2 Ever_Married 2154 non-null object 3 Age 2154 non-null int64 4 Graduated 2154 non-null object 5 Profession 2154 non-null object 6 Work_Experience 2154 non-null float64 7 Spending_Score 2154 non-null object 8 Family_Size 2154 non-null float64 9 Var_1 2154 non-null object dtypes: float64(2), int64(2), object(6) memory usage: 168.4+ KB ID pred 0 458989 2 1 458994 3 2 459000 3 3 459003 3 4 459005 1 ... ... ... 2149 467950 4 2150 467954 4 2151 467958 2 2152 467961 2 2153 467968 4 [2154 rows x 2 columns]
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
제2회 기출, 제2유형
안녕하세요.제2회 기출, 제2유형 아래와같이 풀어봤는데 확인 부탁드립니다.랜포활용검증안함 검증은 어차피 시험에 반영안되고,랜포밖에 할 줄 몰라서 이것만 암기했어요. 도저히 다른거 풀 자신이 없어서 시험 제2유형의 모든문제는 아래 패턴으로 진행하려합니다. 혹시 이렇게 진행해도되는지 문의드립니다. # 데이터 불러오기 import pandas as pd test = pd.read_csv("X_test.csv") train = pd.read_csv("X_train.csv") y_train = pd.read_csv("y_train.csv") X_train.shape, y_train.shape, X_test.shape # train.info() # test.info() # y_train.info() target = y_train.pop('Reached.on.Time_Y.N') train = pd.get_dummies(train) test = pd.get_dummies(test) train, test = train.align(test, join='left', axis = 1) from sklearn.model_selection import train_test_split x_tr, x_val, y_tr, y_val = train_test_split(train, target, test_size=0.2, random_state=0) from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(random_state = 0) rf.fit(x_tr, y_tr) pred = rf.predict_proba(test) test_ID = test.pop('ID') submit = pd.DataFrame({'ID' : test_ID, 'Reached.on.Time_Y.N' : pred[:,1]}) submit.to_csv('result.csv', index=False)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
2회기출, 제2유형
기출2회, 제2유형의 해설 관련저는 아래 랜포사용해서 진행했는데,아래와 같이 predic_proba 사용했으므로1차원 배열로 바꿔줘야하나요? DataFrame 'pred' : pred[:,1] 해줘야 1차원으로 변경되는지 문의드립니다. from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(random_state = 0) rf.fit(x_tr, y_tr) pred = rf.predict_proba(test) test_ID = test.pop('ID') submit = pd.DataFrame({'ID' : test_ID, 'Reached.on.Time_Y.N' : pred[:,1]}) submit.to_csv('result.csv', index=False) # 랜덤포레스트 model = RandomForestClassifier(random_state=2022) model.fit(X_tr, y_tr) pred = model.predict_proba(X_val) print(roc_auc_score(y_val, pred[:,1]))
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-D 질문입니다!
http://boj.kr/88ce5a8413f544e49f40f03b76cc8be7큰돌님과 거의 유사한 방식으로 푼거같은데 왜 정답이 아닌지 잘 모르겠습니다혹시 반례가 존재하나요??
-
해결됨C# 프로그래밍 기초부터 실전 활용까지
Delegate 내용은 어디서 다루나요?
Delegate에 대해 듣고 싶은데 강의명에 delegate이 없어 어느 파트에서 다루는지 궁금합니다.
-
미해결
인스타에 검색해도 안 떠요
인스타에 관심있는 친구 사진이 올라왔길래 봤거든요?그 다음날도 뭐 올라왔나 보려고 그친구 이름을 검색해봤는데 계속 안 떠요
-
해결됨김영한의 실전 자바 - 중급 2편
O(1)의 값에 대한 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 MyheshSetV0에 클래스에서(밑의 코드는 중략) 이 클래스의 인스턴스 변수인 int[] elementData 배열은 기본형이기에 모두 0으로 초기화 되어지는데이러한 메인 클래스에서 첫 set.addO(1)이 되는 부분이 이해가 잘 안되네요 ㅜㅜ결국 기본형 배열에 0으로 초기화가 되어있으니 끝까지 비교가 되어 처음 add 역시 O(n)이 될 것 같아서 Integer 제너릭 타입은 널이 들어가서 for-each문 배열을 안 돌지만 int형은 0으로 n번째만큼 돌지 않을까? 라는 생각을 하고 있습니다 혹시 가르쳐 주실 수 있을까요(요약문) int[] elementData는 기본형으로 0으로 전부 초기화 contains의 0값을 data에 다 넣어서 == 비교처리가 됨으로 O(n)처리가 되지 않을지 질문( 추후 Integer배열(null 초기화)로 가정하면 될지)
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
6강 연습문제 13137 질문있습니다.
Exchange Problem문제 질문있습니다. 이 문제를 분석하다가 어려워서 질문드립니다. 제가 분석한 결과는 dp를 통해 모든 경우의 수를 구한 것과 그리디를 통해 구한 경우의수를 비교하는 문제 같았습니다. 근데 예시를 보고 어떻게 문제를 접근해야하는지 모르겠습니다.8 1 5 10 50 100 500 1000 10000위의 예시처럼 밑의 8개의 단위로 된 동전을 통해서 모든 단위(1원~9999원)의 동전에 대해 그리디가 맞다면 yes이고 아니면 no를 택하는것인가요? 너무 어렵습니다... 혹시 파이썬 답안을 알려주실 수 있으신가요? 아니면 추가적인 강의에 대한 생각이 있으신지도 궁금합니다.
-
해결됨웹소켓/STOMP 채팅서비스(spring, vue, redis)
섹션6. '채팅메시지 저장' 강의에서 질문 있습니다
안녕하세요. 선생님섹션6. '채팅메시지 저장' 강의에서 질문 있습니다.7:50 부터 사용자별로 읽음 여부 저장을 구현하실때chatParticipantRepository에서 chatRoom을 통해 participants list를 가져오도록 구현하셨는데 조금 다르게 하고 싶어서 질문 드립니다.저희 엔티티 구성할때 ChatRoom entity에 <List>chatParticipants 필드를 만들었으니까 여기서 해당 채팅 룸의 participants를 가져와도 상관이 없을까요 ?
-
미해결토비의 스프링 6 - 이해와 원리
JdbcClient 생성 질문
JdbcOrderRepository 에서 JdbcClient 경우 Bean 으로 주입 받지않고, 생성자에서 직접 사용하셨는데 Bean 주입받는거와 차이가 있을까요? JdbcClient 를 구현하고 있는 DefaultJdbcClient 경우 상태를 가지지않고 datasource 또는 jdbcTemplate 을 이용해서 생성하는 로직밖에 없는데 강의해서 직접 생성하신 부분이 어떤 차이가 있는지 궁금합니다.아래는 제가 추측 및 생각한 흐름입니다.EntityManager 경우에는 reuqest 및 transaction context 마다 생성을 해줘야되는데 이와 유사하게 처리를 하신건가?그렇다고 하기에 DataConfig 에서 JdbcOrderRepository 는 싱글톤으로 한번만 만들어지는데 이러면 JdbcClient 도 싱글톤 아닌가?
-
해결됨[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)
8주차 ExtralCell 추가됐을 때 서로 공격 못하는 상황 공유드립니다.
루키스님 따라 공격범위 수정전에 Creature들의 범위가 현재 cell에서 어떻게 됐을지 근본적으로 궁금했었습니다. 기지모로 표현해보니까 이해가 잘 돼서 공유드립니다.빨간 원이 CellPos이며노란 원이 사자와 곰에 ExtraCells를 1씩 했었을 때 모습입니다.
-
미해결김영한의 실전 자바 - 중급 1편
문득 영한님의 키세팅이 궁금해서 여쭤봅니다
[질문 내용]저도 mac os를 사용중인데 이번 문제 같이 String값을 대문자로 써야할때면 기본키가 Caps Lock키를 꾹 누르는거라 시간도 오래걸리고 사용하기 어려운데 다른 키로 사용하시는 걸까요? 뭔가 금방금방 바꾸시는거 같아서요
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
[30-01] 웹 에디터와 폼 라이브러리
안녕하세요해당수업중 강의 내용대로 했는데 실행시 아래와 같이 에러 뜨고 정상 실행이 안됩니다. TypeError: react_dom_1.default.findDOMNode is not a functionat ReactQuill.getEditingArea (http://localhost:3000/_next/static/chunks/node_modules_5754136c._.js:16760:43)at ReactQuill.instantiateEditor (http://localhost:3000/_next/static/chunks/node_modules_5754136c._.js:16631:50)at ReactQuill.componentDidMount (http://localhost:3000/_next/static/chunks/node_modules_5754136c._.js:16590:14)at LoadableComponent (http://localhost:3000/_next/static/chunks/_2df4111c._.js:296:57)at WebEditorPage (http://localhost:3000/_next/static/chunks/_2df4111c._.js:81:215)at ClientPageRoot (http://localhost:3000/_next/static/chunks/node_modules_next_dist_1a6ee436._.js:2053:50)