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

C# *

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

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

Работа со временем и датой в C# с применением библиотеки Humanizer

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

Цель этой статьи — показать вам, как использовать Humanizer, чтобы вывести работу со временем и датой в ваших C#-проектах на новый уровень. Я расскажу о том, как преобразовать объекты DateTime и TimeSpan в удобный для восприятия человеком вид, как настраивать параметры гуманизации и как объединять гуманизацию строк со временеме/датой. Мы также рассмотрим некоторые реальные сценарии использования и примеры того, как Humanizer может улучшить пользовательский опыт в отношении времени и даты.

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

Новости

Десктопное приложение с нуля на .Net и C# с помощью ChatGPT

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

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

Мне стало интересно, каково всё-таки писать приложение с помощью нейросети с нуля (и возможно ли это вообще, при условии, что ты не программист), поэтому для чистоты эксперимента я выбрал область, в которой я совершенно не шарю - попробую написать десктопное приложение на .Net и C#.

Читать далее
Всего голосов 38: ↑36 и ↓2 +34
Комментарии 24

Правило 16 байт: развенчиваем миф о производительности структур в C#

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

По умолчанию, при передаче в метод или при возврате из метода, экземпляры значимых типов копируются, когда как экземпляры ссылочных типов передаются по ссылке. В 2008 году была выпущена книга «Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries»‎. В этой книге рекомендовалось не использовать структуры размером больше 16 байт, поскольку, очевидно, структуры большего размера копируются медленнее. Несмотря на то, что прошло уже 16 лет, в сообществе C# разработчиков до сих пор популярно мнение, что производительность структур размером больше 16 байт хуже. Даже Google на запрос «recommended structure size c#» говорит, что это не более 16 байт. В этой статье мы попробуем докопаться до правды.

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

Хватит маппить все руками, используй Mapster

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

Привет, Хабр! Меня зовут Георгий, я С#-разработчик в SimbirSoft. Хочу рассказать об опыте использования библиотеки Mapster: как он может упростить разработку, сэкономить силы и частично избавиться от рутины маппинга.

Данная статья подойдет и тем, кто только собирается открыть для себя мир автомаппинга, и тем, кто хочет найти для себя альтернативу используемой библиотеки. Для полного понимания, что тут будет происходить желательно обладать базовым пониманием C#, знать о существовании DI и подозревать, что рефлексия не так проста, как кажется.  Ну и LINQ с EF.Core, куда же без них (хотя про них достаточно просто когда-то слышать и примерно представлять, зачем они нужны).

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

Истории

Pure.DI v2.1

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

С момента выхода генератора исходного кода Pure.DI версии 2.0 летом 2023 прошло уже больше чем пол года. За это время удалось собрать отзывы по его использованию, добавить несколько полезных фич, улучшить производительность анализа и качество генерируемого кода, а также исправить ошибки и мелкие недочеты. В этой статье разберем несколько новых возможностей версии 2.1, которые могут быть полезны.

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

Миграция API с Framework на .NET6 — скандалы, интриги, расследования и немного выводов

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

Давным-давно, во времена, когда по Земле бродили цифровые динозавры, а разработчики .NET ещё помнили, зачем нужна технология WebForms (и какие у неё были проблемы с производительностью), в Контуре появился продукт под названием Фокус, предназначенный для проверки контрагентов. И у этого продукта довольно быстро появился API, ориентированный на крупных клиентов.

ASP.NET MVC был ещё в новинку, до появления WebAPI оставались годы, и отцы-основатели проекта приняли вполне актуальное, с учётом реалий того времени, решение: делать API на базе ashx-хендлеров, чтобы максимально повысить скорость работы.

Шли годы, .NET Framework сперва меняла версии как ветреная красавица перчатки, а потом и вовсе перешла в разряд «для поддержки жизнедеятельности требуется опытный некромант», .NET Core сперва появился, а потом благополучно переименовался в просто .NET, дорос до 6-й, а потом и 7-й версии… а API Фокуса всё ещё жил по старому, доброму принципу «работает — не трогай». И вот, наконец небосвод провернулся, и звёзды сошлись в нужной позиции. Мы поехали на .NET 6.

Оговорюсь сразу, что сам переезд произошёл примерно полгода назад, когда .NET 8 ещё находилась в стадии альфы. Именно поэтому в качестве целевой версии .NET была выбрана именно стабильная 6-я. Тем не менее большинство проблем будут актуальны и при миграции на 8-ю версию.

Читать далее
Всего голосов 25: ↑24 и ↓1 +23
Комментарии 14

Записки хирурга. Распиливание слонов PostgreSQL наживую и без анестезии

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

Привет, Хабр! С вами снова AliExpress Order Management System. Сегодня поговорим о том, как мы увеличивали количество шардов без длительного даунтайма. Спойлер: в конце - самое интересное ;)

Дальше
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 16

Тонкости работы short-circuit routing в ASP.NET Core 8.0

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

В статье детально и с примерами рассказываю про short-circuit routing — новую фичу Minimal API в ASP.NET Core 8.0. Она позволяет игнорировать добавленные middleware при вызове отдельных endpoint-ов. Рассмотрим, как это работает, сравним методы и немного поговорим про то, как добавляются middleware в приложение на ASP.NET Core.

Не читайте эту статью, если вам нужно просто прикрутить short-circuit routing и не париться, как оно работает, — для этого достаточно документации и обзора от Andrew Lock. У меня же после них осталось больше вопросов, чем ответов, потому я залез по самые локти в код и разобрался. Если вам тоже интересно — добро пожаловать под кат.

Хочу разобраться
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 9

Modbus терминал и не только

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

Когда-то я активно работал с промышленным оборудованием. Часто мне приходило какое-то устройство, и оно общалось с внешним миром по волшебному протоколу Modbus.

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

Поэтому представляю вам мою версию Modbus терминала!

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

Пароли в открытом доступе: ищем с помощью машинного обучения

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

Я больше 10 лет работаю в IT и знаю, что сложнее всего предотвратить риски, связанные с человеческим фактором. 

Мы разрабатываем самые надежные способы защиты. Но всего один оставленный в открытом доступе пароль сведет все усилия к нулю. А чего только не отыщешь в тикетах Jira, правда?

Привет, меня зовут Александр Рахманный, я разработчик в команде информационной безопасности в Lamoda Tech. В этой статье поделюсь опытом, как мы ищем в корпоративных ресурсах чувствительные данные — пароли, токены и строки подключения — используя самописный ML-плагин. Рассказывать о реализации буду по шагам и с подробностями, чтобы вы могли создать такой инструмент у себя, даже если ML для вас — незнакомая технология.  

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

В чём сила, брат?

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

Статья про поиск правды с помощью LLM, в полярных идеологически СМИ.

Недавно я задался тем же вопросом, как и герой Бодрова, и решил выяснить это опытным путём, используя нейросети.

Узнать
Всего голосов 16: ↑8 и ↓8 0
Комментарии 6

Разработка Tower Defense на Unity — часть 2, проектирование

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

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

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

Разработка синхронизированных многопоточных приложений на C# и .NET

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

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

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

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

Moscow QA #3 — митап по тестированию ПО
Дата 14 марта
Время 18:30 – 21:30
Место
Москва Онлайн
Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

Создание основной механики игры Angry Birds на Unity

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

Начну с того, что я новичок в разаботке на Unity. Как и многие другие начинающие разработчики, мне хочется набраться опыта в создании игр на Unity на основе небольших проектов, копирующих механики всем знакомых игр.

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

Как на самом деле Async/Await работают в C#. Часть 6. Анализ результатов компиляции асинхронных вызовов

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

В этой статье мы продолжим разбирать содержание работы Stephen Toub-а: «How Async/Await Really Works in C#». В этот раз, в след за автором исходного Поста мы рассмотрим код, который генерирует C# компилятор для реализации асинхронных вызовов и множество связанных с этим сущностей-понятий-приемов, таких как: контекст исполнения, боксинг, стейт машина, стек, потоки, … Эта 6-я часть, пожалуй, основная часть всей работы, которая непосредственно отвечает на вопрос: «Как на самом деле Async/Await работают (и компилируются) в C#»

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

Возможно вам будет интересно сравнить эту мою работу с первоначальным переводом.

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

Об одном способе веб-скрапинга сайтов, защищенных Cloudflare

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

Сразу оговорюсь, что описанное ниже носит исключительно информационно-образовательный характер, и не имеет целью нанесение какого-либо ущерба компаниям, использующим защиту из заголовка статьи. По этим же причинам фокусировка статьи именно на том, как получить заветный html «как из браузера» в автоматизированном режиме, и здесь не будет идти речь о каких-то массовых распараллеливаниях через proxy и VPN, подкладываниях отпечатков (finger prints) браузеров и т. д.

Узнать о способе обхода защиты Cloudflare
Всего голосов 28: ↑27 и ↓1 +26
Комментарии 27

Road Run, или как я свою первую игру делал. Часть 7

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

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

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

Где изучать C# в 2024. Бесплатные курсы и полезные ресурсы

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

Существует несколько причин, почему стоит учить C# в 2024 году через бесплатные курсы:

1. Популярность: C# является одним из самых популярных языков программирования, особенно в сфере разработки приложений для платформы Microsoft. Изучение C# открывает двери для работы над широким спектром проектов и предоставляет множество возможностей для развития карьеры.

2. Разнообразие применения: C# используется для разработки различных типов приложений, включая десктопные приложения, веб-приложения, игры, мобильные приложения и многое другое. Изучение C# позволяет вам выбрать свою область интересов и создавать программное обеспечение для разных платформ.

3. Работа с платформой .NET: C# является основным языком программирования для платформы .NET, которая является одной из самых мощных и широко используемых платформ разработки программного обеспечения. Изучение C# позволяет вам использовать все преимущества и возможности, предоставляемые платформой .NET.

4. Растущий рынок труда: Спрос на разработчиков, владеющих C#, по-прежнему высок. Множество компаний и организаций используют C# для разработки своих продуктов и услуг. Изучение C# открывает двери для множества вакансий и возможностей для трудоустройства.

5. Бесплатные курсы: Существует множество бесплатных онлайн-курсов и ресурсов, которые помогут вам изучить C#. Такие курсы предоставляют доступ к обучающим материалам, учебным проектам и практическим заданиям, что позволяет получить практический опыт без необходимости вложения денег.

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

Читать далее
Всего голосов 20: ↑16 и ↓4 +12
Комментарии 15

Разобраться раз и навсегда: Task.WhenAll или Parallel.ForEachAsync в C#

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


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

Если быстро посмотреть на результаты, которые появляются в интернете при поиске советов по реализации подобных вещей, то можно увидеть, что есть как много похожих, так и различных предложений от различных программистов. В какой-то момент поиска вы, вероятно, столкнётесь с поиском идеей использования Task.WhenAll или Parallel.ForEachAsync.

При чтении некоторых из этих материалов будет видно много различных противоречивых ответов как на StackOverflow, так и по всему интернету. Сегодня я собираюсь сравнить эти два метода с помощью определённых бенчмарков, которые стравят их друг против друга, чтобы, наконец, выяснить применимость каждого из двух методов.
Читать дальше →
Всего голосов 58: ↑57 и ↓1 +56
Комментарии 18

Наш опыт мультиаутентификации в приложениях ASP.NET Core

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

Привет, Хабр! На связи разработчик АО АльфаСтрахование. В этой статье я хочу рассказать о мультиаутентификации в ASP.NET Core приложениях.

Нам довольно часто нужно писать .NET Core приложения. Нередко они используются для интеграции крупных систем. А в этих системах частенько свой собственный набор учетных записей (далее УЗ) и инструментов по управлению доступа к ним.

При создании интеграции у нас часто возникает проблема, когда в рамках одного запроса нужно нужно аутентифицировать 2 и более учетных записей

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

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

Работа