이 저장소는 우리가 선호하는 기술을 처음부터 다시 만들기 위한 잘 작성된 단계별 가이드 모음입니다.
내가 창조할 수 없는 것은 이해할 수 없다 - 리처드 파인만.
그것은 배울 수 있는 좋은 방법입니다.
3D 렌더러
증강현실
비트토렌트 클라이언트
블록체인/암호화폐
봇
명령줄 도구
데이터 베이스
도커
에뮬레이터/가상 머신
프런트엔드 프레임워크/라이브러리
게임
힘내
네트워크 스택
신경망
운영 체제
물리 엔진
프로그래밍 언어
정규식 엔진
검색 엔진
껍데기
템플릿 엔진
텍스트 편집기
시각 인식 시스템
복셀 엔진
웹 브라우저
웹 서버
분류되지 않음
3D Renderer
구축C++ : 광선 추적 소개: 3D 이미지를 생성하는 간단한 방법
C++ : OpenGL 작동 방식: 500줄의 코드로 소프트웨어 렌더링
C++ : Wolfenstein 3D의 레이캐스팅 엔진
C++ : 물리 기반 렌더링:이론에서 구현까지
C++ : 주말의 레이 트레이싱
C++ : 래스터화: 실용적인 구현
C# / TypeScript / JavaScript : C#, TypeScript 또는 JavaScript로 처음부터 3D 소프트 엔진을 작성하는 방법 학습
Java/JavaScript : 나만의 3D 렌더러 구축
Java : 순수 Java로 자신만의 간단한 3D 렌더링 엔진을 만드는 방법
JavaScript/의사 코드 : 처음부터 컴퓨터 그래픽
Python : 3D 모델러
Augmented Reality
구축C# : 방법: Vuforia 및 Unity 3D를 사용한 초보자를 위한 증강 현실 앱 튜토리얼 [동영상]
C# : Unity ARCore 방법 [동영상]
C# : Unity를 사용한 AR 포털 튜토리얼 [동영상]
C# : Unity ARCore의 증강 현실에서 드래곤을 만드는 방법 [동영상]
C# : 증강 현실 AR 튜토리얼 방법: 거꾸로 된 ARKit 포털 [비디오]
Python : Python과 OpenCV를 사용한 증강 현실
BitTorrent Client
구축C# : C#으로 처음부터 BitTorrent 클라이언트 구축
Go : Go에서 처음부터 BitTorrent 클라이언트 구축
Nim : Bencode 파서 작성하기
Node.js : 나만의 비트토렌트 클라이언트 작성
Python : Python 3.5의 BitTorrent 클라이언트
Blockchain / Cryptocurrency
구축ATS : 기능성 블록체인
C# : C#으로 블록체인 프로그래밍
Crystal : Crystal을 사용하여 자신만의 블록체인 및 PoW 알고리즘을 작성합니다.
Go : Go로 블록체인 구축하기
Go : 200줄 미만의 Go로 나만의 블록체인을 코딩하세요
Java : Java로 첫 번째 블록체인 만들기
JavaScript : 1500줄 미만의 코드로 암호화폐 구현
JavaScript : JavaScript로 나만의 블록체인 구축
JavaScript : JavaScript 블록체인 학습 및 구축
JavaScript : JavaScript로 블록체인 만들기
JavaScript : 생산 준비가 완료된 나만의 암호화폐를 출시하는 방법
JavaScript : Node.js에서 블록체인 작성
Kotlin : Kotlin으로 암호화폐를 구현해 보겠습니다.
Python : 하나를 만들어 블록체인 배우기
Python : 나만의 블록체인 구축: Python 튜토리얼
Python : Python을 사용한 블록체인에 대한 실용적인 소개
Python : 가장 작은 블록체인을 구축해 봅시다
Ruby : 블록체인 프로그래밍 단계별(원고 도서 에디션)
Scala : 간단한 행위자 기반 블록체인을 구축하는 방법
TypeScript : Naivecoin: 암호화폐 구축을 위한 튜토리얼
TypeScript : NaivecoinStake: 지분 증명 합의를 통해 암호화폐를 구축하기 위한 튜토리얼
Rust : Rust와 Substrate로 블록체인 구축하기
Bot
구축Haskell : 나만의 IRC 봇을 굴려보세요
Node.js : Node.js에서 API.ai를 사용하여 간단한 Facebook 메신저 AI 봇 만들기
Node.js : 반응형 텔레그램 봇을 만드는 방법
Node.js : Discord 봇 만들기
Node.js : gifbot - GitHub 앱 구축
Node.js : Web Speech API와 Node.js를 사용하여 간단한 AI 챗봇 구축하기
Python : Python으로 첫 번째 Slack 봇을 구축하는 방법
Python : Slack Events API 및 Django를 사용하여 20분 이내에 Python으로 Slack Bot을 구축하는 방법
Python : Reddit 봇 구축
Python : Reddit 봇을 만드는 방법 [동영상]
Python : Python을 사용하여 텔레그램 봇을 만드는 방법
Python : Tweepy를 사용하여 Python으로 Twitter 봇 만들기
Python : Python 및 PRAW를 사용하여 Reddit Bot 만들기 [동영상]
R : R로 암호화폐 트레이딩 봇 구축
Rust : Rust, C 또는 기타 언어로 된 스타크래프트용 봇
Command-Line Tool
만들기Go : Go를 사용하여 로컬 Git 기여를 시각화합니다.
Go : Go를 사용하여 명령줄 앱 빌드: lolcat
Go : Go를 사용하여 cli 명령 작성: cowsay
Go : Go CLI 튜토리얼: 포춘 클론
Nim : 도트 파일을 관리하기 위한 stow 대안 작성
Node.js : Javascript로 CLI 도구 만들기
Rust : Rust의 명령줄 앱
Rust : Rust로 명령줄 도구 작성하기
Database
구축C : 간단한 데이터베이스를 구축해보자
C++ : 처음부터 나만의 Redis 구축
C# : 나만의 데이터베이스 구축
Clojure : 고고학에서 영감을 받은 데이터베이스
Crystal : 나만의 NoSQL 데이터베이스를 구축해야 하는 이유
Go : 처음부터 자신만의 데이터베이스 구축: 지속성, 인덱싱, 동시성
Go : 처음부터 나만의 Redis 구축
JavaScript : Dagoba: 인메모리 그래프 데이터베이스
Python : DBDB: 개 침대 데이터베이스
Python : Python으로 나만의 소형 Redis 작성
Ruby : Ruby로 빠르고 지속적인 KV 스토어 구축
Rust : 나만의 Redis 클라이언트 및 서버 구축
Docker
구축C : 500줄의 코드로 구성된 Linux 컨테이너
Go : 100개 미만의 Go 라인을 사용하여 나만의 컨테이너 구축
Go : Go를 사용하여 처음부터 컨테이너 구축 [동영상]
Python : Linux 컨테이너 워크숍: Docker를 처음부터 다시 빌드
Python : 100% Python으로 작성된 Docker의 개념 증명 모방
Shell : 약 100줄의 bash에 Docker가 구현됨
Emulator / Virtual Machine
구축C : 자체 개발 바이트코드 인터프리터
C : C의 가상 머신
C : 나만의 가상 머신 작성
C : Game Boy 에뮬레이터 Cinoop 작성
C++ : 에뮬레이터 작성 방법(CHIP-8 인터프리터)
C++ : 에뮬레이션 튜토리얼(CHIP-8 인터프리터)
C++ : 에뮬레이션 튜토리얼(GameBoy 에뮬레이터)
C++ : 에뮬레이션 튜토리얼(마스터 시스템 에뮬레이터)
C++ : 처음부터 NES 에뮬레이터 [동영상]
커먼 리스프 : 커먼 리스프의 CHIP-8
JavaScript : JavaScript의 GameBoy 에뮬레이션
Python : 에뮬레이션 기본 사항: 나만의 칩 8 에뮬레이터/인터프리터 작성
Rust : 0dmg: 부분적인 Game Boy 에뮬레이터를 구축하여 Rust를 학습합니다.
Front-end Framework / Library
구축JavaScript : WTF는 JSX입니다(JSX 렌더러를 구축해 보겠습니다).
JavaScript : 나만의 React를 만들기 위한 DIY 가이드
JavaScript : 처음부터 React 구축 [동영상]
JavaScript : Gooact: 160줄의 JavaScript로 반응
JavaScript : 나만의 경량 React DOM을 구축하여 React Reconciler 패키지가 어떻게 작동하는지 알아보세요.
JavaScript : 스스로 Redux를 구축하세요
JavaScript : Redux를 작성해보자!
JavaScript : Redux: 처음부터 Store 구현 [동영상]
JavaScript : 200줄의 JavaScript로 나만의 단순화된 AngularJS 구축
JavaScript : 나만의 AngularJS 만들기
JavaScript : 자신만의 가상 DOM을 작성하는 방법
JavaScript : 구성 요소(템플릿, 상태, VDOM)를 사용하여 처음부터 프런트엔드 프레임워크 구축
JavaScript : 나만의 React 구축
JavaScript : 사용자 정의 React 렌더러 구축 [동영상]
Game
만들기C : 핸드메이드 히어로
C : C로 NES 게임을 프로그래밍하는 방법
C : C의 체스 엔진 [동영상]
C : Let's Make: Dangerous Dave [동영상]
C : C로 비디오 게임 프로그래밍 배우기 [동영상]
C : C로 스도쿠 해결사 코딩하기 [동영상]
C : C로 Rogue/Nethack RPG 코딩 [동영상]
C : 테트리스 및 재구현
C++ : 브레이크아웃
C++ : 게임 프로그래밍 시작 v2.0
C++ : 초보자를 위한 게임 로직에 초점을 맞춘 C++ 플랫폼 독립적인 Tetris 튜토리얼
C++ : C++로 동굴 이야기 다시 만들기 [동영상]
C++ : 동굴 이야기 재구성 [동영상]
C++ : 처음부터 다시 시작하는 스페이스 인베이더
C# : 간단한 RPG를 구축하여 C# 배우기
C# : C#으로 로그라이크 게임 만들기
C# : C#/WPF RPG 빌드
바둑 : 바둑을 이용한 게임 [동영상]
Java : Java를 사용하여 2D 게임 엔진 코딩 - 초보자를 위한 전체 과정 [동영상]
Java : LWJGL 3을 사용한 3D 게임 개발
JavaScript : Phaser를 사용한 2D 브레이크아웃 게임
JavaScript : Phaser를 사용하여 HTML5에서 Flappy Bird를 만드는 방법
JavaScript : React, Redux 및 SVG를 사용하여 게임 개발
JavaScript : 처음부터 자신만의 8볼 당구 게임 만들기 [동영상]
JavaScript : 첫 번째 로그라이크 만드는 방법
JavaScript : 프로그래머처럼 생각하기: JavaScript, HTML, CSS만 사용하여 Snake를 만드는 방법
루아 : BYTEPATH
Python : PyGame으로 게임 개발하기
Python : Python과 Pygame으로 게임 만들기 [pdf]
Python : Roguelike 튜토리얼 개정
Ruby : Ruby로 게임 개발하기
루비 : 루비 스네이크
Rust : Rust의 모험: 기본 2D 게임
Rust : Rust + tcod의 로그라이크 튜토리얼
Git
구축Haskell : Haskell에서 "git clone"을 처음부터 다시 구현
자바스크립트 : Gitlet
JavaScript : GIT 구축 - GIT 배우기
Python : 리포지토리를 생성하고 커밋하고 GitHub에 푸시하는 데 충분한 Git 클라이언트
Python : Git을 직접 작성해 보세요!
Python : ugit: Git을 직접 구축하여 Git 내부 학습
Ruby : Ruby에서 Git 재구축
Network Stack
구축C : Beej의 네트워크 프로그래밍 가이드
C : TCP/IP 스택을 코딩해보자
C/Python : 나만의 VPN/가상 스위치 구축
Ruby : Ruby에서 네트워크 스택을 구축하는 방법
Neural Network
구축C# : 신경망 OCR
F# : F#에서 신경망 구축
Go : Golang을 사용하여 다층 퍼셉트론 구축
Go : Go로 간단한 인공 신경망을 구축하는 방법
Go : Go에서 처음부터 신경망 구축
JavaScript / Java : 신경망 - 코드의 본질 [동영상]
JavaScript : JavaScript 언어학자를 위한 처음부터 신경망(1부 — 퍼셉트론)
Python : 11줄의 Python으로 구성된 신경망
Python : 처음부터 신경망 구현
Python : 광학 문자 인식(OCR)
Python : 컨벌루션 네트워크를 사용한 교통 표지판 분류
Python : Keras에서 LSTM 신경망을 사용하여 음악 생성
Python : 컨볼루셔널 신경망 소개
Python : 신경망: 0에서 영웅까지
Operating System
구축어셈블리 : 작은 x86 부트로더 작성
조립 : 베이킹파이 – 운영체제 개발
C : 처음부터 간단한 컴퓨터용 소프트웨어 및 하드웨어 스택 구축 [동영상]
C : 운영 체제: 0에서 1까지
C : OS 개발에 관한 작은 책
C : 자신만의 장난감을 만들어 보세요. UNIX 클론 OS
C : 커널 101 - 커널을 작성해보자
C : 커널 201 – 키보드와 화면을 지원하는 커널을 작성해 보겠습니다.
C : 처음부터 ARM용 최소 멀티태스킹 커널 구축
C : 처음부터 OS를 만드는 방법
C : Malloc 튜토리얼
C : 가상 메모리 해킹
C : 리눅스 커널과 라즈베리 파이를 활용한 운영체제 개발 학습
C : 입문자를 위한 운영체제 개발
C++ : 나만의 운영 체제 작성 [동영상]
C++ : 부트로더 작성
Rust : Rust로 OS 작성하기
Rust : RISC-V Rust 운영 체제 튜토리얼 추가
(any) : 처음부터 Linux
Physics Engine
구축C : 비디오 게임 물리학 튜토리얼
C++ : Allen Chou의 게임 물리학 시리즈
C++ : 맞춤형 물리 엔진을 만드는 방법
C++ : 3D 물리 엔진 튜토리얼 [동영상]
JavaScript : 물리 엔진의 작동 방식
JavaScript : 공간 분할을 사용한 광범위한 위상 충돌 감지
JavaScript : JavaScript 게임을 위한 간단한 2D 물리 엔진 구축
Programming Language
구축(any) : 말 - Lisp 만들기
조립 : 존스포스
C : 아기의 첫 쓰레기 수집가
C : 나만의 Lisp 만들기: C를 배우고 1000줄의 코드로 나만의 프로그래밍 언어 만들기
C : C로 간단한 가비지 수집기 작성
C : 자신을 해석하는 C 인터프리터입니다.
C : Jack Crenshaw의 "Let's Build a Compiler"의 AC 및 x86 버전
C : 처음부터 컴파일러를 구축하는 방법을 설명하는 여정
C++ : Flex를 사용하여 나만의 장난감 컴파일러 작성
C++ : 컴파일러를 만드는 방법 [동영상]
C++ : 만화경: LLVM을 사용하여 언어 구현
F# : 파서 결합자 이해
Elixir : 자신만의 컴파일러를 작성하여 이해하기 [동영상]
Go : 초소형 컴파일러
Go : Go의 어휘 스캐닝 [동영상]
하스켈 : 컴파일러를 만들어보자
Haskell : 하스켈을 작성해 보세요
Haskell : 48시간 안에 계획 작성하기
Haskell : 계획 작성
Java : Crafting Interpreters: 프로그래밍 언어 제작을 위한 핸드북
Java : JVM 언어 생성
JavaScript : 초소형 컴파일러
JavaScript : 초소형 인터프리터
JavaScript : 리틀 리스프 인터프리터
JavaScript : JavaScript로 프로그래밍 언어를 구현하는 방법
JavaScript : Lisp를 작성해 봅시다
OCaml : C 컴파일러 작성
OCaml : Lisp 시리즈 작성
파스칼 : 컴파일러를 만들어 봅시다
Python : Python으로 작성된 Python 인터프리터
Python : lisp.py: 나만의 Lisp 인터프리터 만들기
Python : Python에서 Lisp 인터프리터를 작성하는 방법
Python : 간단한 인터프리터를 만들어 봅시다
Python : 자신만의 간단하고 해석된 프로그래밍 언어 만들기 [비디오]
Python : 소스 코드에서 기계 코드까지: 처음부터 자신만의 컴파일러 구축
Racket : 아름다운 라켓: Racket으로 나만의 프로그래밍 언어를 만드는 방법
Ruby : 처음부터 다시 만드는 컴파일러
Ruby : Ruby에서 처음부터 마크다운 컴파일러를 사용합니다.
Rust : 언어 VM을 구축하고 싶으신가요?
Rust : Rust로 파서 결합자 배우기
Swift : Swift를 사용하여 처음부터 LISP 구축
TypeScript : 나만의 WebAssembly 컴파일러 구축
Regex Engine
구축C : 정규식 일치자
C : 정규식 일치는 간단하고 빠를 수 있습니다.
이동 : 처음부터 정규식 엔진을 구축하는 방법
JavaScript : 40줄 미만의 코드로 Regex 엔진 구축
JavaScript : 파생어를 사용하여 함수형 JavaScript에서 정규식을 구현하는 방법
JavaScript : 정규식 엔진 구현
Perl : 정규 표현식의 작동 방식
Python : 나만의 정규식 엔진 구축: 역추적, NFA, DFA
스칼라 : 마법 없음: 정규식
Search Engine
구축CSS : CSS의 검색 엔진
Python : Redis 및 redis-py를 사용하여 검색 엔진 구축
Python : Python에서 벡터 공간 인덱싱 엔진 구축
Python : Python 기반 검색 엔진 구축 [동영상]
Python : 피드백을 통해 텍스트 검색 학습하기
Python : TF-IDF를 사용하여 텍스트에서 중요한 단어 찾기
Shell
만들기C : 튜토리얼 - C로 셸 작성
C : 쉘을 만들어보자!
C : UNIX 쉘 작성
C : 나만의 쉘 만들기
C : C로 쉘 작성
Go : Go로 간단한 쉘 작성
Rust : Rust를 사용하여 나만의 쉘 만들기
Template Engine
구축JavaScript : 단 20줄로 구성된 JavaScript 템플릿 엔진
JavaScript : JavaScript 마이크로 템플릿 이해
Python : 접근 방식: Python으로 장난감 템플릿 엔진 구축
Python : 템플릿 엔진
Ruby : 30줄 미만의 코드로 템플릿 엔진을 작성하는 방법
Text Editor
만들기C : 나만의 텍스트 편집기 만들기
C++ : 간단한 텍스트 편집기 디자인
Python : Python 튜토리얼: 나만의 텍스트 편집기 만들기 [비디오]
Python : 간단한 Python 텍스트 편집기를 만들어보세요!
Ruby : Rails를 사용하여 협업 텍스트 편집기 구축
Rust : Hecto: Rust로 나만의 텍스트 편집기 만들기
Visual Recognition System
구축Python : Python에서 머신러닝을 활용한 차량번호판 인식 시스템 개발
Python : Tensorflow의 딥 러닝으로 얼굴 인식 파이프라인 구축
Voxel Engine
구축C++ : 복셀 엔진을 만들어 봅시다
Java : Java Voxel 엔진 튜토리얼 [동영상]
Web Browser
구축Rust : 브라우저 엔진을 만들어 봅시다
Python : 브라우저 엔지니어링
Web Server
구축C# : 처음부터 웹 서버 작성
Node.js : JavaScript로 처음부터 나만의 웹 서버 구축
Node.js : NodeJS Streams를 사용하여 처음부터 웹 서버를 코딩해 보겠습니다.
Node.js : Let-Build-Express
PHP : 순수 PHP로 웹서버 작성하기
Python : 간단한 웹 서버
Python : 웹 서버를 구축해 봅시다.
Python : 처음부터 웹 애플리케이션
Python : Python으로 처음부터 기본 HTTP 서버 구축
Python : Python 및 Flask를 사용하여 RESTful 웹 API 구현
Ruby : Ruby로 처음부터 간단한 웹소켓 서버 구축하기
(any) : NAND에서 테트리스까지: 첫 번째 원리로 최신 컴퓨터 구축
합금 : 동일 원산지 정책
C : 1000줄 미만으로 비디오 플레이어를 작성하는 방법
C : C로 해시 테이블을 작성하는 방법을 알아보세요.
C : 터미널 에뮬레이터의 기본
C : 시스템 호출 작성
C : Sol - 처음부터 MQTT 브로커
C++ : $200로 나만의 VR 헤드셋 만들기
C++ : X Window Manager의 작동 방식 및 작성 방법
C++ : Linux 디버거 작성
C++ : 64k 인트로를 만드는 방법
C++ : 나만의 게임 엔진 만들기
C# : C# 네트워킹: TCP 채팅 서버, TCP 게임, UDP Pong 등 만들기
C# : C# 및 GLSL에서 처음부터 3D 골격 애니메이션 로드 및 렌더링
Clojure : 맞춤법 검사기 만들기
Go : 100줄의 Golang으로 간단한 터미널 에뮬레이터 구축
Go : 간단한 로드 밸런서를 만들어 보겠습니다.
Go : 처음부터 비디오 인코딩
Java : Android Reddit 앱을 구축하는 방법 [동영상]
JavaScript : 나만의 모듈 번들러 만들기 - Minipack
JavaScript : 처음부터 Promise를 작성하여 JavaScript Promise를 학습합니다.
JavaScript : 약속을 처음부터 구현하기(TDD 방식)
JavaScript : JavaScript에서 call(), apply() 및 바인딩() 메서드를 직접 구현합니다.
JavaScript : JavaScript 알고리즘 및 데이터 구조
JavaScript : React Native를 사용하여 차량 호출 앱 구축
JavaScript : 문자 그대로 10분 만에 나만의 AdBlocker 구축
Kotlin : 나만의 캐시 구축
Lua : 처음부터 CDN 구축하여 CDN에 대해 알아보기
Nim : Redis 프로토콜 파서 작성하기
Nim : 빌드 시스템 작성
Nim : MiniTest 프레임워크 작성
Nim : DMIDecode 파서 작성하기
님 : INI 파서 작성하기
Nim : 링크 검사기 작성하기
님 : URL 단축 서비스 작성하기
Node.js : Node.js를 사용하여 40줄로 정적 사이트 생성기 구축
Node.js : Node.js에서 처음부터 간단한 SSO(Single Sign On) 서버 및 솔루션을 구축합니다.
Node.js : Node를 사용하여 실제 Node CLI 앱을 만드는 방법
Node.js : Node.js에서 DNS 서버 구축
PHP : PHP로 처음부터 자신만의 MVC 작성
PHP : 나만의 블로그 만들기
PHP : 프레임워크가 없는 최신 PHP
PHP : PHP로 웹 검색 엔진 코딩
Python : 딥 러닝 라이브러리 구축 [동영상]
Python : 단 5분 만에 멋진 모바일 문서 스캐너를 만드는 방법
Python : 지속적인 통합 시스템
Python : Python의 추천 시스템: 초보자 튜토리얼
Python : Scikit-learn을 사용하여 SMS 스팸 탐지기 작성
Python : Python의 간단한 콘텐츠 기반 추천 엔진
Python : Python의 LSTM을 사용한 주식 시장 예측
Python : Tensorflow를 사용하여 간단한 GAN(생성적 적대 신경망) 구축
Python : 코딩을 통해 ML 알고리즘 학습: 의사결정 트리
Python : JSON 디코딩 알고리즘
Python : Python을 사용하여 나만의 Git 플러그인 구축
Ruby : 현실 세계의 보수계
Ruby : Ruby를 사용하여 Linux 데스크톱 애플리케이션 만들기
Rust : Rust로 DNS 서버 구축하기
Rust : 처음부터 확장 가능한 채팅 서비스 작성
Rust : WebGL + Rust: 기본 물 튜토리얼
TypeScript : Tiny Package Manager: npm 또는 Yarn의 작동 방식을 알아봅니다.
제출을 환영합니다. PR을 보내거나 이슈를 생성하세요.
의견과 "반응"을 남겨서 보류 중인 제출물을 검토할 수 있도록 도와주세요.
이 저장소는 많은 기여자의 작업입니다. 이는 Daniel Stefanovic에 의해 시작되었으며 현재 CodeCrafters, Inc.에서 관리하고 있습니다. 법률에 따라 가능한 한 CodeCrafters, Inc.는 이 저작물에 대한 모든 저작권 및 관련 권리 또는 저작인접권을 포기했습니다.