melikhov.dev – Telegram
melikhov.dev
4.63K subscribers
110 photos
2 videos
2 files
203 links
Фронтенд, фронт-бек и около. Всё, что в голову пришло. Иногда котики.
Download Telegram
Пост любви к зиме
10030👍6🤮6👎2😱1
А не написать ли пост про мою коллекцию бестолковых часов?
👍127👎17😁167💯5🔥2🤯1🤡1
Никогда не любил алиасы (paths) в Typenoscript и потому только сегодня узнал, что они не поддерживаются в 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👏108👎3
Так, важное. Мы заканчиваем подготовку CTF 2025 в рамках Я💛Фронтенд!
Старт 8 февраля в MTk6MDMgVVRDKzM=

Эксклюзивно сливаю ссылку до начала. Осторожно, жёсткий инсайд!

Ссылки на предыдущие CTF тут: https://events.yandex.ru/events/ya-love-frontend-2025
😁32🔥17🤡9👍86🫡3
Уф... Мы готовы. Ждём завтра всех в онлайне, а кому хватило билета — и в оффлайне.

https://ilovefrontend.ru
🔥57👍1910🤡6❤‍🔥2
Спасибо, гпт! А я годами сохранял во временный файл
😁33👍17🔥13🤪4🗿2👏1
Все так хвалят Cursor, но почему-то никто не пишет про проблемы с Remote SSH.

Есть разный набор танцев с бубном, которые вроде как позволяют что-то завести (например, попробовать поставить версию постарше, до блокировок от 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.

Я ещё понаблюдаю конечно, но пока очень радует.
👍67🔥2913👏2
С тех пор я и не люблю 1 апреля
😁46❤‍🔥7🤔7👍3🔥2🤷‍♂1🍌1
Раз уж вспомнили о железках. Нужен совет чата

Притащил тут на днях домой 4k+ монитор и пытаюсь его подключить к немолодому системнику с PCI Express 2.0. Оказалось, что ни одна карточка на PCIe 2.0 4k не тянет (в продаже остались только GeForce 710/730). Ну, т.е. тянет, но только на 30Гц =) Но, к счастью, PCIe обратно совместим, потому взял у товарища пыльный, но легендарный GeForce 1050Ti, воткнул, и вроде всё отлично работает. Но шумит!

Потому вопрос. Какую видеокарту воткнуть в немолодой системник, чтобы пропускной PCIe 2.0 хватило и при этом сама карта была тихая и холодная? И без внешнего питания.

Не для игор, в игры мы не играем.
🤯271
Завтра читаю доклад, но не там где вы подумали (нет, не на Холи). И не для программистов, а для аналитиков. Буду рассказывать биайщикам, как здорово жить с JavaScript

https://yandex.cloud/ru/events/1120
🔥30👍15🤔52
В статье про трейсинг в Deno самое ценное как по мне — это ссылка на OpenTelemetry LGTM stack Графаны. Как раз тут дебажил поддержку OpenTelemetry в нашем @gravity-ui/nodekit, поднял этот контейнер и кайфанул. Подключаем у себя otel-клиент, заводим данные в контейнер, открываем Tempo и наслаждаемся.

И, да, смотрите на скрин, это не просто трейсы между микросервисами, otel сам проинструментировал само node.js приложение.
🔥343👍1
Вернулся пока на Garmin Forerunner 255. Устал мириться с существенными минусами Suunto, при всей их красоте:

- Нет календаря (люблю Гарминовскую утреннюю сводку с календарём)
- Глючный датчик пульса, всегда нужно надевать пульсометр
- Гармин позволяет запустить секундомер не останавливая тренировку. Suunto так не может. Существенный просчёт.
- Плохо пишет треки на открытой воде. Гармину хватает взмаха руки, чтобы вцепиться в спутник. Suunto показал себя сильно хуже.
- MIP экран всё же приятнее для меня
- Пять кнопок лучше, чем три и сенсор


Тотальный отказ от MIP продолжает меня огорчать.
🔥32👍7🤔2😐21
Все побежали и мы побежали

Ну как, выбор между Roo и Cline сделали? На Claude, небось? Мемори банки собрали? В своей продукт добавили агента? А моделька в продукте у вас какая — Qwen или DeepSeek? Как так нет локальной модели, а куда вы будете грузить пользовательские данные? А как тюнили под задачи, RAG? А MCP-сервер уже запилили? В опенсорс его закинули?

Что ж так быстро-то всё меняется, выдохнуть некогда. Архитектуркой бы позаниматься, долги позакрывать. Но некогда. Рынок требует AI. Надо пережить эту волну, но кто бы знал, какая будет следующая.
💯75😁34😭13👍9🗿52🔥2🤯2👌1
А вот на фоне этих новостей, про опенсорсивание экстеншена Copilot. Меня тут не беспокоит потенциальная смерть Cursor (а как мы знаем давно строить бизнес поверх чужого продукта — штука опасная). Я так-то вообще курсором пока не проникся, мне хватает Roo + наш Code Assistant, который наконец-то заменил мне Codeium (TIL он теперь windsurf)

Мне стало интересно, а что там в мире JetBrains происходит? Вижу, что рядом ребята сидят и держат открытыми Idea и Cursor/Roo. Одно для кодинга, второе для вайбинга. Гуглёж подсказал, что пилится свой агент Junie, но что там под капотом? Какая моделька? И какая бы она прекрасная не была — хочется же менять и пробовать разное. И для NDA локальные модельки нужны.

В общем если кто в курсе — покидайте статьи/доклады, что там у JB, какой курс.
👍211💊1
Сидел с утра собирал memory bank в Roo. Потрясающая штука, даже если им не пользоваться (а почему?), но просто почитать — вот он твой проект как на ладони. Но, конечно, нужно покопаться в нём вместе с нейронкой, направить её в правильную сторону.

Это, кстати, причина, почему roo, а не cline. В cline всё как-то победнее (ну это просто связано с меньшим количеством режимов работы агента).

Если кратко, то memory bank это просто папочка со структурированным описанием вашего проекта, на которую вы натравливаете агента через промт (не вручную конечно же, агенты умеют подмешивать промты из конфига).

UPD: Ну и это конечно уже вчерашний день, потому что теперь есть Context Portal MCP 😃 С RAG конечно же.
🔥19👍12💯21💊1
Из рабочего чата
😁85💯13🤔2💊1
RAG на коленке

Решил тут на днях собрать пруф оф концепт чат бота по документации внутреннего проекта. Раз проект внутренний, то никакая LLM про его документацию не знает и, тем более, сходить по сети за ней не может. А значит нужен RAG. Вот тут можете можете почитать, что это такое. TLDR — смотрим, что пользователь спросил, находим нужные разделы в документации и подмешиваем в промт. Дальше моделька сама справится.

Обычно для поиска используют векторы. Векторный поиск позволяет бодро искать фрагменты совпадающие с запросом по смыслу, а не просто по совпадению слов. Для векторизации нужны нейронки, которые умеют делать эмбеддинг — преобразовывать текст в вектор. Берём наши доки, бьём на чанки, вычисляем векторы, сохраняем. Приходит запрос пользователя — делаем из него вектор и вычисляем косинус угла между запросом и имеющимися данными в бд. Чем ближе косинус к единице, тем ближе запрос пользователя к нужному фрагменту документации.

Результат офигенный конечно. Но вот зараза, у меня нет под рукой нейронок для эмбеддинга. Во внешний мир ходить не хочу, проект внутренний. Что же делать, как показать пруф оф концепт? Собираем с Клодом веб-скрейпер на плейрайте, дербаним доку в JSON, кормим этот JSON приложению на ноде, обслуживающему чат. Теперь на каждый запрос пользователя выбираем слова подлинней, лезем в JSON и находим совпадения (ахах, да, можно было бы и морфологию прикрутить, но некогда, работа не ждёт). Собираем промпт по совпадениям и закидываем в LLM вместе с запросом пользователя. И оно работает. Да, неоптимально, чертовски неоптимально. Но для PoC за глаза хватило.
👍319🔥76😁6🥴4👀3😱2