
kirilljs
Сообщения
-
Тяжело ли быть программистом? -
Выгорание в ИТ миф или нет? -
Что-то математика не складывается@Mugiwara Ну эт типо сказки же про 300кк в наносек.
Нас ебут, а мы крепчаем -
Проверка стала проще с Zod: как обеспечить точность и качество формОх бекендеры, пришли со своим ООП и типизацией в наш функциональный и динамичный JS…
-
Ты фронтендер? Расскажу, как не сойти с ума среди React, Next.js и вечного «undefined»@Mugiwara Ну или
npm i vue@latest
-
Each child in a list should have a unique "key" propEach child in a list should have a unique "key" prop
Пример:
{items.map(item => <div>{item.name}</div>)}
Решение: Добавить уникальный key:
{items.map(item => <div key={item.id}>{item.name}</div>)}
-
Cannot update a component while rendering a different componentCannot update a component while rendering a different component
Причина: Вызов setState во время рендеринга другого компонента.
Пример:
function Parent() { const [state, setState] = useState(); return <Child setState={setState} />; } function Child({ setState }) { setState(42); // Вызов здесь запрещен! return <div>...</div>; }
Решение: Использовать useEffect для сайд-эффектов.
-
Object is possibly 'undefined'.ts(2532)const name = user.data.name; // Ошибка, если `user.data` может быть `undefined`
Причина: Не проверена возможность undefined или null.
Решение: Использовать опциональную цепочку (user.data?.name) или проверку:
if (user.data) { ... }
-
Type 'X' is not assignable to type 'Y'const [count, setCount] = useState<string>("0"); // Ошибка при попытке передать число
Причина: Несоответствие типов данных.
Решение: Указать правильный дженерик для useState:
const [count, setCount] = useState<number>(0);
-
JavaScript мемы -
Тяжело ли быть программистом?Если бы меня спросили, сложно ли быть программистом, я бы ответил — да.
Это не про “тыкание по кнопкам за 300к в наносек”️
, а про упорный мозговой труд:
— Решение алгоритмических головоломок,
— Построение логики в голове и в коде,
— Постоянное обучение и адаптацию.Но есть и хорошие новости!
Первые 2 года — самые сложные. После тонны статей, книг
и тысяч часов практики — всё становится проще. Опыт превращает хаос в понятные паттерны.
А при чём тут я?
Раз уж это мой блог, расскажу о себе в трёх словах:
1️⃣ Программист (очевидно!),
2️⃣ Рыбак(моя страсть!),
3️⃣ Штангист️
️ (правда, бывший — не поднимаю железо профессионально уже 5 лет).
Почему это важно? Потому что работа — не вся жизнь!
Многие коллеги из Москвы (эй, вы там!) зацикливаются на коде, забывая, что мир шире макбука. Записки к психологам? Попробуйте лучше…
Рыбалка vs. Психологи: мой лайфхак
Пару лет назад я открыл рыбалку — и это стало спасением.
Почему стоит попробовать:
— Неделя стресса? 3 часа на пруду = перезагрузка мозга,
— Поймал рыбу? Эндорфиновый взрыв(никакой психолог так не поднимет настроение!),
— Бонус: свежий воздух вместо душного офиса.Совет коллегам: Берите удочку, а не антидепрессанты!
Зацените какого судака поймал на волге осенью!
️
️ Качалка > Копания в мозгах
Почему тренер лучше психолога:
1️⃣ Дешевле(сеанс психолога = месяц абонемента),
2️⃣ Мотивация(деньги уплачены — придется ходить!),
3️⃣ Тренер-психолог 🧠— хороший наставник и выслушает, и мышцы прокачает.
И да — это профилактика выгорания. Проверено!
Финал с кошачьим twist
Работаю я не из дома (только по пятницам — лень бороться с пробками). Зато дома меня ждёт главный код-ревьюер — моя кошка Уточка. Ей можно кричать:
«ПОЧЕМУ ЭТОТ КОД НЕ РАБОТАЕТ???»
…Правда, ответа не будет. Но моральную поддержку гарантирую!P.S. Найдите хобби — и код, и жизнь станут ярче.
-
JavaScript мемы -
Ты фронтендер? Расскажу, как не сойти с ума среди React, Next.js и вечного «undefined»Привет, я Кирилл. Я пишу код на JavaScript уже три, пять или 9 лет ?, и если вы ждёте историй про «успешного программиста с кофе на фоне MacBook» — пролистайте дальше. Здесь будет правда: гневные коммиты, бессонные ночи с документацией и вечная война между «оно работает» и «почему оно работает?».
JavaScript: где «легко» — это ловушка
JavaScript кажется дружелюбным, пока не столкнёшься с async/await в цепочке промисов, которые внезапно resolve в
undefined
. А потом оказывается, что проблема была в опечатке переменной. Знакомо? Да, это каждый день.️
️
Писать на чистом JS сейчас почти никто не будет — все бегут к фреймворкам. Но и там рай не наступает.А начиналось так красиво:
document.querySelector('button').addEventListener('click', () => { alert('Кирилл, ты попал!'); });
React: любовь-ненависть длиною в props
React — это как собрать мебель из IKEA: вроде инструкция есть, но половину деталей не понимаешь, зачем они.
Компоненты? Легко. Жизненный цикл? Уже устарело. Хуки? «Ну, это просто функции», — говорят в туториалах. А потом ты пишешьuseEffect
и три часа дебагаешь, почему стейт обновляется на один рендер позже.const [data, setData] = useState(null); useEffect(() => { fetchData().then((res) => { setData(res); // А вот и нет, данные «уплывут» если компонент размонтируется }); }, []);
Совет от меня: если
useEffect
вызывает панику — вы не одиноки. Документация React читается как роман Кафки: вроде всё по-человечески, но смысл ускользает.Next.js: «Мне нужен SSR» vs «Что опять сбилась сборка?»
Next.js решает проблемы, о которых вы не знали, пока не начали его использовать. Хотите SSR? Пожалуйста. Статическую генерацию? Без проблем. А потом вы тратите день, чтобы заставить
getStaticProps
правильно работать с динамическими роутами, и понимаете, чтоfallback: true
— это не магия, а головная боль.Плюсы? Да, проект масштабируется.
Минусы? Конфигурация Webpack в Next.js — это как попытка починить реактивный двигатель на лету. И да, если увидите в ошибкеModule not found: Can't resolve 'fs'
— добро пожаловать в клуб.А еще есть… «Экосистема»
️
- TypeScript: «Почему ты ругаешься на string | undefined? Я же проверил!».
- Redux, Zod: «Ты точно нужен? Может, Context API хватит? Ой, опять перерисовывается всё».
- Тесты: Пишешь их два дня, а потом менеджер говорит: «Мы жмём дедлайн, вырежи пока».
Зачем я это делаю?
Потому что когда после 20 попыток страница наконец рендерится без ошибок, а анимация не лагает — это кайф. Потому что находить баг в чужом коде (спасибо, коллега) — это как выиграть в детективе. И да, конечно на жопе сидеть приятнее чем на заводе.
Но если вы думаете, что программирование — это про гениальные озарения и лёгкие деньги, то… Нет. Это про упорство, гугление на английском и умение смеяться над своими же комментариями
// TODO: fix later
двухлетней давности.P.S. Если React, Next.js и Node.js — это «просто», покажите свой GitHub. Мы все хотим на вас посмотреть.
-
Крупные компании Екатеринбурга сокращают IT-специалистов: что происходит?Основные факты:
- К 15–30% IT-сотрудников в крупных компаниях (банки, агрегаторы, онлайн-платформы) могут заменить на более дешевые кадры к лету.
- В числе упомянутых компаний — «СКБ Контур», но позже они опровергли сокращения, заявив об открытии 100+ вакансий.
- Причины увольнений: низкая эффективность, несоответствие зарплате, проблемы в командной работе.
Мнения экспертов:
- Александр Махнев (IT-специалист):
- Сокращения связаны с закрытием непрофильных проектов и заменой дорогих, но слабых специалистов.
- Акцент на найме мидлов (средний уровень) с умеренными зарплатными ожиданиями: «Они мотивированы и продуктивны».
Проблемы нового поколения:
- Низкий уровень подготовки: кандидаты с псевдокурсов (YouTube, соцсети) не имеют реальных навыков.
- Риски для качества: сбои в продуктах могут участиться из-за неквалифицированных кадров.
Контекст:
- По данным Минцифры РФ (2024):
- 900 тыс. IT-специалистов в России.
- Дефицит кадров — 740 тыс. человек.
Противоречия:
- СКБ Контур: «Сокращений нет! Планируем расширяться и нанимать экспертов».
- Рынок разделился: одни компании оптимизируют расходы, другие — наращивают команды.
Итог: Эпоха «дорогих айтишников» сменяется поиском баланса между стоимостью и качеством. Пока одни рискуют продуктивностью, другие делают ставку на мотивированных мидлов.
-
Что-то математика не складывается -
Шпаргалка по React 19Шпаргалка по React 19 от Kent C Dodds, создателя Epic React
Это отчасти шпаргалка, отчасти краткое напоминание о некоторых новых возможностях React 19 с простыми примерами кода.
-
Альтман ПРОГНУЛСЯ — цену на подписку Plus снизят до 10$.Правда, всего на первые 3 месяца (3.14дорас), но никто не мешает создавать новые аккаунты
-
💡 Совет по JavaScriptВы могли не знать, что мы можем настроить вывод JSON.stringify()
По умолчанию JSON.stringify(data) не сериализует Set, Map, BigInt и т. д. Но с помощью функции replacer можно управлять тем, какие данные попадут в итоговую строку
-
Как оптимизировать производительность в Vue.js приложениях: руководство для начинающих и продвинутых@Hater надо
-
JavaScript мемы