안녕하세요 강의를 보면서 따라서 실습해보려고 디버깅 보드를 구매했습니다. 그런데 STM32F429I-DISC 디버깅 보드를 컴퓨터와 연결하니 펌웨어가 하나 뜨더라고요. 배송해주기 전에 펌웨어를 서비스로 넣어준거 같은데 강의실습을 하면서 펌웨어를 동작시키다보면 다운로드 받은 펌웨어가 지워지지 않을까요? 그리고 펌웨어의 경로를 찾아봤는데 이 HEX 파일이 맞는지요? https://www.st.com/en/evaluation-tools/32f429idiscovery.html#tools-software HEX 파일은 Cube ide에서 디버깅 보드에 다운로드 탑재가 가능한가요? 저는 iar 사용자라서 ST-LINK 소프트웨어로 다운로드 탑재를 했었는데요.. 그리고 ST-LINK 디버깅 핀을 별도로 낼 수 있습니까?
redirect uri 에 관련해서, 저는 아래처럼 이해를 했어요. [ 이해한 내용] 아래 두개 redirect uri는 동일해야함. authorization code 발급시, redirect uri 헤더 access token 발급시 redirect uri 헤더 1번은 redirect 받기 위함. 2번은 1번을 검증하기 위함 [ 궁금한 점 ] 키클록에 등록하는 redirect Uri는 또 뭔가요? 깃허브나 이런 다른 provider 들에 앱을 등록할 때도 redirect uri, 혹은 callback uri 가 있던데 무슨 용도일까요?
34강 에서 'org.springframework.boot' version '3.2.1' 'io.spring.dependency-management' version '1.1.4' 위의 버전 사용시 update에서만 오류가 납니다 다른 insert, delete, select, selectAll 다 됩니다.
public ModelAndView save(HttpServletRequest request, HttpServletResponse response) { String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); Member member = new Member(username, age); memberRepository.save(member); ModelAndView mv = new ModelAndView("save-result"); //데이터를 직접 view에 전달하는방식 // mv.getModel().put("member", member); mv.addObject("member", member); return mv; } @GetMapping public String members(Model model) { List<Member> members = memberRepository.findAll(); model.addAttribute("members", members); return "members"; } } 위 2개의 코드는 결국 HandlerAdapter에 역할을 수행하여 반환값을 돌려받는 값의 차이가 있다고 생각합니다. 첫번째코드는 ModelandView로 반환이 되는거고 두번째 코드는 String으로 반환이 된다는점에서 차이가있다고 생각합니다. 여기서 제가 질문인사항이 위 2개의 코드를 호출한 코드가 각각메서드가 다르게 설정이 되어있어야 맞다고 생각합니다. viewname을 직접반환한거와 ModelView를반환한거에서 차이가있다고 생각들어 dispatcherservlet를 찾아봤는데 rendering에 대한 코드는 찾아볼수있었습니다만 저 두코드를 실행시킨 코드는 찾아볼수가 없었는지 아니면 제가 코드를 읽을수있는 능력이부족햇는지 잘모르겠습니다 저번섹션부터 코드를 하나하나 분석해보니까 저 두코드를 실행시킨 부분도 궁금해서 제 능력으로는 찾아볼수가없어서 어디부분에 있는지 알려주시면 감사하겠습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 해당 교재에는 이렇게 나와있습니다. 이때, modelView 클래스의 역할은 1.데이터(멤버)에 접근(데이터 추가,삭제 그리고 수정등) 2.View 이름(이동해야하는 url)을 전달 이렇게 이해하면 옳게 이해한 것이 맞나요?
로그인 리프레시 토큰 수업에서 오류가 발생하여 문의드립니다. 로그인을 하고 login-success 페이지로 넘어간 후 버튼클릭을 하면 ApolloError: Cannot read property '_id' of null 오류가 발생합니다. staus code는 200로 보여집니다. 문제가 어떤것인지 모르겠는데 확인부탁드려요.
요즘 웹을 구성한다고 하면, react 진영의 Next.js 라는 서버사이드 렌더링 서버를 띄우는 경우가 많은걸로 아는데요. redirect uri 를 Nextjs 서버로 보내고, Nextjs 가 code를 스프링 서버로 다시 보내는 경우 어떻게 해야하나요? - code 요청에 들어가는 redirect uri 를, 프론트 서버로 지정함. - 나중에 access token 요청시 프론트 서버로 지정함. 이게 맞나요? 이 방향이 아니라, redirect uri를 스프링 서버로 받아버리면, 스프링 서버가 나중에 프론트 서버로 리다이렉트를 시킬수도 있을거 같은데요. 두 경우 모두, 스프링 서버쪽에서 프론트의 uri를 알아야하는 문제가 있는거 같은데, 다른 방식은 없나요? (스프링 서버쪽에 커스텀 헤더로, 프론트 서버가 알려주는 방식도 가능 할거같긴한데, 좋은 방법인지 모르겠네요)
for(int i = 1; i <= 5; i++){ v.push_back({i, i}); } for(auto it : v){ cout << it.first << " : " << it.second << '\n'; } for(pair it : v){ cout << it.first << " : " << it.second << '\n'; } 1.강의교재를 보면 저렇게 3줄의 코드가 나오는데 밑에 답지를 보면 1~5까지 2번만 반복한다고 나와있습니다.3중에서 어떤 2개 코드만 실행이 된것인가요?원래 3줄다 실행이 되어야 하는것 아닌가요? 2.그리고 강의교재 코드를 그대로 복사해서 실행을 해보았는데 hello.cpp:14:28: warning: range-based for loop is a C++11 extension [-Wc++11-extensions] for (pair<int, int> it : v) 이러한 에러가 발생을 했습니다.. 어떻게 해결해야할까요>??
안녕하세요. 이번 강의 실습하다가 수업 내용처럼 preview가 업데이트 안되길래 원인을 찾다보니 아래 부분이 문제였는데요. // 강사님 코드 const url = computed(() => `/posts/${props.id}`); const { error, loading, data: post } = useAxios(url); // 제 코드 const url = ref(`/posts/${props.id}`); const { error, loading, data: post } = useAxios(url); 지금까지 진행하고 너무 기초적인 질문인 것 같긴한데 computed는 반응형으로 동작하고 ref는 동작하지 않는 이유를 잘 모르겠습니다.
안녕하세요 제로초님! 항상 강의 잘 보고 있고 질문에 답해주셔서 감사합니다! 섹션5 Next.js 서버사이드렌더링 CSS 서버사이드렌더링 강의 끝까지 진행한 수강생 입니다! 해당 강의 영상의 2분 45초에서 styled component 진짜로 서버사이드 렌더링 하려면 포스트맨에서 게시글에 대한 주소 입력 후 send를 눌렀을 때 화면에 styled component가 떠야 한다고 말씀하셨습니다! send 후 아래의 화면과 같이 뜨는데 CSS 서버사이드 렌더링이 제대로 된 게 맞는 건지 궁금합니다! ++++++ 추가 질문입니다..! <NextScript /> 위에 <script src= "https://polyfill.io/v3/polyfill.min.js? ......" /> 처럼 코드를 넣지 않아도 되나요? 아래 질문 글의 작성자님처럼 io부분을 넣지 않아도 코드가 정상적으로 작동되기에 질문 드립니다! https://www.inflearn.com/course/lecture?courseSlug=%EB%85%B8%EB%93%9C%EB%B2%84%EB%93%9C-%EB%A6%AC%EC%95%A1%ED%8A%B8-%EB%A6%AC%EB%89%B4%EC%96%BC&unitId=48856&category=questionDetail&tab=community&q=128118 ++++++++++
코딩테스트 공부하면서 항상 궁금했는데.. 강의 내용을 보면 클래스나 함수는 꼭 필요한 부분에서만 사용하시는 것 같더라구요.. 아래처럼 써도 되나요? 면접관님들은 어떻게 생각하실지 궁금합니다. public static int[] run(int[] nums) { return Arrays.stream(nums) .mapToObj(MyNumber::new) .peek(user -> user.one = Integer.bitCount(user.value)) .sorted(Comparator.comparingInt(MyNumber::one)) .mapToInt(MyNumber::value) .toArray(); } public static class MyNumber { final int value; int one; MyNumber(int value) { this.value = value; this.one = 0; } int value() { return value; } int one() { return one; } }
const store = createStore(rootReducer, middleware); 강의와 같이 위처럼 코드를 작성할 시 에러가 발생합니다. 버전은 5.0.1 버전입니다. 공식 문서에서 createStore 부분을 보면 reducer와 enhancer이외에 preloadedState라는 값이 있는데 해당 값을 넣어주니 정상적으로 작동했습니다. const preloadedState = { counter: 0, }; const store = createStore(rootReducer, preloadedState, middleware); preloadedState는 선택적으로 사용할 수 있다고 되어 있는데 왜 사용하지 않으면 에러가 발생하는지 궁금합니다. 또한 preloadedState는 store의 초기 상태를 나타내고 있다고 하는데 todos의 초기 상태를 어떻게 설정해야할지 궁금합니다. (그냥 undefined로만 적어도 상관없을까요)
제가 알고 있기론 연관관계 주인만 엔티티 수정이 가능하고 아니면 조회만 가능하다고 알고 있습니다. @OneToMany(mappedBy = "team") private List<Member> members = new ArrayList<>(); 이 코드에서 team은 member을 조회만 할수 있습니다. Team team = new Team(); team.setName("TeamA"); em.persist(team); Member member = new Member(); //역방향(주인이 아닌 방향)에서 멤버 추가 시도 team.getMembers().add(member); //실패! 그러나 cascade 또는 고아 객체 제거 옵션을 사용하면 부모 엔티티를 통해 자식 엔티티의 생명주기를 컨트롤 할 수 있다고 배웠습니다. @Entity public class Parent { @Id @GeneratedValue private Long id; @OneToMany(mappedBy = "parent", cascade = CascadeType.PERSIST) List<Child> childList = new ArrayList<>(); } Child child1 = new Child(); Child child2 = new Child(); Parent parent = new Parent(); child1.setParent(parent); //연관관계 추가 child2.setParent(parent); //연관관계 추가 parent.getChildList().add(child1); parent.getChildList().add(child2); //부모 저장, 연관된 자식들 저장 em.persist(parent); 두 개념이 서로 충돌하는것 같은데 어떻게 동작하는 것일까요?
System.out.println("FrontControllerServeltV4.service"); String requestURI = request.getRequestURI(); ControllerV4 controller = controllerV4Map.get(requestURI); if (controller == null) { response.setStatus(HttpServletResponse.SC_NOT_FOUND); return; } Map<String, String> paramMap = createParamMap(request); Map<String, Object> model = new HashMap<>(); // 추가된부분 String viewName = controller.process(paramMap, model); MyView view = viewResolver(viewName); view.render(model, request, response); } private static MyView viewResolver(String viewName) { return new MyView("/WEB-INF/views/" + viewName + ".jsp"); } private static Map<String, String> createParamMap(HttpServletRequest request) { Map<String, String> paramMap = new HashMap<>(); request.getParameterNames().asIterator() .forEachRemaining(paramName ->paramMap.put(paramName, request.getParameter(paramName))); return paramMap; } public class ModelView { private String viewName; private Map<String, Object> model = new HashMap<>(); public ModelView(String viewName) { this.viewName = viewName; } public String getViewName() { return viewName; } public void setViewName(String viewName) { this.viewName = viewName; } public Map<String, Object> getModel() { return model; } public void setModel(Map<String, Object> model) { this.model = model; } } Map<String, Object> model = new HashMap<>(); 가 언제 생성되어있는지 알고싶어서 인프런 AI답변을 봤는데 해당 내용에서 ModelView 의 model 필드는 ModelView 클래스의 생성자에서 생성되며, Map<String, String> paramMap 을 사용하여 요청 파라미터를 매핑하고 컨트롤러에 전달하는 방식에 대해 설명하고 있습니다. 이렇게 답변이 왔습니다. 저기서 호출한적이 없는거같은데 어떻게 매핑이된거죠? 두번째로, 첫번째 코드에서 Map<String, Object> model = new HashMap<>(); 부분이 두번째 코드와 똑같은 코드로작성되어있는데 다른코드맞는거같은데 왜 선언되어있는지 알수있을까요? 첫번째 질문과 두번째 질문이 많이 헷갈리네요.. 왜 같은지알수있을까요? 그리고 선언되어있는이유도요!
안녕하세요! 새해 복많이 받으십시오. 접근제어와 관련하여 강의내용 복습하며 생각해보다가 궁금한 점이 있어서 질문 남깁니다. C언어 클래스에서 private영역에 대해 접근제어에 대해 직접 부르는 것만 막는 것인지 클래스에 대한 포인터를 통해 접근제어까지 막는 것인지 또는 메모리상의 주소를 알아내서 포인터로 변수로 직접 접근하는 경우(...) 이 다음 디스포인터영상에서 였나 2번까지는 막고 있는 것을 보여주셨던 것이 기억나는데, 3번은 과연 뚫리지 않을까... 생각이 들어서 그렇습니다. 진짜로 묻고 싶은 이유는, 사실은 접근제어 라는 게 C++ 프로그래밍 문법상의 규칙으로 컴파일 타임에서 관리할 뿐, '런타임에서는 (C++에서 정해졌었던 문법이고 뭐고;)이걸 죄다 걸러내고 남은 기계어로만 돌아간다' 라고 이해해도 되는가 입니다.(CS지식이 일천한 상태에서 드리는 뇌피셜이라...^^;) 감사합니다.
Event는 커널 레벨에서 다른 쓰레드와 통신하기 위해 사용하는 것이고 (이런 점에서 IPC와 유사하다고 생각됩니다. 하지만 프로세스와 달리 쓰레드는 메모리를 공유하므로 더 효율적이겠구요...) Condition Variable은 유저 레벨에서 직접 구현하는 것이라 생각하면 굳이 OS API 및 커널의 도움을 받지 않고 조건을 체크한다는 것으로 이해하였습니다. CV에서... 일단 락 받아 조건 맞아? 조건 안 맞으면 락 풀어. 다음 기회에... 다른 thread에서 신호 줄때까지 blocked 위 처럼 설명하신 것 같은데, 이해가 가지 않는 부분이 몇 군데 있어 질문드립니다. Q1. unique_lock<mutex> lock(m) 은 생성자에서 이미 락을 잡았을텐데, 왜 cv.wait() 에서 "1) Lock을 잡고" 부분에서 다시 락을 잡는건지 궁금합니다. 100% 락을 잡았다는 보장이 없는 것인가요?? 생성자에서 락을 잡지 못하면 어차피 다음 코드 실행이 안되지 않나요? (혹은 조건을 불만족했을때 cv.wait() 에 대한 루프를 돌아야 하기 때문에 락을 다시 잡는 것인가요?) Q2. 왜 예제 코드에서는 Event 방식보다 CV 방식이 효율적이라고 하신건지 궁금합니다. 결국 CV방식에서도 Blocking된 쓰레드를 깨우려면 커널의 도움을 받아야 하는 것 아닌가요? 로직 상으로도 둘 다 바쁜 대기가 존재하지 않고 같은 순서로 동작하는 것 같은데 코드의 길이가 줄어서 효율적이라고 하신 건가요?