묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[MASTER] 만들면서 배우는 Figma UI Design
강의자료 여/부
해당 강의의 강의자료는 따로 없나요?
-
미해결스프링 핵심 원리 - 기본편
for문을 통한 Bean 출력
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의를 들으면서 Bean 이름을 출력을 하는 과정에서 for문에 forEach를 통해서 이름들을 전부 출력하는걸로 이해를 하고 있는데 Object bean의 경우 컨테이너에 있는 Bean 이름과 같은 Bean 정보를 Object 형태로 담아서 출력을 하는게 맞는걸까요 ??@Test @DisplayName("애플리케이션 빈 출력하기") void findApplicationBean(){ String[] beanDefinitionNames = ac.getBeanDefinitionNames(); // iter 자동 for문 생성 for (String beanDefinitionName : beanDefinitionNames) { BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName); // .getRole() : 스프링이 내부에서 사용하는 빈 // Role ROLE_APPLICATION : 직접 등록한 애플리케이션 빈 // Role ROLE_INFRASTRUCTURE : 스프링이 내부에서 사용하는 빈 if(beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION){ Object bean = ac.getBean(beanDefinitionName); // soutv : 변수명 출력 , soutm : 메서드명 출력 System.out.println("bean = " + beanDefinitionName + " object = " +bean); } } }
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
ORM 활용 API 구현 강의에서 다른 ERD 테이블을 쓰는데, 링크 공유 부탁드립니다.
우리가 만든건 스타벅스 ERD인데, 이것을 안쓰고중고거래 ERD를 사용하네요. 링크 공유 부탁드립니다.
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
69번 질문드립니다.
- 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다)- 이외의 문의등은 평생강의이므로 양해를 부탁드립니다- 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 12분 25초에 함수를 만들때 return이 3번 들어가도 되는건가요?마지막에 함수 끝날때만 들어가야하고 조건문에서는 else로 조건문을 닫는다던가 해야하는거 아닌지 궁금합니다.
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
companion
안녕하세요 강의 잘 보고 있습니다 다름이 아니라 4분대에 나오는 생성자를 companion 으로 바꿔주셨는데.. 이게 더 좋다라고 하시는 이유를 제가 짐작이 안가서 그런데 혹시 간략하게 알려 주실수 있으신가요..?
-
해결됨[코드캠프] 시작은 프리캠프
HTML 관련
안녕하세요 방금 막 강의 듣기 시작하여서 회원가입 페이지 만드는 실습 중입니다.vscode 설치부터 extentions까지 똑같이 다운로드 받고 강의와 동일하게 실습을 진행하였는데 파일을 열어보면 결과가 다르게 나옵니다.먼저 글씨체가 멘토님과 다르게 나오고 input박스에 테두리가 안 보입니다. 입력이 되는것을 보면 input박스가 존재하긴 하는데 테두리가 왜 안 보일까요?인코딩 역시 utf-8로 동일합니다!
-
해결됨[코드캠프] 시작은 프리캠프
제가 머리가 안좋은걸까요...
처음 배워보는 사람인데 CSS정렬까지만 보고 회원가입창을 만들 수 있는 건가요? 아무리 해봐도 안되는 것 같아서 여쭤봅니다 그리고 여기서부터 전진을 못하고있습니다 저 자식박스들을 옆으로 옮기는 방법이 무엇인가요? 각자 class마다 flex선언을 해야하나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
doFilterInternal 관련 질문있습니다.
안녕하세요. 제가 BasicAuthenticationFilter 상속받아서 doFilterInternal 메소드를 구현했는데 해당 필터의 해당 메소드는 인증이나 권한이 필요한 API를 호출했을 때만 동작을 하는 걸로 알고 있었는데 SecurityConfig에서 antMatcher에 permitAll로 지정한 경로의 API를 호출했는데 doFilterInternal 메소드가 동작하는 현상이 발생하는데 혹시 왜그런건지 궁금합니다. 해당부분에 관련된 코드는 아래와 같습니다.SecurityConfig@Configuration @EnableWebSecurity public class SecurityConfig { private final CorsConfig corsConfig; private final MemberRepository memberRepository; private final JwtProvider jwtProvider; public SecurityConfig(CorsConfig corsConfig, MemberRepository memberRepository, JwtProvider jwtProvider) { this.corsConfig = corsConfig; this.memberRepository = memberRepository; this.jwtProvider = jwtProvider; } @Bean BCryptPasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { return http .csrf().disable() .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and() .formLogin().disable() .httpBasic().disable() .apply(new MyFilters()) .and() .authorizeRequests() .antMatchers("/api/member/join").permitAll() .antMatchers("/api/member/login").permitAll() .anyRequest().authenticated() .and().build(); } public class MyFilters extends AbstractHttpConfigurer<MyFilters, HttpSecurity> { @Override public void configure(HttpSecurity builder) throws Exception { AuthenticationManager authenticationManager = builder.getSharedObject(AuthenticationManager.class); builder .addFilter(corsConfig.corsFilter()) .addFilter(new JwtAuthenticationFilter(authenticationManager, jwtProvider)) .addFilter(new JwtAuthorizationFilter(authenticationManager, memberRepository, jwtProvider)); } } } JwtAuthenticationFilterpackage com.example.shop.jwt; import com.example.shop.auth.PrincipalDetails; import com.example.shop.model.Member; import com.example.shop.repository.MemberRepository; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.io.Decoders; import io.jsonwebtoken.security.Keys; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; import javax.crypto.SecretKey; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class JwtAuthorizationFilter extends BasicAuthenticationFilter { private final MemberRepository memberRepository; private final JwtProvider jwtProvider; public JwtAuthorizationFilter(AuthenticationManager authenticationManager, MemberRepository memberRepository, JwtProvider jwtProvider) { super(authenticationManager); this.memberRepository = memberRepository; this.jwtProvider = jwtProvider; } @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { String refreshToken = jwtProvider.getRefreshTokenInCookie(request); String accessToken = ""; SecretKey jwtKey = Keys.hmacShaKeyFor(Decoders.BASE64.decode(JwtProperties.SECRET)); if (refreshToken == null) { chain.doFilter(request, response); return; } String jwtHeader = request.getHeader(JwtProperties.HEADER_STRING); Claims claims = null; try { // refreshToken 유효성 검증 jwtProvider.validRefreshToken(refreshToken); } catch (Exception e) { // refreshToken 검증 결과에 따른 예외처리 e.printStackTrace(); chain.doFilter(request, response); return; } Member member = memberRepository.findByRefreshToken(refreshToken); Long memberId = member.getId(); try { if (jwtHeader == null) { // 브라우저 새로고침 고려하여 accessToken 재발급 accessToken = jwtProvider.createAccessToken(memberId, jwtKey); response.addHeader(JwtProperties.HEADER_STRING, accessToken); } else { // 그 외의 경우 accessToken 유효성 검증 accessToken = jwtHeader.replace(JwtProperties.AUTH_TYPE, ""); claims = Jwts.parserBuilder().setSigningKey(JwtProperties.SECRET).build() .parseClaimsJws(accessToken).getBody(); } } catch (Exception e) { // accessToken 검증 결과에 따른 예외처리 e.printStackTrace(); chain.doFilter(request, response); return; } // refreshToken, accessToken 검증 이후 작업 PrincipalDetails principalDetails = new PrincipalDetails(member); Authentication authentication = new UsernamePasswordAuthenticationToken(principalDetails, null, principalDetails.getAuthorities()); SecurityContextHolder.getContext().setAuthentication(authentication); chain.doFilter(request, response); } } 특이한 점은 api/member/login 경로의 API(UsernamePasswordAuthenticationFilter의 attemptAuthentication를 상속받아 구현했습니다.)를 호출했을 때에는 doFilterInternal이 동작을 하지 않지만 api/member/join 경로의 API를 호출했을 때에는 doFilterInternal이 동작을 합니다.
-
미해결만들면서 배우는 리액트 : 기초
VSCode 테마와 글씨체 어떤 걸 쓰시는지 알고 싶습니다.
VSCode 테마와 글씨체 어떤 걸 쓰시는지 알고 싶습니다.강의 잘 듣고있습니다 :)
-
해결됨실전! Querydsl
hastext import?
hasText 를 불러올수없는데import 해줘야할것도 없는것같은데 어떻게 해결해야할까요?
-
미해결함수형 프로그래밍과 JavaScript ES6+
배열에서 몇개만 취득하는 것이 아닐 경우
안녕하세요, 강사님 :)강의내용에서 age<20, take(3) 처럼 3개만 뽑는 경우엔 지연성으로 인해 3개만 뽑고 뒤에 배열들은 탐색하지 않겠지만 age<20의 사용자를 모두 뽑는 경우엔 이렇게 지연성으로 하나 일반 map,filter를 사용하나 성능상에 차이가 없는 것이죠?
-
미해결입문자를 위한 게임 프로그래머 개론
중소기업 취업 질문..
안녕하세요 ... 스타트업을 운영하고 계신다고 하여 질문드려요.평생 작은 게임을 여러개 만드는 1인 게임 개발이 목표입니다. 당장의 생계 + 경험을 위해 다양한 게임 외주 받는 회사를 희망 하는데 역량향상에 도움이 될까요?이런 작은 회사들 중에 좋은곳을 찾으려면 면접을 여러곳 다녀서 분위기를 파악하는 방법밖에 없겠죠? (연봉은 포기 해야겠쥬 ?ㅠ)유니티 캐쥬얼로 커리어를 쌓으면 한국 주류 게임회사(중견이상의 언리얼+mmorpg) 이쪽에는 발도 못들이겠죠?지금 이 게임프로그래머 특강은 12월 31일에 폐강 되는건가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
StringToIpConverter 가 2번 호출되는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용][소스코드] @PostMapping("/converter/edit") public String converterEdit(@ModelAttribute Form form, Model model) { IpPort ipPort = form.getIpPort(); model.addAttribute("ipPort", ipPort); log.info("post request end"); return "converter-view"; } @Data @Slf4j static class Form { private IpPort ipPort; public Form(IpPort ipPort) { log.info("form create"); this.ipPort = ipPort; } } [화면]"제출" 버튼을 눌러 POST 요청을 보내면 StringToIPConverter가 2번 호출됩니다. [로그][질문]첫번째는 @ModelAttribute Form 객체를 만들때 호출하는 것으로 보이는데, 두번째는 언제 호출되는건가요?
-
미해결비전공 기획자 및 관리자를 위한 IT 필수 지식
강의 자료 요청드립니다~
안녕하세요!강의 자료 요청드립니다!syjy813@gmail.com감사합니다~!
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
plugin
안녕하세요 강의 잘 듣고 있습니다 다름이 아니라 3분 40초쯤에 나오는 플러그인 설치 전에 오류가 뜨지않는데 이런경우도 있나요..?
-
미해결초보자도 쉽게 하는 GCP
14강에 질문이 있습니다.
안녕하세요.14강 3분 30초쯤에 VM 인스턴스(gcp-pjt-share-2022-08-26)를 gcloud에서 실행한 이후 새로운 탭에서 동일한 VM 인스턴스를 실행하셨는데요.두 번째 탭에서는 server 디렉토리가 존재하지만 첫 번째 탭에서는 server 디렉토리가 존재하지 않는 이유가 무엇인가요?gcloud compute scp 명령어로 다시 옮기는 이유가 무엇인지 궁금합니다.
-
미해결ARM Cortex-M 프로세서 프로그래밍
s707 링커스크립트 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.영상 14분 55 ~ 15분 5초 질문 드립니다. - .c파일이 .o파일로 만들어질때 코드는 텍스트 세그먼트에 만들어 진다고 하셨는데 "코드"의 의미가 이해가 잘 되지 않는데요. 다른 .data .bss 등 섹션에 만들어지는 것도 코드(변수??)인데, .text파일에 만들어지는 코드는 어떤 종류의 코드인가요? .map파일에 있는 것처럼 main함수나 기타 함수 주소 + 라이브러리 주소를 "코드"라고 설명한 것인가요??영상 21분 33초heap과 stack 섹션은 ALIGN(8)정렬 햇는데 이유가 궁금합니다.(다른 영역은 ALIGN(4))감사합니다~
-
미해결애플 웹사이트 인터랙션 클론!
for문에서의 preScrollheight
강사님 너무 헷갈려서...for문에서의 prevScrollHeight가 prevScrollHeight+sceneInfo[i].scrollHeight값이 더해진 값이잖아요바로 아래에 있는 if문에서의 prevScrollHeight도 prevScrollHeight+sceneInfo[i].scrollHeight값이 더해진 값인건가요?
-
미해결Node.js로 웹 크롤링하기
Error: invalid column -1
도저히 어떤 부분이 틀린지 모르겠어서 질문 남깁니다.. 이 부분은 깃헙에 없는건가요?? C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:4095function encode_col(col) { if(col < 0) throw new Error("invalid column " + col); var s=""; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; } ^Error: invalid column -1 at encode_col (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:4095:46) at write_ws_xml_data (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:14999:52) at write_ws_xml (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:15077:11) at write_zip_xlsx (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23532:25) at write_zip (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23326:9) at write_zip_type (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23753:10) at writeSync (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23891:22) at Object.writeFileSync (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23914:9) at crawler (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\index.js:76:8) at processTicksAndRejections (node:internal/process/task_queues:96:5)C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture>
-
미해결견고한 기본기 HTML&CSS
수강완료 하였는데, 질문이 있습니다!
현재 전기직으로 공기업에 재직중인 사람입니다.과거 전기공학 이외에 컴퓨터공학을 전공했던 경험이 있어서 홈페이지 개발 외주 부업으로 수익을 창출하려는 목적이 있는 상태입니다.html,css,c,java 등등 여러 개발언어를 배웠던 경험이 있었지만 시간이지나 디테일한 부분과 노하우들이 기억이 안나 제주코이딩베이스 캠프 강의를 수강하게돼었고, 본 강의에서 기계적인 측면에서 동작하는 방식이나 노하우를 알수있게되어 아주 유익했습니다!그런데 앞으로 홈페이지로 부수입을 창출하기까지, javascript와 웹개발에대해 추가적으로 학습하고싶어서코알못에서 웹서비스 런칭까지 : 2021 제주 코딩 베이스캠프(Django)라는 강의를 신청한 상태입니다. 본강의(html&css)는 아무런 어려움없이 쉽게 수강한 편인데, 위 강의가 저에게 적합할까요? 그리고 자바스크립트와 웹개발을 위해 추가로 수강할만한 제코베의 강의를 추천해주시면 감사하겠습니다!