Дайджест по программированию №1: полезные статьи

21.06.2019
596
Подпишитесь, чтобы получать новые статьи на почту

Нетология собрала и законспектировала интересные и полезные статьи по программированию. Как для новичков, так и для более продвинутых разработчиков.

Обучение в онлайн-университете: профессия «Веб-разработчик с нуля»

«Пять ошибок, которые я допустил как ведущий разработчик», habr

Программист Альфред Ландик рассказал, какие ошибки допустил на должности ведущего разработчика и как делать правильно.

Что должен уметь ведущий разработчик:

  • думать обо всем процессе, а не только о своих задачах;
  • знать языки программирования и фреймворки, разбираться в архитектуре и иметь богатый опыт работы;
  • аргументировать свое мнение и договариваться с другими;
  • подбирать команду и направлять ее на достижение результата.

Какие ошибки допустил на позиции ведущего разработчика:

  1. Оверменеджмент — подробно рассказывал сотруднику о процессе, но тратил личное время и отучил сотрудника работать самостоятельно.
  2. Уступки руководителю в техническом решении — согласился внедрить технологию, хотя знал, что она провальная.
  3. Недостаток эмпатии и токсичность — жестко критиковал работу сотрудников, что сказывалось на их мотивации.
  4. Игнорирование заинтересованных сторон — не учитывал, кто заинтересован в проекте, какой уровень влияния у них и какие цели стоят перед заинтересованной стороной.
  5. Переоценка своих возможностей — бывает так, что задача кажется легкой и ее можно сделать за несколько часов, но в итоге она отнимает много времени.

«Встроенные функции Python: какие нужно знать и на какие не стоит тратить время», Tproger

В Tproger перевели статью разработчика Трея Ханнера о стандартных встроенных функциях Python.

В Python множество встроенных функций, классов и различных инструментов, которые входят в библиотеку. Кроме того, есть тысячи сторонних библиотек на PyPl.

Все функции Python разделили на группы, чтобы разобраться, какие нужны начинающему специалисту и принесут много пользы, а на какие не стоит обращать внимание.

Первые две группы встроенных функций — основные. Они нужны всем начинающим программистам на Python. Следующие две категории — специализированные. Пригодятся в зависимости от специализации.

Общеизвестные. Эти функции использует каждый новичок. К ним относят: print, len, str, int, float, list, tuple, dict, set, range.

Неочевидные для новичков. Эти функции нужно знать, но иногда новички в Python их пропускают. Это функции: bool, enumerate, zip, reversed, sum, min и max, sorted, any и all.

Функции, которые понадобятся позже. В самом начале изучения Python они могут не пригодиться, но понадобятся с усложнением проектов: open, input, repr, super, property, issubclass и isinstance, hasattr, getattr, setattr и delattr, classmethod и staticmethod, next.

Функции, которые когда-нибудь можно выучить. Они могут быть полезны в некоторых ситуациях: iter, callable, filter and map, Round, divmod, object.

Прочие специфические функции. Скорее всего, они будут не нужны, но если занимаетесь чем-то специализированным, то нужно обратить внимание: ord и chr, exec и eval, compile, bytes, bytearray и memoryview, frozenset, format, complex.

«Производительность фронтенда: разбираем важные метрики», habr

В блоге Mail.ru Group на Хабре рассказали, какие метрики нужно использовать для оценки производительности фронтенда.

Производительность — количество операций за определенный интервал времени. Но это не подходит к фронтенду, так как у каждого пользователя свой «фронтенд».

Чтобы понять, что происходит с проектом на каждой стадии работы можно использовать такие метрики.

Скорость загрузки страницы. Полный цикл от начала загрузки страницы до полной загрузки можно узнать из performance.timing.

Время первой отрисовки и интерактивности. Это момент, когда пользователь увидел результат, а интерфейс перешел в интерактивный режим. Понадобится Performance Paint Timing и PerformanceObserver.

Скорость реакции на действия пользователя. Две базовые метрики, которые подойдут любому проекту: first-event — время первого события, с помощью которой можно контролировать, как меняется время реакции пользователя от ваших действий;  latency — задержка при обработке некоторых событий.

FPS при прокрутке и анимациях. Это метрику обычно измеряют через requestAnimationFrame. Если нужно постоянно измерять FPS — подойдет FPSMeter. Но если нужно измерить плавность прокрутки страницы, то создаём прозрачный div (1x1px), добавляем transition: left 300ms linear, запускаем из одного угла в другой. Пока он анимируется, через requestAnimationFrame проверяем его реальный left.

Инициализация приложения. Главное правило — детализируйте, чтобы понять, что съело время от инициализации приложения до финального запуска.

Потребление памяти и трафика. Для памяти есть только нестандартизированный (Chrome only) performance.memory, который выдает низкие числа. Для трафика понадобится Timing-Allow-Origin и Resource Timing API — поможет не просто посчитать трафик, но и детализировать его.

«Умный парсер числа, записанного прописью», habr

На Хабре рассказали, как распарсить число, записанное прописью на русском языке.

Дано число «сто двадцать три», состоящее из трех слов (токенов). Каждому из слов соответствуют числа, которые суммируются:

"сто двадцать три" = сто + двадцать + три = 100 + 20 + 3 = 123

Если рассмотреть число «двести двенадцать тысяч сто пять», то все станет сложнее:

"двести двенадцать тысяч сто пять" = (двести + двенадцать) × тысяч + (сто + пять) = 212 * 1.000 + 105 = 212.105.

Когда в числе присутствуют тысячи и миллионы — оно делится на части, которые состоят из локального маленького числа. Фрагментов может быть много, но все они будут идти по убыванию множителя.

Выписываем возможные токены, которым поставим число:

Для парсинга нужно завести несколько величин:

  • Глобальный уровень — какой уровень был у последнего множителя.
  • Глобальное значение — сумматор, куда складывается результат перемножения локального числа и множителя.
  • Локальный уровень — какой уровень был у последнего токена.
  • Локальное значение — сумматор токенов, которые не являются множителями.

Пример работы алгоритма для числа «два миллиона двести двенадцать тысяч сто восемьдесят пять»:

Какой результат получили:

«8 самых распространенных ошибок веб-разработчика», proglib

В proglib перечислили восемь ошибок веб-разработчика, которые могут привести к серьезным последствиям.

Игнорирование ошибок на продакшене. Чтобы убедиться, что с кодом все нормально, программисты следуют технике TDD. Но часто забывают об уже запущенных проектах. Для отслеживания ошибок можно использовать: Sentry, TrackJS, Rollbar.

Внесение изменений непосредственно на сервере. Изменения в код проще вносить на сервере. Но такие изменения теряются при обновлении, поэтому придется выполнять двойную работу.

Простои при развертывании. Сайт отключается при развертывании кода на сервере. Нужно использовать политики развертывания, которые «накатывают» код на сервер без остановки.

Безопасность кода. Нужно хранить коды в недоступном для пользователей месте, например, в зашифрованных хранилищах или переменных ENV. В худшем случае разработчик рискует все потерять.

Общение с командой. Программист ошибается, когда не предупреждает команду о готовом или неудачном деплое.

Отсутствие резервного копирования. Чтобы избежать множества проблем — делайте резервную копию. Это поможет сохранить время и нервы в экстренных ситуациях.

Отсутствие кеширования. Всех бесит ожидание загрузки сайта, поэтому применяйте кеширование. Для этого можно использовать Caching и Lazy Loading.

Ручное развертывание. Ручной деплой очень сложный. За несколько кликов неопытный разработчик может уничтожить весь проект.

Читать еще: «Чего ждут от программистов: советы рекрутеров»


Мнение автора и редакции может не совпадать. Хотите написать колонку для «Нетологии»? Читайте наши условия публикации. Чтобы быть в курсе всех новостей и читать новые статьи, присоединяйтесь к Телеграм-каналу Нетологии.

Университет интернет-профессий
Мы используем файлы cookie
Чтобы улучшить работу сайта и предоставить вам больше возможностей для обучения. Продолжая использовать сайт, вы соглашаетесь с условиями использования файлов cookie.