Обновить
109.27

C# *

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

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

Выгрузка сообщений с использованием Telegram API. С чего начать

Время на прочтение3 мин
Просмотры67K
На просторах интернета можно найти множество описаний и примеров по созданию telegram bot-ов.Но Telegram Bot Api имеет ограниченный функционал. Для решения задачи по выгрузке сообщений из Telegram по ключевому слову необходимо использовать Telegram API. За основу была взята библиотека TLSharp. Стоит сразу прояснить, что дальнейшая работа возможна только для зарегистрированных пользователей в Telegram.

Стартом работы с API служит регистрация приложения:

  1. Заходим на сайт Телеграмма и вводим свой номер телефона. Вводим код подтверждения.

    image
  2. Попадаем на страницу разработчика. Для завершения регистрации необходимо заполнить поля, характеризующие ваше будущее приложение.

    image
  3. Получаем api_id и api_hash.
Читать дальше →

Еще немного о валидации в ASP.NET

Время на прочтение3 мин
Просмотры12K
В прошлый раз я перенес часть императивного кода в атрибут. Есть еще одна проверка, кочующая из одного файла в другой:

public class MoveProductParam
{
   public ProductId {get; set; }

   public CategoryId {get; set; }
}

//...
if(!dbContext.Products.Any(x => x.Id == par.ProductId))
    return BadRequest("Product not found");

if(!dbContext.Categories.Any(x => x.Id == par.CategoryId ))
    return BadRequest("Category not found");

Мы достойны лучшего
public class MoveProductParam
{
   [EntityId(typeof(Product))]
   public ProductId {get; set; }

   [EntityId(typeof(Category))]
   public CategoryId {get; set; }
}
Читать дальше →

Синхронизация AssemblyVersion и Publish Version в ClickOnce приложении

Время на прочтение4 мин
Просмотры5K
Добрый день.

Сделал приложение ClickOnce. Всё хорошо, но утомляет обновлять номер версии. Дело в том, что при выкладывании обновления нужно менять версию как в AssemblyInfo, так и в csproj. Вот так я сделал:

public static class VersionInfo {
	public const string VersionString = "1.0.3";
}

А в AssemblyInfo на это свойство ссылаемся:

[assembly: AssemblyVersion(VersionInfo.VersionString)]
[assembly: AssemblyFileVersion(VersionInfo.VersionString)]
Читать дальше →

Танчики в консоли, статья первая: «От спора к написанию кода»

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

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

Ну что, все готовы? Начинаем!


Эта статья будет короткой, но информативной (для новичков, как я).

На момент написания статьи я знала всего несколько языков и рассуждала о выборе каждого из них и насколько он подходит для разработки этих самых танчиков. Но опираясь на знания я решила распределить всё так:

C# — клиент (так как самый лёгкий в изучении язык)
Rust — сервер (так как самый безопасный и быстрый)
Php/html/css/javascript — сайт (который мы ВОЗМОЖНО будем делать)
Читать дальше →

MVVM: полное понимание (+WPF) Часть 1

Время на прочтение8 мин
Просмотры319K
В настоящей статье задействован мой опыт доведения некоторого числа студентов до полного и окончательного понимания паттерна MVVM и реализации его в WPF. Паттерн описывается на примерах возрастающей сложности. Сначала теоретическая часть, которая может использоваться безотносительно конкретного языка, затем практическая часть, в которой показано несколько вариантов реализации коммуникации между слоями с использованием WPF и, немножко, Prism.

Зачем вообще нужно использовать паттерн MVVM? Это ведь лишний код! Написать тоже самое можно гораздо понятнее и прямолинейнее.

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

Сигналы на c#

Время на прочтение4 мин
Просмотры15K
Доброго времени суток Хабр. Вдохновленный моделью синхронизации потоков в go и сигналов в QT появилась идея реализовать нечто подобное на c#.

image

Если интересно, прошу под кат.
Читать дальше →

Пакет Network Security Services и утилита Pretty-print

Время на прочтение3 мин
Просмотры6.7K
Пакет Network Security Services (NSS) представляет собой набор библиотек, используемых при кроссплатформенной разработке защищенных клиентских и серверных приложений.
Читать дальше →

От Oracle Database 12c EE к PostgreSQL, или основные отличия PostgreSQL при разработке под IEM-платформу Ultimate

Время на прочтение7 мин
Просмотры8.1K
В предыдущей статье я рассказал о выходе Solid12 — версии IEM-платформы для PostgreSQL. Как и обещал, рассказываем более детально о том, с чем придется столкнуться разработчикам (и с чем столкнулись мы при миграции).

Этот обзор не является исчерпывающим, скорее его нужно рассматривать как минимальную вводную для разработчика под Oracle, приступающего к работе на PostgreSQL.
Читать дальше →

Replication Framework • глубинное копирование и обобщённое сравнение связных графов объектов

Время на прочтение12 мин
Просмотры5.5K
Приветствую, читатель!

Хочу познакомить тебя с молодой, но многообещающей библиотекой Replication Framework для платформы .NET (возможно, при наличии достаточного интереса к теме в дальнейшем будет также реализована Java-версия). Библиотека является портабельной (portable) и может быть использована в любом проекте под Microsoft .NET или Mono.

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

image
Читать дальше →

Автономер на четырех языках. Часть 2

Время на прочтение17 мин
Просмотры4.6K

Что такое 8037?


Это небольшая математическая игра: вы идете по улице, и просто считаете сумму цифр в автомобильных номерах. Эту игру мы реализуем в консольном варианте, на четырех языках: Swift, Objective-C, Java и C#.


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


Читать дальше →

Как создать интернет вещей из «кирпичиков» LEGO на базе платформы AWS IoT

Время на прочтение3 мин
Просмотры9.2K

В одном из проектов мы проверили возможности облачной платформы AWS IoT, подключив к ней несколько устройств из набора Lego для программируемых роботов Mindstorms EV3.

На старте мы исследовали несколько крупных облачных сервисов для IoT, которые дали хороший толчок развитию всей концепции интернета вещей (IoT) — Microsoft Azure IoT Suite, AWS IoT и IBM Watson IoT — но в результате остановились именно на Amazon Web Services (AWS).
Читать дальше →

Union Type, TPT, DDD, ORM и RDBMS

Время на прочтение7 мин
Просмотры7.6K

Объединения и pattern-matching широко используются в функциональном программировании для повышения надежности и выразительности программ.

Классический пример удачного использования объединений для моделирования бизнес-процессов – корзина и состояние заказа. Пользователь в праве добавлять и убирать товары, пока не оплатил заказ. Но сама операция модификации оплаченного заказа лишена смысла. Также лишена смысла операция Remove для пустой корзины. Тогда логично вместо общего класса Cart определить интерфейс ICartState и объявить по одной реализации для каждого состояния. Более подробно данный подход изложен текстом здесь и в видео-формате вот тут.

Недавно у нас возникла задача спроектировать структуру БД для специализированной CRM/ERP. Первый подход к моделированию договоров оказался не удачным, из-за того что сторонами договоров могут выступать как физические, так и юридические лица из России и других стран мира. ИНН необходим продавцу, чтобы получить оплату, но не всегда нужен полкупателю (для идентификации личности чаще используются паспортные данные). Форматы реквизитов отечественных и зарубежных юр.лиц не совпадают. Не помогало делу и то, что ИП являются физическими лицами, но «прикидываются» юридическими.

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

Работа с API ВКонтакте на C#

Время на прочтение7 мин
Просмотры73K
Приветствую тебя, дорогой читатель! В статье описан процесс создания простейшего WindowsForms приложения, которое будет работать с API социальной сети «ВКонтакте».

Задачи приложения:

  1. Получить User Token и выполнять все дальнейшие запросы с помощью него.
  2. Получить на вход ID пользователя.
  3. Вывести информацию о пользователе с введённым ID.
Читать дальше →

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

1С,.Net Core. Динамическая компиляция класса обертки для получения событий .Net объекта в 1С

Время на прочтение9 мин
Просмотры7.7K
Это практическое применение из предыдущей статьи .Net Core, 1C, динамическая компиляция, Scripting API.

По сути это продолжение .NET(C#) для 1С. Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия, но для кроссплатформенного .Net Core. Но в той разработке я использовал CodeDom. В .Net Core удобнее использовать Roslyn Scripting API.

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

В «Создание компонент с использованием технологии Native API» есть метод для вызова внешнего события в 1С ExternalEvent. Синтаксис:

bool ExternalEvent(WCHAR_T* wsSource, WCHAR_T* wsMessage, WCHAR_T* wsData) 

Параметры:

• Тип: WCHAR_T*. Строка с наименованием источника события.
• Тип: WCHAR_T*. Строка с наименованием события.
• Тип: WCHAR_T*. Строка c параметрами события.

Но в качестве wsData будем передавать ссылку на объект созданный из параметров события.

Итак начнем.
Читать дальше →

Хостим облачную службу Azure на обычных vds

Время на прочтение9 мин
Просмотры5.9K
Пишу веб-проекты в visual studio, и с каждой новой версией студии она как будто затачивается для работы с Windows Azure. Мне нравится Азура, хотя я пользуюсь только небольшим набором возможностей. Основное для меня — это Облачная служба. Облачная служба отлично подходит для разворачивания распределенного сервера.
Читать дальше →

Интеграция двух тенантов Dynamics CRM Online при помощи Azure Service Bus и Azure Cloud Service

Время на прочтение12 мин
Просмотры3.7K
В данной статье мне хотелось бы поделится опытом использования Microsoft Azure для интеграции двух облачных CRM систем. В рамках задачи необходимо построить простое облачное приложение, осуществляющее обмен сообщениями между двумя имплементациями Dynamics CRM Online, находящимися в разных подписках Office 365. Мы рассмотрим специфику использования Azure Service Bus в контексте Dynamics CRM Online, не много поговорим о поддерживаемых механизмах взаимодействия и воспользуемся облачной рабочей ролью для осуществления процесса анализа и обработки сообщений.
Читать дальше →

Пример создания простой 2D игры для Android с использованием игрового движка Unity

Время на прочтение6 мин
Просмотры165K

Введение




Прежде всего, хочу сразу отметить, что я не являюсь профессиональным разработчиком. В этой статье я постараюсь изложить свой опыт создания игры «Feel Speed Racing». Данный материал, скорее всего не будет интересен тем, кто уже имеет большой опыт в разработке игр, но начинающим разработчикам, которые хоть немного работали с Unity думаю, будет интересно.
Читать дальше →

Entity vs Value Object: полный список отличий

Время на прочтение6 мин
Просмотры68K
Тема отличий таких понятий как Entity (Сущность) и Value Object (Объект-Значение) из Domain-Driven Design не нова. Тем не менее, я не смог найти статью с полным списком их отличий, так что решил написать свою.
Читать дальше →

Простой пул объектов в Unity3D

Время на прочтение7 мин
Просмотры50K
В процессе разработки я столкнулся с необходимостью создания пула объектов. Прочитав эту и другие статьи, решил написать для своих нужд пул попроще с доступом к объекту по строке (названию префаба).

Итак, начнем. Пул состоит из четырех скриптов. Состояние вкл/выкл на объекте в пуле определяется его свойством Unity activeInHierarchy, чтобы не городить дополнительных переменных.
Читать дальше →

А вы получили a-Mail?.. Бухгалтерская почта

Время на прочтение8 мин
Просмотры6.1K


В соответствии с замыслом, a-Mail (accounting mail, то есть бухгалтерская почта) – ближайший родственник электронной почты e-mail. Отличие в том, что по электронной почте данные передаются в произвольном текстовом виде, а по бухгалтерской почте – в формализованном, предназначенном для автоматического размещения в учетной базе пользователя. Фактически речь идет стандарте обмена данными между бухгалтерскими программами.

Стандарт реализован в ходе проекта «Учетная Логика». Данная история разворачивалась на Хабре в течение трех лет и теперь, похоже, близка к завершению.

Под катом находится краткое описание стандарта a-Mail и сетевых возможностей «Учетной Логики» версии 3.0 (в предыдущих версиях данная функция отсутствовала).
Читать дальше →

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