SOLID в картинках
SOLID — распространённая тема у программистов. Если кратко, то это набор правил и подходов к разработке, при которых архитектура приложения получается и остаётся лёгкой, гибкой и читаемой. Знание SOLID можно встретить в требованиях почти к каждой вакансии разработчика.
Всего этих правил 5. Смысл каждого описан на картинках выше — на примерах разбирают проблему в ООП и принцип, который эту проблему решает. А в этой статье детальней рассказывают про каждый из них. Если кратко:
S — Single Responsibility — Каждый программная сущность должна отвечать только за одну операцию.
O — Open-Closed — Классы должны быть открыты для расширения, но закрыты для модификации.
L — Liskov Substitution — Объекты дочерних классов должны быть способны заменить объекты родительских классов.
I — Interface Segregation — Не следует ставить клиента в зависимость от методов, которые он не использует.
D — Dependency Inversion — Сущности должны зависеть от абстракций, а не от конкретных деталей.
#solid #теория
SOLID — распространённая тема у программистов. Если кратко, то это набор правил и подходов к разработке, при которых архитектура приложения получается и остаётся лёгкой, гибкой и читаемой. Знание SOLID можно встретить в требованиях почти к каждой вакансии разработчика.
Всего этих правил 5. Смысл каждого описан на картинках выше — на примерах разбирают проблему в ООП и принцип, который эту проблему решает. А в этой статье детальней рассказывают про каждый из них. Если кратко:
S — Single Responsibility — Каждый программная сущность должна отвечать только за одну операцию.
O — Open-Closed — Классы должны быть открыты для расширения, но закрыты для модификации.
L — Liskov Substitution — Объекты дочерних классов должны быть способны заменить объекты родительских классов.
I — Interface Segregation — Не следует ставить клиента в зависимость от методов, которые он не использует.
D — Dependency Inversion — Сущности должны зависеть от абстракций, а не от конкретных деталей.
#solid #теория
Тест — Хорошо ли вы знаете принципы SOLID?
В прошлом посте рассказывали про принципы SOLID. Они помогают писать и поддерживать гибкий, читаемый и масштабируемый код.
Теперь предлагаем проверить усвоенные знания на нашем тесте. Всего в нём 10 вопросов. Результатами можно поделиться в комментариях.
#solid
В прошлом посте рассказывали про принципы SOLID. Они помогают писать и поддерживать гибкий, читаемый и масштабируемый код.
Теперь предлагаем проверить усвоенные знания на нашем тесте. Всего в нём 10 вопросов. Результатами можно поделиться в комментариях.
#solid
Как стать айтишником — ответы на популярные вопросы
Какой язык изучать, как мотивировать себя, где начинать начинающему — эти вопросы задаёт практически каждый айтишник на старте своего обучения.
В данной статье руководители IT-компаний отвечают на эти и другие вопросы, а также делятся полезными советами на старте. Разбирают темы общего плана, поэтому ответы будут полезны специалистам любого стека.
Какой язык изучать, как мотивировать себя, где начинать начинающему — эти вопросы задаёт практически каждый айтишник на старте своего обучения.
В данной статье руководители IT-компаний отвечают на эти и другие вопросы, а также делятся полезными советами на старте. Разбирают темы общего плана, поэтому ответы будут полезны специалистам любого стека.
Tproger
Как стать айтишником
О том, как стать айтишником, для начинающих IT-специалистов и тех, кто хочет сменить профессию рассказали руководители IT-компаний.
Что такое .gitignore-файл?
gitignore — это файл конфигурации, который используется в системе контроля версий Git для указания файлов и директорий, которые должны быть проигнорированы Git при отслеживании изменений в репозитории.
Зачем он нужен?
— Исключение временных файлов. Игнорирует файлы, создаваемые в процессе разработки, такие как
— Платформозависимый код. Игнорирует файлы, специфичные для ОС, например,
— Защита чувствительных данных. Предотвращает случайное добавление паролей и ключей API в репозиторий.
Пример синтаксиса файла:
Чтобы вручную не составлять .gitignore-файл, можно воспользоваться сервисами с готовыми конфигами. Например gitignore.io — указываете используемые в проекте технологии и получаете заполненный файл.
#git
gitignore — это файл конфигурации, который используется в системе контроля версий Git для указания файлов и директорий, которые должны быть проигнорированы Git при отслеживании изменений в репозитории.
Зачем он нужен?
— Исключение временных файлов. Игнорирует файлы, создаваемые в процессе разработки, такие как
*.pyc
и node_modules/
.— Платформозависимый код. Игнорирует файлы, специфичные для ОС, например,
.DS_Store
и Thumbs.db
.— Защита чувствительных данных. Предотвращает случайное добавление паролей и ключей API в репозиторий.
Пример синтаксиса файла:
# Игнорирование временных файлов Java (файлы с указанным расширением)
*.class
# Игнорирование настроек проекта IntelliJ IDEA (все файлы в указанной папке)
.idea/
Чтобы вручную не составлять .gitignore-файл, можно воспользоваться сервисами с готовыми конфигами. Например gitignore.io — указываете используемые в проекте технологии и получаете заполненный файл.
#git
Паттерны MVC, MVP и MVVM — что это
Семейство MV*-паттернов — популярная тема у программистов. Про неё любят спрашивать на собеседованиях и указывать в вакансиях. Давайте разберёмся, что это:
MV*-паттерны — паттерны для организации архитектуры кода. Они улучшают его строение, читаемость и обеспечивают эффективную работу приложения. Каждый из них разделяет программную логику на 3 составляющих:
MVC — Model-View-Controller. Тут модель хранит в себе данные, представление отвечает за отображение этих данных, а контроллер реагирует на ввод пользователя, оповещая об этом модель.
MVP — Model-View-Presenter. Тут модель хранит бизнес-логику, представление отображает данные, а презентер реализует взаимодействие между моделью и представлением.
MVVM — Model-View-ViewModel. Модель отвечает за хранение данных и бизнес-логику. Представление — отображает данные и обрабатывает пользовательский ввод. Модель представления преобразует данные из модели для представления и уведомляет модель о вводе.
Подробнее в статье.
Семейство MV*-паттернов — популярная тема у программистов. Про неё любят спрашивать на собеседованиях и указывать в вакансиях. Давайте разберёмся, что это:
MV*-паттерны — паттерны для организации архитектуры кода. Они улучшают его строение, читаемость и обеспечивают эффективную работу приложения. Каждый из них разделяет программную логику на 3 составляющих:
MVC — Model-View-Controller. Тут модель хранит в себе данные, представление отвечает за отображение этих данных, а контроллер реагирует на ввод пользователя, оповещая об этом модель.
MVP — Model-View-Presenter. Тут модель хранит бизнес-логику, представление отображает данные, а презентер реализует взаимодействие между моделью и представлением.
MVVM — Model-View-ViewModel. Модель отвечает за хранение данных и бизнес-логику. Представление — отображает данные и обрабатывает пользовательский ввод. Модель представления преобразует данные из модели для представления и уведомляет модель о вводе.
Подробнее в статье.
Forwarded from Веб-страница
Топ-12 ресурсов для бесплатного изучения веб-разработки и программирования
Это одни из самых популярных образовательных IT-ресурсов. Конечно, всю информацию из них нужно структурировать, какие-то из них полностью на английском. Но факт в том, что для своей ниши они проработаны очень даже неплохо.
Сохраните, чтобы изучать то, что нужно вам:
— W3School: https://www.w3schools.com
— Современный учебник JavaScript: https://learn.javascript.ru
— Codewars: https://www.codewars.com
— Refactoring Guru: https://refactoring.guru
— Web.dev: https://web.dev
— Harvard CS50 (2023): https://www.youtube.com/watch?v=LfaMVlDaQ24
— Geeks for geeks: https://www.geeksforgeeks.org
— Дока: https://doka.guide
— Egghead: https://egghead.io
— Freecodecamp: https://www.youtube.com/@freecodecamp
— LeetCode: https://leetcode.com/explore
— Developer Roadmaps: https://roadmap.sh
#инструменты #курс
Это одни из самых популярных образовательных IT-ресурсов. Конечно, всю информацию из них нужно структурировать, какие-то из них полностью на английском. Но факт в том, что для своей ниши они проработаны очень даже неплохо.
Сохраните, чтобы изучать то, что нужно вам:
— W3School: https://www.w3schools.com
— Современный учебник JavaScript: https://learn.javascript.ru
— Codewars: https://www.codewars.com
— Refactoring Guru: https://refactoring.guru
— Web.dev: https://web.dev
— Harvard CS50 (2023): https://www.youtube.com/watch?v=LfaMVlDaQ24
— Geeks for geeks: https://www.geeksforgeeks.org
— Дока: https://doka.guide
— Egghead: https://egghead.io
— Freecodecamp: https://www.youtube.com/@freecodecamp
— LeetCode: https://leetcode.com/explore
— Developer Roadmaps: https://roadmap.sh
#инструменты #курс
Участник Open Source — как им стать и зачем
Многие приложения и технологии, которыми мы пользуемся, содержат большое количество ПО с открытым исходным кодом. Это когда над кодом продукта могут работать не только непосредственно его разработчики, но и любые желающие программисты — всё бесплатно и доступно.
Работа с open source может помочь эффективно учиться и наращивать практические навыки. Также это отличный вариант для портфолио.
В этой статье рассказывают, зачем становиться участником OS, как это сделать и какие есть варианты работы (помимо написания кода).
#general
Многие приложения и технологии, которыми мы пользуемся, содержат большое количество ПО с открытым исходным кодом. Это когда над кодом продукта могут работать не только непосредственно его разработчики, но и любые желающие программисты — всё бесплатно и доступно.
Работа с open source может помочь эффективно учиться и наращивать практические навыки. Также это отличный вариант для портфолио.
В этой статье рассказывают, зачем становиться участником OS, как это сделать и какие есть варианты работы (помимо написания кода).
#general
This media is not supported in your browser
VIEW IN TELEGRAM
Игры, помогающие прокачать логику и понимание алгоритмов
Держите целую подборку игр (более 20 штук), которые отлично подойдут начинающим в программировании. Вот некоторые из них:
Colobot — знакомая многим игра для простого изучения программирования. Язык C-подобный. По сюжету нужно найти новую планету для жизни.
The Nand Game — бесплатная браузерка, где вы собираете компьютер, начиная с самых базовых элементов.
Screeps — ММО стратегия, где вы программируете поведение своих «юнитов».
The Signal State — игра в стиле постапокалипсиса, где вы играете за техника и должны решить 40 головоломок (это она на превью).
BOX-256 — 8-битный компьютер с 256 памяти и 16-цветным дисплеем. Для настоящих олдов.
Oh My Git! — игра для обучения Git. Там визуализируются внутренние структуры репозиториев. Игра опенсорс, так что можно покопаться в исходниках.
Держите целую подборку игр (более 20 штук), которые отлично подойдут начинающим в программировании. Вот некоторые из них:
Colobot — знакомая многим игра для простого изучения программирования. Язык C-подобный. По сюжету нужно найти новую планету для жизни.
The Nand Game — бесплатная браузерка, где вы собираете компьютер, начиная с самых базовых элементов.
Screeps — ММО стратегия, где вы программируете поведение своих «юнитов».
The Signal State — игра в стиле постапокалипсиса, где вы играете за техника и должны решить 40 головоломок (это она на превью).
BOX-256 — 8-битный компьютер с 256 памяти и 16-цветным дисплеем. Для настоящих олдов.
Oh My Git! — игра для обучения Git. Там визуализируются внутренние структуры репозиториев. Игра опенсорс, так что можно покопаться в исходниках.
Что лучше использовать: PyTorch или TensorFlow?
Хотите разобраться в инструментах машинного обучения? Давайте разберём в сравнении PyTorch и TensorFlow:
PyTorch — это простой инструмент, который хорошо дружит с Python и создан на базе библиотеки Torch.
TensorFlow — это большая система от Google Brain, поддерживающая различные платформы и языки программирования. Есть множество предварительно обученных моделей.
У первого из преимуществ простота, гибкость, удобство с Python. Но есть ограничения с визуализацией и сервированием моделей. А TensorFlow хорошо может в производительность и масштабируемость, но иногда подводит с обратной совместимостью и скоростью.
Эта статья поможет определиться с выбором из двух инструментов для конкретной задачи.
#pytorch #tensorflow #ml
Хотите разобраться в инструментах машинного обучения? Давайте разберём в сравнении PyTorch и TensorFlow:
PyTorch — это простой инструмент, который хорошо дружит с Python и создан на базе библиотеки Torch.
TensorFlow — это большая система от Google Brain, поддерживающая различные платформы и языки программирования. Есть множество предварительно обученных моделей.
У первого из преимуществ простота, гибкость, удобство с Python. Но есть ограничения с визуализацией и сервированием моделей. А TensorFlow хорошо может в производительность и масштабируемость, но иногда подводит с обратной совместимостью и скоростью.
Эта статья поможет определиться с выбором из двух инструментов для конкретной задачи.
#pytorch #tensorflow #ml
Чистим код: советы по именованию
Записываем в блокнотик:
— Все сущности должны иметь понятные и удобнопроизносимые имена (т.е. никаких
— Длина названия должна быть пропорциональна области видимости сущности. Вот почему итераторы в маленьких циклах можно называть
— Имена классов должны представлять собой существительные или их комбинации.
— Методы в своём названии должны содержать глагол, описывающий действие метода. Если глагол не подобрать — задумайтесь, точно ли эта сущность должна быть методом?
— Стоит избегать названий со словами
— Если есть группа переменных с общим префиксом, то его ставим в конце, а различные части — вначале:
#чистимкод
Записываем в блокнотик:
— Все сущности должны иметь понятные и удобнопроизносимые имена (т.е. никаких
a1, a2, a3, temp, foo
). Не бойтесь потратить на придумывание названия переменной более 5 секунд. В будущем вы от этого только выиграете. — Длина названия должна быть пропорциональна области видимости сущности. Вот почему итераторы в маленьких циклах можно называть
i
, j
, k
, а какие-то глобальные константы лучше по типу MAX_REQUEST_COUNT
.— Имена классов должны представлять собой существительные или их комбинации.
— Методы в своём названии должны содержать глагол, описывающий действие метода. Если глагол не подобрать — задумайтесь, точно ли эта сущность должна быть методом?
— Стоит избегать названий со словами
And
, With
, т.к. они нарушают принцип единой ответственности (хотя бывают и исключения).— Если есть группа переменных с общим префиксом, то его ставим в конце, а различные части — вначале:
StartButton, StopButton
, а не ButtonStart, ButtonStop
. Так проще находить нужное в группе нескольких переменных.#чистимкод
Учимся анимировать в CSS за 20 минут
CSS предлагает два метода анимирования: переходы (transitions) и анимации (animations). Переходы плавно изменяют свойства, а анимации контролируются по ключевым кадрам.
Для создания перехода используются свойства
Также есть утилитарные классы, которые упрощают использование анимаций:
Держите статью, где подробно разбирают процесс создания различных анимаций и объясняют принцип их работы.
#css #frontend
CSS предлагает два метода анимирования: переходы (transitions) и анимации (animations). Переходы плавно изменяют свойства, а анимации контролируются по ключевым кадрам.
Для создания перехода используются свойства
transition: duration
, timing
function
, delay
. Анимации создаются с помощью @keyframes
и параметров, таких как имя и длительность. Также есть утилитарные классы, которые упрощают использование анимаций:
slideInLeft
, slideInRight
, rotate
и bounce
. Держите статью, где подробно разбирают процесс создания различных анимаций и объясняют принцип их работы.
#css #frontend
Tproger
Как научиться анимациям в CSS за 2 минут
На Youtube-канале Slaying The Dragon вышло видео о том, как можно научиться CSS-анимациям, используя два пути.
Про ООП в картинках и с трансформерами
В программировании объектно-ориентированный подход подобен работе с конструктором, где вы создаёте сложные системы, собирая их из меньших, но более понятных частей — объектов. Каждый объект — это своего рода строительный блок, который хранит данные и действия, специфичные для него. Например, объект "автомобиль" может иметь свойства скорости и цвета, а также методы для езды и остановки.
Тема ООП очень распространена в IT и является своего рода "базой", которую должен понимать разработчик.
Держите лонгрид, в котором все понятия ООП объясняют не стандартными формулировками, а на примере строения трансформеров. Тут же разбирают работу геттеров/сеттеров, перегрузки и немного SOLID. Всё с примерами кода, чтоб легче было усвоить.
#теория
В программировании объектно-ориентированный подход подобен работе с конструктором, где вы создаёте сложные системы, собирая их из меньших, но более понятных частей — объектов. Каждый объект — это своего рода строительный блок, который хранит данные и действия, специфичные для него. Например, объект "автомобиль" может иметь свойства скорости и цвета, а также методы для езды и остановки.
Тема ООП очень распространена в IT и является своего рода "базой", которую должен понимать разработчик.
Держите лонгрид, в котором все понятия ООП объясняют не стандартными формулировками, а на примере строения трансформеров. Тут же разбирают работу геттеров/сеттеров, перегрузки и немного SOLID. Всё с примерами кода, чтоб легче было усвоить.
#теория