안녕하세요. 현재 Node.js를 학습한 뒤 NestJS를 공부하고 있습니다. 부족한 CS 지식과 Node.js의 내부 동작 원리를 보완할 수 있을 것 같아 강의를 수강하고 있는데, NestJS 학습과 개인 프로젝트를 병행하다 보니 강의를 모두 시청하는 데 많은 시간을 투자하기가 어려운 상황입니다. 그래서 가능하다면 강의 노트를 중심으로 학습하여 시간을 조금 더 효율적으로 활용하고 싶습니다. 혹시 강의 노트만으로도 핵심 내용을 충분히 습득할 수 있을까요? 아니면 영상 강의를 통해서만 얻을 수 있는 중요한 설명이나 실무적인 인사이트가 많은 편인지 궁금합니다. 만약 강의에서만 얻을 수 있는 내용이 많다면 시간을 조금 더 내서라도 영상을 함께 수강하려고 합니다. 의견 부탁드립니다.
강의 2강에 대한 노트에 대한 질문입니다. 💡 [CS 및 실무 적용 Point: MSA와 BFF 아키텍처] 현대의 마이크로서비스 아키텍처(MSA)에서 Node.js는 특히 BFF(Backend For Frontend) 패턴의 핵심 기술로 사용됩니다. 브라우저의 DOM을 다루던 언어적 특성을 살려 클라이언트(React, Vue 등)의 요청을 쉽게 파싱하고, 이식된 운영체제 제어 능력(http, fs)을 통해 백엔드의 여러 마이크로서비스(Java, Python 등)로 비동기 네트워크 요청을 뿌린 뒤, 그 결과를 모아 빠르게 클라이언트에게 반환하는 완벽한 미들웨어 역할을 수행합니다. 해당 설명에서 BFF로 NodeJs를 유용한 이유는 I/O 입출력 특출나기 때문에, BFF로 사용하면, API 요청을 받아서 마이크로 서비스에 통신 요청을 보내는 용도로 사용한다는 건가요? 한번 더 거쳐가면 더 성능이 안 좋은 거 아닌가요? 아니면 원래 SpringBoot로 개발되었던 웹 사이트를 NodeJs로 구현한다면 더 좋다는 의미일까요?
"AI 딸깍의 시대" 원리로 돌파하는 Node.js와 CS Part 2 - 스트림 아키텍처와 하드웨어 통제기
// 3. 작업 종료 알림: end 이벤트를 통해 댐 바닥 확인 streamRead.on("end", async () => { console.log("\\n✅ [종료] 댐 바닥 도착. 모든 데이터 복사 완료!"); // 메서드: 더 보낼 물이 없다고 선언하고 파이프 닫기 절차 진입 // finish 이벤트: 쓰기 파이프가 논리적으로 완벽히 닫혔음을 보장 streamWrite.on("finish", async () => { // 쓰기 파일 디스크립터(번호표) 운영체제에 반환 (메모리 누수 방지) await fileHandleWrite.close(); console.timeEnd("복사_소요_시간"); console.log( `📊 요약: 총 ${chunkCount}회 펌프질, ${pauseCount}회 비상 정지(메모리 방어 성공)`, ); // 메서드: 실험용 임시 파일 삭제 클린업 (unlink) await fs.unlink(SOURCE_FILE); await fs.unlink(DEST_FILE); }); streamWrite.end(); // 메서드: 사용이 끝난 읽기 파일 디스크립터(번호표) 운영체제에 반환 await fileHandleRead.close(); 읽기 스트림과 쓰기 스트림을 종료하는 3번 단계에서 쓰기 스트림을 end 하기 전에 .on finish를 등록을 해야 콘솔에서 요약을 볼 수 있었습니다. 클로드는 레이스 컨디션이 발생해서 그렇다고 하는데 어떤 부분에서 경합이 일어났는지 잘 모르겠습니다.
let previousContent = ""; const addToFile = async (path, content) => { if (previousContent === content) return; // 중복 실행 방지를 위한 거름망 if(!(await fileExist(path))) return; // file이 존재하는지 않하는 지 체크 try { await appendFile(path, content); previousContent = content; console.log(`✅ ${content} is successfully appended to ${path}`); } catch (error) { if (error.code === "ENOENT") { console.log(`⚠️ ${path} does not exist`); } console.error(`❌ 에러 발생: ${error.message}`); } }; catch error 부분에서 에러 코드로 ENOENT를 사용해서 path가 존재하지 않는 경우를 잡아내는 코드를 작성했지만, 실제로 실행했을 때 appendFile 자체가 이미 새로운 파일을 생성해내는데 성공하였기 때문에 error로 연결되지 않았습니다. 중복 콘텐츠 방지를 위한 if 밑에 또 다른 if로 fileExist를 사용해서 early return을 하는 이런 방식으로 처리를 하는 게 맞을까요? 아니면 제가 놓친 다른 catch error 가 있는 걸까요?
미국 빅테크 프론트엔드 시스템 디자인 실전: 단순 구현자로 남지 않기 위한 프론트엔드 개발자를 위해
먼저 좋은 강의 감사합니다. Monolith와 Modular 까지는 코드나 폴더구조들이 대충 상상이 가는데 MFE 1 강의를 들었을때 필요성이나 고려사항 등등 이론적으로 이해를 했으나 강의 2에서 remote나 shell 은 설명만으로 어떤식으로 프로젝트가 세팅되는지 이해가 잘안되네요. 정말 간단하게 코드 구현하는 강의 추가해주시면 안될까요
안녕하세요. 강의 잘 듣고 있습니다. libuv 발음이 '립유브이' '엘아이비유브이' '리버브' 등 발음법이 계속 바뀌네요. 다른 질문에서 답변으로 AI로 만든 강의 아니다라고 하셨고 직접 녹음한거라고 하셨는데 직접 하신거라면 조금 아쉬운 것 같습니다. 강의 내용도 흥미롭고 좋은 주제를 다루는 것 같아서 배울게 많아 정말 좋은데 이런 부분들이 조금 강의의 퀄리티를 떨어뜨리는 것 같아서 보완해주시면 좋을 것 같습니다. 강의는 정말 잘 듣고 있는 만큼 보완되었으면 하는 마음에 조심스레 글 남깁니다.
미국 빅테크 프론트엔드 시스템 디자인 실전: 단순 구현자로 남지 않기 위한 프론트엔드 개발자를 위해
안녕하세요, 강사님. 강의 잘 보고 있습니다. Design a Toast Notification System 미션을 진행하고 있는데요, 작성한 내용을 채점하고 리뷰하기 위한 프롬프트가 있으면 좋을 것 같습니다. 강사님의 미션 평가 기준이 담긴 프롬프트로 커리큘럼을 잘 따라가고 있는지 점검하는 기회, 강사님과 수강생의 시간을 모두 아낄 수 있지 않을까 생각이 들어서 의견 남깁니다. 남은 강의도 잘 보겠습니다. 좋은 강의 제공해주셔서 감사합니다!
5. [실전 훈련] 사고 실험: 상태 누적 시각화 추적하기 예시에서 [Step 2] setTimeout과 Promise 등록 등을 보면 Call Stack이 비어있음 이라고 표현하셨는데, main 호출후 -> 동기코드 완료될때까지. Call Stack은 엄밀히 비어있는 상태가 아니지 않나요? 즉 console.log("D") 가 출력되기 전까지는 콜 스택이 비워지는 상태가 발생할수 없지 않나요? 혹시 제가 잘못 알고 있을수도 있으니 조심히 여쭙습니다.
안녕하세요 해여님. 강의 잘 수강하고 있습니다. 남은 강의는 언제 업로드 되는지 일정 공유 부탁드립니다. 수업자료 공유(notion/pdf)는 가능한지 문의드립니다. 2-1. 가능하다면 어떤 형태로 언제 업로드 되는지 공유 부탁드립니다. 감사합니다. 오늘도 행복한 하루 되시길 바랍니다.
React 마스터 클래스: Part 3 - 실무 핵심 라이브러리 정복 (TypeScript, Zustand, React Hook Form, TanStack Query)
강의 잘 듣고있습니다. 한 가지 궁금한 점이 있어 질문드립니다. "App.tsx를 Provider로 감싸는 순간 그 아래 모든 컴포넌트가 서버 컴포넌트로서의 최적화 기회를 잃는다"는 부분이 잘 이해되지 않습니다. 제가 알기로는 Provider를 children prop으로 받는 composition pattern으로 작성하면, Provider 자체는 Client Component여도 그 안에 들어가는 children은 Server Component로 유지될 수 있는 것으로 알고 있습니다. Next.js App Router의 RootLayout 에서 <Providers>{children}</Providers> 형태로 쓰는 패턴이 그 예시라고 알고 있고요. 이 경우에도 RSC 최적화 기회를 잃는다고 보시는 건지, 아니면 제가 놓치고 있는 다른 맥락이 있는지 궁금합니다.
안녕하세요. 이번에 Node.js and CS Part 1을 수강했고 이어서 Part 2도 열심히 수강할 예정입니다. 이전에도 느꼈던 부분이지만 AI 시대에는 프론트엔드와 백엔드를 엄격하게 나누는 의미가 점점 줄어들고 있다는 생각이 들었습니다. 그런 흐름 속에서 강의가 저에게 정말 많은 도움이 되었습니다. 좋은 강의 만들어주셔서 감사합니다. 혹시 Node.js 시리즈가 Part 3까지 이어지는 것으로 보이는데 그 다음 강의에 대해서도 계획하고 계신 내용이 있을까요? 개인적으로는 운영/배포 과정에서의 실무 노하우나, 확장 가능한 프로젝트 구조 설계, npm 패키지 제작, 디자인 패턴 같은 주제에도 관심이 많아서 이후 강의에서 이런 내용들도 다뤄주신다면 정말 재미있게 들을 것 같습니다. 다음 강의도 기대하고 열심히 공부해보겠습니다.