Технические заметки
19 subscribers
57 photos
15 videos
30 links
Здесь я делюсь техническим опытом, который приобретаю каждый день на работе и дома.

Сетка: https://set.ki/Nheuhoc
LinkedIn: linkedin.com/in/magrega
Download Telegram
Часть 2.
Вайб-кодинг — это программирование на основе ощущений и подсказок ИИ, без глубокого понимания синтаксиса или алгоритмики. Появились вакансии, открыто декларирующие: "Нам не нужны лорды, гордящиеся прошлым. Нам нужны те, кто генерирует код". Возникла концепция "Команды 7/7" — круглосуточного конвейера, где люди работают без выходных, подстегиваемые верой в то, что ИИ делает их сверхлюдьми.
Это фундаментальный сдвиг в профессии. Мы переходим от написания кода к рецензированию кода, написанного нейросетью. Но чтобы качественно рецензировать, нужно знать больше, чем нейросеть. А если нейросеть знает больше "рецензента" (джуниора), то мы попадаем в ловушку компетентности. Джуниор смотрит на сгенерированный код, видит, что он запускается, и отправляет его в продакшн. Он "чувствует вайб", что все ок.


Тут выскажу сугубо личное мнение. Пузырь из соевых разработчиков разрастался, начиная с ковида, и сейчас набрал критическую массу.
Конечно, до определенной степени я сам такой же парень из пузыря, но я заходил в профессию со всей скромностью, с желанием учиться и разбираться в сложных концептах. Я никогда не считал, что, пройдя пару курсов на Udemy, можно залететь на зарплату 100+ и еще бить себя в грудь, что рынок мне не доплачивает. Цена любого опыта — стыд, и, как ни крути, первые год-два работы рассчитывать на какие-то серьезные плюхи — это гордыня. Конечно, есть свои исключения, но мне кажется, средний опыт для человека, который в ~30 лет входит в программирование, будет такой.

Так сложилось, что у меня был опыт отбора кандидатов. На протяжении нескольких месяцев мы искали второго разраба на React в команду. И если на момент прихода в компанию я себя чувствовал совершенно чужим в профессии, будто меня туда занесло по ошибке, то после проведения собесов и наблюдения за кандидатами, я понял прекрасно, что я еще молодец. Люди с 5-летним опытом разработки приходят и не могут ответить на банальные вопросы про Redux и мемоизирование, а требования по зарплате - моё почтение. Люди действительно считают, что, пройдя один курс на Udemy или Яндекс, можно сразу попасть на проект и что-то пилить, ну а с появлением ИИ-агентов люди начали терять связь с реальностью и вправду считают, что они разработчики.

Бизнес в восторге от ИИ. "Зачем нам дорогой сеньор, если DeepSeek пишет 1500 строк кода за минуту?" — спрашивают они. Ответ прост и страшен: поддержка. ИИ позволяет генерировать функционал с невероятной скоростью. Графики производительности (Lines of Code) летят в космос. Но вместе с ними в космос летит и технический долг.
Код, написанный ИИ, часто страдает от скрытых дефектов:
- Использование несуществующих библиотек (галлюцинации).
- Нарушение паттернов безопасности.
- Логические бомбы, которые взрываются только при граничных условиях.
Когда такой код накапливается, проект превращается в "Большой Ком грязи". Поддерживать его становится невозможно, потому что никто — ни человек, ни ИИ — не понимает общей картины.


Здесь тоже сложно не согласиться. Я вижу, как даже в самой сетке очень много людей, которые воспевают ИИ, как решалку всех проблем, но, по сути, качество сгенерированного кода строго зависит от кода, который был загружен в LLM, а в большинстве своём это код едва ли Middle уровня. Да, прикольно набрасывать прототипы по-быстрому, но зачастую дебажить код ИИ занимает больше времени, чем писать самому с нуля.

С помощью ИИ я пытался реализовать два домашних проекта. Один очень простой, второй очень специфический. Ни с одним из них, например, Cursor не справился. Если будет интересно о самих проектах расскажу в следующих постах.

Я с уважением отношусь к чужому опыту и испытываю интерес к тому, какими знаниями владеет команда, так как именно наследственность опыта создает общее понимание продукта и оставляет возможным его поддерживать. ИИ-разработка — это действительно "черный ящик", и бог бы с ним, если бы пределом был плохо написанный код, но использование ИИ в разработке, особенно в больших компаниях, вызывает много юридических вопросов в виде 152-ФЗ и права принадлежности кода.

#habr #ai #article #quote
🔥2❤‍🔥11
Итак, ребята, завершающий пост про мой многострадальческий Vivobook. Постараюсь более структурно, в отличие от прошлых постов, чтобы не отнимать много времени у читателей.

Вспомним суть проблемы: включаю музыку через Bluetooth-колонку, блокирую экран (Win+L) и ухожу от ноутбука. Через минуту звук начинает периодически прерываться. На заблокированном экране! Это не зависание, а именно короткие, но чёткие пропадания звука раз в 30-60 секунд.

Чего только я не перепробовал (список безумия):
• Переустановка ОС. Windows 11 и 10, чистые образы с MSDN, установка через Media Creation Tool. Десятки раз.
• Война с драйверами. Все возможные комбинации: драйверы с сайта ASUS, последние от AMD для графики, драйверы от Intel для Wi-Fi/Bluetooth (да, я даже менял аппаратный модуль с MediaTek на Intel AX210), стандартные от Microsoft.
• Танцы с настройками питания. В Диспетчере устройств для каждого USB-контроллера, PCI-E, Bluetooth-устройства и даже мышки отключал галочку «Разрешить отключение этого устройства для экономии энергии». Менял схемы питания через командную строку (powercfg), выключал все возможные опции энергосбережения в параметрах Windows.
• Аппаратные экспедиции. Менял SSD, оперативную память, отдавал ноут в ремонт для поиска микротрещин на материнской плате и перепрошивки BIOS программатором. Пробовал работать без внешнего монитора, без USB-хаба, в чистом поле вдали от других сетей.
• Глубокий анализ системы. Спасибо подсказке с форума — начал копать Журнал событий Windows. Позже подключил серьёзный арсенал: powercfg /energy, powercfg /sleepstudy, мониторил запросы на пробуждение (powercfg -requests). В финале дошёл до Windows Performance Recorder/Analyzer и LatencyMon.

Ключевые открытия в расследовании:
1. Проблема волшебным образом исчезала, если в Диспетчере устройств отключался драйвер видеокарты AMD Radeon Graphics. Но это было не решение — без драйвера не работал внешний монитор.
2. В отчёте powercfg /sleepstudy обнаружился загадочный Unidentified Driver, который мешал системе уйти в глубокие фазы сна в режиме Modern Standby.
3. Инструмент LatencyMon показал виновника — высокую DPC-латентность (задержку вызовов драйверов). Главными подозреваемыми были ntoskrnl.exe (ядро Windows) и Wdf01000.sys (фреймворк драйверов). Пики их активности в Windows Performance Analyzer чётко совпадали с моментами прерывания звука.
4. Проблема была не в конкретной колонке или наушниках (тестил JBL GO 3, AirPods), а в режиме Modern Standby (S0), в который ноутбук упорно уходил при блокировке экрана, игнорируя любые настройки «не спать».

Рабочее решение (костыль, но рабочий):
Всё свелось к тонкой настройке работы процессора в состоянии простоя. Наткнулся на решение в англоязычных обсуждениях подобных проблем с драйверами AMD/NVIDIA.
1. Скачал утилиту PowerSettingsExplorer, которая показывает скрытые параметры питания.
2. Запустил от Администратора и снял галочки с двух параметров:
• Processor Idle Demote Threshold
• Processor Idle Promote Threshold
3. После этого они появились в настройках схемы электропитания (Панель управления -> Электропитание -> Настройка схемы -> Изменить дополнительные параметры -> Управление питанием процессора).
4. Выставил оба значения на 100% для питания от сети и от батареи.
5. Перезагрузил ноутбук.
❤‍🔥1🤯1🤝1
Результат: Лаги Bluetooth на заблокированном экране полностью исчезли. Музыка играет ровно, как и должна.

Вывод: Корень проблемы, судя по всему, в том, что современные драйверы (в моём случае — AMD) могут некорректно взаимодействовать с агрессивными механизмами энергосбережения процессора в режиме Modern Standby. Это вызывает лаги в реальном времени. Моё решение, по сути, заставляет систему реже и меньше снижать частоту CPU, что убирает артефакты. Возможно, это слегка скажется на долголетии ЦПУ, но для меня это приемлемая цена за стабильную работу, хотя у меня есть желание разобраться с этим дальше и вернуть работу процессора в обычное состояние, сохранив при этом работоспособность Bluetooth.

Надеюсь, мой опыт поможет другим, кто столкнулся с похожей болью, а также даст почву для дальнейшего исследования, которые помогут избавиться вообще от таких проблем.
Если кому-то вдруг интересно, я вел посты на русскоязычных и англоязычных форумах. Именно благодаря участию людей с разных частей света, у которых разная канва опыта, удалось раскрыть суть проблемы.

#vivobook #bluetooth #modernstandby #драйвера #windows11 #asus #s0
🤯21❤‍🔥1
Всех с наступившим Новым Годом! Это во-первых.

Во-вторых, пока все подводили профессиональные, и не только, итоги года, я проживал потерю любимого кота - Софта.
(Нет, не от слова Software, а от Soft - мягкий, такое имя у него было уже в приюте).
Его не стало неделю назад, и меня всё еще сопровождает эхо этого события.

Вместе с этим эхом пришла идея увековечить моего кота в виде принта на пробеле клавиатуры. Один из взаимных подписчиков подал несколько идей как сгенерировать дизайн для пробела, чем я и занимался всю прошлую ночь, пихая промпт за промптом в ИИ-чат. Занятие имело терапевтические свойства и сподвигло меня написать этот пост. Я пользовался LMArena в режиме Battle, чтобы одновременно генерировать две картинки и постоянно подправлял промпт, чтобы включить в него все необходимые детали рисунка. Благодаря совместным усилиям ИИ и Фотошоп удалось добиться желаемого.

Оказывается, купить клавишу с кастомным принтом не так-то просто. Я написал всем продавцам на АлиЭкспресс, кто занимается продажей кейкапов, но все мне отказали, а некоторые даже отметили, что таким почти никто не занимается в качестве частной услуги. На Авито так же не было желаемого успеха. Нашелся один человек, который готов взяться, но подход там иной, там клавиша и контуры рисунка печатаются на 3Д-принтере, но вся покраска происходит от руки. Есть подозрение, что такой поход хоть и аутентичен, но недолговечен, учитывая частоту использования пробела в ежедневной работе.

В общем, если вы являетесь человеком, способным помочь нанести принт на клавишу или напечатать клавишу с принтом целиком, мне нужна ваша помощь, пишите. Если вы знаете такого человека, покажите ему этот пост. Если просто можете провести ликбез по 3Д-печати и объяснить почему непросто отпечатать клавишу с принтом - тоже было бы прекрасно.

А если кому-то интересно, то ниже мой кот и то, как я его запечатлел в рисунке.

PS. Модель клавиатуры - Royal Kludge S98.

#rk #3d #print #photoshop #keycap #gpt #lmarena
2
К сожалению, я из тех людей, кто не умеет отдыхать. Если я больше часа ничего не делаю, то начинаю дрыгать и топать ногой, а вместе с тем и нервничать.

Первое января нового года не было исключением. В качестве подарка на Новый Год я купил себе iPhone с последней версией iOS 26 и обнаружил, что мой сайт-визитка не открывается на нем. Просто белый экран. На компьютерах с Windows, а также на предыдущих версиях iOS всё работает, как и должно.

После часовой сессии гугления и общения с ИИ я сделал несколько открытий:

· Apple не пускают другие браузерные движки на свои телефоны, потому все другие браузеры из App Store по сути тот же Safari (WebKit engine), просто в другом скине. С Safari часто бывают индивидуальные трудности при разработке, но меня смутило, что на компьютере в Chrome сайт открывается, а на телефоне нет. Загадка была разгадана.

· Причина, по которой не работал сайт на iOS 26 – устаревший метод substr в моем JavaScript-коде. Я написал этот сайт года 4 назад, потому не мудрено. Заменил его на substring, и страница загрузилась. Я так понимаю, substr все еще используется для обратной совместимости.

· Оказывается, private key от Putty (.ppk) не тоже самое, что ключи от OpenSSH. В целом не сказать, что это сюрприз, но было удивительно, что у фриварного Putty какие-то свои ключи.

На последнем пункте хочу остановиться чуть подробнее. Пока я ковырял свой сайт и искал причину, почему он не работает, я решил заодно настроить удаленный клиент VS Code по SSH, чтобы работать с кодом сразу на сервере.

Добрые 15 минут я не мог вкурить, почему мой ключ от Putty не работает в VS Code, пока не понял, что нужен OpenSSH.

И вот моя финальная мысль:

Я привык в разработке к тому, что постоянно меняются фреймворки, выходят какие-то новые тулзы и прочее, но еще разбираться и с разными приватными ключами…

Мне кажется, всяких приблуд становится так много, что им сложно вести счет и требуется определенная стандартизация. Каждая бесплатная херь создает свои форматы, которые между собой не работают и каждый раз надо разбираться в какой софт что идёт.

Согласны ли вы, что уже имеется некая избыточность в инструментах, доступных разработчикам?

#ios #ssh #javascript #frontend #putty #vscode
🤯1
4 января в 7:23 утра бог знает зачем ковырялся в личном кабинете Теле2. Наткнулся на интересный то ли баг, то ли фичу.

В категории "Действия с моим номером" первая кнопка, казалось бы, содержит опечатку, два раза напечатана буква "О" в слове "перенос", но в инструментах разработчика всё в порядке, опечаток нет.

Технически всё в порядке, но тем не менее проблема имеется. Да, на зуме страницы в 200% при FullHD разрешении монитора букву С становится видно.

Интересный пример того, что подстава может прийти откуда угодно, даже если вроде бы как всё сделали правильно.

Видимо, нюанс собственного шрифта. В такие моменты всегда хотелось бы иметь возможность поболтать с разработчиками и спросить:
1) В курсе ли такой проблемы команда?
2) Если да, то насколько сложен бюрократический процесс, необходимый, чтобы быстро это исправить?
3) Как определяется ответственность за ошибки и какая цепочка ответственных за очередной деплой коммита или хотфикса?
4) Есть ли какой-то QA-стенд, где проверяются такие мелочи простыми пользователями?

Если кто-то из Теле2 наткнется на этот пост, с большим удовольствием бы почитал комменты.

#frontend #font #ux #tele2
❤‍🔥1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Появилась необходимость снова зайти на сайт Apple.
Я уже как-то упоминал его в предыдущих постах, где показывал отсутствие проверок на вводимые данные на фронтенде при попытке логина в iCloud.

В этот раз мне нужна была помощь с активацией iMessage, так как я отправил уже более 20 СМС для активации сервиса, но он так и не включился. В интернетах прочёл, что можно запросить поддержку, оставив заявку на сайте. Подозреваю, чтобы кто-то вручную включил мне онлайн-чат в сообщениях.

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

Я, честно сказать, оторопел от такого и подумал, что это просто у меня какая-то проблема. Может расширение в браузере блокирует стили или еще что-то. Но нет, я зашел с чистого Firefox и там всё тоже самое. Если прошлый пост про валидацию был любопытным наблюдением к слову о том, насколько подробной должна быть валидация данных на фронте, то данный случай просто показывает какое-то пренебрежение то ли продуктом, то ли клиентами, то ли конкретно вот этой частью сервиса, связанной с получением поддержки.
В любом случае, выглядит как чей-то домашний проект и вызывает лишь подъемы бровей.

Если кому-то интересно, скроллы прыгают, потому что крутится спиннер, который, по всей видимости, вместе с собой крутит либо padding, либо margin. Из-за этого родительский размер блока меняет размер скролла. Детально изучать не стал, за это не заплатят, но когда я учился верстать, такой прикол часто возникал по неопытности.

#apple #ux #frontend
🔥1🤯1
Обновился до iOS 26.
Обнаружил, что наконец-то можно задать микрофон по умолчанию. Это всегда было проблемой на смартфонах, так как я считаю, что не существует на сегодняшний день Bluetooth-гарнитур, которые позволяли бы комфортно общаться где-либо, кроме пустой комнаты (с мягкими стенами, хи-хи-хи). Во всех иных сценариях либо шум, либо шумодав делает речь непригодной для общения.

В общем, начал радоваться. Действительно, после подключения наушников или микрофона в машине в приложениях продолжает работать выбранный микрофон (я всегда выбираю микрофон самого телефона, он реально классный).

Но так как я в основном пользуюсь телеграмом для общения, я очень быстро обнаружил, что именно в нем выбранный микрофон не работает. Он игнорируется, если есть другие подключенные гарнитуры.

Ну поковырялся маленько, перезапустил, переустановил, перезагрузил телефон. Всё бестолку, пошел писать багрепорт.

Так что если кто-то тоже обнаружил или просто хочет поддержать - можно пройти по ссылке и проголосовать, может быстрее пофиксят.

#telegram #bug #report #ios #iphone
🔥41
Я довольно часто продаю что-то на Авито. В очередной раз продавал сломанный роутер.
Бывает, что пишут с порога с отличными финансовыми предложениями и их я обычно игнорирую.

Запечатлел вот такую зарисовку. На данном скрине можно увидеть небольшой сюжет полный смелости и терпения, но, как пел Хью Лори, не всегда можно получить то, что хочется.

#Avito #router
1
Бешеная уверенность искусственного интеллекта иногда бодрит.

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

Ну, технически он прав. Нет докера - нет проблемы.

100% ГАРАНТИРОВАННЫЙ ФИКС

ОНО ЗАРАБОТАЕТ Я ТЕБЕ ГАРАНТИРУЮ


#ai #lmarena #debian
1
Сейчас по проекту работаем постоянно с виртуалками, хостим всё на машине с Debian. Накатили ОС, раздали всем учетки. Если нужны действия от рута, то, как и положено, делаем через sudo с вводом пароля. Ничего особенного.

В целом, работа идет, но каждый раз вводить пароль бесконечно бесит. Но что еще больше бесит, так это то, что при работе с WinSCP при попытке доступа к файлу, который доступен только root, нет возможности ввести пароль для поднятия прав. И вот как решить это, я вам расскажу:

Нужно сделать две вещи:
1) Файл sudoers. Мы добавили нужного юзера в sudoers.d/coolusername-sftp и добавили ему права на работу с WinSCP без запроса пароля для повышения прав.
coolusername ALL=(root) NOPASSWD: /usr/lib/openssh/sftp-server

Так, при выполнении sftp команд юзером coolusername не будет запрашиваться пароль.

2) Поменять настройки терминала в WinSCP
Открываем WinSCP, выбираем хост, который хотим открыть. Прежде, чем присоединяться, нажимаем "Edit" в правой части экрана, кнопка "Advanced..." станет активной. Жмем ее, в новом окне в списке выбираем Shell. В правой части в поле "Shell:" вводим sudo -s.

Всё, теперь при попытке доступа к файлам, принадлежащим root, не должно быть ошибок доступа.

Обязательно имейте ввиду безопасность вопроса. У нас тестовый сервер, ломаем что хотим. Однако, полный sftp-доступ к root файлам обычным юзером может стать источником проблем.

Короче, это плохая практика, и если кто-то может поделиться опытом как это решить более правильно, буду рад почитать подсказки.

#debian #winscp #sftp #sudo #linux
1
С гордостью представляю вам своего зверя. Машина, которая каждый день с утра до ночи пашет вместе со мной, является источником зарплаты, отдыха, знаний, нового опыта.
Инструмент, с которым я себя идентифицирую, и без которого мне уже просто не представить свою рутину.

AMD Ryzen 7 9800X3D 8-Core 4.70 GHz
NVIDIA GeForce RTX 3060 12GB (Жду 5070ti, очень скоро приедет!)
32,0 ГБ DDR5 6400 Mhz (Нехило я так успел купить перед ИИ бумом)
B850M AORUS ELITE WIFI6E ICE

Периферия:
Клавиатура Royal Kludge S98
Мышь VGN Dragonfly F2 Ultra+
Наушники Arctis Nova 7P Wireless

Если у вас есть желание, я был бы рад почитать про ваши компы, что интересного в них есть, какие-то украшалки или просто история, связанная со сборкой.

#build #pc
🔥2
Что, ребята, разгоняем мониторы теперь?

Кто-нибудь после 144Гц видит разницу вообще?

#monitor #HKC #overclock
🤯2
Решил по приколу закинуть Соглашение подписчика Steam в DeepSeek. На волне разговоров про то, что купленные игры вам не принадлежат, стало любопытно. Смотрите, какая оговорка для российских пользователей:
10. Применимое право и юрисдикция (Крайне важно для пользователей из России и стран СНГ):
Для пользователей за пределами ЕС и Великобритании споры регулируются законодательством штата Вашингтон, США. Вы соглашаетесь на исключительную подсудность судов округа Кинг (штат Вашингтон). Это означает, что в случае спора с Valve, рассматриваться он будет по американским законам в американском суде.
В соглашении сделана специальная оговорка для жителей России:
"Если вы проживаете в Российской Федерации, вы можете обратиться в районный суд по месту жительства." Это даёт вам право подать иск в суд по своему месту жительства в соответствии с российским законодательством.
Для пользователей в ЕС и Великобритании действует законодательство страны их проживания.

Стим не перестаёт удивлять, сервис бешенный.

#steam #ssa
1
Интересное наблюдение в Liquid Glass. Не знаю, было ли так же до, но я обратил внимание, что аудиоформы в Dynamic Island подстраиваются под цветовую гамму обложки альбома.

Жидкое стекло мне не зашло, я писал об этом, но это, пожалуй, классная деталь.

#ios #ux
2🤯1