Как стать автором
Обновить
48.7

Разработка под Windows *

Разработка под операционные системы от Microsoft

Сначала показывать
Порог рейтинга
Уровень сложности

PowerShell: парсер HTML, устаревшие методы

Время на прочтение5 мин
Количество просмотров5.8K

Обзор двух устаревших методов преобразования кода на языке HTML в объект (HTML-парсер) на скриптовом языке PowerShell в операционной системе Windows 10.

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии5

Отладка драйвера Windows

Время на прочтение16 мин
Количество просмотров18K

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

Хочу ронять Windows в BSOD
Всего голосов 57: ↑57 и ↓0+57
Комментарии64

Flutter на Python

Время на прочтение3 мин
Количество просмотров32K


Приветствую вас, дорогие любители и знатоки Python! Знали ли вы, что можно разрабатывать кросплатформенные приложения, используя всю мощь и выразительность своего любимого змеиного языка в связке с ныне популярным фреймворком Flutter? Оказывается, такая возможность есть! Всех заинтересовавшихся прошу под кат за деталями.
Читать дальше →
Всего голосов 31: ↑29 и ↓2+27
Комментарии33

Миниатюрное десктопное GUI приложение на PHP — 2 МБ хватит для всех

Время на прочтение6 мин
Количество просмотров16K

Я часто заморачиваюсь на тему минимизации размера своих GUI приложений. Прошлая моя статья была про Nuklear. Но сейчас захотелось более современных технологий. Чтоб HTML5, CSS3 и PHP. Чтоб приложение ни от чего не зависело, т.е. построено по принципу "всё включено". И чтоб конечный размер приложения не превысил 2 МБ. Получится ли?

В Linux я часто пользуюсь утилитой df. Мне её очень не хватает в Windows, а искать аналоги лень. Так что было сделано волевое решение сделать свою, на РНР 5, с бутстрапом и JQuery.

Читать далее
Всего голосов 33: ↑32 и ↓1+31
Комментарии58

Истории

Домашний CICD: Docker, Jenkins и Nexus3

Время на прочтение7 мин
Количество просмотров24K

Практика CI/CD широко распространена в современном мире и представить ручной деплой у FAANG с их бесчисленными ежедневными изменениями просто невозможно. То же будет справедливо и для продуктовых компаний: десятки ручных деплоев в день вытянуть можно, но это потребует колоссальных ресурсов.

Освоить эту практику можно дома, в среде, где что-то сломать не страшно, ведь всегда можно начать все с самого начала. В этом гайде рассмотрим как развернуть и настроить Jenkins в Docker, как создать агентов для сборки, а еще запушим образ в приватный Nexus.

Настроить CI/CD этому господину
Всего голосов 9: ↑7 и ↓2+5
Комментарии1

Python GUI. Обзор Hero Animation в библиотеке KivyMD

Время на прочтение5 мин
Количество просмотров7.3K

Приветствую вас, дорогие любители и знатоки Python! Сегодня как всегда будем делать обзор библиотеки для кроссплатформенной разработки, которая реализует набор виджетов в стиле Google Material Design для фреймворка Kivy — KivyMD. В этой статье рассмотрим пример создания и управления Hero анимациями, которые недавно были добавлены в библиотеку KivyMD.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 3. Первый подход к асинхронности

Время на прочтение11 мин
Количество просмотров11K

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

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

Но, к счастью, существует и третий вариант — кооперативная многозадачность с помощью системного вызова select и его аналогов (poll, epoll и других). Он позволяет мультеплексировать несколько задач в одном потоке выполнения и в сущности является обычной синхронной программой. А потому никаких дополнительных трат процессорного времени и времени разработчиков не требуется.

Читать далее
Всего голосов 15: ↑13 и ↓2+11
Комментарии4

19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 2. Блокирующие сокеты и многозадачность

Время на прочтение13 мин
Количество просмотров15K

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

Читать далее
Всего голосов 10: ↑9 и ↓1+8
Комментарии1

19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 1. Введение

Время на прочтение9 мин
Количество просмотров34K

Дабы исчерпать до дна тему сокетов в Python я решил изучить все возможные способы их использования в данном языке. Чтобы всех их можно было испытать и попробовать на зуб, были созданы 19 версий простого эхо-сервера: от примитивного использования класса socket до asyncio. Блокирующие и неблокирующие сокеты, процессы и потоки, select'ы и selector'ы, коллбеки и сопрограммы — все эти темы расположены в эволюционном порядке, чтобы один пример плавно перетекал в другой.

Отдельно разобрано появление асинхронности в Python. На примерах детально показано, как и зачем появились итераторы, из них — генераторы, сопрограммы. Ближе к концу построен учебный макет библиотеки asyncio с минимально необходимым кодом, чтобы любой (даже такой, как я) смог разобраться, как на самом деле устроена асинхронность, как там все внутри работает.

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

Читать далее
Всего голосов 20: ↑18 и ↓2+16
Комментарии5

Брутфорс соседского Wi-Fi (в исключительно исследовательских целях)

Время на прочтение7 мин
Количество просмотров69K

Надежные и постоянно меняющиеся пароли - это здорово. Особенно когда они меняются и на Wi-Fi роутере и WPS на нем вообще отключен. В этом посте: сколько занимает перебор WPS pin и есть ли у этого практическое применение? А еще напишем программу для брутфорса на C#

Подобрать пароль
Всего голосов 33: ↑25 и ↓8+17
Комментарии51

Соглашения о вызовах

Время на прочтение3 мин
Количество просмотров15K

Это стандартизированные методы реализации и вызова функций.

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

Читать далее
Всего голосов 15: ↑13 и ↓2+11
Комментарии12

Прагматичный набор модификаций для Windows 10 на старом железе

Время на прочтение7 мин
Количество просмотров40K

В статьях про раздувание софта часто упоминают лаги Windows 10/11. Главная причина — ожирение кода в новых версиях. Для работы ОС с каждым годом требуется всё больше ресурсов. После засорения системы приходится ждать 10–20 секунд, пока отрисуются пункты контекстного меню по правой кнопке…

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

Но что делать, если приходится поневоле сидеть под Win10/11? Тогда остаётся одно — бороться с ожирением софта хирургическим путём. А именно, отключить ненужные модули и компоненты, развестистый GUI, анимацию и спецэффекты, удалить лишний софт, почистить реестр. Другими словами, спустить жирок из системы. После мануальных процедур винда начинает шевелиться значительно бодрее.
Читать дальше →
Всего голосов 131: ↑76 и ↓55+21
Комментарии114

Проверка проекта Orleans статическим анализатором PVS-Studio

Время на прочтение11 мин
Количество просмотров1.9K

Orleans – кроссплатформенный фреймворк для создания масштабируемых облачных приложений. Это ПО разработано компанией Microsoft, проекты которой не раз проверялись анализатором PVS-Studio. Посмотрим, сколько подозрительных мест удастся найти в этот раз.

Читать далее
Всего голосов 18: ↑15 и ↓3+12
Комментарии2

Ближайшие события

Как незаметно запускать виртуальный Linux на QEMU

Время на прочтение10 мин
Количество просмотров15K

О том, как замаскировать QEMU с Linux под приложение на Windows.

В некоторых задачах Linux просто необходим. И самым ярким тому примером на сегодня является наличие системы WSL. Однако не везде ею можно пользоваться. Некоторые предприятия принципиально застревают на Win7. И их можно понять. Эта система не столь требовательна к железу (особенно к видео-подсистеме), не ломится чуть-что в интернет, да и в Ultimate варианте вообще не требует подключения к глобальной сети.

В большей части случаев можно обойтись родными для системы средствами разработки и сторонними инструментами. Но представьте себе, что для работы Вашего комплекса нужно собрать вместе более десятка не маленьких opensource проектов с перекрёстными зависимостями. Причём часть из них написана под python (и тут никаких проблем нет - виртуальная среда и всё ок), а часть собирается в бинарные исполняшки, от которых зависят другие модули. И тут может быть как минимум три решения.

Читать далее
Всего голосов 13: ↑12 и ↓1+11
Комментарии34

Как определить версию Windows?

Время на прочтение5 мин
Количество просмотров20K

Как же определить версию Windows, работающую в корпоративном окружении?

Вопрос кажется простым, правда?

Microsoft позволяет определить номер версии Windows различными способами:

  • Существуют значения в реестре, которым отчаянно не хватает документации.
  • Есть множество командлетов PowerShell, вызовов Windows API и т. п.
  • Также есть варианты для конечного пользователя, например, команда winver, которая вызывает всплывающее окно с версией Windows.
  • И много других способов…

Разобраться во всём этом вам поможет наш пост.
Читать дальше →
Всего голосов 44: ↑37 и ↓7+30
Комментарии16

Новый механизм мониторинга компиляции в PVS-Studio для Windows

Время на прочтение12 мин
Количество просмотров1.8K

В релизе PVS-Studio 7.18 утилита мониторинга компиляции для Windows получила новый механизм, который позволяет полностью устранить пропуски запусков компиляторов. В этой статье мы напомним, как наш анализатор справляется с разнообразными системами сборки и расскажем о реализации нового режима Wrap Compilers.


0954_CLMonitor_IFEO_ru/image1.png

Читать дальше →
Всего голосов 12: ↑10 и ↓2+8
Комментарии6

Надгробья современного геймдева. Добрососедское

Время на прочтение8 мин
Количество просмотров20K

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

Формально, окончательное решение добрососедского вопроса перекладывается... на Минимальные Системные Требования. Потому, что МСТ должно хватать на работу ОС + приложения - и оставаться ещё капельку на всё остальное.
Или на инструкции по установке. Поставил наше приложение - удали все чужие.
Или на FAQ на сайте игры. Поставил наше приложение, но оно не работает? Удали все чужие.
На что угодно, кроме здравого смысла и умеривания своих неадекватных хотелок.

Статья чуть более общего профиля, чем обычно. Но длинные слова в ней всё ещё огорчают Винни-Пуха.

Вы готовы к ужасному?

"Да, Капитан!"
Всего голосов 140: ↑116 и ↓24+92
Комментарии148

Кнопка “Mute” не выключает микрофон

Время на прочтение3 мин
Количество просмотров49K


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

Однако нативной программе ничто не мешает даже после нажатия кнопки “Mute” снимать звук с микрофона и передавать его на сервер. Некоторые программы так и делают.
Читать дальше →
Всего голосов 70: ↑69 и ↓1+68
Комментарии186

Пишем свой Credential Provider на C# для авторизации в Windows

Время на прочтение9 мин
Количество просмотров12K

Credential Provider, используется для передачи пользовательских учетных данных в стек безопасности Windows. По умолчанию в системе присутствуют поставщики для входа через пароль, PIN-код, смарт-карту и Windows Hello. Однако что делать если они нам не подходят?

Пишем свой Credential Provider
Всего голосов 32: ↑32 и ↓0+32
Комментарии10

Раз-два и в дамки: минимакс с альфа-бета отсечением

Время на прочтение5 мин
Количество просмотров5K

Дисклеймер: это моя первая статья на Хабре и я не программист.

Всем привет! Под катом небольшая история о том, как я делал свой первый, большой, самостоятельный (если его так можно назвать) "проект" – курсовую работу на тему "Игра в поддавки с компьютером". Если вам интересны алгоритмы для антагонистичесих игр, С# и особенности студенческой жизни – welcome!

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии14

Вклад авторов

Работа