artalog
4.23K subscribers
542 photos
40 videos
40 files
913 links
Развернутые ответы на вопросы в чатах, мысли от рабочих процессов.
Вопросы - @artalar.
Download Telegram
Live stream started
Live stream finished (2 hours)
Live stream started
artalog
mermaid Наконец, попробовал этот тул для текстового рисования графиков в Markdown. Совсем чуть-чуть и пока все понравилось, довольно удобно. На скринах то что я написал и как это рендерится. Напомню, в Gitlab поддержка есть уже давно, а в Github появилась…
Накидал за пол часа генерилку флоучартов для реатома. Ну те можно взять теперь схему, засунуть в mermaid и получить отображение всех связей атомов в приложении. Пример.

Осталось в расширение для браузера завернуть :)
🔥15
Поговорим сейчас в войсе с @nin_jin про обработку ошибок в реактивных графах
Live stream finished (3 days)
Как же мне нравятся веб приложения за то что я могу открыть сколько угодно их инстансов одновременно. Для социалок и маркетплейсов особенно удобно.
👍5
Если во время написания и множественных перезапусков тестов обнаружилась ошибка кеша апишки, стоит ли это включать в тест?)

Правильный ответ - стоит включать в нагрузочное тестирование. А если его нет, стоит ли раздувать бизнесовые тесты?
👍1
Дауж, cypress это тот еще склад костылей. Хотя, не то что бы это его вина.

Задача проще некуда - изменить значение в инпуте. Не с клавиатуры, а целиком заменить (а что если пользователь делает ctrl+A, ctrl+V). Заклинание выглядит так: .invoke('val', newValue). Работает? Да. А если палочкой потыкать? Нет.

Оказывается, реакт на такое изменение не тригериться. Как ему подсказать? В ишье предлагают события тригерить. Правда, какие - не ясно. Что-то у кого-то работает, что-то нет.

Я придумал простое .type("0{backspace}”). Работает? Да. А если палочкой потыкать? Да. А если другой палочкой потыкать? Нет. Что?

Не знаю что. Сижу, пытаюсь понять, почему в двух разных текстариах из разных инстансов одного и того же компонента где-то значение меняется, а где-то нет.
🤔4👍1
artalog
Дауж, cypress это тот еще склад костылей. Хотя, не то что бы это его вина. Задача проще некуда - изменить значение в инпуте. Не с клавиатуры, а целиком заменить (а что если пользователь делает ctrl+A, ctrl+V). Заклинание выглядит так: .invoke('val', newValue).…
Окидокики, текстария в которой все работало маунтилась прям перед изменением, а не работало там где компонент уже давно лежал в дереве. Не уверен что там именно происходит, да и не хочу, мб файнал форм на фокус что-то ререндерит.
Но пофиксил добавлением focus() перед invoke.
👍1
На прошлой неделе я болел, поэтому было тихо.

Что-то мне в голову стрельнуло, попытаюсь каждый день делать какой-то пост. Нужно еще время выбрать, скорее всего это будет 11-00 по gmt-3.
С самого начала у меня были претензии к системе модулей ЖС в том что она не позволяет полностью заменить IoC / DI.

Яркий пример, почему это проблема - jest.mock. Необходимость в таком инструменте уже говорит о том что с архитектурой что-то не так. Ну и с нативными импортами оно ломается (на сколько я знаю, мб что-то поменялось).

Сейчас разрабатывается предложение import-maps, но полноценный DI оно заменить не сможет.

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

P.S. или не нужно было импорты модулями обзывать, это какой-то file linker, не знаю.
👍6
Затравка перед завтрашним постом 🙂 на скрине неудачная попытка микрооптимизации бандлсайза.
🤔2🔥1
reduce nanoid bundlesize

Это уже становится хобби 🙂 Захожу раз в несколько месяцев в нано библиотеки Андрея Ситника и пытаюсь придумать как бы уменьшить их бандлсайз.

Это особенно увлекательно из-за того что Андрей сам большой спец в этом вопросе и найти какие-то оптимизации каждый раз очень сложно.

Вчера посчастливилось придумать оптимизацию, которая срезает 12% размера nanoid - доволен как слон 🤗

Кому интересны детали, обратите внимание на то что коммита два.
🔥12
Вот вам небольшая задачка на асинхронщину. Какой будет лог для каждой функции и какое из трех поведений использует реакт?

С
П
О
Й
Л
Е
Р

codesandbox

Наверное, реакт не батчит useEffect потому что в замыкании все равно предполагается старое иммутабельное значение, а не последнее по рефу.
Но в реальной жизни для описания какой-то логики и процессов нам нужны как минимум две очереди с разными приоритетами. Доказательством служит появление микротасков в платформе.
В некст реатоме, кстати, будет апишка для двух разных очередей.
🤔2