Меня всегда раздражало, что я не могу запустить 64-битную игру на C# под MS-DOS. Сегодня я это исправил.
Рубрика «C#» - 22
Запускаем игру на C# в MS-DOS
2020-01-21 в 13:24, admin, рубрики: .net, C#, безопасники плачут, ненормальное программирование, Программирование, прямой доступ к памятиBlazor: как не дать компоненту заболеть или два подхода для отделения кода от разметки
2020-01-21 в 9:55, admin, рубрики: .net, .net core, Blazor, C#, microsoft, Visual Studio, webassemblyДумаю каждый разработчик, когда приходил на новый проект, думал о том, что было бы не плохо вернуться на машине времени назад и сказать отцам своего проекта, что паттерны нужно не только спрашивать на собеседовании, но и применять на реальном проекте, да я серьезно.
В частности, это наверное на паттерн, а очень хорошее правило, что разметку нужно отделять от кода. Это касается как и старых добрых Web Forms, Asp.Net MVC — кто-нибудь еще пишет разметку на Razor?), так и Angular популярного в суровом enterprise.
Если вы уже давно от безысходности пошли на поводу у фронт эндеров и переехали на новомодные Angular и React, то...
Какую цену мы платим за использование async-await в языках JS – C# – Rust
2020-01-13 в 11:47, admin, рубрики: async/await, C#, javascript, node.js, Rust, zero-cost, бенчмаркинг, высокая производительность, ПрограммированиеПривет, Хабр !
Работая с Javascript / Typescript, я давно заметил, что асинхронное API работает медленней чем аналогичное синхронное, и даже знал что так должно быть. Но на последнем проекте асинхронная работа с файловой системой стала узким местом, и я озаботился замерами.
Известно, что await можно использовать только внутри функций или блоков async, а это значит, что если у вас самый нижний уровень API асинхронный, то придется использовать async/await практически везде, даже там, где оно очевидно не нужно.
К примеру, мы пишем сервисную функцию, которая достает из хранилища объект по ключу. В качестве хранилища мы можем использовать файл, БД, микросервис, то есть медленный источник с асинхронным интерфейсом. Для улучшения производительности — внутри нашей функции мы кэшируем ранее извлеченные объекты (складываем их в Map). По мере работы программы — реальных обращений к хранилищу становится все меньше, объекты отдаются из быстрого кэша, но интерфейс функции остается асинхронным!
Какую цену мне приходится платить за каждый асинхронный вызов?
Результаты тестов удручают...
В «osu!» играй, про ошибки не забывай
2020-01-10 в 9:42, admin, рубрики: .net, C#, OSU!, pvs-studio, Visual Studio, Блог компании PVS-Studio
Приветствуем всех любителей экзотических и не очень ошибок в коде. Сегодня на тестовом стенде PVS-Studio достаточно редкий гость – игра на языке C#. А именно – «osu!». Как обычно: ищем ошибки, думаем, играем.
Читать полностью »
Пишем «калькулятор». Часть II. Решаем уравнения, рендерим в LaTeX, ускоряем функции до сверхсветовой
2020-01-09 в 16:18, admin, рубрики: .net, AngouriMath, C#, math, калькулятор, математика, ПрограммированиеПривет!
Итак, в первой части мы уже неплохо поработали, сделав производную, упрощение, и компиляцию. Так, а что еще должен уметь наш простенький калькулятор? Ну хотя бы уравнения вида
точно должен решать. А еще красиво нарисовать это дело в латексе, и будет прямо хорошо! Погнали!
О работе ПК на примере Windows 10 и клавиатуры ч. 1
2020-01-09 в 14:37, admin, рубрики: C, C#, c++, windows, архитектура, низкоуровневое программирование, операционные системы, разработка под windows, системное программирование
Меня зовут Андрей Артемьев, я работаю в Microsoft над ядром ОС Windows 10, ранее я работал над Windows 10x (WCOS), XBox, Windows Phone и Microsoft Edge. Я хочу популярно в образовательных целях рассказать о том как работает компьютер на примере клавиатурного ввода и Windows 10. Данный цикл статей рассчитан в первую очередь на студентов технических специальностей. Мы рассмотрим какой путь проходит информация о нажатой клавише от клавиатуры до отображения в Notepad.exe. В виду обширности и междисциплинарности темы в статьях могут быть неточности, о которых сообщайте в комментариях. Какая-то информация может быть устаревшей в виду скорости с которой развивается Windows.
Читать полностью »
Добрый день, если вы используете в коммерческих проектах "бесплатную" библитотеку
Extended WPF Toolkit, то самое время форкнуть версию 3.6.0 или приготовиться к покупке платной версии, т.к. примерно месяц назад поменялась лицензия данной библиотеки.
Статическая типизация не обязательно требует церемоний
2020-01-04 в 13:35, admin, рубрики: C#, F#, haskell, javascript, всё еще никто не читает теги, ложная дихотомия, перевод, Программирование, Совершенный кодПримечание переводчика: в текущий момент я подготавливаю материалы для обещанной статьи по монадам. К сожалению, это занимает довольно много времени, не говоря о том, что я всё же должен заниматься основной работой и уделять время семье, но процесс идёт. А пока представляю вам перевод небольшой свежей заметки от замечательного товарища Mark Seemann'а, которая мне показалась любопытной.
Я часто становлюсь участником длительных и жарких дебатов на тему статической типизации против динамической. Сам я определенно отношу себя к сторонникам статической типизации, но эта статья не о достоинствах статической типизации. Цель статьи — устранить распространённое заблуждение насчет статически типизированных языков.
Церемонность
Люди, которые предпочитают динамически типизированные языки статически типизированным, часто подчеркивают тот факт, что отсутствие церемонности делает их продуктивнее. Это звучит логично, однако, это ложная дихотомия.
Церемонность — это то, что вы делаете до того, как начнете делать то, что вы действительно собирались сделать.
Venkat Subramaniam
Динамически типизированные языки производят такое впечатление, что им не требуются особые церемонии, но отсюда нельзя сделать вывод что статически типизированные языки их требуют. К сожалению, все мейнстримные статически типизированные языки относятся к одной и той же семье, и они требуют церемонности. Я думаю, что люди экстраполируют то, что они о них знают, ложно заключая что все статически типизированные языки обязательно идут в комплекте с оверхедом церемонности.
Это привело меня к мысли о том, что существует злосчастная Зона Церемонности:
Конечно же, эта диаграмма всего лишь упрощение, но я надеюсь, что она демонстрирует суть. C++, Java и C♯ — языки, которые требуют церемонности. Справа от них находятся языки, которые мы могли бы назвать транс-церемониальными, включая F♯ и Haskell.
Пишем «калькулятор» на C#. Вычисление значения, производная, упрощение, и другие гуси
2020-01-03 в 12:04, admin, рубрики: AngouriMath, C#, math, выражение, математикаПривет!
Калькулятор у нас почему-то ассоциируется с чем-то, что должен написать каждый новичок. Возможно потому, что исторически компьютеры с той целью и создавались, чтобы считать. Но мы будем писать непростой калькулятор, не sympy конечно, но чтобы умел базовые алгебраические операции, типа дифференциирования, симплификации, а также фичи типа компиляции для ускорения вычислений.
Для тех, кому нужно срочно что-нибудь склонировать, ссылка на репозиторий.
Берем оставшиеся с нового года печеньки, и погнали!
Читать полностью »
Keylogger для Windows с изменением прав в DACL
2020-01-01 в 17:00, admin, рубрики: .net, acl, C#, keylogger, WinAPI, разработка под windowsЗдесь будет рассмотрено создание Keylogger на базе .Net C# с вызовами системных функций. Сами системные функции в кратце описываются, но лучше прочитать официальную документацию от Microsoft. Ссылка на репозиторий с рабочей сборкой приведена в конце, так же как и ссылка на доккументацию.
Что будет реализовано:
- Логирование ввода с клавиатуры.
- Логирование активного окна.
- Блокировка процесса от пользователя без привилегий администратора.
- Остановка процесса по сочетанию клавиш.