Никогда не любил алиасы (paths) в Typenoscript и потому только сегодня узнал, что они не поддерживаются в
Есть разные решения:
https://www.npmjs.com/package/ts-patch
https://www.npmjs.com/package/typenoscript-transform-paths
https://www.npmjs.com/package/tsconfig-paths
Я конечно и дальше буду выступать против paths в качестве «красивых» путей, потому что не надо заметать сложность под ковёр.
Ну а истинное предназначение paths описано вот так
Для всяких хитрых кейсов, а не для того, чтобы строчки были короче.
tsc https://www.typenoscriptlang.org/docs/handbook/modules/reference.html#paths-does-not-affect-emit Т.е. emit оставляет пути как есть, не подменяя их на полные.Есть разные решения:
https://www.npmjs.com/package/ts-patch
https://www.npmjs.com/package/typenoscript-transform-paths
https://www.npmjs.com/package/tsconfig-paths
Я конечно и дальше буду выступать против paths в качестве «красивых» путей, потому что не надо заметать сложность под ковёр.
Ну а истинное предназначение paths описано вот так
While the feature was originally designed to be used with the AMD module loader (a means of running modules in the browser before ESM existed or bundlers were widely used), it still has uses today when a runtime or bundler supports module resolution features that TypeScript does not model.
Для всяких хитрых кейсов, а не для того, чтобы строчки были короче.
👍22🤔13👏10❤8👎3
Так, важное. Мы заканчиваем подготовку CTF 2025 в рамках Я💛Фронтенд!
Старт 8 февраля в MTk6MDMgVVRDKzM=
Эксклюзивно сливаю ссылку до начала. Осторожно, жёсткий инсайд!
Ссылки на предыдущие CTF тут: https://events.yandex.ru/events/ya-love-frontend-2025
Старт 8 февраля в MTk6MDMgVVRDKzM=
Эксклюзивно сливаю ссылку до начала. Осторожно, жёсткий инсайд!
Ссылки на предыдущие CTF тут: https://events.yandex.ru/events/ya-love-frontend-2025
😁32🔥17🤡9👍8❤6🫡3
Уф... Мы готовы. Ждём завтра всех в онлайне, а кому хватило билета — и в оффлайне.
https://ilovefrontend.ru
https://ilovefrontend.ru
🔥57👍19❤10🤡6❤🔥2
Все так хвалят Cursor, но почему-то никто не пишет про проблемы с Remote SSH.
Есть разный набор танцев с бубном, которые вроде как позволяют что-то завести (например, попробовать поставить версию постарше, до блокировок от Microsoft), но как-то оно попахивает.
Останусь пока на VSC + Roo + Codeium
Есть разный набор танцев с бубном, которые вроде как позволяют что-то завести (например, попробовать поставить версию постарше, до блокировок от Microsoft), но как-то оно попахивает.
Останусь пока на VSC + Roo + Codeium
👍29💩4🔥2
Переехали (с webpack) на rspack в рабочих проектах. При всей моей изначальной скептичности — оно работает и даёт стабильное x2 к скорости и холодной и горячей сборки. В абсолютных цифрах для DataLens это 1m 40s -> 0m 50s холодной и 20s -> 8s горячей дев-сборки. И ~5m 16s -> 2m 18s продовой.
Завелось вообще всё, включая Статоскоп.
Так как у нас унифицирована сборка через общую абстракцию https://github.com/gravity-ui/app-builder, то для проектов переезд — фактически переключение галочки в конфиге. Если интересно повторить, то смотреть начиная с этого PR https://github.com/gravity-ui/app-builder/pull/177.
Я ещё понаблюдаю конечно, но пока очень радует.
Завелось вообще всё, включая Статоскоп.
Так как у нас унифицирована сборка через общую абстракцию https://github.com/gravity-ui/app-builder, то для проектов переезд — фактически переключение галочки в конфиге. Если интересно повторить, то смотреть начиная с этого PR https://github.com/gravity-ui/app-builder/pull/177.
Я ещё понаблюдаю конечно, но пока очень радует.
👍67🔥29❤13👏2
Раз уж вспомнили о железках. Нужен совет чата
Притащил тут на днях домой 4k+ монитор и пытаюсь его подключить к немолодому системнику с PCI Express 2.0. Оказалось, что ни одна карточка на PCIe 2.0 4k не тянет (в продаже остались только GeForce 710/730). Ну, т.е. тянет, но только на 30Гц =) Но, к счастью, PCIe обратно совместим, потому взял у товарища пыльный, но легендарный GeForce 1050Ti, воткнул, и вроде всё отлично работает. Но шумит!
Потому вопрос. Какую видеокарту воткнуть в немолодой системник, чтобы пропускной PCIe 2.0 хватило и при этом сама карта была тихая и холодная? И без внешнего питания.
Не для игор, в игры мы не играем.
Притащил тут на днях домой 4k+ монитор и пытаюсь его подключить к немолодому системнику с PCI Express 2.0. Оказалось, что ни одна карточка на PCIe 2.0 4k не тянет (в продаже остались только GeForce 710/730). Ну, т.е. тянет, но только на 30Гц =) Но, к счастью, PCIe обратно совместим, потому взял у товарища пыльный, но легендарный GeForce 1050Ti, воткнул, и вроде всё отлично работает. Но шумит!
Потому вопрос. Какую видеокарту воткнуть в немолодой системник, чтобы пропускной PCIe 2.0 хватило и при этом сама карта была тихая и холодная? И без внешнего питания.
Не для игор, в игры мы не играем.
🤯27⚡1
Завтра читаю доклад, но не там где вы подумали (нет, не на Холи). И не для программистов, а для аналитиков. Буду рассказывать биайщикам, как здорово жить с JavaScript
https://yandex.cloud/ru/events/1120
https://yandex.cloud/ru/events/1120
yandex.cloud
Новый уровень кастомизаций в чартах Yandex DataLens c помощью JavaScript
Познакомили вас с новым редактором чартов на JavaScript и рассказали, как он устроен.
🔥30👍15🤔5❤2
В статье про трейсинг в Deno самое ценное как по мне — это ссылка на OpenTelemetry LGTM stack Графаны. Как раз тут дебажил поддержку OpenTelemetry в нашем @gravity-ui/nodekit, поднял этот контейнер и кайфанул. Подключаем у себя otel-клиент, заводим данные в контейнер, открываем Tempo и наслаждаемся.
И, да, смотрите на скрин, это не просто трейсы между микросервисами, otel сам проинструментировал само node.js приложение.
И, да, смотрите на скрин, это не просто трейсы между микросервисами, otel сам проинструментировал само node.js приложение.
🔥34❤3👍1
Вернулся пока на Garmin Forerunner 255. Устал мириться с существенными минусами Suunto, при всей их красоте:
- Нет календаря (люблю Гарминовскую утреннюю сводку с календарём)
- Глючный датчик пульса, всегда нужно надевать пульсометр
- Гармин позволяет запустить секундомер не останавливая тренировку. Suunto так не может. Существенный просчёт.
- Плохо пишет треки на открытой воде. Гармину хватает взмаха руки, чтобы вцепиться в спутник. Suunto показал себя сильно хуже.
- MIP экран всё же приятнее для меня
- Пять кнопок лучше, чем три и сенсор
Тотальный отказ от MIP продолжает меня огорчать.
- Нет календаря (люблю Гарминовскую утреннюю сводку с календарём)
- Глючный датчик пульса, всегда нужно надевать пульсометр
- Гармин позволяет запустить секундомер не останавливая тренировку. Suunto так не может. Существенный просчёт.
- Плохо пишет треки на открытой воде. Гармину хватает взмаха руки, чтобы вцепиться в спутник. Suunto показал себя сильно хуже.
- MIP экран всё же приятнее для меня
- Пять кнопок лучше, чем три и сенсор
Тотальный отказ от MIP продолжает меня огорчать.
🔥32👍7🤔2😐2❤1
Все побежали и мы побежали
Ну как, выбор между Roo и Cline сделали? На Claude, небось? Мемори банки собрали? В своей продукт добавили агента? А моделька в продукте у вас какая — Qwen или DeepSeek? Как так нет локальной модели, а куда вы будете грузить пользовательские данные? А как тюнили под задачи, RAG? А MCP-сервер уже запилили? В опенсорс его закинули?
Что ж так быстро-то всё меняется, выдохнуть некогда. Архитектуркой бы позаниматься, долги позакрывать. Но некогда. Рынок требует AI. Надо пережить эту волну, но кто бы знал, какая будет следующая.
Ну как, выбор между Roo и Cline сделали? На Claude, небось? Мемори банки собрали? В своей продукт добавили агента? А моделька в продукте у вас какая — Qwen или DeepSeek? Как так нет локальной модели, а куда вы будете грузить пользовательские данные? А как тюнили под задачи, RAG? А MCP-сервер уже запилили? В опенсорс его закинули?
Что ж так быстро-то всё меняется, выдохнуть некогда. Архитектуркой бы позаниматься, долги позакрывать. Но некогда. Рынок требует AI. Надо пережить эту волну, но кто бы знал, какая будет следующая.
💯75😁34😭13👍9🗿5❤2🔥2🤯2👌1
А вот на фоне этих новостей, про опенсорсивание экстеншена Copilot. Меня тут не беспокоит потенциальная смерть Cursor (а как мы знаем давно строить бизнес поверх чужого продукта — штука опасная). Я так-то вообще курсором пока не проникся, мне хватает Roo + наш Code Assistant, который наконец-то заменил мне Codeium (TIL он теперь windsurf)
Мне стало интересно, а что там в мире JetBrains происходит? Вижу, что рядом ребята сидят и держат открытыми Idea и Cursor/Roo. Одно для кодинга, второе для вайбинга. Гуглёж подсказал, что пилится свой агент Junie, но что там под капотом? Какая моделька? И какая бы она прекрасная не была — хочется же менять и пробовать разное. И для NDA локальные модельки нужны.
В общем если кто в курсе — покидайте статьи/доклады, что там у JB, какой курс.
Мне стало интересно, а что там в мире JetBrains происходит? Вижу, что рядом ребята сидят и держат открытыми Idea и Cursor/Roo. Одно для кодинга, второе для вайбинга. Гуглёж подсказал, что пилится свой агент Junie, но что там под капотом? Какая моделька? И какая бы она прекрасная не была — хочется же менять и пробовать разное. И для NDA локальные модельки нужны.
В общем если кто в курсе — покидайте статьи/доклады, что там у JB, какой курс.
👍21❤1💊1
Сидел с утра собирал memory bank в Roo. Потрясающая штука, даже если им не пользоваться (а почему?), но просто почитать — вот он твой проект как на ладони. Но, конечно, нужно покопаться в нём вместе с нейронкой, направить её в правильную сторону.
Это, кстати, причина, почему roo, а не cline. В cline всё как-то победнее (ну это просто связано с меньшим количеством режимов работы агента).
Если кратко, то memory bank это просто папочка со структурированным описанием вашего проекта, на которую вы натравливаете агента через промт (не вручную конечно же, агенты умеют подмешивать промты из конфига).
UPD: Ну и это конечно уже вчерашний день, потому что теперь есть Context Portal MCP 😃 С RAG конечно же.
Это, кстати, причина, почему roo, а не cline. В cline всё как-то победнее (ну это просто связано с меньшим количеством режимов работы агента).
Если кратко, то memory bank это просто папочка со структурированным описанием вашего проекта, на которую вы натравливаете агента через промт (не вручную конечно же, агенты умеют подмешивать промты из конфига).
UPD: Ну и это конечно уже вчерашний день, потому что теперь есть Context Portal MCP 😃 С RAG конечно же.
🔥19👍12💯2❤1💊1
RAG на коленке
Решил тут на днях собрать пруф оф концепт чат бота по документации внутреннего проекта. Раз проект внутренний, то никакая LLM про его документацию не знает и, тем более, сходить по сети за ней не может. А значит нужен RAG. Вот тут можете можете почитать, что это такое. TLDR — смотрим, что пользователь спросил, находим нужные разделы в документации и подмешиваем в промт. Дальше моделька сама справится.
Обычно для поиска используют векторы. Векторный поиск позволяет бодро искать фрагменты совпадающие с запросом по смыслу, а не просто по совпадению слов. Для векторизации нужны нейронки, которые умеют делать эмбеддинг — преобразовывать текст в вектор. Берём наши доки, бьём на чанки, вычисляем векторы, сохраняем. Приходит запрос пользователя — делаем из него вектор и вычисляем косинус угла между запросом и имеющимися данными в бд. Чем ближе косинус к единице, тем ближе запрос пользователя к нужному фрагменту документации.
Результат офигенный конечно. Но вот зараза, у меня нет под рукой нейронок для эмбеддинга. Во внешний мир ходить не хочу, проект внутренний. Что же делать, как показать пруф оф концепт? Собираем с Клодом веб-скрейпер на плейрайте, дербаним доку в JSON, кормим этот JSON приложению на ноде, обслуживающему чат. Теперь на каждый запрос пользователя выбираем слова подлинней, лезем в JSON и находим совпадения (ахах, да, можно было бы и морфологию прикрутить, но некогда, работа не ждёт). Собираем промпт по совпадениям и закидываем в LLM вместе с запросом пользователя. И оно работает. Да, неоптимально, чертовски неоптимально. Но для PoC за глаза хватило.
Решил тут на днях собрать пруф оф концепт чат бота по документации внутреннего проекта. Раз проект внутренний, то никакая LLM про его документацию не знает и, тем более, сходить по сети за ней не может. А значит нужен RAG. Вот тут можете можете почитать, что это такое. TLDR — смотрим, что пользователь спросил, находим нужные разделы в документации и подмешиваем в промт. Дальше моделька сама справится.
Обычно для поиска используют векторы. Векторный поиск позволяет бодро искать фрагменты совпадающие с запросом по смыслу, а не просто по совпадению слов. Для векторизации нужны нейронки, которые умеют делать эмбеддинг — преобразовывать текст в вектор. Берём наши доки, бьём на чанки, вычисляем векторы, сохраняем. Приходит запрос пользователя — делаем из него вектор и вычисляем косинус угла между запросом и имеющимися данными в бд. Чем ближе косинус к единице, тем ближе запрос пользователя к нужному фрагменту документации.
Результат офигенный конечно. Но вот зараза, у меня нет под рукой нейронок для эмбеддинга. Во внешний мир ходить не хочу, проект внутренний. Что же делать, как показать пруф оф концепт? Собираем с Клодом веб-скрейпер на плейрайте, дербаним доку в JSON, кормим этот JSON приложению на ноде, обслуживающему чат. Теперь на каждый запрос пользователя выбираем слова подлинней, лезем в JSON и находим совпадения (ахах, да, можно было бы и морфологию прикрутить, но некогда, работа не ждёт). Собираем промпт по совпадениям и закидываем в LLM вместе с запросом пользователя. И оно работает. Да, неоптимально, чертовски неоптимально. Но для PoC за глаза хватило.
👍31❤9🔥7✍6😁6🥴4👀3😱2
Forwarded from Sasha is doing well (Aleksandr Shoronov)
Apple released container CLI
WWDC is ongoing and one of the news, which unfairly is not spotlighted enough is the containerization framework, which the Apple team published and even open-sourced (!). It's written on Swift and provides the OCI-complaint API. Unfortunately, it's still a virtual machine, but the Apple team refers to it as a micro virtual machine, which can be launched sub secondly with the help of optimized Linux kernel configuration. You can even try it on MacOS 15, but with the crucial limitation: all containers will be run on their own networks. But starting from macOS 26 you can run containers connected.
Good then nothing, but not as good as run containers natively on Linux.
WWDC is ongoing and one of the news, which unfairly is not spotlighted enough is the containerization framework, which the Apple team published and even open-sourced (!). It's written on Swift and provides the OCI-complaint API. Unfortunately, it's still a virtual machine, but the Apple team refers to it as a micro virtual machine, which can be launched sub secondly with the help of optimized Linux kernel configuration. You can even try it on MacOS 15, but with the crucial limitation: all containers will be run on their own networks. But starting from macOS 26 you can run containers connected.
Good then nothing, but not as good as run containers natively on Linux.
GitHub
GitHub - apple/container: A tool for creating and running Linux containers using lightweight virtual machines on a Mac. It is written…
A tool for creating and running Linux containers using lightweight virtual machines on a Mac. It is written in Swift, and optimized for Apple silicon. - GitHub - apple/container: A tool for creati...
❤14👍8🤔3👀2🤮1💩1
Вообще конечно все эти AI-агенты просто возвращают мне радость программирования. Машина наконец-то делает то, что должна — скучную рутину. А мы парим над этим и раздаём указания. Проверяем теорию за теорией, собираем пруф оф концепты за нефиг делать и тут же без жалости (икеа-эффекта нет) выкидываем. Делаем за день недельную работу.
Я прямо очень доволен. Старички вроде меня снова в строю и могут поделать архитектурку.
Я прямо очень доволен. Старички вроде меня снова в строю и могут поделать архитектурку.
🤝70👍40💊14🔥10🤔7❤6👎3
Vite is generally known for its unbundled native ESM dev server, which is responsible for the fast startup time and almost instant feedback. Nevertheless, we’ve seen limitations of this approach for projects at unconventional scale, especially in Enterprise setups. To address these, we are working on a full-bundle mode for the dev server.
Наконец-то! Говорил же об этом с первого дня :)
Ну понятно, ребята ждали Rolldown
👍21❤4🔥4💯2