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

Сетка: https://set.ki/Nheuhoc
LinkedIn: linkedin.com/in/magrega
Download Telegram
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
Короч, была у меня проблема, которая жутко бесила периодически, но так как постоянно с ней сталкиваться не приходилось, я всё как-то не решался взяться за нее. Тут в очередной раз, когда нужно было залипнуть в VScode, я снова с ней столкнулся и понял, что пора что-то решать.

В чем суть: в PowerShell бывает приколюха, что ввод начинает полностью игнорировать заглавные буквы. Ни с клавы, ни копипастой невозможно вставить, они игнорируются. Это невозможно бесит, когда ты пушишь коммиты или копипастишь что-то в консоль. Полез разбираться.

Дело в PSReadLine. Это модуль PowerShell, который отвечает за улучшенный ввод в консоль. Когда вы запускаете PowerShell, он по дефолту запускается и занимается вводом ваших команд. Так вот, с той Win10, которую я ставил, там шла версия 2.0.0. После короткой сессии поисков инфы в гугле, я узнал, что решение простое - обновиться. Я обновился до последней доступной 2.4.5.

Сложность тут, пожалуй, в том, что я ожидал автоматического обновления модулей PowerShell, вместе с ОС, но этого не происходило. Может кто-то объяснит почему так.

Обновить просто:
Get-Module PSReadLine -ListAvailable | Select-Object Name, Version, Path     # Проверить текущую версию
Install-Module -Name PSReadLine -Force -SkipPublisherCheck # Установить последнюю версию, если вообще не было установлено ранее
Update-Module -Name PSReadLine # Или обновить существующую

#powershell #windows
1
Решил я купить себе Flipper Zero. На текущем проекте мы работаем с RFID-метками и считывателями, потому стала интересна в принципе тема RFID, NFC, Sub-GHz и прочих. С покупками у меня разговор короткий, первым делом смотрю на Озон и Wildberries, и если там нет, того, что нужно, то уже иду искать дальше.

В общем, нашел на Озон вариант за 15 тысяч. Конечно, лот был сомнительный. Из картинок только графические рендеры устройства. Тип устройства указан как Радиолампа. Сомнения были, но до этого много так покупал, плюс на озон без проблем можно вернуть всё. Заказал (Ссылка для примера, картинки были такие же, но покупка была в другом магазине).

Приехал монстр Франкенштейна, имитация жизни, но в тоже время любопытная подделка. Корпус сделан на 3Д-принтере, ОС очень похожая, вместо фирменного дельфина - капибара, но понятное дело, нам нужен оригинальный товар. Вернул.

Написал продавцу в магазин на озоне, мол, почему паль продаёте такую бешеную едва ли дешевле оригинала. Ответ убил...
"Мы не можем использовать символику оригинального товара, чтобы не засудили за авторские права."

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

#flipper #joom #ozon #rfid
1😱1
Низкое качество
Часть 1.

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

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

Действительно, посредственная работа уже давно нормализована, и если айтишники видят, что из калькулятора утекает 32гб ОЗУ или из-за ошибки на бэкенде ложится аэропорт, в отличие от обычного пользователя, то, например, запуск неиграбельного Cyberpunk 2077 на PS4, который привел к изъятию игры из PS Store и возвратам, или обновы для очередной Call Of Duty по 100+ гб, запомнили многие. Вот еще несколько примеров абсолютно кошмарных запусков игр, которые были либо не готовы на момент выхода, либо требовали тонну патчей:
- The Last of Us
- Borderlands 4
- Grand Theft Auto: The Trilogy
- Redfall

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

"Borderlands 4 is a premium game made for premium gamers."

Примешивая сегодняшнюю непостижимую жадность ААА-компаний в разговор, можно представить под каким давлением находятся люди, работающие на этих местах. И ожидается, что под давлением люди начинают работать лучше, но по сути работая всё время в стрессе люди только больше допускают промахов (ой, вау, сюрприз).

В этом случае невозможно не сравнивать с тем, что происходило с геймдевом в начале 2000х. Это была эпоха чудес, почти каждый крупный проект совершал какой-то подвиг. Вот лишь некоторые:
- The Elder Scrolls III: Morrowind (2002) - Игра создавала огромный открытый мир, в котором нужно было следить за тысячами вещей (NPC, квесты, книги). При объеме ОЗУ в 64 мегабайт на первом Xbox это было нереально. Разработчики на загрузочном экране не просто подгружали ресурсы, они полностью перезагружали консоль, чтобы высвободить память.
- Shadow of the Colossus (2005) - Шерсть колоссов. Рендерить каждую отдельную шерстинку PlayStation 2 не смогла бы, потому разрабы придумали способ, с помощью которого они наслаивали полупрозрачные текстуры друг на друга, создавая впечатление объемной шерсти, по которой игрок мог бы лезть.
- Resident Evil 2 (N64 Port - 1999/2000) - Моё любимое. Подвиг. Ни больше, ни меньше.
Изначально игра вышла на PS1 на двух дисках, общим весом 1.2гб. Капком удалось перенести игру на картридж Nintendo 64, в котором было только 64мб памяти. Разрабы Angel Studios (сейчас Rockstar San Diego) сжали игру 20 к 1 без потери игрового контента. Это удалось по нескольким причинам:
1) Свой видеокодек. Кодек разделял слои видеороликов. Черно-белый слой оставался в нормальном для консоли разрешении, а цветовой был ужат где-то до одной четвертой от этого. Глаз сам дополнял цветные пробелы в темных местах игры (по сути почти всех), что позволило сэкономить много места на видеороликах.
2) Задние фоны. В игре не было полностью трехмерных сцен. Всей картой были двухмерные изображения, по которым перемещались трехмерные модельки персонажей. И этих двухмерных фонов были сотни, хотя большие части этих фонов были либо просто темные пространства или повторяющиеся текстуры стен или пола. Была сделана система, которая на лету переиспользовала одни и те же "плитки", что помогло экономить место. Бонусом шло динамическая смена разрешения этих плиток. Например, если главный герой стоял на переднем плане, то какие-то элементы на заднем рендерились в меньшем разрешении.
3) Саундтрек. Треки игры занимают много места, как самостоятельные файлы, потому разработчики положили "запись" ноты инструмента, а затем в коде написали как играть каждый трек (типа MIDI в Guitar Pro).
1
Низкое качество
Часть 2.

Я бы мог еще рассказать про Silent Hill и Crash Bandicoot на PS1 или про Metal Gear Solid 2 на PS2, но не хочу затягивать пост.

Я привожу примеры из видеоигр, потому что это очень удачная сфера, которая одновременно является так же программным ПО, но и вместе с тем близка рядовому человеку. C 2000 годов, когда гейминг был задротской нишей, он сегодня превратился в универсальное хобби, на примере которого можно увидеть в хронологии в какой упадок мы сегодня пришли.

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

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

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

Я ставлю на VR, хоть и это игра в долгую. Ready Player One.

#ai #game #article #dev
🔥2
На одном из прежних мест работы, когда в команде появился второй фронтенд-разработчик, довольно быстро встал вопрос о единообразности кода, а следовательно о линтере и форматтере. Для многих разработчиков, кто не особо вдается в глубину, особенно на начальном этапе, линтер и форматтер может зачастую означать одно и тоже. Особенно, когда до определенного момента в некотором смысле так и было.

Всем известный ESLint заведовал всеми правилами, но JavaScript продолжал усложняться: вышел ES6, появилась деструктуризация, стрелочные функции, async/await. Правила линтера для этих сложных вещей конфликтовали с правилами их оформления, это становилось сложно поддерживать.

Проблему решил Prettier в 2017 году. Он забрал на себя всё форматирование и сказал: "Мы придумали лучшие правила, берите и пользуйтесь, хватит спорить из-за стилей.". Действительно, спорить будет ли два таба или четыре пробела в начале строки - контрпродуктивно.

Таким образом, произошло разделение обязанностей. И если правила линтера продолжают быть темой споров, разные команды выкатывают свои конфиги в npm, какие-то наборы правил обрастают фанбазой, то с Prettier договариваться стало проще. Поставил и забыл.

В 2023 году команда ESLint официально перевела все правила форматтинга в "устаревшие" и прямо заявила, что поддерживать их было болью, потому предлагают пользоваться Prettier или ESLint Stylistic.

В моем личном случае мне пришлось это всё разобрать, так как мы стали настраивать линтер для команды. Какие-то наборы правил взяли готовые, что-то написали сами. Пока этой необходимости не возникло, я просто пользовался расширением ESLint в VSCode с какими-то дефолтными правилами, которые шли с CRA, но потом для меня открылся целый мир.

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

#javascript #eslint #formatter #linter #Oxlint #Prettier
🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Пользуюсь ИИ-чатом на Arena AI.

Очень нравится как визуально выполнена кнопка копирования.

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

#frontend #webdev #ux
🔥2👍1👏1