Telegram Web Link
https://blog.rust-lang.org/2023/12/21/async-fn-rpit-in-traits.html

Вот это да, что таки заехало в rust 1.75.

Хорошее
👎4👍3
Сейчас уже нет Настоящего Айкидо. В наше время айкидо называется, когда два чудака лупят друг друга пятками в челюсть или ломают друг другу суставы, или не знаю, чем они там ещё занимаются, не видел никогда.

А Настоящее Айкидо — оно было совсем другое. Оно заключалось в том, чтобы победить Неприятеля так, чтобы самому не сильно напрягаться. Для этого даже не обязательно с этим Неприятелем встречаться.


Вот скажем принесли вам в разработку макеты с Неведомой Фичей. Как её сделать — хз, нет понимания.

Приходит вам в голову мысль, как реализовать эту фичу с помощью Костылей. «Что поделать, инженерия — она такая», — думаете вы и берётесь за работу. В процессе к одному Костылю приходится прилепить ещё парочку и скрепить это для прочности подручными материалами. В общем, вы по ходу встречаете всё большие сложности и затем героически с ними боретесь. Получившееся решение громоздкое, хрупкое, но время на него уже потрачено, выкинуть жалко, да и в целом оно работает (почти всегда), так что что уж тут, оставляем.

Вроде бы вы и победили, но гаденько как-то, нет этого приятного ощущения, ради которого вы когда-то давно вообще этим всем начали заниматься. Это не Настоящее Айкидо.

Либо же вы ищете похожую задачу на Стэковерфлоу или спрашиваете у Чат-бота. И таким образом вы находите «Либу, которая решит все ваши проблемы». Правда помимо вашей задачи она решает ещё и парочку других проблем по пути, ну и тянет набор зависимостей на 500кб. Но это ладно, думаете вы, фичу-то надо сделать ещё вчера. «Ок, для временного решения сойдёт», — решаете вы и используете либу.

А потом, спустя год-другой нужно вам зависимости проекта обновить и вы находите эту либу, вспоминаете что к чему, хотите версию этой либы заодно поднять. Но либа уже заброшена владельцем и вообще новым Реактом не поддерживается. «Что поделать, надо выпиливать», — думаете вы и снова оказываетесь в самом начале.

Это не победа, Неприятель вас обхитрил, притворился побеждённым и вам снова нужно с ним сражаться. Это тоже не путь Настоящего Айкидо.

А как бы поступил Мастер Настоящего Айкидо? Он бы сел, подумал и вспомнил, что Браузер, для которого он пишет программу, уже и сам умеет в нужную фичу. И вот Мастер на митинге скажет «Это умеет Платформа», а потом возьмёт и напишет несколько строк кода, чтобы дёрнуть нужный браузерный API, закроет задачу и пойдёт пить чай. И его решение никогда не протухнет, ведь Платформа всегда обратно совместима.

Мастер Настоящего Айкидо прилагает большего всего сил, чтобы освоить базу, и затем стремится к применению усвоенных принципов. А когда ему приходит мысль, что ему всё ясно, то он говорит себе: «Этого недостаточно», и идёт дальше копать Базу. 🥷
👎27🔥8👍65🌚4
Я очень люблю разные инструменты для анализа знаний и принятия решений.

6 лет назад попробовал матрицу Эйзенхауэра. И по сей день исследую вопрос рационального применения своих ресурсов. Текущий статус: тревожное расстройство, выгорание. Но кажется, что это не связано с попытками использовать время эффективно.

Хочу поделиться целым набором очень полезных инструментов

https://untools.co/
🔥158🗿3👍1👎1
Ору с Винды
😁38👎3🤯3🙈1
Ну зачем… что за говнолого.
Есть какие-то миграторы на Spotify?
👎8515🗿13127
Опять эти антивирусы.

У меня в квартире сидят два друга с разными ноутбуками.
У одного Касперский внезапно кричит, что была обнаружена атака, в ЛОКАЛЬНОЙ сети.
В это время, второй нажимает в своем Avast сканирование локальной сети.
15😁13
Я давненько пишу на эффекторе и зачастую упираюсь в некоторые не очень красивые или практичные решения в проектах, в которые прихожу.

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

Хочу рассмотреть очень простой пример: Страница логина с 2FA аутентификацией.

Моя цель: отделить код самих страниц друг от друга, а также вынести код перехода между страницами и все эти правила за пределы страниц.

Тогда все, что касается страницы логина будет лежать в:
src/pages/auth-login/model.ts
При этом код отвечающий за проверки логики между страницами в:
src/processes/login/model.ts.

Можно представить модель каждой страницы как черный ящик с событиями, этот подход позволяет упростить редактирование страниц, а снаружи можно:
1) запустить процесс, дернув событие
2) отправить .abort внутрь модели
3) подписаться на успешное завершение логики модели
4) подписаться на завершение с ошибкой
5) и еще добавить кастомные события в зависимости от бизнес-логики

В моём случае, каждая модель страницы экспортирует что-то вроде:

// Should be called only from outside, here just listen
export const inputs = {
started: createEvent(),
aborted: createEvent(),
};

// Should be called by this model
export const outputs = {
finished: createEvent<UserSession>(),
};


В процессе обработки мы можем заимпортировать все нужные нам модели страниц и построить любую логику:


import * as loginModel from '@/pages/auth-login';
import * as login2FaModel from '@/pages/auth-login-2fa';

sample({
clock: loginModel.outputs.finished,
target: login2FaModel.inputs.started,
})


Когда процесс логина завершится успешно, начинаем процесс двухфакторной аутентификации.

Это самый примитивный пример, но с его помощью можно строить довольно сложные процессы.
29🔥8👍6🆒31
Первые два sample (15-25 строки) можно представить в виде вот такой диаграммы.

В данном случае, я вынес этот код в отдельный слой processes (по FSD), но это не обязательно.

Как в комментариях к предыдущему посту правильно заметили это просто pub/sub механика, реализованная вручную на effector.

Я показываю лишь пример реализации, которую можно усложнить или упростить в зависимости от задачи и договоренностей в команде.

———

Визуализация effector в виде блок-схем это довольно двоякая задача. Пример можно глянуть на anode.effector.dev.

Но основную сложность я вижу в том как выбирать какие семплы/ноды склеивать в общую схему, а какие разбивать на две.

На моей диаграмме, я записал два семпла как две разные схемы. Но можно было и склеить, чтобы не было дублирования loginModel.

К сожалению, так работает не всегда.
9🔥3
Снова вернулся к SSR на effector.

Так как у меня жутко болит от Next.JS, я поглядел в сторону Vite и его vite-plugin-ssr, который теперь называется Vike.

Файловый роутинг, куча хуков для кастомизации, любой UI-фреймворк, SSR, SSG, можно подключить свой роутер, любое направление деплоя.

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

Мне очень нравится вайб этого проекта, очень похоже на Razzle, но с большим коммьюнити.
👍25🔥88👎1
Волшебная ситуация

Чел выложил на свой статический сайт 3.44MB .mp3
Кто-то решил задудосить его скачивая файл множество раз с кучи устройств. А Netlify, где был выложен статический сайт, выставил счет на $104К.

Я был в подобной ситуации, когда игрался с Kubernetes на AWS. Но там мне прилетело около $20К, после разговора с поддержкой, счет аннулировали.

P.S.
Буквально час назад Matt CEO of Netlify написал, что счет тоже будет аннулирован. Спасибо за ссылку в комментах.

Но любопытно, все было бы точно также, если бы чел не написал о своей ситуации в Reddit, и там это не вызвало волну комментов?
🔥20🤯10😢3👎1🤔1
У нового дизайна гугл очень много странных решений.

Две огромные близкорасположенные одинаковые визуально кнопки.
Странная вытянутая форма форма.

В других вариациях еще и места пустого очень много.

Объясните?
😁19👍8🗿6😱3👎1
Жду запуска 3 старшипа.
Любопытно, что чуваки из spacex успели починить в такой огромной ракете.
🤷‍♂4😐3👍2😁2
Вот читаю я это и не понимаю

В чём смысл всей этой возни с хуками для экшенов и форм?
Упростить создание лендингов с инпутом и кнопкой подписки?

https://github.com/facebook/react/pull/28491
🤷‍♂10👍4
Сейчас узнал, что Cloudflare постепенно становится таким маленьким AWS.

У них также куча своих сервисов. Например, можно запускать ML-модели — https://developers.cloudflare.com/workers-ai/
5🔥3😁1😱1
Помните раньше были такие кодмоды?

Они писались крайне редко и очень сложно. Просто поглядите по ссылке выше и в пакеты от того же facebook.
Нужно неплохо так понимать как устроено AST конкретного языка и конкретного парсера.
Только для javascript есть около 20 парсеров, хоть и не у всех уникальный AST.

Как утверждают авторы Grit, достаточно разобраться в устройстве их языка GritQL, чтобы трансформировать любой поддерживаемый синтаксис.

На примере с картинки:
- шаблон по которому ищем: console.$method($my_message).
- $name это так называемые метапеременные, вроде ссылок на AST-ноды.
- слева от => шаблон по которому ищем, а справа на что будем заменять.
- where описывает список условий, при которых сработает матч паттерна и замена.
- выражение слева от <: соответствует паттерну справа
- а там составной паттерн or {}, список в доке

Это может показаться слишком простым, но в языке можно переиспользовать буквально каждую часть: функции, предикаты и паттерны.
Можно делать кодмоды, а можно сделать линтер с продвинутыми фиксами.

https://docs.grit.io
🔥28👍72
Для чего нужен effector patronum?

Конечно, всё, что есть в patronum можно реализовать своими руками. В некоторых случаях это довольно просто, в других придется помудрить с типами, а третьи еще умудриться протестировать.

Но главная цель — дать пачку реюзабельных операторов, которые уже протестированы, документированы и позволяют писать код короче.

Оператор format
👍32🔥9😁5👎22
Хочу порекомендовать фронтенд-разработчика.
На случай если вы в компании сейчас нанимаете.

5 лет опыта: typescript, react, effector, redux, vue.
Довольно много разного опыта.

Писать сюда: @Nataliya_R7
В комментах CV.pdf
👍5🔥32
2025/07/09 21:58:04
Back to Top
HTML Embed Code: