Томными зимними вечерами, когда солнце лениво пробегало сквозь пелену дней — я нашел в себе силы заняться реализацией давней мечты: разобраться как же устроены процессоры. Эта мечта привела меня к написанию формально спецификации RISC-V процессора. Проект на Github
Рубрика «.net core» - 4
Как я пришел к формальной спецификации RISC-V процессора на F#
2019-11-01 в 13:43, admin, рубрики: .net, .net core, cpu, F#, formal specification, github, risc-v, Анализ и проектирование систем, Процессоры, функциональное программированиеDeepFake своими руками [часть 1]
2019-10-06 в 23:10, admin, рубрики: .net, .net core, .net framework 4.6.1, .net standard, C#, Deepfake, dlib, Компьютерное зрение, машинное обучениеНе смотря на все прелести интернета, у него есть много минусов, и один из самых ужасных – это введения людей в заблуждение. Кликбейт, монтаж фотографий, ложные новости – все эти инструменты активно используются для обмана обычных пользователей в мировой сети, но в последние годы набирает обороты новый потенциально опасный инструмент, известный как DeepFake.
Меня данная технология заинтересовала недавно. Впервые о ней я узнал из доклада одного из спикеров на “AI Conference 2018”. Там демонстрировалось видео, в котором по аудиозаписи алгоритм сгенерировал видео с обращением Барака Обамы. Ссылка на подборку видео созданных с помощью этой технологии. Результаты меня сильно вдохновили, и мною было принято решение лучше разобраться с данной технологией, чтобы в будущем противодействовать ей. Для этого я решил написать DeepFake на языке C#. В итоге получил такой результат.
![DeepFake своими руками [часть 1] - 1 image](https://www.pvsm.ru/images/2019/10/07/DeepFake-svoimi-rukami-chast-1.jpeg)
Приятного чтения!
Читать полностью »
Грокаем DLR
2019-10-04 в 15:30, admin, рубрики: .net, .net core, C#, DLR, dynamic programming, IPC, visual basic, ПрограммированиеПредисловие переводчика
Это скорее вольный пересказ, а не перевод. Я включил в эту статью только те части оригинала, которые имеют непосредственное отношение к внутренним механизмам работы DLR или объясняют важные идеи. Примечания будут заключены в квадратные скобки
Многие .NET разработчики слышали про Dynamic Language Runtime (DLR), но почти ничего о нем не знают. Разработчики, пишущие на языках типа C# или Visual Basic, избегают языков с динамической типизацией из-за боязни исторически связанных с ними проблем с масштабируемостью. Также их беспокоит тот факт, что языки типа Python или Ruby не выполняют проверку типов во время компиляции, что может привести к сложным для поиска и исправления ошибкам в рантайме. Это обоснованные опасения, которые могут объяснить, почему DLR не пользуется популярностью среди основной массы .NET разработчиков даже спустя два года после официального релиза [статья довольно старая, но с тех пор ничего не изменилось]. В конце концов, любой .NET Runtime, содержащий в себе слова Dynamic и Language в своем названии, должен предназначаться строго для поддержки таких языков, как Python, правильно?
Притормозите. В то время как DLR действительно была задумана для поддержки «Iron» реализации Python и Ruby в .NET Framework, её архитектура предоставляет гораздо более глубокие абстракции.
BudgetTracker — ещё один open-source инструмент для личного учета финансов
2019-09-20 в 15:17, admin, рубрики: .net, .net core, C#, finance, open source, svelte, финансы в ITПочему?
Несколько лет назад я заинтересовался получением пассивного дохода и решил попробовать инвестировать с помощью p2b-площадок. Через некоторое время стало заметно, что денежные средства оказались очень сильно фрагментированы по площадкам, банкам, долгам, и это затрудняло понимание ситуации. Я не мог ответить на два самых главных вопроса:
Сколько у меня денег?
Какой тренд? Я богатею, или беднею?
![]()
Поддержка аппаратно-специфичных инструкций в .NET Core (теперь не только SIMD)
2019-09-16 в 18:53, admin, рубрики: .net, .net core, C#, clrium, Блог компании Семинары Станислава Сидристого, параллельное программирование, ПрограммированиеВведение
Несколько лет назад, мы решили, что настало время поддержать SIMD код в .NET. Мы представили пространство имен System.Numerics с типами Vector2, Vector3,Vector4 и Vector<T>. Эти типы представляют API общего назначения для создания, доступа и оперирования векторными инструкциями, когда это возможно. Они, так же, обеспечивают программную совместимость для тех случаев, где аппаратное обеспечение не поддерживает подходящих инструкций. Это позволило, с минимальным рефакторингом, векторизовать ряд алгоритмов. Как бы там ни было, общность такого подхода делает его сложным в применении с целью получения полного преимущество от всех доступных, на современном аппаратном обеспечении, векторных инструкций. В дополнении, современное аппаратное обеспечение предоставляет ряд специализированных, не векторных, инструкций, которые могут значительно улучшать производительность. В этой статье я расскажу, как мы обошли эти ограничения в .NET Core 3.0.

Примечание: пока ещё нет устоявшегося термина для перевода Intrisics. В конце статьи есть голосовалка за вариант перевода. Если выберем хороший вариант, статью изменим
Подробно о dynamic: подковерные игры компилятора, утечка памяти, нюансы производительности
2019-09-12 в 4:55, admin, рубрики: .net, .net core, C#, dynamic, memory leak, optimization, ПрограммированиеПрелюдия
Рассмотрим следующий код:
//Any native COM object
var comType = Type.GetTypeFromCLSID(new Guid("E13B6688-3F39-11D0-96F6-00A0C9191601"));
while (true)
{
dynamic com = Activator.CreateInstance(comType);
//do some work
Marshal.FinalReleaseComObject(com);
}
Сигнатура метода Marshal.FinalReleaseComObject выглядит следующим образом:
public static int FinalReleaseComObject(Object o)
Создаем простой COM-объект, выполняем какую-то работу и тут же его освобождаем. Казалось бы, что может пойти не так? Да, создание объекта внутри бесконечного цикла — не очень хорошая практика, но GC возьмет на себя всю грязную работу. Реальность оказывается несколько иной:

Чтобы понять, почему утекает память, нужно разобраться в том, как работает dynamic. На Хабре уже есть несколько статей на эту тему, например эта, но они не углубляются в детали реализации, так что проведем собственное исследование.
Оптимизация производительности .NET (C#) приложений
2019-09-10 в 15:27, admin, рубрики: .net, .net core, benchmarks, C#, performance, performance optimization
Статей с подобным заголовком достаточно много, поэтому постараюсь избежать банальных тем. Надеюсь, что даже очень опытные разработчики найдут здесь что-то полезное для себя. В данной статье будут рассмотрены только простые механизмы и подходы к оптимизации, которые позволят применить их, затратив минимум усилий. И эти изменения не увеличат энтропию вашего кода. В статье не будет уделено внимание что и когда нужно оптимизировать и как искать проблемы производительности, эта статья скорее о подходе к написанию кода в целом.
Читать полностью »
Использование DbTool для засеивания (seeding) баз данных в приложениях .NET (Core)
2019-09-06 в 17:41, admin, рубрики: .net, .net core, ASP, open source, базы данныхПредставляем вашему вниманию DbTool — утилиту командной строки для экспорта данных БД в различные форматы и open-source библиотеку Korzh.DbUtils, использование которых может значительно упростить первоначальное "засевание" базы данных в вашем .NET (Core) приложении.
С помощью этого набора инструментов вы сможете:
- Сохранить данные из вашей локальной БД в файлы некого текстового формата (XML, JSON), которые легко подключить к проекту.
- Использовать сохранненные файлы для заполнения базы данных самого приложения при его первом старте.
Ниже я расскажу зачем все это нужно, как происталлировать и настроить данные инструменты и опишу детальный сценарий их использования.
Реализация пула соединений в WCF для .Net Core с использованием HttpClientFactory
2019-08-28 в 9:36, admin, рубрики: .net, .net core, C#, HttpClientFactory, wcf, Блог компании True EngineeringНаш продукт разрабатывается на платформе .Net Core 2.2 с использованием WCF 4.5 для взаимодействия с SOAP сервисом клиента. В процессе работы сервиса разработчики шины данных заметили высокую нагрузку на сервер. Далее стали появляться проблемы с доступом к сервису. В результате выяснили, что причина кроется в количестве активных соединений.
Существует такая проблема как connection exhaustion. Она может возникать из-за нехватки доступных портов при установлении соединения или ограничения на количество соединений с внешним или внутренним сервисом. Есть два варианта решения:
• Увеличение доступных ресурсов,
• Уменьшение количества соединений.
Первый вариант нам недоступен, так как увеличение ресурсов может производится только на стороне сервис-провайдера. Поэтому решили искать варианты оптимизации количества соединений. В этой статье расскажем о найденном решении.
PVS-Studio — двигатель прогресса
2019-08-20 в 13:26, admin, рубрики: .net core, C#, c++, code analysis, code review, coref, java, microsoft, open source, programming, pvs-studio, static code analysis, Блог компании PVS-Studio, открытый исходный код, статический анализ кода
Команда PVS-Studio и наш продукт делают большой вклад в развитие качества программного обеспечения. Причем, помимо явного обнаружения ошибок в закрытых и открытых проектах, происходит косвенный вклад в развитие компиляторов и других инструментов анализа кода. Нам приятно, что мы иногда являемся законодателями мод и мы решили посвятить этому небольшую заметку в нашем блоге.
Читать полностью »



