artalog
4.24K subscribers
539 photos
40 videos
40 files
908 links
Развернутые ответы на вопросы в чатах, мысли от рабочих процессов.
Вопросы - @artalar.
Download Telegram
Заменил в реатоме ts-node на tsx - колдстарт поменялся с “быстро”, на “мгновенно”.

UPD: а дело, оказывается, в дефолтах. ts-node делает тайпчек по умолчанию, а tsx нет. Но я все равно останусь на tsx, потому что он без проблем запускает код с модулями, ну и вообще посмотрите сравнение.
❤‍🔥14👍1🔥1
А под vscode экстеншен писать совсем изи
🔥14
artalog
А под vscode экстеншен писать совсем изи
Еу, ну вот мое первое расширение для vscode NPM scripts 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).
Тесты вместо доки (пока что).
Live stream started
Live stream finished (22 minutes)
У нас есть страница со списком и фильтрами и раньше элемент списка редактировался в модалке. Ну мы же знаем что модалки зло? Конечно, конечно. Ну я переделал редактирование элемента на отдельную страницу (в рамках параллельной задачи).

И тут прилетает фичареквест от бизнеса - а можно что бы фильтры не сбрасывались при возвращении со страницы редактирования обратно на список элементов?

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

И я вот подумал, как бы еще можно решить такой кейс без доп кода, а что бы оно просто работало. Что если страницы рисовать не одна вместо другой, сбрасывая стейт, а визуально перекрывая (накладывая) их?

Нужен умный стек, с лимитом и автоматическим сбросом части истории при попытки перейти на уже лежащую в стеке страницу или еще какие правила. Но это все утилита строк на 50-100, а код страниц и компонентов сократился бы заметно.

Кто-то делал такое? Поделитесь в коментариях.

Кмк это хороший паттерн и он может показать силу SPA. Интересно что обычно мы используем классический MPA роутинг и он нас часто тормозит ментально.

P.S. и анимации переходов было бы делать таким образом заметно проще.
👍3