묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 시큐리티
SessionCreationPolicy의 IF_REQUIRED와 NEVER 속성에 대해서
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. IF_REQUIRED의 설명 중 "필요시"라고 되어있는 부분이 있는데 어떤 상황이 "필요시"에 해당할까요??NEVER의 설명 중 스프링 시큐리티가 생성하지 않지만 "이미 존재"하면 사용이라고 써놓으셨는데, 애초에 생성하지 않았는데 어떻게 이미 존재할 수 있나요??
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
Environment.TickCount & Int32.MaxValue; 코드 질문
안녕하세요 강사님! 강의 잘 듣고 있습니다.질문 게시판 글도 간단히 보면서 강의를 보고 있는데요.int currentTick = Environment.TickCount & Int32.MaxValue;위의 코드를 답변으로 주신 내용이 있던데c#강의에 다시 가서 &비트 연산을 봐도코드 이해를 못해서요.부호가 제거된다는 것 같은데 왜 부호가 없어지고 코드가 정상으로 돌아가는지 잘 모르겠습니다.답변 부탁드립니다.
-
해결됨처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part3]
from_pretrained 에 관한 질문입니다
강의 4:53 에 나오는 from_pretrained 함수에 관한 질문입니다.공식 문서를 아무리 찾아봐도, 더 미궁 속으로 빠지는 듯한 느낌만 들어서(...) 질문 올립니다. from_pretrained 메소드는 huggingface에서 제공하는 그 어떠한 클래스에도 공통적으로 적용이 가능한 것인지 궁금합니다.공식 문서에서 from_pretrained를 검색해본 결과, 각 검색 페이지마다 from_pretrained의 파라미터가 다르게 나오고, 그에 대한 설명조차도 찾을 수가 없었습니다...예를 들어, FeatureExtractionMixin 의 from_pretrained 메소드의 파라미터는 9개인 반면, AutoTokenizer의 from_pretrained 메소드의 파라미터는 13개 라고 서술되어 있는 경우를 볼 수 있었습니다.또한, 강의에서 사용하였던feature_extractor = ViTFeatureExtractor.from_pretrained("google/vit-base-patch16-224-in21k") feature_extractor이 코드와,model = ViTForImageClassification.from_pretrained('google/vit-base-patch16-224-in21k', num_labels=10, # 10개의 클래스로 분류를 해야 함 id2label=id2label, label2id=label2id)이 코드에서도 역시 from_pretrained 메소드가 사용되었는데,공식 문서에서 ViTFeatureExtractor와 ViTForImageClassification을 아무리 찾아보아도 from_pretrained 메소드에 관한 설명은 볼 수가 없었으며, 각각의 경우에 적용되는 파라미터에 관한 내용 역시 찾아볼 수 없었습니다.이런 경우, 다른 코드에 from_pretrained 메소드를 적용할 때에는 해당되는 내용을 어떻게 찾아야 하는 것인지 궁금합니다.
-
미해결스프링 배치
ItemStream의 open 메서드 관련 궁금합니다
안녕하세요 강사님~먼저 질좋은 강의를 만들어주셔서 감사합니다 :)ItemStream 관련 궁금증이 생겨 질문드리게 되었는데요!public void open(ExecutionContext executionContext)위 메서드의 ExecutionContext 는 Step의 ExecutionContext 로 이해했습니다.그런데 Step 중간에 오류가 발생할 경우. 전체 Job이 실패하고.JobExecution & JobExecutionContext 가 새로 생성되며, 해당 Step의 StepExecution & StepExecutionContext 또한 새로 생성되어. 재시작전의 StepExecutionContext 에 저장해둔 index 는 꺼내어 사용 못하는게 아닌가요..?!재시작 후에 ExecutionContext 에서 index를 가져올 수 있는 부분이 헷갈립니다ㅜ추가로 index 예제는 ItemStream 통한 복구대비를 해두어. 재시작시 오류가 발생한 Chunk의 item부터 이어서 처리할 수 있었는데요.ItemStream 없이 ItemReader 만 사용할 경우는 트랜잭션 커밋되어 반영된 Chunk 가 있어도 무시하고 처음 Chunk 부터 다시 작업을 하게되는걸까요?
-
해결됨토비의 스프링 부트 - 이해와 원리
안녕 하세요~~
강의 내용과 관련 없는 내용이기는 한데...너무 궁금한게 있어서요~~토비님은 스프링으로 실무를 하실 때 테스트를 어떻게 하시나요?컨트롤러, 서비스, 도메인 그외 등등 있을 때각자 다 테스트를 하시는지...고전파로 하시는지 런던파로 하시는지...좀 궁금합니다~~ 감사합니다
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
jpa 1:n 조인
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]일대다 관계의 테이블에서 조인을 하면 데이터가 뻥튀기 되는건 당연한건데 이걸 자바 객체 입장에선 리스트로 어차피 한번에 다 들고있으니까 뻥튀기가 될 필요가 없다고 생각하면 될까요 ? (그래서 distinct를 사용하고 )
-
해결됨넓고 얕게 외워서 컴공 전공자 되기
Stack과 heap
stack은 thread가 사용하고 heap은 process가 사용한다고 말씀하셨고 각 stack별로 용도가 다르고 heap은 공용으로 사용하는 주거 공간이라고 설명해주셨습니다.비유적으로 설명해주셔서 실제로 다른 곳에서는 어떻게 정리되어있는지 궁금해서 찾아봤는데 stack은 함수가 호출되면서 지역 변수와 매개변수가 저장되는 영역, heap은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제되는 영역이라고 설명이 되어있었습니다.(찾아본 글: https://junghyun100.github.io/%ED%9E%99-%EC%8A%A4%ED%83%9D%EC%B0%A8%EC%9D%B4%EC%A0%90/)두 가지의 설명을 어떻게 연결(?)시켜서 이해할 수 있을지 모르겠습니다.
-
미해결모바일 웹 퍼블리싱 포트폴리오 with Figma
상품디테일 하단 아코디언 질문이요~
안녕하세요. 선생님~상품디테일 하단 아코디언 진행중에 처음에 타이틀 +일때 클릭하면 -로 변경되고 디테일이 나오는데요, 다시 타이틀 -를 누르면 디테일이 사라지면서 타이틀이 +로 바뀌어야 하는거 아닐까요?클릭하면 계속 active만 추가되었다 빠졌다해서 디테일은 그대로 있고 타이틀 부분만 +, -변경되서 질문드립니다~혹시 js 이렇게 변경해서 사용해도 되는걸까요? 확인부탁드립니다~
-
미해결스프링 핵심 원리 - 기본편
getInstance()와 DIP
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]싱글톤은 DIP를 위반한다는 설명에서(기존)public MemberService memberService(){ return new MemberServiceImpl(memberserviceRepository());}(싱글톤 패턴 적용 시)public MemberService memberService(){ return MemberServiceImpl.getInstance();}에서 구체 클래스에 의존하기 때문에 DIP를 위반한다고 하셨습니다. 하지만 AppConfig에는 객체 인스턴스를 연결하기 위해 어차피 구체클래스를 사용하는데, DIP를 위반한다고 하는 이유가 뭔지 궁금합니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew.bat 파일이 안보입니다. 또한 어떻게 실행해야될지 감이안잡히네요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]gradlew.bat 위치는 인텔리제이 상에서 C:\test\hello-spring\hello-spring 있다고는 하는데 폴더에 없어요
-
미해결스프링 시큐리티
접근이 거부되었습니다. 예외가 발생합니다.
5) 웹 기반 인가처리 DB 연동 - FilterInvocationSecurityMetadataSource (2) 강의 관련 질문입니다. 참고로, 현재 SecurityConfig 파일이 파일명으로 구분해서 Ajax 인증용과 폼인증 두개 입니다.문제는 로그인까지 성공하고 /mypage 로 들어가면 접근 거부 예외가 생깁니다.'org.springframework.security.access.AccessDeniedException: 접근이 거부되었습니다.' SecurityConfig , AjaxSecurityConfig 설정파일명으로 구분했고 마지막에 설정 코드도 올렸지만 authenticationManager 같은 Bean 메서드들도 이름으로 구분했습니다. 사용자정보, 권한정보등 제대로 갖고 왔는데 어디가 잘못된건지 잘모르겠네요..혹시 시큐리티 설정파일에서 서비스 클래스 두가지를 사용해서 그런지 의심도 되고 그렇네요..private final SecurityResourceService securityResourceService;private final UserDetailsService userDetailsService; 아래에 도움이 될까 해서 디버깅화면 캡쳐해서 올렸습니다.감사합니다. AbstractSecurityInterceptor 클래스UrlFilterInvocationSecurityMetadataSource 클래스 RoleVoter 클래스ExceptionTranslationFilter 클래스FormAccessDeniedHandler 클래스AccessDeniedException 클래스 웹페이지에는 흰 배경만 나타나고 302 코드를 반환하네요.Request URL:http://localhost:8080/mypageRequest Method:GETStatus Code:302Remote Address:[::1]:8080Referrer Policy:strict-origin-when-cross-orig 시큐리티 설정파일 @Configuration@RequiredArgsConstructor@Order(1)public class SecurityConfig { @Bean public WebSecurityCustomizer configure() { return (web) -> web.ignoring().mvcMatchers( "/css/**", "/js/**", "/error" ); } private final AuthenticationConfiguration authenticationConfiguration; private final AuthenticationDetailsSource authenticationDetailsSource; private final AuthenticationSuccessHandler formAuthenticationSuccessHandler; private final AuthenticationFailureHandler formAuthenticationFailureHandler; private final SecurityResourceService securityResourceService; private final UserDetailsService userDetailsService; public PasswordEncoder passwordEncoder() { return PasswordEncoderFactories.createDelegatingPasswordEncoder(); } @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/", "/users", "user/login/**", "/login*").permitAll() .antMatchers("/mypage").hasRole("USER") .antMatchers("/messages").hasRole("MANAGER") .antMatchers("/config").hasRole("ADMIN") .anyRequest().authenticated() .and() .exceptionHandling() //.accessDeniedPage("/denied") .accessDeniedHandler(accessDeniedHandler()) .and() .addFilterBefore(customFilterSecurityInterceptor(), FilterSecurityInterceptor.class) ; http .formLogin() .loginPage("/login") .loginProcessingUrl("/login_proc") .authenticationDetailsSource(authenticationDetailsSource) .defaultSuccessUrl("/") .successHandler(formAuthenticationSuccessHandler) .failureHandler(formAuthenticationFailureHandler) .permitAll() ; //http.csrf().disable(); return http.build(); } public FormAuthenticationProvider formAuthenticationProvider() { return new FormAuthenticationProvider(userDetailsService, passwordEncoder()); } @Bean public AccessDeniedHandler accessDeniedHandler(){ FormAccessDeniedHandler accessDeniedHandler = new FormAccessDeniedHandler(); accessDeniedHandler.setErrorPage("/denied"); return accessDeniedHandler; } @Bean public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception { ProviderManager authenticationManager = (ProviderManager) authenticationConfiguration.getAuthenticationManager(); authenticationManager.getProviders().add(formAuthenticationProvider()); return authenticationManager; } @Bean public FilterSecurityInterceptor customFilterSecurityInterceptor() throws Exception { FilterSecurityInterceptor filterSecurityInterceptor = new FilterSecurityInterceptor(); filterSecurityInterceptor.setSecurityMetadataSource(urlFilterInvocationSecurityMetadataSource()); filterSecurityInterceptor.setAccessDecisionManager(affirmativeBased()); filterSecurityInterceptor.setAuthenticationManager(authenticationManager(authenticationConfiguration)); return filterSecurityInterceptor; } public AccessDecisionManager affirmativeBased() { AffirmativeBased affirmativeBased = new AffirmativeBased(getAccessDecisionVoters()); return affirmativeBased; } private List<AccessDecisionVoter<?>> getAccessDecisionVoters() { return Arrays.asList(new RoleVoter()); } /** * 자원/권한 정보를 저장하고 있는 클래스를 빈으로 생성 * @return * @throws Exception */ @Bean public FilterInvocationSecurityMetadataSource urlFilterInvocationSecurityMetadataSource() throws Exception { return new UrlFilterInvocationSecurityMetadataSource(urlResourcesMapFactoryBean().getObject()); } private UrlResourcesMapFactoryBean urlResourcesMapFactoryBean() { UrlResourcesMapFactoryBean urlResourcesMapFactoryBean = new UrlResourcesMapFactoryBean(); urlResourcesMapFactoryBean.setSecurityResourceService(securityResourceService); return urlResourcesMapFactoryBean; }}
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
테스트에서 h2 인메모리 방식 위한 라이브러리 추가
안녕하세요. 2가지가 궁금합니다.테스트에서 자동으로 h2 인메모리 방식을 사용하고 싶다면test의 dataSource등록을 하지 않고(application.properties 에 datasource 설정도 X) && @Transactional 사용 하면 되는것이죠? (@Transactional 을 넣지 않으니 로그에 h2 인메모리로 생성되지 않더라구요) 1번방식으로 사용하기 위해서는(수업처럼) build.gradle(또는 pom.xml) 에 반드시 h2 라이브러리를 추가해야 하나요? 감사합니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
인메모리 DB h2
안녕하세요 좋은 강의 감사합니다! 보통 h2 데이터베이스를 인메모리 DB라고 하잖아요?그 '인메모리' 방식이 이번 임베디드 모드 DB에서 jvm 안에 메모리 로 동작한다는 의미인가요? 그러면 이전 시간까지 ./h2.sh 로 실행을 해서 했던 방식은 서버(test.mv.db, testcase.mv.db)로 실행한 방식 맞을까요? 답변 미리 감사드립니다.
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
API 테스트로 전환하기
해당 영상 내에서 굳이 var 타입을 사용하신 이유를 알 수 있을까요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
화면에서 보이는 popitem 동작
The popitem() method removes the item that was last inserted into the dictionary. In versions before 3.7, the popitem() method removes a random item.popitem의 동작이 랜덤이었다가 버전이 올라가면서 뒤의 내용을 pop하는건 알겠습니다.다만 사용하시는 버전에 맞춰서 설명이 되면 좋을것 같네요. 화면상에서 보면 랜덤아이템을 pop하는것이 아니라 가장 마지막 데이터부터 pop이 되고있습니다.
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
콜백 함수 질문
콜백함수에서 첫번째 함수 선언했을때 나중에 그냥 sayHello()로 호출하면안되나요? 굳이 함수를 새로 만들어서 거기 인자에 콜백함수 넣고, 함수이름(sayHello)를 실행시키는 이유가 궁금해요~~
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
질문입니다.
2번 문제SELECT COUNT(POPULATION)FROM CITYWHERE DISTRICT = 'California'; SUM 이 아닌 COUNT 를 쓰게 되면 뭘 의미하게 되는 걸까요?저는 왜 SUM 과 COUNT 를 혼동할까요? 3번 문제왜 COUNT(ID) 여야 하는건가요?COUNT(DISTRICT)도 답이 될까요? 5번 문제문제에서 조건이 주어졌을 때 SELECT 절에 써야 할 지 WHERE절에 써야 할 지 헷갈립니다.MAX, ROUND 등은 SELECT 절에 주고 또 어떤 조건들은 WHERE 절에 주는데 기준이 뭘까요? 저는 SELECT POPULATIONFROM CITYWHERE MAX(POPULATUIN) - MIN(POPULATUIN); 이렇게 적어서 틀렸습니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
두 코드의 차이
강사님 안녕하세요!코드를 보다가 궁금한 점이 있어 질문드립니다.저는 아래와 같이 최소 값을 따로 배열로 걸러내서 Math.min을 사용해서 구했습니다.강사님 방식과 비교해보니 저는 배열을 하나 더 썼고 Math.min을 사용했기 때문에 제 코드가 조금 더 비효율적으로 보이는데, 저와 비슷하게 코드를 짠 분의 답글에 괜찮은 코드라고 하시더라구요!두 코드 사이의 속도나 효율성면에서는 큰 차이가 없는 것인가요? function solution(arr){ let answer = []; let sum = 0, min = 0; arr.forEach((num) => { if (num % 2 !== 0) { sum += num; // 합산하기 answer.push(num); // 홀수 걸러내기 } }) min = Math.min(...answer); answer = [sum, min]; return answer; }
-
미해결
node.js 와 express를 활용하고 jwt(jsonWebToken)을 이용한 로그아웃 방식
안녕하세요.인프랩에서 첫 질문이 될 내용입니다 ^^;;초보 코린이 입니다!저는 백엔드쪽으로 하고 있어서 백엔드에 관련된 질문을 하고자 합니다!현재 javascript로 node.js와 express를 활용하여 클론코딩을 해보고있는데요.jwt(jsonWebToken)을 이용하여 로그아웃 기능을 백엔드 관점에서 해야 할 작업이 있는지 궁금합니다.로그인을 할때 토큰을 발행해주고 그 토큰에는 만료기간(시간)을 설정해 놓았습니다.그렇다면 로그아웃을 위해서는 토큰이 만료되기 전까지는 로그인에 대한 유효가 가능할텐데 이럴때 생각해보면백엔드에서는 토큰에 대한 정보를 DB에 갖고있지 않으니 프론트엔드에서 로그아웃을 실행하면 토큰을 받아들이지 못하도록 삭제, 쿠키를 삭제하여 다시 로그인을 하게 해야하는 상황을 발생시킨다.입니다. 혹시라도 이 방법을 제외하고 다른 방법이 있는지 궁금합니다. 무엇보다 백엔드에서 할 수 있는 것이 무엇이 있는지 궁금합니다.질문에 대해서 파악해야하는 내용이 더 있다면 말씀해주시면 내용에 대해서 추가적으로 작성해보도록 하겠습니다.도와주세요~~~~~~~~~~~~
-
해결됨[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
CVAT 툴 사용
안녕하세요, 강사님.한줄기 빛처럼 따라가며 강의 잘 듣고있습니다! 정말 감사드립니다.섹션10. Ultralytics Yolo 실습 - 02에서 CVAT 툴을 소개해주셨는데강의 안에서 말씀해주신 cvat.org 페이지는 접속이 불가하던데 혹시 cvat.ai로 바뀐걸까요?