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

.NET *

Хаб со знаниями про .NET

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

Разработка бота для Telegram на платформе .NET

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

Введение

Telegram — один из самых популярных мессенджеров в мире, предлагающий такие функции, как групповые чаты, каналы, голосовые и видеозвонки, а также возможность создания ботов. В данной статье мы не будем ставить цель показать, как создать с нуля приложение a-la "Hello, World!", а изучим более сложный пример готовой реализации бота на платформе .NET с использованием современных технологий и практик разработки, локализацией, поддержкой пожертвований в Telegram Stars и т.д.

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

Новости

Как реализовывать IT услуги из России в ЕС/США, оставаясь незамеченным для санкций и активистов?

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

Пример №1. Вы – владелец IT компании в России и оказываете услуги заказчикам/лицензиатам в ЕС или США.  Есть действующие заказчики и две проблемы:  (а) не проходят платежи в Россию и (б) есть желание скрыть владение российской компанией «на всякий случай».

Пример №2. Вы – владелец компании, занимающейся автоматизацией производств. Поставщики оборудования из ЕС, а покупатели в России.  Вы не в сакционных списках, как и ваши покупатели, но неизвестные «активисты» пишут на мэйл и интересуется тем, как же вы закупаете из Европы оборудование и ввозите его в Россию. Такие «письма счастья» приходят по итогу анализа открытых данных из ЕГРЮЛ и купленных в даркнете баз таможенной службы.

 Цели учредителей в обоих кейса: 

(а) продолжить оказывать услуги по поддержке ПО и перепродаже лицензий на рынки ЕС и США из России, продолжить закупку оборудования и (б) скрыть связь владения российской компанией.

 Первая цель решается либо через открытие транзитного счета юр. лица в Казахстане (описано здесь), либо через открытие филиала российского юр. лица в Казахстане.

 Вторая решается двумя путями

 Самурайский – вы создаете ТОО в Казахстане/ОООшку в Узбекистане и ставите ее главой номинала. Не самый надежный вариант, поскольку гражданское законодательство Казахстана даже не предусматривает понятия «номинальный директор» и не регулирует его ответственность перед бенефициаром.

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

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

Что не так с .NET в Yandex Cloud Functions

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

В статье объясню специфику Яндекс Функций. Покажу свой эксперимент с запуском приложений, которые опубликованы разными способами — в том числе с использованием AOT-компиляции. А в конце — сравнение результатов и выводы.

Интересны особенности работы .NET в Yandex Cloud Functions? Добро пожаловать под кат.

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

Бескультурная сказка про Dottrace

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

Короткая зарисовка о том, почему важно осознанно писать каждую строчку кода, каждый символ. А заодно и небольшой мастер-класс по использованию dottrace и класса string одновременно.

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

Истории

Как ускорить сборку Docker-образов в GitLab: стратегии кэширования с Docker Buildx

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

Скорость сборки Docker-образов играет важную роль в CI/CD, особенно для микросервисов, где частые обновления и тестирования требуют быстрой доставки изменений.

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

В этой статье мы сосредоточимся на том, как эффективно настроить и использовать кэширование с Docker Buildx в CI/CD пайплайнах на GitLab. Мы рассмотрим примеры, когда кэширование позволяет ускорить сборку, и ситуации, когда его лучше отключить для гарантии корректности итогового образа.

Читать дальше →
Всего голосов 14: ↑14 и ↓0+17
Комментарии6

Третье издание книги «ASP.NET Core в действии» в правильном переводе команды DotNetRu

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

Привет, на связи лингвисты инженеры сообщества DotNetRu. 3 года назад мы рассказывали о книге «ASP.NET Core в действии». А сегодня мы рады представить третье издание этой полезной и информативной книги.

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

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

ActiveSession — новая библиотека. Общее описание

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

imageНу вот, я наконец-то сделал ее — первую версию библиотеки ActiveSession для ASP.NET Core. И для того, чтобы описать эту библиотеку, я написал эту статью.


Библиотека ActiveSession дает возможность, пока пользователь работает с веб-приложением в браузере, выполнять код на сервере в фоновом режиме. А результаты работы этого кода — и промежуточные, и окончательные — веб-приложение может потом получать через дополнительные запросы к серверу. Причем, этот код обрабатывает данные и выполняет операции, специфичные именно для этого конкретного экземпляра веб-приложения и работающего с ним конкретного пользователя: для разных пользователей, работающих с разными экземплярами, независимо выполняются разные, не связанные друг с другом экземпляры фоновой программы.
Если вам нужны (или просто интересны) такие возможности — читайте эту статью дальше.

Читать дальше →
Всего голосов 7: ↑5 и ↓2+4
Комментарии36

Использование библиотеки ActiveSession

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


Сама по себе эта статья не является самостоятельным произведением. По факту она служит дополнением к основной, обзорной, статье по новой библиотеке ActiveSession. Эта библиотека предназначена для использования в веб-приложениях, серверная часть которых написана на ASP.NET Core. В основной статье рассказано, какую задачу решает эта библиотека, и как подключить ее к приложению. А эта статья рассказывает более подробно, как использовать эту библиотеку в обработчиках запросов к серверной части приложения из браузера.
Если вы уже заинтересовались библиотекой ActiveSession, то добро пожаловать дальше. Только перед этим рекомендуется прочитать основную статью: в ней объяснены те понятия, которые нужны для лучшего понимания того, что написано в этой статье.

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

Обзор нововведений в C# 13

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

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

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

Валидация модели данных в ASP.NET Core 8.0 на основе HTMX

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

Валидация данных на стороне сервера с HTMX 2.0. Разбираемся с валидацией модели данных на основе платформы ASP.NET Core.

В статье мы освоим базовую реализацию валидации данных на стороне сервера. На стороне сервера мы используем самый простой способ коммуникации - HTTP.

Знакомство с гипермедийными системами на ASP.NET Core 8.0.

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

Гибкая фильтрация EFCore с помощью Expression

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

Фильтрация данных в EntityFramework — это довольно простая задача, которую можно легко решить с помощью метода Where() в LINQ. Однако если поля для фильтрации как и значения приходят к нам динамически, и тем более если фильтровать приходится по вычисляемым в рантайме значениям - возникают некоторые трудности с их обработкой. В статье рассказываю как я делал динамическую фильтрацию по вычисляемым в рантайме полям с помощью Expression trees и EntityFramework.

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

Как сократить размеры логов без потери функциональности

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

Разработчики периодически разрываются между желанием логировать как можно больше информации и необходимостью сделать объём логов разумно компактным.

Когда речь идёт о небольшом локальном сервисе с нагрузкой 10 запросов в день, можно позволить себе писать в логи всё: от полного текста запроса до полного текста ответа с кучей промежуточной информации (что пришло из базы, какой запрос послали во внешний сервис и что получили в ответ и т.д.). Когда же речь об относительно высоконагруженном сервисе, обрабатывающем порядка 1000 rps даже малая часть этой информации за пару дней запросто может вызвать переполнение современного жёсткого диска.

Возникает логичный вопрос: как логировать только нужную информацию?

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

RxJS Interop в Angular 18: основные изменения и преимущества

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

✏️ 🔥 Я написал новую статью об одной из интересных функций в Angular 18: RxJS Interop. В статье рассматривается, как RxJS Interop эволюционировал с Angular 16 до 18, какие новые возможности он приносит и как его можно использовать в вашем коде.

🚀 Если вы разработчик Angular и хотите улучшить свои реактивные паттерны, эта статья для вас!

✨ Основные моменты:

- 🔄 Бесшовная конвертация между Signals и Observables.

- 📉 Оптимизированная производительность для управления реактивным состоянием.

- 💡 Использование операторов RxJS напрямую с Signals для упрощения и улучшения читаемости кода.

- 🔥 Упрощение интеграции с Firestore с помощью Signals для синхронной реактивности и более простого управления состоянием.

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

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

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

SolidModelBrowser — удобный просмотр STL, 3MF, OBJ, особенно для тех, у кого завёлся 3D принтер

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

Началась эта история с того, что несколько лет назад я купил 3D принтер. Конечно, по началу не представлял толком, как эта технология работает, и насколько прочными и полезными будут его пластиковые изваяния. Однако, быстро натренировавшись и отрегулировав эту машинку, я был удивлён и вполне удовлетворён качеством пластиковых изделий, спайкой слоёв и точностью их геометрических размеров. Конечно, в последствии не обошлось без модернизаций аппарата, но сейчас не об этом.

Печатать игрушки с thingiverse мне, конечно, надоело быстро, да и брал я свой дрыгостол с большим прицелом на техничку. Принтер вскоре стал одной из любимых игрушек, а связка Blender+Cura позволяла лепить модели мелких деталей порой за считаные минуты, отправляя их затем на печать. Сломалось колёсико у дивана - не в магазин же бежать, отломилось какое-нибудь крепление или кронштейн - и уже гудит вентилятор хотэнда. Штырьки, подпятники, элементы механизмов, и конечно, куча всяких баночек и коробочек...

Библиотека STL и 3MF росла. И в какой-то момент стало понятно, что я не помню, в каком файле лежит та или иная деталь. Хоть файлы и имели осмысленные названия на английском, но я просто уже забыл, что и как назвал, и ориентироваться в разрастающейся свалке становилось всё труднее. Нужен был какой нибудь удобный просмотрщик. Вот так и зародился несколько лет назад проект Solid Model Browser.

Приложение создано на платформе WPF и работает под Windows. В окне отображается загруженная модель, панель инструментов-кнопочек, и файловая панель слева, меняющая свою прозрачность по мере её востребованности...

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

Как скопировать все пакеты с nuget.org

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

Допустим, вам захотелось, на всякий случай, сохранить копию всех пакетов nuget.org. Как обнаружить и скачать все пакеты не привлекая внимания админов сервиса?

Узнать как
Всего голосов 7: ↑7 и ↓0+10
Комментарии10

Шестидесятилетний заключённый и лабораторная крыса. F# на Godot. Часть 2. Выражения

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

В прошлой части я говорил про адаптацию API Godot к F#. Далее в планах было разобраться с общей структурой приложения, но я столкнулся с необходимостью закрыть серьёзный пробел в публичном корпусе текстов. Так что в этой и последующих частях я буду объяснять нечто странное — как из обычной функции путём эволюции получается работающая программа на Godot.

На мой взгляд, у большинства F#-новичков тактический и стратегический уровень находятся в разных вселенных. Типа вот здесь в локальном пространстве у нас ФП, а на глобальном внезапно тащит только ООП. Это, конечно, хорошо, что мы можем склеивать две парадигмы, но мне кажется, что эта непреодолимая стена на границе сферы деятельности ФП не такая уж непреодолимая. Существование её обусловлено не объективными причинами, а недостатком опыта.

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

Моя работа позволяет использовать способности и приносить пользу обществу

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

Я начинал в 2004 году с позиции .NET программиста в сфере аутсорс-разработки для зарубежных заказчиков. Это заложило прочную основу моей карьеры в IT. Полученный опыт в Java и .NET применил в научном институте в Новосибирске, а затем  в университетах Германии и Швеции. Этот период значительно расширил мои технические навыки и кругозор. Следующим этапом стала работа в игровой индустрии, где я прошел путь от руководителя проектов до операционного и технического директора в сфере мобильной разработки. Потом вернулся к аутсорс-разработке для российских и зарубежных заказчиков, но уже в роли руководителя проектных офисов и директора производства. Сейчас занимаю позицию руководителя технологического направления (аналог локального CTO) в компании ЕВРАЗ.

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

Исходный код на прощание: разбор ошибок в проектах закрывшейся инди-студии

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

Инди-студия StarlightLabsCo закрылась, а разработчик и её основатель Харрис Ротаермель опубликовал исходный код своих проектов. Теперь желающие могут улучшать эти проекты или разрабатывать на их основе новые. Мы решили не оставаться в стороне и решили поискать ошибки в его проекте.

Читать далее
Всего голосов 24: ↑22 и ↓2+26
Комментарии5

Экспорт данных из базы данных в Excel на C#: 5 проверенных методов

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

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

В этой статье я расскажу о пяти уникальных подходах к экспорту данных из базы данных MySQL в файл Excel, используя различные библиотеки C# Excel. Я также приведу краткое сравнение этих библиотек, подчеркнув их особенности, производительность, цену и другие важные моменты.

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

Функция скользящего среднего для регенерации на графике

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

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

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

Ниже я привожу код для C# который можно copy/paste для вашего использования.

Особенностями подхода является два момента:

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

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

Работа

.NET разработчик
45 вакансий