JavaScript рефакторинг: балласт в проекте и как от него избавиться

JavaScript рефакторинг: избавляемся от балласта

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

Рефакторинг подходит для больших проектов: в текущем около 300 файлов историй, и примерно столько же компонентов. PR с лишним кодом унёс с собой 1.4к строк и улучшил время сборки почти на минуту (!).
Для малых проектов лучше сберечь усилия для каких-то более существенных улучшений.

Подробнее →

JavaScript рефакторинг: удаление мёртвого кода

JavaScript рефакторинг: удаление мёртвого кода

Как неиспользуемый код стухает и лежит в проекте заповедными нетронутными пластами: новый функционал обложили тестами и снапшотами и выкатили на прод. Через какое-то время, клиентский код или компонент, который пользовался этим функционалом, удалили — а общие утилиты, константы, моки и конфигурации остались по чьему-то недосмотру. Такой код больше не нужен и не используется, но невидим для линтеров и подсветки IDE: он импортируется в тестах и StoryBook (например), и выглядит полезным и вообще, при деле.

В текущем большом проекте я нашёл и удалил около 5к строк неиспользуемых функций и компонентов, а также ненужных стилей, тестов, историй StoryBook, снапшотов и одну картинку. Что интересно, снапшоты были далеко не большей частью пулл реквеста, зато нашлось множество устаревших компонентов, которые импортировались только в историях SB.
Кроме прочего, это ускорило время сборки проекта примерно на полминуты или 5%: мелочь, а приятно. Подробнее →

JavaScript антипаттерны

JavaScript антипаттерны

Парочка мелких антипаттернов, которые просачиваются на прод и об которые можно споткнуться. Оба шаблона связаны с оптимизацией условий и переписыванием их в более удобочитаемом виде: Замена продолжительных условий и Перегрузка switch (true).

Подробнее →

JavaScript: про ленивую обработку и сокращённые вычисления

Вы не знаете JS: про ленивую обработку и сокращённые вычисления

В моём экземпляре «Вы не знаете JS: Типы и грамматические конструкции» есть раздел про порядок выполнения логических операторов. Здесь есть неточность: результаты примеров выше обусловлены тем, что интерпретатор отбрасывает части выражения, которые не требуются вычислять.
Действуют принципы Ленивых вычислений (Lazy evaluation) и Вычислений по короткой схеме (Short-circuit evaluation):

Подробнее →

Музыка 2020-го

Альбомы 20 в хронологическом порядке

Guilty pleasures перестали быть guilty, я больше не стеснялся слушать КиШ и Сплин, да и вообще, не без Lacuna Coil.
Кроме того, понял, что определённый джаз — заумный, акустический, пространный, абстрактный или авангардный, спокен ворд и остальная концептуальщина вообще не вставляет. С чистой совестью махнул рукой на любые релизы, которые попадаются в этом жанре, и переключился на хард-боп и всё что вокруг, классный фьюжн и вообще приджазованные и прифанкованные вещи, которые слушаются безо всякого напряжения.

Всего в таблицу попали 509 записи, большая часть — альбомы. EP и синглы я слушаю редко, заносить в таблицу мне их лень.
9 альбомов с максимальной оценкой, 93 с оценкой «9».
Подробнее →

2020

Куда ты торопишься, маленький лягушонок?

В 2020-м было много разработки, музыки и гитары. Дежа вю, а может, признак мастерства. Кроме этого, было много сидения дома, локдаун, карантин и все эти слова, уже серьёзно натёршие.

Понял ли я что-то важное что за год? Думаю, что понял: Keep It Simple, Stupid.

Подробнее →

Новый раздел про книжки

Книжки

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

Вдохновлено Свалкой личных открытий: однажды я полночи караулил нашу кошку, которая отказывалась ходить в лоток, как все нормальные люди, и за один присест прочитал весь этот раздел у Людвига на сайте. Вдохновения хватило, чтобы снова начать вести логи, а кошка в ту ночь была вовремя схвачена и коврик спасён.

Музыка прошлого года

Музыка 2019

Ещё одна статья про итоги прошлого года, более специализированная и скорее всего, ещё более скучная (списки мои, списочки).

Весь 2019-й я вёл таблицу в гугл доках, куда записывал новые альбомы, которые слушал. В лог попали только абсолютно новые для меня записи, или те, которые я успел основательно забыть, или те, что не слушал лет пять или больше.
Альбомы-филлеры, которые я люблю и часто слушаю между делом, не учитывались.

Подробнее →

Аркадные видео-игры: первые годы

Computer Space: первый игровой аркадный автомат

Первые видео-игры по сегодняшним меркам выглядят невероятно примитивно, и тем не менее, всё ещё очаровательно. Когда читаешь спецификации железа, на котором это было сделано, просто не можешь поверить, насколько ограничены в ресурсах были разработчики, и какого труда стоило написать на чистом ассемблере хоть что-то, напоминающее игру.
Интересно, что первые игры часто даже не могли позволить себе AI из-за ограничений по памяти, и одни из самых первых массовых видео-игр чаще всего были соревнованием двух игроков против друг-друга.

Подробнее →

Обзор 2019-го

God send me a sign (Оломоуц)

Люблю подводить итоги: у меня тысяча списков, от прослушанных альбомов до расходов и анти-todo листов с планировщиком. Я сажусь, просматриваю их все за целый год: все фото, что я снял, все посты, что написал в социалки, все планы, сроки и таблицы. Это помогает систематизировать опыт, наглядно увидеть, как сработало то или иное решение, и сделать обо всём этом выводы.

В 2019-м было много разработки, музыки и гитары. Про гитару и музыку я планирую написать отдельно, а далее про то, чем я занимался целый год и что нового понял (и не понял тоже).

Подробнее →