Size: a a a

Сова пишет…

2020 June 24
Сова пишет…
Как я именую функции, классы, компоненты, ивенты, сторы.

Так как большую часть времени мы читаем код, а не пишем его, то хочется легко воспринимать существуюшие части кода. Стоит помнить, что мы далеко не всегда пишем полностью новый код. В существующем проекте мы используем уже созданные ранее переменные, сущности и модули.

Во всех IDE есть функция автоимпорта сущности по имени. Многие ею успешно пользуются, в том числе и я. Да даже без этой функции совет из этого поста актуален. Ведь зачастую импортнув сущность однажды она используется больше одного раза в модуле.

А ещё есть такая штука как автодополнение ввода. Давайте разберемся как оно работает: пишем какие-то буквы, IDE анализирует контекст и ищет сущности по входящим в него символам. Притом, введенные символы должны идти в названии сущности ровно в том же порядке в каком были введены.

Например: введено "rsp", будет найдено "responseType", но не "scopeDescription".
источник
Сова пишет…
А если сложить всё вместе, можно заметить интересный паттерн. Неважно, в какой парадигме ведется разработка, всегда есть некий объект и методы.
В ФП это будет method(object, arg)
в ООП-like object.method(arg)
И мы как разработчики всегда знаем, с каким объектом работаем в данный момент, но не всегда знаем какие методы есть у него. Поэтому для нас важнее объект, ведь можно ввести имя объекта и IDE предложит, что с ним можно сделать. В ФП это может работать через pipe/compose или оператор |>. А может быть через ковенцию objectAction. И тогда всё будет работать ровно как в ООП-like objectAction(object, arg), не нужно бояться дублирования object здесь, ведь переменная почти никогда не называется по имени сущности.

Зачастую большое количество используемых методов удобно импортировать в область имен:
import * as namespace from "...".
Тогда формат вызова превращается в namespaceObjectAction(object, arg).

На самом деле компоненты проектируется ровно также как методы в ООП или ФП — выполняют только одну четко определенную задачу. А значит, вполне могут быть именованы в похожем формате. Только action превратится в variant, ведь компоненты сами по себе не выполняют действий, они могут быть разных вариантов отображения.

Примеры: Button, ButtonPrimary, Input, InputMask, InputPassword. Это всё описано в формате ObjectVariant. Если добавить namespace, то получится такое: Form, FormField, FormFieldPrimary, или же Form.Field тут уж как удобнее.

Ровно та же схема работает и с классами. Достаточно почитать книги с примерами по джаве. То же самое с методами и функциями. Внезапно, это работает с именами переменных и констант. При этом введя namespace в IDE, можно увидеть все входящие объекты, дописав или выбрав нужный объект namespaceObject, можно увидеть всего варианты и/или действия.

Главный принцип — от общего к частному.
источник
2020 June 29
Сова пишет…
Ну что.
Неделя началась — https://twitter.com/jsunderhood/status/1277501157447958534

Накидывайте свои вопросы или ещё что, буду отвечать
источник
2020 July 06
Сова пишет…
Все треды из jsunderhood про архитектуру и FeatureSlices перенес в канал по теме:
https://t.me/feature_slices/50
источник
Сова пишет…
источник
2020 July 10
Сова пишет…
Там начался опрос State of Frontend. Он не совсем корректно собран. Но крайне рекомендую всем указать Effector в разделе про STM. Чтобы он появился в результатах и люди увидели новинку.

https://tsh.io/state-of-frontend/
источник
Сова пишет…
Тем временем Hexlet опубликовали статью про React и мнение “экспертов” о нём и его будущем.

Я есть в списке “экспертов”. Надеюсь получилось привлечь внимание к Effector.

https://ru.hexlet.io/blog/posts/biblioteka-react-review-article
источник
Сова пишет…
НА ПОЛНОМ СЕРЬЕЗЕ?

IP адрес чтобы узнать в какой компании?

https://www.npmjs.com/package/@scarf/scarf

Этот пакет уже используется в redux-form, с 370К загрузок в неделю
источник
2020 July 13
Сова пишет…
Ээээ…
источник
2020 July 19
Сова пишет…
Все чаще замечаю, что мне нехватает времени, поскольку в роботах много работы с командой и новыми проектами, а по утрам занимаюсь cardbox и допиливаю accesso. На конец августа я запланировал релиз patronum, осталось покрыть все методы тестами и документацией. Очень много времени трачу в чатах, отвечая на вопросы по методологии FeatureSlices и AtomicDesign, которые необходимо превратить в статьи и инструменты.

Инструмент отладки effector-logger требует обновления на новую версию, пользователи занесли крутые предложения в issues, а ещё я задумал в inspector добавить крутую отладку состояния сторов в realtime. В закромах лежит интересный прототип DI для Effector, который я периодически мучаю, чтобы получить удобный DX. Для меня это крайне важный поинт, мало какие инструменты пытаются быть действительно удобными для разработчиков.

Я написал продолжение подкаста, но пока только текст, мне осталось его записать и смонтировать. Я видел, что есть люди, которым было бы интересно не только продолжение темы про продуктовую разработку, но и тема про хуки и классы реакта. Помимо этого, я работаю над actix-swagger, генератором rust-кода из openapi3. Я хочу генерировать код, а не схему из кода, с одной стороны это проще в техническом плане, но возникает сложность интеграции сгенерированного кода и бизнес-логики, даже решив эту проблему, я должен озаботиться DX получившегося решения.

Я думаю ни для кого не секрет, что количество доступных знаний и правильных подходов разработки фронтенда на подозрительно низком уровне, поэтому я пишу план нескольких курсов по разработке, куда войдет курс по базовым и advanced навыкам git, командной работе над React-приложениям, FeatureSlices на практике и проектированием приложений с Effector.

Я хочу выпустить всё это, но вообще не понимаю, что выпускать первым и что нужно людям, а ещё не хватает мотивации. Мне нужна помощь с определением приоритетов, но очевидно, что голосование в опросе нерепрезентативно. Любой из подписчиков может выбрать что угодно, не задумываясь о полезности. Я хочу сделать для вас то, что действительно нужно, притом, в первую очередь самое необходимое.

Мы, разработчики или айтишники, зарабатываем деньги в первую очередь своими знаниями и техническими навыками, инструментарий помогает нам снять головную боль и рутину, оставив время заниматься действительно интересными и важными вещами. Статьи и гайды помогают взглянуть на привычные вещи глубже, посмотреть на них с новой стороны, а также передать знания младшим коллегам быстрее и проще, а кому-то статьи просто помогают держаться выбранного курса, достаточно регулярно сверяться с текстом.

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

Поэтому я хочу дать выбор тем, кто понимает, что вложенные средства возвращаются в виде знаний или инструментов, ведь $4 доллара(300₽) это крайне небольшое вложение, кофе в старбаксе, но для меня это сигнал о том, что человек действительно хочет получить статью или инструмент. В первую очередь, это мотивация заниматься определенными инструментами, а некоторые отложить, ведь время не бесконечно. Мне нужна помощь в этом, я не могу выбрать сам — patreon.com/sergeysova

В сообщении напишите то, что нужно вам в первую очередь, количество и размер донатов позволит мне легко приоритизировать задачи и выпустить необходимые статьи и инструменты с лучшим качеством. Спасибо!
источник
Сова пишет…
Сервис buymeacoffee похоже сломался и не позволяет принимать платежи. Пришлось переехать на patreon.

Актуальная ссылка — https://www.patreon.com/sergeysova
источник
2020 July 21
Сова пишет…
Благодаря вашей поддержке, запилил отображение вложенных объектов в effector-inspector. Спасибо!

Помимо обычных объектов, поддерживается Set/Map/Symbol и все стандартные типы. Накидайте, какие объекты в жс хранят не самые обычные данные/структуры данных. И вообще, как отображать WeakMap?

Новые идеи и предложения можно закидывать напрямую в issues — https://github.com/sergeysova/effector-inspector.

Есть идеи как отображать файловую структуру? Эта информация есть в самих сторах, но нужно как-то организовать её, чтобы понятно было. Я думал добавить чекбокс переключающий отображение со списка сторов на дерево файлов со сторами
источник
Сова пишет…
Продолжаю добавлять поддержку стандартных объектов и типов в effector-logger.

Сейчас добавил BigInt, Function, Array(каким-то образом забыл, что он существует) и ошибок.
источник
2020 July 22
Сова пишет…
Добавил простейшие логи с фильтрацией
источник
Сова пишет…
И эффекты. Закину релиз с такими возможностями. А всякие дополнительные фичи, буду добавлять уже по необходимости
источник
2020 July 23
Сова пишет…
TverIO продолжает череду онлайн мероприятий. В этот четверг в 19:00 будем говорить о State Management на фронте. Участвуют крутые эксперты, которые помогут раскрыть тему с разных сторон и я).

Присоединяйтесь. https://www.meetup.com/ru-RU/tverio/events/271917823/
источник
Сова пишет…
sergeysova
TverIO продолжает череду онлайн мероприятий. В этот четверг в 19:00 будем говорить о State Management на фронте. Участвуют крутые эксперты, которые помогут раскрыть тему с разных сторон и я).

Присоединяйтесь. https://www.meetup.com/ru-RU/tverio/events/271917823/
YouTube
Tver.io State Management Talks
"Наденьте на хеллоуин костюм shared mutable state и вы напугаете кучу фронтедеров!"

Зачем нужны стейт-менеджеры на фронтенде, что за стейт хранится в них и где место бизнес- и не только логике, разберем на Tver.io State Management Talks.

# Программа

Участники:

- Сергей Сова — Frontend Lead, Architect в REDMADROBOT, developer advocate и контрибьютор библиотеки Effector
(https://twitter.com/_sergeysova)
- Павел Черторогов — архитектор информационных систем в ps.kz,
GraphQL-ниндзя, автор библиотеки graphql-compose
(https://twitter.com/nodkz)
- Артём Арутюнян — техлид в Калуга Астрал, автор Reatom
(https://twitter.com/artalar_dev)
- Павел Малышев — сооснователь Mustlab, популяризатор и эксперт Svelte
(https://twitter.com/PaulMaly)
- Александр Шушунов, модератор и ведущий дискуссии
(https://twitter.com/AShushunov)

Список тем:

- Зачем нужны стейт-менеджеры?
- Что за стейт хранится в стейт-менеджерах?
- Какая логика должна быть описана в стейт-менеджерах?
- Если мы описываем логику в стейт-менеджере, то она зависит…
источник
2020 July 24
Сова пишет…
Интересно…

RegExp.exec возвращает null буквально через раз. Что за?..

meta = 'https://share.effector.dev/KC3MBolg'
SHARE_REGEXP = /https:\/\/share\.effector\.dev\/([\w\d]+)/gi;

a = SHARE_REGEXP.exec(meta)



У кого ещё воспроизводится?

upd. В чате подсказывают, RegExp объекты в JS — мутабельные. exec метод сдвигает индекс после каждого вызова, а когда не находит совпадений, то сбрасывает в 0
Такое поведение вызвано флагом g, полезно для итерации по матчам (например так)
источник
Сова пишет…
Затащил inspector в effector-logger.
Пока что в next версии в npm.

yarn add effector-logger@next

Прошу проверить его работоспособность.
https://github.com/sergeysova/effector-logger#inspector

Нужно добавить createInspector() после инициализации приложения, а после запуска, в браузере нажать CTRL+B
источник
2020 July 25
Сова пишет…
Сергей Сова рассказывает про управление состоянием и effector (25 мин.)
- видео с Tver.io State Management Talks
https://youtu.be/DdbAcqyIhcM
YouTube
Сергей Сова про управление состоянием и effector
Зачем нужны стейт-менеджеры на фронтенде, что за стейт хранится в них и где место бизнес логике

Сергей Сова — Frontend Lead, Architect в REDMADROBOT, developer advocate и контрибьютор библиотеки effector
(https://twitter.com/_sergeysova)

Effector - менеджер состояния для любого приложения на JavaScript (React/Vue/Node.js)

Чат в Telegram: https://t.me/effector_ru

Список тем:

- Зачем нужны стейт-менеджеры?
- Что за стейт хранится в стейт-менеджерах?
- Какая логика должна быть описана в стейт-менеджерах?
- Если мы описываем логику в стейт-менеджере, то она зависит от конкретного стейт-менеджере? Не является ли это проблемой?
- Есть ли возможность описать логику на чистом JS?
- Можно ли обойтись без стейт-менеджеров?
- Фреймворки и стейт-менеджеры. Системы реактивности фреймворков и стейт-менеджеров.

Источник (полное видео):
Tver.io State Management Talks
https://www.youtube.com/watch?v=cUSyJk6k2rk
источник