묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
save에서 Item을 반환하는 이유가 있을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제목 그대로 ItemRepository의 save는저장소에 저장만 하는 메서드인데 void를 쓰지 않고 Item을 반환하는 이유가 따로 있을까요??
-
미해결모던 안드로이드 - 코틀린과 Jetpack 활용
Room db kotlin 강의중에서
강사님 늘 건강하시고 부자되세요 아래 activity_main.xml 내의 요소들과 관련된 부분에서 빨간줄이 생깁니다 왜 그런지 .....
-
미해결따라하면서 배우는 고박사의 유니티 기초
2D Tilemap Editor 2:00에서요
+ -> tile을 누르라 하셨는데 어딜 찾아봐도 안보이네요 그래서 7개 중에서 뭐라도 눌러야 할까요?
-
미해결홍정모의 따라하며 배우는 C++
class 생성자 함수 오버로딩
안녕하세요. 8.5강 3:55 부근입니다. 교수님께서//아래는 Student Class의 생성자들입니다. Student(const string& name_in) //: m_id(0), m_name(name_in) : Student(0, name_in) {} Student(const int& id_in, const string& name_in) : m_id(id_in), m_name(name_in) {} ... 와 같이 Student 클래스에 생성자 두 개를 만드셨습니다. 이때, 아래와 같이 Student클래스에 대한 인스턴스가 각각 st1, st2이렇게 있는데요int main() { Student st1(0, "Jack Jack"); st1.print(); Student st2("Dash"); st2.print(); return 0; }st1는 Student st1(0, "Jack Jack"); 와 같이 (표현이 올바른지는 모르겠습니다 -->) 생성자 함수를 int와 string 두 개의 매개변수로 호출하는데, 이때, 이름이 같은 생성자 함수가 여러개 있음에도 함수 오버로딩을 통해 int와 string을 매개변수로 가지는 생성자 함수를 알아서 찾게 됨으로써Student(const int& id_in, const string& name_in) : m_id(id_in), m_name(name_in) {}의 생성자만 단독으로 호출되는 원리인가요? 감사합니다.
-
미해결데이터 분석 SQL Fundamentals
schema 설치 이상 (nw)
hr schema는 정상적으로 설치가 되고 작동하는 것 같은데,nw schema는 설치시에 오류가 뜨게 됩니다.본수업에서 했던 방식에서 nw 열었을 때, 내용이 비어 있어서 github에 올린 것으로 create schema nw 진행했습니다. 그런데 이런 오류가 발생하고 있습니다.Dbeaver를 재설치 하거나 하지는 않았고,schema를 지웠다가 다시 해도 동일한 오류가 뜨고 있습니다.(맥환경입니다.) 강의를 따라해도 되지 않고, 방법을 몰라 여쭈어 봅니다.
-
미해결스프링 부트 - 핵심 원리와 활용
executable jar 파일 만들기에 질문이있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요.fat 방식의 executable jar 방식 외에,지정된 lib 폴더로 별도 디펜던시가 있는 jar 파일을 복사가 되게하여 jar 패키징시 MANIFEST.MF 에 main class 와 class-path 를 지정된 lib 폴더 경로를 주어서 executable jar 로 만들어 주면 jar 가 자신의 내부의 jar 를 class path 로 로딩 할수 있는 것으로 생각하였습니다.강의에서 말씀해주신 내용을 보면 별도의 클래스로더가 있어야만 하는것 같아서 해당 내용 관련해서 심층있게 한번더 설명해주실수 있을까해서 질문드렸습니다.감사합니다.
-
미해결배달앱 클론코딩 [with React Native]
장소 검색 기능 구현을 하다가 난관에 봉착해, 조언을 요청드립니다.
질문 카테고리를 변경하다가 내용이 다 삭제되어 다시 질문을 올립니다ㅠㅠ우선 좋은 강의 만들어 주셔서 감사합니다!초보자임에도 불구하고 강의를 듣고 나서 앱을 만들 수 있겠다는 자신감을 얻어 앱을 만들던 중 난관에 봉착하여 질문을 드립니다. 만드려고 하는 기능은 다음과 같습니다.사용자가 장소를 검색.검색한 장소를 네이버 지도에서 마커로 표시해줌. 질문은 다음과 같습니다.장소 검색 기능을 추가하려고 합니다. 카카오 장소 검색 api를 사용하는 것이 제일 좋은 방법인지 궁금합니다.카카오 장소 검색 api는 웹뷰를 이용해야 하는 것 같은데 웹뷰 구동 방식이 제가 생각하는 방식이 맞는지 궁금합니다.reactnative에서 react 프로젝트 호출 -> react에서 카카오 장소 검색 api 호출 -> 카카오 api 응답 -> react에서 reactnative 프로젝트로 응답 전달 -> reactnative에서 응답을 받아서 사용 제가 알아본 과정은 다음과 같습니다.제로초님께서 react-native-naver-map 라이브러리는 장소 검색 기능이 없다는 것을 알게 되었습니다.장소 검색을 하기 위해서는 새로운 api를 사용해야 한 다는 것을 깨닫고, 네이버 장소 검색 api를 확인해본 결과, 네이버 장소 검색 api는 최대 5개의 결과값만 받을 수 있다는 것을 알게 되었습니다.응답을 5개만 받을 수 있다는 한계가 너무 명확하여, 대안을 찾던 도중 카카오 장소검색 api, 구글 장소 검색 api가 있는 것을 확인하였습니다.구글 장소 검색 api를 사용한 블로그 글이 꽤 있었지만 네이버 지도 + 구글 장소 검색 api 조합을 사용 할 거라면 차라리 구글 지도 + 구글 장소 검색 api 조합이 더 좋을 것 같다는 판단을 하였지만 네이버 지도를 사용하고 싶었기 때문에 최종적으로는 네이버 지도 + 카카오 api를 사용하려고 합니다.카카오 장소 검색 api를 사용하기 위해 카카오 장소 검색 안드로이드 api 공식 문서를 살펴본 결과, 내용이 자바 코드로 안내가 되어있었습니다.처음에는 자바 코드로 작성되어 있어서 어리둥절 하였지만 안드로이드는 자바 or 코틀린으로도 개발한다는 것을 알게 되었습니다. 몇몇 블로그를 살펴보니 reactnative에서 카카오 장소 검색 api를 사용할 때는 웹뷰를 사용한다는 사실을 알게 되었습니다.웹뷰를 사용한다면 리액트 프로젝트를 따로 만들고 구동해야 하는 것 같은데, 이게 최선의 방법인지 혼란스러워서 질문을 남기게 되었습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
오라클 연동되어 있는데 h2데이터베이스 설치해야될까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 인텔리제이 유료버전으로 설치해서 오라클을 연동해서 데이터베이스를 불러올수 있습니다선생님이 설치하시는 h2 로 설치해서 수업을 따라가야 할지 오라클로 진행해도 무리 없을지문의드립니다(스프링 기본편도 들을 예정입니다)유료버전과 강의의 무료버전으로 진행하는게 다른점이 있을지도 문의드립니다(유료버전 첫달 사용해보려는데 굳이 유료를 쓰는 이유가 어떤게 있을지도 알수 있을까요?저는 우선 추천받아서 결제를 진행하였습니다!)
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
오라클 연동되어 있는데 h2데이터베이스 설치해야될까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 인텔리제이 유료버전으로 설치해서 오라클을 연동해서 데이터베이스를 불러올수 있습니다선생님이 설치하시는 h2 로 설치해서 수업을 따라가야 할지 오라클로 진행해도 무리 없을지문의드립니다(스프링 기본편도 들을 예정입니다)유료버전과 강의의 무료버전으로 진행하는게 다른점이 있을지도 문의드립니다(유료버전 첫달 사용해보려는데 굳이 유료를 쓰는 이유가 어떤게 있을지도 알수 있을까요?저는 우선 추천받아서 결제를 진행하였습니다!)
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
await 관련해서 질문드릴게 있습니다!!
안녕하세요 강사님 !! ㅎㅎ 강의 재밌게 듣고 있습니다. async await 방식이 코틀린의 코루틴과 굉장히 유사하다고 생각이 되는데 그럼 다음과 같이 Promise.all 대신 await를 늦추는 방식으로 풀어써도 똑같이 동작하나요?? async createBlog() => { await Promise.all([ Blog.insertOne({...}), // 1000ms User.UpdateOne({...}) // 1000ms ]) } // 실행시간 : 1000ms // 질문코드 async createBlog() => { const blogPromise = Blog.insertOne({...}) // 1000 ms const userPromise = User.updateOne({...}) // 1000 ms A(await blogPromise, await userPromise) } // 실행시간 : 1000ms(?)
-
해결됨홍정모의 따라하며 배우는 C언어
2분 5초경 5분 37초경 질문있습니다.
5분 37초 ch = fgetc(fp);로 버퍼에 문자들을 채우고 거기서 1글자를 가져오고 for (int i = 0; i < sizeof(buffer); ++i) printf("%c", buffer[i]);printf("\n");로 버퍼에 있는 내용들을 전부 출력해보면 fgetc() 함수로 가져온 문자를 포함해모든 문자가 출력되는 걸 볼 수 있는데 제가 알기로는 버퍼에 있는 내용을 복사를 하면 복사를 한 내용이 버퍼에서는지워지는 걸로 알고 있는데 그렇다면 버퍼에서 먼저 fgetc() 함수로 가져온 문자가지워져서 버퍼의 내용들을 출력할 때 그 문자는 제외되어야 하는 것 아닌가요?제가 버퍼에 대해 잘못 이해하고 있는 건가요?
-
미해결
403 인증 토큰을 가져오지 못하고 리다이렉트 실패하는 에러.
403 에러로 고생을 겪고 있습니다. fetch에러로, 인증 문제 로그인 페이지로 리다이렉트 되야 되는데 서버에서 받지 못해 로그에는 [nio-8080-exec-7] c.e.d.security.JwtAuthenticationFilter : Received token from request: null 이렇게 뜹니다. 서버측 코드package com.example.demo.security; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AbstractAuthenticationToken; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.authority.AuthorityUtils; import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import org.springframework.web.filter.OncePerRequestFilter; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; @Slf4j @Component public class JwtAuthenticationFilter extends OncePerRequestFilter { @Autowired private TokenProvider tokenProvider; @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { try { // 요청에서 토큰 추출 및 로깅 String token = parseBearerToken(request); log.info("Received token from request: {}", token); if (token != null && !token.equalsIgnoreCase("null")) { // 토큰 검증 및 로깅 String userId = tokenProvider.validateAndGetUserId(token); log.info("Authenticated user ID: {}", userId); // 인증 완료; SecurityContextHolder에 등록 AbstractAuthenticationToken authentication = new UsernamePasswordAuthenticationToken( userId, null, AuthorityUtils.NO_AUTHORITIES ); authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); SecurityContext securityContext = SecurityContextHolder.createEmptyContext(); securityContext.setAuthentication(authentication); SecurityContextHolder.setContext(securityContext); } } catch (Exception ex) { log.error("Could not set user authentication in security context", ex); } filterChain.doFilter(request, response); } private String parseBearerToken(HttpServletRequest request) { String bearerToken = request.getHeader("Authorization"); if (StringUtils.hasText(bearerToken) && bearerToken.startsWith("Bearer ")) { return bearerToken.substring(7); } return null; } } package com.example.demo.security; import com.example.demo.model.UserEntity; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.security.Keys; import io.jsonwebtoken.SignatureAlgorithm; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.Date; import java.security.Key; @Slf4j @Service public class TokenProvider { private static final Key key = Keys.secretKeyFor(SignatureAlgorithm.HS512); public String create(UserEntity userEntity) { // 기한을 현재부터 1일로 설정 Date expiryDate = Date.from( Instant.now() .plus(1, ChronoUnit.DAYS)); // JWT Token 생성 return Jwts.builder() // header에 들어갈 내용 및 서명을 하기 위한 시크릿 키 .signWith(key) // payload에 들어갈 내용 .setSubject(userEntity.getId()) // sub .setIssuer("demo app") // iss .setIssuedAt(new Date()) // iat .setExpiration(expiryDate) // exp .compact(); } public String validateAndGetUserId(String token) { // parseClaimsJws 메서드가 Base64로 디코딩 및 파싱. // 즉, 헤더와 페이로드를 setSigningKey로 넘어온 시크릿을 이용해 서명 후, token의 서명과 비교. // 위조되지 않았다면 페이로드(Claims) 리턴 // 그 중 우리는 userId가 필요하므로 getBody를 부른다. Claims claims = Jwts.parserBuilder() .setSigningKey(key) .build() .parseClaimsJws(token) .getBody(); return claims.getSubject(); } } package com.example.demo.config; import com.example.demo.security.JwtAuthenticationFilter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpMethod; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.web.SecurityFilterChain; import org.springframework.web.filter.CorsFilter; import org.springframework.web.cors.CorsConfiguration; @EnableWebSecurity @Slf4j @Configuration public class WebSecurityConfig { @Autowired private JwtAuthenticationFilter jwtAuthenticationFilter; @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .cors(cors -> cors.configurationSource(request -> { CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); config.addAllowedOriginPattern("http://localhost:3000"); // 변경된 부분 config.addAllowedHeader("*"); config.addAllowedMethod("*"); return config; }))// CORS 설정 .csrf(csrf -> csrf.disable()) // CSRF 설정 비활성화 .httpBasic(httpBasic -> httpBasic.disable()) // HTTP Basic 인증 비활성화 .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) // 세션 관리 설정 .authorizeHttpRequests((authorizeRequests) -> authorizeRequests .requestMatchers("/", "/auth/**","/login").permitAll() .anyRequest().authenticated() ) .addFilterAfter(jwtAuthenticationFilter, CorsFilter.class); return http.build(); } } 프론트엔드 측 코드 // ApiService.js import { API_BASE_URL, ACCESS_TOKEN } from "../app-config"; export function call(api, method, request) { let headers = new Headers({ "Content-Type": "application/json", }); const accessToken = localStorage.getItem(ACCESS_TOKEN); if (accessToken && accessToken !== null) { headers.append("Authorization", "Bearer " + accessToken); } let options = { headers: headers, url: API_BASE_URL + api, method: method, }; if (request) { options.body = JSON.stringify(request); } return fetch(options.url, options) .then((response) => { if (!response.ok) { throw new Error(response.status); } return response.json(); }) .catch((error) => { console.log(error); if (error.message === "403") { window.location.href = "/login"; } return Promise.reject(error); }); } export function signin(userDTO) { return call("/auth/signin", "POST", userDTO).then((response) => { if (response.token) { localStorage.setItem(ACCESS_TOKEN, response.token); window.location.href = "/"; } }); } export function signout() { localStorage.setItem(ACCESS_TOKEN, null); window.location.href = "/login"; } export function signup(userDTO) { return call("/auth/signup", "POST", userDTO); } 프론트엔드에서 토큰을 생성하고 서버와 통신하는데, 403에러로 인증이 되지 않은 사용자는 login 페이지로 가는 것인데 처음부터 로그인 페이지가 뜨질 않습니다.
-
해결됨Flutter로 SNS 앱 만들기
섹션6 갤러리에서 여러개의 이미지 선택에서 비동기동작
body: Container( alignment: Alignment.topCenter, padding: const EdgeInsets.symmetric(vertical: 15, horizontal: 15), child: InkWell( onTap: () { selectImages(); }, child: Container( width: 80, height: 80,selectImages(); 여기에서 비동기로 동작한다고 했는데 왜 비동기 동작인지요?
-
미해결배달앱 클론코딩 [with React Native]
장소 검색 기능 구현을 하다가 난관에 봉착해, 조언을 요청드립니다.
[제로초 강좌 질문 필독 사항입니다]질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.도움이 되는 질문을 하는 방법을 알려드립니다.https://www.youtube.com/watch?v=PUKOWrOuC0c0. 숫자 0부터 시작한 이유는 1보다 더 중요한 것이기 때문입니다. 에러가 났을 때 해결을 하는 게 중요한 게 아닙니다. 왜 여러분은 해결을 못 하고 저는 해결을 하는지, 어디서 힌트를 얻은 것이고 어떻게 해결한 건지 그걸 알아가셔야 합니다. 그렇지 못한 질문은 무의미한 질문입니다.1. 에러 메시지를 올리기 전에 반드시 스스로 번역을 해야 합니다. 번역기 요즘 잘 되어 있습니다. 에러 메시지가 에러 해결 단서의 90%를 차지합니다. 한글로 번역만 해도 대부분 풀립니다. 그냥 에러메시지를 올리고(심지어 안 올리는 분도 있습니다. 저는 독심술사가 아닙니다) 해결해달라고 하시면 아무런 도움이 안 됩니다.2. 에러 메시지를 잘라서 올리지 않아야 합니다. 입문자일수록 에러메시지에서 어떤 부분이 가장 중요한 부분인지 모르실 겁니다. 그러니 통째로 올리셔야 합니다.3. 코드도 같이 올려주세요. 다만 코드 전체를 다 올리거나, 깃헙 주소만 띡 던지지는 마세요. 여러분이 "가장" 의심스럽다고 생각하는 코드를 올려주세요.4. 이 강좌를 바탕으로 여러분이 응용을 해보다가 막히는 부분, 여러 개의 선택지 중에서 조언이 필요한 부분, 제 경험이 궁금한 부분에 대한 질문은 대환영입니다. 다만 여러분의 회사 일은 질문하지 마세요.5. 강좌 하나 끝날 때마다 남의 질문들을 읽어보세요. 여러분이 곧 만나게 될 에러들입니다.6. 위에 적은 내용을 명심하지 않으시면 백날 강좌를 봐도(제 강좌가 아니더라도) 실력이 늘지 않고 그냥 코딩쇼 관람 및 한컴타자연습을 한 셈이 될 겁니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
delete 오류
안녕하세요 트랜잭션 적용1 강의 10분 40초 정도에서 쿼리로 delete from member를 적었는데 Timeout trying to lock table "MEMBER"; SQL statement:delete from member [50200-224] HYT00/50200 (도움말) 이러한 오류가 떠서요 어떻게 하면 될까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
제 풀이와 답지 풀이가 다른 것에 대한 회고
제 풀이는 다음과 같습니다. 저는 h높이를 100까지 안가고 최대값까지만 고려하였고 ret 도 0으로 초기화하고 h--로 풀었습니다.http://boj.kr/2607607c3851456ea3ccd3544dc3044d이렇게 풀고 큰돌님 답지를 봤는데 높이에 대한 반복문 풀이가 달라서 이걸 어떻게 받아들이고 넘어가야 할지 몰라서 질문글을 올렸습니다.“다음에는 while문말고 답지처럼 for문으로 풀어야지” 라고 생각하고 넘어갈지 아님 “그냥 이렇게도 풀 수 있구나?” 라고 생각하고 다음에는 for이든 while이든 생각나는대로 풀면 될까요?정답이란 게 없긴 하지만 뭔가 정석대로 안풀면 안될거 같아서 이렇게 질문을 올립니다.
-
미해결스프링 핵심 원리 - 기본편
실제로 수정자 주입시 누락문제를 경험하는 일이 있나요?
[질문 내용]여기에 질문 내용을 남겨주세요. 수정자 주입을 선택한 경우 4:38에 NPE가 나는 이유는 이해했습니다비록 @Autowired이 달려있지만 ac.getBean으로 획득한 orderService가 아니기 때문에 의존관계 주입이 일어나지 않았고 따라서 NPE가 발생한 것인데요그런데 실제로는 스프링을 사용할 것이고 따라서 orderService를 스프링 컨테이너가 관리하는 스프링 빈으로 사용을 할텐데 이 경우에는 @Autowired가 의존관계 주입을 알아서 다 해주니까수정자 주입의 경우에 누락문제를 걱정할 필요가 없는것 아닌가요?실제로 순수 자바코드를 사용해서 개발하는 경우가 있기 때문에 해당 예제를 보여주신것인지 궁금합니다
-
미해결모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1
mysql 연결연산자 질문드립니다.
안녕하세요.이전에 강사님이 써주신 답변을 통해,mysql에서의 공백은 사실 공식적으로는 연결 연산자는 아니며 구문을 구분해주는 역할을 하는 것이라고 참고하였습니다. [실습4-1] 환경 분석 실습에서 위와 같이 %2b를 통해,MSSQL의 연결 연산자인 +를 테스트해보았는데 결과가 잘 출력됩니다.-> 실행 페이로드 : ?idx=13+and+'test'='te'%2b'st'이런 경우 연결 연산자로 판단하는 관점에서는 mysql과 MSSQL을 혼동할 여지가 있는 것 같은데,True로 쿼리가 실행되는 이유가 궁금합니다.항상 좋은 강의 감사합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
portfolio review 코드 말고 수업 예제 코드는 없을까요?
컴퓨터를 교체해서 앞에 수업했던 파일들이 다 날아갔는데 강의 뒷부분에서 재활용 되는 경우가 있더라구요.. 깃허브에는 포폴용 과제만 샘플 코드가 제공되는 것 같아서 혹시 수업 파일도 올려주실 수 있으실까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
9:52초 테이블 생성 부분 질문드립니다.
ORDERS 테이블의 ORDER_ID 컬럼은 만들지 않으신 것 같은데 혹시 이 부분 생략하신건가요?