5 ошибок Python-разработчиков, которые выдают новичка
У начинающих специалистов может складываться впечатление, что рабочий код — готовый код. По мере роста скилов и опыта, становится понятно, что код рекомендуется писать не только рабочим, но и чистым. А также поддерживать в разработке определённые стандарты. Они относятся не только к коду, но и к тестам, ведению Git, да и просто к базовым знаниям технологий.
Собрали для вас самые распространенные ошибки в Python-разработке в этой статье. Особенно полезной будет тем, кто собирает портфолио для трудоустройства или хочет получить простые, но практичные советы.
#советы #python
Чистим код: Функции
В прошлом посте разбирали основные принципы по именованию программных сущностей. А сегодня разберём как лучше писать функции, чтобы их можно было легко читать и понимать:
— Функция должна быть короткой (хотя есть и исключения). Сложно сказать о норме, но ориентироваться можно на значение не более 10-20 строк.
— Функция должна выполнять чётко одну операцию.
— Правило понижения: код должен читаться сверху вниз. Если в функции А вызывается функция Б, то Б должна следовать после А.
— Функция должна иметь как можно меньше аргументов, т. к. каждый аргумент — это контекст, про который должен знать разработчик. Если аргументов много и они связаны — следует упаковать аргументы в один объект.
— У функции не должно быть побочных эффектов — скрытых действий, о которых разработчик может не догадываться.
— Касательно комментариев к функциям от Роберта Мартина: "Комментарии должны компенсировать неудачу в выражении мыслей в коде. Комментарии — признак неудачи". Чистое именование функции и её реализация избавляет разработчика от необходимости написания для неё комментария. Конечно, есть и исключения: авторские права, TODO-листы, объяснения важности или предупреждения.
#чистимкод
Про дефолтные утилиты в Go и чистоту кода
В Go есть Go fmt — готовый инструмент для форматирования кода на Go. А также Golangci-lint — линтер для поиска ошибок.
Какие ещё утилиты есть в Go и как они делают код чище и проще для ревью и чтения — смотрите в новом выпуске avito.code. Инженер PaaS AvitoTech Павел Агалецкий рассказывает о полезных командах на примере живого кода.
Реклама ООО «Авито Тех», LjN8JtHrs
Продолжаем изучать SQL: Индексы
Индексация в SQL похожа на книжную индексацию, ускоряющую поиск данных. Благодаря индексам на порядок повышается скорость запросов. Индексы эффективны в больших базах данных и системах с плановыми обновлениями, но не рекомендуются для небольших таблиц, частых обновлений и столбцов с множеством null значений.
Держите статью, где подробно и простым языком объясняют принцип работы индексов и их необходимость в базах данных.
#sql
Шпаргалка по Markdown в одной картинке
Markdown — популярный язык разметки текста, который можно встретить практически где угодно: редакторы блогов, документации (как на GitHub и т. д.), базы знаний и трекеры (типа Notion, Todoist). Поэтому понимание хотя бы базового синтаксиса этой разметки точно не будет лишним для общей эрудиции любого разработчика.
Разметка простая и местами даже интуитивная. Например, вот так пишется # Заголовок
, вот так *жирный текст*
, а так список:1. элемент 1
2. элемент 2
Всё самое необходимое по Markdown можно найти в шпаргалке выше (источник). Там же для лучшего понимания приведён аналог на HTML каждого из элемента.
#markdown #шпаргалка
Дорожная карта для изучения Rust
Rust — это современный и безопасный язык программирования, который обеспечивает высокую производительность и защиту от ошибок. Начинающих в IT этот язык привлекает своей простотой и удобством в использовании, а также возможностью разработки быстрых и надёжных приложений.
Держите дорожную карту по изучению Rust с нуля. На сайте можно узнать, в какой последовательности лучше изучать темы, что от чего зависит и главное — получить краткую выжимку по каждому из пунктов, нажав на него.
#rust #roadmap
Что такое MVP простыми словами
MVP (Minimum Viable Product) — это базовая версия продукта с минимальным набором функций, необходимых для решения основной проблемы целевой аудитории.
Зачем это нужно?
MVP позволяет проверить продукт на аудитории, собрать фидбек и скорректировать план, затратив при этом минимум финансов и времени.
Пример MVP:
Простое мобильное приложение для заметок, которое позволяет создавать, редактировать и удалять записи. Это основная функциональность, необходимая для удовлетворения потребностей пользователей — без перегруженного интерфейса и сторонних фич.
Ошибочное представление MVP:
Создание приложения для заметок с множеством "технологичных" функций, таких как голосовые комментарии и анимированные эффекты, но без базовой функциональности, такой как редактирование существующих заметок. Такой подход уводит внимание от основной проблемы и увеличивает затраты на разработку.
Если хотите глубже познакомиться с концепцией MVP с советами и примерами, то держите эту статью.
#теория
Что такое хэш-таблицы и как они работают
Хэш-таблица — это одна из самых популярных структур данных. Про неё любят спрашивать на собеседованиях и в целом использовать в программировании. И вот почему:
Хэш-таблица позволяет очень быстро находить и организовывать данные в ней — количество элементов в таблице не влияет на время поиска по этой таблице (даже если их миллионы). Это возможно благодаря тому, что для каждого элемента, помещаемого в таблицу, специальной хэш-функцией вычисляется ключ, по которому этот элемент будет находиться. И в дальнейшем для поиска элемента, чтобы не делать перебор всего массива, нужно лишь заново вычислить ключ хэш-функцией и по нему получить искомое значение.
Если интересно, как именно работают хэш-таблицы и функции "под капотом", то держите видео на эту тему.
#теория
React Native vs. Flutter: что лучше?
Если только планируете вливаться в мобильную разработку, то можете стать перед выбором стека. Flutter и React Native — два основных инструмента для создания кроссплатформенных мобильных приложений. Оба позволяют разрабатывать приложения для iOS, Android и веб из одной кодовой базы.
Flutter предоставляет обширную библиотеку виджетов и плагинов, в то время как React Native — сторонние библиотеки и базовые компоненты.
Держите на заметку статью, где автор на практическом примере показывает разницу этих двух инструментов. Он создал чат-приложение с использованием Firebase в качестве бэкенда. React Native использует JavaScript и TypeScript, в то время как Flutter — язык Dart, оптимизированный для компиляции на разные платформы.
#mobile #react #flutter
Сделайте свой пет-проект в индустрии туризма!
Открыта регистрация на Московский туристический хакатон — соревнование по цифровизации индустрии туризма. Он пройдёт в два этапа: отборочный онлайн-этап и очный финал в Москве.
Общий призовой фонд: 7 500 000 рублей.
Ждём IT-специалистов, продуктологов, разработчиков, дизайнеров, аналитиков, креаторов и других специалистов, создающих прорывные технологические и продуктовые решения.
Вас ждут пять задач на стыке TravelTech и одной из дополнительных сфер:
— BookingTech;
— FinTech;
— RoadTech;
— ServiceTech;
— E-Com.
Окончание приёма заявок 11 марта, поторопитесь! Больше деталей на сайте.
Заполняйте заявку на хакатон и выигрывайте!
Реклама АНО "Проектный Офис по Развитию Туризма и Гостеприимства Москвы" ИНН 7703468243, LjN8K43ay
Чистим код: советы по именованию
Записываем в блокнотик:
— Все сущности должны иметь понятные и удобнопроизносимые имена (т.е. никаких a1, a2, a3, temp, foo
). Не бойтесь потратить на придумывание названия переменной более 5 секунд. В будущем вы от этого только выиграете.
— Длина названия должна быть пропорциональна области видимости сущности. Вот почему итераторы в маленьких циклах можно называть i
, j
, k
, а какие-то глобальные константы лучше по типу MAX_REQUEST_COUNT
.
— Имена классов должны представлять собой существительные или их комбинации.
— Методы в своём названии должны содержать глагол, описывающий действие метода. Если глагол не подобрать — задумайтесь, точно ли эта сущность должна быть методом?
— Стоит избегать названий со словами And
, With
, т.к. они нарушают принцип единой ответственности (хотя бывают и исключения).
— Если есть группа переменных с общим префиксом, то его ставим в конце, а различные части — вначале: StartButton, StopButton
, а не ButtonStart, ButtonStop
. Так проще находить нужное в группе нескольких переменных.
#чистимкод
Игры, помогающие прокачать логику и понимание алгоритмов
Держите целую подборку игр (более 20 штук), которые отлично подойдут начинающим в программировании. Вот некоторые из них:
Colobot — знакомая многим игра для простого изучения программирования. Язык C-подобный. По сюжету нужно найти новую планету для жизни.
The Nand Game — бесплатная браузерка, где вы собираете компьютер, начиная с самых базовых элементов.
Screeps — ММО стратегия, где вы программируете поведение своих «юнитов».
The Signal State — игра в стиле постапокалипсиса, где вы играете за техника и должны решить 40 головоломок (это она на превью).
BOX-256 — 8-битный компьютер с 256 памяти и 16-цветным дисплеем. Для настоящих олдов.
Oh My Git! — игра для обучения Git. Там визуализируются внутренние структуры репозиториев. Игра опенсорс, так что можно покопаться в исходниках.
Топ-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: freecodecamp" rel="nofollow">https://www.youtube.com/@freecodecamp
— LeetCode: https://leetcode.com/explore
— Developer Roadmaps: https://roadmap.sh
#инструменты #курс
Как стать айтишником — ответы на популярные вопросы
Какой язык изучать, как мотивировать себя, где начинать начинающему — эти вопросы задаёт практически каждый айтишник на старте своего обучения.
В данной статье руководители IT-компаний отвечают на эти и другие вопросы, а также делятся полезными советами на старте. Разбирают темы общего плана, поэтому ответы будут полезны специалистам любого стека.
Какие разработчики игр зарабатывают в 2024
В прошлом году начинающий разработчик Лука выпустил Vampire Survivors. Этот простой проект всего за несколько недель обогатил его на десятки миллионов. А Among Us был небольшим экспериментом от трёх инди-разработчиков. Несмотря на провальный релиз, разработчики продолжили работу. Спустя время игру случайно заметили стримеры. В итоге разработчики заработали на ней 100 млн долларов. Такие истории вдохновляют, но одновременно и искажают представление об индустрии.
Держите статью, где Роман Сакутин, эксперт в сфере геймдева, рассказывает о том, как действительно обстоят дела в релизе игр, а в частности — в Steam. Там вы узнаете про основные причины того, почему игры не продаются, как найти аудиторию своей игры и как правильно выбирать идеи.
#gamedev
Держите огромную подборку инструментов для веба
Автор потрудился собрать большое количество инструментов и разделить их на 30 категорий. В каждой категории несколько десятков сервисов, так что можно найти решение для почти любой задачи.
Среди категорий: шрифты, иконки, палитры, стоковое аудио, шаблоны кода, инструменты для дизайна и JS-фреймворков, а также многое другое. Поэтому такая подборка — универсальная шпаргалка для любого веб-разработчика.
#web #frontend
На чём писать сайт в 2024?
Рынок веб-разработки никогда не стоит на месте. Те технологии и инструменты, которые были популярны и востребованы пару лет назад, уже могут потерять свою актуальность в этом году. Поэтому, если планируете развиваться в веб-разработке, то держите шпаргалку, в которой рассказали об актуальных технологиях в вебе на этот год.
Если кратко, то: JS — основной язык для фронтенда, также остаются актуальными React, Angular и Vue. Для бэкенда выбор зависит от сайта: маленькие — WordPress, большие — PHP/Laravel, Python/Django, Ruby on Rails. Крупные компании выбирают Java/C#. Важными остаются SEO и мобильная адаптивность.
#web #backend #frontend
Гайд по подготовке к собеседованию по Kubernetes
Kubernetes (K8s) — это открытая платформа для автоматизации развёртывания, масштабирования и управления приложениями в контейнерах. Она предлагает инструменты для упрощения работы с контейнерами, например, Docker, и позволяет легко управлять приложениями в распределённой среде.
В этой статье исполнительный директор по разработке Газпромбанка делится обширным списком частых вопросов с собеседований на тему k8s. Среди них есть и базовые темы на понимание инструмента, и специфичные вопросы, по типу управления ресурсами, best practices и Kubernetes Service.
#собеседование #devops #k8s
Продолжаем изучать SQL — выбор данных и их сортировка
Сегодня разберём два популярных оператора в SQL — SELECT
и ORDER BY
.
Первый — оператор выбора. Он используется для извлечения каких-то конкретных данных из таблицы. Например, в таблице есть данные о именах студентов, их курсе и оценках. Чтобы получить только имена студентов, используем SELECT name FROM students
. Выбирать можно также сразу несколько параметров через запятую. Вот небольшая шпаргалка по этому оператору.
Второй — оператор сортировки. Вместе с ним используется оператор ASC
для сортировки от меньшего к большему, и DESC
— от большего к меньшему. Например, если нужно отсортировать имена учеников по их оценкам, начиная с самых высоких, то используем: ORDER BY score DESC
. По этому оператору тоже есть небольшая статья.
#sql
Над презентациями больше не прокрастинируем
Для тех, кто испытывает творческое напряжение во время верстки слайдов, разработали Tome — конструктор с ИИ, который:
— создаст типовую структуру презентации по коротком промпту (например, «напиши питч IT-стартапа в области медицины»);
— раскидает буллит-поинты, картинки по слайдам и даст их перегенерить при уточнении промпта;
— сгенерирует картинки, видео и анимирует переходы и многое другое.
How To
#нейросети
Как работает тёмная тема и как правильно её создать
В мире приложений тёмные темы стали не просто трендом, а хорошим тоном. Так интерфейс не нагружает глаза пользователя в тёмное время суток и экономит энергию на устройствах с OLED-экраном.
Держите статью о создании таких тем с учётом особенностей человеческой физиологии глаза. Тут обсуждают изменение цветовой гаммы в зависимости от времени суток и особенностей сумеречного зрения. Расскажут про теорию цвета и контраста, а главное — как правильно тестировать интерфейс с тёмной темой инженерным путём. И всё это на примерах картинок с уточками.
#ux #ui
Про ООП в картинках и с трансформерами
В программировании объектно-ориентированный подход подобен работе с конструктором, где вы создаёте сложные системы, собирая их из меньших, но более понятных частей — объектов. Каждый объект — это своего рода строительный блок, который хранит данные и действия, специфичные для него. Например, объект "автомобиль" может иметь свойства скорости и цвета, а также методы для езды и остановки.
Тема ООП очень распространена в IT и является своего рода "базой", которую должен понимать разработчик.
Держите лонгрид, в котором все понятия ООП объясняют не стандартными формулировками, а на примере строения трансформеров. Тут же разбирают работу геттеров/сеттеров, перегрузки и немного SOLID. Всё с примерами кода, чтоб легче было усвоить.
#теория
Учимся анимировать в CSS за 20 минут
CSS предлагает два метода анимирования: переходы (transitions) и анимации (animations). Переходы плавно изменяют свойства, а анимации контролируются по ключевым кадрам.
Для создания перехода используются свойства transition: duration
, timing
function
, delay
. Анимации создаются с помощью @keyframes
и параметров, таких как имя и длительность.
Также есть утилитарные классы, которые упрощают использование анимаций: slideInLeft
, slideInRight
, rotate
и bounce
.
Держите статью, где подробно разбирают процесс создания различных анимаций и объясняют принцип их работы.
#css #frontend
Что лучше использовать: PyTorch или TensorFlow?
Хотите разобраться в инструментах машинного обучения? Давайте разберём в сравнении PyTorch и TensorFlow:
PyTorch — это простой инструмент, который хорошо дружит с Python и создан на базе библиотеки Torch.
TensorFlow — это большая система от Google Brain, поддерживающая различные платформы и языки программирования. Есть множество предварительно обученных моделей.
У первого из преимуществ простота, гибкость, удобство с Python. Но есть ограничения с визуализацией и сервированием моделей. А TensorFlow хорошо может в производительность и масштабируемость, но иногда подводит с обратной совместимостью и скоростью.
Эта статья поможет определиться с выбором из двух инструментов для конкретной задачи.
#pytorch #tensorflow #ml
Участник Open Source — как им стать и зачем
Многие приложения и технологии, которыми мы пользуемся, содержат большое количество ПО с открытым исходным кодом. Это когда над кодом продукта могут работать не только непосредственно его разработчики, но и любые желающие программисты — всё бесплатно и доступно.
Работа с open source может помочь эффективно учиться и наращивать практические навыки. Также это отличный вариант для портфолио.
В этой статье рассказывают, зачем становиться участником OS, как это сделать и какие есть варианты работы (помимо написания кода).
#general
Паттерны MVC, MVP и MVVM — что это
Семейство MV*-паттернов — популярная тема у программистов. Про неё любят спрашивать на собеседованиях и указывать в вакансиях. Давайте разберёмся, что это:
MV*-паттерны — паттерны для организации архитектуры кода. Они улучшают его строение, читаемость и обеспечивают эффективную работу приложения. Каждый из них разделяет программную логику на 3 составляющих:
MVC — Model-View-Controller. Тут модель хранит в себе данные, представление отвечает за отображение этих данных, а контроллер реагирует на ввод пользователя, оповещая об этом модель.
MVP — Model-View-Presenter. Тут модель хранит бизнес-логику, представление отображает данные, а презентер реализует взаимодействие между моделью и представлением.
MVVM — Model-View-ViewModel. Модель отвечает за хранение данных и бизнес-логику. Представление — отображает данные и обрабатывает пользовательский ввод. Модель представления преобразует данные из модели для представления и уведомляет модель о вводе.
Подробнее в статье.
Что такое .gitignore-файл?
gitignore — это файл конфигурации, который используется в системе контроля версий Git для указания файлов и директорий, которые должны быть проигнорированы Git при отслеживании изменений в репозитории.
Зачем он нужен?
— Исключение временных файлов. Игнорирует файлы, создаваемые в процессе разработки, такие как *.pyc
и node_modules/
.
— Платформозависимый код. Игнорирует файлы, специфичные для ОС, например, .DS_Store
и Thumbs.db
.
— Защита чувствительных данных. Предотвращает случайное добавление паролей и ключей API в репозиторий.
Пример синтаксиса файла:# Игнорирование временных файлов Java (файлы с указанным расширением)
*.class
# Игнорирование настроек проекта IntelliJ IDEA (все файлы в указанной папке)
.idea/
Чтобы вручную не составлять .gitignore-файл, можно воспользоваться сервисами с готовыми конфигами. Например gitignore.io — указываете используемые в проекте технологии и получаете заполненный файл.
#git
Тест — Хорошо ли вы знаете принципы SOLID?
В прошлом посте рассказывали про принципы SOLID. Они помогают писать и поддерживать гибкий, читаемый и масштабируемый код.
Теперь предлагаем проверить усвоенные знания на нашем тесте. Всего в нём 10 вопросов. Результатами можно поделиться в комментариях.
#solid