Pull to refresh
-1
0
Петелин Сергей @petelinsergey

User

Send message

Разворачиваем и демонизируем ASP.NET Core приложение под Linux в виде фонового сервиса

Reading time5 min
Views74K
Доброго дня, господа. Сегодня мы затронем тему, за обсуждение которой ещё два года назад сожгли бы на костре — запуск ASP.NET приложения под linux. В данной статье будет использоваться Ubuntu 16.04
Читать дальше →
Total votes 24: ↑21 and ↓3+18
Comments26

Как написать Telegram бота на C#? [Часть 1]

Level of difficultyEasy
Reading time13 min
Views27K

Приветствую, товарищи-программисты!

Материалы по разработке Telegram ботов на C# начинают потихоньку устаревать, новой информации я не нашел, поэтому решил написать свою статью.

В своей статье я написал простенького Telegram бота для обучения и использования его основы в ваших будущих проектах. А как я сделал, смотрите в моей статье!

Хочу своего бота!
Total votes 22: ↑13 and ↓9+4
Comments111

Как создать telegram бот на C# быстро?

Reading time6 min
Views144K

Как создать telegram bot на C# быстро?

В этой статье мы рассмотрим заготовку для создания telegram бота на C#. В связи с последними обновлениями TelegramBotAPI, большая часть удачных с моей точки зрения публикаций на эту тему несколько устарело. Потому предлагаю разобраться в этой теме.

Читать далее
Total votes 32: ↑24 and ↓8+16
Comments39

Всё, о чём должен знать разработчик Телеграм-ботов

Reading time15 min
Views598K

Вы вряд ли найдете в интернете что-то про разработку ботов, кроме документаций к библиотекам, историй "как я создал такого-то бота" и туториалов вроде "как создать бота, который будет говорить hello world". При этом многие неочевидные моменты просто нигде не описаны.

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

Подробный гайд о том, как работать с ботами — под катом.

Читать далее
Total votes 127: ↑127 and ↓0+127
Comments73

Боты на .Net Core для Telegram, Slack и Facebook

Reading time8 min
Views87K
Недавно на одном из проектов банка возникла задача написать бота. Итогом этого опыта стал данный текст, который предназначен, прежде всего, для начинающих разработчиков.



Практически все, кто пользуется современными средствами обмена сообщениями, сталкивались с ботами. Одно из определений бота – это программа, выполняющая автоматически и/или по заданному расписанию какие-либо действия через интерфейсы, предназначенные для людей.

Боты могут использоваться для информирования, для автоматизации процессов (например, автоматической генерации задачи в TFS на основе письма пользователя) и для многих других целей, но т.к. одной статьи не хватит, чтобы рассмотреть все варианты, далее пойдёт рассказ лишь о том, как создать бота для обработки команд.
Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments14

Просто, но быстро. Телеграм бот на коленке

Level of difficultyEasy
Reading time13 min
Views9.9K

В современном мире телеграм-боты стали неотъемлемой частью нашей повседневной жизни. Они стали незаменимыми в самых разнообразных задачах – от автоматизации повседневных операций до обеспечения клиентов высококачественным сервисом.

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

Не страшно! В этой статье я поделюсь с вами всеми этапами создания собственного фреймворка для телеграм-бота с использованием C#.

Читать далее
Total votes 4: ↑5 and ↓-1+6
Comments13

Выбираем базовые образы для приложений на .NET: минимум уязвимостей, максимум быстродействия

Level of difficultyMedium
Reading time14 min
Views3.2K

Микросервисы и контейнеры для их развертывания сейчас являются стандартом в крупных компаниях. Для разработчиков и DevOps-инженеров это удобный подход: он дает больше возможностей и ускоряет процессы.

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

Меня зовут Саша Рахманный, я разработчик в команде информационной безопасности в Lamoda Tech. В этой статье я сравню разные базовые образы для .NET с точки зрения безопасности их компонентов и быстродействия. 

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

Читать далее
Total votes 32: ↑33.5 and ↓-1.5+35
Comments6

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

Level of difficultyMedium
Reading time9 min
Views4.6K

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

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

Хочу разобраться
Total votes 14: ↑14 and ↓0+14
Comments9

Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному

Level of difficultyMedium
Reading time45 min
Views136K

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

Вы, наверняка, помните отличный цикл статей на Хабре в прошлом году от пользователя MiraclePtr, который рассказывал о разных методах блокировок, о разных методах обхода блокировок, о разных клиентах и серверах для обходов блокировок, и о разных способах их настройки (раз, два, три, четыре, пять, шесть, семь, восемь, десять, десять, и вроде были еще другие), и можете спросить, а зачем еще одна? Есть две основные причины для этого.

Читать далее
Total votes 506: ↑498 and ↓8+490
Comments351

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

Level of difficultyEasy
Reading time5 min
Views25K

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

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

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

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

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

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

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

Читать далее
Total votes 20: ↑16 and ↓4+12
Comments15

Самый простой и подробный гайд по конкурентным коллекциям в C#

Level of difficultyEasy
Reading time18 min
Views16K


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

Конкурентные коллекции в C# предлагают встроенные механизмы для обработки конкурентного доступа, что делает их мощным инструментом в программировании с конкурентным доступом.

В рамках статьи я попробую объяснить System.Collections.Concurrent настолько, насколько это возможно, включая примеры и сценарии использования. Также будет затронута тема сравнения с неизменяемыми (immutable) и замороженными (frozen) коллекциями.
Читать дальше →
Total votes 64: ↑62 and ↓2+60
Comments26

Как на самом деле Async/Await работают в C#. Часть 1. Проблемы модели асинхронного программирования (APM)

Level of difficultyHard
Reading time13 min
Views17K

Это перевод первой главы из поста How Async/Await Really Works in C#

Этот пост .Net блога является продолжением исходного поста, глубоко погружающим в историю, приведшую к созданию конструкций async/await и стоящие за этим дизайнерские решения и детали реализации async/await в C# и .NET.

Исходный пост What is .NET, and why should you choose it? предоставляет обзор платформы на высоком-уровне, перечисляя различные компоненты и решения на уровне дизайна, и предваряя последующие посты в глубину обозначенных тем.

Ссылки в развитие темы:

1. Часть 2 Артефакты от EAP шаблона, SynchronizationContext

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

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

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

Читать далее
Total votes 10: ↑7 and ↓3+4
Comments12

Прекратите клепать базы данных

Reading time15 min
Views62K

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

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

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

Читать далее
Total votes 49: ↑43 and ↓6+37
Comments45

Обработка ошибок с помощью IExceptionHandler в ASP.NET Core 8.0

Level of difficultyMedium
Reading time5 min
Views9.5K

Давайте рассмотрим, как вы можете реализовать обработку ошибок, используя IExceptionHandler в .NET Core 8.0. Этот подход следует похожим паттернам предыдущих методов обработки ошибок в ASP.NET Core, но добавляет дополнительную возможность внедрения вашей собственной логики обработки исключений в exception handling middleware.

Читать далее
Total votes 8: ↑6 and ↓2+4
Comments28

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

Level of difficultyEasy
Reading time5 min
Views4.6K

Краткая инструкция с некоторыми опущениями о том, как собрать deb-пакет из собственного проекта быстро, без регистрации и смс

Ну-ка помацаем, кто у нас тут....
Total votes 5: ↑4 and ↓1+3
Comments17

Публикация локального сервера из дома в интернет

Level of difficultyEasy
Reading time10 min
Views38K

Приветики. Надеюсь, все отошли от новогодних, и можно писать и читать дальше. Как хозяин умного дома, я состою в чатике по Home Assistant, там прекрасное ответчивое комьюнити,
но периодически задаётся вопрос по тому, как собственно выставить свой веб сервис в интернет. И оказывается, что в двух словах тут не ответишь, а вменяемой инструкции на которую можно дать ссылку - нет. Так что теперь она будет здесь.

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

Мы рассмотрим здесь несколько сценариев - статический белый айпи, динамический белый айпи, и серый. Для серого рассмотрим варианты с готовыми сервисами, с помощью Keenetic и с помощью ssh туннеля. Погнали!

Читать далее
Total votes 66: ↑64 and ↓2+62
Comments95

OpenAPI станет проще: готовится версия 4.0

Level of difficultyEasy
Reading time7 min
Views11K


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

До появления расширения OpenAPI DevTools проектировать схему OpenAPI приходилось вручную. Хотя это было непросто, оно того стоит в любом случае. Недавно мы в RUVDS переделали свой API под данный стандарт — и увидели, насколько это эффективно и полезно для всех пользователей и разработчиков, которые обращаются к серверным API.

Сейчас в разработке находится четвёртая версия OpenAPI. Она станет проще и универсальнее, то есть подойдёт даже для тех HTTP API, для которых не годится текущая версия 3.0 (3.1.0).
Читать дальше →
Total votes 55: ↑54 and ↓1+53
Comments9

Коротко про платежи через ботов в Telegram

Level of difficultyEasy
Reading time7 min
Views15K

Привет, Хабр!

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

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

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

Читать далее
Total votes 11: ↑10 and ↓1+9
Comments7

Пора делать нормальных телеграм-ботов #3

Level of difficultyEasy
Reading time4 min
Views8K

Очень неочевидные вещи, о которых никогда не приходится задумываться, пока не сталкиваешься с реальными проблемами использования ботов (иногда очень злонамеренного и неправильного).

Узнать, о чём речь
Total votes 7: ↑5 and ↓2+3
Comments0

Алгоритмы балансировки нагрузки в .NET. Кэширование и Rate Limiting в Ocelot, сравниваем со стандартными средствами .NET

Reading time4 min
Views4.7K

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

Сегодня мы реализуем различные алгоритмы балансировки нагрузок в .NET, и обсудим преимущества и недостатки каждого из них.

Читать далее
Total votes 7: ↑5 and ↓2+3
Comments17
1
23 ...

Information

Rating
4,328-th
Location
Волгоград, Волгоградская обл., Россия
Registered
Activity