Putout
Кодмоды очень упрощают миграцию с одной апишки / либы на другую и наоборот, без них миграция может сильно затянуться или придется вовсе от нее отказаться. В JS экосистеме стандартом, пожалуй, является JSCodeshift, но его апишка достаточно вербозная, приближенная к AST.
Лично мне для таких задач хотелось бы иметь какой-то простой язык шаблонов, который бы позволял описывать паттерны кода с нужными фрагментами и иметь возможность их трансформировать. Как @babel/template.
Но недавно я наткнулся (на автора в твиттере) на совсем мощный (с виду, еще не пробовал) инструмент: Putout.
В этой статье приведено несколько хороших примеров использования, например как просто трансформировать аргументы функции в именованные свойства объекта:
(на скринах код “было” и “стало”, код трансформации на jscodeshift, код трансформации на putout)
Кодмоды очень упрощают миграцию с одной апишки / либы на другую и наоборот, без них миграция может сильно затянуться или придется вовсе от нее отказаться. В JS экосистеме стандартом, пожалуй, является JSCodeshift, но его апишка достаточно вербозная, приближенная к AST.
Лично мне для таких задач хотелось бы иметь какой-то простой язык шаблонов, который бы позволял описывать паттерны кода с нужными фрагментами и иметь возможность их трансформировать. Как @babel/template.
Но недавно я наткнулся (на автора в твиттере) на совсем мощный (с виду, еще не пробовал) инструмент: Putout.
В этой статье приведено несколько хороших примеров использования, например как просто трансформировать аргументы функции в именованные свойства объекта:
(на скринах код “было” и “стало”, код трансформации на jscodeshift, код трансформации на putout)
🔥10👍4🤯3🤡1
artalog
Недостатки Preact Большая часть особенностей описана в документации. От себя добавлю: - проблемы с типами при использовании реакт кода / либ, в основном из-за отсутствия синтетической системы событий (привет порталы) и плохой типизации DOM впринципе (проще…
marvinh.dev
Preact's best kept secret
This post is about "option hooks", a powerful feature that is used behind the scenes in `preact/compat` and `preact/hooks`. As a user you don't need to know about these to use Preact. This post is rather a deep dive into the internals of Preact
🤡1
cookie VS localStorage.
Вот вам краткая шпаргалка, на случай необходимости выбора между ними.
Несколько уточнений.
XSS для кук не актуален при HttpOnly.
“загрузка больших файлов” через
Ну и обратите внимание на последний пункт, об этом редко говорят, для каких-то систем это может быть критически важно.
Вот вам краткая шпаргалка, на случай необходимости выбора между ними.
Несколько уточнений.
XSS для кук не актуален при HttpOnly.
“загрузка больших файлов” через
Content-Disposition по прямой ссылке при ограниченном к ним доступе работает прозрачно с куками, иначе нужно плодить отдельный сервис генерации временных ссылок.Ну и обратите внимание на последний пункт, об этом редко говорят, для каких-то систем это может быть критически важно.
👍19😁1🤡1
Forwarded from { между скобок } анонсы 📣 (Grisha Skobelev)
CHAPTER 9: Design a web crawler
В публичный доступ вышло интересное и полезное обсуждение про web crawler. Советую вам заценить - Сергея UfoCoder сделал классную презентацию, где разобрал в деталях как работает поисковый робот. Так же обсудили на что стоит обратить внимание и какие возможные проблемы могут быть. Еще в самом начале Андрей показал нам артефакты из прошлого ❤️ Получилось очень лампово.
Видео уже на YouTube
PS поддержите пожалуйста нас лайком и хорошим комментарием на YouTube 🙏 Ваша поддержка помогает нам дальше заниматься этим
В публичный доступ вышло интересное и полезное обсуждение про web crawler. Советую вам заценить - Сергея UfoCoder сделал классную презентацию, где разобрал в деталях как работает поисковый робот. Так же обсудили на что стоит обратить внимание и какие возможные проблемы могут быть. Еще в самом начале Андрей показал нам артефакты из прошлого ❤️ Получилось очень лампово.
Видео уже на YouTube
PS поддержите пожалуйста нас лайком и хорошим комментарием на YouTube 🙏 Ваша поддержка помогает нам дальше заниматься этим
YouTube
CHAPTER 9: Design a web crawler
Разберемся какие есть варианты проектирования масштабируемого web crawler, какие есть нетривиальные подводные камни и как их обойти.
Помогать в обсуждении будут
📍Сергей Иванов - в прошлом типичный веб-разработчик. Сейчас frontend-разработчик мечтающий…
Помогать в обсуждении будут
📍Сергей Иванов - в прошлом типичный веб-разработчик. Сейчас frontend-разработчик мечтающий…
❤4🤡1
#why_ff_is_bad
Как же у меня горит 🙃
Вот самый первый пример из экзамплов react-final-form, включите “Highlight updates” в реактовских девтулзах - мигает все при любом инпуте.
Сам useField / Field создается чудовищно долго, вот мои наблюдения.
Я уже писал о разных багах и недочетах.
Сейчас пытаюсь сделать адаптер для переезда с ff и столкнулся с целой кучкой проблем final-form-arrays, просто поразительно как все плохо может быть, если не думать наперед.
Какая альтернатива? Говорят react-hook-form.com самый нормальный (не без проблем). А я пока пилю пакет для реатома, никаких революций, просто пытаюсь сделать нормально и что бы скейлилось.
P.S. если у вас не форм билдер и нет зависимых полей - отдельная либа и не нужна, у нативки достаточно фишек.
Как же у меня горит 🙃
Вот самый первый пример из экзамплов react-final-form, включите “Highlight updates” в реактовских девтулзах - мигает все при любом инпуте.
Сам useField / Field создается чудовищно долго, вот мои наблюдения.
Я уже писал о разных багах и недочетах.
Сейчас пытаюсь сделать адаптер для переезда с ff и столкнулся с целой кучкой проблем final-form-arrays, просто поразительно как все плохо может быть, если не думать наперед.
Какая альтернатива? Говорят react-hook-form.com самый нормальный (не без проблем). А я пока пилю пакет для реатома, никаких революций, просто пытаюсь сделать нормально и что бы скейлилось.
P.S. если у вас не форм билдер и нет зависимых полей - отдельная либа и не нужна, у нативки достаточно фишек.
final-form.org
Final Form Docs – Examples
🙏5👎1🤡1
artalog
Рисование в excalidraw.com меня прям расслабляет.
Не всем нравятся такие простые сервисы как excalidraw, но если вас зацепило - вот еще tldraw.com
Там рисование от руки хорошо сделано, об этом много в тви писал автор. Судя по его постам, сделать линию похожую на такую же из физического мира ооочень сложно. Как минимум, отклик сенсора не мгновенный и сложно понять на сколько крутой поворот и как рисовать при быстром движении руки. Из таких мелочей качество и формируется.
Там рисование от руки хорошо сделано, об этом много в тви писал автор. Судя по его постам, сделать линию похожую на такую же из физического мира ооочень сложно. Как минимум, отклик сенсора не мгновенный и сложно понять на сколько крутой поворот и как рисовать при быстром движении руки. Из таких мелочей качество и формируется.
👍7
Forwarded from Reatom новости
В
Ну те да, можно безопасно делать сайд эффекты в чистых функциях.
ctx.schedule можно передать второй аргумент - место в очереди. “-1“ - это очередь роллбеков, которые будут вызваны в случае появления ошибки в транзакции.Ну те да, можно безопасно делать сайд эффекты в чистых функциях.
🤡4
Изучил подробнее вчера react-hook-form. Во многом понравилось: близко к нативке, хорошо организована документация.
Но интереснее обсудить проблемы 🙂
- не понятно зачем основная апишка заставляет спредить onChange, onBlur, onFocus в компонент вместе с рефом, почему бы просто не кидать реф и не делать addEventListener, должно быть быстрее по перфу, мне кажется.
- нет примера зависимых форм
- useRef сетит в current переданное значение единожды при первом рендере, передавать, ведь в register происходит куча всего
- зачем столько useCallback, почему не использовать один useMemo, зависимости одни и теже же
- (upd) не трекает конкуренции асинхронных валидаций
Мелочи это все.., то createFormControl.ts на 1.3к строк меня пугает и полистав его у меня сложилось сильное впечатление избыточной сложности или недостаточной элегантности используемых примитивов.
Все это не должно вас отпугивать от этой либы (потому что альтернативы нет?), просто хотел поделиться тем что нарыл.
Но интереснее обсудить проблемы 🙂
- не понятно зачем основная апишка заставляет спредить onChange, onBlur, onFocus в компонент вместе с рефом, почему бы просто не кидать реф и не делать addEventListener, должно быть быстрее по перфу, мне кажется.
- нет примера зависимых форм
- useRef сетит в current переданное значение единожды при первом рендере, передавать, ведь в register происходит куча всего
- зачем столько useCallback, почему не использовать один useMemo, зависимости одни и теже же
- (upd) не трекает конкуренции асинхронных валидаций
Мелочи это все.., то createFormControl.ts на 1.3к строк меня пугает и полистав его у меня сложилось сильное впечатление избыточной сложности или недостаточной элегантности используемых примитивов.
Все это не должно вас отпугивать от этой либы (потому что альтернативы нет?), просто хотел поделиться тем что нарыл.
👍12🤔1🤡1
Вопрос в одном из чатов:
https://www.typescriptlang.org/play?#code/C4TwDgpgBA0hIHcD2AnAJlAvFA5AMySRygB9cAjAQxRwChbRIoAZASwGdgsoBBFFSiAA8Ab1pQoAa3jJ0ALlgzUaANzioAG0rkIGhZxSsAdgHM1AXwB8a2gGMkRzpo7AFbJ9gDa6sRInTEZQV8QhwAGnUJLR09XAAxUPVzCIlfPwDZNGCCIjCoAHp8qAAVAHkAEVL9AAskAFcNDB0oSiMoCH5USM1tXWCAIWo6CXNaAF0gA
Пффф, думаю я, плевое дело - просто перечисляем все возможные комбинации кортежев, это можно сделать программированием на типах - только дайте список вариантов.
Поступает новая вводная - элементов 10 и может быть больше. Ну те количество комбинаций 2**10 - ТС такое подохнет вычислять - свалится с type instantation is too deep (скорее всего, не проверял).
Какие еще варианты? Давайте пойдем от обратного, посчитаем количество уникальных значений и проверим что оно не отличается от количества элементов. Это возможно за счет хака трансформации union to tupple. Вспоминать и писать я его, конечно, не буду. Так и гуглим: “
Вот.
Лучше, конечно, такой код не писать и не поддерживать. Но всякие задачи бывают…
можно ли как то в массиве объектов сказать, что значения свойства не должно повторятся ?
демка:
https://www.typescriptlang.org/play?#code/C4TwDgpgBA0hIHcD2AnAJlAvFA5AMySRygB9cAjAQxRwChbRIoAZASwGdgsoBBFFSiAA8Ab1pQoAa3jJ0ALlgzUaANzioAG0rkIGhZxSsAdgHM1AXwB8a2gGMkRzpo7AFbJ9gDa6sRInTEZQV8QhwAGnUJLR09XAAxUPVzCIlfPwDZNGCCIjCoAHp8qAAVAHkAEVL9AAskAFcNDB0oSiMoCH5USM1tXWCAIWo6CXNaAF0gA
Пффф, думаю я, плевое дело - просто перечисляем все возможные комбинации кортежев, это можно сделать программированием на типах - только дайте список вариантов.
Поступает новая вводная - элементов 10 и может быть больше. Ну те количество комбинаций 2**10 - ТС такое подохнет вычислять - свалится с type instantation is too deep (скорее всего, не проверял).
Какие еще варианты? Давайте пойдем от обратного, посчитаем количество уникальных значений и проверим что оно не отличается от количества элементов. Это возможно за счет хака трансформации union to tupple. Вспоминать и писать я его, конечно, не буду. Так и гуглим: “
typescript union to tupple”, копипастим первый результат с SO или какой статьи и…Вот.
Лучше, конечно, такой код не писать и не поддерживать. Но всякие задачи бывают…
www.typescriptlang.org
TS Playground - An online editor for exploring TypeScript and JavaScript
The Playground lets you write TypeScript or JavaScript online in a safe and sharable way.
🤔7🤡3🤯1💩1
https://twitter.com/Brendan_CSEL/status/1584796704221847552
Первое с чем рекомендую ознакомится по Solid это страница Team & Contributions - выглядит очень хорошо.
Первое с чем рекомендую ознакомится по Solid это страница Team & Contributions - выглядит очень хорошо.
👏9🤔3👍1🤡1