1000 дней программирования

@junseniorVerifiedLive API

CategoryOtherLanguageRUFirst seenJul 06, 2026QualityVerified
Open in Telegram
Subscribers3.6K
Avg views670
ERR18.7%
Price-- RUB
Price / subscriber--
Price / view--
Metrics updated: Jul 06, 2026
Recent posts
LLM, конечно, страшные вещи делает. Купил подписку на google, включающую помимо всего прочего расширенные лимиты для antigravity, и решил набросать небольшой проектик, где на фронте будет отображаться большая 2D карта мира с разной красивой анимацией. Первым промптом gemini развернул мне backend на go и frontend на react, и набросал базовую версию. Запускаю, открываю браузер - карта вывелась, но анимации на основе данных с бэка нет. Второй промпт: запусти агента, который в визуальном режиме поймет в чем проблема и поправит ее. Antigravity открывает окно хрома, начинает ползать указателем по интерфейсу, выгребать DOM, после чего вносит пачку правок. Проверяю - все работает. Затем еще переключил модель на Claude Opus и тот делает ревью и правит баги, и только потом я иду читать код. В целом - мне особо придраться не к чему, все написано красиво, и главное - все завелось за 30 минут. Думаю в течении пары недель допилю проектик и, помимо прочего, поделюсь тут ссылкой, там должно быть интересно. А с агентами, которые визуально умеют понимать, что происходит (конечно, никто там ничего визуально не понимает - они просто ходят по DOM и тыкают в js, но все же) - отрыв башки. Знаете, кстати, что еще заметил, пока ходил по собесам и разгребал вакансии? Многие компании, которые раньше нанимали фронтов - теперь нанимают fullstack разрабов в лучшем случае, и даже моя перешла к такой политике несколько месяцев назад. Чисто фронтовых позиций стало в разы меньше. Рынок меняется, и меняется несколько быстрее, чем многие предполагали.
532Mar 23
Тут две недели назад приняли пропозал в Go от Robert Griesemer - это, на минуточку, один из создателей языка. Пропозал добавляет возможность объявлять типы-параметры у дженерик-методов, а не только у структур и обычных функций. На простом примере: допустим, есть у нас структура ответа c дженерик-типом: type Response[T any] struct { Data T Err error } И получая ответ для типа User, мы хотим его замапить в другой тип - UserDTO. Если ты не знаком с дженериками, то интуитивно хочется сделать что-то такое: func (Response[T]) Map[U any] funcname... Но так сделать нельзя. Сейчас Go позволяет на структуру навешивать методы только с тем типом, который определен для структуры. Чтобы решить проблему с маппером выше сейчас нужно определять глобальную функцию: func MapResponse[T any, U any](r Response[T], f func(T) U) Response[U] { if r.Err != nil { return Response[U]{Err: r.Err} } return Response[U]{Data: f(r.Data)} } и вызывать ее потом следующим образом: resp := GetUserFromDB(1) dtoResp := MapResponse(resp, func(u User) UserDTO { return UserDTO{Name: u.Name} }) Когда пропозал завезут в новую версию, дженерик-структуры получат возможность навешивать методы с собственными параметрами: type Response[T any] struct { Data T Err error } func (r Response[T]) Map[U any](f func(T) U) Response[U] { if r.Err != nil { return Response[U]{Err: r.Err} } return Response[U]{Data: f(r.Data)} } // использование: dtoResp := GetUserFromDB(1).Map(func(u User) UserDTO { return UserDTO{Name: u.Name} }) Куда это красиво ляжет? Например, на обработку коллекций или потоков данных. Можно будет использовать цепочку вызовов: mySlice.Map(transform).Filter(check).Collect() В целом, после первичной стадии отторжения дженериков пару лет назад - я плавно перешел в стадию их принятия, особенно когда на работе появился проект, где мы их начали использовать. Сейчас же, когда их использование стало совсем привычной вещью - этот пропозал выглядит очень полезным и явно двигает систему дженериков в Go в нужную сторону.
607Mar 15
С начала года ничего не писал, потому что активно ходил по собесам и сильно зашивался по времени. Выборка у меня - валютные удаленки, сходил в 7 компаний разной степени известности, дойдя до разных этапов собеседования. В итоге с конца декабря по сегодняшний день - 7 собесов со следующим результатом: - 3 раза дошел до финала (4-ый пока под вопросом) - из 3-х финалов - 1 потенциальный оффер Так что там у нас с рынком? Во-первых, сотни постов в linkedin и x.com о том, что рынку плохо - в целом не далеко от правды. Я в этой выборке не очень репрезентативен, потому что у меня много реального опыта в резюме, и смотрю я только валютные удаленки, но все же 3-4 года назад активности было сильно больше, а hr'ы писали сильно чаще. Сейчас в половине случаев или автоматом летит отказ, или hr радостно игнорирует сообщение (ладно, если просто игнорируют - пару раз меня молча помечали как спам, за что телега радостно блокнула мой аккаунт :)). Во-вторых, появились вакансии вида "vibe coding engineer". Я на такую зааплаился и буквально на одном из этапов сидел и вайбкодил. В целом это ожидаемо - я писал выше, что процесс найма точно поменяется и у нас будут такие этапы. Я бы даже сказал, что это разворотв найма в правильную сторону - тут проверяются не абстрактные алгоритмы, а то, что ты реально точно будет делать на работе ежедневно. Что по ценам? Я почти не аплаился на вакансии на рф-рынке, но мне показалось, что в среднем для go senior вилки стали меньше. Для валютных удаленок - где-то стали меньше, где-то остались на плюс-минус том же уровне, что и год назад, но роста я не видел ни там ни там. Если ВУ с коллективом, который говорит на русском или частично на нем говорит, что в среднем вилки от 4 до 7k$. Задачи 4 из 6-ти собесов - с классическими этапами: hr, тех интервью, system design, финал. На одном был еще этап с вайбкодингом, и еще на одном ребята обошлись без сисдиза. Суммарно раза 3 на лайвкодинге я написал worker pool разной степени всратости и пару раз cache. Тут очень помог один известный курс с названием "Подготовка к собеседованию по go за 7 часов", где по-факту просто даны под самых популярных 100 задач и показывается, как их можно решить - его прям советую отрешать хотя бы раз. На system design - один раз реализовывал архитектуру для переноса данных из одной системы в другую без отказа на проде, еще раз - более классическая архитектура по типу booking, со своими нюансами. Тут помог курс с той же платформы с ожидаемым названием "Подготовка к system design интервью", я его советовал выше, и могу посоветовать еще раз, там даются хорошие паттерны и его удобно пересматривать прям перед собесом. Еще из интересного - появилось много разных тулз для прохождения собесов, которые маскируют свой процесс и не отображаются при шаринге экрана. Тулы - или просто чатик с LLM, или что-то более сложное с анализом голоса и загрузкой скринов. Пару раз попробовал заюзать, пока работает всрато и чаще больше мешает, чем помогает, но в перспективе, думаю, такие инструменты будут очень быстро развиваться, и их точно нужно использовать, пока рынок в очередной раз не поменялся, а он с приходом таких инструментов поменяется точно. Думаю, что в ближайшее время или сделают какую-то платформу, которая будет трекать такие вещи, или поменяют процесс лайвкодинга в принципе.
761Feb 18
Нерегулярная рубрика - плагины для neovim. Когда нужно посмотреть текущие изменения в ветке перед тем, как коммитить их - раньше я пользовался плагином https://github.com/sindrets/diffview.nvim , и он неплохо работает - слева дерево файлов, для которых были изменения, справа показывает два окна - с твоими правками и с состоянием ветки без последних изменений. Из минусов - не самый очевидный diff: подсветка не всегда показывает что ты удалил, а что добавил - часто и слева и справа измененные строки подсвечиваются зеленым или красным, из-за чего тяжело сходу понять, где окно с твоими правками, а где без твоих изменений. Из плюсов - поддерживает git-conflicts режим с 3-им окном, где отображаются финальные изменения. На reddit заанонсили новый плагин - vscode-diff.nvim, попробовал - и это топ. Очень похоже на diff в vscode, о чем и говорит автор. Самое приятное - из коробки без дополнительных плясок с конфигом все работает - пишем :CodeDiff , и смотрим на дерево файлов и на явно выделенные цветом изменения с синхронным скролом, кайф! Плюсы - сильно лучше и понятней diff. Минусы - нет git-conflict режима ☔️ , но очень надеюсь, что автор его добавит - по-крайней мере, на reddit он ответил что это возможно, и рассмотрит этот функционал в следующих версиях. https://github.com/esmuellert/vscode-diff.nvim dev notes | golang digest
815Dec 10
Добил наконец-то плагин для anki, о котором писал выше - https://github.com/vpoltora/lexiforge Страница плагина в хабе - https://ankiweb.net/shared/info/1830356451 Плагин максимально простой - добавил в него только то, что использую сам: - по кнопке (или сочетанию клавиш) генерируется описание слова на выбранном языке (или на английском, если не настроено; при этом если не выбран язык самого слова - он будет определен автоматически) и простой пример с использованием этого слова - добавляет озвучку к слову из google translate - имеет reading mode: отдельное окно, где LLM генерирует текст (уровень A1-C2 можно выбрать в настройках) с теми словами, которые были выучены сегодня По-итогу делаю вывод, что anki - пример очень качестенного софта: это опенсорсная тулза, написанная на плюсах с Qt, но при этом позволяет писать плагины на Python, что очень удобно и умно: на плюсах мало бы кто писал плагины :) Экосистема имеет свой хаб, куда можно загрузить плагин за пару минут, а если есть какие-то вопросы - спросить их на Reddit, где в сообществе больше 100к подписчиков. Короче - кайф, всем советую. dev notes | golang digest
829Dec 1