.NET — TechCave

.NET

Стена группы

Загрузка...
Den
3 дня назад
#

О том, как из C# перешел в Elixir/Phoenix



Как-то раз пришлось мне менять работу. До этого я работал только с языками типа Python, C++, C# и ещё парочкой подобных. А теперь пришлось начать работать с функциональным языком. Первые впечатления были «да что за фигня?». Однако у меня получилось достаточно быстро адаптироваться. Далее я расскажу об основных моментах, к которым пришлось привыкнуть или которые пришлось понять, чтобы начать писать быстро и адекватно.

Источник
Загрузка...
Den
3 дня назад
#

Математика в Gamedev по-простому. Кривые и дождь в Unity



Всем привет! Меня зовут Гриша, и я основатель CGDevs. Продолжим говорить про математику что ли. Пожалуй, основное применение математики в геймдеве и компьютерной графики в целом – это VFX. Вот и поговорим про один такой эффект – дождь, а точнее про его основную часть, требующую математики – рябь на поверхности. Последовательно напишем шейдер для ряби на поверхности, и разберём его математику. Если интересно – добро пожаловать под кат. Гитхаб проект прилагается.



Источник
Загрузка...
Den
3 дня назад
#

Небольшой обзор SIMD в .NET/C#



Вашему вниманию предлагается небольшой обзор возможностей векторизации алгоритмов в .NET Framework и .NETCORE. Цель статьи познакомить с этими приёмами тех, кто их вообще не знал и показать, что .NET не сильно отстаёт от «настоящих, компилируемых» языков для нативной
разработки.



Источник
Загрузка...
3 дня назад
#

Дилетант в opensource — lessons learned за 3 года



Давно, в 2014 году я сделал для себя небольшую утилитку, чтобы перегонять C#-вьюмодели в TypeScript-код. Она сэкономила мне немало времени и нервов. И вот, в сентябре 2015 я решил оформить свои «эксперименты на коленке» в некую удобоваримую форму и вылить их на GitHub. Так началось моё дилетантское участие в разработке открытого ПО. Время шло. И вот, вчера в репозитории с этим проектом, наконец, появился юбилейный, трёхсотый коммит. В связи с этим знаменательным событием, я бы хотел поделиться своим дилетантским опытом о том, с чем придётся столкнуться, если вам вдруг взбредёт в голову разработать что-то «на благо развития индустрии». Я изложу некоторые цифры, расскажу несколько прохладных историй, а так же поделюсь впечатлениями каково это — написать и поддерживать opensource-проект без мам, пап и кредитов поддержки компании, оплаты и… и свободного времени. Заходите под кат, присаживайтесь, мы начинаем.



Источник
Загрузка...
Den
6 дней назад
#

Создаём систему электронного хронометража гонок



185282-11516937085b2ed4ea7e36b



По будням, я уже 17 лет занимаюсь разработкой корпоративного софта, у меня было много разных хобби, но в итоге нашёл то, что держит уже 5 лет и не собирается отпускать. С 2013 года большую часть свободного времени я посвящаю мотокроссу и эндуро на внедорожных мотоциклах, в том числе регулярно участвовал в любительских соревнованиях. После неудачного дропа в июне 2017 года я оказался в больнице с полным переломом правой плечевой кости. Вышел из больницы, пришёл в себя и стало ясно, что ездить не получится ещё месяца два — три, а привычка к активной деятельности осталась. Тогда и решил, что надо попробовать самому организовать гонку для своих друзей. С технической точки зрения меня интересовал хронометраж, о том как я делаю собственную систему и провожу гонки читайте под катом.



Источник
Загрузка...
6 дней назад
#

Математика в Gamedev по-простому. Триангуляции и Triangle.Net в Unity



Всем привет! Меня зовут Гриша, и я основатель CGDevs. Математика – очень крутой инструмент при разработке игр. Но если скажем без понимания
векторов и
матриц обойтись в принципе сложно, то алгоритмы триангуляций не столь обязательная вещь, но с помощью них решается достаточно большое количество интересных задач. Сегодня хотелось бы поговорить про достаточно важный инструмент в вычислительной геометрии, такой как триангуляции и их применение в игровой индустрии. Кроме того, я написал порт и немного обёрток великолепной библиотеки Triangle.Net для Unity. Если интересно – добро пожаловать под кат. Ссылка на гитхаб прилагается.



Источник
Загрузка...
7 дней назад
#

Асинхронный рассинхрон: антипаттерны в работе с async/await в .NET



Кто из нас не косячит? Я регулярно встречаюсь с ошибками в асинхронном коде и делаю их сам. Чтобы прекратить это колесо Сансары делюсь с вами самыми типичными косяками из тех, которые иногда довольно сложно отловить и починить.





Источник
Загрузка...
22 дня назад
#

Стоит ли сохранять длину массива в локальную переменную в C#



Очень часто замечаю, что люди пишут вот так:

var length = array.Length;
for (int i = 0; i < length; i++) {
    //do smth
}


Пишут они это в надежде ускорить цикл, думая что создавая локальную переменную избавляют CLR от необходимости вызывать каждый раз геттер для Array.Length. Я решил раз и навсегда для себя понять стоит так делать или можно сэкономить своё время и написать без временной переменной.

Источник
Загрузка...
Den
22 дня назад
#

Чат-бот обретает слух, или страдания дилетанта





Не так давно я презентовал синтаксического чат-бота по имени Ваня Разумный (
«Создание ИИ методом «глокой куздры». Интеллектуальная одиссея»). Последующий очевидный этап, который, подобно другим создателям искусственного разума, захотелось пройти – даровать детищу голос. Казалось бы, чего проще?

Пришлось, однако, помучиться. Некоторые проблемы решить так и не удалось – безусловно, по причине дилетантизма. А впрочем, сомневаюсь, что и профессионалам интересно решать сопутствующие задачки. Никому это не интересно, вот и мне не хотелось. Я надеялся по-быстрому прикрутить звук и перейти к последующим задумкам…

Но обо всем по порядку.

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

Источник
Загрузка...
22 дня назад
#

Поддержка очередей в Hangfire



Hangfire — это библиотека для .net (core), позволяющая асинхронно выполнять некоторый код по принципу «fire and forget». Примером такого кода может быть отправка E-Mail, обработка видео, синхронизация с другой системой и т.д. Помимо «fire and forget» есть поддержка отложенных задач, а также задач по расписанию в формате Cron.



В настоящее время существует масса подобных библиотек. Несколько преимуществ, говорящих в пользу Hangfire:



  • Простая конфигурация, удобный API

  • Надежность. Hangfire гарантирует, что созданная задача будет выполнена хотя бы один раз

  • Возможность параллельного выполнения задач и отличная производительность

  • Расширяемость (вот ей-то мы и воспользуемся ниже)

  • Достаточно полная и понятная документация

  • Dashboard, на котором можно видеть всю статистику о задачах



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



Источник
Загрузка...
26 дней назад
#

Компиляция и запуск C# и Blazor внутри браузера



Введение



Если вы Web-разработчик и ведете разработку для браузера, то вы точно знакомы с JS, который может исполняться внутри браузера. Существует мнение, что JS не сильно подходит для сложных вычислений и алгоритмов. И хотя в последние годы JS cделал большой рывок в производительности и широте использования, многие программисты продолжают мечтать запустить системный язык внутри браузера. В ближайшее время игра может поменяться благодаря WebAssembly.



Microsoft не стоит на месте и активно пытается портировать .NET в WebAssembly. Как один из результатов мы получили новый фреймворк для клиенской разработки — Blazor. Пока не совсем очевидно, сможет ли Blazor за счет WebAssembly быть быстрее современных JS — фреймворков типа React, Angular, Vue. Но он точно имеет большое преимущество — разработка на C#, а так же весь мир .NET Core может быть использован внутри приложения.



Источник
Загрузка...
26 дней назад
#

Тетрис на C# в 100 строк



Недавно мне в голову пришла идея — написать простенькую игру в минимальное количество строк. Мой выбор пал на тетрис. В этой статье я опишу свой код.

Для начала стоит отметить, что в свою реализацию я включил только базовые возможности:

  • движение фигурок влево/вправо;

  • падение фигурок;

  • поворот фигурок;

  • удаление заполненных фигурок;

  • окончание игры.



Итак, сперва добавим на форму PictureBox и создадим таймер.

Источник
Загрузка...
28 дней назад
#

Изучаю Rust: Как я UDP чат сделал c Azul





Я продолжаю изучать Rust. Я еще много не знаю, поэтому делаю много ошибок. В прошлый раз я попробовал сделать игру
Змейка. Попробовал циклы, коллекции, работу с 3D
Three.rs. Узнал про
ggez и
Amethyst. В этот раз я попробовал сделать клиент и сервер для чата. Для GUI использовал
Azul. Так же смотрел
Conrod,
Yew и
Orbtk. Попробовал многопоточность, каналы и работу с сетью. Учел ошибки прошлой статьи и постарался сделать эту более развернутой. За подробностями добро пожаловать под кат.

Источник
Загрузка...
Den
28 дней назад
#

Инфраструктура System.Transactions в мире .NET





Встречали ли вы в C# конструкцию типа
using (var scope = new TransactionScope(TransactionScopeOption.Required))? Это значит, что код, выполняющийся в блоке
using, заключается в транзакцию и после выхода из этого блока изменения будут зафиксированы или отменены. Звучит понятно, пока не начинаешь копать глубже. И чем глубже копаешь, тем «страньше и страньше» становится. Во всяком случае, у меня при более близком знакомстве с классом
TransactionScope и вообще транзакциями .NET возникла целая уйма вопросов.

Что за класс
TransactionScope? Как только мы используем конструкцию
using (var scope = new TransactionScope()), все в нашей программе сразу становится транзакционным? Что такое «управляющий ресурсами» (Resource Manager) и «управляющий транзакциями» (Transaction Manager)? Можно ли написать свой управляющий ресурсами и как он «подключается» к созданному экземпляру
TransactionScope? Что такое распределенная транзакция и правда ли, что распределенная транзакция в SQL Server или Oracle Database — это то же самое, что и распределенная транзакция .NET?

В данной публикации я постарался собрать материал, помогающий найти ответы на указанные вопросы и сформировать понимание транзакций в мире .NET.

Источник
Загрузка...
1 месяц назад
#

Зачем программисту стажировка на кухне — разговор с «Додо пиццей» про гембу, .NET и открытость





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

Все это здорово, и создается романтичный флер — кажется, что в «Додо пицце» по умолчанию круто работать. Но нам было интересно понять, так ли это на самом деле.

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

Мы с
fillpackart обо всем этом расспросили, и нам ответил Александр Андронов, СТО «Додо пиццы».

Источник
Загрузка...
2 3

Авторизация

Пользователи

Kumskov
Juan
Tutu
naikdij88
NewEXE
Георгiй Москвитинъ
Andpyxa Tutunnik
Andrey_fox
Jane linch

GeekBrains

Нетология