묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! Querydsl
querydsl 쿼리 테스트 작성이 궁금합니다.
과 같이 구성했을 때 queryDSL 의 쿼리의 테스트코드를 작성할 때 springboottest 로 올려야할까요? memberRepository 는 interface니까 순수 JUnit 테스트로 하려니 객체를 생성할 수가 없어서 스프링부트테스트로 올려서 빈으로 받아오는 방법말곤 잘 모르겠습니다. (찾다보니 querydsl 자체를 jpaqueryfactory 를 mocking 해서 테스트하는게 있긴하던데 쿼리가 동작하는지 확인하는데 모킹으로 테스트하는 건 기능이 잘 작동하는지 보장하지 않는다고 생각합니다) 혹시 queryDSL 의 테스트를 작성해야 한다면 어떻게 해야할까요?
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
composite field에 대해서 auto increment 적용하기
아래와 같은 클래스가 있습니다. class Foo(models.Model): name = models.CharField(max_length=20) value = models.PositiveIntegerField(default=1, auto_increment=True) class Meta: constraints = [ models.UniqueConstraints(fields=["name", "value"], name="unique name value") ] 위에서 value의 auto increment가 name 속성과 연관돼서 동작하도록 구성하고 싶습니다. 예를 들어 Foo(name="김길동")을 생성하면 name="김길동", value=1 레코드가 생성되고, 다시 Foo(name="김길동")를 생성하면 auto_increment로 name="김길동", value=2 레코드가 생성됩니다.여기서 추가적으로 Foo(name="박길동")을 생성하면 value가 3이 아니라 다시 박길동에 대해서 처음부터 auto_increment가 동작되어 name="박길동", value=1로 생성되도록 하고 싶습니다. 이를 위해서 models.Model의 save 메서드를 오버라이딩하거나 validation을 사용하지않고 구현하는 방법이 있을까요?
-
미해결쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
kubelet 을 중단시켰음에도 불구하고
kubelet 을 stop 했는데 #kubectl get pods pendding 이 아닌 전부 running 입니다. 왜 그런가요 ?
-
해결됨따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기
BoilerPlate 코드 관련해서 궁금한 점이 있습니다.
올려주신 보일러플레이트 코드 뜯어보면서 Formik과 Yup 코드를 어느정도 이해했는데 클라이언트 로그인 component와 회원가입 component에 있는 코드들 중 역할이 짐작이 안가는 것들이 있어 질문드리려고 합니다. {errors.name && touched.name && ( <div className="input-feedback">{errors.name}</div> )} 이런 코드들이 항상 AntD Input 아래에 붙어 있던데 어떤 역할을 하는 코드들 인지 궁금합니다!
-
미해결팀 개발을 위한 Git, GitHub 입문
선생님 질문 하나 있어요~
b라는 브랜치를 만들고 소스를 추가한 후 마스터에서 머지해서 병합 잘 되었는데요~ 병합 후 b라는 브랜치에서 파일생성/ 코드수정 후 commit push 해서 b브랜치 안에서는 변경이 되었는데 이 변경사항을 마스터브랜치에서 다시 머지하면 최신상태라는 메시지가 나옵니다 (Already up to date.) 혹시 한번 병합된 브랜치는 그 후 수정해도 반영이 안되는걸까요 ? 그렇다면 병합된 브랜치로 계속 수정을 하는 방법은 없을까요 ? 새 브랜치를 만들어서 작업을 이어나가야 될까요 ~?
-
미해결실전 리액트 프로그래밍
리덕스, 사가파일들의 관리
안녕하세요. 강사님 강사님 알려주신 형태로 화면 단위로 state 폴더를 두어 redux 파일과 saga 파일로 개발을 해보고 있습니다그런데 화면이 늘어나니까 초기 로드가 부담스러워서 코드스플릿을 이용을 해보고 있는데요. 코드스플릿을 이용해도 화면 단위의 state 폴더의 파일들은 main.chunk.js 에 여전히 담기고 있어서main.chunk.js 크기가 점점 늘어나는 건 마찬가지더라구요. 혹시 state 폴더에 있는 redux와 saga 파일을 main.chunk.js 에서 제외시킬 수 있는 방법이 있나요?실무에서는 이를 어떻게 최적화하고 계신지 궁금합니다.
-
미해결문과생도, 비전공자도, 누구나 배울 수 있는 파이썬(Python)!
vscode 로 모듈 작성시 return 문제
안녕하세요, 수업 잘 듣고 있습니다. 막히는 부분이 생겨 질문을 드립니다. 맥환경에서 VScode 사용하여 모듈을 만들어보려고 터미널 touch 명령어로 @@@.py 까지 만들어서 VScode로 파일을 열었는데 def wow_sum(x,y): (들여쓰기) return x+y 하고 shift+Enter 를 누르니 'return' outside function 이라는 오류가 나서 함수를 정의할 수 없는 상태입니다. 들여쓰기가 맞게 된 것 같은데, 왜 오류가 나는걸까요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
Atom에서 Package가 검색되지 않습니다.
Atom Install 화면 Featured Packages에 아무 것도 없으며, autocomplete-python 검색 결과가 없습니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part3: 자료구조와 알고리즘
#include 간단한 질문입니다!
환경설정강의에서 모든 코드를 따라하고 #include "ConsoleHelper.h" #include "pch.h" 이순서로 할시 에러가 나는데 혹시나 싶어 #include "pch.h" #include "ConsoleHelper.h" 이렇게 바꿔주니 정상 작동하는것을 확인했습니다. #include하는데에도 순서가 있을까요? 조금 찾아보니 상위클래스를 먼저해야된다고 하는데 이경우는 그런경우도 아닌거 같아서 처음 에러가 났을때 당황했었습니다!. 한줄요약은 #include 로 가져올시 순서가 있는지? 궁금하네요.
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
findOne 등등 궁금합니다.
예를 들어서 const User = require('../models/user'); 이런식으로 models user 가져와서 사용이 가능한데 맨처음 index.js Comment.init(sequelize); 이부분에서 init 해줘야 하는거 같은데 여기서 해줄떄 그럼 매번 만약 테이블들이 늘어나면 파일을 계속해서 추가시켜주고 init에 맞춰줘야 하는건가요? 안에 필드 늘어나면 계속해서 수정시켜주고요 만약 findOne 이런거 안쓰고 sql로 하게되면 init 할필요도 없는건가요?? 궁금합니다.
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
BOW 질문입니다 ㅎㅎ
BOW 에서 단순 카운트 벡터라이징할때 피처로 나오는 순서가 랜덤인건가요 아니면 많이 나오는 순서인가요?? TFIDF 에서는요??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
양방향 연관관계를 사용하는 예
설계를 할 때 단방향으로 먼저 설계하고 양방향은 필요하면 추가하면 된다고 하셨고 Order와 Member의 관계에서 JPQL을 통해 양방향이 아니더라도 Member와 연관되어 있는 Order를 뽑아올 수 있으니 양방향으로 굳이 할 필요가 없다고 하셨습니다. 단방향이어도 테이블 관계 상에서 양방향 조회가 모두 가능한데 실무에서 양방향이 필요한 상황은 어떤 상황일가요?
-
미해결선형대수학개론
1.5강 homogeneous linear systems
안녕하세요 선생님, homogeneous linear system에서 trivial solution, nontrivial solution 이 아닌, x가 0이 아닌 실수로 나오는 경우도 있나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Disconnected from the target VM, address: '127.0.0.1:58296', transport: 'socket'
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]https://drive.google.com/file/d/1CJnYRgV9zR_uJeare08uckeZ3XDFftwR/view?usp=sharing
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Lombok @Data 사용 관련
Lombok @Data 어노테이션은 예측하지 못하게 동작할 수 있기 때문에 핵심 도메인 모델에서 사용하기 위험하다고 하셨지만 단순하게 data 왔다갔다할 때 사용하는 DTO일 경우에는 확인해보고 사용해도 괜찮다고 수업 시간에 언급하셨잖아요. 그래서 되도록이면 @Data 어노테이션 사용은 자제해야겠다고 생각했는데 수업 시간에 예제 코드 작성하실 때는 자주 사용하시더라고요. @Data 어노테이션을 사용해도 되는지 안 되는지 혼란스러운데 이 부분에 대해서 풀어서 설명해주실 수 있나요?
-
미해결비전공자를 위한 개발자 취업 올인원 가이드 [통합편]
독학 1달째인 비전공 개발자지망생입니다!
먼저 좋은 강의 정말 감사드립니다!!!!! 저도 스물아홉에 개발자로 진로를 정하면서 궁금한것/고민들이 정말 많았는데 이 강의 하나로 그간 고민들이 사라지고 '열심히 해야겠다'라는 생각이 들었습니다! 다만 혼자 공부를 함에 있어서 제가 현재 나아가고 있는 방향이 옳고도 빠른 길인지 의문이 생겨 질문을 드립니다. 저는 사는 지역에 평이 좋은 국비학원이 없어 하루 10시간 공부를 목표로 독학중입니다. 우선 생활코딩과 노마드코더 강의로 html,css와 자바스크립트의 기본을 공부했고 현재 부스트코스 풀스택 강의의 프로젝트를 모두 완성하는 것을 목표로 공부중입니다 (https://www.boostcourse.org/web316) 또 개념공부를 위해 자바의정석을 틈틈히 보고있고 코드를 익숙하게다루기 위해서 baekjoon문제도 조금씩 풀고있습니다. 서비스 회사를 목표로 빠르게 취업하기 위해서 공부하고있는데 아무래도 비교 지표가 없다보니 어느정도의 실력이 되었을때 이력서를 넣기 시작해도 되는지가 궁금합니다. 또 제가 실행중인 공부계획(독학)이 올바른 방향인지 조금 이상하게 돌아가는 길은 아닌지도 의문입니다. 긴글 읽어주셔서 감사드립니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2 database 쿼리 질문있어요
[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 h2 database 쿼리 부분에서 계속 syntax error 가 발생해서 질문남겨요 옳게 작성했는데 계속 에러가 발생합니다. 이러한 경우에는 어떻게 해야될까요...
-
미해결선형대수학개론
1.6강 example1
안녕하세요 선생님 1.6강 4페이지 문제에서 row reduction한 것과 해를 도출한 것은 이해가 됩니다만 그것이 어떻게 2v1 - v2 + v3 = 0 꼴 형태의 식이 되는지 이해가 되지 않습니다. 그냥 x3 = 1을 대입해서 한가지 가능한 식을 도출해낸 것인가요? 감사합니다.
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
깃 권한 요청드립니다.
- 인프런 아이디 : jangnrock@naver.com - 인프런 email : jangnrock@naver.com - 깃헙 아이디: jangnrock@naver.com - 깃헙 username: hooni93
-
미해결스프링 시큐리티
궁금한 점이있습니다.
안녕하세요 강사님 이번 강의를 보면서 한 가지 궁금한점 생겼습니다. 커스텀하다가 궁금하여 질문드립니다. [요구사항 ] 사용자는 등록된 IP인경우 접근이 가능하다 사용자는 해당 권한 계층 상위 또는 해당 계층인 경우 접근이 가능하다. 사용자는 해당 부서계층에 상위 또는 해당 계층인경우 접근이 가능하다. [사용자 권한 ] ADMIN > MANAGER > USER [팀 권한] 영업팀 > 1팀 위와 같이 권한 뿐만아닌 부서에 대한 정보까지 탐색해야한다면 어떻게 해야할지에 대해 문의드립니다. [설계] 1. IP vote 같은 경우 ip가 존재한다면 ACCESS_ABSTAIN 보류 상태로 다음 vote를 체크하도록합니다. (강의와 동일) 2. 사용자 권한 - 사용자 계층은 해당 계층 또는 상위 계층이면 ACCESS_ABSTAIN 로 보류해야한다. - 기본으로 제공하는 RoleVoter를 통해 승인 여부를 결정하는데 해당 결정 방법은 보류가 아닌 승인이기 때문에 재정의해서 보류로 변경한다. 2-1. 기존 RoleHierarchyVoter 를 상속한 CustomRoleHierarchVoter 를 생성한다 - vote 메소스를 재정의하여 ACCESS_ABSTAIN 처리 함으로써 사용자권한에 대한 부분에대한 문제점--------------------------------------------- 3. RoleHierarchyVoter 를 상속한 GroupVoter 를 하나 생성해서 vote 메소드를 재정의해서 그룹에 대한 심사를 결정하고자합니다. 강의 기준에서 Group에대한 정보를 FilterSeuicrityInterceptor 에서 가져오게 하기 위해 SecurityInitializer 를 이용 데이터를 맵핑하고 빈을 설정했습니다. 4. 하지만 내부적으로 동작시 FilterSecurityInterceptor는 최초에 한번 해당 정보를 가져오는 과정을 진행하고AbstractSecurityInterceptor 에서 호출시에는 사용자의 권한정보만을 AccessDesisionManager에게 decide 하게 되는데요 결론적으로는 GroupVoter 에서는 권한정보가 사용자 정보를 가지고있어서 원하는 방향성으로 동작하지 않았습니다. 5. 이 경우 생각해볼 방향성이 provider 시점에 유저에 대한 정보를 조회 후 해당 정보중 그룹 정보도 같이 조회하여 WebAuthenticationDetails 에 그룹 정보를 포함하는 방법도 6. AffirmativeBased 클래스를 재정의하여 해당 GroupVoter를 호출할 때 configAttributes 에 대한 db 정보를 가져오는방법 (역할이 변질되는 느낌이 있어보입니다.) 7. FilterSecurityInterceptor 에서 AbstractSecurityIntercepter에서 beforeInvocation 부분을 재정의 하는 방법 이 있을 것 같습니다. 8. 만약 Groupvoter 정보를 캐싱하고자 한다면 어느시점이 좋을까요. [코드] 시큐리티 설정 코드 private List<AccessDecisionVoter<?>> getAccessDecisionVoters() { List<AccessDecisionVoter<? extends Object>> accessDecisionVoters = new ArrayList<>(); accessDecisionVoters.add(accessIp()); accessDecisionVoters.add(roleVoter()); accessDecisionVoters.add(groupVoter()); return accessDecisionVoters;}@Beanpublic AccessDecisionVoter<? extends Object> accessIp() { return new IpAddressVoter(securityResourceService);}@Beanpublic AccessDecisionVoter<? extends Object> roleVoter() { return new CustomRoleHierarchyVoter(roleHierarchy());}@Beanpublic RoleHierarchy roleHierarchy() { return new RoleHierarchyImpl();}@Beanpublic AccessDecisionVoter<? extends Object> groupVoter() { return new GroupVoter(roleGroupHierarchy());}@Beanpublic RoleHierarchy roleGroupHierarchy() { return new RoleHierarchyImpl();} CustomRoleHierarchyVoter - 기존 RoleVoter에서 승인 처리되는 부분을 보류 상태로 변경했습니다. public class CustomRoleHierarchyVoter extends RoleHierarchyVoter { public CustomRoleHierarchyVoter(RoleHierarchy roleHierarchy) { super(roleHierarchy); } @Override public int vote(Authentication authentication, Object object, Collection<ConfigAttribute> attributes) { if (authentication == null) { return ACCESS_DENIED; } Collection<? extends GrantedAuthority> authorities = extractAuthorities(authentication); for (ConfigAttribute attribute : attributes) { if (this.supports(attribute)) { // Attempt to find a matching granted authority for (GrantedAuthority authority : authorities) { if (attribute.getAttribute().equals(authority.getAuthority())) { return ACCESS_ABSTAIN; } } } } return ACCESS_DENIED; } Collection<? extends GrantedAuthority> extractAuthorities(Authentication authentication) { return authentication.getAuthorities(); }} GroupVoter - 그룹 정보에 따른 승인 처리 부분입니다. 해당 부분에서 그냥 DB 정보를 가져와서 Map에다가 저장해서 처리해볼까 하는 생각도 있는데 확실치가 않네요 .. public class GroupVoter extends RoleHierarchyVoter { public GroupVoter(RoleHierarchy roleHierarchy) { super(roleHierarchy); } @Override public int vote(Authentication authentication, Object object, Collection<ConfigAttribute> attributes) { // 미구현 return result; }}