Сделать online playground в 2023 все еще сложно.
Что я хотел? Конечно, полностью рабочий TypeScript с подсказками - это очень удобно. Но таких реплов куча, и весят они как самолет, потому что нужно тащить метра два monaco и полноценный typescript.
Ну и ладно, это же запускается на компьютере разработчика, в чем проблема? Проблемы две. Иногда хочется открыть репл с мобилки, а это и медленная сеть, и для кого-то медленная инициализация. Но самая главная проблема - это несколько реплов на одной странице. Для некоторых доков это нужно, но от пачки codesandbox / stackblitz задохнется даже современная машина разраба.
Есть ли еще готовые решения? Я искал и не нашел.
И тут на помощь приходит гениальный esm.sh - это такой хедлес сендбокс, да еще и бесплатный. Кормим ему код, он его билдит и отдает ссылку на готовый ES модуль. Не нужно скачивать мегабайты из NPM, мы получаем только минимальный конечный бандл. Красота.
Натянул это на codemiror и получил вполне рабочее и очень быстрое решение! Но есть проблема :)
Суть нативных модулей в том что их кешит браузер и вы не можете один и тот же код запускать дважды. Что бы это пофиксить, исходники нужно хотя бы как-то модифицировать и пересоздавать модуль - а это лишний лаг на esm.sh и в целом спам сервиса.
Как бы вы это решили?)
Подумаем🤔
Кеш импортируемых пакетов - это ок (его можно сбросить перезагрузкой страницы, на крайний случай), нам нужно перезапускать только код в редакторе, а сложности сборки можно оставить на esm.sh. Как это сделать? Заменить все импорты в вашем коде добавив им префикс
Пдж, но если исходники мы больше не отправляем на билд, как вырезать типы? Самое маленькое что я нашел - это sucrace, делает много чего за пол сотни кб. Круто, конечно, но мне нужно только вырезание типов, надеюсь найду что-то еще меньше потом.
Редактор готов! Еще бы логи добавить… Хотел добавить
Потыкать можно тут: https://reatom.dev/repl
11 requests, 265 kB transferred, кмк отличный начальный результат.
Там есть еще пачка багов со стилями и по UX, начал пилить обновление выпилив preact (временно взял для скорости разработки), но застрял из-за бага в astro, ждемс. Думаю, через 1-2 недельку запаблишу как отдельный пакет.
Обычно, огромной болью онлайн реплов еще является безопасный запуск кода, без доступа к текущему ориджину, но т.к. сайт доки никаких персональных данных не складывает - и так норм.
Что я хотел? Конечно, полностью рабочий TypeScript с подсказками - это очень удобно. Но таких реплов куча, и весят они как самолет, потому что нужно тащить метра два monaco и полноценный typescript.
Ну и ладно, это же запускается на компьютере разработчика, в чем проблема? Проблемы две. Иногда хочется открыть репл с мобилки, а это и медленная сеть, и для кого-то медленная инициализация. Но самая главная проблема - это несколько реплов на одной странице. Для некоторых доков это нужно, но от пачки codesandbox / stackblitz задохнется даже современная машина разраба.
Есть ли еще готовые решения? Я искал и не нашел.
И тут на помощь приходит гениальный esm.sh - это такой хедлес сендбокс, да еще и бесплатный. Кормим ему код, он его билдит и отдает ссылку на готовый ES модуль. Не нужно скачивать мегабайты из NPM, мы получаем только минимальный конечный бандл. Красота.
Натянул это на codemiror и получил вполне рабочее и очень быстрое решение! Но есть проблема :)
Суть нативных модулей в том что их кешит браузер и вы не можете один и тот же код запускать дважды. Что бы это пофиксить, исходники нужно хотя бы как-то модифицировать и пересоздавать модуль - а это лишний лаг на esm.sh и в целом спам сервиса.
Как бы вы это решили?)
Подумаем
Кеш импортируемых пакетов - это ок (его можно сбросить перезагрузкой страницы, на крайний случай), нам нужно перезапускать только код в редакторе, а сложности сборки можно оставить на esm.sh. Как это сделать? Заменить все импорты в вашем коде добавив им префикс
https://esm.sh/. Делается это по такому регекспу /import.*('|")(?<path>.*)('|")/g (код), правда переносы строк пока не поддерживаются. Так все ломается, пока не понял почему: /import(.|\n)*(‘|”)(?<path>.*)(‘|”)/g.Пдж, но если исходники мы больше не отправляем на билд, как вырезать типы? Самое маленькое что я нашел - это sucrace, делает много чего за пол сотни кб. Круто, конечно, но мне нужно только вырезание типов, надеюсь найду что-то еще меньше потом.
Редактор готов! Еще бы логи добавить… Хотел добавить
@discoveryjs/discovery, но пока не осилил. Да и тяжелый он, скорее всего подрублю потом как доп модуль, а пока неплохо живется на крошечном @observablehq/inspector (в консоле все логи тоже есть).Потыкать можно тут: https://reatom.dev/repl
11 requests, 265 kB transferred, кмк отличный начальный результат.
Там есть еще пачка багов со стилями и по UX, начал пилить обновление выпилив preact (временно взял для скорости разработки), но застрял из-за бага в astro, ждемс. Думаю, через 1-2 недельку запаблишу как отдельный пакет.
Обычно, огромной болью онлайн реплов еще является безопасный запуск кода, без доступа к текущему ориджину, но т.к. сайт доки никаких персональных данных не складывает - и так норм.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍3
👍9🔥2
Между “завязываться на существующие либы / фреймворки” и делать свою платформенную команду есть промежуточные стадии. Многие разработчики и команды знают только о “пилим свое поверх готового”, но можно действовать и наоборот, внедрять своих разработчиков в ментейнеры готовых решений.
Профиты:
- это намного дешевле чем делать все самим
- ваши идеи и потребности иногда могут решаться чужими руками
- документация точно будет лучше :)
- вам не так страшно сделать форк и продолжить его развивать самостоятельно, потому что со всей внутрянкой вы знакомы
Сложности:
- овнер может быть себе на уме
- в какой-то момент технология может пойти не по нужному вам пути, это решается изначально более глубоким погружением своего человека и увеличением его влияния
- рассинхрон циклов разработки продукты и платформы
Идеально - микс. Вы помогаете кому-то делать ядро в OSS, сами используете его для своих надстроек в продукте.
Профиты:
- это намного дешевле чем делать все самим
- ваши идеи и потребности иногда могут решаться чужими руками
- документация точно будет лучше :)
- вам не так страшно сделать форк и продолжить его развивать самостоятельно, потому что со всей внутрянкой вы знакомы
Сложности:
- овнер может быть себе на уме
- в какой-то момент технология может пойти не по нужному вам пути, это решается изначально более глубоким погружением своего человека и увеличением его влияния
- рассинхрон циклов разработки продукты и платформы
Идеально - микс. Вы помогаете кому-то делать ядро в OSS, сами используете его для своих надстроек в продукте.
Telegram
Dev News от Максима Соснова
How platform teams get stuff done
Большая статья в блоге Мартина Фаулера про платформенные команды. В статье рассказывается, чем платформенные команды отличаются от продуктовых и рассмотрены основные паттерны взаимодействия между ними на разных этапах развития…
Большая статья в блоге Мартина Фаулера про платформенные команды. В статье рассказывается, чем платформенные команды отличаются от продуктовых и рассмотрены основные паттерны взаимодействия между ними на разных этапах развития…
👍11
Арк - первый браузер в котором я смог навсегда остаться в фулскрине и никогда больше не видеть статические элементы интерфейса браузера, только при касании левой части экрана.
💯6👍3
Forwarded from mefody.dev
Браузер Arc
Свершилось. Сегодня браузер Arc вышел в версии v1.0 и отключил лист ожидания. Это значит, что его может установить каждый без инвайт-кодов.
Я им пользуюсь уже давно, хоть и не постоянно. Основные фичи, которые мне нравятся:
- Сплит-вью. Можно разместить вкладки в одном окне рядом. Незаменимая фича для подготовки докладов.
- Всё на комбинациях клавиш. К тачпаду тянусь довольно редко, причём комбинации можно переназначать под себя.
- Пользовательские стили. Раньше в такое умели все браузеры, а теперь как будто только в Arc это осталось без расширений. В твиттере у меня всё ещё птичка в качестве лого :)
- Разделение на пространства. Завёл себе группу вкладок для записи подкастов, для игр в D&D и для подготовки докладов.
- Вкладки закрываются сами, если не открывать их в течение суток.
- Список вкладок — горизонтальный список, а не табики. Просто нравится, экран ведь широкий.
- По умолчанию можно скрыть весь интерфейс. Больше от сайтов ничего не отвлекает.
- Режим превью. Любую ссылку можно открыть в окне предпросмотра, и если уже надо, то тогда открыть как полноценную вкладку.
Ничего лишнего. Настраиваемое. Удобное. Попробуйте.
Да, работу работаю я всё ещё в Chrome. Потому что там удобнее с инструментами разработчика играться. Но пользоваться интернетом пока приятнее в Arc. Плюс у них классная работа с сообществом, на мои багрепорты отвечали очень быстро. В общем, хорошо, когда на рынке появляется что-то новое, пусть под капотом там всё тот же Chromium.
https://arc.net/
Свершилось. Сегодня браузер Arc вышел в версии v1.0 и отключил лист ожидания. Это значит, что его может установить каждый без инвайт-кодов.
Я им пользуюсь уже давно, хоть и не постоянно. Основные фичи, которые мне нравятся:
- Сплит-вью. Можно разместить вкладки в одном окне рядом. Незаменимая фича для подготовки докладов.
- Всё на комбинациях клавиш. К тачпаду тянусь довольно редко, причём комбинации можно переназначать под себя.
- Пользовательские стили. Раньше в такое умели все браузеры, а теперь как будто только в Arc это осталось без расширений. В твиттере у меня всё ещё птичка в качестве лого :)
- Разделение на пространства. Завёл себе группу вкладок для записи подкастов, для игр в D&D и для подготовки докладов.
- Вкладки закрываются сами, если не открывать их в течение суток.
- Список вкладок — горизонтальный список, а не табики. Просто нравится, экран ведь широкий.
- По умолчанию можно скрыть весь интерфейс. Больше от сайтов ничего не отвлекает.
- Режим превью. Любую ссылку можно открыть в окне предпросмотра, и если уже надо, то тогда открыть как полноценную вкладку.
Ничего лишнего. Настраиваемое. Удобное. Попробуйте.
Да, работу работаю я всё ещё в Chrome. Потому что там удобнее с инструментами разработчика играться. Но пользоваться интернетом пока приятнее в Arc. Плюс у них классная работа с сообществом, на мои багрепорты отвечали очень быстро. В общем, хорошо, когда на рынке появляется что-то новое, пусть под капотом там всё тот же Chromium.
https://arc.net/
arc.net
Arc from The Browser Company
Experience a calmer, more personal internet in this browser designed for you. Let go of the clicks, the clutter, the distractions.
🔥22🤡4❤1❤🔥1
mefody.dev
Браузер Arc Свершилось. Сегодня браузер Arc вышел в версии v1.0 и отключил лист ожидания. Это значит, что его может установить каждый без инвайт-кодов. Я им пользуюсь уже давно, хоть и не постоянно. Основные фичи, которые мне нравятся: - Сплит-вью. Можно…
А если вы на винде или просто хотите попробовать еще что-то - https://www.meetsidekick.com/features/
Sidekick
Features
Learn about the best Sidekick browser features that will save your deadlines, increase efficiency, and help you get things done!
❤4
Через минут 20 буду изучать https://github.com/tc39/proposal-async-context/
Материалы:
Отменить нельзя продолжить (моя статья)
The Road to Async Context - James M Snell, Node Congress 2023
Слайды:
https://docs.google.com/presentation/d/1LLcZxYyuQ1DhBH1htvEFp95PkeYM5nLSrlQoOmWpYEI/
https://docs.google.com/presentation/d/19P-06rk263L1xcPsjGAx6qld0b62iIHhwO0kpTa73Wo/
Материалы:
Отменить нельзя продолжить (моя статья)
The Road to Async Context - James M Snell, Node Congress 2023
Слайды:
https://docs.google.com/presentation/d/1LLcZxYyuQ1DhBH1htvEFp95PkeYM5nLSrlQoOmWpYEI/
https://docs.google.com/presentation/d/19P-06rk263L1xcPsjGAx6qld0b62iIHhwO0kpTa73Wo/
GitHub
GitHub - tc39/proposal-async-context: Async Context for JavaScript
Async Context for JavaScript. Contribute to tc39/proposal-async-context development by creating an account on GitHub.
Июль выдался сумасшедшим. Мне написало куча народу с разными интересными предложениями. И в два я, в итоге, вписался, ждите еще постов сегодня 🙂
Но совмещать вместе: фултайм работу, продуктовую и девелоперскую разработку reatom.dev, семью с маленьким ребенком, и еще какие-то активности… Это уже за гранью, конечно.
Одной из моих проблем была прокрастинация над тулингом. Мне казалось что без идеального таск менеджера у меня ничего не получится. Я даже начал писать свой собственный! Ну, без фундаментальных недостатков, вы понимаете. Но это все игры.
Много думал, всю прошлую неделю пришлось серьезно пересматривать мой тайм менеджемент, с ним было много принципиальных проблем. Теперь больше планирования, рамок, приоритетов, дедлайнов.
И у меня такие выводы. Хороший тулинг помогает разгрести и проще анализировать все задачи. Но главный инструмент - это всегда ваша же голова и мотивация. Если вы не можете делать дела имея школьную тетрадку и ручку - вам ничего не поможет, в долгосрочной перспективе точно.
Это как с copilot. Он действительно крутой и очень мощный и может сделать из вас 10x enginear, но только если вы уже этим самым enginear являетесь, и вы используете copilot, а не он вам говорит как и почему что-то делать.
Но совмещать вместе: фултайм работу, продуктовую и девелоперскую разработку reatom.dev, семью с маленьким ребенком, и еще какие-то активности… Это уже за гранью, конечно.
Одной из моих проблем была прокрастинация над тулингом. Мне казалось что без идеального таск менеджера у меня ничего не получится. Я даже начал писать свой собственный! Ну, без фундаментальных недостатков, вы понимаете. Но это все игры.
Много думал, всю прошлую неделю пришлось серьезно пересматривать мой тайм менеджемент, с ним было много принципиальных проблем. Теперь больше планирования, рамок, приоритетов, дедлайнов.
И у меня такие выводы. Хороший тулинг помогает разгрести и проще анализировать все задачи. Но главный инструмент - это всегда ваша же голова и мотивация. Если вы не можете делать дела имея школьную тетрадку и ручку - вам ничего не поможет, в долгосрочной перспективе точно.
Это как с copilot. Он действительно крутой и очень мощный и может сделать из вас 10x enginear, но только если вы уже этим самым enginear являетесь, и вы используете copilot, а не он вам говорит как и почему что-то делать.
🔥17❤3🤡1
Я присоединился к стартапу https://facelink.cc/ - это no-code платформа для создания "видеоворонок", новый способ создать сайт в современном видео формате. Это как Tilda + TikTok 🤯
Пилотная версия уже показала огромный спрос рынка на такое решение, а также очень хорошие бизнес-метрики для SAAS-проектов (CR из регистрации в оплату 7,38%, LTV 6+ месяцев и другие) — пора создавать серьезный продукт. У клиентов множество требований, а самих клиентов много как по количеству, так и по качеству (крупный ритейл, известные бренды, топ-блогеры и т.д.).
Вот примеры, как продукт работает у клиентов:
- https://www.fuseservice.com (виджет на сайте)
- https://facelink.cc/sp36bli2t (лендос)
- https://facelink.cc/wdvcgzdo7 (лендос)
- https://facelink.cc/hdysetqwh/ (сбор отзывов)
Наша цель - выйти на мировой рынок (рынок с потенциалом 200+ млн. юзеров). И мы ищем в команду того, кто готов создавать продукт мирового уровня и имеет амбиции серьезно вырасти по доходу (у членов команды есть опцион).
Планируется настоящий highload как на беке, так и на фронте. Админка - мини фигма + куча статистики и аналитики. Клиент - приложуха с миллиардами открытий в месяц.
Базовый сетап: TypeScript, vite, react, reatom, urql, mantine, css-modules. На беке nestjs. Все в монорепе на Gitlab.
Текущая команда: 4 на беке, 3 на фронте, 5 за product design.
Макеты в фигме уже заждались. Если у вас достаточно опыта в больших или не обычных проектах и времени что бы быстро пилить фичи (с моим ревью) - пишите об этом @igeomax! Фаундеры стартапа — предприниматели с успешным 15 летним опытом в бизнесе. Создали 10+ компаний, несколько успешно продали.
Пилотная версия уже показала огромный спрос рынка на такое решение, а также очень хорошие бизнес-метрики для SAAS-проектов (CR из регистрации в оплату 7,38%, LTV 6+ месяцев и другие) — пора создавать серьезный продукт. У клиентов множество требований, а самих клиентов много как по количеству, так и по качеству (крупный ритейл, известные бренды, топ-блогеры и т.д.).
Вот примеры, как продукт работает у клиентов:
- https://www.fuseservice.com (виджет на сайте)
- https://facelink.cc/sp36bli2t (лендос)
- https://facelink.cc/wdvcgzdo7 (лендос)
- https://facelink.cc/hdysetqwh/ (сбор отзывов)
Наша цель - выйти на мировой рынок (рынок с потенциалом 200+ млн. юзеров). И мы ищем в команду того, кто готов создавать продукт мирового уровня и имеет амбиции серьезно вырасти по доходу (у членов команды есть опцион).
Планируется настоящий highload как на беке, так и на фронте. Админка - мини фигма + куча статистики и аналитики. Клиент - приложуха с миллиардами открытий в месяц.
Базовый сетап: TypeScript, vite, react, reatom, urql, mantine, css-modules. На беке nestjs. Все в монорепе на Gitlab.
Текущая команда: 4 на беке, 3 на фронте, 5 за product design.
Макеты в фигме уже заждались. Если у вас достаточно опыта в больших или не обычных проектах и времени что бы быстро пилить фичи (с моим ревью) - пишите об этом @igeomax! Фаундеры стартапа — предприниматели с успешным 15 летним опытом в бизнесе. Создали 10+ компаний, несколько успешно продали.
🔥22🤯5🤮5👍2❤1👎1
На выходных обновил пост Декларативное программирование.
Telegram
artalog
Декларативное программирование - паттерн ограничения семантики.
Все эти "что VS как" часто оторваны от реальности. В действительности, какая-то синтаксическая конструкция может включать в себя много семантики, имея большой контекст работы, а может мало.…
Все эти "что VS как" часто оторваны от реальности. В действительности, какая-то синтаксическая конструкция может включать в себя много семантики, имея большой контекст работы, а может мало.…
Добавил в REPL реатома @discoveryjs/discovery от @gorshochekvarit (комит).
Вот так можно попробовать: t.me/reatom_ru_news/222
В целом штука прикольная и для больших жисонов удобная, особенно полезна когда нет возможности залезть в консоль, например с мобильного.
Не хватает только тёмной темы (надо бы пока добавить filter invert...) и кнопки copy для объектов. Мб кто законтрибьютит?)
Вот так можно попробовать: t.me/reatom_ru_news/222
В целом штука прикольная и для больших жисонов удобная, особенно полезна когда нет возможности залезть в консоль, например с мобильного.
Не хватает только тёмной темы (надо бы пока добавить filter invert...) и кнопки copy для объектов. Мб кто законтрибьютит?)
🔥3
JS challenge:
- you have a list of 1000 items
- you have an async function process(item)
- you need to process all items
- it needs to be done concurrently, but not more than 25 at a time
- collect items with errors
what's the cleanest way to do this?
libraries allowed
…
На скрине мой вариант решения :)
- you have a list of 1000 items
- you have an async function process(item)
- you need to process all items
- it needs to be done concurrently, but not more than 25 at a time
- collect items with errors
what's the cleanest way to do this?
libraries allowed
…
На скрине мой вариант решения :)
👍14🤯6❤1