Следите за зависимостями

Однажды обратил внимание, что у коллег размер проекта (the initial size of the app) перевалил за 10 Мб. Пятничным вечером, когда было скучно, решил посмотреть, в чём там дело, можно ли сделать что-то ощутимое небольшими усилиями.

В проекте практически нет медиафайлов, поэтому сразу смотрим на скрипты и видим монстра под названием vendor.js, который весит 9550 Кб, всё остальное значительно меньше. Для анализа содержимого воспользуемся инструментом webpack-bundle-analyzer.

А если без «если»?

В программировании условия («операторы ветвления») являются базовой конструкцией, но зачастую можно не писать в лоб if, а использовать более подходящие варианты, выразительные и лаконичные.

В примерах будет использован джаваскрипт.

Кнопки взаимодействия

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

Что ж, давайте его проверим. Как обстоят дела с дёрганием подсказки?

Нервный тик интерфейса

Порой на сайтах у интерактивных элементов есть неприятные «заколдованные» места. Когда наводишь туда курсор, то попадаешь в некий «цикл дёрганий». Связано это со сменой состояний, когда срабатывает действие на hover, что-то происходит, под курсором оказывается другая логическая область, это что-то исчезает, и ты вновь оказываешься на начальной точке, вызывая первоначальное действие.

Покажу пример. Вот есть Твиттер, посмотрим на основной компононет — твит.

Сделай хоть что-нибудь

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

Что толку от голосования в ТСЖ?

Зачем ходить на выборы мэра, мой голос ничего не решает.

Я не могу повлиять на чистоту и благоустройство своего района.

Разве я могу взять и спасти экологию? Помочь обездоленным?

Список репозиториев

Не так давно на Гитхабе у репозиториев появилась кнопка Used by со счётчиком, который показывает количество зависимых репозиториев. По клику мы попадаем на страницу со списком.

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

Как сверстать кнопку

— А что там сложного? Ставишь тег button и стилизуешь его.

— Как бы да, но нет. Множество компаний совершают одни и те же ошибки. Смотри, какое сообщение я получил на сайте гуглопочты:

— Ох, как же так получилось?

Распростра­нён­ные ошибки в русском языке

Расскажу не про типичные (но не теряющие актуальности) «тся/ться», «в течение» и пр., которые в мало-мальски подготовленных текстах и в переписке с хоть сколько-нибудь грамотными людьми встретишь нечасто, а про такие ошибки, которые ежедневно можно наблюдать у дикторов, различных ведущих, в аудио- и видеорекламе, статьях, плакатах и т. д.

Склонение числительных

Длинные числа порой пытаются начать склонять, но уже на втором-третьем слове скатываются в именительный падеж, а иногда и всё число выдают в именительном падеже, сделав перед ним некую паузу, что звучит нелепо. Например, «от 5263» произносят как «от пяти тысяч двести шестьдесят три» или «от... пять тысяч двести шестьдесят три» вместо «от пяти тысяч двухсот шестидесяти трёх».

Отдельную проблему составляет склонение таких простых чисел, таких как 300, 400 и т. д. В родительном падеже вместо окончания -сот зачем-то используют -ста: «более пятиста» вместо «более пятисот», «до шестиста» вместо «до шестисот».

CSS-анимации

На собеседованиях я часто спрашивал, какие CSS-свойства можно анимировать. Почему-то многих он ставил в тупик, кто-то вспоминал отдельные свойства, но сформулировать общее правило не получалось. А ведь всё довольно просто. Что вообще такое «анимация»? Это некое изменение внешнего вида, имеющее промежуточные положения, благодаря чему изменение происходит плавно, а не дискретно. У чего бывают промежуточные состояния? У всего, что можно измерить числами. Это может быть ширина объекта, его отступ, да даже цвет: будь то hex, rgba и пр., это всё числа. И нельзя анимировать display, имеющий определённый набор свойств.

Следующим был вопрос о стоимости анимации, какие же свойства можно использовать со спокойной душой, а с какими надо быть осторожными. Здесь достаточно запомнить три свойства: transform, opacity и filter (c которым не всё так просто).

Если у нас есть некий элемент, который мы хотим подвигать туда-сюда, то почему же его двигать лучше при помощи transform, а не left, margin или чего-то ещё?

Выставление рейтинга

Несколько лет назад я реализовывал подобный элемент — выставление рейтинга пользователем. И вот вновь столкнулся с подобной задачей. Но вариант копирования решения со старого проекта не рассматривался, ведь там просто сборище дивов и куча jQuery (а по-другому я и не умел). Поэтому, начал рассуждать, как сделать лучше.