-
Урок 1.
00:10:12
B. Watch: Writing the Tests
-
Урок 2.
00:04:37
A. Watch: Listening to Change
-
Урок 3.
00:04:18
B. Watch: Starting With the Open/Closed Principle
-
Урок 4.
00:18:47
C. Watch: Recognizing Code Smells
-
Урок 5.
00:06:24
D. Watch: Identifying the Best Point of Attack
-
Урок 6.
00:05:41
E. Watch: Refactoring Systematically
-
Урок 7.
00:38:15
Watch: Get a Whiff of This
-
Урок 8.
00:06:20
A. Watch: Following the Flocking Rules
-
Урок 9.
00:12:38
B. Watch: Converging on Abstractions
-
Урок 10.
00:07:12
B. Watch: Replacing Difference With Sameness
-
Урок 11.
00:07:01
C. Watch: Equivocating About Names
-
Урок 12.
00:06:27
D. Watch: Deriving Names From Responsibilities
-
Урок 13.
00:07:50
E. Watch: Choosing Meaningful Defaults
-
Урок 14.
00:08:22
F. Watch: Seeking Stable Landing Points
-
Урок 15.
00:09:52
G. Watch: Obeying the Liskov Substitution Principle
-
Урок 16.
00:05:15
H. Watch: Taking Bigger Steps
-
Урок 17.
00:07:29
I. Watch: Discovering Deeper Abstractions
-
Урок 18.
00:04:24
J. Watch: Depending on Abstractions
-
Урок 19.
00:12:44
A. Watch: Selecting the Target Code Smell
-
Урок 20.
00:12:42
B. Watch: Extracting Classes
-
Урок 21.
00:03:48
A. Watch: Appreciating Immutability
-
Урок 22.
00:09:08
B. Watch: Assuming Fast Enough
-
Урок 23.
00:05:09
A. Watch: Creating BottleNumbers
-
Урок 24.
00:06:41
B. Watch: Recognizing Liskov Violations
-
Урок 25.
00:38:47
Watch: All the Little Things
-
Урок 26.
00:08:06
A. Watch: Consolidating Data Clumps
-
Урок 27.
00:10:13
A. Watch: Making Sense of Conditionals
-
Урок 28.
00:14:13
B. Watch: Replacing Conditionals with Polymorphism
-
Урок 29.
00:15:04
A. Watch: Transitioning Between Types
-
Урок 30.
00:05:51
B. Watch: Making the Easy Change
-
Урок 31.
00:04:37
C. Watch: Defending the Domain
-
Урок 32.
00:04:15
A. Watch: Contrasting the Concrete Factory with Shameless Green
-
Урок 33.
00:07:52
B. Watch: Fathoming Factories
-
Урок 34.
00:13:26
C. Watch: Opening the Factory
-
Урок 35.
00:08:14
D. Watch: Supporting Arbitrary Class Names
-
Урок 36.
00:05:48
E. Watch: Dispersing the Choosing Logic
-
Урок 37.
00:10:07
F. Watch: Self-registering Candidates
-
Урок 38.
00:05:35
G. Watch: Auto-registering Candidates
-
Урок 39.
00:11:42
A. Watch: Converting Numbers to BottleNumbers
-
Урок 40.
00:37:58
Watch: Go Ahead, Make A Mess
-
Урок 41.
00:12:22
A. Watch: Appreciating the Mechanical Process
-
Урок 42.
00:04:40
B. Watch: Clarifying Responsibilities with Pseudocode
-
Урок 43.
00:03:17
C. Watch: Extracting the Verse
-
Урок 44.
00:06:25
D. Watch: Coding by Wishful Thinking
-
Урок 45.
00:09:18
E. Watch: Inverting Dependencies
-
Урок 46.
00:09:53
A. Watch: Obeying the Law of Demeter
-
Урок 47.
00:12:15
B. Watch: Identifying What the Verse Method Wants
-
Урок 48.
00:09:07
C. Watch: Pushing Object Creation to the Edge
-
Урок 49.
00:12:23
A. Watch: Choosing Which Units to Test
-
Урок 50.
00:06:13
B. Watch: Reorganizing Tests
-
Урок 51.
00:17:59
C. Watch: Seeking Context Independence
-
Урок 52.
00:15:30
D. Watch: Communicating With the Future
-
Урок 53.
00:03:39
A. Watch: Finding Shameless Green (up to 1:00)
-
Урок 54.
00:03:39
C. Watch: Finding Shameless Green (1:00 to end)
-
Урок 55.
00:11:55
A. Watch: Handling a New Requirement (up to 2:54)
-
Урок 56.
00:11:55
C. Watch: Handling a New Requirement (2:54 to end)
-
Урок 57.
00:08:39
A. Watch: Using Inheritance
-
Урок 58.
00:15:28
A. Watch: Understanding Composition (up to 9:45)
-
Урок 59.
00:15:28
C. Watch: Understanding Composition (9:45 to 12:17)
-
Урок 60.
00:15:28
E. Watch: Understanding Composition (12:17 to end)
-
Урок 61.
00:13:08
A. Watch: Seeking Abstractions (up to 1:05)
-
Урок 62.
00:13:08
C. Watch: Seeking Abstractions (1:05 to the end)
-
Урок 63.
00:08:04
A. Watch: Loosening Coupling
-
Урок 64.
00:05:31
A. Watch: One Final Requirement (up to 1:05)
-
Урок 65.
00:05:31
C. Watch: One Final Requirement (1:05 to end)
-
Урок 66.
00:35:54
Watch: Nothing is Something
This would make the videos easier to follow (though you can probably refer to the book too).
I recommend using puppeteer-extra to go over each of the lessons, extract the content and save as pdf (using document.body.scrollHeight to determine the page height and a width ~970px). Then combining the pdf pages.
You can extract the a page's content by running this:
```
const content = document.querySelector("#content-inner");
const style = document.querySelectorAll("style")[1];
content.removeAttribute('class');
document.body.textContent = '';
document.body.appendChild(content);
document.body.appendChild(style);
```
Also using the `puppeteer-extra-plugin-stealth` package will help bypass any bot detection.
It's a bit of work! (I've done similar before) Just putting it out there.
Успехов в учебе!
Thank you!
The contribution amount looks reasonable. We can start the collection if you're okay with that.
However, in the Premium chat, there’s a dedicated topic where you can suggest courses you'd like to see crowdfunded.