Cloudflare присоединяется к OpenNext
Astro умеет в SSR с серверными экшенами
В чем смысл Next.js?
Все равно, сложные приложения на нем делать больно
Astro умеет в SSR с серверными экшенами
В чем смысл Next.js?
Все равно, сложные приложения на нем делать больно
2👍19✍3👎1
В ближайшую пятницу 4 октября будет ViteConf.
Я буду слушать и всем советую взять онлайн билет.
Уверен, что покажут что-то интересное, особенно, если вы не следите за beta версиями и обсуждениями в репозиториях Vite.
Я буду слушать и всем советую взять онлайн билет.
Уверен, что покажут что-то интересное, особенно, если вы не следите за beta версиями и обсуждениями в репозиториях Vite.
viteconf.amsterdam
The Official in-person Vite Conference organised in collaboration with the Creator of Vite, Evan You and Vite Core Team!
3👍16👎2
Сова пишет…
В ближайшую пятницу 4 октября будет ViteConf. Я буду слушать и всем советую взять онлайн билет. Уверен, что покажут что-то интересное, особенно, если вы не следите за beta версиями и обсуждениями в репозиториях Vite.
Next.js Conf 2025
Next.js Conf by Vercel
Join us in SF or online on October 22
👍3
Всем привет!
Потихоньку смотрю доклады с ViteConf, там 12 часов контента, не могу так много залпом.
The Future of the Web is Local First • Ben Holmes
Бен показал как используя SQLite в браузере, вместе с Drizzle и Astro делать local-first веб-приложения.
Пакет sqlocal — это по сути билд SQLite3 под WASM, позволяет выполнять запросы к БД в памяти браузера.
Удобно, что есть адаптер для Drizzle, а значит ORM можно использовать в браузере.
Хранение .sqlite файла в системе пользователя сделано через StorageManager .getDirectory(). Юзер разрешает доступ приложению в определенную директорию на своем диске, откуда код может читать и писать.
Поддержка есть во всех зеленых браузерах уже больше года.
Потихоньку смотрю доклады с ViteConf, там 12 часов контента, не могу так много залпом.
The Future of the Web is Local First • Ben Holmes
Бен показал как используя SQLite в браузере, вместе с Drizzle и Astro делать local-first веб-приложения.
Пакет sqlocal — это по сути билд SQLite3 под WASM, позволяет выполнять запросы к БД в памяти браузера.
Удобно, что есть адаптер для Drizzle, а значит ORM можно использовать в браузере.
Хранение .sqlite файла в системе пользователя сделано через StorageManager .getDirectory(). Юзер разрешает доступ приложению в определенную директорию на своем диске, откуда код может читать и писать.
const root = await navigator.storage.getDirectory();
const handle = await root.getFileHandle("db.sqlite");
const writable = await handle.createWritable();
Поддержка есть во всех зеленых браузерах уже больше года.
👍30❤5🔥2
Сова пишет…
Всем привет! Потихоньку смотрю доклады с ViteConf, там 12 часов контента, не могу так много залпом. The Future of the Web is Local First • Ben Holmes Бен показал как используя SQLite в браузере, вместе с Drizzle и Astro делать local-first веб-приложения.…
Кроме этого, Бен показал как использовать эмбеддинги, для реализации поиска по смыслу, а не по совпадению букв, тоже local-first.
Правда, по ощущением это было хайпа ради, на что указывает ироничная ачивка на скриншоте.
Меня этот момент позабавил, потому что дома тоже есть такой "кек":
день прожит не зря))
P.S.
Вместо React-библиотек, Бен использует нативный <dialog> подключаясь к его событиям.
А еще, при использовании настоящих когнитивных моделей, в Хроме можно будет не качать 30МБ+ для работы поиска, а использовать встроенный AI.
Хоть и Gemini Nano, но уже хорошо
Правда, по ощущением это было хайпа ради, на что указывает ироничная ачивка на скриншоте.
Меня этот момент позабавил, потому что дома тоже есть такой "кек":
✅ Сережа упомянул AIдень прожит не зря))
P.S.
Вместо React-библиотек, Бен использует нативный <dialog> подключаясь к его событиям.
А еще, при использовании настоящих когнитивных моделей, в Хроме можно будет не качать 30МБ+ для работы поиска, а использовать встроенный AI.
Хоть и Gemini Nano, но уже хорошо
1😁6❤1👎1
Сейчас потратил 8+ часов на sandpack в комплекте с codemirror, пробовал monaco-editor и это всё в astro, в браузерном окружении.
Бьюсь уже которую неделю, но codemirror отказывается подсвечивать синтаксис кода. Просто cm-line и никаких токенов, просто строка и ничего больше.
Причем, codemirror в обычном Vite SPA приложении тоже не завелся. Какой же костыльный редактор. Я даже его без оберток подключал, нифига не работает. Как его вообще хоть кому-то удается завести?
Попробовал также аналог от stackblitz TutorialKit(WebContainers API), но там нет готовых реюзабельных компонентов.
Не хочу вручную верстать Editor, Terminal, Navigator и FileTree.
Может есть хорошие embed-песочницы с поддержкой npm-пакетов?
Бьюсь уже которую неделю, но codemirror отказывается подсвечивать синтаксис кода. Просто cm-line и никаких токенов, просто строка и ничего больше.
Причем, codemirror в обычном Vite SPA приложении тоже не завелся. Какой же костыльный редактор. Я даже его без оберток подключал, нифига не работает. Как его вообще хоть кому-то удается завести?
Попробовал также аналог от stackblitz TutorialKit(WebContainers API), но там нет готовых реюзабельных компонентов.
Не хочу вручную верстать Editor, Terminal, Navigator и FileTree.
Может есть хорошие embed-песочницы с поддержкой npm-пакетов?
🙈5🗿4👎1
Сова пишет…
Сейчас потратил 8+ часов на sandpack в комплекте с codemirror, пробовал monaco-editor и это всё в astro, в браузерном окружении. Бьюсь уже которую неделю, но codemirror отказывается подсвечивать синтаксис кода. Просто cm-line и никаких токенов, просто строка…
Решение оказалось настолько тупым в своей прямолинейности, что мне не сразу пришло в голову:
Я в восторге!
P.S.
Продолжаю смотреть ViteConf, к тому же там еще NextConf подъехал.
Пока что очень мало интересных докладов, которые не пересказывают доку или блог.
rm -rf pnpm-lock.yaml node_modules
pnpm install
Я в восторге!
P.S.
Продолжаю смотреть ViteConf, к тому же там еще NextConf подъехал.
Пока что очень мало интересных докладов, которые не пересказывают доку или блог.
Что меня смущает в Solid, так это излишняя непрозрачность.
Пример с classList лишь один из многих. Чтобы прочитать значение сигнала, надо вызывать как функцию. К тому же нужно юзать control-flow операторы.
Очень невнятно выглядят ошибки иной раз, но…
Stunning Absolutely Ideal Framework на эффекторе должен поддерживать react, svelte и solid из коробки, #ящитаю
Пример с classList лишь один из многих. Чтобы прочитать значение сигнала, надо вызывать как функцию. К тому же нужно юзать control-flow операторы.
Очень невнятно выглядят ошибки иной раз, но…
Stunning Absolutely Ideal Framework на эффекторе должен поддерживать react, svelte и solid из коробки, #ящитаю
Forwarded from Монада Кедавра (Дима Zerꙫbias)
Things you should never do
Создатели Arc Browser смачно кинули всех пользователей и фактически закрыли проект чтобы запустить брузер с ИИшкой (куда же без неё). Буквально, браузер для энтузиастов не принес столько денег сколько нам хотелось бы, так что поедем на хайптрейне. Жаль что понятия «репутация» и «доверие» им видимо не знакомо
Одно из классических клише VC-новояза, в котором вторая часть предложения противоречит первой, проект по сути остановлен в развитии, все планы отправились в on hold (в утиль)
Вспоминается классическая статья Things You Should Never Do, Part I, в которой рассказывается как флагман браузеров Netscape Navigator сел на мель во время переписывания с нуля и какие выводы из этого можно сделать. Захватывающее чтиво. Прошло почти 25 лет, по меркам IT — целая вечность, а тезисы становятся всё более актуальными. Главный вывод: please dont. В эту ловушку люди попадались множество раз, и судя по текущей новости, будут попадаться вновь и вновь.
Я понимаю, что расчёт Browser Company на успешный pivot (резкое изменение курса компании в попытке нащупать market fit) в сторону ИИ, но с такими конкурентами (свои фичи завозят google, apple и microsoft) и с таким отношением к своим пользователям перспективы у них не вдохновляющие
В целом, могу сформулировать «Things you should never do part 2»: не пользоваться продуктом VC-стартапа до тех пор пока он не покажет своё истинное лицо (vercel) или не выживет после кучи pivot-ов. Либо не расчитывать на длительное пользование, легко пришло — легко ушло
А если вы решили поучаствовать в переписывании проекта с нуля, то стоит убедиться, что ключевые участники действа знакомы с этим классическим текстом и понимают на что идут
Создатели Arc Browser смачно кинули всех пользователей и фактически закрыли проект чтобы запустить брузер с ИИшкой (куда же без неё). Буквально, браузер для энтузиастов не принес столько денег сколько нам хотелось бы, так что поедем на хайптрейне. Жаль что понятия «репутация» и «доверие» им видимо не знакомо
Arc won't be abandoned, but the new focus will primarily be on stability updates and bug fixes
Одно из классических клише VC-новояза, в котором вторая часть предложения противоречит первой, проект по сути остановлен в развитии, все планы отправились в on hold (в утиль)
Вспоминается классическая статья Things You Should Never Do, Part I, в которой рассказывается как флагман браузеров Netscape Navigator сел на мель во время переписывания с нуля и какие выводы из этого можно сделать. Захватывающее чтиво. Прошло почти 25 лет, по меркам IT — целая вечность, а тезисы становятся всё более актуальными. Главный вывод: please dont. В эту ловушку люди попадались множество раз, и судя по текущей новости, будут попадаться вновь и вновь.
Я понимаю, что расчёт Browser Company на успешный pivot (резкое изменение курса компании в попытке нащупать market fit) в сторону ИИ, но с такими конкурентами (свои фичи завозят google, apple и microsoft) и с таким отношением к своим пользователям перспективы у них не вдохновляющие
В целом, могу сформулировать «Things you should never do part 2»: не пользоваться продуктом VC-стартапа до тех пор пока он не покажет своё истинное лицо (vercel) или не выживет после кучи pivot-ов. Либо не расчитывать на длительное пользование, легко пришло — легко ушло
А если вы решили поучаствовать в переписывании проекта с нуля, то стоит убедиться, что ключевые участники действа знакомы с этим классическим текстом и понимают на что идут
How-To Geek
Arc Browser Creator Moving On To New Project
The Arc browser is "done" apparently.
😢11👍5😁2
Продолжаю эстафету
Вбиваем промпт и скидываем в комменты
Странно, что меня нет в кадре, видимо отдыхаю где-то на улице… давно пора.
https://t.me/bearlogin_dev/320
Вбиваем промпт и скидываем в комменты
Based on what you know about me from our previous conversations, please draw a picture how in your opinion my life could look like
Странно, что меня нет в кадре, видимо отдыхаю где-то на улице… давно пора.
https://t.me/bearlogin_dev/320
👍13👎7🔥3😁1😡1
Сначала люди в интернетах пишут, что Ruby умер и вообще только легаси на нем.
А потом вижу проект этого года на Ruby on Rails и всё еще радуюсь, как приятно на нем было писать.
https://github.com/maybe-finance/maybe
А потом вижу проект этого года на Ruby on Rails и всё еще радуюсь, как приятно на нем было писать.
https://github.com/maybe-finance/maybe
👍10❤2 2👎1
React-hooks не отделяют логику от UI
Не раз в чатах видел, как люди предлагают решать проблему прибитой логики к компонентам — просто вынесите логику в кастомные хуки. Но это вообще никак не помогает, хотя хуки позволяют вынести код из компонентов в отдельные функции, сама логика всё равно остаётся зависимой от React.
Почему? Возьмём useEffect. Этот хук будет вызываться дважды в strict mode, потому что он связан с жизненным циклом компонента. И это не баг, а фича React, спорная конечно, но в результате, любая бизнес-логика внутри такого хука становится заложником жизненного цикла React.
И это только самый наглядный пример! Наверняка вы сами можете привести еще десяток менее очевидных примеров. Чего стоит только каскад ререндеров из-за необходимости указывать dependencies между разными useEffect. Приходится городить решения поверх особенностей реакт и выглядит это совсем не просто.
Из-за этой привязки к React, тестирование также превращается в проблему. Приходится оборачивать тесты в условный
Можно решить "по-старинке": вынести логику в обычные функции или классы, а хуки использовать только как мост между React и бизнес-логикой. Но тогда мы сталкиваемся с новой проблемой – нужно самостоятельно продумывать реактивность и управление состоянием.
Хоть может показаться, что реактивность не обязательна, современные приложения демонстрируют как раз реактивную природу. Чем меньше в коде ручного/императивного управления состоянием, тем проще код. Но это вовсе не означает, что нужно перестать писать императивный код и погрузиться в пучину декларативности или функциональности.
Используйте инструменты по назначению!
Не раз в чатах видел, как люди предлагают решать проблему прибитой логики к компонентам — просто вынесите логику в кастомные хуки. Но это вообще никак не помогает, хотя хуки позволяют вынести код из компонентов в отдельные функции, сама логика всё равно остаётся зависимой от React.
Почему? Возьмём useEffect. Этот хук будет вызываться дважды в strict mode, потому что он связан с жизненным циклом компонента. И это не баг, а фича React, спорная конечно, но в результате, любая бизнес-логика внутри такого хука становится заложником жизненного цикла React.
И это только самый наглядный пример! Наверняка вы сами можете привести еще десяток менее очевидных примеров. Чего стоит только каскад ререндеров из-за необходимости указывать dependencies между разными useEffect. Приходится городить решения поверх особенностей реакт и выглядит это совсем не просто.
Из-за этой привязки к React, тестирование также превращается в проблему. Приходится оборачивать тесты в условный
act(), или же мокать хуки и поведение React – и всё это только потому, что бизнес-логика не отделена от компонентов.Можно решить "по-старинке": вынести логику в обычные функции или классы, а хуки использовать только как мост между React и бизнес-логикой. Но тогда мы сталкиваемся с новой проблемой – нужно самостоятельно продумывать реактивность и управление состоянием.
Хоть может показаться, что реактивность не обязательна, современные приложения демонстрируют как раз реактивную природу. Чем меньше в коде ручного/императивного управления состоянием, тем проще код. Но это вовсе не означает, что нужно перестать писать императивный код и погрузиться в пучину декларативности или функциональности.
Используйте инструменты по назначению!
👍42💯10🔥7😐5
Astro 5 + Vite 6
Из самого интересного:
Content Layer
Позволяет динамически грузить данные для страничек из любых источников. Например из notion или вообще через fetch() откуда угодно. Что круто, так это кеширование.
Когда я трогал beta версию, можно было руками перезапустить выгрузку данных, а потом быстро рендерить уже загруженную инфу.
Server Islands
Пререндерим всё статическое в .html, а динамику из бд можем грузить и рендерить на сервере. Причем только для небольших частей интерфейса.
Нормально реализованные идеи Next.js, без привязки к React!
astro:env
Ну и самая ожидаемая мной фича — безопасное извлечение переменных и секретов.
Описываем все переменные в виде zod-схемы, а затем импортируем из
Секреты доступны только на сервере из
Очень рекомендую почитать релиз ноутс и официальный гайд по Env vars.
SVG Components
В экспериментальном режиме Astro поддерживает импорт SVG как компонентов Astro.
Но не спешите грустить, есть разные варианты взаимодействия. Можно как инлайнить, так и бандлить SVG в спрайты.
Из самого интересного:
Content Layer
Позволяет динамически грузить данные для страничек из любых источников. Например из notion или вообще через fetch() откуда угодно. Что круто, так это кеширование.
Когда я трогал beta версию, можно было руками перезапустить выгрузку данных, а потом быстро рендерить уже загруженную инфу.
Server Islands
Пререндерим всё статическое в .html, а динамику из бд можем грузить и рендерить на сервере. Причем только для небольших частей интерфейса.
Нормально реализованные идеи Next.js, без привязки к React!
astro:env
Ну и самая ожидаемая мной фича — безопасное извлечение переменных и секретов.
Описываем все переменные в виде zod-схемы, а затем импортируем из
astro:env/server или astro:env/client.Секреты доступны только на сервере из
astro:env/server, а вот переменные окружения доступны в любом окружении при импорте из astro:env/client.Очень рекомендую почитать релиз ноутс и официальный гайд по Env vars.
SVG Components
В экспериментальном режиме Astro поддерживает импорт SVG как компонентов Astro.
Но не спешите грустить, есть разные варианты взаимодействия. Можно как инлайнить, так и бандлить SVG в спрайты.
Astro
Astro 5.0 | Astro
Astro 5.0 brings exciting new features like the Astro Content Layer for seamless content loading from any source, and Server Islands for effortlessly combining static and dynamic personalized content.
👍26❤3