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

Сетка: https://set.ki/Nheuhoc
LinkedIn: linkedin.com/in/magrega
Download Telegram
С гордостью представляю вам своего зверя. Машина, которая каждый день с утра до ночи пашет вместе со мной, является источником зарплаты, отдыха, знаний, нового опыта.
Инструмент, с которым я себя идентифицирую, и без которого мне уже просто не представить свою рутину.

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
Какая математическая вероятность выпадения этого кода?

#telegram
🔥2
Сейчас будет задротская тема.

Я питаю определенную любовь к нишевым инди-играм. В них зачастую есть та душа творчества, которая сегодня уже полностью вымылась системой подписок и лутбоксов от ААА-компаний. Одна из таких игр The Textorcist: The Story of Ray Bibbia.

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

Короч. Суть в чем, я хотел как-то переустановить ОС (бог пойми зачем опять 🤦🏻‍♂️), но прежде, чем это делать, решил проверить, что сейвы с этой игры перенесутся, так как я очень не хотел терять прогресс, доставшийся мне неоправданно тяжелым для видеоигры трудом. Накатил игру на ноуте. Запустил. Steam Cloud нет, перетащил папку сейвов с компа на ноут. На старте игры сейвов нет, закрываю игру, смотрю сейвы - они потерты, созданы новые.

Простите, что?


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

ПРОСТИТЕ, ЧТО?

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

f27624b7b4c469c2d33b38c6bb833e4ab9b93dc0ef4073705b26c98017d32a5cc4c31c74be1a924eeyAiaWQxMGJldGEiOiAtMS4wLCAic2NvcmU1IjogOTg3MzQ1LjAsICJzY29yZTViZXRhIjogMC4wLCAic2NvcmU5YmV0YSI6IDAuMCwgImlkZGxjMSI6IC0xLjAsICJzY29yZXJ1c2giOiAwLjAsICJpZDdiZXRhIjogLTEuMCwgInNjb3JlZGxjMiI6IDAuMCwgInNjb3JlMmJldGEiOiAwLjAsICJzY29yZTEiOiA1OTE1ODcuMCwgImlkZGxjMyI6IC0xLjAsICJzY29yZTciOiAxNDU4Nzk5LjAsICJzY29yZTkiOiAxNjg1MDczLjAsICJzY29yZTMiOiAxMDUxNjE0LjAsICJpZGJldGEiOiAtMS4wLCAic2NvcmVrcmFtcHVzIjogMC4wLCAiaWR0ZXN0IjogLTEuMCwgImlkNCI6IDEwMDk2My4wLCAiaWQyIjogMjkwOTM4LjAsICJpZDJiZXRhIjogLTEuMCwgImlkcnVzaGJldGEiOiAtMS4wLCAic2NvcmU3YmV0YSI6IDAuMCwgImlkNWJldGEiOiAtMS4wLCAiaWQ5YmV0YSI6IC0xLjAsICJpZDYiOiA0MTU5MS4wLCAiaWQ4IjogMjMzNDguMCwgInNjb3JlZGxjMyI6IDAuMCwgInNjb3JlcnVzaGJldGEiOiAwLjAsICJpZDEwIjogMTMyMzkuMCwgInVzZXJuYW1lIjogIkFJVyIsICJzY29yZTQiOiAxNzA2MjkyLjAsICJzY29yZTEwIjogNTY5NTM2LjAsICJpZDZiZXRhIjogLTEuMCwgInNjb3JlM2JldGEiOiAwLjAsICJzY29yZTIiOiAxMDk5NjMyLjAsICJzY29yZWRsYzEiOiAwLjAsICJpZCI6IDM3NjkzNy4wLCAiaWRydXNoIjogLTEuMCwgInNjb3JlNGJldGEiOiAwLjAsICJpZGRsYzIiOiAtMS4wLCAic2NvcmU4YmV0YSI6IDAuMCwgInNjb3JlOCI6IDEzMTI5MjUuMCwgInNjb3JlMTBiZXRhIjogMC4wLCAic2NvcmU2IjogMjIwMDQ3MC4wLCAiaWQ1IjogNjI0MjguMCwgImlkNGJldGEiOiAtMS4wLCAiaWQ4YmV0YSI6IC0xLjAsICJzY29yZTFiZXRhIjogMC4wLCAic2NvcmVoYyI6IDAuMCwgImlkM2JldGEiOiAtMS4wLCAic2NvcmU2YmV0YSI6IDAuMCwgImlkOSI6IDE0NDIxLjAsICJpZDciOiAyNzA4NS4wLCAic2NvcmV0ZXN0IjogMTA1MTYxNC4wLCAiaWQzIjogMTc1ODg2LjAgfQA=


У меня была мысль, что это какая-то кодировка, но на тот момент я не сообразил, потому пошел искать форумы в инете, где люди занимаются взломом игровых процессов и прочего и набрел сюда.
🤯2
В общем, мне подсказали, что это base64. И после расшифровки данные выглядят так:
nۆo86w}:m7 o4y4~彺s4׷wٮ\s7mZn { "id10beta": -1.0, "score5": 987345.0, "score5beta": 0.0, "score9beta": 0.0, "iddlc1": -1.0, "scorerush": 0.0, "id7beta": -1.0, "scoredlc2": 0.0, "score2beta": 0.0, "score1": 591587.0, "iddlc3": -1.0, "score7": 1458799.0, "score9": 1685073.0, "score3": 1051614.0, "idbeta": -1.0, "scorekrampus": 0.0, "idtest": -1.0, "id4": 100963.0, "id2": 290938.0, "id2beta": -1.0, "idrushbeta": -1.0, "score7beta": 0.0, "id5beta": -1.0, "id9beta": -1.0, "id6": 41591.0, "id8": 23348.0, "scoredlc3": 0.0, "scorerushbeta": 0.0, "id10": 13239.0, "username": "AIW", "score4": 1706292.0, "score10": 569536.0, "id6beta": -1.0, "score3beta": 0.0, "score2": 1099632.0, "scoredlc1": 0.0, "id": 376937.0, "idrush": -1.0, "score4beta": 0.0, "iddlc2": -1.0, "score8beta": 0.0, "score8": 1312925.0, "score10beta": 0.0, "score6": 2200470.0, "id5": 62428.0, "id4beta": -1.0, "id8beta": -1.0, "score1beta": 0.0, "scorehc": 0.0, "id3beta": -1.0, "score6beta": 0.0, "id9": 14421.0, "id7": 27085.0, "scoretest": 1051614.0, "id3": 175886.0 }�

Как мы видим, это таблица рекордов из моего сохранения. Логика такая:
В начале всей строки есть рандомный кусочек, назовем его ID — nۆo86w}:m7 o4y4~彺s4׷wٮ\s7mZn . Затем идет JSON с данными сохранения, в данном случае количество очков. Все это шифруется в base64.

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

Понравилось ли мне тратить время на то, чтобы в этом разобраться? Безусловно. Хотел ли бы я этим заняться опять? Конечно, нет.

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

#steam #textorcist #guide #base64
👍1🔥1😁1
Был у меня давным-давно красивый инстаграм. Я в него заливал только самые эстетичные, на мой взгляд, фотки. Вел я его довольно давно, лет с 20, там была целая хронология становления моей персоны. К сожалению, с наступлением 2022 года то ли активизировались боты в инсте, то ли еще какой-то блудняк произошел, и в инсте стали блочить аккаунты, особенно с РФ, направо и налево.

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

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

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

#instagram
4👏2🥰1
К лучшему или нет, но зима заканчивается, а рабочие обороты увеличиваются. Времени на посты становится меньше, но я приготовил кое-что прикольное.

Я купил себе как-то часы Mi Band 8 на смену своим пожилым Mi Band 2, доставшимся мне от жены. Хотелось просто добавить цвета с кастомными циферблатами к подсчету шагов и калорий. На них нашелся циферблат, который мне невероятно сильно понравился. От картинки чувствовался такой осенний, немного хеллоуинский вайб с примесью какой-то диснеевской сказки. Но был у них баг один, дни недели отставали на один. В понедельник показывали воскресенье.

У восьмой версии часов оказался какой-то совершенно непонятный алгоритм счета калорий, который насчитывал мне по сожженных 400 ккал пока я просто сижу за компом. Решил вернуть. Взял 7 версию, на которой старый алгоритм подсчета, меня это устроило, но того циферблата на них не было. Ну что ж, полез курить форумы.

Накурился и узнал такую вещь:
Файлы циферблатов идут в формате .bin, но по сути они открываются обычным ZIP-архиватором. А внутри...
🎉 JavaScript 🎉

Вы не ослышались, ребята! Внутри .json-файлы манифестов, куча ассетов в видео картинок и javascript-код.

Потому, смачно похрустев пальцами, я полез исправлять циферблат и пересобирать его для 7 версии Mi Band. Обратно всё собирается программой ZMake, точнее, адаптируются картинки под ZeppOS.

Такие вот дела.

#javascript #zeppos #miband
🔥4