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

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

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

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

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

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

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

Обычно.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Истории

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

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

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

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

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

Время на прочтение6 мин
Количество просмотров12K
Word, запущенный в Windows 3.1 с удобным разрешением 1152х864

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Существуют разные способы совместной работы над исходным кодом проекта. Так получилось, что сначала я познакомился с тем, как работать с командой «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 мин
Количество просмотров2.3K

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Port Knocking для Windows

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

Мне довольно часто приходится настраивать "одинокие" терминальные сервера(и не только терминальные) в "Облаках", с "легким, быстрым" доступом к нему по RDP.

Все объяснения для пользователей\заказчиков, что такие сервера должны быть доступны только с доверенных IP или через VPN воспринимаются "в штыки" и тогда приходится рисковать...

Конечно сервер защищается от Bruteforce(а), используются парольная политика, нестандартный порт, но все равно сервер постоянно под угрозой, в среднем в месяц можно увидеть по 15000 попыток подобрать пароль.

Такое обстоятельство дел заставило меня подумать о простом и действенном способе защиты сервера и в то же время этот способ не должен усложнить пользователям подключение к серверу.

Первое что пришло в голову - Port Knocking, использую его на RouterOS, но беглое гугление показало что для Windows не существует подобного штатного функционала, поиск сторонних средств которые могли бы помочь организовать задуманное не дал результата,  больше покопавшись нашел только странные и страшные поделки на Java не внушавшие доверия.

Тогда решил написать PortKnocking для Windows. Написать его решил на PowerShell, чтоб не пришлось устанавливать на сервер дополнительно Java или Python.

Т.к. есть опыт c телеграм ботами(@SuperMon_Bot), решил добавить и информирование о работе PortKnocking через телеграм.

Определился, что вся задумка должна состоять из нескольких скриптов.

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

SiteWatcher — наблюдаем за изменениями на страницах сайтов

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

Я не являюсь разработчиком (я себя таковым не считаю) и не занимаюсь программированием для заработка (хотя раньше такое и было), но иногда возникает острое желание чего-нибудь написать для себя, чтоб оно работало, как надо мне, чтоб выглядело, как я хочу, и чтоб была возможность что-то изменить в поведении программы/скрипта/сайта.

В очередной такой "приступ" и было решено написать SiteWatcher. А чтобы труд не пропал зря, решил опубликовать свой проект. Может кому понадобится сама программа или что-то из её кода.

Читать далее
Всего голосов 30: ↑29 и ↓1+28
Комментарии23

Windows 10, PowerShell: файл сертификата открытого ключа (X.509) изнутри

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

Немного о том, как устроено в «Windows 10» хранение сертификатов открытого ключа, а также о том, как можно просматривать хранилища сертификатов и свойства отдельных сертификатов.

В двух словах рассказано о том, какие инструменты можно использовать для работы с сертификатами открытого ключа, в частности — про сохраненные консоли certlm.msc, certmgr.msc и работу с сертификатами из программы-оболочки PowerShell.

На практическом примере показано, как из командной строки PowerShell можно просмотреть свойства определенного сертификата и как расшифровывать свойства, в которых хранятся «сырые» данные в виде байтовых массивов. Коротко рассказано про язык описания данных ASN.1, способ сериализации DER и стандартизированное дерево идентификаторов объектов OID. Всё это показано на практическом примере.

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

Микро автоматизация банка [обмен данными между банком и ИФНС в исполнение 440-п ЦБ РФ]

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

С этой задачей я столкнулся абсолютно случайно. Мне ее подкинул старый знакомый, сотрудник ИТ не очень крупного универсального Банка, уверенно входящего в ТОП 100, но находящийся ближе к концу данного списка. Задача относится именно к Розничному сегменту бизнеса. В Банке есть команда своих программистов, но они расписаны на несколько месяцев вперед на исполнение более крупных и приоритетных (с точки зрения «бизнеса» задач. А сама задача организации обмена согласно 440-п ЦБ РФ, упала на моего знакомого неформально, когда пользователи пожаловались на свою тяжелую внутрибанковскую жизнь и он по доброте душевной решил им помочь. 

Этот пост Вам интересен, если:

Вы сотрудник Банка;
Вы работаете в ИТ подразделения Банка;
Задача, о которой пойдет речь, еще не автоматизирована;
Банк обслуживает физических лиц;
В Банке используется ПО АБС «Диасофт»;
В Банке используется ПО КОМИТА;
Банк ежедневно взаимодействует с ИФНС согласно 440-п ЦБ РФ.

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

От Web до Desktop за 2 недели: технология Electron на практике

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

Если у вас есть компьютер и вы используете его по назначению, то скорее всего вы так или иначе работали с приложениями на Electron (даже если об этом не знали).

Меня зовут Сергей Володин, я руковожу командой разработки VK WorkMail. В этой статье я расскажу, как на основе Electron мы за две недели создали PoC кроссплатформенного настольного приложения Почты, что узнали о технологии и к каким выводам пришли.

Читать далее
Всего голосов 34: ↑30 и ↓4+26
Комментарии31