Designing Events-First Microservices
Сегодня хочется порекомендовать доклад про событийную архитектуру, ключевые мысли которого можете видеть на скриншотах.
Информация преподносится хорошо и будет полезна всем инженерам, не только бекенд разработки. Например, описанные принципы помогают понять как реактивное программирование помогает уменьшить связанность кода. И этот принцип применим абсолютно везде: от UI-виджетов, до бекенд сервисов.
Сегодня хочется порекомендовать доклад про событийную архитектуру, ключевые мысли которого можете видеть на скриншотах.
Информация преподносится хорошо и будет полезна всем инженерам, не только бекенд разработки. Например, описанные принципы помогают понять как реактивное программирование помогает уменьшить связанность кода. И этот принцип применим абсолютно везде: от UI-виджетов, до бекенд сервисов.
👍8
На что уходят часы разработки реатома - ну я туплю в то как промисы работают (не первый раз уже). Первый скрин - как было, второй - как стало (комментарий внизу описывает почему).
🤔4👍2
https://news.1rj.ru/str/ctodaily/1626
Помимо топика, меня не устраивают облачные диски своими корявыми клиентами, в которых часто не хватает каких-то фич и есть проблемы с UX.
Что бы я хотел - это локальное приложение для синхронизации нескольких дисковых ресурсов: гугл драйв, авс, sftp, локальная папка и тп. Я управляю с любого файл менеджера своими локальными папками и файлами, а оно автоматом расползается бекапами по всяким дропбоксам и на личную виртуалку.
Не знаете таких приложений?) Быстрый гуглинг ничего дельного не дал, обычно предлагают комбайны, которые все на себя замыкают и денег за это просят.
UPD: спасибо за рекомендацию rclone.org.
Почему я против локальных (в квартире) NAS’ов:
1) Нужно выложить сразу много денег.
2) Отключение света или электричества в квартире явление не редкое и гарантий тут нет.
3) Стихийное бедствие в виде пожара, грабежа, да банального “зацепил провод и упало” грозит потерей всего. А любой переезд = офлайн.
4) Хотите доступ с интернета? Платите помесячную аренду за белый IP.
Помимо топика, меня не устраивают облачные диски своими корявыми клиентами, в которых часто не хватает каких-то фич и есть проблемы с UX.
Что бы я хотел - это локальное приложение для синхронизации нескольких дисковых ресурсов: гугл драйв, авс, sftp, локальная папка и тп. Я управляю с любого файл менеджера своими локальными папками и файлами, а оно автоматом расползается бекапами по всяким дропбоксам и на личную виртуалку.
Не знаете таких приложений?) Быстрый гуглинг ничего дельного не дал, обычно предлагают комбайны, которые все на себя замыкают и денег за это просят.
UPD: спасибо за рекомендацию rclone.org.
Почему я против локальных (в квартире) NAS’ов:
1) Нужно выложить сразу много денег.
2) Отключение света или электричества в квартире явление не редкое и гарантий тут нет.
3) Стихийное бедствие в виде пожара, грабежа, да банального “зацепил провод и упало” грозит потерей всего. А любой переезд = офлайн.
4) Хотите доступ с интернета? Платите помесячную аренду за белый IP.
Telegram
запуск завтра
Мужчина сфотографировал воспаленный пенис сына на свой андроид телефон и отправил фотографии врачу. Алгоритмы гугла посчитали, что это детское порно: гугл заблокировал его аккаунт и сообщил о фотографиях в полицию. Полицейские провели короткое расследование…
artalog
А под vscode экстеншен писать совсем изи
Еу, ну вот мое первое расширение для vscode NPM noscripts in file menu.
Разработка заняла часа три, не больше, с учетом первого погружния в документацию и регистрации в Azure devops для возможности паблишить в маркетплейс.
Из проблем, я так и не смог авторизоваться в CLI vsce, но смог ей собрать пакет и залить через веб интерфейс маркета.
Уточню, я знаю что в Explorer и так можно включить раздел NPM Scripts, но с ним очень не удобно работать когда у вас куча пакетов - это простыня джисона.
Разработка заняла часа три, не больше, с учетом первого погружния в документацию и регистрации в Azure devops для возможности паблишить в маркетплейс.
Из проблем, я так и не смог авторизоваться в CLI vsce, но смог ей собрать пакет и залить через веб интерфейс маркета.
Уточню, я знаю что в Explorer и так можно включить раздел NPM Scripts, но с ним очень не удобно работать когда у вас куча пакетов - это простыня джисона.
Visualstudio
NPM noscripts in file menu - Visual Studio Marketplace
Extension for Visual Studio Code - adds "Show NPM noscripts" menu to the file explorer
👍6🔥1
Давно жду этот пропосал и одно из самых интересных нововведений там это доп синтаксис для иммутабельного изменения глубоколежащего свойства.
👍10🤯7
tg_image_43670050.jpeg
508.7 KB
theme: rainglow.io CARBONIGHT
font: typeof.net/Iosevka/
#ide
font: typeof.net/Iosevka/
"editor.fontFamily": "Iosevka Term",
"editor.fontWeight": "600",
"editor.fontLigatures": true,
"editor.fontSize": 18,
#ide
👎8🔥5
Forwarded from Стой под стрелой (Nikita Prokopov)
Есть такой классный сериал, Атланта. Он в целом очень милый, но иногда там такую философию выдают, что грузит похлеще Сартра. В одной серии один из персонажей выходит из кухни с кружкой, из которой ест сендвич. «Breakfast cup», — говорит. Ему: «You made that up», типа, нет такого понятия. На что он справедливо замечает: «Everything is made up, nigga. Stay woke».
Я это к чему. Я уже давно перестал пытаться как-то осмысленно употреблять хоть какие-то термины в нашей области. Потому что бардак, термины используют кто как хочет, и означают они как правило то, что удобно собеседнику.
Например, недавно в комментариях разразился срач, является ли функция, выводящая в лог, чистой. Может является, а может и не является — потому что никто не знает, что такое чистая функция. Точнее как: этот термин может означать то, что тебе нужно, и в зависимости от этого она либо будет чистой, либо не будет.
Сложно? Вот и я о том же. В конечном итоге важно то, что функция выводит в лог. А считать ее чистой или нет — абсолютно бесполезный спор, который НИЧЕГО не добавляет и НИЧЕГО не проясняет.
Является ли выделение памяти сайд эффектом? В каком-то смысле да, но обычно удобнее считать, что нет (пока память не кончится). Важно в конечном итоге то, что память выделяется, и то, какими свойствами это выделение обладает, а не то, как мы это назовем. Какая разница?
Другой спор был про то, является ли CRDT алгоритмом консенсуса. Один из оппонентов считал, что да, потому что его определение алгоритма консенсуса включало CRDT. А другой считал, что нет, потому что его определение его не включало. О чем был спор? Поменялись ли свойства CRDT от этого хоть на йоту? Нет, CRDT что делал, ровно это и продолжает делать. Спор даже не притронулся к сути вопроса.
И так в нашей области постоянно. Особенно я люблю, когда удобные термины присваивают и переназначают им смысл. Например, до недавнего времени признаком функционального языка являлась строгая статическая типизация, но сейчас это уже не так. Или Алан Кей, который придумал ООП как объекты и передачу сообщений в первую очередь, но индустрии термин понравился и они взяли его для процедурно-классового программирования. А единственный ООП-язык теперь это Эрленг и он даже не пытается таковым себя называть, потому что не поймут.
Если совсем уж ударяться в философию, то так-то и вещей в природе не существует. В природе нет конкретно собаки или там яблока, есть просто набор атомов, которые в какой-то момент оказались «рядом». Это просто нам удобно эту совокупность атомов как-то покороче обозвать, но, опять же, к происходящему на самом деле это отношения не имеет. Мир прекрасно существовал до того, как человек придумал для него слова, а парадокс корабля Тесея не существует в природе, он есть только в голове человека.
Смотрите на суть, а не на терминологию, короче. Потому что терминологию со временем меняют, а суть остается. Stay woke.
Я это к чему. Я уже давно перестал пытаться как-то осмысленно употреблять хоть какие-то термины в нашей области. Потому что бардак, термины используют кто как хочет, и означают они как правило то, что удобно собеседнику.
Например, недавно в комментариях разразился срач, является ли функция, выводящая в лог, чистой. Может является, а может и не является — потому что никто не знает, что такое чистая функция. Точнее как: этот термин может означать то, что тебе нужно, и в зависимости от этого она либо будет чистой, либо не будет.
Сложно? Вот и я о том же. В конечном итоге важно то, что функция выводит в лог. А считать ее чистой или нет — абсолютно бесполезный спор, который НИЧЕГО не добавляет и НИЧЕГО не проясняет.
Является ли выделение памяти сайд эффектом? В каком-то смысле да, но обычно удобнее считать, что нет (пока память не кончится). Важно в конечном итоге то, что память выделяется, и то, какими свойствами это выделение обладает, а не то, как мы это назовем. Какая разница?
Другой спор был про то, является ли CRDT алгоритмом консенсуса. Один из оппонентов считал, что да, потому что его определение алгоритма консенсуса включало CRDT. А другой считал, что нет, потому что его определение его не включало. О чем был спор? Поменялись ли свойства CRDT от этого хоть на йоту? Нет, CRDT что делал, ровно это и продолжает делать. Спор даже не притронулся к сути вопроса.
И так в нашей области постоянно. Особенно я люблю, когда удобные термины присваивают и переназначают им смысл. Например, до недавнего времени признаком функционального языка являлась строгая статическая типизация, но сейчас это уже не так. Или Алан Кей, который придумал ООП как объекты и передачу сообщений в первую очередь, но индустрии термин понравился и они взяли его для процедурно-классового программирования. А единственный ООП-язык теперь это Эрленг и он даже не пытается таковым себя называть, потому что не поймут.
Если совсем уж ударяться в философию, то так-то и вещей в природе не существует. В природе нет конкретно собаки или там яблока, есть просто набор атомов, которые в какой-то момент оказались «рядом». Это просто нам удобно эту совокупность атомов как-то покороче обозвать, но, опять же, к происходящему на самом деле это отношения не имеет. Мир прекрасно существовал до того, как человек придумал для него слова, а парадокс корабля Тесея не существует в природе, он есть только в голове человека.
Смотрите на суть, а не на терминологию, короче. Потому что терминологию со временем меняют, а суть остается. Stay woke.
👍8👎3😁1
Простой код. Архитектура.
Что такое простота? Это отсутствие сложности. Что такое сложность? Любое дополнительное знание (абстракции), которого нет по умолчанию. Дополнительное от чего и что есть по умолчанию? Вот здесь и возникают преткновения, потому что это область на которую разработчик может влиять при сетапе проекта и выбора архитектуры.
Обычно, за базовый тулинг мы берем наш основной ЯП и платформу на которой он запускается. От платформы зависит std (стандартная библиотека). Для ноды это модули fs и тп, для браузера DOM и остальное. Это базовые примитивы, на которых строится остальной тулинг и вот вопрос, нужны ли нам лишние абстракции, сокращающие код, но имеющие свою семантику и сложность, или мы можем эффективно (выразительно и коротко) решать наши задачи базовыми примитивами?
Простота - близость к платформе.
Тут важно заметить, что говоря о базовых примитивах мы предполагаем что разработчик хорошо с ними знаком и досконально знает. Что, на самом деле, не всегда так, потому что это довольно большой объем знаний, который, как показывает практика, современный разработчик за время своего обучения запихнуть в себя не успевает.
И что делать? Когда платформа становится слишком большим порогом входа - нужно менять платформу! Так мы приходим к реакт / vue разработчикам, которые в начале своего пути ничего другого не знают. И это нормально, потому что ограниченными знаниями можно просто решать большую часть проблем (ради которых используемая платформа создавалась).
Платформа - то что мы знаем.
Если же у вас какие-то не обычные требования, особенно по не функциональным требованиям, вам нужно выбирать соответствующую платформу, но главное помните - простые вещи те, которые вы (и ваша команда) хорошо знает. Поэтому разработку нужно начинать с оценки способностей команды и обучения необходимому тулингу или ограничениям по использованию неизвестного.
Что такое простота? Это отсутствие сложности. Что такое сложность? Любое дополнительное знание (абстракции), которого нет по умолчанию. Дополнительное от чего и что есть по умолчанию? Вот здесь и возникают преткновения, потому что это область на которую разработчик может влиять при сетапе проекта и выбора архитектуры.
Обычно, за базовый тулинг мы берем наш основной ЯП и платформу на которой он запускается. От платформы зависит std (стандартная библиотека). Для ноды это модули fs и тп, для браузера DOM и остальное. Это базовые примитивы, на которых строится остальной тулинг и вот вопрос, нужны ли нам лишние абстракции, сокращающие код, но имеющие свою семантику и сложность, или мы можем эффективно (выразительно и коротко) решать наши задачи базовыми примитивами?
Простота - близость к платформе.
Тут важно заметить, что говоря о базовых примитивах мы предполагаем что разработчик хорошо с ними знаком и досконально знает. Что, на самом деле, не всегда так, потому что это довольно большой объем знаний, который, как показывает практика, современный разработчик за время своего обучения запихнуть в себя не успевает.
И что делать? Когда платформа становится слишком большим порогом входа - нужно менять платформу! Так мы приходим к реакт / vue разработчикам, которые в начале своего пути ничего другого не знают. И это нормально, потому что ограниченными знаниями можно просто решать большую часть проблем (ради которых используемая платформа создавалась).
Платформа - то что мы знаем.
Если же у вас какие-то не обычные требования, особенно по не функциональным требованиям, вам нужно выбирать соответствующую платформу, но главное помните - простые вещи те, которые вы (и ваша команда) хорошо знает. Поэтому разработку нужно начинать с оценки способностей команды и обучения необходимому тулингу или ограничениям по использованию неизвестного.
👍23
This media is not supported in your browser
VIEW IN TELEGRAM
Вот вам максимально наглядный пример почему не нужно использовать реактовский контекст для часто обновляемого стейта: https://codesandbox.io/s/clever-fire-dqc0my
Под капотом, при обновлении значения в провайдере реакт проходится по всем дочерним виртуальным нодам в поисках подписчиков - только если подписчик найден будет ререндер, но, повторюсь, сначала нужно его найти а для этого обойти весь нижележащий VDOM. И эта работа может занимать ОЧЕНЬ много времени на большом количестве виртуальных нод, в примере компонент списка слишком простой и стейтлес, так же я провожу эксперимент на apple m1. У пользователя реального приложения цифры могут быть значительно хуже.
Под капотом, при обновлении значения в провайдере реакт проходится по всем дочерним виртуальным нодам в поисках подписчиков - только если подписчик найден будет ререндер, но, повторюсь, сначала нужно его найти а для этого обойти весь нижележащий VDOM. И эта работа может занимать ОЧЕНЬ много времени на большом количестве виртуальных нод, в примере компонент списка слишком простой и стейтлес, так же я провожу эксперимент на apple m1. У пользователя реального приложения цифры могут быть значительно хуже.
👍11🤯5
Популярный софт, без особых изменений по сути и в апи, должен в течении лет накапливать или уменьшать количество багов? Шесть лет прошло, откуда их там тонна?
💩1
Ну вы же знаете какие видосики я вам порекомендую в эту пятницу? 😃
Плейлист с ЯЛФ, там много крутого и помимо моего доклада. У меня первые в очереди на просмотр доклады про Web Vitals и Node.js.
Плейлист с ЯЛФ, там много крутого и помимо моего доклада. У меня первые в очереди на просмотр доклады про Web Vitals и Node.js.
YouTube
Я 💛 Фронтенд 2022
Share your videos with friends, family, and the world
🔥5
Было бы круто в будущем не иметь языков программирования вовсе. Загружаешь блок-схему, а нанопринтер печатает в твоем устройстве новую схему. Программы бы выполнялись в тысячи раз быстрее.
Нет, а правда, на сколько можно поднять тех процесс, с учетом получившейся оптимизации? И возможно ли уже печать такого тех процесса запихнуть в стандартный full-tower пк?
Производительность и объем устройства зависили бы от серого вещества. Что-то напоминает 🤔
А мозг - это скорее степпер или плис?
Нет, а правда, на сколько можно поднять тех процесс, с учетом получившейся оптимизации? И возможно ли уже печать такого тех процесса запихнуть в стандартный full-tower пк?
Производительность и объем устройства зависили бы от серого вещества. Что-то напоминает 🤔
А мозг - это скорее степпер или плис?
👍2👎1
Запилил компатибл пакет для первой версии реатома (работает на третьей).
Демо (см. package.json).
Тесты вместо доки (пока что).
Демо (см. package.json).
Тесты вместо доки (пока что).
CodeSandbox
Reatom Todo App (v3-v1) - CodeSandbox
A todo list app with React-Redux and redux-steroid (with normalized store shape).