Все потоки
Поиск
Написать публикацию
Обновить
268.42

C# *

Объектно-ориентированный язык программирования

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

Async/Await в C#. Часть 5. Функция-перечисление и цикл через рекурсию, асинхронный вызов без Async/Await

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров7K

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

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

Читать далее

Еще раз про асинхронную машину состояний и где именно там аллокации

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров25K

Несмотря на то, что про async/await уже было сказано много слов и записано множество докладов, тем не менее, в своей практике преподавания и наставничества, я часто сталкиваюсь с недопониманием устройства async/await даже у разработчиков уровня Middle+. В данной статье мы подробно рассмотрим машину состояний, сгенерированную компилятором из асинхронного метода для понимания принципа работы асинхронности в C#, разберемся где именно там аллокации и порешаем задачи для самопроверки. Если вы уже раз сто видели как выглядит асинхронная машина состояний, но все равно недопонимаете ее, тогда эта статья для вас.

Читать далее

Outlook как сервер микросервисов

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

Доброго времени суток. 

Ты ж у нас один программист !!!
Небольшая вводная. Я для друзей, по их запросам, выгружаю данные из MS SQL Server'а. Друзья дают исходные данные, для которых надо сделать выгрузку в файлах .csv. Исходных данных (ИД) может быть от 1 до ... строк. Я загружал данные в sql таблицу с помощью задачи или Task в английской версии в SQL Server Management Studio (SSMS). Исторически сложилось, что все sql файлы со скриптами хранятся на моем ПК. Я файлы открывал в SSMS и запускал на выполнение. Результаты записывал в файл и отправлял сообщение, что обработка выполнена. Друзья забирали файлы с результатами. 

Но в один творческий день пришла идея автоматизировать этот процесс, чтобы Друзья все делали сами, с минимальным моим участием. 

Читать далее

Выбор игрового ИИ и его «сложность»

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров3.8K

Итак, интернет полон туторами по ИИ во всех возможных вариантах: машина состояний, дерево поведений, GOAP и utility AI. Каждое из которых со своей сути лишь определяет алгоритм, по которому сменяются состояния/действия персонажа.

• Для FSM и BT это простые if else с четкими условиями перехода. “Если видим противника, идем к нему. Если подошли, атакуем”.

• Для GOAP мы находим такой “путь” из действий игрока, который приводит к желаемому результату. Как правило, для выбора “пути” используем поиск в ширину, но при большом количестве действий можно рассмотреть варианты использования алгоритмов-“старших братьев” поиска в ширину. Например, A*.

• В Utility AI мы просто выбираем самое “эффективное” действие каким бы то ни было способом. Это можно делать за счет формул расчета, оценки через кривые Безье или через смесь этих способов.

Читать далее

Разработка Tower Defense на Unity — часть 1

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров4.5K

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

Читать далее

Первая игра на LeoEcsLite

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров6.7K

Целью этой статьи является изучение архитектурного паттерна Entity Component Systems на практике. Я подготовил пошаговое руководство по созданию небольшой игры, с помощью которого вы познакомитесь с основными принципами разработки на Ecs.

Читать далее

Как я участвовал в геймджеме | Pixel New Year Jam

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.4K

Если тебе удобнее смотреть видео, то вот.

А это то же видео, только в текстовом формате, что кому-то может быть удобнее.

Читать далее

Фамильный вики-движок Bonsai: 6 лет спустя

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров3.4K
Прошло шесть с лишним лет с момента, когда я начал работать над проектом Bonsai. Если в двух словах, то это вики-движок, заточенный под хранение семейной истории и построение генеалогических деревьев. Он распространяется в полностью открытом и бесплатном виде, подразумевая установку на ваш собственный сервер в качестве docker-контейнера.



Более подробно о его устройстве и истории создания можно почитать в моих предыдущих статьях 3+ годичной давности: раз, два. Изначально я планировал выпускать мажорную версию и писать про нее статью раз в год, но родительство и переезд вносят в планы изрядную долю хаоса. Тем не менее, проект все еще активен и развивается. Сегодня я расскажу о том, что было реализовано и улучшено за последнее время.
Читать дальше →

Async/Await в C#. Часть 3. Чем Tasks(Задачи) лучше чем IAsyncResult. О чем не написал Stephen Toub

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров7.9K

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

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

Пару ссылок на предыдущие работы по этой теме вы тоже найдете под катом.

Читать далее

Сто паттернов для разработки корпоративных программ. Часть 2.1

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров6.7K

В этой статье представлены такие паттерны, как Abstract Document, Monad, Object Mother, Object Pool, Step Builder. Примеры приведены на .NET 7 и C#. Приятного чтения.

Продолжение в статье "Сто паттернов для разработки корпоративных программ. Часть 2.2".

Читать далее

Искусственный интеллект для игры Точки

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров6.2K

Кратко о правилах: игроки поочерёдно ставят точки двух цветов в перекрестия линий. Цель — окружить точки соперника замыканием вокруг них непрерывной цепи своих точек.

Читать далее

Включаем Nullable reference types в Unity за несколько минут

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров2.4K

? Что такое Nullable reference types?

Nullable reference types явным образом указывает, должна ли переменная содержать значение или может отсутсвовать.

Читать далее

Метод быстрого марша (Fast Marching Method)

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров8.7K

Пример реализации метода быстрого марша(Fast Marching Method) для создания полей расстояний(Distance FIeld) и поиска кратчайшего пути.

Читать далее

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

Как на самом деле Async/Await работают в C#. Часть 2 Артефакты от EAP шаблона, SynchronizationContext

Уровень сложностиСложный
Время на прочтение9 мин
Количество просмотров5.7K

Насколько я понял из комментариев к своим предыдущим статьям по этой теме:

1. Часть 1. Проблемы модели асинхронного программирования (APM)

2. Уроки по асинхронному программированию из первой половины работы

3. Параллельные вычисления — Все дело в контексте-синхронизации (SynchronizationContext)

4. Async/Await из C#. Головоломка для разработчиков компилятора и для нас

и по количеству просмотров, тема все еще вызывает интерес, поэтому я хочу попробовать продолжить, но не просто перевод, а перевод С ПОЯСНЕНИЯМИ, хотя и сам перевод тоже должен отличаться от первоначального варианта, поскольку я его не читал, только по результатам, мельком, глянул пару абзацев. К тому же автор того первоначального перевода просил помощи с переводом, поэтому я надеюсь, мой вариант в чем-то сможет помочь в этом смысле или просто будет интересен с точки зрения сравнения.

Потом, мне кажется, что есть несколько читателей, которым будет интересен именно мой вариант перевода, вот для них, в первую очередь, я и продолжаю писать.

Читать далее

Сто паттернов для разработки корпоративных программ. Часть первая

Уровень сложностиСредний
Время на прочтение27 мин
Количество просмотров24K

В этой статье рассмотрены все паттерны проектирования из "Банды четырёх" с примерами на языке программирования C#. Для самых терпеливых имеются дополнительные паттерны.

Это первая статья из серии "Сто паттернов для разработки корпоративных программ". Следующие статьи будут посвящены паттернам из книг Мартина Фаулера и Роберта Нистрема.

Читать далее

GigaChat API для .NET Core

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

Всем привет! Если Вы решили подключить в свою разработку на .NET Core поддержку GigaChat, то эта статья для Вас.

В ней расскажу подробнее про то, как пользоваться библиотекой GigaChatAdapter чтобы облегчить разработку под сберовский ИИ чат

Изучить статью

Собираем автономную игру на C# в 2 килобайтах

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров22K

Моё детство пришлось на эпоху 1,44-мегабайтных дискет и 56-килобитных модемов, поэтому я всегда любил маленькие программы. Раньше можно было записать на дискету кучу мелких игр и таскать её с собой. Если программа не помещалась на дискету, я задумывался, почему — в ней много графики? Есть музыка? Возможно, она выполняет много сложных операций? Или она просто раздута?

В наши дни дисковое пространство стало настолько дешёвым, что люди отказались от оптимизации по размеру.

Размер важен только при передаче: если вы передаёте программу по проводам, мегабайты равны секундам. По быстрому соединению на 100 Мбит в лучшем случае можно передать 12 МБ в секунду. Если на другом конце провода находится человек, ожидающий завершения скачивания, то разница между пятью и одной секундой может существенно повлиять на его ощущения.

Человек может зависеть от времени передачи как напрямую (пользователь, скачивающий программу по сети), так и косвенно (serverless-сервис, отвечающий на веб-запрос).

Люди обычно воспринимают всё, что длится меньше 0,1 секунды, как мгновенное, 3 секунды — это примерно тот предел, после которого прерывается состояние потока пользователя; а уж 10 секунд удержать внимание пользователя очень сложно.

Хотя уменьшение сегодня уже необязательно, оно всё равно лучше.

Эта статья задумывалась как эксперимент, позволяющий выяснить, каким может быть минимальный размер полезного автономного исполняемого файла C#. Могут ли приложения на C# достичь размеров, при которых пользователи будут ощущать их скачивание как мгновенное? Позволит ли это использовать C# там, где он не используется сейчас?
Читать дальше →

Чистая архитектура на примере

Уровень сложностиПростой
Время на прочтение27 мин
Количество просмотров73K

Познакомил друга с понятием "Чистая архитектура" и он стал часто спрашивать меня как лучше сделать то или другое. Хотел дать ему к какому-нибудь туториал, но, к удивлению (плохому), не нашел подходящего.

Поэтому выкладываю небольшой обзор:

1.. Что такое чистая архитектура;
2.. Как можно реализовать;
3.. Мои мысли.

Читать далее

Dictionary и SortedDictionary

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров12K

Всем привет. Сегодня я планирую рассказать в общих чертах о Dictionary и SortedDictionary в .NET - как они устроены и в чем различие между ними.

Читать далее

«Хакнем» технические собеседования на Unity

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров4.9K

Привет!

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

Но даже в таком случае эта выборка не более репрезентативна, чем мнение рандомного человека или статья с Хабра 3/5/10-летней давности.

Посудите сами, даже выборка из 30 отзывов будет более точной чем все подборки от менторов или «продавателей курсов»! А выборка из сотни будет точнее всего, что вы найдете на рынке! Потому что физически единственные, у кого может быть бОльшая выборка - это всякие онлайн школы. Но как мы все знаем после тех самых онлайн школ многие все равно идут к нормальным менторам. А их статистика “95% трудоустроенных” чаще всего буквально обозначает “эти люди имели работу на момент завершения курса, не важно какую и связана ли она вообще с курсами” (привет, Нетология).

Читать далее

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