안녕하세요. 강사님 완강하고 코드 복습하다가 context 관련해서 헷갈리는 점이 생겨서 질문드립니다.! 이전에 간단한 일기장 만들기에서는 state를 핸들링하는 함수들(onCreate, onRemove, onEdit)을 전달하는 DispatchContext에 value Props으로 이 함수들을 넘겨줄 때, useMemo를 사용해서 함수들을 감싼 메모이제이션된 객체를 넘겨줘서 state가 바껴서 App 컴포넌트가 재랜더링되어도 최적화가 풀리지 않도록 했던 걸로 기억합니다. 이번 감정 일기장에서는 DispatchContext의 value Props로 함수들을 넘겨주실 때 함수를 담은 객체를 메모이져이션하지 않고 넘겨주셨습니다. 1) 이 경우, App에서 data state가 바뀌면 결국 onCreate, onRemove, onEdit 함수가 재생성되고 DispatchContext의 value로 넘겨주는 객체도 재생성되어 Context컴포넌트의 하위 컴포넌트(최적화 안한)도 재랜더링되는게 맞나요? 2) 감정일기장에서 이 부분은 최적화 안한 것은 이번에는 그냥 간단하게 진행하시려고 해서 그런건가요?
커넥션 풀에서 커넥션을 조회할 때 HikariProxyConnection 객체로 커넥션을 wrapping해서 조회한다는 것은 알겠습니다. 여기에서 wrapping되는 커넥션은 (H2 DB를 사용하는 경우) JdbcConnection 객체, (MySQL DB를 사용하는 경우) MySqlConnection 객체를 의미하는 것이 맞을까요? 그니까 JDBC 드라이버가 DB와 커넥션을 맺은 후 반환하는 Connection 객체를 의미하는 것이 맞을까요? 찾아보니 HikariProxyConnection이 Connection 인터페이스를 구현하고 있어 헷갈려서 질문드리게 되었습니다.
설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
수업자료를 마이크로소프트 원드라이브에서 txt상의 키를 이용해 다운을 받았는데 받은 zip이 비어있다고 나옵니다. 압축해제를 진행하려고 해도 invalid하다고 하네요. ================= 현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ) 강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등) 이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요) 개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등.. 글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.) 서로 예의를 지키며 존중하는 문화를 만들어가요. 질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! ) 먼저 유사한 질문이 있었는지 검색해보세요. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. ==================
안녕하세요~ 양방향 매핑을 사용하면 엔티티 간의 결합도를 높이기 때문에 가급적 단방향으로 만들면 좋다는 의견도 많은 것 같더라구요. 심지어는 양방향 매핑을 만들어야 한다면 엔티티가 아니라 id 값을 넣어서 참조를 하는게 더 좋다는 의견도 있구요. 강의에서는 양방향 매핑을 사용하셨는데 실무에서도 자주 양방향 매핑으로 설계하시나요? 사용하신다면 이러한 단점이 있지만 편의성이 더 크기 때문인가요?
안녕하세요 큰돌님~! http://boj.kr/314427359c31448dab02e36c370858d2 위 코드에서 9번째 if문만 빼면 통과는 되었습니다. 하지만 시간이 좀 오래 걸리는 것 같아서 생각한 것이 어차피 string s의 최대 size는 26이니까(모두 다른 알파벳이 다 들어갔다는 가정) 정답 변수인 ret이 26일 경우 항상 dfs 함수를 종료시키는 조건문을 넣었는데요 위 조건식만 넣으면 out of range 에러가 나는데 이유가 무엇일까요...?
https://www.inflearn.com/questions/810394/%EC%9D%B8%EC%A6%9D%EC%9A%94%EC%B2%AD%EC%8B%9C-%EB%AC%B8%EC%9D%98%EB%93%9C%EB%A6%BD%EB%8B%88%EB%8B%A4 호돌맨님 강의 정말 잘 듣고 있습니다. 다름이 아니라 저도 이 질문과 같은 의문이 생겼는데 해답을 찾지 못해 질문드립니다. 추가적으로 accessToken이 eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwiaWF0IjoxNjgzMzQwODAzfQ.4c7pfgz689iJdKBrInNP4QBf7YLc-bW_FVkb0JNHvk 라고 했을 때 맨뒤 k를 다른 알파벳으로 바꿔도 정상적으로 요청이 되는 경우가 있던데 이 이유도 잘 모르겠습니다.. 알려주시면 감사하겠습니다 !!
제가 이해한 바가 맞는지 궁금해서 질문드립니다. 내 라우터에서 네이버 라우터의 MAC주소를 알기 위해서 인터넷을 통해 옆 사람에게 묻는 방식으로 네이버 IP가 있는 곳까지 가서 MAC주소를 얻어온다. 이렇게 이해하는 것이 맞을까요? 6분 대에 설명하신 것에 라우팅 테이블이 네이버 라우터의 IP를 찾아온다고 하셨습니다. 그런데 네이버 IP는 맨 처음부터 알고 있으니까 MAC주소를 얻어오는 것이 맞는 것 같은데 어떻게 이해하면 좋을까요? 감사합니다.
안녕하세요!! 강의 잘 듣고 있습니다 :) 다름이 아니라 강의에서는 저렇게 . 찍고나서 팝업창이 뜨는데 저는 저 title 칠때 뜨질 않거든요,,,뜨게 하고싶은데 어떻게 할 수 있을까요?? 기본내장 함수? 사용할땐 뜨는데... 강의에선 저 .title 하면 인식되어서 하늘색 으로 변하는데 openpyxl에서 .찍고 나오는 명령어는 다 뜨질 않네요ㅠ ws.save , ws.append , ws.iter_rows 라든지 그런거요 ㅠ 저는 그대로 흰색으로 되거든요, 물론 작성 후 실행은 되는데, 작성 중에 팝업창 뜨는게 초보자한텐 도움이 되니까 뜨게 하고 싶습니다! 감사합니다!
101동 아파트를 생각한다고 했을 때 각 세대마다 기기들(컴퓨터 등)의 MAC주소가 있는데 이런 MAC주소들이 스위치에 모이게되고 스위치도 MAC주소를 가지고 있다. 101동 아파트 전체의 스위치들이 하나의 라우터에 모이고 스위치들이 모인 라우터를 네트워크라고 부르며 IP주소를 가지고 있다. 여기까지 제가 이해한 내용이 맞나요? 그렇다면 101동 주민들의 네트워크 IP주소는 모두 똑같다는 말인가요?
<ipython-input-25-475204a37c2b>:2: FutureWarning: The default value of numeric_only in DataFrame.corr is deprecated. In a future version, it will default to False. Select only valid columns or specify the value of numeric_only to silence this warning. X_train.corr() 워닝이 뜨는데 어떻게 해결해야 하는걸까요....
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. flush() 메소드에 대해서 테스트를 하다가 이상한 점이 있어 질문을 드립니다. 강의 내용을 보면 플래시 과정은 "영속성 컨텍스트의 변경내용을 데이터베이스에 반영" 이라고 알려주셨는데요. 디버깅을 통해서 살펴보니 flush() 호출시 로그에 쿼리는 잘 찍혀 보이지만 데이터베이스에 persist() 한 생성한 데이터는 h2에서 보이지 않습니다. public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { Member member = new Member(); member.setId(200L); member.setName("member200"); em.persist(member); em.flush(); tx.commit(); } catch (Exception e) { e.printStackTrace(); tx.rollback(); } finally { em.close(); } emf.close(); } } 위 코드에서 tx.commit(); 시점에 브레이크포인터를 삽입하고 살펴보면 em.flush() 는 호출되었기 때문에 h2에 있어야 하지만 실제 h2에서는 데이터가 보이지 않습니다. hibernate.hbm2ddl.auto 는 auto 로 설정하였습니다. 확인 부탁드려도 될까요? 프로젝트 링크도 같이 전달 드립니다. https://drive.google.com/file/d/1mYBW0jItuLrV_jPEEYACtFEJ4Cf3Bh3V/view?usp=share_link 감사드립니다.
jpa 강의들을 보다보면 entity 간에 양방향 연관관계를 설정한 경우 위처럼 changeTeam 메소드를 추가 해주셨는데요. this.team = team; 의 경우 외래키(연관관계 주인) 이기 때문에 필요한 것은 이해를 했습니다. 그런데 team.getMembers().add(this); 부분의 경우 기존에 member 테이블에 값들이 존재하고, 신규 회원이 새로운 트랜잭션에서 join 로직을 실행했을때, 해당 로직에서 생성된 team.members에는 기존의 member 값들은 add 되어있지 않은 상태일텐데, team.members를 제대로 사용이 가능한가 해서 질문드립니다. 제 생각에는 team.members를 정상적으로(?) 사용하려면 team과 member를 join 으로 가져 온뒤에 사용이 가능할 것 같습니다. list에 add 하는것만으로는 query가 발생하는게 아닌것으로 알고있습니다. 제가 이해를 잘 못 하고 있는 부분이 있는걸까요? 아니면 단순히 편의성 메소드의 예시로 작성을 하시는건지 궁금합니다.
특정 게시글의 코멘트 리스트를 조회하는 화면 에서 뒤로 가기 를 하거나 글 목록 보기 를 하면 이전 화면으로 잘 이동합니다. 그러나 코멘트 리스트 조회 화면(게시글 상세조회) 에서 보기모드(모두/좋아요/내글) 를 클릭해도 화면에 아무 변화가 없습니다. (API는 정상적으로 요청) 그래서 ArticleHeader 컴포넌트 에서 onChangeMode 메소드 를 다음과 같이 수정하여 정상적으로 동작하는 것을 확인했습니다. [변경 전] const onChangeMode = (mode) => { if ($articlesMode !== mode) articlesMode.changeMode(mode); }; [변경 후] const onChangeMode = (mode) => { if ($articlesMode !== mode) { articlesMode.changeMode(mode); router.goto("/articles"); } }; 위와 같이 수정한 것이 올바른 방법이 맞을까요?
노션에 있는 글 순서따라 했는데 아래 사진 단계에서 계속 멈춰있어서 질문드립니다. (제가 손을 댄 부분이 2군데 있는데 아래에서 말씀드리겠습니다.) 용량이 그리 크지 않은 파일인데 배포에 30분이상 걸린다는건 분명히 문제가 있는 것 같아서요 별도의 에러 로그가 나오지도 않는 상황이라 이유를 알 수도 없습니다. [변경한 부분] 명령어 수정 --> -N 옵션 다음에 ""로 명령어를 입력해도 아무 반응이 없어서 " " 로 수정 후 ssh key 생성 ssh-keygen -t rsa -b 4096 -C "$(git config user.email )" -f gh-pages -N "" ssh-keygen -t rsa -b 4096 -C "$(git config user.email )" -f gh-pages -N " " deploy.yml 파일에서 branches: [ main ] / branches: [ main ] 를 main에서 master로 변경 --> git branch 명령어로 현재 브랜치명을 확인해보니 master로 나와있어 수정 했습니다. cf) 위의 사진 상태에서 Cancel workflow 해보니 아래와 같은 메세지가 나왔습니다.
user7@user7.com 이라는 계정을 만들어서, 총 3개의 게시물에 좋아요를 클릭 하였습니다. 아래 스크린샷을 보면 알 수 있듯이, user1이 작성한 게시물 2개 에 좋아요를 클릭했고 나머지 1개는 user7이 작성한 게시물 에 좋아요를 클릭했습니다. 그러면 좋아요 보기 를 클릭하면, 3개의 게시물만 화면에 나와야하고 user1이 작성한 게시물 2개 user7이 작성한 게시물이 1개 나와야 합니다. 그러나 아래 스크린샷을 보면, 좋아요를 클릭한 게시물의 작성자가 모두 user7 인 것을 볼 수 있습니다. 확인을 해보니 백엔드 API(GET /likes) 에서 날리는 쿼리에 문제가 있었습니다. likeArticles = await db.like.findMany({ where: { userId: userId, }, include: { article: { select: { id: true, content: true, commentCount: true, likeCount: true, createdAt: true, }, }, user: { select: { id: true, name: true, email: true, }, }, }, orderBy: { id: "desc", }, skip: skip, take: pageSize, }); 위에서 user를 조인하여 정보를 가져오는데 해당 user는 article 작성자가 아니라 좋아요를 클릭한 사용자의 정보 입니다. 그러므로 아래와 같이 article의 작성자 정보를 가져오도록 aritcle 내부에 user를 추가 해줘야 합니다. likeArticles = await db.like.findMany({ where: { userId: userId, }, include: { article: { select: { id: true, content: true, commentCount: true, likeCount: true, createdAt: true, user: true, }, }, }, orderBy: { id: "desc", }, skip: skip, take: pageSize, }); 그리고 가져온 정보를 평탄화하는 로직에서 userId , userName , userEmail 부분을 수정해줘야 합니다. flattenArticles = likeArticles.map((article) => { let newArticle = { id: article.article.id, content: article.article.content, commentCount: article.article.commentCount, likeCount: article.article.likeCount, createdAt: article.article.createdAt, userId: article.article.user.id, userName: article.article.user.name, userEmail: article.article.user.email, likeMe: true, }; return newArticle; }); 그럼 다음과 같이 정상적인 결과를 가져올 수 있습니다.