artalog – Telegram
artalog
4.2K subscribers
531 photos
40 videos
39 files
896 links
Развернутые ответы на вопросы в чатах, мысли от рабочих процессов.
Вопросы - @artalar.
Download Telegram
Designing Events-First Microservices

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

Информация преподносится хорошо и будет полезна всем инженерам, не только бекенд разработки. Например, описанные принципы помогают понять как реактивное программирование помогает уменьшить связанность кода. И этот принцип применим абсолютно везде: от UI-виджетов, до бекенд сервисов.
👍8
На что уходят часы разработки реатома - ну я туплю в то как промисы работают (не первый раз уже). Первый скрин - как было, второй - как стало (комментарий внизу описывает почему).
🤔4👍2
https://news.1rj.ru/str/ctodaily/1626

Помимо топика, меня не устраивают облачные диски своими корявыми клиентами, в которых часто не хватает каких-то фич и есть проблемы с UX.

Что бы я хотел - это локальное приложение для синхронизации нескольких дисковых ресурсов: гугл драйв, авс, sftp, локальная папка и тп. Я управляю с любого файл менеджера своими локальными папками и файлами, а оно автоматом расползается бекапами по всяким дропбоксам и на личную виртуалку.
Не знаете таких приложений?) Быстрый гуглинг ничего дельного не дал, обычно предлагают комбайны, которые все на себя замыкают и денег за это просят.

UPD: спасибо за рекомендацию rclone.org.

Почему я против локальных (в квартире) NAS’ов:
1) Нужно выложить сразу много денег.
2) Отключение света или электричества в квартире явление не редкое и гарантий тут нет.
3) Стихийное бедствие в виде пожара, грабежа, да банального “зацепил провод и упало” грозит потерей всего. А любой переезд = офлайн.
4) Хотите доступ с интернета? Платите помесячную аренду за белый IP.
Заменил в реатоме ts-node на tsx - колдстарт поменялся с “быстро”, на “мгновенно”.

UPD: а дело, оказывается, в дефолтах. ts-node делает тайпчек по умолчанию, а tsx нет. Но я все равно останусь на tsx, потому что он без проблем запускает код с модулями, ну и вообще посмотрите сравнение.
❤‍🔥14👍1🔥1
А под vscode экстеншен писать совсем изи
🔥14
artalog
А под vscode экстеншен писать совсем изи
Еу, ну вот мое первое расширение для vscode NPM noscripts in file menu.

Разработка заняла часа три, не больше, с учетом первого погружния в документацию и регистрации в Azure devops для возможности паблишить в маркетплейс.

Из проблем, я так и не смог авторизоваться в CLI vsce, но смог ей собрать пакет и залить через веб интерфейс маркета.

Уточню, я знаю что в Explorer и так можно включить раздел NPM Scripts, но с ним очень не удобно работать когда у вас куча пакетов - это простыня джисона.
👍6🔥1
Давно жду этот пропосал и одно из самых интересных нововведений там это доп синтаксис для иммутабельного изменения глубоколежащего свойства.
👍10🤯7
tg_image_43670050.jpeg
508.7 KB
theme: rainglow.io CARBONIGHT
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.
👍8👎3😁1
Простой код. Архитектура.

Что такое простота? Это отсутствие сложности. Что такое сложность? Любое дополнительное знание (абстракции), которого нет по умолчанию. Дополнительное от чего и что есть по умолчанию? Вот здесь и возникают преткновения, потому что это область на которую разработчик может влиять при сетапе проекта и выбора архитектуры.

Обычно, за базовый тулинг мы берем наш основной ЯП и платформу на которой он запускается. От платформы зависит 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. У пользователя реального приложения цифры могут быть значительно хуже.
👍11🤯5
Популярный софт, без особых изменений по сути и в апи, должен в течении лет накапливать или уменьшать количество багов? Шесть лет прошло, откуда их там тонна?
💩1
Ну вы же знаете какие видосики я вам порекомендую в эту пятницу? 😃

Плейлист с ЯЛФ, там много крутого и помимо моего доклада. У меня первые в очереди на просмотр доклады про Web Vitals и Node.js.
🔥5
Было бы круто в будущем не иметь языков программирования вовсе. Загружаешь блок-схему, а нанопринтер печатает в твоем устройстве новую схему. Программы бы выполнялись в тысячи раз быстрее.
Нет, а правда, на сколько можно поднять тех процесс, с учетом получившейся оптимизации? И возможно ли уже печать такого тех процесса запихнуть в стандартный full-tower пк?
Производительность и объем устройства зависили бы от серого вещества. Что-то напоминает 🤔
А мозг - это скорее степпер или плис?
👍2👎1
Запилил компатибл пакет для первой версии реатома (работает на третьей).

Демо (см. package.json).
Тесты вместо доки (пока что).