안녕하세요. 배포 후 SEO 확인 과정에서 이해되지 않는 부분이 있어 질문드립니다. [id].tsx 에서 동적 라우팅을 처리할 때, getStaticPaths 를 통해 id=1,2,3 에 해당하는 페이지는 빌드 시점에 SSG로 사전 렌더링되도록 설정하였고, 나머지 ID에 대해서는 fallback: true 를 사용해 첫 요청 시 SSR처럼 처리되는 것으로 이해했습니다. 또한 강의에서 router.isFallback 이 true 일 경우, SEO를 고려하여 <Head> 에 별도의 메타 정보를 넣어주는 분기 처리를 하신 것으로 알고 있습니다. 저는 이 분기 처리가 필요한 이유가, 해당 시점에는 실제 데이터가 포함된 HTML이 아직 완성되지 않았기 때문에 SEO 검사 도구나 크롤러에 최소한의 메타 정보를 제공하려는 의도라고 이해했습니다. 하지만 실제 배포된 결과를 확인해보니, id=1,2,3 외의 fallback으로 생성된 페이지들조차도 og:image 등 메타 정보가 정상적으로 노출되고 SNS 공유 시에도 커버 이미지가 잘 보이고 있습니다. 이런 경우, fallback으로 생성된 SSR 페이지임에도 불구하고 og 태그가 잘 노출되는 이유는 무엇인지 궁금합니다. SEO 관점에서 이런 동작이 가능한 이유가 있다면 설명 부탁드립니다.
BufferedInputStream에서 read() 를 호출하면 buf 라는 버퍼에 있는 것을 1바이트씩 꺼내어 조회한다고 하는데, 그렇다면 처음에 FileInputStream에서 하나씩 read() 하는 것이랑 결국 호출 횟수는 같으니 똑같은 것 아닌가? 하는 생각이 들었습니다. 그러니까 버퍼에 데이터 100바이트를 FileInputStream에서 한번에 들고와도 결국 바깥에서는 1바이트씩 꺼낸다고하니 뭐가 다른건가 궁금해졌습니다. 강의에서 버퍼에 데이터가 채워져있으면 FileInputStream의 read()를 호출하지 않고 바로 버퍼에서 꺼내준다고 하셨는데요, 여기서 버퍼에 한번에 많이 가져옴으로서 FileInputStream의 read() 를 적게 호출하게 되기 때문에 이에 따라 시스템콜도 적게 호출되므로 성능이 증가하는건가요? 앞의 강의에서 FileInputStream과 FileOutputStream의 read(),write()의 횟수를 줄여야 성능이 증가한다고 하셨으니까요. 그래서 BufferedInputStream의 read()로 1바이트씩 꺼내는건 성능에 큰 지장이 없는 것인가요?
강의명 : 파일 입출력과 성능 최적화4 - Buffered 스트림 읽기 강의 위치: 1분 22초 오타 위치: 2. IO 기본1.pdf 26페이지 최하단 오타 내용 : Buffered Output Stream 분석 -> Buffered Input Stream 분석 해당 부분의 강의는 BufferedInputStream 에 대한 내용이므로 BufferedInputStream 분석 이 되어야하지 않나 싶습니다. 감사합니다
쉽게 이해할 수 있게 설명해주셔서 강의 잘 봤습니다. 👍 강의 후반부(39. 문서와 코드 다듬기)에 MemberRepository에 @Query를 사용하면서 JPA 종속성이 추가되었는데 이 부분에 대해서 언급 없이 2가지 조인 방식과 관련하여 설명하고 넘어갔습니다. 강의 중반부(23. 회원 애플리케이션의 포트 정의)의 MemberRepository 설명과 같이 spring-data-commons의 Repository라는 마커 인터페이스를 사용하는 것은 동의하나 application layer에 기술 종속성이 추가된 내용 관련하여 부가 설명 요청 드려도 될까요? 물론 다음 강의에 해당 설명이 있을것으로 생각되지만.. MemberQueryRepository로 분리하고 adapter layer에서 구현하는 방향이 더 좋아보이는데 개선 방향도 같이 부탁드립니다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] 이러한 오류가 뜨는데 어떻게 해결해야 할지 잘 모르겠습니다 ㅠㅠ application.yml 코드는 다음과 같습니다 spring: datasource: url: "jdbc:mysql://localhost/library" username: "root" password: "" driver-class-name: com.mysql.cj.jdbc.Driver
강의 잘 보고 있다. 잘 정리된 자료 덕분에 배치 작업을 이해하고 있는 중이다. 다만 설명 중 이해 안되는 부분이 존재한다. 바로 이 부분 멱등하지 않은 ItemProcessor 를 내결함성(FaultTolerance) 기능 과 함께 사용해야 하는 상황이라면, 반드시 processorNonTransactional 를 설정하도록 하자. 오히려 멱등하지 않은 ItemProecessor의 경우에는 이 설정을 비활성화 해야 하는 거 아닌가? 나의 부족한 영어실력과 GPT를 통해 스프링 배치는 ItemProcessor가 트랜잭션이나 멱등성을 가져야 한다고 되어 있는 것으로 이해하였다. It must be either transactional or idempotent. 출처: https://docs.spring.io/spring-batch/reference/transaction-appendix.html 떠라서 멱등하지 않은 ItemProcessor는 processorNonTransactional()을 지양해야 하는 것으로 나는 이해된다... 답변 부탁한다. (존대로 질문하면 rm -rf 하신다길래 이렇게 남겨요 ㅎㅎ..)
안녕하세요 vite를 설치해서 리액트를 잘 사용하다가 최근 vite를 설치하고 npm run dev로 실행을 하니 아래 이미지와 같은 에러가 계속 나더라구요. 찾아보니 버전과 관련이 되어 있는거 같은데 아무리 찾아봐도 해결이 되지 않더라구요. 현재 vite는 사용하지 못하는건가요?
[질문 내용] 처음 문제를 풀떄 Card 클래스에 compareTo 오버라이딩을 @Override public int compareTo(Card o) { if(number != o.getNumber()){ return this.number - o.number; } return shape.compareTo(o.getShape()); } 위 코드처럼 작성했는데 숫자가 낮은 카드 먼저 안 나올때가 있는데 잘못 작성한걸까요?
안녕하세요 문제1번 관련 문의 사항이 있어 글 남깁니다. 1번에 getCount는 synchroinized 하는 이유가 뭔가요? 중간에 호출되는 부분이 없는 것 같고, t1.join() t2.join() 으로 마지막 출력할때도,,, synchroinized이게 안필요하다는 생각이 들어서요 제가 이해를 잘못한건지 문의드립니다.
npm init vite@5.2.3 를 통해 설치 후 npm i를 통해 필요한 라이브러리를 다운 받을시에, 터미널 창을 통해 각종 경고 안내가 나옵니다. 예를 들어 하나만 보여드리자면, npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported 입니다. 이처럼 온갖 라이브러리들이 '더 이상 지원하지 않는 버전임'을 명시하고 있는데, 최신 버전을 사용해서 수업을 따라가야 하나요, 아니면 '더이상 지원하지 않는 버전'의 라이브러리를 사용해서 코드를 짜도 이상이 없을까요? 안내해주신 것처럼 라이브러리 버전을 맞춰서 수업을 따라가고 싶은데, 터미널에서 이러한 경고를 보여주니, 버전을 맞출시에 '지원하지 않는 버전'문제로 인한 추가적인 오류가 생길까 걱정됩니다. 요약 1.터미널에서 말하는 '더 이상 지원하지 않는 버전' 안내를 무시하고, 짐코딩님 강의의 라이브러리 버전을 사용해도 문제가 없을까요? 2.최신 버전을 사용하고, 달라진 문법등의 오류를 감당하는게 나을까요? 2번 질문의 문제에 대한 기술적인 지원을, 짐코딩님을 통해 받을 수 있을까요?