isqualog

@isqualogVerifiedLive API

CategoryOtherLanguageRUFirst seenJul 06, 2026QualityVerified
Open in Telegram
Subscribers770
Avg views624
ERR81.0%
Price-- RUB
Price / subscriber--
Price / view--
Metrics updated: Jul 07, 2026
Recent posts
Европу накрыла heat wave, поэтому сегодня у нас рубрика РАСПАКОВКА В Германии кондиционеры делают, но не устанавливают. Как охлаждаться? Сгонял в аптеку и магаз, купил: 1. Охлаждающий гелевый пакет (справа снизу). В морозилку его, он замерзает, потом кладёте…
241Jun 26
Европу накрыла heat wave, поэтому сегодня у нас рубрика РАСПАКОВКА В Германии кондиционеры делают, но не устанавливают. Как охлаждаться? Сгонял в аптеку и магаз, купил: 1. Охлаждающий гелевый пакет (справа снизу). В морозилку его, он замерзает, потом кладёте на голову или куда вам там надо 2. Пакет гипотермический одноразовый (большой белый). На экстренный случай, если уходите куда-то или холодильник помер. Для использования ударьте его, внутренняя капсула порвётся, и он начнёт замерзать 3. Изотоник в таблетках. С потом теряем электролиты, с водой их не восполняем. Работает как терафлю — кидаете таблетку в воду, она шипит и растворяется, пьёте. 4. Протеиновое мороженое (ведёрко). Совмещаем приятное с полезным. 5. Физраствор, он же NaCl 0,9% (ампулки по центру). Это не от жары, я всегда ношу с собой и пополнил запасы. Мало ли что в глаз попадёт — промыть, да и в целом в экран смотрю, глаза сохнут — капаю иногда. Или ранку промыть Берегите себя
321Jun 26
Жизнь научила меня не смешивать разные изменения в одном PR Фичи, багфиксы, рефакторинг — у этих изменений разный контекст и разный уровень риска. Бывает, сядешь за новую фичу, и видишь, отрефакторить бы немного, тогда фича отлично ляжет. Ну рефачишь, по дороге еще какой-то баг обнаружил в соседней фиче, его поправил, заливаешь пулрик на 1к строк с этим всем. В чём проблема? Сложно одновременно всё ревьюить (разные контексты) но вам об этом ревьюеры и так скажут. Или будут морозить неделю, потому что такой PR читать лень. Но это не главное. Вот вас кое-как оревьюили, тестеры протестировали, выкатили на прод. Бум! Какая-то проблема проскочила все защиты и надо срочно откатывать. Тоже не проблема — мы же умные, роллбечим релиз. Но в мастере-то код сломан. И следующий релиз будет сломан. Тут головняк пропорционален частоте ваших релизов. Надо мастер тоже чинить. Быстрее всего — ревертнуть. Но как? Допустим, проблема в той новой фиче, и откатить нужно именно её. Но вы в том же PR ещё багу починили, отревертите тот PR — бага вернётся. А ещё рефакторинг сделали (разный уровень риска). А ваши коллеги может уже понаписали там что-то поверх, будете ревертить — конфликтов не оберётесь. Короче, удачи. А если бы вы в трёх отдельных PR сделали то же самое, ревертнули бы только фичу. Опенсорс тоже говорит об этом, вспомните React 18.3 . Они там прямо говорят, что к предыдущей версии они добавили лишь ворнинги для подготовки к react 19. Чтобы обеспечить 3-шаговое обновление: Шаг 1: Обновляетесь до 18.3 — если вы были на 18.2, то код совместим Шаг 2: Чините все ворнинги и deprecations — короче активно шатаете кодовую базу ... тут вы даже можете пожить с этим какое-то время и убедиться что всё ок ... Шаг 3: Обновляетесь до 19.0 — это должно пройти практически бесшовно, если вы на шаге 2 всё починили сгорел прод? ну откатываете версию, а код не надо трогать То же самое при внедрении новых правил линтеров: 1. Сначала приводите код в соответствие правилу 2. Потом врубаете его на всех Это перекликается с идеей Branch by abstraction из TBD . Там большие изменения не могут долго жить в отдельной ветке. Их дробят на маленькие безопасные шаги, которые можно быстро влить и быстро откатить. О чём надо себя спросить перед открытием PR: как я буду в случае чего это ревертить?
455May 5
Привет, а вот и новое видео! В прошлой серии мы залезли в одну функцию сортировки и улучшали её. В этот раз смотрим шире — почему так больно работать с компонентом и откуда берутся данные. А конкретно: — выносим бизнес-логику из React компонента — разбираемся с концепцией derived state — используем селекторы в Zustand — пишем тесты 💚 на стор без React и DOM — и даже ловим классическую ошибку с getSnapshot в Next.js Постарались сделать формат более живым, много обсуждений, сомнений и реальных решений по ходу. Получился почти час 😅 наливайте чайку и залетайте к нам https://youtu.be/oKbi-K2kj4Q
470Apr 16
Layers vs Vertical Slices Кирилл Мокевнин (Hexlet) набросил , как файлы класть — по типу или по домену? Для меня меня на фронтенде это вопрос давно решенный: если сервис больше чем 2 странички, то, конечно, по фичам. Иначе, чтобы поправить какую-то мелочь, надо по 5 папкам лазить. 📗 Главный принцип: low coupling, high cohesion Недавно был на проекте: 90к строк кода, 4 фронтендера. Код разложен по слоям: consts, utils, hooks, api, components, pages. Так там утилит было на ~20к строк (четверть кодовой базы!), в них лежала почти вся логика приложения. В константах лежало 202 файла. Тип пропсов компонента из src/components/statistics/CohortsTable.tsx лежал в src/types/statistics/CohortsTable.d.ts . Постоянные проблемы с циклическими зависимостями. Ребята генерили новый код, похожий на старый — трудно было найти нужное. Когда в ру-язычной фронтенд-тусовке говорят про vertical slices, вспоминают FSD . Имхо, челы перегибают палку. Зачем деление на widgets/features/entities? Это тащит нас обратно — в low cohesion, high coupling. Поэтому туда не ходим, keep it simple, stupid. И вот мы пару недель обсуждали, какие есть проблемы, почему больно это поддерживать, почему даже мелкие задачки занимают столько времени. В итоге проблема «хз че где» вышла на первое место по скору ICE (Impact × Confidence × Ease). Мы выработали структуру и правила. Самое сложное было — выделить доменные сущности, об этом никто раньше не думал. Ещё за неделю раскидали 80% файлов, жить сразу стало легче. Подробнее писал в блоге компании (опубликовали в мой последний день там лол) В src осталось три папки: • app — рутовый компонент, провайдеры • features — самая соль по доменам • shared — общие компоненты В каждой фиче (опционально): pages , ui , store , api , utils , const , types . При этом если какие-то константы, типы или хелперы нужны только для одного компонента, они идут в папку этого компонента. На уровень фичи поднимается только то, что нужно для нескольких модулей в ней. Один коллега боялся, что пути/будут/вот/такие/длинные/ужас/кошмар. Но .../ui/Component это последний левел глубины. Внутри компонента всё плоско. Если меньше 10-15 файлов в папке, доп. уровни не нужны: src/features/apps/ui/AppsTable/ AppsTable.tsx AppsTable.module.css DesktopRow.tsx MobileRow.tsx CellWrapper.tsx useColumns.tsx formatter.ts Дальше учимся давать имена сущностям из вонючего ящика utils и выделять их из файлов по тыще строк. Типовые куски: • adapters/mappers — из ответов API в структуру, удобную для фронтенда и обратно — обычно в src/features/<feature>/api • validators — валидаторы/схемы для формочек — к соотв. компоненту • formatters — как мы даты форматируем и т.п. — к компоненту Выкидываем barrel-файлы ( index.ts с реэкспортами) из папок, которые не являются модулями : • src/features/apps/ui/AppsTable —  модуль (компонент), кладём index.ts , реэкспортируем «публичный интерфейс» — скорее всего, это сам <AppsTable /> и его пропсы. А всякую внутреннюю шелуху типа форматтеров или useColumns не реэкспортим • src/shared/routing —  модуль , кладём index.ts, реэкспортируем всякие константы маршутов, функции для их построения и тп • src/features/apps/ui/ — не модуль , а просто папочка организационная 👉 Писал про barrel-файлы у себя в блоге . Откуда я знал, что всё это сработает? Потому что уже строил такую архитектуру на проекте в Яндексе, который был крупнее, и мы жили так пару лет и всё отлично работало и скейлилось. Сейчас, посмотрев на проекты в других компаниях, понимаю, что dev experience на этом проекте был лучшим. Зачем мы 2 недели обсуждали, если я сразу «знал, как надо»? Чтобы: • провалидировать, что это решит проблемы именно текущего проекта, и именно самые больные • адаптировать подход к проекту и команде, срезать углы, что-то улучшить • ребята вовлеклись и участвовали в принятии решения, люди гораздо лучше делают то, что решили сам
546Mar 28