Обновить

Код без исключений: как except Exception ломает системы годами

Уровень сложностиСредний

Знаете, что самое опасное в проде на Python? Когда кто-то говорит:

Да там всё просто работает».

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

Читать далее

EDRStartupHinder: Блокировщик EDR процессов

Сегодня мы продолжим исследование Bindlink API для вмешательства в работу антивирусных решений и EDR. На этот раз воспользуемся драйвером «bindflt.sys», чтобы предотвратить запуск службы антивируса/EDR при инициализации Windows.

Читать далее

GGUF-конвертер: простой способ квантизировать LLM (включая AWQ INT4 → FP16) под ваше железо

Уровень сложностиПростой

В последние два года формат GGUF стал стандартом для локального запуска больших языковых моделей: llama.cpp, koboldcpp, text-generation-webui и десятки GUI умеют работать именно с GGUF‑чекпойнтами.​

Проблема в том, что большинство моделей распространяются на Hugging Face в «сыром» виде (FP16/FP32, иногда в формате AWQ INT4), а конвертация в GGUF с нужной квантизацией требует отдельного набора скриптов, ключей и танцев с бубном.​

В этой статье покажу свою утилиту GGUF-converter — маленький open‑source проект, который:

Читать далее

Как подключить Meta Quest 3S к интернету через VPN в Windows 11

Уровень сложностиПростой

В сети я находил немало комментариев в духе «сделал пару действий — и всё заработало». К сожалению, в моём случае эти советы не помогли — то ли из-за моей некомпетентности, то ли из-за особенностей оборудования или провайдера.

Делюсь рабочим способом подключения Meta Quest 3S к интернету через VPN без настройки роутера. Пошагово показываю, как пробросить трафик мобильного хот-спота Windows 11 через VPN-соединение.

Читать далее

Как JVM загружает классы — просто о ClassLoader

Уровень сложностиПростой

В этой статье вы узнаете, как JVM загружает классы по мере необходимости, какие бывают загрузчики, почему нельзя подменить String, и откуда берётся ClassNotFoundException. Полезно для junior специалиста.

Когда вы запускаете Java-приложение, JVM не грузит все классы сразу. Она делает это по мере необходимости и именно ClassLoader-ы отвечают за загрузку байткода в память. Давайте разберёмся, как это работает и почему важно понимать эту механику.

Кто такие ClassLoader-ы?

ClassLoader – это часть JVM, которая находит .class-файлы, загружает их в память и создаёт объект Class, который уже можно использовать в программе.

В Java есть три основных загрузчика (можете создать свой):

Читать далее

Настройка транзита пакетов на ядре Linux

Уровень сложностиПростой

В данной статье описано как настроить транзит пакетов на системах ядра Linux. В качестве стенда под данную работу будет происходить в гипервизоре VMware, в качестве основного ядра будет использоваться ALT Linux. Так же для симуляции локально вычислительной сети будет использоваться утилита GNS3.

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

Читать далее

Простой способ получить пинг, mtr (и многое другое) от посетителей вашего сайта

Уровень сложностиПростой

Привет, Хабр. В последнее время интернет в России стал работать совсем плохо. Жалоб на недоступность сайтов в рунете становится всё больше. Поэтому я написал удобную программку, которая в один клик сможет собрать отчёт почему не работает сайт. В отчёт входит: пинг, mtr, проверка SSL и другая диагностическая информация. Подробности под катом.

Читать далее

Аннотации типов в Python. Что это и почему важно указывать

Уровень сложностиПростой

🔥 Аннотации типов в Python часть 2. TypedDict и другие продвинутые аннотации. PEP 484

def add(a: int, b: int) → int:

msg: str = f"Сумма чисел {a} и {b} = {a + b}"
print(msg)
return a + b


В данном примере мы видим функцию которая принимает два целых числа, и возвращает число. В самой функции мы создаем переменную msg и указываем что это строка.

Для аннотации типа значений аргумента используется двоеточие и после идёт указываемый тип. Для указания возвращаемого значения используется ->и после возвращаемый тип.

❗️ Заметим что Python не проверяет типы при вызове функции. Аннотации просто подсказывают тип.

Если мы вызовем add("Hello ", "World") то получим вывод "Сумма чисел Hello и World = Hello World".

Но зачем они нужны если они не влияют на код?

Читать далее

Квантовый генератор паролей на Q#

Уровень сложностиСредний

Когда квантовая механика встречается с программированием, рождаются удивительные проекты. Мой генератор паролей на Q# — именно такой случай. Зачем использовать квантовые вычисления для паролей? Ответ прост: настоящая случайность.

Обычные генераторы используют математические алгоритмы, которые лишь имитируют случайность. Квантовые кубиты дают фундаментальную непредсказуемость: суперпозиция состояний |0⟩ и |1⟩ коллапсирует в случайное значение при измерении.

Как это работает?

Проект предлагает два режима:

Режим 1 использует один кубит: H|0⟩ = (|0⟩ + |1⟩)/√2 — классическая 50/50 вероятность.

Режим 2 задействует EPR-пару — два запутанных кубита в состоянии (|00⟩ + |11⟩)/√2. Это добавляет квантовые корреляции в процесс.

Технически всё просто: генерируем случайные биты, преобразуем в числа, выбираем символы из алфавита 62 символов (буквы + цифры). Python-интерфейс делает использование интуитивным.

Почему это интересно?

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

Код чисто модульный, его можно расширять: добавить спецсимволы, веб-интерфейс, статистический анализ. Главное — он работает и демонстрирует потенциал Q# для решения повседневных задач необычными методами.

Технологии: Q#, Python, .NET 6
Сложность: средняя
Практическая ценность: высокая

Узнать как сгенерировать настоящий пароль

CLite — библиотека для упрощения программирования на C

Уровень сложностиПростой

CLite — библиотека для упрощения программирования на языке C.

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

Читать далее

Program Locker: простой способ защитить исполняемые файлы Windows паролем

Уровень сложностиПростой

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

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

Читать далее

Аннотации типов в Python — мода или необходимость

Уровень сложностиПростой

Ещё несколько лет назад аннотации типов в Python воспринимались как нечто факультативное — «игрушка для перфекционистов» или заимствование идей из статически типизированных языков. Сегодня ситуация изменилась: type hints стали стандартной частью экосистемы Python.

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

Читать далее

Блокировка YouTube Shorts на Android: решение через фильтрацию контента в браузере

Уровень сложностиПростой

Данный материал содержит описание способа полного скрытия раздела Shorts в интерфейсе YouTube на мобильных устройствах. В качестве примера используется Xiaomi Redmi Note 14 5G. Способ предлагается «как есть» — автор не несет ответственности за стабильность работы в будущем, но подтверждает его эффективность на текущий момент.

Читать далее

Чем вызван феномен галлюцинирования нейросетей?

Уровень сложностиПростой

Добрый день, сразу оговорюсь - я сам не знаю до конца ответа на этот вопрос, поэтому и хочу прибегнуть к помощи сообщества для поиска ответа на него. Вообще мне как программисту приходится сталкиваться с ИИ каждый день, использую браузерную версию Qwen Chat для личных и частично рабочих вопросов, чисто для рабочих - Cursor как правило с Composer. Но в целом пробовал почти все известные модели конечно же.

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

Однако в таком казалось бы простом вопросе как объяснение или пересказ фильма ИИ могут проявлять удивительно высокий уровень галлюцинирования. Я часто спрашиваю у Qwen объяснение серии какого‑либо сериала, когда не до конца понимаю ее смысл. В целом, что касается смысла ИИ интерпретирует вроде как верно, и как мне всегда казалось ее оценки и понимание сюжета базируется не на чистой фантазии, а на мастер‑данных, которые в нее были заложены — то есть общее описание сюжета, отзывы реальных критиков и зрителей. Но что касается пересказа сюжета — тут ИИ может выдавать очень забористые галлюцинации. Например, недавно начал смотреть «Черное зеркало» (поздновато, но все же).

Читать далее

Telegram bot + Giga Chat: подключаем ИИ к своему боту на Python

Уровень сложностиПростой

Всем привет!

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

Читать далее

PEP-810 и тотальная тряска

Уровень сложностиПростой

ТРЯСКА вокруг PEP-810

Относительно недавно приняли PEP-810 и началась ТОТАЛЬНАЯ ТРЯСКА, и я ее не понимаю. PEP-810 - это нововведение, которое добавляет в Python поддержку явных ленивых импортов. Да-да, теперь можно писать...

Читать далее

Как ИИ, цифровые двойники и роботы партнёры трансформируют склады будущего

Уровень сложностиПростой

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

Читать далее

Мастер таблицы по Сетевым Моделям и Протоколам

Уровень сложностиСредний

Это руководство объединяет две методологически корректные таблицы - одну для концептуальных моделей (OSI и TCP/IP) и одну для конкретных протоколов и технологий

Изучить

Flutter антипаттерн: Как setState() превращает ваше приложение в слайд-шоу

Уровень сложностиСредний

Проблема: Многие Flutter-разработчики злоупотребляют setState(), вызывая его даже тогда, когда изменение переменной не влияет на UI. Каждый лишний setState() — это потенциальные 60 FPS → 59 FPS в сложных интерфейсах.

Читать далее

Хватит дебажить через print(): Инструмент для просмотра сырых Telegram Update’ов

Уровень сложностиПростой

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

Каждый, кто писал более-менее сложного бота для Telegram, знаком с циклом «слепого» дебага. Допустим, вам нужно обработать специфический кейс: invoice от платежной системы, сообщение из топика супергруппы или хитрый форвард со скрытым отправителем.

Документация Telegram API обширна, но не всегда дает наглядное представление о том, что конкретно прилетит в вебхук. Обычно мы делаем так:

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