
클론코딩에서 알려주지 않는 것들 (보안, DDD, 마이크로서비스) 2편
₩24,200
중급이상 / DDD, Node.js
4.6
(7)
도메인 주도 개발(DDD) 방법으로 체계적인 백엔드 설계 및 이것을 마이크로서비스에 적용해봅니다!
중급이상
DDD, Node.js
## 이력서, 포폴 첨삭 등 강의 외 문의사항이 있으시면 이곳으로 문의 주세요
강사 깃헙: https://github.com/morishjs
지식저장소: https://wiki.after-camp.com/Home
🎨 포트폴리오: https://morish.dev
📜 이력: https://shorturl.at/gKU68
부트캠프 수료했는데 앞으로 뭘 공부해야 할지 막막하시죠?
👊 부트캠프에서는 취업률 90%라고 하는데... 전 취업이 잘 안돼요! 😢
👊 취업은 했는데 사수가 없어서 너무 불안해요! 🤑
👊 작성한 코드가 동작은 하는데 이렇게 작성하는지 모르겠어요! 🤯
애프터캠프에서는 다음이 가능합니다!
👌 CTO 2번 경험, 다수의 프로젝트를 경험한 풀스택 개발자가 직접 코칭합니다.
👌 코드 리뷰, 커리어 방향성 고민을 같이 해드립니다.
👌 애프터캠프에는 한국, 미국 실리콘밸리 예비 개발자, 현직자가 모인 곳입니다.
클론코딩에서 알려주지 않는 것들 (보안, DDD, 마이크로서비스) 2편
₩24,200
중급이상 / DDD, Node.js
4.6
(7)
도메인 주도 개발(DDD) 방법으로 체계적인 백엔드 설계 및 이것을 마이크로서비스에 적용해봅니다!
중급이상
DDD, Node.js
클론코딩에서 알려주지 않는 것들 (시스템 이론과 DB) 1편
₩22,000
입문 / DBMS/RDBMS, systems
4.6
(16)
클론 코딩 강의 보면서 왜 이런 기술을 사용하는 것인지 궁금해하셨죠? 백엔드 개발의 큰 그림을 그려드릴게요!
입문
DBMS/RDBMS, systems
실전 연습으로 익히는 고급 타입스크립트 기술
₩38,500
중급이상 / TypeScript
5.0
(28)
타입스크립트의 기능들을 제대로 활용해보세요!
중급이상
TypeScript
리셀봇 원리로 알아보는 Cypress
₩11,000
초급 / Cypress, 소프트웨어 테스트
5.0
(3)
자동 로그인, 자동 상품 구매 동작 원리를 Cypress를 통해서 배워봅니다
초급
Cypress, 소프트웨어 테스트
부트캠프에서 알려주지 않는 것들 (리액트 렌더링 최적화 편) 2편
₩13,200
중급이상 / React, react-usememo, 기술면접, Next.js
4.9
(16)
React 렌더링 원리, 최적화를 마스터해서 실전 활용 및 면접 준비를 해보세요!
중급이상
React, react-usememo, 기술면접
부트캠프에서 알려주지 않는 것들 (리액트) 1편
₩27,500
중급이상 / React, React Context, TDD, Jest, 소프트웨어 테스트
4.7
(11)
커스텀 훅, TDD, 컨텍스트 API, 리팩토링, 복잡한 상태 관리 등 React 개발의 복잡한 부분을 마스터하세요.
중급이상
React, React Context, TDD
질문&답변
Automatic batching에 관해 궁금한 점이 있습니다.
네 맞습니다. 개발자가 따로 신경쓰지 않아도 리액트 내부적으로 최적화가 되어있습니다.
질문&답변
블로그 링크 문제
복구했습니다!
질문&답변
제네릭과 사용자 정의 타입 가드에 관한 질문
안녕하세요.우선 제가 생각한 답안을 보여드리면type SingleValue = Date | null type RangeValue = [SingleValue, SingleValue] type DatePicker = | { type: 'single'; value: SingleValue } | { type: 'range'; value: RangeValue }; class DatePickerKlass { picker: DatePicker; constructor(picker: DatePicker) { this.picker = picker; } updateValue(date: Date) { if (this.picker.type === 'single') { this.picker.value = date; } else if (this.picker.type === 'range') { this.picker.value = [date, null]; } } }작성해주신 답안 보다 좀 더 간단하게 만들 수 있지 않을까 해서 저 같은 경우엔 discriminated union 으로 문제 풀어봤습니다. updateValue(date:Date) { const isSingle = ():this is DatePicker => this.type === 'single' if(isSingle()) { this.value = date return; } }여기서 타입이 좁혀지지 않는 이유는 타입스크립트의 특성인데요. T에 타입을 제한해도 결국 T는 'placeholder'이기 때문에 특정 타입으로 좁혀지지 않습니다. 저도 실무에서 사용하다보면, 생각대로 안되는 게 참 많은데 이럴 땐 "아! 이건 아직 타입스크립트 개발하시는 분이 구현을 안해놨구나..." 라고 생각합니다. 버전이 높아지면 이런 문제도 해결되는 경우가 있거든요.타입스크립트가 다른 statically-typed 언어에 비해 굉장히 자유도가 높은데, 그만큼 아직 구현이 안된 것이 종종 있습니다.
질문&답변
제네릭 타입 제한을 하는것이 어떤 장점이 있을까요 ?
안녕하세요 시원님 😃 올려주신 예시에선 사실 제한하는 이유를 찾기란 쉽지 않습니다. 아래의 예제를 보시면 조금 사용하는 이유를 찾을 수 있지 않을까 생각하는데, obj에서 object의 key들만 접근하고 싶을 때 아래와 같이 코드를 작성할 수 있습니다. function getValue(key: T, obj: Record) { return obj[key]; } const obj = { key1: 1, key2: 2 }; getValue('key1', obj); // 'key1' 타입으로 안전하게 호출 가능 getValue('key3', obj); // 컴파일 에러 (key3는 obj의 키가 아님)Record의 타입 첫번째 인자는 항상 string | symbol | number 가 와야 하는데요. 이 경우에는 string으로 강제하기 위해 T extends string string 타입으로 제한했습니다. 강의를 조금만 더 들어보시면 제네릭 타입 제한하는 문제들이 있으니 한번 풀어보시면 어느 상황에서 사용할 수 있으신지 깨닫게 되실거에요.그래도 만약 이해가 되지 않으신다면 질문 남겨주세요!
질문&답변
행운문제 닉네임 등록 신청합니다!
등록해드렸습니다 :)
질문&답변
행운문제 테스트 유저 이름 입력 요청
등록했습니다!
질문&답변
행운문제 닉네임 입력 요청
추가해드렸습니다 :)
질문&답변
행운문제 테스트 유저 이름 입력 요청
추가했습니다!
질문&답변
설명 블로그에 대한 질문
복구했습니다. 다시 한번 불편을 드려서 죄송합니다
질문&답변
설명 블로그에 대한 질문
안녕하세요 병호님 설명 블로그가 기술적인 문제로 닫혔습니다 😅불편을 드려서 죄송합니다. 주말 중에 고쳐서 다시 오픈하도록 하겠습니다.