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

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

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

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

Сам себя не потренируешь — никто не потренирует

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 7K
Занимательные задачки C++ *Разработка под Windows *Логические игры
Из песочницы

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

Читать
Всего голосов 22: ↑21 и ↓1 +20
Комментарии 7

Новости

Wine 8.0: что «выросло» в новой версии? Возможности и совместимость с ПО

Время на прочтение 4 мин
Количество просмотров 19K
Блог компании Selectel Open source *Разработка под Linux *Разработка под Windows *Софт

На Хабре публиковалась новость о Wine 8.0, новый релиз был представлен спустя целый год разработки и трех десятков тестовых версий для «обкатки». Наконец, несколько дней назад разработчики представили стабильный релиз Wine 8.0. Работа действительно очень объемная — команда внесла почти 9 000 изменений.

В новой версии стабильно работает множество различного виндового софта. По словам разработчиков, это 5266 программ, но, конечно, на самом деле их может быть значительно больше, особенно если учитывать софт, который работает с проблемами, но все же работает. Давайте посмотрим на ключевые изменения нового релиза и того, что он может предложить пользователям.
Читать дальше →
Всего голосов 98: ↑97 и ↓1 +96
Комментарии 26

Зачем нужен эмулятор retrowin32

Время на прочтение 4 мин
Количество просмотров 6.3K
API *Разработка под Windows *История IT Старое железо
Обзор
Перевод

Самый популярный вопрос о моём эмуляторе Windows retrowin32 (после «Зачем вообще это нужно?») — это вопрос о том, как он работает. Сегодня ответ кажется мне очевидным, но прежде чем я разобрался, он представлял для меня огромную загадку. Поэтому я постараюсь объяснить так, чтобы вам тоже стало понятно.
Читать дальше →
Всего голосов 35: ↑33 и ↓2 +31
Комментарии 3

Как построить WaitGroup на основе 32-разрядного целого числа

Время на прочтение 7 мин
Количество просмотров 1.8K
Блог компании Timeweb Cloud Программирование *Go *Разработка под Linux *Разработка под Windows *
Туториал
Перевод
image

В Go есть приятная утилита для синхронизации, именуемая WaitGroup, которую могут ожидать одна или несколько горутин. Это требуется для конкурентного завершения задач. В других языках обычно действует следующее соглашение по завершению задач: нужно объединять потоки, выполняющие работу. В Go горутины не имеют ни значений, ни дескрипторов, поэтому WaitGroup применяется вместо объединений. Собирание WaitGroup на основе типичных портируемых примитивов – путаное дело, в которое вовлечены конструкторы и деструкторы; также в процессе этой работы приходится управлять временами жизни. Однако, как минимум, под Linux и под Windows, можно построить WaitGroup из целого числа (инициализируемого в значении), во многом как при создании 32-разрядной очереди и 32-разрядного барьера.
Читать дальше →
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 0

Истории

Несоответствия исторических пластов Windows 11 — если копнуть, на дне сохранились даже элементы Windows 3.1

Время на прочтение 5 мин
Количество просмотров 43K
Блог компании Дата-центр «Миран» Интерфейсы *Разработка под Windows *Дизайн Софт
Ретроспектива
Перевод


Спустя несколько лет Windows 11 доросла до более-менее нормального состояния, так что ею с удовольствием пользуется большинство людей. В сентябре вышло обновление Sun Valley (22H2) с давно назревшими изменениями в дизайне. Но достаточно ли их, чтобы устранить исторические несоответствия в UI?

Давайте посмотрим.

Примечание. В данном исследовании используется Windows 11 build 25267, последняя сборка Insider Dev на данный момент (01.01.2023 г).
Читать дальше →
Всего голосов 134: ↑130 и ↓4 +126
Комментарии 335

Почему для открытия меню «Пуск» иногда требуется несколько секунд

Время на прочтение 7 мин
Количество просмотров 19K
Отладка *Реверс-инжиниринг *Разработка под Windows *
Перевод

Обычно я запускаю большинство программ на своём ноутбуке с Windows 10, нажимая клавишу <Win>, после чего ввожу несколько букв имени программы, а затем жму Enter. На моём мощном ноутбуке (SSD и 32 ГБ ОЗУ) этот процесс обычно занимает лишь время, необходимое мне для ввода символов, то есть считанные доли секунды.

Обычно.

Однако иногда он занимает больше, намного больше. Порядка десятков секунд. Торможения непредсказуемы, но недавно мне удалось записать трассировку Event Tracing for Windows (ETW) одной из таких задержек. При помощи людей в Twitter я смог проанализировать трассировку и понять, почему на запуск «Блокнота» требуется примерно минута.

Прежде чем приступать к описанию анализа, мне нужно сделать два заявления: 1) у меня есть достаточное понимание проблемы, но нет решения, и 2) если вы наблюдаете аналогичные симптомы, это не значит, что их причина та же, но я дам советы о том, как понять, в ней ли дело.
Читать дальше →
Всего голосов 62: ↑62 и ↓0 +62
Комментарии 27

Величайшие программисты XXI века. Марк Руссинович и его 65 системных утилит

Время на прочтение 9 мин
Количество просмотров 37K
Блог компании RUVDS.com Системное администрирование *Системное программирование *Разработка под Windows *Софт
Кто из админов не знает утилиты SysInternals (Winternals) для администрирования и диагностики Windows? Кажется, они известны с незапамятных времён. Но не каждый в курсе, что эти незаменимые инструменты написаны вовсе не компанией Microsoft. Скорее наоборот, они написаны вопреки её желанию.

И здесь мы подходим к личности автора, талантливого и суперпродуктивного программиста Марка Руссиновича. Он показал, что один умный парень способен интеллектуально продавить мегакорпорацию. И той придётся заплатить ему огромные деньги, и даже взять на работу. Потому что повторить его программы она не сумела…
Читать дальше →
Всего голосов 121: ↑115 и ↓6 +109
Комментарии 61

JEP-400 или UTF-8 РєРѕРґРёСЂРѕРІРєР° РїРѕ умолчанию

Время на прочтение 9 мин
Количество просмотров 11K
Блог компании JUG Ru Group Программирование *Java *Разработка под Linux *Разработка под Windows *

Не прошло и пяти лет, как в Java 18 докатилось небольшое, но очень ожидаемое и обсуждаемое изменение: теперь во всех стандартных API используется UTF-8 кодировка по умолчанию. Это изменение, которое сделает выражение «Write once, run anywhere» действительно правдой, так как теперь поведение приложения будет еще меньше зависеть от системы, где оно запущено. 

На конференции Joker я рассказал, как развивались события в работе над JEP-400 и как сделать так, чтобы ничего не поломалось после перехода на новые версии JDK. А теперь делюсь с Хабром и видеозаписью доклада, и текстовой версией. Как говорится, помимо двух самых сложных задач в программировании – нейминга и инвалидация кэша, есть ещё две: таймзоны и кодировки. Вот о кодировках и поговорим. Как читается название доклада/поста — разберёмся в конце.

Читать далее
Всего голосов 49: ↑48 и ↓1 +47
Комментарии 20

Звуковой датчик при респавне игрока

Время на прочтение 8 мин
Количество просмотров 3.8K
Программирование *Разработка под Windows *
Из песочницы

Играя в Unreal Tournament (ut99) я использую тактику "ожидание противника в засаде", таких игроков называют camper.

Я мирно cтою за ящиком и слушаю музыку.

Как только раздаётся сигнал "респавна" (воскрешение игрока).
Я говорю: - Привет!

Во время игры я слушаю музыку
Всего голосов 25: ↑22 и ↓3 +19
Комментарии 10

Шаблон приложения Asp .Net Core 6 Web API с предустановкой и настройкой необходимых инструментов

Время на прочтение 7 мин
Количество просмотров 4.8K
Программирование *.NET *Visual Studio *C# *Разработка под Windows *
Туториал

Обычно моя работа связана с разработкой функционала REST веб-сервисов. Чаще всего, разработка эта ведется на базе уже существующих приложений, созданных и настроенных ранее по шаблону Web API в VisualStudio. Создавать новые приложения приходится не часто, последнее созданное мной, было еще на .NET Core 3.1, поэтому, когда возникает подобная задача, приходится тратить время на повторное изучение технологий первоначальной настройки приложения, чтобы оно отвечало всем требованиям бизнес-процесса компании, в которой я работаю. Столкнулся с этой задачей накануне, решил создать шаблон приложения (ссылка на репозиторий GitHub), в котором уже все настроено и готово. Краткое описание процесса привожу в этой статье. Постарался разбить сам процесс на независимые блоки, чтобы для реализации одного из них не приходилось изучать другие. Намеренно подробно освящаю настройку базовых функции, не вдаваясь в описание принципа работы той или иной функции - для более глубокого понимания привожу ссылки на документацию, по которой учился сам. Статья моя будет полезна для новичков в качестве отправной точки для изучения тех или иных функций .Net Core 6, а так же для специалистов, которые как и я, сосредоточены на реализации бизнес-логики приложения и требуется сократить время восстановления в памяти технологии его первоначальной настройки.

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

Ретроразработка драйвера для Windows 3.1

Время на прочтение 6 мин
Количество просмотров 11K
Блог компании RUVDS.com Assembler *Реверс-инжиниринг *Разработка под Windows *Старое железо
Перевод
Word, запущенный в Windows 3.1 с удобным разрешением 1152х864

Много месяцев назад я попробовал свои силы в написании 256-цветного драйвера высокого разрешения для Windows 3.1. Попытка была успешной, но работа пока ещё не завершена. В процессе я заново открыл для себя множество забытых вещей и узнал ещё больше новых. Этот пост основан на заметках, которые я делал по ходу разработки.
Читать дальше →
Всего голосов 80: ↑79 и ↓1 +78
Комментарии 13

7-zip — нет времени спешить

Время на прочтение 12 мин
Количество просмотров 41K
Клиентская оптимизация *C++ *Реверс-инжиниринг *Разработка под Windows *
Из песочницы

Данной заметки не должно было быть, но мы живем не в идеальном мире. Есть много пользователей, что предпочли стандартному проводнику Windows альтернативу и наверное еще больше пользователей архиватора 7-zip. Имеет смысл поделиться с ними, подумал я и вот мы здесь.

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

Что делает обычный эникейщик в подобной ситуации? Конечно же берет в руки первый подвернувшийся профайлер.

Читать далее
Всего голосов 226: ↑225 и ↓1 +224
Комментарии 74

Flutter Flame: глобальная оптимизация производительности игрового движка

Время на прочтение 12 мин
Количество просмотров 2.4K
Разработка мобильных приложений *Разработка игр *Dart *Разработка под Windows *Flutter *
✏️ Технотекст 2022

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

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

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

Git for Windows: вклад в проект с помощью патча

Время на прочтение 15 мин
Количество просмотров 2.5K
WordPress *PowerShell *Git *Системы управления версиями *Разработка под Windows *
Туториал

Существуют разные способы совместной работы над исходным кодом проекта. Так получилось, что сначала я познакомился с тем, как работать с командой «git push», посылая свои изменения в удаленный репозиторий, и как создать на сайте «GitHub» форк для отправки из него запроса на принятие изменений («pull request», сокращенно «PR»). И только после этого я узнал о том, что существует способ обмена изменениями в код с помощью файлов-патчей.

В этой статье я экспериментирую с командой «git diff», создаю тестовый проект и файл-патч из него в программах-оболочках «PowerShell» версии 7 и «Git Bash». Клонирую проект и применяю полученный файл-патч с помощью команды «git apply».

В последней части статьи я показываю, как можно применить программу «Git» для создания файла-патча с изменением в исходный код известного веб-приложения «WordPress». В конце этого примера я создаю сообщение об ошибке (ticket) в системе управления проектом «WordPress» и прикладываю к нему свой файл-патч.

Читать далее
Всего голосов 5: ↑1 и ↓4 -3
Комментарии 5

Кастомизация диалоговых окон WixToolSet на примере windows installer и executable packages

Время на прочтение 13 мин
Количество просмотров 1K
Блог компании InfoWatch Разработка под Windows *

Приветствую!

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

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

Поиск бага регистра, приводящего к вылету Chrome

Время на прочтение 7 мин
Количество просмотров 6K
Программирование *Отладка *Разработка под Windows *
Перевод

«Эй ты, функция. Да, я к тебе обращаюсь. При очистке не забудь, пожалуйста, восстановить все мои регистры. Да, и этот тоже, ты что, думаешь, в Linux попала?»

Вот краткое описание проблемы, с которой я столкнулся. ABI (Application Binary Interface) платформы требует от функций, чтобы они сохраняли значения определённых регистров и восстанавливали их в случае использования, однако набор восстанавливаемых регистров зависит от платформы, и правила в Linux отличаются от правил в Windows. Возможно, поэтому я столкнулся с повреждением регистров Chrome в Windows. Но давайте начнём с самого начала.
Читать дальше →
Всего голосов 53: ↑53 и ↓0 +53
Комментарии 14

Кастомный аллокатор для закрытого 3rd

Время на прочтение 2 мин
Количество просмотров 1.3K
Ненормальное программирование *C++ *Отладка *Реверс-инжиниринг *Разработка под Windows *

Существует ряд ситуаций, когда это имеет смысл. От полного контроля памяти, до вынужденной необходимости. К примеру, одна из возможных ситуаций:
1. Мы используем alignment аллокаторы.
2. Мы перегружаем какой-то класс и данные от нашей 3rd зависимости.
3. 3rd зависимость не использует alignment аллокаторы.

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

Git for Windows: работа с параметром core.autocrlf

Время на прочтение 9 мин
Количество просмотров 3.7K
PowerShell *Git *Системы управления версиями *Разработка под Windows *
Туториал

Одна из настроек программы (системы управления версиями) «Git» называется «core.autocrlf». В этой статье я на практическом примере описываю, что происходит при каждом из трех возможных значений этой настройки. После этого я делаю выводы о том, для чего эта настройка нужна и в каких ситуациях какие ее значения можно использовать.

Всё описанное происходит в операционной системе «Windows 10». Работу с «Git» я показываю на примере работы из командной строки в программе «PowerShell» версии 7. Используемый дистрибутив «Git» называется «Git for Windows».

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

Как выбрать язык программирования и начать карьеру: советы от разработчика, занимающегося наймом

Время на прочтение 12 мин
Количество просмотров 15K
Блог компании Leader-ID Разработка веб-сайтов *Программирование *Разработка мобильных приложений *Разработка под Windows *

Хайп вокруг «войти в IT» привел к тому, что в разработчики и тестировщики потянулись не только студенты профильных вузов, но и люди из других профессий. Не будем сейчас обсуждать правильность подобного выбора в той или иной ситуации, а просто расспросим опытного человека в области разработки о том, как правильно подойти к выбору языка программирования и начать свой карьерный путь, раз вы на это решились или крепко задумались по этому поводу.

Читать далее
Всего голосов 22: ↑16 и ↓6 +10
Комментарии 10

Сохранение изображения в БД C#

Время на прочтение 5 мин
Количество просмотров 5.2K
.NET *Администрирование баз данных *C# *Разработка под Windows *
Туториал

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

Оптимальным выходом из данной ситуации является представление изображения в виде массива байтов byte[]

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

Любой файл можно рассматривать как набор байтов, поэтому массив байтов является результатом чтения файла в виде двоичных данных. Файл также может быть декодирован как определенный формат, например, текстовый файл, результатом которого является строка, или формат сжатого изображения (JPEG, GIF, PNG и т. д.), результатом которого является Bitmap.

Читать далее
Всего голосов 19: ↑1 и ↓18 -17
Комментарии 21

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

Работа