Рубрика «.net» - 93

В мире .NET все прекрасно — платформа движется в правильном направлении, новые технологии обкатываются и встают на ноги. В последнее время много разговоров про .NET/ASP.NET Core, и кажется, что все забыли про Roslyn, который предоставляет широкие документированные возможности по работе с кодом как во время рантайма, так и в процессе разработки.
Дивный новый Roslyn: Кому нужны собственные анализаторы кода и скриптинг на C#? - 1

Дивный новый Roslyn: Кому нужны собственные анализаторы кода и скриптинг на C#? - 2Чтобы исправить это, мы взяли интервью у Filip W, Microsoft MVP, контрибьютора Roslyn и просто одного из наиболее популярных в мире ASP.NET блоггеров. Почему Filip считает, что изменения в новом С# могут пройти незамеченными, зачем писать собственные анализаторы кода, а также почему скриптинг на C# лучше, чем любом скриптовом языке?
Читать полностью »

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

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

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

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

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

В последнее время на Хабре появляется достаточно много статей про Tarantool — базу данных и сервер приложений, который используется в Mail.Ru Group, Avito, Yota на разных высоконагруженных проектах. И вот, когда в маленьком стартапе, который я иногда консультирую, возникла необходимость разделения прекрасного, но, к сожалению, монолитного приложения на микросервисы, я подумал: а чем мы хуже других компаний? — и решил посмотреть в сторону Tarantool. Однако, в отличие от большинства компаний, где используется Tarantool, в нашем случае разработка проекта ведётся в Visual Studio на Windows. Предполагается, что даже с переходом на микросервисную архитектуру большинство микросервисов будет написано на языке C#. А Tarantool… Стоит зайти на официальный сайт — и сразу понимаешь: Tarantool даже установить на Windows проблематично, так как на эту операционную систему он не портирован. Как я боролся с такими сложностями, для какого именно микросервиса выбрал Tarantool и как вы можете использовать Tarantool в своих .NET-проектах, я расскажу в данной статье. А пока спойлер — практически все трудности преодолимы, и мой опыт можно без сомнений назвать положительным. Например, на то, чтобы скачать и запустить Tarantool, а потом сделать к нему запрос из кода на языке C#, у меня ушло менее десяти минут. И я покажу вам, как это сделать!

image

Данная статья представляет собой туториал, описывающий работу с Tarantool как таковую. Здесь нет описания проекта, построенного на Tarantool, или сравнения Tarantool с другими продуктами (статей на эту тему и так уже написано достаточно много). Материал родился как попытка ответить на вопрос: а что бы я хотел прочитать, когда только начинал работать с Tarantool. Но вначале немного расскажу, для чего мы, собственно, Tarantool применяем в реальной жизни.

Читать полностью »

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

Хорошо, что AutoCAD предоставляет широкие возможности для разработчиков в области автоматизации процесса проектирования и помогает экономить сотни и тысячи часов работы.
Был разработан специальный плагин на базе .NET, который экспортировал данные из Excel и создавал электрические схемы в AutoCAD.
Читать полностью »

Это продолжение статей:

CEF, ES6, Angular 2, TypeScript использование классов .Net Core. Создание кроссплатформенного GUI для .Net с помощью CEF
CEF, Angular 2 использование событий классов .Net Core

Основная идея этих статей — создание кроссплатформенных приложений на CEF с использованием Angular 2 и .Net Core. Чтобы отвязаться от сервера, используем свежий WebPack и настроим на локальное использование файлов.
Читать полностью »

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

При работе с веб-проектами в Visual Studio существует одна неприятная мелочь — при использовании в процессе разработки нескольких бранчей, каждый из которых должен использовать свою копию окружения (например базу данных, или какие то внешние сервисы), возникает проблема с конфигурационными файлами в момент отладки — IISExpress использует только основной web.config в папке проекта, где обычно всякие connection strings содержат значения по умолчанию и где нет никаких специфичных для бранча настроек, и никаких трансформаций при запуске к нему не применяется. Можно конечно принудительно либо автоматически, либо вручную, применять трансформации к web.config, но во-первых измененный файл будет постоянно висеть в pending changes, что создает риск коммита нежелательных изменений, которые потом попадут в другие бранчи, а во-вторых это создает массу неудобств при его редактировании, поскольку перед коммитом каких-либо изменений в конфигурационном файле такие трансформации придется вручную убирать.

Рассмотрим как этого избежать.
Читать полностью »

Агрессивная экономия энергии при работе от батареи на Windows - 1

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

Читать полностью »

Хочу рассказать о некоторых выводах, которые я сделал после работы над одним из самых посещаемых веб-сайтов в мире.

Подписывание идентификаторов ресурсов и защита API от DDoS-атак - 1

Мне довелось поучаствовать в работе над этим проектом в качестве консультанта. Посещаемость ресурса составляет порядка 200 миллионов уникальных пользователей в месяц. Такая популярность означает и высокий уровень рисков в сфере информационной безопасности, в частности, это риск подвергнуться различным видам атак, самые распространённые среди которых – DDoS. Организация, которую называть не буду, внедрила широкий спектр решений для предотвращения воздействия подобных атак на работоспособность сервиса.
Читать полностью »

Как я создал первую функцию

Mahou — волшебный переключатель раскладок - 1 Все началось с того что я захотел программировать на C#(до создания этой программы у меня было почти что никаких знаний о C#), и была одна программа которая не работала так как я хотел (Punto Switcher) долго-долго я искал к ней альтернативы и ненадолго остановился на dotSwitcher нравилась она мне… Но через некоторое время я решил что ей не хватает функционала и решил посмотреть исходный код, кое-где кое-как я разобрался как все работает, но больше всего не понимал одну вещь — WinAPI, и начал z искать информацию по функциям используемых в dotSwitcher и понемногу я начинал запоминать и понимать смысл всего этого волшебства (так мне тогда казалось).

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js