Loskir's
1.79K subscribers
646 photos
89 videos
3 files
664 links
Пишу про айти, технологии и не только
Лайв канал: @LoskirsLive
Я: @Loskir
Download Telegram
Ловите гайд, как использовать tsgo в Cursor

1. Заходим на страничку расширения, переходим на вкладку Version History. Смотрим там последнюю версию (они выпускают новую каждый день)
2. Переходим по ссылке https://marketplace.visualstudio.com/_apis/public/gallery/publishers/TypeScriptTeam/vsextensions/native-preview/[версия]/vspackage?targetPlatform=darwin-arm64 (поменяйте платформу при необходимости, по формату [linux/win32/darwin]-[arm64/x64], тут подробнее)
3. Скачанный .vsix файл переименовываем в .zip, распаковываем
4. Внутри находим файл extension/package.json, меняем в нем поддерживаемую версию в engines.vscode
5. Папку extension сжимаем в .zip, переименовываем в .vsix (не всё содержимое оригинального пакета, а только вложенную папку)
6. В курсоре открываем Command Palette, выбираем пункт "Extensions: Install from VSIX", выбираем extension.vsix
7. Включаем tsgo через Command Palette, пункт "TypeScript (Native Preview): Enable (Experimental)"
👍10
This media is not supported in your browser
VIEW IN TELEGRAM
Hover-эффекты без дёрганий

Запилил для своей кастомной темы Firefox разворачиваемый по ховеру сайдбар с вкладками. Хочу рассказать про небольшую UX-хитрость — дополнительные хитбоксы.

В общих чертах сайдбар работает так: курсор находится в определенной области, сайдбар разворачивается, курсор ушёл — сворачивается. Но прикол в том, что эту область необязательно ограничивать видимыми элементами — можно добавить невидимые зоны (в реалиях кастомизации firefox — через псевдоэлементы ::before и ::after, в обычном вебе — можно и отдельными элементами).

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

Простой приём, но взаимодействие становится гораздо приятнее!
👍17🔥32🐳1
Loskir's
Ловите гайд, как использовать tsgo в Cursor 1. Заходим на страничку расширения, переходим на вкладку Version History. Смотрим там последнюю версию (они выпускают новую каждый день) 2. Переходим по ссылке https://marketplace.visualstudio.com/_apis/public/…
Понял что мне слишком впадлу обновлять расширение руками раз в несколько дней, поэтому навайбкодил скриптик, который скачивает последнюю версию и проделывает нужные шаги автоматически, остается только импортировать полученный файл в курсор

https://gist.github.com/Loskir/7541f26c8df183bf7c07acc86c3e5397
👍7
🎨 Автоматизируем вёрстку по макету с помощью нейронок

Вёрстка по дизайну из Figma — довольно механическая работа, которую хочется отдать машине. Самый очевидный подход — сделать скриншот и скормить его нейронке, но результаты обычно так себе: нейронка творчески интерпретирует размеры и выдаёт нечто лишь издали смахивающее на макет.

Недавно нашёл гораздо более стабильный подход, который даёт практически идеальный результат.

Шаг 1: Экспортируем код из Figma. Вместо скриншотов использую плагин Figma to Code. Бесплатный, опенсорсный, без регистрации и смс, поддерживает Dev Mode. Генерит код алгоритмически, сохраняет много мета-инфы (слои, переменные). Поддерживает Web, Flutter и SwiftUI, но сейчас сфокусируемся на JSX+Tailwind.

Шаг 2: Скармливаем его нейронке (Cursor / Copilot / Claude Code / etc) с дополнительными инструкциями.
Тут уже можно накидывать по вкусу и в зависимости от традиций в проекте. Я добавляю примерно такие:
- Выноси SVG в отдельные файлы, импортируй либо через <img>, либо как React-компонент
- Используй кастомные значения из tailwind-конфига
- Убирай лишние обёртки, не добавляй элементов там, где они не нужны
- Убирай избыточные классы (например, цвет текста можно повесить один раз на весь контейнер, а не на каждый абзац внутри)
- Переиспользуй существующие компоненты из дизайн-системы (кнопки, инпуты, иконки)

Шаг 3 (опционально): Адаптивная вёрстка. Для responsive дизайна можно попробовать скормить нейронке сразу несколько вариантов для разных размеров экрана и попросить объединить их в один компонент с правильными breakpoints. Срабатывает не так чётко, но тоже может быть полезно.

В результате получается почти идеальное соответствие макету с первого раза — остаётся только добавить интерактивности. Главный кайф в том, что нейронка работает не с картинкой, а с уже структурированным кодом. Не нужно угадывать размеры и цвета — всё уже есть в исходнике.
🔥172👍1
Я купил себе Nintendo Switch (OLED)! И не простой свич, а чипованный!

Пока что в полном восторге. Умельцы понаписали столько занятного хоумбрюшного софта, что разобраться в этом сложновато. Похоже на моддинг-культуру в Андроиде, только всё по-другому блин!

Но самое удивительное — это то, что кастомный софт на свиче (где для взлома нужно буквально сверлить плату и подпаиваться к нужным контактам, а Нинтенде это настолько не нравится, что они норовят забанить тебе консоль) оказался банально удобнее, чем на стимдеке с его steamos на базе арча, открытым загрузчиком и всеми другими плюшками.

Да, стоит упомянуть, что железо в свиче на 4 года старше, чем в стимдеке, и оперативки всего 4гб вместо 16гб, но пока что для меня это не вызвало никаких проблем. Может быть, через пару месяцев я буду дико гореть от лагов и скорости загрузки, посмотрим.

Брал на авито новый за 25т₽ с копейками, всем советую. В Нидерландах такое достать крайне сложно, так что удачно я съездил в Россию :D
🔥24👎5👍3
🚲 Вот так выглядит лестница, ведущая на подземную велопарковку в моём амстердамском офисе.

Слева — щётки, которые помогают спускать велосипед (они создают дополнительное трение, чтобы велосипед не вырывался из рук). Справа — мини-конвейер, который активируется, когда колесо нажимает на пластину в нижней части. Нужно приноровиться зажимать и отпускать тормоза в правильной последовательности, зато потом велосипед поднимается автоматически
33👍12🔥7
🧠 LLM — настоящая находка для аутистов!

У нас недалеко от офиса есть итальянская сэндвичная вот с таким меню (на 1 картинке). И мне резко захотелось как-то его структурировать, потому что в таком списке глаза как-то сразу путаются (попробуйте найти все сэндвичи с sun-dried tomatoes)

Раньше я бы залип на пару часов или вообще бы отказался от идеи ибо лень оцифровывать данные, а теперь буквально за 15 минут и 5 промптов в клод получил всё что душе угодно и даже больше!
👍23😁82🔥2
Есть у меня один проект, который я не трогал с 2021 года. Написан на vue2. На сервере установлена нода, внимание, v13 (отдельно забавляет, что нечетная версия, то есть она была актуальной буквально полгода и даже LTS не становилась).

И вот понадобилось мне поменять там буквально две строчки. Меняю, коммичу, запускаю сборку — валится с полотном каких-то ошибок. Смотрю на ошибки — вебпаку (разумеется, древнейшему) не нравится новомодный синтаксис (nullish coalescense ??). Смотрю на node.green, он появился в node v14. Окей, nvm install v14. Всё равно падает. Думаю «ну ладно, видимо за это отвечает какой-то из лоадеров, а вот его мне уже точно не вперлось обновлять». Решаю посмотреть поглубже, а из-за чего все-таки возникает ошибка. Смотрю и вижу, что версии зависимостей более новые, чем указано в package.json. Ага, какой-то умник не удосужился закоммитить локфайл в репу, и всё поехало.

Решаю запинить версии всех зависимостей — меняю "^1.0.0" на "1.0.0". Не помогает — падает не из-за коренных зависимостей, а из-за под-зависимостей. Решаю установить эти зависимости явно с припиненной версией — не помогает, устанавливается две версии пакета: старая и новая. Смотрю доку на package.json, вижу там фичу под названием overrides, решаю заюзать. По какой-то неведомой причине всё равно ставится новая. Я в замешательстве, подумываю убить проект с концами и залить бензином.

Вдруг краем глазом замечаю файлик yarn.lock. Вздыхаю, откатываю все изменения, включаю ноду v13, ставлю зависимости yarn-ом v1.22.22, и проект билдится без единой ошибки. Эта эпопея стоила мне часов пять.
😁32🔥6👍5😢1
🎼 На выходных мне опять не сиделось на месте

Я выкачал все свои скробблы на last.fm с помощью вот этой тулзы и загрузил их в питон. Получилось почти 50к скробблов с 2021 по 2025 год (да, по меркам ластфм-а я еще ньюфаг)

Запихнул все скробблы в pandas dataframe, начал играться с графиками. Научился строить интерактивные графики/дашборды с помощью Plotly и Dash. И на самом деле я немного офигел, что в питоне можно делать интерактивные графики с селекторами и слайдерами!

Самый прикольный график который у меня получился — это график треков, которые я слушал на репите. Я сгруппировал скробблы по трекам, взял скользящее среднее за неделю и отфильтровал только те, которые я слушал минимум пять раз в день. Как видите, в душу мне треки западают часто. И прикольно, что можно навести мышкой на трек и мысленно провалиться в тот период, когда он играл у меня в наушниках 24/7. Но ни один трек не западал мне так же сильно, как tanger — strangers once again. В конце декабря я слушал его в среднем 30 раз в день (!)
9🎅42
Супер быстрая покупка битка
pkp.bt
Сука вы не представляете какой ебанутый процесс покупки домена в БУТАНЕ БЛЯДЬ
😁2
😁16🔥3😢1🐳1
🎄 Итоги 2025

Не буду тратить силы на подбор эпитетов. Нормальный год, не идеальный, но и не катастрофический.

Главное событие года — переезд в Амстердам. До этого я почти два года жил в уютной нидерландской глуши (городок на 100к человек), и Амстердам оказался очень нужным глотком свежего воздуха. После переезда мой уровень жизни вырос, наверное, по всем параметрам. Просторная квартира вместо тесной комнатки, более удобный комьют на работу, обилие прикольных мест (относительное, конечно), более активная социальная жизнь. Это как такое мета-достижение, которое разблокировало мне рост в других сферах.

Всё ещё работаю в небольшом стартапчике под названием Teero. За год команда выросла вдвое, мы перестали помещаться в маленьком уголке в коворкинге и перебрались в новый офис в центре Амстердама. Правда, такими темпами как будто скоро придется менять офис еще раз. Прикольно работать в небольшой команде с высоким темпом разработки и большой ответственностью. Приятно видеть, как твои фичи выезжают на прод и приносят пользу юзерам. Почувствовал, как моя продуктивность подросла за год, не в последнюю очередь благодаря эйай.

Особое место в моём сердечке занимают комьюнити-ивенты. В этом году я побывал в 🇷🇸 Сербии на Вастрик Кэмпе, в 🇹🇷 Турции на Вастрик Флоте, съездил на 🇵🇹 Мадейру с Alumni on Tour. На таких ивентах получается ощущать себя частью целого, а не быть сам по себе. И для меня это действительно ценно. Кроме этого, пару раз побывал в 🇧🇪 Бельгии и 🇩🇪 Германии, съездил к друзьям в 🇩🇰 Копенгаген.

Я вырвался из студенческого пузыря в большой город с кучей интересных людей. Благодаря комьюнити выпускников Вышки и Вастрик Клубу я познакомился с десятками новых людей, с некоторыми из которых я теперь общаюсь регулярно.

Мои закладки в Google Maps наполнились десятками клёвых мест: кофейни, кафешки, магазинчики, просто места для досуга. Со временем многие из них стали по-настоящему любимыми. Очень круто видеть, как выстраивается подобная «комфортная» рутина, особенно после долгих страданий типа «такое себе конечно, но лучше все равно нет». Я начинаю чувствовать себя «своим» в Амстердаме.

Начал ходить в спортзал и играть в настольный теннис. Регулярность наладить не получилось, но всё равно здорово, что получилось начать то, что откладывал уже несколько лет. Продолжил неспешно учить голландский, добрался примерно до A2. А ещё наконец пошёл учиться водить машину!

Загадывать на 2026 не буду, всё равно случится что-то непредсказуемое. В общем, с наступающим!
👍1810🎉2🔥1