Сова пишет…
3K subscribers
373 photos
37 videos
5 files
441 links
Download Telegram
Cloudflare присоединяется к OpenNext
Astro умеет в SSR с серверными экшенами

В чем смысл Next.js?
Все равно, сложные приложения на нем делать больно
2👍19✍3👎1
Открыл картинки гугл…

Google полностью ушел из качественного UX?
😁15👍3🤯2😡2🎅1
В ближайшую пятницу 4 октября будет ViteConf.
Я буду слушать и всем советую взять онлайн билет.

Уверен, что покажут что-то интересное, особенно, если вы не следите за beta версиями и обсуждениями в репозиториях Vite.
3👍16👎2
Media is too big
VIEW IN TELEGRAM
Создавать красивые штуки Vercel конечно умеет
14😁5❤3👎1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
4❤2112🔥4🤷‍♂2👎1
Всем привет!
Потихоньку смотрю доклады с 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.

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

Меня этот момент позабавил, потому что дома тоже есть такой "кек":
✅ Сережа упомянул AI
день прожит не зря))

P.S.
Вместо React-библиотек, Бен использует нативный <dialog> подключаясь к его событиям.

А еще, при использовании настоящих когнитивных моделей, в Хроме можно будет не качать 30МБ+ для работы поиска, а использовать встроенный AI.
Хоть и Gemini Nano, но уже хорошо
1😁6❤1👎1
Интересно, что
🤔8😁3😐3👎1
Снова настолько же стабильно как прошлый раз с AppRouter?

А его уже стабилизировали?
🌚18🗿3❤1
Сейчас потратил 8+ часов на sandpack в комплекте с codemirror, пробовал monaco-editor и это всё в astro, в браузерном окружении.
Бьюсь уже которую неделю, но 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 и никаких токенов, просто строка…
Решение оказалось настолько тупым в своей прямолинейности, что мне не сразу пришло в голову:


rm -rf pnpm-lock.yaml node_modules
pnpm install

Я в восторге!

P.S.
Продолжаю смотреть ViteConf, к тому же там еще NextConf подъехал.
Пока что очень мало интересных докладов, которые не пересказывают доку или блог.
14👍7😁2❤1
Слушайте, если искать замену React, так это новый Svelte

https://svelte.dev/blog/svelte-5-is-alive
🔥9🌚4
Что меня смущает в Solid, так это излишняя непрозрачность.

Пример с classList лишь один из многих. Чтобы прочитать значение сигнала, надо вызывать как функцию. К тому же нужно юзать control-flow операторы.

Очень невнятно выглядят ошибки иной раз, но…

Stunning Absolutely Ideal Framework на эффекторе должен поддерживать react, svelte и solid из коробки, #ящитаю
6💯4🤔3
Forwarded from Монада Кедавра (Дима Zerꙫbias)
Things you should never do

Создатели 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-ов. Либо не расчитывать на длительное пользование, легко пришло — легко ушло

А если вы решили поучаствовать в переписывании проекта с нуля, то стоит убедиться, что ключевые участники действа знакомы с этим классическим текстом и понимают на что идут
😢11👍5😁2
Продолжаю эстафету

Вбиваем промпт и скидываем в комменты

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
👍10❤22👎1
В ноябре 2021 я купил предзаказ.
Атмосфера крайне приятная, персонажей озвучили, прокачали удобство.

Легенда. И баги на старте прям как в первой трилогии.
👍44👎43😁12❤5🙈1
React-hooks не отделяют логику от UI

Не раз в чатах видел, как люди предлагают решать проблему прибитой логики к компонентам — просто вынесите логику в кастомные хуки. Но это вообще никак не помогает, хотя хуки позволяют вынести код из компонентов в отдельные функции, сама логика всё равно остаётся зависимой от 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-схемы, а затем импортируем из astro:env/server или astro:env/client.
Секреты доступны только на сервере из astro:env/server, а вот переменные окружения доступны в любом окружении при импорте из astro:env/client.

Очень рекомендую почитать релиз ноутс и официальный гайд по Env vars.

SVG Components
В экспериментальном режиме Astro поддерживает импорт SVG как компонентов Astro.
Но не спешите грустить, есть разные варианты взаимодействия. Можно как инлайнить, так и бандлить SVG в спрайты.
👍26❤3