Тестирование кода
Умные дядьки пишут, что тестирование кода ускоряет разработку. Что что ? Смысл в этом есть, даже если закралась мысль, что тестирование "ускоряет разработку тестов" 🙂
Почему добавляется скорость ?
Когда система оттестирована и тесты продолжают гонять на "каждый чих" - мы не боимся вносить изменения. Степень уверенности, конечно, зависит от качества тестов, но это другой вопрос...
Что такое автоматический тест
Автоматический тест - это всего-лишь код, который бросает исключение (exception), если некоторое утверждение (assertion) является ложным. Все!
Пример теста
Долго ждать не пришлось... собрались несколько матерых кодеров и наплодили (абстракций) assertion libraries и test frameworks. А есть один dude, которого звать Kent C. Dodds, так он в своем курсе показал как устроены эти инструменты. Реально интересно 🔥 Кто не в теме вообще, рекомендую данный материал как отправную точку 😎
Скачать Testing Javascript with Kent C. Dodds с rutracker
Have a nice day 🌅
Умные дядьки пишут, что тестирование кода ускоряет разработку. Что что ? Смысл в этом есть, даже если закралась мысль, что тестирование "ускоряет разработку тестов" 🙂
Почему добавляется скорость ?
Когда система оттестирована и тесты продолжают гонять на "каждый чих" - мы не боимся вносить изменения. Степень уверенности, конечно, зависит от качества тестов, но это другой вопрос...
Что такое автоматический тест
Автоматический тест - это всего-лишь код, который бросает исключение (exception), если некоторое утверждение (assertion) является ложным. Все!
Пример теста
const sum = (a, b) => a - b;
const expected = 7;
const actual = sum(4, 3);
if (actual !== expected) {
throw new Error(${actual} is not equal ${expected});
}
Долго ждать не пришлось... собрались несколько матерых кодеров и наплодили (абстракций) assertion libraries и test frameworks. А есть один dude, которого звать Kent C. Dodds, так он в своем курсе показал как устроены эти инструменты. Реально интересно 🔥 Кто не в теме вообще, рекомендую данный материал как отправную точку 😎
Скачать Testing Javascript with Kent C. Dodds с rutracker
Have a nice day 🌅
Поля, атрибуты и свойства. Разница ?
Уверен, когда вы видите кошку, вы не называете ее "собака", и даже "ах ты ж собака" 🙀 Но когда дело доходит до вещей сложнее, начинается путаница. Казалось бы, достаточно называть вещи правильно, но это же сложно, а ? 🙂☝️
Preface
Свойства класса предоставляют доступ к полям класса. Поля содержат данные и в идельном мире должны быть приватными, а свойства, предоставляют доступ к этим данным.
Поле класса (class field)
Переменная, которая объявляется внутри класса и хранит данные. Прямой доступ к такой переменной извне - плохая идея, поэтому использут модификаторы доступа: private / protected. Доступ предоставляется косвенно, через методы или свойства. Это позволяет изменить реализацию позднее, валидировать значение входящих данных, ограничить доступ - это надежно.
Поля бывают обычные (на каждый instance объекта) и общие для всех instances (статические).
По области видимости поля делятся на:
1. public - общедоступные
2. protected - доступные для потомков
3. private - доступные только внутри класса
Свойство класса (property)
Член класса, который предоставляет доступ для чтения/записи/вычисления поля класса. Обращение к свойствам часто выглядит также, как обращение полям:
1. this.someProp
2. this.someField
Разница, конечно, есть. Свойства используют специальные методы - accessors (get/set). Это позволяет внешнему коду получать/устанавливать значения, не зная про способ этого доступа и различные внутренние проверки.
Атрибуты класса - всего лишь синоним, для полей класса.
Почитать
Читать статью по теме от Александра Майорова
Читать тред на StackOverflow
Cheers 🎊
Уверен, когда вы видите кошку, вы не называете ее "собака", и даже "ах ты ж собака" 🙀 Но когда дело доходит до вещей сложнее, начинается путаница. Казалось бы, достаточно называть вещи правильно, но это же сложно, а ? 🙂☝️
Preface
Свойства класса предоставляют доступ к полям класса. Поля содержат данные и в идельном мире должны быть приватными, а свойства, предоставляют доступ к этим данным.
Поле класса (class field)
Переменная, которая объявляется внутри класса и хранит данные. Прямой доступ к такой переменной извне - плохая идея, поэтому использут модификаторы доступа: private / protected. Доступ предоставляется косвенно, через методы или свойства. Это позволяет изменить реализацию позднее, валидировать значение входящих данных, ограничить доступ - это надежно.
Поля бывают обычные (на каждый instance объекта) и общие для всех instances (статические).
По области видимости поля делятся на:
1. public - общедоступные
2. protected - доступные для потомков
3. private - доступные только внутри класса
Свойство класса (property)
Член класса, который предоставляет доступ для чтения/записи/вычисления поля класса. Обращение к свойствам часто выглядит также, как обращение полям:
1. this.someProp
2. this.someField
Разница, конечно, есть. Свойства используют специальные методы - accessors (get/set). Это позволяет внешнему коду получать/устанавливать значения, не зная про способ этого доступа и различные внутренние проверки.
Атрибуты класса - всего лишь синоним, для полей класса.
Почитать
Читать статью по теме от Александра Майорова
Читать тред на StackOverflow
Cheers 🎊
Настройка командного интерпретатора и терминала
Хай 🤚
Каждый раз, когда покупаю macbook (уже 4й), приходится настраивать внешний вид терминала и другой софт, так что оставлю здесь несколько ссылок 🙂
Терминология
Эмулятор терминала - окно, в котором печатаются команды и результат их выполнения
Командный интерпретатор - программа, которая принимает команды и выполняет их, а затем выводит результат в стандартный поток вывода stdout - на экран (как раз в эмулятор терминала)
Ссылки
Набор приложений для mac от Стаса Кулеша
Ставим терминал iTerm2 и командный инт. ZSH
Cheers🤘
Хай 🤚
Каждый раз, когда покупаю macbook (уже 4й), приходится настраивать внешний вид терминала и другой софт, так что оставлю здесь несколько ссылок 🙂
Терминология
Эмулятор терминала - окно, в котором печатаются команды и результат их выполнения
Командный интерпретатор - программа, которая принимает команды и выполняет их, а затем выводит результат в стандартный поток вывода stdout - на экран (как раз в эмулятор терминала)
Ссылки
Набор приложений для mac от Стаса Кулеша
Ставим терминал iTerm2 и командный инт. ZSH
Cheers🤘
Принципы дизайна от Дитера Рамса
Посмотрел фильм RAMS о легендарном дизайнере Дитере Рамсе. Рамс очень много дал промышленному дизайну благодаря своей культовой работе в Braun и Vitsoe. Но это не все, также он оказал заметное влияние на Apple. Вердикт - шикарное кино! Рекомендую нагуглить и посмотреть 😎
Вот статья с перечнем принципов этого дизайнера-титана:
принципы дизайна от Дитера Рамса
Оцените
На картинке карманное радио Braun T3, а рядом что ?
- правильно! iPod от Apple 🙂
Посмотрел фильм RAMS о легендарном дизайнере Дитере Рамсе. Рамс очень много дал промышленному дизайну благодаря своей культовой работе в Braun и Vitsoe. Но это не все, также он оказал заметное влияние на Apple. Вердикт - шикарное кино! Рекомендую нагуглить и посмотреть 😎
Вот статья с перечнем принципов этого дизайнера-титана:
принципы дизайна от Дитера Рамса
Оцените
На картинке карманное радио Braun T3, а рядом что ?
- правильно! iPod от Apple 🙂
В чем отличие framework от library ?
Наконец-то нашел нормальное объяснение этого блин отличия.. ☝🏻🙄 Но буквально еще один термин, а дальше все расскажу..
Inversion of Control - принцип программирования. Вместо того, чтобы ваш код вызывал чужой код, чужой код вызовет ваш код. То есть будет инвертирован контроль выполнения инструкций.
Развязка
IoC это ключевая часть, которая делает framework отличным от library.
Library - это просто набор функций, которые вы можете вызывать. Например, вот такой набор: sum, substract, multiply, divide. Любой вызов одной из этих функций передает ей управление, функция делает какую-то работу и возвращает результат (и управление !) обратно вам.
Framework всегда содержит внутри себя заранее написанный дизайн, который определяет поток выполнения на высоком уровне. Чтобы использовать framework, вы должны написать свой код и вставить в определенные места (слоты потока выполнения) framework'а. Только после этого, потом, когда-нибудь, framework вызовет ваши классы (но не вы вызовете классы framework'a).
Читать Inversion of Control от Martin Fauler
🌃 🤟🏻
Наконец-то нашел нормальное объяснение этого блин отличия.. ☝🏻🙄 Но буквально еще один термин, а дальше все расскажу..
Inversion of Control - принцип программирования. Вместо того, чтобы ваш код вызывал чужой код, чужой код вызовет ваш код. То есть будет инвертирован контроль выполнения инструкций.
Развязка
IoC это ключевая часть, которая делает framework отличным от library.
Library - это просто набор функций, которые вы можете вызывать. Например, вот такой набор: sum, substract, multiply, divide. Любой вызов одной из этих функций передает ей управление, функция делает какую-то работу и возвращает результат (и управление !) обратно вам.
Framework всегда содержит внутри себя заранее написанный дизайн, который определяет поток выполнения на высоком уровне. Чтобы использовать framework, вы должны написать свой код и вставить в определенные места (слоты потока выполнения) framework'а. Только после этого, потом, когда-нибудь, framework вызовет ваши классы (но не вы вызовете классы framework'a).
Читать Inversion of Control от Martin Fauler
🌃 🤟🏻
Пол Грэм: что такое хорошая прокрастинация
Для тех, кто в 🛸 , прокрастинация - это откладывание важных дел "на попозже", прикрываемое "полезной рутиной" (прибраться дома, побриться, etc). Прикрываемся мелочами, чтобы наебать себя - голос внутри говорит: смотри, я сделал что-то полезное, поэтому расслабься и забей, начнешь: проект, бизнес, отношения - попозже... Это был пример bad procrastination.
Good procrastionation
Пол Грэм пишет, что все его знакомые, кто отличился чем-то крутым - прокрастинируют правильно☝🏻. Они просто не занимаются мелкой рутиной, а занимаются решением действительно важных проблем. именно эти люди создают сумасшедшие проекты: реализуют новые идеи, делают научные открытия, создают прибыльный бизнес, пишут музыку и картины, запускают ракеты в космос🚀
Почитайте эссе Пола Грэма - он подробно рассказал, как действуют хорошие прокрастинаторы:
Читать эссе в оригинале
Читать перевод эссе на русском
Кто жмет масочку - не болейте друзья 🍏🍋
Для тех, кто в 🛸 , прокрастинация - это откладывание важных дел "на попозже", прикрываемое "полезной рутиной" (прибраться дома, побриться, etc). Прикрываемся мелочами, чтобы наебать себя - голос внутри говорит: смотри, я сделал что-то полезное, поэтому расслабься и забей, начнешь: проект, бизнес, отношения - попозже... Это был пример bad procrastination.
Good procrastionation
Пол Грэм пишет, что все его знакомые, кто отличился чем-то крутым - прокрастинируют правильно☝🏻. Они просто не занимаются мелкой рутиной, а занимаются решением действительно важных проблем. именно эти люди создают сумасшедшие проекты: реализуют новые идеи, делают научные открытия, создают прибыльный бизнес, пишут музыку и картины, запускают ракеты в космос🚀
Почитайте эссе Пола Грэма - он подробно рассказал, как действуют хорошие прокрастинаторы:
Читать эссе в оригинале
Читать перевод эссе на русском
Кто жмет масочку - не болейте друзья 🍏🍋
Что такое офигенный IT блог
Да я в курсе, что инет трещит по швам от блогов... с инфой, претендующей на важность. Но стоп, погодите... уже прошло 3 часа... (ОПЯТЬ! УЖЕ ТАКОЕ БЫЛО, КАК Я НА ЭТО СНОВА ПОПАЛСЯ) с того момента, когда я открыл второй раз в жизни, блог, этого, бля, Вастрика 😱
Ладно, это было охуенно, как и в прошлый раз...
Что там у него ?
Нууу.., крутые статьи про технологии, путешествия, софт, людей, книги, музыку, игры, много фотографий и разных мемчиков, а главное, что все "очень из жизни", а не из... кхм, ну вы поняли 🙂
Если вы пропадете после перехода по ссылке, простите, я не хотел. Но лучше почитать, чем не почитать блог этого, бля, Вастрика
До скорых 😜
Да я в курсе, что инет трещит по швам от блогов... с инфой, претендующей на важность. Но стоп, погодите... уже прошло 3 часа... (ОПЯТЬ! УЖЕ ТАКОЕ БЫЛО, КАК Я НА ЭТО СНОВА ПОПАЛСЯ) с того момента, когда я открыл второй раз в жизни, блог, этого, бля, Вастрика 😱
Ладно, это было охуенно, как и в прошлый раз...
Что там у него ?
Нууу.., крутые статьи про технологии, путешествия, софт, людей, книги, музыку, игры, много фотографий и разных мемчиков, а главное, что все "очень из жизни", а не из... кхм, ну вы поняли 🙂
Если вы пропадете после перехода по ссылке, простите, я не хотел. Но лучше почитать, чем не почитать блог этого, бля, Вастрика
До скорых 😜
vas3k.blog
Вастрик
Авторский блог о выживании в мире технологий и происходящем вокруг киберпанке
Dependency inversion principle
Что самое важное в вашем приложении ? - бизнес логика (часть кода, которая приносит или экономит деньги). Ваша БЛ не должна зависеть от других модулей (база данных, UI фреймворк, контроллеры). Поэтому, когда вы проектируете архитектуру приложения, вы стремитесь инвертировать зависимости. Один из способов это сделать - Dependency injection.
Dependency injection
Pure DI - в этом случае мы просто пробрасываем зависимости в constructor класса (то есть снаружи), и внутри класса используем их. Теперь класс не сам решает от чего зависеть, а кто-то решает снаружи него.
IoC-Container - подход, где биндинг зависимостей происходит "одним махом" и в специальном контейнере, после чего, вы просто используете ваши модули (руками уже не прокидываете при вызове ничего, все уже есть). Это очень поверхностное описание, но погодите... 🙂
Несколько недель назад я затянул в кодовую базу IoC-container, поэтому накопилось много хороших ссылок, которыми хочу поделиться.
Почитать/Посмотреть
🔸 Dependency Injection простыми словами (Андрей Мелихов, Девшахта). Рекомендую начать с него, чтобы въехать в тему с разных сторон и не тратить уйму времени.
Смотреть на youtube
🔹 RSconf2018. DI: DIY (James Akwuh). Хороший доклад на русском, ссылочку на него дал Андрей Мелихов.
Смотреть на youtube
🔸 Dependency Injection Container in JavaScript (Christopher T). Статья 2020 года, с примерами кода. Надо будет немного обкуриться, чтобы все понять, но пример достойный по сравнению с другими. Тем более родной JS 😄
Читать статью от Christopher T
🔹 Dependency Injection ( Jakob Jenkov). Более комплексное погружение в тему, с изучением разновидностей самих зависомтей и всего, что рядом.
Читать в оригинале, тут больше статей
Читать перевод на Хабре
🔸 Inversion of Control Containers and the Dependency Injection pattern (Martin Fowler). Статья от дядьки Фаулера, но тут надо запастись временем, как и с предыдущим источником.
Читать статью Мартина Файлера по теме
🔹 How To Refactor for Dependency Injection (Ondrej Balas)
Полезный сборник статей, я в частности воспользовался частью 2.
Читать часть 1 - cleanin up
Читать часть 2 - composition root
Читать часть 3 - larger applications
🔸 Есть люди, которые топят против DI, и вот одна из таких статей. Рекомендую мельком прочитать статью, но внимательно почитать комментарии к статье. Прям кладезь полезных примеров
Читать статью на Хабре
🔹 Дополнительные ссылки:
Хороший ответ на вопрос "Why do I need an IoC container ?" на stackoverflow
В проекте я использовал Inversify и было полезно почитать в догонку это:
Setting up InversifyJS in TS Project
Providing unmanaged constructor arguments
Happy coding 🤟🏻
Что самое важное в вашем приложении ? - бизнес логика (часть кода, которая приносит или экономит деньги). Ваша БЛ не должна зависеть от других модулей (база данных, UI фреймворк, контроллеры). Поэтому, когда вы проектируете архитектуру приложения, вы стремитесь инвертировать зависимости. Один из способов это сделать - Dependency injection.
Dependency injection
Pure DI - в этом случае мы просто пробрасываем зависимости в constructor класса (то есть снаружи), и внутри класса используем их. Теперь класс не сам решает от чего зависеть, а кто-то решает снаружи него.
IoC-Container - подход, где биндинг зависимостей происходит "одним махом" и в специальном контейнере, после чего, вы просто используете ваши модули (руками уже не прокидываете при вызове ничего, все уже есть). Это очень поверхностное описание, но погодите... 🙂
Несколько недель назад я затянул в кодовую базу IoC-container, поэтому накопилось много хороших ссылок, которыми хочу поделиться.
Почитать/Посмотреть
🔸 Dependency Injection простыми словами (Андрей Мелихов, Девшахта). Рекомендую начать с него, чтобы въехать в тему с разных сторон и не тратить уйму времени.
Смотреть на youtube
🔹 RSconf2018. DI: DIY (James Akwuh). Хороший доклад на русском, ссылочку на него дал Андрей Мелихов.
Смотреть на youtube
🔸 Dependency Injection Container in JavaScript (Christopher T). Статья 2020 года, с примерами кода. Надо будет немного обкуриться, чтобы все понять, но пример достойный по сравнению с другими. Тем более родной JS 😄
Читать статью от Christopher T
🔹 Dependency Injection ( Jakob Jenkov). Более комплексное погружение в тему, с изучением разновидностей самих зависомтей и всего, что рядом.
Читать в оригинале, тут больше статей
Читать перевод на Хабре
🔸 Inversion of Control Containers and the Dependency Injection pattern (Martin Fowler). Статья от дядьки Фаулера, но тут надо запастись временем, как и с предыдущим источником.
Читать статью Мартина Файлера по теме
🔹 How To Refactor for Dependency Injection (Ondrej Balas)
Полезный сборник статей, я в частности воспользовался частью 2.
Читать часть 1 - cleanin up
Читать часть 2 - composition root
Читать часть 3 - larger applications
🔸 Есть люди, которые топят против DI, и вот одна из таких статей. Рекомендую мельком прочитать статью, но внимательно почитать комментарии к статье. Прям кладезь полезных примеров
Читать статью на Хабре
🔹 Дополнительные ссылки:
Хороший ответ на вопрос "Why do I need an IoC container ?" на stackoverflow
В проекте я использовал Inversify и было полезно почитать в догонку это:
Setting up InversifyJS in TS Project
Providing unmanaged constructor arguments
Happy coding 🤟🏻
Тестирование: полезные ссылки
Четыре месяца назад делал тестовое для binance и одним из условий было написать интеграционные тесты, которые я до этого не писал 🙄. После того, как тестовое было написано, меня, конечно, понесло по теме дальше... 😄 Как результат, появилась новая охапка хороших ссылок. Держите:
🔸 ReactJSDay testing course 2019. Здесь я почитал про тесты вообще, про их разновидности в частности. Отсюда начал свои первые шаги в cypress (платформа для сквозного тестирования frontend'а в разных браузерах).
Читать статью
🔹 Unit testing in JS (Jesse Warden). Очень угарный тип, который доступно показывает, что такое юнит тестирование на JavaScript 🚀
Смотреть на youtube
🔸 Техники тест дизайна (Артем Быковец). Это прям🔥 для QA, но для того, кто в принципе пишет тесты не меньше полезного будет 😉
Смотреть на youtube
🔹 5 Questions Every Unit Test Must Answer (Eric Elliot). Хорошая, несколько философская статейка от Эллиота на понимание сути юнит тестирования. Сказал бы, что главных вопросов два: что ожидаем на выходе ? Что получили на выходе ?
Читать статью на medium
🔸 JavaScript & Node.js testing best practices. Кладезь умных параграфов, для любителей умных цитат на каждый день. Точно можно выудить что-то значимое, но скорее использовать как справочник с объяснением причин этих best practices.
Читать на github
🔹 Тестирование API (Антон из TerraSoft). Сам не смотрел, но отзывы хорошие, так что save на будущее.
Смотреть на youtube
See you😎
Четыре месяца назад делал тестовое для binance и одним из условий было написать интеграционные тесты, которые я до этого не писал 🙄. После того, как тестовое было написано, меня, конечно, понесло по теме дальше... 😄 Как результат, появилась новая охапка хороших ссылок. Держите:
🔸 ReactJSDay testing course 2019. Здесь я почитал про тесты вообще, про их разновидности в частности. Отсюда начал свои первые шаги в cypress (платформа для сквозного тестирования frontend'а в разных браузерах).
Читать статью
🔹 Unit testing in JS (Jesse Warden). Очень угарный тип, который доступно показывает, что такое юнит тестирование на JavaScript 🚀
Смотреть на youtube
🔸 Техники тест дизайна (Артем Быковец). Это прям🔥 для QA, но для того, кто в принципе пишет тесты не меньше полезного будет 😉
Смотреть на youtube
🔹 5 Questions Every Unit Test Must Answer (Eric Elliot). Хорошая, несколько философская статейка от Эллиота на понимание сути юнит тестирования. Сказал бы, что главных вопросов два: что ожидаем на выходе ? Что получили на выходе ?
Читать статью на medium
🔸 JavaScript & Node.js testing best practices. Кладезь умных параграфов, для любителей умных цитат на каждый день. Точно можно выудить что-то значимое, но скорее использовать как справочник с объяснением причин этих best practices.
Читать на github
🔹 Тестирование API (Антон из TerraSoft). Сам не смотрел, но отзывы хорошие, так что save на будущее.
Смотреть на youtube
See you😎
Simple made easy
Доклад "Simple made easy" стал "классикой", но если вы не смотрели, то очень рекомендую.
Первый шаг для более простой жизни, - говорит Rich Hickey, - это выбрать более простые вещи. Обычно мы выбираем более легкие вещи, но не более простые. Например, мы встречаем новую для нас задачу, которую ранее не решали. У нас есть два пути:
1. Решить задачу известными нам инструментами
2. Сперва изучить новый инструмент/подход/концепцию под эту задачу
Первый вариант - легкий, потому что нам уже знаком инструмент. Он как будто "под рукой". Наше решение скорее всего будет быстрым, но хрупким и в долгосрочной перспективе будет плохо масштабироваться.
Второй вариант - простой. Но не в смысле "легкий", а в смысле более правильный. Проще решать задачу подходящим для нее инструментом. Но никто не говорил, что изучить новый подход будет легко 🙂
Более подробную разницу между словами simple и easy расскажет Rich Hickey
Смотреть simple made easy на youtube
Go high 🏔
Доклад "Simple made easy" стал "классикой", но если вы не смотрели, то очень рекомендую.
Первый шаг для более простой жизни, - говорит Rich Hickey, - это выбрать более простые вещи. Обычно мы выбираем более легкие вещи, но не более простые. Например, мы встречаем новую для нас задачу, которую ранее не решали. У нас есть два пути:
1. Решить задачу известными нам инструментами
2. Сперва изучить новый инструмент/подход/концепцию под эту задачу
Первый вариант - легкий, потому что нам уже знаком инструмент. Он как будто "под рукой". Наше решение скорее всего будет быстрым, но хрупким и в долгосрочной перспективе будет плохо масштабироваться.
Второй вариант - простой. Но не в смысле "легкий", а в смысле более правильный. Проще решать задачу подходящим для нее инструментом. Но никто не говорил, что изучить новый подход будет легко 🙂
Более подробную разницу между словами simple и easy расскажет Rich Hickey
Смотреть simple made easy на youtube
Go high 🏔
YouTube
Simple Made Easy 2011 - Rich Hickey
I highly recommand the book 《Grokking Simplicity》, which is written by Eric Normand. It is full of principle and practice about how to write a software in simplicity way.
https://www.manning.com/books/grokking-simplicity
from infoq
https://www.infoq.com…
https://www.manning.com/books/grokking-simplicity
from infoq
https://www.infoq.com…
Модульность и SPR
В лекциях СИКП упоминалось, что мы способны строить сложные системы потому, что мы научились контролировать рост сложности таких систем. После недолгих раздумий на ум придет "очевидная" мысль: надо разбить систему на части, тогда будет проще ее понимать, развивать, ремонтировать.
Штош... привет SRP
Первая часть аббревиатуры SOLID, которая значит "Single Responsibility Principle". Один из важнейших принцип... да вы уже 100% в курсе, если прогаете хотя бы пол года. Но... блять, есть одна проблемка...- в понимании этого принципа, первой версии его описания и того, как его использовать в реальном проекте.
Роберт Мартин давно понял, что описание "A class should have only one reason to change" как бы не объясняет, что такое "reason to change" и что с ним вообще делать. В то время как фанатики и другие виды помешавшихся начинают бездумно перелопачивать всю кодовую базу.
Супер ссылка 🚀
Делюсь недавним открытием - статья, в которой показаны проблемы реального мира и о чем умолчал Роберт Мартин.. Ну вот прям очень рекомендую, а еще must have пройтись по ссылкам - особенно почитать вот эту бумагу - из нее черпал сам Роберт Мартин, и уже впоследствии родил понятие SRP.
Gnight 🌌
В лекциях СИКП упоминалось, что мы способны строить сложные системы потому, что мы научились контролировать рост сложности таких систем. После недолгих раздумий на ум придет "очевидная" мысль: надо разбить систему на части, тогда будет проще ее понимать, развивать, ремонтировать.
Штош... привет SRP
Первая часть аббревиатуры SOLID, которая значит "Single Responsibility Principle". Один из важнейших принцип... да вы уже 100% в курсе, если прогаете хотя бы пол года. Но... блять, есть одна проблемка...- в понимании этого принципа, первой версии его описания и того, как его использовать в реальном проекте.
Роберт Мартин давно понял, что описание "A class should have only one reason to change" как бы не объясняет, что такое "reason to change" и что с ним вообще делать. В то время как фанатики и другие виды помешавшихся начинают бездумно перелопачивать всю кодовую базу.
Супер ссылка 🚀
Делюсь недавним открытием - статья, в которой показаны проблемы реального мира и о чем умолчал Роберт Мартин.. Ну вот прям очень рекомендую, а еще must have пройтись по ссылкам - особенно почитать вот эту бумагу - из нее черпал сам Роберт Мартин, и уже впоследствии родил понятие SRP.
Gnight 🌌
Лютые доклады по webpack - часть 2
Первая часть материалов доступна вот по этому хэш тегу - #webpack_lectures_frontbase. А сейчас немного дискуссии + ссылок...
Я не сильно ратую за изучение webpack, но все же я вижу пользу в понимании того, как он работает. Почему ? Чтобы научиться настраивать проект from ZERO. Для этого вам придется изучить инфраструктуру современного front-end, что сильно апнет ваш уровень как разработчика. Инфраструктурой я называю библиотеки, тулзы и нативные вещи, вроде: babel + плагины, системы модулей, eslint, dotenv, переменные окружения, работа браузера, etc. После такого экспириенса вы станете смелее менять legacy вещи и улучшать проект, а это, согласитесь, звучит заманчиво🙂
Ссылки
🔥 Ronen Amiel - Build Your Own Webpack
Отличный доклад + лайфкодинг на тему как вообще работают сборщики. Можно сказать, что чел на коленке напишет игрушечный webpack, но в добавок даст хинты "почему именно так". Рекомендую!
🔸 Конфиг из create-react-app
Уверен, что примеров готовой настройки много, но одна из годных - от ребят из facebook, а именно, в репо давно замученного нами до дыр CRA 🙂
🔹 Webpack book на survivejs
Это бесплатная версия книги про webpack от Juho Vepsäläinen. Сразу скажу, что я лишь бегло просмотрел и понял, что она стоит изучения (думаю, что при необходимости можно и платную купить) 👌🏻
🔸 Как я стал лучше программировать
Да, это не совсем про webpack, но чтобы как-то дать противовес куче новых материалов, прочитайте параграф "не отвлекайтесь на мишуру", пусть он будет намордником для "собаки всезнайки"😉
#webpack_lectures_frontbase_2
Catch you later👨🏻💻
Первая часть материалов доступна вот по этому хэш тегу - #webpack_lectures_frontbase. А сейчас немного дискуссии + ссылок...
Я не сильно ратую за изучение webpack, но все же я вижу пользу в понимании того, как он работает. Почему ? Чтобы научиться настраивать проект from ZERO. Для этого вам придется изучить инфраструктуру современного front-end, что сильно апнет ваш уровень как разработчика. Инфраструктурой я называю библиотеки, тулзы и нативные вещи, вроде: babel + плагины, системы модулей, eslint, dotenv, переменные окружения, работа браузера, etc. После такого экспириенса вы станете смелее менять legacy вещи и улучшать проект, а это, согласитесь, звучит заманчиво🙂
Ссылки
🔥 Ronen Amiel - Build Your Own Webpack
Отличный доклад + лайфкодинг на тему как вообще работают сборщики. Можно сказать, что чел на коленке напишет игрушечный webpack, но в добавок даст хинты "почему именно так". Рекомендую!
🔸 Конфиг из create-react-app
Уверен, что примеров готовой настройки много, но одна из годных - от ребят из facebook, а именно, в репо давно замученного нами до дыр CRA 🙂
🔹 Webpack book на survivejs
Это бесплатная версия книги про webpack от Juho Vepsäläinen. Сразу скажу, что я лишь бегло просмотрел и понял, что она стоит изучения (думаю, что при необходимости можно и платную купить) 👌🏻
🔸 Как я стал лучше программировать
Да, это не совсем про webpack, но чтобы как-то дать противовес куче новых материалов, прочитайте параграф "не отвлекайтесь на мишуру", пусть он будет намордником для "собаки всезнайки"😉
#webpack_lectures_frontbase_2
Catch you later👨🏻💻
Recollect CSS knowledge
Не люблю верстку вообще и писать CSS в частности. Для меня CSS - миллиард деталей, которые запутывают. Зато я люблю делать красиво и это мотивирует глядеть в доки по CSS.
Недавно зарешивал баги в проекте и дошел до мест, где залихватски было навалено CSS правил. Что ж... без совета не обойтись, решил я, и как итог - полтора часа с коллегой на PP сессии. Было очень здорово (мне надо это написать, так как коллега читает мой канал)😄 Но потом я подумал...
Надо несколько освежить знания, но не закапываться в полноценные курсы от HTMLAcademy, а что-то проще. Нашел очень даже годный мини-курс, где инфрмация плотно сжата, есть что-то новенькое (ура!), но при необходимости можно пройтись по ссылкам и погрузиться в проблемный участок.
Читать курс от web.dev
Keep growing!🧗🏻♂️
Не люблю верстку вообще и писать CSS в частности. Для меня CSS - миллиард деталей, которые запутывают. Зато я люблю делать красиво и это мотивирует глядеть в доки по CSS.
Недавно зарешивал баги в проекте и дошел до мест, где залихватски было навалено CSS правил. Что ж... без совета не обойтись, решил я, и как итог - полтора часа с коллегой на PP сессии. Было очень здорово (мне надо это написать, так как коллега читает мой канал)😄 Но потом я подумал...
Надо несколько освежить знания, но не закапываться в полноценные курсы от HTMLAcademy, а что-то проще. Нашел очень даже годный мини-курс, где инфрмация плотно сжата, есть что-то новенькое (ура!), но при необходимости можно пройтись по ссылкам и погрузиться в проблемный участок.
Читать курс от web.dev
Keep growing!🧗🏻♂️
web.dev
Learn CSS | web.dev
An evergreen CSS course and reference to level up your web styling expertise.
Book: Unit Testing Principles, Practices, and Patterns
Привет ✋🏻
Короче, сидел смотрел на unit тесты в проекте... и в какой-то момент понял, что хватит 🤯 - пора бы уже их переписать и сделать это на совесть! Перейдем к делу - нашел качественную книгу 2020 года авторства Владимира Хорикова (программист с дофига-стажем и математическим бэкграундом). Для меня книга стала отличным подспорьем - заставляет понимать что такое хороший юнит тест - теперь сам себе могу обьяснить всю цепочку "почему так правильно".
Книга на русском
Книга на английском
Рекомендую посмотреть видео от автора - в книге тоже самое, только много детальнее ☝🏻
Эффективно unit тестирование
Good day to learn and stay strong 💡💪
Привет ✋🏻
Короче, сидел смотрел на unit тесты в проекте... и в какой-то момент понял, что хватит 🤯 - пора бы уже их переписать и сделать это на совесть! Перейдем к делу - нашел качественную книгу 2020 года авторства Владимира Хорикова (программист с дофига-стажем и математическим бэкграундом). Для меня книга стала отличным подспорьем - заставляет понимать что такое хороший юнит тест - теперь сам себе могу обьяснить всю цепочку "почему так правильно".
Книга на русском
Книга на английском
Рекомендую посмотреть видео от автора - в книге тоже самое, только много детальнее ☝🏻
Эффективно unit тестирование
Good day to learn and stay strong 💡💪
OZON
Принципы юнит-тестирования | Хориков Владимир купить на OZON по низкой цене (210123795)
Принципы юнит-тестирования | Хориков Владимир – покупайте на OZON по выгодным ценам! Быстрая и бесплатная доставка, большой ассортимент, бонусы, рассрочка и кэшбэк. Распродажи, скидки и акции. Реальные отзывы покупателей. (210123795)
Эффект бесконечных закладок в браузере
А правда, что ваши закладки в браузере не заканчиваются ?
Вы регулярно их читаете/удаляете, чувствуете облегчение, но каждый раз некая чёрная магия (блядские ссылки…) восстанавливает этот список и даже увеличивает… затем вы вздыхаете и идете наконец-то делать дела, так и не поборов списочек «очень важных знаний».
Rolf Dobelli написал бумагу про то, почему следует избегать новостей. Если извлечь несколько мыслей в тезисы, то вот:
1. Мы теряем (да уже потеряли) способность длительно и глубоко концентрироваться
2. Плохие новости заставляют наше тело вырабатывать гормоны стресса
3. Новости почти никогда не влияют на наши решения в жизни (вот так новость)
4. Новости пожирают наше внимание и время...
При чём тут новости ? Мы же не тупые, прошло 100 лет и мы выбросили телеки, а кто-то даже перестал покупать газету! Да, кстати, мы давно уже ставим AdBlock против рекламы и вообще, мы умнее всех этих пенсионеров… - хорошие новости! Но почему мы не успеваем справляться с потоками блогов «интересных людей», еженедельных обзоров «как работает React», желания знать всё больше... и сука блядских закладок в браузере ? Привет!🙂
Рубануть топором по закладкам выглядит как крайность и это не работает - рептилия снова начнёт сохранять (найдёт что и куда). Только тяжёлая артиллерия вдумчивого процесса переоценки того, что в жизни важно и почему - даёт результат (закрепляет ваше твердое решение глубоко, а не на поверхности).
Think about it 🌌
А правда, что ваши закладки в браузере не заканчиваются ?
Вы регулярно их читаете/удаляете, чувствуете облегчение, но каждый раз некая чёрная магия (блядские ссылки…) восстанавливает этот список и даже увеличивает… затем вы вздыхаете и идете наконец-то делать дела, так и не поборов списочек «очень важных знаний».
Rolf Dobelli написал бумагу про то, почему следует избегать новостей. Если извлечь несколько мыслей в тезисы, то вот:
1. Мы теряем (да уже потеряли) способность длительно и глубоко концентрироваться
2. Плохие новости заставляют наше тело вырабатывать гормоны стресса
3. Новости почти никогда не влияют на наши решения в жизни (вот так новость)
4. Новости пожирают наше внимание и время...
При чём тут новости ? Мы же не тупые, прошло 100 лет и мы выбросили телеки, а кто-то даже перестал покупать газету! Да, кстати, мы давно уже ставим AdBlock против рекламы и вообще, мы умнее всех этих пенсионеров… - хорошие новости! Но почему мы не успеваем справляться с потоками блогов «интересных людей», еженедельных обзоров «как работает React», желания знать всё больше... и сука блядских закладок в браузере ? Привет!🙂
Рубануть топором по закладкам выглядит как крайность и это не работает - рептилия снова начнёт сохранять (найдёт что и куда). Только тяжёлая артиллерия вдумчивого процесса переоценки того, что в жизни важно и почему - даёт результат (закрепляет ваше твердое решение глубоко, а не на поверхности).
Think about it 🌌
The account of the user that owns this channel has been inactive for the last 5 months. If it remains inactive in the next 27 days, that account will self-destruct and this channel may no longer have an owner.
The account of the user that owns this channel has been inactive for the last 5 months. If it remains inactive in the next 19 days, that account will self-destruct and this channel may no longer have an owner.
The account of the user that owns this channel has been inactive for the last 5 months. If it remains inactive in the next 10 days, that account will self-destruct and this channel may no longer have an owner.