Pull to refresh
0
@VXPread⁠-⁠only

User

Send message

Жертвы чистого кода

Level of difficultyEasy
Reading time9 min
Reach and readers25K

В индустрии разработки игр (а может софта и вообще) живёт очень удобная идея, которой многие оправдывают лишние слои логики и абстракции. Звучит она примерно так: «Я хочу, чтобы сам процесс создания игр был проще, приятнее и продуктивнее и готов пожертвовать 10% производительности ради этого» - Тим Суини.

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

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

Статья родилась после очередного приступа клинокодомании в отдельно взятой студии, когда кто-то в очередной раз увидел и притащил всем известную книгу Мартина о достоинствах этой самой клинокодии. Но "Clean Code", тот что с заглавной буквы и тысячными тиражами, вовсе не «чистый код» в бытовом смысле, потому что Мартин придумал этот бренд, ярлык, и несколько лет пестовал его на конференциях, связав свое имя и это понятие. Правильнее было бы называть это "стиль мистера Мартина" или "стиль Дядюшки Боба", и тогда половина споров о важности книги отваливается сама собой, потому что спорить приходится уже не про абстрактную "чистоту", а про конкретные наборы приёмов конкретного автора. Та дискуссия с технической стороны так и не получила внятных результатов, потому что на третьем круге обсуждения в ход шла риторика и подмена понятий вроде «clean» (хороший, годный), который начал превращаться в «Clean» (по методичке), и обратно.

Читать далее

Запускаем маленькую языковую модель на Symbian^3

Reading time13 min
Reach and readers16K

Недавно мне в руки попал флагман 2011 года — Nokia E7-00. По современным меркам это устройство практически бесполезное: операционная система не поддерживает современные протоколы шифрования, сервисы Ovi давно отключены, форум allnokia недоступен, а сам бренд телефонов Nokia за это время дважды воскрешали разные компании, впрочем, без особого успеха.

В этой статье я расскажу о том, как работают смартфоны на Symbian^3 в современном мире, как разрабатывать приложения для них, и ради эксперимента попробую запустить подобие локальной языковой модели, которая дает полезные советы.

Читать далее

Хакер в магазине: изучаем поверхность атаки типичного супермаркета

Reading time9 min
Reach and readers18K

Хакер приходит в общественную столовую и с возмущением обнаруживает, что солонку на столе может открутить кто попало. Помните эту старую хохму?

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

На связи Иван Глинкин, руководитель отдела прикладных исследований в Бастионе. Сегодня расскажу вам историю про Хакера в супермаркете, который получил доступ к конфиденциальным данным, прослушал переговоры сотрудников и даже инициировал возврат денег на чужую карту.

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

Итак, приходит Хакер в магазин и обнаруживает: 

• Кассы-трансформеры и терминалы самообслуживания — лицо современного ритейла и его ахиллесова пята.

• Кнопки вызова сотрудников — радиопередатчики с фиксированным кодом, который можно перехватить и воспроизвести.

• Беспроводные трубки стандарта DECT, которые до сих пор используют в торговых залах.

• Терминалы сбора данных — Android-устройства без пароля, с доступом к настройкам Wi-Fi.

• Сетевые провода, которые приглашают к знакомству с внутренней сетью.

Аж глаза разбегаются…

Сложно о простом. Все, что бы вы хотели знать о SFP модулях. Часть 1. Эволюция модулей и базовые понятия

Level of difficultyMedium
Reading time18 min
Reach and readers117K

Приветствую, коллеги! Это снова @ProstoKirReal. В прошлом цикле статей я с вами обсуждал работу интернета (Часть 1, Часть 2, Часть 3, Часть 4, Часть 5), но я специально обошел стороной самую важную часть – как биты данных передаются по локальным сетям между компьютерами и через интернет между материками.

Я начинаю новый цикл статей. В нем мне бы хотелось с вами обсудить SFP‑модули. Что это такое, какие типы бывают (и чем они отличаются), какую роль играют оптические кабели и немного затронем историю их развития.

Информации очень много. Точного объема статей я пока не знаю, но обещаю разложить все по полочкам максимально емко и понятно.

Читать далее

Сложно о простом. Все, что бы вы хотели знать о SFP модулях. Часть 6. Топ-10 частых ошибок при выборе и эксплуатации SFP

Level of difficultyMedium
Reading time9 min
Reach and readers16K

Приветствую, коллеги! Это опять @ProstoKirReal.

Мы с вами прошли большой цикл статей про SFP-модули. Обсудили историю развития, типы модулей, скорости, DAC/AOC, оптические кабели, пассивные компоненты, а также технологии WDM, CWDM и DWDM:

Читать далее

Как настроить Radioberry на актуальной версии Raspberry Pi OS

Reading time8 min
Reach and readers13K

Мы привыкли видеть Raspberry Pi в виде основы для различных SDR-приемников, декодеров и панорамирующих адаптеров. А вот полноценные КВ-трансиверы на базе RPI встретить сложно. Проект Radioberry — одно из редких приятных исключений. Эта маленькая плата превращает «малинку» в настоящую SDR-станцию со своим интерфейсом и возможностью как принимать, так и передавать в КВ-диапазоне.

До недавнего времени настройка была простой, но после обновления Raspberry Pi OS старые инструкции почти утратили актуальность: плата больше не определялась в системе. Один мой знакомый радиолюбитель даже решил, что она вышла из строя, и попросил меня о диагностике.

Читать дальше

Пожалуйста, используйте эти CSS медиа-фукции

Level of difficultyMedium
Reading time6 min
Reach and readers15K

Привет, Хабр!

Я начал использовать медиа-запросы ещё в 2011 году. Помню, как на работе руководитель подарил мне книгу Итана Маркотта «Отзывчивый веб-дизайн». В тот день я даже не работал, а сел читать её. В конце дня я сделал свою первую реализацию адаптивной вёрстки.

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

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

Давайте посмотрим, что я вам подготовил.

Читать далее

Топ-10 утилит для работы с диском на VDS

Level of difficultyEasy
Reading time5 min
Reach and readers8.8K

Продолжаю серию подборок. До этого рассказывал про инструменты для первого виртуального сервера и 10 онлайн-сервисов для сетевиков. А сегодня собрал утилиты, которые помогут найти, куда делось место, протестировать скорость диска и отследить, что именно его грузит. Интересно? Заходите под кат. 

Читать

Эмулятор CD-ROM из Raspberry Pi Pico W, использующий образы из сети

Level of difficultyMedium
Reading time7 min
Reach and readers17K

В одной из своих статей я уже рассказывал, как из Raspberry Pi Pico сделать USB CD-ROM. Так как размер флеш-памяти Pico ограничен, поместить что-то серьёзное в образ, который будет находиться во флеш-памяти невозможно. Можно попробовать разместить образ на флеш-карте и использовать модуль для неё, но я нашёл более интересное с точки зрения используемых технологий решение. Эмулировать образ, который находится в интернете. Образа многих дистрибутивов Linux доступны для загрузки с сайта.

Читать далее

Что плохой бензин делает с Вашим двигателем: физика детонации, кирпичный налёт на свечах и немного выживания

Level of difficultyEasy
Reading time9 min
Reach and readers18K

Дисклеймер: я не нефтехимик и не эксперт по моторам. Я embedded-разработчик, который в будни отлаживает встраиваемые системы, а по выходным развлекается с собственной машиной. Всё, что ниже, является компиляцией учебников по теории ДВС, технических регламентов и личного накопленного опыта - вдохновлением послужила актуальная статья ресурса про устройство ДВС. Напугала обложка? Она напугала и меня, но именно с друзьями-роботами хотелось создать нечто для привлечения внимания к действительно важной проблеме.

Читать далее

Как я собрал инфопанель на ESP32, поручив написание кода нейросетям

Level of difficultyEasy
Reading time8 min
Reach and readers19K

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

Поэтому автор обзора, Ядулла Абиди, устроил очную ставку Claude Code, Codex и Antigravity в реальном хардверном проекте. Задача – собрать простенькую информационную панель на базе ESP32 с OLED-дисплеем и датчиком температуры, которая умеет выполнять несколько параллельных задач. И хотя все три ассистента способны выдать рабочий прототип, выбирать помощника не глядя точно не стоит.

Читать далее

Как российские хостинги (и нас особенно) знатно штормило в мае-июне, и почему некоторые теперь не пишут на Хабре

Reading time11 min
Reach and readers42K

За два месяца на индустрию высыпалось очень много неприятностей. Из голландского ЦОДа кто-то атаковал правительственные сервисы ЕС, и там сделали массовое изъятие примерно 800 серверов, как бы у нас сказали, почти по беспределу. Но, поскольку это Европа, — в соответствии с духом просвещённой демократии. Сам дата-центр, когда узнал, что произошло, утрируя, поспешно разорвал контракты с оставшимися русскими, теми, кто знаком с Россией, с ней работает или вообще что-то про неё слышал.

А второй ЦОД, где любили вставать хостинги, поплавился от жары. На самом деле это не совсем так, но на жару очень удобно списывать. Кто ж знал, что лето настанет!

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

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

И напоследок прилетел масштабный DDoS, а потом ещё память подорожала на 70%, притом что в потребительском сегменте за месяц всего на 1—5%.

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

Читать далее

Как троттлинг процессора ломает видеокарту через PCIe: хроники абсурда в сервисном центре DNS

Level of difficultyMedium
Reading time13 min
Reach and readers27K

Дисклеймер: все события основаны на реальном кейсе борьбы за гарантийный ремонт топового железа в СЦ DNS. Диалоги воспроизведены по памяти, максимально близко к оригиналу, технический абсурд передан без приукрашиваний. Авторское настроение: «мне не смешно».

Представьте ситуацию: вы покупаете бескомпромиссную рабочую станцию. Вся система в сборе приобретается в DNS, там же заказывается сборка. Всё официально и находится на гарантии, кроме одной детали — процессора. Он шёл как OEM, и его годовая гарантия уже благополучно истекла, в то время как на остальные ключевые компоненты (включая дорогущую RTX 4090) гарантия продолжает действовать. Запомните этот факт — вокруг него СЦ построит свою главную защитную стратегию.

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

В этой статье разберём, почему «волосатый бублик» бессилен против стека ИИ, как контроллер памяти GPU тихо умирает под CUDA‑нагрузкой, и как разворачивался этот комедийный баттл с СЦ DNS.

Читать далее

И снова самый быстрый парсер JSON. Очередной

Level of difficultyMedium
Reading time6 min
Reach and readers14K

За свои 17+ лет в активной разработке я встречал много проблем, но одна преследовала меня постоянно: JSON. Нет, с самим форматом все ок, но вот с его чтением — не все норм.

Когда я только начинал работать с PHP, я списывал это на скриптовость языка. Отчасти из‑за этого я даже поменял стек. Но когда приходили по‑настоящему большие файлы, это всегда было больно. Иногда — очень. Был проект, где мы ждали не обработку информации бизнес‑логикой, а банального парсинга. Файлы доходили до десятков гигабайт и не всегда влезали в оперативку. Тогда я и заработал себе персональный todo — разобраться с этим раз и навсегда.

Сейчас, находясь в поиске новых возможностей, я решил вспомнить эту старую боль. Я уже давно не PHP‑разработчик, но проблема в индустрии всё та же. Объемы данных растут, требования тоже, а воз и ныне там. Нет, есть море крутых решений. Даже тут, на Хабре. Но для меня всё не то.

Мне нужно решение, а не костыль. То есть: никакой кодогенерации и никаких JIT (я не противник JIT, просто не хочу тянуть эту сложность).

Я ступил на тонкий лед: в Go есть классная штука — пакет unsafe. Почему классная? Потому что она позволяет обойти тяжелые ненужные проверки. Плюс побитовые операции для ускорения всего, до чего только смогли дотянуться руки. Пока изучал чужие парсеры, столкнулся с обманом в репозиториях, подкручиванием статистики (куда же без него?) и перекладыванием ответственности (и аллокаций) на сторону разработчиков.

Заглянуть под капот

0 дней без инцидента. Расследуем атаку и восстанавливаемся после неё

Level of difficultyEasy
Reading time7 min
Reach and readers8.9K

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

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

Читать далее

Худший язык программирования всех времён /s

Level of difficultyEasy
Reading time28 min
Reach and readers51K

Есть на ютубе видео на пятьдесят минут с хвостиком, с гордым названием «худший язык программирования всех времён». Не удивлюсь, если вы подумаете, что оно про C++. Оно действительно про плюсы и я его смотрел где-то с полгода назад, ну как смотрел... пробежался на x2 с перемотками, мало ли что обиженный джун там наговорил, но добрый @alyokhinопять про него напомнил, и теперь я его посмотрел полностью. И знаете что самое неприятное? Если убрать интонацию обиженного джуна и оставить только аргументы, то процентов семьдесят там будет правды. Не «спорно», не «зависит от контекста», а буквально правда, которую любой разработчик, проведший с языком пару лет, подтвердит вам не задумываясь.

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

Жанр «почему C++ ужасен» на Хабре выжжен дотла и про Init-зоопарк, перегруженный static, vector названный неправильно, std::move который не move, супер медленный regex, медленный unordered_map вы всё читали раз по двадцать. Сам по себе список этих болей давно не новость, от себя добавлю, что все жалобы и примеры ниже - это следствия одного решения, и я к нему приду. Или открывайте спойлеры, там скрыта история, почему каждая часть языка получалась так, как получалась.

С++ is the best ever programming language

TeamPCP: как команда хакеров-любителей «Дюны» закинула в наши Node.js-пакеты червей Shai-Hulud

Level of difficultyMedium
Reading time7 min
Reach and readers13K

npm install — такая привычная многим из читателей команда, но за последние пару месяцев она обернулась сущим кошмаром для инженеров по безопасности. И ладно бы всё сводилось к проверке 5 пакетов из package.json, но у каждой зависимости по 10 своих зависимостей, а у тех ещё по 10. В итоге мы тянем 2000, а не 5 пакетов, и тут, кажется, уже руками не проверишь. И именно на этой боли всех безопасников, поддерживающих JS-проекты, сыграла команда TeamPCP. В этой статье я хочу подробно, от А до Я, разобраться, в чём опасность, почему так произошло и как от этого защититься.

Читать далее

Почему cron — самый опасный инструмент в Linux

Level of difficultyEasy
Reading time11 min
Reach and readers21K

Демон cron знаком каждому, кто админит Linux. Он крутит бэкапы, чистит временные файлы и запускает скрипты, о которых все уже давно забыли. Однако многие не знают, что одна строка в crontab способна снести данные, забить диск, устроить форк-бомбу или открыть лазейку для хакера. Под катом я разберу, когда и как именно cron становится опасным, и какие команды помогут держать его в узде.

Читать

Айсберг Доменов Верхнего Уровня (ICANN и не только)

Level of difficultyEasy
Reading time40 min
Reach and readers13K

Вы задумывались когда‑то, как устроены вот эти окончания адресов разных сайтов? Например, как работают.com,.org? Для чего они придумывались и кто ими сейчас управляет? Сегодня я расскажу невероятную историю о том, как закрытая система стала невероятно огромным и миллионным рынком. Встречайте — TLD, ДВУ или просто домены верхнего уровня.

Начать погружение

Рунет без Google Login: что теперь делать с авторизацией

Reading time18 min
Reach and readers29K

В России снова обсуждают вход на сайты через Google, Apple ID, GitHub и другие иностранные аккаунты. Повод — подписанный закон № 199-ФЗ от 26.06.2026, который добавил в КоАП штрафы за нарушение правил авторизации пользователей.

Но сам запрет появился не сейчас. Базовая норма пришла ещё с 406-ФЗ от 31.07.2023 и с 1 декабря 2023 года живёт в ч. 10 ст. 8 закона № 149-ФЗ «Об информации». Новое в том, что теперь за нарушение есть отдельная статья КоАП — 13.55: для граждан 10–20 тысяч рублей, для должностных лиц 30–50 тысяч, для юрлиц 500–700 тысяч.

Обычного пользователя не штрафуют за сам факт наличия Gmail, Apple ID или GitHub. Но если этот пользователь одновременно владелец российского сайта, приложения или сервиса и оставил там вход через иностранный аккаунт, он уже не «просто пользователь», а «субъект обязанности по 149-ФЗ».

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

Читать далее
1
23 ...

Information

Rating
Does not participate
Location
Одесса, Одесская обл., Украина
Date of birth
Registered
Activity