Обновить
0

Пользователь

0,2
Рейтинг
4
Подписчики
Отправить сообщение

Мошенникам даже не нужно ничего взламывать: я проверил 284 крупных сайта Рунета

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели108K

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

В прошлой статье я проверил 50 сайтов на зависимость от иностранных сервисов. С тех пор утилита научилась проверять почту, 152-ФЗ и безопасность, и я решил посмотреть шире: прогнал через неё 284 сайта крупных российских компаний. Банки, магазины, вузы, клиники, застройщики, медиа, госсайты.

Спойлер: у каждого четвёртого сайта можно отправить письмо от имени компании так, что оно придёт во «Входящие». У каждого четвёртого на страницах висят библиотеки с известными уязвимостями. Половина сайтов отдаёт ваш IP иностранным сервисам, как только вы открыли страницу, хотя в политике у многих написано, что ничего никуда не передаётся. А госсайты, на которые я рассчитывал как на пример строгости, оказались не лучше остальных.

Читать далее

Qwen 3.8 27B — сутки до выхода модели. На huggingface запущен обратный отсчет

Время на прочтение1 мин
Охват и читатели19K

По информации с https://huggingface.co/Qwen/Qwen3.8-27B Qwen3.8-27B, которая считается преемницей популярной Qwen3.6-27B, будет выпущена через сутки и как ожидается должна стать самым мощным открытым решением для локальной генерации

Читать далее

Разработчик сжёг токенов на $157 143, заплатив за них $400

Время на прочтение1 мин
Охват и читатели82K

Блогер‑разработчик OrcDev рассказал, что за последний месяц обработал 235 млрд токенов, которые при оплате по API‑тарифам обошлись бы ему в $157 143,39. При этом фактически он заплатил за использование моделей всего $400.

Читать далее

Бесплатные API к Claude, GPT, DeepSeek и другим моделям: 6 AI-роутеров с бесплатным доступом

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели116K

Собрал 6 AI-роутеров с бесплатным доступом к Claude, GPT, DeepSeek, Qwen и другим моделям. Показываю, что реально дают после регистрации: баланс, доступные модели, лимиты и нюансы работы через API.

Читать далее

В Go 1.27 завезли SIMD

Уровень сложностиСредний
Время на прочтение22 мин
Охват и читатели24K

Дядя Хашимото сказал разобраться, я попытался. Речь про его эссе «Everyone Should Know SIMD»: SIMD должен знать каждый разработчик; примеры там на Zig, но суть от языка не зависит. Мой язык - Go, и в февральском обзоре Go 1.26 я написал про новый SIMD-пакет грустную строчку: «поддержка ARM64 планируется в будущих версиях».

Будущее пришло быстрее, чем я ждал: в go1.27rc2 пакет simd стал портируемым, и один Go-код разворачивается в Neon на Apple Silicon и в AVX2 на Intel. У меня под рукой обе машины: Mac на M3 Pro, где собиралась первая версия этих бенчей, и Linux-десктоп на i9-14900KF. Впереди проверка обещания портируемости на живом железе: один исходник, два дизассемблера, две пачки замеров. Ассемблер писать не будем, весь код запускается копипастой; целиком он лежит в репозитории dsbasko/sandbox-simd.

Читать далее

Свободные функции вместо методов, но с полиморфизмом. Что это даёт на самом деле?

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели11K

Речь о процедурно‑параметрическом программировании, о котором почти никто не пишет. Я реализовал одну и ту же задачу в ООП и в этой парадигме и сравнил их численно. Одна из метрик разошлась в 6 раз.

Что же это такое?

Ваш docker‑compose.yml сломается: 5 настроек, которые все забывают

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели29K

Локально docker-compose.yml обычно выглядит «рабочим» ровно до момента, пока сервис не уезжает на сервер. Потом внезапно заканчивается память, контейнеры не поднимаются после падения, логи разрастаются на десятки гигабайт, а Docker продолжает считать зависшее приложение живым.

В статье — пять настроек Compose, про которые почти всегда вспоминают уже после первого инцидента в проде: лимиты ресурсов, restart policy, healthcheck, ротация логов и работа с volumes.

Читать далее

Вы неправильно используете clone() в Rust

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели9.3K

clone() в Rust часто появляется в коде в тот момент, когда borrow checker снова «мешает просто дописать фичу». Компилятор успокаивается, задача закрывается, но в проекте постепенно накапливаются лишние копирования, аллокации и API, которые требуют владения там, где хватило бы ссылки. В статье разберём типичные места, где clone() используют как затычку: от Vec и String до замыканий, HashMap и многопоточного кода.

Читать далее

Мой 14-летний путь отказа от ORM: череда инсайтов, приведшая к созданию SQL-First кодогенератора для PostgreSQL

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели15K

История о том, как я выпустил популярный ORM в 2012 году… потом похоронил его… потом осознал, что база данных должна быть единственным источником правды. И к чему это привело.

Читать далее

Колобок-стек: от Nexus ушёл, от Artifactory ушёл — написал свой реестр на Rust

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели12K

Нужен был реестр артефактов. Показать студентам цепочку поставки софта: сборка, тесты, push в реестр, деплой. Стандартная задача, казалось бы. "Вошли и вышли, приключение на 20 минут."

Растянулось на несколько месяцев.

В итоге написал свой реестр. Один бинарник. 7 форматов. 12 МБ RAM. Без базы данных.

Покатились →

Почему у нас нет кешей L5?

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели29K

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

Первое, что нужно понять: процессор не является абстрактным вычислителем, а вполне себе реальный кусок кремния размером примерно с ноготь большого пальца, на котором размещены миллиарды транзисторов и когда мы говорим «данные передаются из памяти в регистр», то мы буквально имеем в виду, что электрический сигнал проходит по металлическому проводнику длиной в несколько миллиметров или сантиметров. И это тоже расстояние, пусть и ничтожное по человеческим меркам, но при тактовой частоте 3–4 ГГц оно уже имеет значение, просто потому что за один такт сигнал в идеальных условиях будет проходить всего 10 сантиметров, а в металлическом проводнике на кристалле и того меньше.

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

Читать далее

Перечень всех «белых» IP-адресов Интернета

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели49K

Однажды передо мной встала задача: на произвольном роутере локальной сети выделить интернет-трафик пользователей и перенаправить его по другому маршруту, не трогая при этом локальный трафик.

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

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

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

Читать далее

Безопасный Linux вместе с AppArmor

Время на прочтение5 мин
Охват и читатели70K


В предыдущей статье речь шла о SELinux. Моё впечатление об этой системе безопасности двоякое. С одной стороны безопасности в ИТ много не бывает, и SELinux содержит все необходимое для защиты ОС и приложений от несанкционированного доступа. С другой же стороны он выглядит чересчур громоздким и неоправданно сложным, что делает его применение непрактичным. Не раз и не два в руководствах пользователя по установке коммерческого ПО я видел рекомендации выполнить setenforce 0 перед началом установки.

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

Так же, как и SELinux AppArmor является реализацией системы Mandatory Access Control (MAC), основанной на архитектуре Linux Security Modules (LSM). Модель безопасности Apparmor заключается в привязке атрибутов контроля доступа не к пользователям, а к программам. AppArmor обеспечивает изоляцию с помощью профилей, загружаемых в ядро, как правило, при загрузке.

AppArmor отличается от остальных реализаций MAC в Linux принципом действия на основе путей, еще он позволяет смешивать профили принудительного исполнения и режима предупреждений. Кроме того AppArmor использует вложенные файлы для облегчения разработки и имеет гораздо более пологий барьер для входа, чем тот же SELinux.
Читать дальше →

Бросил tmux и написал свой инструмент

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели22K

Десятилетия терминальных мультиплексеров, одна хроническая боль и маленькая тулза на C, которая наконец всё починила.

Читать далее

Обойдемся без ассемблера

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели14K

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

Нет сети. Нет USB. Нет компилятора. Нет интерпретаторов вроде Python. Возможно, даже нет привычных утилит (dd, xxd, objdump, hexdump). Есть только shell и встроенные команды.

Звучит как шутка, пока это не становится реальным сценарием:

Читать далее

Разработка аркадной гонки на Rust с нуля. Ошибки и успехи

Время на прочтение7 мин
Охват и читатели10K

14 месяцев назад я начал разрабатывать гонку. Идея была простой — с дедлайном 4 месяца сделать простую игру без пафоса. Ну, любой разработчик знает, что произошло дальше: без пафоса не вышло.

Читать далее

Тетрис в ядре Linux

Уровень сложностиСредний
Время на прочтение19 мин
Охват и читатели19K

Вероятно, вы знаете, что если запустить ядро Linux без корневой файловой системы или файла initramfs, то оно упадет с сообщением о панике ядра.

Но возможна ли работа ядра Linux без этих, вроде бы обязательных компонентов? Ответ на вопрос — да, возможна, но использовать такие возможности в конечном продукте не стоит.

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

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

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

Читать далее

Vulkan API. От нуля до первого треугольника

Уровень сложностиСредний
Время на прочтение35 мин
Охват и читатели13K

Приветствую вас, дорогие читатели! В этой статье мы разберёмся в том, как нам добраться от самого нуля до первого треугольника. Мы будем использовать Vulkan API 1.0, а затем будем переходить к всё более и более новым версиям этого API. Это моя первая авторская статья, поэтому прошу вашей поддержки. Цель данной статьи - разъяснить процесс отрисовки треугольника так, чтобы любой мог не просто нарисовать треугольник, а понять как устроен простейший рендеринг на Vulkan API на примере отрисовки треугольника.

Читать далее

243 строки, ноль библиотек: Андрей Карпати написал GPT на чистом Python

Время на прочтение2 мин
Охват и читатели75K

Основатель AI-образовательного стартапа Eureka Labs Андрей Карпати опубликовал microGPT — полную реализацию обучения и инференса GPT в 243 строках Python без единой внешней зависимости. Из импортов — только стандартные модули math, random, os и argparse.

Читать далее

Мой первый DIY-гаджет: Игра на реакцию для двух игроков на ATmega328P (без Arduino)

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели10K

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

Я новичок в проектировании PCB-устройств, так что могу ошибаться в некоторых нюансах. Хотя у меня уже есть большой опыт в электротехнике, с хорошим знанием схемотехники и прочего, если заметите неточности или улучшения — не стесняйтесь, указывайте в комментариях, буду рад конструктивной критике!

Получилась миниатюрная игра на реакцию для двух игроков на базе ATmega328P.

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

Информация

В рейтинге
3 011-й
Зарегистрирован
Активность