А не получится. Простите, что обманул.
Статья останется в приватном доступе на довольно длительный срок из-за неожиданных обстоятельств.
Донаты в Телеграме тоже закрыл, подписывайтесь на Патреон, если хотите прочитать.
Простите ещё раз 🙏
Статья останется в приватном доступе на довольно длительный срок из-за неожиданных обстоятельств.
Донаты в Телеграме тоже закрыл, подписывайтесь на Патреон, если хотите прочитать.
Простите ещё раз 🙏
Хватит использовать консоль для тестирования компонентов
Утром посмотрел воркшоп Дмитрия Коваленко про компонентные тесты с Cypress. Лучший способ за полчаса разобраться, почему нужно попробовать их писать и какие возможности в этом инструменте точно есть.
Советую 🌚
Утром посмотрел воркшоп Дмитрия Коваленко про компонентные тесты с Cypress. Лучший способ за полчаса разобраться, почему нужно попробовать их писать и какие возможности в этом инструменте точно есть.
Советую 🌚
YouTube
Дмитрий Коваленко — Хватит использовать консоль для тестирования компонентов
Ближайшая конференция — HolyJS 2024 Autumn, 7 ноября (online), 14–15 ноября (Санкт-Петербург + трансляция).
Подробности и билеты: https://jrg.su/K18Cxd
— —
Мы с вами привыкли к тому, что для тестирования фронтенда нужен jsdom. Jest стал неким стандартом тестирования…
Подробности и билеты: https://jrg.su/K18Cxd
— —
Мы с вами привыкли к тому, что для тестирования фронтенда нужен jsdom. Jest стал неким стандартом тестирования…
Пора рассказать почему статья про веб-платформу в Авиасейлс откладывается 🌚
Меня все-таки позвали выступить на HolyJS в ноябре с докладом про то, как мы приняли решение переехать с Redux+RxJS на Effector.
Я расскажу, почему это произошло, с какими проблемами столкнулись и каким командам подойдет этот путь. В конце посмотрим, как изменилась жизнь фронтендеров за время использования Effector и разберем главную киллер-фичу этого стейт-менеджера.
Помогите придумать хорошее название для доклада, пожалуйста 🙏
Меня все-таки позвали выступить на HolyJS в ноябре с докладом про то, как мы приняли решение переехать с Redux+RxJS на Effector.
Я расскажу, почему это произошло, с какими проблемами столкнулись и каким командам подойдет этот путь. В конце посмотрим, как изменилась жизнь фронтендеров за время использования Effector и разберем главную киллер-фичу этого стейт-менеджера.
Помогите придумать хорошее название для доклада, пожалуйста 🙏
Маленький большой проект
Вчера посмотрел доклад Андрея Мелихова про запуск CTF на I Love Front-end. Вдохновляющая история про важность знаний в смежных областях 💙
Вчера посмотрел доклад Андрея Мелихова про запуск CTF на I Love Front-end. Вдохновляющая история про важность знаний в смежных областях 💙
YouTube
Маленький большой проект. С нуля в прод за 2 недели силами трёх фронтендеров. [ru] / Андрей Мелихов
Видео с онлайн-конференции JavaScript fwdays'21, которая прошла с 1-8 июня 2021 года.
Описание доклада:
Считается, что фронтенд это только часть работы. Нам нужен бэкенд, чтобы хранить данные, нам нужен девопс, чтобы всё побежало на проде и не упало под…
Описание доклада:
Считается, что фронтенд это только часть работы. Нам нужен бэкенд, чтобы хранить данные, нам нужен девопс, чтобы всё побежало на проде и не упало под…
Маленькие эволюции
Недавно делал мини-проект, где мне нужны были простые и стабильные миграции схемы базы данных. Оказалось, что современный мир не готов предоставить мне такой инструмент.
Я пробовал миграции от
А потом вспомнил, что мы с камрадом делали библиотеку для простых миграций несколько лет назад. Я откопал ее, подновил, отрефакторил, и решил сделать публичной.
Итак, встречайте — trona.
Миграции — это простые SQL-файлы. Конфигурация — просто файл, экспортирующий функцию
Пишите фидбеки, оставляйте ишуи, используйте в проектах.
Недавно делал мини-проект, где мне нужны были простые и стабильные миграции схемы базы данных. Оказалось, что современный мир не готов предоставить мне такой инструмент.
Я пробовал миграции от
knex
, которые не осилили работать с управляемой базой на Digital Ocean. Я пробовал миграции от type-orm
, которые невозможно подружить с кастомной конфигурацией.А потом вспомнил, что мы с камрадом делали библиотеку для простых миграций несколько лет назад. Я откопал ее, подновил, отрефакторил, и решил сделать публичной.
Итак, встречайте — trona.
Миграции — это простые SQL-файлы. Конфигурация — просто файл, экспортирующий функцию
runQuery
.Пишите фидбеки, оставляйте ишуи, используйте в проектах.
GitHub
GitHub - igorkamyshev/trona: Write DB migrations with SQL and run them with a CLI
Write DB migrations with SQL and run them with a CLI - igorkamyshev/trona
Вам новая статья 💌
Многим непросто начать писать тесты на Эффектор-модули. В этой небольшой заметке разобрал все максимально подробно!
Читайте статью, пишите тесты, задавайте вопросы в комментариях.
Инструкция: тестирование в Эффекторе
Многим непросто начать писать тесты на Эффектор-модули. В этой небольшой заметке разобрал все максимально подробно!
Читайте статью, пишите тесты, задавайте вопросы в комментариях.
Инструкция: тестирование в Эффекторе
kamyshev
Инструкция: тестирование в Эффекторе
Эффектор — это компактный и производительный менеджер состояний. Одно из его основных преимуществ — удобство при написании тестов. Это инструкция с подробным разбором каждой фичи.
Выкатил v0.3.0 для
1. Новое правило
2. Новое правило
3. Возможность настроить положение $ в именах сторов (в начале или в конце) от Ильи Рябчинского
eslint-plugin-effector
:1. Новое правило
no-useless-methods
2. Новое правило
no-ambiguity-target
3. Возможность настроить положение $ в именах сторов (в начале или в конце) от Ильи Рябчинского
GitHub
Release v0.3.0 · effector/eslint-plugin
Add new rule: no-useless-methods (PR #41)
Add new rule: no-ambiguity-target (PR #42)
Add possibility to configure store's naming convention — suffix of prefix (PR #37 by @ilyaryabchinski)
Add new rule: no-ambiguity-target (PR #42)
Add possibility to configure store's naming convention — suffix of prefix (PR #37 by @ilyaryabchinski)
Я очень уважаю две школы программирования — Hexlet и Школу сильных программистов Феди Борщева и Марьяны Онысько.
Hexlet я советую всем, кто только начинает карьеру. Школу сильных программистов — тем, кто уже работает и хочет прокачать какой-то специфичный навык. Я в ней проходил несколько курсов и не обломался:
+ «Профессиональный рост» помог разобраться, что делать дальше и принять несколько важных карьерных решений — я понял, что хочу больше ответственности и кросс-командных взаимодействий, и начал грести в эту сторону;
+ «Стать тимлидом» направил в сторону развития правильных мягких умений — я стал тренировать навыки переговоров (уже успел выторговать одну услугу вне очереди 😂) и вскрывать конфликты как можно раньше;
+ «Асинхронная архитектура» научила понимать что происходит на бекендах внутри Авиасейлс — теперь я могу поддержать разговор с инженерами других команды и безболезненно встраивать свои сервисы в общую инфраструктуру.
Сообщение о прозрачности! Хочется быть честным и объяснить, почему я пишу этот пост. Ко мне в пятницу пришла Марьяна и предложила отрелкамировать новый поток курса «Асинхронная архитектура» за билет или за деньги. Но, прямо сейчас у меня нет времени перепроходить курс, а суммы, которые можно заработать с рекламы в таком маленьком канале совсем несерьезные. Короче, я решил просто рассказать про новый поток, потому что считаю курс хорошим.
Итак! 21 октября стартует новый поток курса «Асинхронная архитектура» — четырёхнедельный интенсивно про проектирование распределённых систем. Формат максимально комфортный: 9 видео-уроков про самое важное (пример), конспекты, консультации (на топовых тарифах), Q&A-сессии, разборы домашек, полезный чат для участников (видел, как в там люди начинали стартапы и находили работу).
Вот промокод на скидку —
Покупать курс тут 👉 https://education.borshev.com/architecture
Hexlet я советую всем, кто только начинает карьеру. Школу сильных программистов — тем, кто уже работает и хочет прокачать какой-то специфичный навык. Я в ней проходил несколько курсов и не обломался:
+ «Профессиональный рост» помог разобраться, что делать дальше и принять несколько важных карьерных решений — я понял, что хочу больше ответственности и кросс-командных взаимодействий, и начал грести в эту сторону;
+ «Стать тимлидом» направил в сторону развития правильных мягких умений — я стал тренировать навыки переговоров (уже успел выторговать одну услугу вне очереди 😂) и вскрывать конфликты как можно раньше;
+ «Асинхронная архитектура» научила понимать что происходит на бекендах внутри Авиасейлс — теперь я могу поддержать разговор с инженерами других команды и безболезненно встраивать свои сервисы в общую инфраструктуру.
Сообщение о прозрачности! Хочется быть честным и объяснить, почему я пишу этот пост. Ко мне в пятницу пришла Марьяна и предложила отрелкамировать новый поток курса «Асинхронная архитектура» за билет или за деньги. Но, прямо сейчас у меня нет времени перепроходить курс, а суммы, которые можно заработать с рекламы в таком маленьком канале совсем несерьезные. Короче, я решил просто рассказать про новый поток, потому что считаю курс хорошим.
Итак! 21 октября стартует новый поток курса «Асинхронная архитектура» — четырёхнедельный интенсивно про проектирование распределённых систем. Формат максимально комфортный: 9 видео-уроков про самое важное (пример), конспекты, консультации (на топовых тарифах), Q&A-сессии, разборы домашек, полезный чат для участников (видел, как в там люди начинали стартапы и находили работу).
Вот промокод на скидку —
Kamyshev
Покупать курс тут 👉 https://education.borshev.com/architecture
kamyshev.code
Вам новая статья 💌 Многим непросто начать писать тесты на Эффектор-модули. В этой небольшой заметке разобрал все максимально подробно! Читайте статью, пишите тесты, задавайте вопросы в комментариях. Инструкция: тестирование в Эффекторе
👆кажется, в пятницу у вас не было времени, чтобы прочитать статью, так что напомню!
ОТЛИЧНАЯ СТАТЬЯ ПРО ТЕСТЫ.
ОТЛИЧНАЯ СТАТЬЯ ПРО ТЕСТЫ.
Дайджест 28 октября
Несколько статей, которые я прочитал и советую прочитать вам 👇
+ Local Optimum Problem in Software Development — коротенькая заметка Антона Шувалова про плохие решения при разработке программ;
+ How to waste your career, one comfortable year at a time — отличная статья с разбором вопроса «сколько нужно работать в одном месте?»;
+ Как и зачем делать доклады? — чтобы быть богатым, знаменитым и счастливым;
+ Сколько мне стоило попасть в Гугл и получить повышение, не проработав там ни одного дня — театр абсурда в биг-техе, чувак потратил 10 тысяч долларов, чтобы попасть на работу в Гугл.
Несколько статей, которые я прочитал и советую прочитать вам 👇
+ Local Optimum Problem in Software Development — коротенькая заметка Антона Шувалова про плохие решения при разработке программ;
+ How to waste your career, one comfortable year at a time — отличная статья с разбором вопроса «сколько нужно работать в одном месте?»;
+ Как и зачем делать доклады? — чтобы быть богатым, знаменитым и счастливым;
+ Сколько мне стоило попасть в Гугл и получить повышение, не проработав там ни одного дня — театр абсурда в биг-техе, чувак потратил 10 тысяч долларов, чтобы попасть на работу в Гугл.
Перевел статью про Fork API в Эффекторе на английский 👉 https://dev.to/effector/the-best-part-of-effector-4c27
Полайкате ее там, пожалуйста. Хочется доказать алгоритмам, что статью нужно фичерить 🙏
Полайкате ее там, пожалуйста. Хочется доказать алгоритмам, что статью нужно фичерить 🙏
DEV Community
The best part of Effector
Effector is a lightweight and performant state manager. It is UI frameworks agnostic, predictable and easy to use. Almost half a year ago, Aviasales team has started migration from RxJS to Effector. While I was investigating this library, I found a completely…
Дайджест 5 октября
Новый вторник — новый список статей и докладов, которые советую посмотреть и прочитать 🌚
+ @babel/how-to — хороший вводный доклад про внутреннее устройство Babel и пример написания плагина для него;
+ Путь к разработке расширяемых интерфейсов — короткий доклад про применение концепции слотов и плагинов к разработке интерфейсов;
+ Public Speaking — серия коротких статей про публичные выступления: борьба с волнением, структура доклада, слайды, тайминги;
+ SwiftUI defaults considered harmful — рассуждение на тему значений по-умолчанию в UI-фреймворках;
Новый вторник — новый список статей и докладов, которые советую посмотреть и прочитать 🌚
+ @babel/how-to — хороший вводный доклад про внутреннее устройство Babel и пример написания плагина для него;
+ Путь к разработке расширяемых интерфейсов — короткий доклад про применение концепции слотов и плагинов к разработке интерфейсов;
+ Public Speaking — серия коротких статей про публичные выступления: борьба с волнением, структура доклада, слайды, тайминги;
+ SwiftUI defaults considered harmful — рассуждение на тему значений по-умолчанию в UI-фреймворках;
Опубликовал мини-заметку про ещё один неудачный пет-проект 🤓
kamyshev
Неудачный проект: Trip-Eat
Я люблю вкусную еду и путешествия. В мае 2020 года сделал бота для телеграма, который подсказывал, где можно вкусно есть в путешествии. В мае 2021 законсервировал проект. Выводы! СутьИзначально, это был просто телеграм бот. Ты ему геолокацию — он тебе место…
Forwarded from FEDOR BORSHEV
Начинайте с данных, а не с кода
Важный урок, который я усвоил на Снобе — если в проекте присутствуют старые данные, особенно с легаси-сервисами, то начинать надо не с попыток запилить как можно больше фич, а с этих самых данных.
Вот представьте ситуацию — вы делаете каталог книг. В базе есть автор, есть книга, отношение многие ко многим — всё как положено. Смотрите в легаси — схема данных вроде соответствует. Создаёте модельки у себя, строите вокруг этого фичи — API для фронтенда, выгрузку в elasticsearch.
Перед запуском проекта финально импортируете данные и замечаете, что у некоторых книг подозрительно много авторов — по базе выходит, что «Анну Каренину» написал не только Лев Толстой, но и Ксения Собчак. Начинаете разбираться и выясняете, что у автора книги в легаси-базе есть бинарный флаг «рецензент», и если человек указан как рецензент, то считается, что он не писал эту книгу, а только рецензировал. Было это 10 лет назад, в те времена рецензии хранились как комментарии к товарам. С тех пор рецензии никто не писал, но старые нужно переносить, а авторов чистить — иначе SEO-шники съедят. И вам обо всём этом не сказал никто, включая тех же SEO-шников, пока вы их сами не спросили.
И вот вы в ночь перед дедлайном делаете новую сущность в системе, добавляете API, переписываете импорт, санитизируете данные. Выясняете, что ваша обёртка над эластиком может отдавать только посты — переписываете и её. И всё это потому что данные принесли вам требование, о котором никто не сказал. А если бы начали с данных — ещё в процессе переноса узнали бы о существовании рецензий, поменяли бы скоуп, и закончили бы вовремя.
Важный урок, который я усвоил на Снобе — если в проекте присутствуют старые данные, особенно с легаси-сервисами, то начинать надо не с попыток запилить как можно больше фич, а с этих самых данных.
Вот представьте ситуацию — вы делаете каталог книг. В базе есть автор, есть книга, отношение многие ко многим — всё как положено. Смотрите в легаси — схема данных вроде соответствует. Создаёте модельки у себя, строите вокруг этого фичи — API для фронтенда, выгрузку в elasticsearch.
Перед запуском проекта финально импортируете данные и замечаете, что у некоторых книг подозрительно много авторов — по базе выходит, что «Анну Каренину» написал не только Лев Толстой, но и Ксения Собчак. Начинаете разбираться и выясняете, что у автора книги в легаси-базе есть бинарный флаг «рецензент», и если человек указан как рецензент, то считается, что он не писал эту книгу, а только рецензировал. Было это 10 лет назад, в те времена рецензии хранились как комментарии к товарам. С тех пор рецензии никто не писал, но старые нужно переносить, а авторов чистить — иначе SEO-шники съедят. И вам обо всём этом не сказал никто, включая тех же SEO-шников, пока вы их сами не спросили.
И вот вы в ночь перед дедлайном делаете новую сущность в системе, добавляете API, переписываете импорт, санитизируете данные. Выясняете, что ваша обёртка над эластиком может отдавать только посты — переписываете и её. И всё это потому что данные принесли вам требование, о котором никто не сказал. А если бы начали с данных — ещё в процессе переноса узнали бы о существовании рецензий, поменяли бы скоуп, и закончили бы вовремя.
Дайджест 12 октября
Что-то я такой замороченный, что кроме дайджестов ничего не пишется 😿
+ Диптих Ильи Климова Карго-культ TypeScript в украинских аутсорсерах и Почему я отошел от TypeScript в своих React-проектах и куда;
+ Why I'm unreachable and maybe you should be too — небольшая заметка про вред «доступности» (но не той доступности);
+ Darwin meets Dilbert: Applying the Law of Two Feet to your next meeting — способ сделать митинги лучше;
Что-то я такой замороченный, что кроме дайджестов ничего не пишется 😿
+ Диптих Ильи Климова Карго-культ TypeScript в украинских аутсорсерах и Почему я отошел от TypeScript в своих React-проектах и куда;
+ Why I'm unreachable and maybe you should be too — небольшая заметка про вред «доступности» (но не той доступности);
+ Darwin meets Dilbert: Applying the Law of Two Feet to your next meeting — способ сделать митинги лучше;
Пожалуй, расскажу и тут 🌚
Авиасейлс Ещё запустился 👉 https://vc.ru/services/305177-aviasales-zapustil-svoy-pervyy-platnyy-servis-s-keshbekom-u-partnerov-sekretnymi-marshrutami-i-prioritetnoy-podderzhkoy
Авиасейлс Ещё запустился 👉 https://vc.ru/services/305177-aviasales-zapustil-svoy-pervyy-platnyy-servis-s-keshbekom-u-partnerov-sekretnymi-marshrutami-i-prioritetnoy-podderzhkoy
vc.ru
Aviasales запустил свой первый платный сервис — с кэшбеком у партнёров, секретными маршрутами и приоритетной поддержкой — Сервисы…
На старте «Ещё» стоит 990 рублей в год.
4 ноября на HolyJS буду рассказывать почему и как мы мигрировали Авиасейлс на Effector ☄️
Приходите слушать 🌚
Тематический промокод —
Приходите слушать 🌚
Тематический промокод —
kamyshevJRGpc2021
HolyJS 2021 Moscow. Конференция для JavaScript-разработчиков.
HolyJS 2021 Moscow — большая конференция для JS-разработчиков. Спикеры со всего мира. Несколько десятков технических докладов о JavaScript, фронтенде, UI, инструментах и многом другом.
Дайджест 19 октября
Я пока все еще в огне, поэтому пока только дайджест 😢
+ На прошлой неделе вышел Parcel 2 и это биг-дил — он простой, быстрый и удобный (а теперь ещё и расширяемый);
+ Реализация метода для Effector Patronum — лайв-кодинг Сергея Совы;
+ К — Команда — лонгрид Вастрика про ИТ-команды, недавно обновлен под реалии 2021 года;
+ Tuple's Pair Programming Guide — подробнейшая инструкция по организации парного программирования.
Я пока все еще в огне, поэтому пока только дайджест 😢
+ На прошлой неделе вышел Parcel 2 и это биг-дил — он простой, быстрый и удобный (а теперь ещё и расширяемый);
+ Реализация метода для Effector Patronum — лайв-кодинг Сергея Совы;
+ К — Команда — лонгрид Вастрика про ИТ-команды, недавно обновлен под реалии 2021 года;
+ Tuple's Pair Programming Guide — подробнейшая инструкция по организации парного программирования.
Forwarded from Валя читает ишью
vscode.dev(!)
Microsoft презентовал vscode.dev — VS Code в браузере. Очень похоже на GitHub Codespaces, но позволяет работать с локальной файловой через File System Access API. Т.е. можно добавить директорию проекта, с которой хотите работать, и редактировать всё прям в браузере.
Больше подробностей, как обычно, в блог-посте.
Microsoft презентовал vscode.dev — VS Code в браузере. Очень похоже на GitHub Codespaces, но позволяет работать с локальной файловой через File System Access API. Т.е. можно добавить директорию проекта, с которой хотите работать, и редактировать всё прям в браузере.
Больше подробностей, как обычно, в блог-посте.
Вы наверное уже все давно знаете, что Авиасейлс — это лучшая компания для работы в России.
17-19 ноября мы проведем наём-тусу SALO HIRING 👉 https://event.aviasales.ru/
В этот раз ищем и бекендеров, и фронтендеров.
Скорее регистрируйтесь ✈️
17-19 ноября мы проведем наём-тусу SALO HIRING 👉 https://event.aviasales.ru/
В этот раз ищем и бекендеров, и фронтендеров.
Скорее регистрируйтесь ✈️
Работа в Авиасейлс
Работать в Авиасейлс — это жалеть, что не пришел сюда раньше!