묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Entitymanager와 스프링
아래의 궁금증이 생겼습니다. 스프링에서, 1. em을 출력해봤는데 왜 em은 프록시 객체가 들어오는가? 뭘 위해서?2. 여러 리포지토리에 있는 em을 다 출력해보니 모두 같은 em 객체였다. 즉, em도 스프링 빈으로 등록되어 (사실은 proxy) 싱글톤으로 관리되고 모든 리포지토리 계층에서 같은 em을 사용하는 것일까? 3. 그렇다면 그림하고 다른 것이 있는데 em이 transaction이 생성될때마다 생기는 것이 아니라 그냥 하나를 여러 쓰레드에서 접근하는 것인가?? 그럼 내부에 쓰레드 세이프하게 코드가 짜져있어서 가능한걸까(락을 거는 것)? 여러 쓰레드가 동시에 접근하는 경우 락이 걸려있으면 하나의 요청이 처리될때까지 다른 쓰레드들은 대기하게 될텐데 그러면 멀티쓰레딩의 의미가 없는 것이 아닐까?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
EntityManager와 싱글톤 빈
JPA 활용 1과 연관해서 궁금한게 생겨서 문의드립니다. 아래의 내용이 맞는지 궁금합니다. 여기저기서 뒤죽박죽 조사해서 난해한 감이 있네요 ㅠ emf를 통해 직접적으로 em을 생성하는 경우 당연히 em의 원칙을 지키기 위해 트랜잭션 단위로 다른 em을 생성해서 반환하여, 공유하는 문제를 방비한다.그러나 이렇게 호출할 때 마다 새로운 em을 생성하는 것은 너무 큰 자원, 시간 낭비이다.실무에서는 JPA를 단독으로 사용하지 않고, 스프링 프레임워크와 함께 사용하는데 이러한 문제를 해결할 방법이 있다.분명 em은 트랜잭션 단위로 생성이 되어야 하며, 트랜잭션 종료 시 em도 종료되어야 한다고 했다. 그러나 스프링에서는 em을 트랜잭션 단위로 생성하지 않고도 동시성 문제를 해결할 수 있다. repository 클래스는 @Repository로 인해 스프링 빈으로 등록되므로 싱글톤으로 관리되는데 그 내부 필드인 em도 private final 이기 때문에 빈이 생성될 때 초기화된 후 변경되지 않는다.근데 어떻게 해결하는 것일까? @PersistenceContext 에너테이션에 그 답이 있다. @PersistenceContext 에너테이션을 사용하면, 이 repository 클래스가 빈으로 등록될 때 em을 주입하는 시점에서 EntityManager를 생성해서 주입할 때 프록시 객체로 감싸서 주입해주는 것이다. 이 프록시 객체가 내부적으로 동시성 문제를 해결해준다. 결국 한 repository에서 하나의 em만으로 문제를 해결하는 것이다.※ 최신 스프링에서는 @PersistenceContext 대신에 @Autowired로도 할 수 있다고 한다. @Repository@Transactionalpublic class MemberScheduleRepository { private final EntityManager em; @Autowired public MemberScheduleRepository(EntityManager em) { this.em = em; }} + 정리 강의에서 지금 강의에서하는 EntityManager와 스프링을 이용하는거와 다른데 나중에 설명해주겠다고 하셨는데 그거와 관련된 영상이 없는것 같습니다. 아래 그림의 차이도 포함해서요!
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
구현 측면 질문이 있습니다.
안녕하세요 선생님. 저의 경우에는 39번 문제의 두 배열을 합치는 매카니즘을 이용하여 해결하였습니다. 0. 사용자로 부터 두 배열을 입력 1. 입력받은 두 배열을 각각 정렬 알고리즘을 사용하여 오름차순으로 각각 정렬 2. 오름차순으로 정렬된 두 배열을 합친다 3. 이후 합쳐진 결과가 저장된 배열에서 중복된값만을 출력한다 저의 경우는 위의 논리를 기반으로 구현하였습니다.(사실상 39번 구현 코드와 큰 차이가 없습니다) 제 생각으로는 이렇게 구현하여도, 시간복잡도 측면을 생각해 본다면 선생님이 설명해 주신 투포인터 알고리즘으로 구현하든, 제 방식으로 구현하든 , 시간복잡도 측면은 동일하다고 생각되는데요, 제가 맞게 생각한건지 궁금합니다. -> 어차피 논리가 다른 부분은 위의 과정에서 두 배열을 합치냐 아니면 vs 바로 비교하냐 인데 , 두배열을 합치든 바로 비교하든 결국 두 방법에서 사용되는 loop은 어차피 배열 하나만을 scan하는 O(n)의 시간복잡도를 갖는다고 생각합니다.
-
미해결만들어 가면서 배우는 JAVA 플레이그라운드
첫번째 요일 입력받고 줄바꿈하는부분
for(int i=1; i<=maxday; i++) { System.out.printf("%3d",i); if((i+weekday)%7 == 0) { System.out.println(); } } 이런식으로 코딩하면 간단히 해결되지않나요??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA 관련 프로젝트를 하던 중 궁금한점 2가지가 있어 질문드립니다.
안녕하세요 영한님. Spring 강의부터 JPA 강의까지 반복하고 있는 직장인입니다. 직장이 금융업종이라 단순 반복 업무 운영에 흥미를 잃어, 퇴근 후에 공부하고 있습니다. JPA 관련 토이프로젝트를 하던 중 궁금한점이 있어 이렇게 질문드립니다. (토이프로젝트를 하다보니 영한님 강의의 많은 부분이 실제 적용되는 것을 알 수 있었습니다..^^) 1. Spring Data JPA 쿼리 메서드 관련 프로젝트에는 User, Role 테이블이 존재합니다. 관계는 다대다이지만, ManyToOne으로 각각 설계하였습니다. 여기서 특정 롤을 가지고 있지 않은 사용자이름(username)을 가져오는 쿼리를 작성하려고 하는데, 우선 JPQL로 적용해보면 아래와 같이 될 것입니다. => select distinct u from User u fetch join u.userRoles ur where ur.role not in ?1 그런데 영한님 강의에서도 fetch 조인 대상은 alias를 허용하지 않는다고 하셨고, 실제로 해보니 오류가 나더라고요.. 근데 혹시나 해서.. Spring DataJPA 아래와 같은 쿼리 메서드를 적용해보니.. 원하는 결과를 얻을 수가 있었습니다.. => Page<User> findDistinctUsernameByUserRolesRoleNotIn(@NotNull Pageable pageable, Collection<Role> roles); 이 경우 내부적으로 어떻게 동작한 것일까요..ㅠ? 2. 페이징 처리 위 쿼리를 페이징 처리하기 위해 BatchSize를 지정했는데요.. BatchSize와 @EntityGraph 를 같이 적용하니 동작하지 않더라고요.. 제가 이해하기로는 @EntityGraph도 패치조인을 위한 전략이고, BatchSize도 패치조인 후에 페이징 범위를 가져오기 위한 방법인데, 왜 이렇게 되는지 잘 이해가 되지 않더라구요.. 혹시 제가 잘 못 이해하고 있는게 있는 것일가요?? 영한님 강의로 스프링에 대한 전반적 이해를 하는데 많은 도움을 얻고 있습니다. 감사합니다!
-
미해결인스타그램 클론 - full stack 웹 개발
\d 해도 작동이 안되고 에러가 납니다.
(사진)
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
reduce 사용한 코드
[섹션 2] 큰 수 출력하기 function solution(arr) { let answer = []; arr.reduce((prev, cur) => { if (prev < cur) answer.push(cur); return cur; }, 0); return answer; } let arr = [7, 3, 9, 5, 6, 12]; console.log(solution(arr)); reduce를 사용해서 작성해보았습니다. 결과는 맞게 나오는데 괜찮은 건가요? 항상 강의 재밌게 듣고 있습니다!!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
Do while 질문 복수응답 관련 추가질문입니다.
[추가질문] 위에서 다른 학우분이 질문해주신 것에 대한 추가 질문입니다! answer가 y, Y, yes, YES, Yes... 등 개수가 많아져서 일일이 or를 적어주기 힘들 때는 지난 강의(13강)에서 enum 지정해줬던 것처럼 그룹으로 만들어서 해당 그룹/인덱스 안의 string이면 정답처리 할 수 있을 것 같은데 그럴 때는 어떤 함수를 쓰면 될까요? enum말고 estring 등이 있나요? estring Answer { YES = 0 Yes = 1 yes = 2 Y = 3 y = 4} Do Console.WriteLine("강사님은 잘생기셨나요? (y/n): "); string Answer = Console.ReadLine(); } while (answer != Answer); 이런 식으로요! 그리고 y/n 말고 아예 엉뚱한 답(0, ㅋ, ' 등)을 적는 사람에게는 "YES or NO 중 골라주세요" 와 같은 문장을 출력하고 다시 while문으로 돌아가게 하고 싶다면 방법이 있을까요? 이 땐 while문이 아니라 if문을 결합해야 할까요? 알려주시면 감사하겠습니다!
-
미해결15일간의 빅데이터 파일럿 프로젝트
storm-ui 관련 오류 문의
안녕하세요, Big.D 님. storm 관련 설치는 완료되었고, ui가지 running 인 것은 확인 했습니다. 하지만 크롬에서 8088로 접속하려고 하면 접속되지 않는다는 메세지가 뜹니다. 이 문제는 어디를 살펴봐야 해결할 수 있는지 조언 부탁 드립니다.
-
미해결SQL과 구글시트로 시작하는 데이터분석
수업자료다운로드
수업자료를 다운받아서 압축을 풀려고 하는데, 압축풀때 오류가 나는것 같아요. 확인 부탁드려도 될런지요?
-
미해결웹 게임을 만들며 배우는 React
webpack 실행 도중 오류
// 여러개의 jsx파일을 하나로 합쳐서 html에서 쓸 수 있게 해줌 const path = require('path'); // 노드에서 경로 조작을 하도록 해주는 것 const { webpack } = require('webpack'); module.exports = { name: 'wordrelay-setting', mode: 'development', // 실서비스: production devtool: 'eval', resolve: { extensions: ['.js', '.jsx'], }, entry: { app: ['./client'], }, // 입력 module: { rules: [{ test: /\.jsx?/, loader: 'babel-loader', options: { presets: [ ['@babel/preset-env', { targets: { browsers: ['> 5% in KR', 'last 2 chrome versions'], }, debug: true, }], '@babel/preset-react' ], plugins: ['@babel/plugin-proposal-class-properties'], }, }], }, plugins: [ new webpack.LoaderOptionsPlugin({ debug:true }), ], output: { path: path.join(__dirname, 'dist'), filename: 'app.js' }, // 출력 }; webpack.config.js를 이렇게 쓰고 실행을 했는데 다음과 같은 에러가 뜹니다 ㅠㅠ 어디가 잘못된 것일까요?? 에러메시지에서 보여주는 new webpack.LoaderOptionsPlugin 줄을 주석처리하고 실행하면 되긴 하는데 저 부분이 왜 문제가 되는걸까요
-
미해결웹 게임을 만들며 배우는 Vue
component data관련 질문이 있습니다.
안녕하세요 강의 잘 듣고있습니다. 감사합니다. component에서 data를 함수로 만들어서 처리해줘야 데이터 중복이 발생하지 않는다고 말씀해주셨는데 제가 데이터를 data() { return {} } data: () => ({객체 }); 형식으로 사용하지 않고 es6 화살표함수로 사용하였는데 이때 props가 처리되지 않는 상황이 발생하였습니다. 에러는 뜨지않았는데 혹시 이러한 이유가 무엇때문인지 여쭤볼 수 있을까요???..
-
미해결처음 배우는 리액트 네이티브
firebase.json .gitignore 불가
안녕하세요 선생님, 강의 너무 즐겁게 듣고 있습니다. 다름이 아니라 firebase 고유 아이디가 담긴 fireabase.json 파일을 git에 올릴 때 숨기기 위해 gitignore 파일에 아래와 같이 넣었는데 되지 ignore되지 않습니다. 혹시 다른 설정 사항이 필요한 걸까요? gitignore 자체의 문제일까 싶어 firebase.json 파일과 동일 경로에 test.txt, test.json 으로 test 파일을 만들어 테스트 해보았는데 잘 됩니다. fireabase.json만 안되는 것 같아요. node_modules/ .expo/ npm-debug.* *.jks *.p8 *.p12 *.key *.mobileprovision *.orig.* web-build/ firebase.json # macOS .DS_Store
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
Release 모드로 빌드 시 나오는 오류는 어떻게 처리하면 좋을까요?
강의랑은 무관할수도 있지만, 만약 프로그램을 만든다면 release모드로도 실행이 되어야 해서 한번 시도해본건데요, animation편 강의자료를 release모드로 바꾸고 엔진프로젝트를 빌드하게되면 entry point not found가 뜨는데, 이건 어떻게 처리할 수 있나요? 인터넷에서는 속성의 code-generation 부분을 multi-threaded로 바꾸고 configuration type을 static library인지 확인하라고 나와있고, Linker에서 subsystem을 console로 바꾸라는 것도 해봤습니다. 그렇게하고 release모드로 빌드를 해도 정적라이브러리는 main문을 찾던데 어떻게 하면 좋을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
no operatin
안녕하세요. ${data}에는 값이 있으니까 _(no operation)을선택하지 않고, ${nullData}는 null이니 _(no operation)을선택하게 돼서 연산을 수행하지 않고 그냥 원래 html이 보여지게 하잖아요. 그럼 그냥 <span th:text="${data}">데이터가 없습니다.</span><span th:text="${nullData}">데이터가 없습니다.</span>이렇게 써도 결과에 차이가 없어보이는데 왜 저걸 사용하는건가요?
-
미해결스프링 핵심 원리 - 기본편
AnnotationConfigApplicationContext() 매개변수 질문
이전까지는 ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class); 와 같이 매개변수로 @Configuration이 붙은 설정 클래스를 넘겼습니다. 이번 강의에선 ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); 와 같이 @Configuration이 붙지 않은 일반 클래스(?)를 넘겼습니다. 그래서 헷갈려서 제가 알고 있는 것이 맞는지 질문드립니다. 1. DiscountService.class를 매개변수로 넘길 때, 스프링이 DiscountService의 생성자를 호출하면서 빈을 등록하는 것이 맞나요? @Component나 @Bean없이 빈으로 등록되는 것 같아서 질문드립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
dependencies질문이용
안녕하세요~ 프로젝트 생성을 따라하다가 다른점이 있어서 문의를 드리게되었습니다. build.gradle 파일에 가면 위와 같이 되어 있는데 excluded group이나 module은 같이 작성되어 있지 않아서요 따로 추가를 해주어야 하나요?
-
미해결마인크래프트 게임을 활용한 파이썬 프로그래밍 완벽 이해
마인크래프트-파이썬 프래그래밍 수업 중인데 모르는 부분이 있습니다.
안녕하세요? 헬로 마인크래프트 실행 과정 중에 자꾸 에러가 발생하여 문의 드립니다. 아래와 같은 에러 내용이 뜨는데, 인터넷 검색해보면 서버와 클라이언트의 idle.exe가 달라야 한다는 식의 내용이 뜨는데 무슨 말인지 모르겠습니다. 파이썬에 대해서 전혀 모르고 수업을 듣기 시작했는데, 나오는 문제들을 해결하려면 기본적으로 코딩을 알아야 하는 건가 싶습니다. ;;; 어떻게 해결할 수 있을지 설명 부탁 드립니다. ---------------------<에러내용>---------- Traceback (most recent call last): File "C:\Users\박아름\Desktop\마크와코딩\drive-download-20210721T045252Z-001\01 헬로 마인크래프트.py", line 2, in <module> mc = Minecraft.create() File "C:\Users\박아름\AppData\Local\Programs\Python\Python38-32\lib\site-packages\mcpi\minecraft.py", line 171, in create return Minecraft(Connection(address, port)) File "C:\Users\박아름\AppData\Local\Programs\Python\Python38-32\lib\site-packages\mcpi\connection.py", line 17, in __init__ self.socket.connect((address, port)) ConnectionRefusedError: [WinError 10061] 대상 컴퓨터에서 연결을 거부했으므로 연결하지 못했습니다
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
Modules & 캡슐화 강의 6분51초
안녕하세요 cats의 서비스 컨트롤러 모듈은 잘 만들어졌는데 저 시간에 users 만드는걸 nest g mo users를 하면 TypeError: Cannot read property 'properties' of undefined at MetadataManager.insert (/Users/chotaegyu/dev/inflearn/nest/project/node_modules/@nestjs/schematics/dist/utils/metadata.manager.js:13:41) at ModuleMetadataDeclarator.declare (/Users/chotaegyu/dev/inflearn/nest/project/node_modules/@nestjs/schematics/dist/utils/module-metadata.declarator.js:8:34) at ModuleDeclarator.declare (/Users/chotaegyu/dev/inflearn/nest/project/node_modules/@nestjs/schematics/dist/utils/module.declarator.js:15:33) at /Users/chotaegyu/dev/inflearn/nest/project/node_modules/@nestjs/schematics/dist/lib/module/module.factory.js:54:51 at MergeMapSubscriber.project (/Users/chotaegyu/dev/inflearn/nest/project/node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics/src/rules/call.js:75:24) at MergeMapSubscriber._tryNext (/Users/chotaegyu/dev/inflearn/nest/project/node_modules/@nestjs/schematics/node_modules/rxjs/internal/operators/mergeMap.js:67:27) at MergeMapSubscriber._next (/Users/chotaegyu/dev/inflearn/nest/project/node_modules/@nestjs/schematics/node_modules/rxjs/internal/operators/mergeMap.js:57:18) at MergeMapSubscriber.Subscriber.next (/Users/chotaegyu/dev/inflearn/nest/project/node_modules/@nestjs/schematics/node_modules/rxjs/internal/Subscriber.js:66:18) at MergeMapSubscriber.notifyNext (/Users/chotaegyu/dev/inflearn/nest/project/node_modules/@nestjs/schematics/node_modules/rxjs/internal/operators/mergeMap.js:93:26) at SimpleInnerSubscriber._next (/Users/chotaegyu/dev/inflearn/nest/project/node_modules/@nestjs/schematics/node_modules/rxjs/internal/innerSubscribe.js:27:21) Failed to execute command: node @nestjs/schematics:module --name=users --no-dry-run --collection="@nestjs/schematics" --language="ts" --sourceRoot="src" --spec 이렇게 나오네요...수정한건 ts파일들 eslint오류나길래 .eslintrc.js 에 parserOptions: { project: 'project/tsconfig.json', sourceType: 'module', }, 이거 하나 추가했는데... cats는 다 잘만들어졌는데... 실습 project 폴더에서 하면 안되네요... ㅠㅠㅠ /usr/local/lib ├── @nestjs/cli@7.6.0 ├── nodemon@2.0.4 └── npm@7.12.0 cli 글로벌로 잘깔려있습니다.
-
미해결iOS/Android 앱 개발을 위한 실전 React Native - Basic
화면에 Picker 가 나타나지 않음.
작성중...