В жизни нередко бывают ситуации когда нужно просто сесть и сделать какое-то дело, не забивая себе голову вопросами вроде "а что это даст?", "а кому это нужно?" и т. п. Написание монады IO —
безусловно именно такой случай. Поэтому под катом находится рассказ о том как написать монаду IO
на C#, без малейших попыток объяснить зачем это делать.
Рубрика «C#» - 115
Как написать монаду IO на C# (не) без помощи параллельной вселенной и машины времени
2016-05-04 в 10:41, admin, рубрики: C#, haskell, Вселенная, машина времени, монада IO, ненормальное программирование, функциональное программированиеSasha Goldshtein, гуру .NET Performance, выступит на .NET-конференции в Питере
2016-05-04 в 7:43, admin, рубрики: .net, ASP, C#, dotnext, microsoft mvp, mvp, Блог компании JUG.ru Group, доклады, звезды, конференцияВ июне к нам на конференцию DotNext приедут две звезды .NET-программирования мирового уровня — Dino Esposito и Sasha Goldshtein.
Оба наших супергостя знамениты двумя вещами:
- они авторы прекрасных книг;
- они замечательные спикеры.
Про Дино я уже пару раз писал, и наверное напишу и в этот раз. А сегодня я расскажу вам про Сашу.
Саша Голдштейн / Sasha Goldshtein
Саша Голдштейн — ведущий мировой эксперт по производительности .NET-платформы, восьмикратный Microsoft MVP, автор прекрасной (и, наверное, единственной) серьезной книги по производительности .NET «Pro .NET Performance» (eng, rus).
Валидация: внутри сущностей или снаружи?
2016-05-03 в 13:52, admin, рубрики: .net, C#, command, DDD, srp, валидация, Программирование, Проектирование и рефакторинг, Совершенный код, чистый кодОбратите внимание, что хотя пост написан от первого лица, это перевод статьи из блога Jimmy Bogard, автора AutoMapper.
Меня часто спрашивают, особенно в контексте архитектуры вертикальных слоев (vertical slice architecture), где должна происходить валидация? Если вы применяете DDD, вы можете поместить валидацию внутри сущностей. Но лично я считаю, что валидация не очень вписывается в ответственность сущности.
Часто валидация внутри сущностей делается с помощью аннотаций. Допустим, у нас есть Customer и его поля FirstName/LastName обязательны:
public class Customer
{
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
}
Проблем с таким подходом две:
- Вы изменяете состояние сущности до валидации, то есть ваша сущность может находиться в невалидном состоянии
- Неясен контекст операции (что именно пытается сделать пользователь)
И хотя вы можете показать ошибки валидации (обычно генерируемые ORM) пользователю, не так-то просто сопоставить исходные намерения и детали реализации состояния. Как правило, я стараюсь избегать такого подхода.
Читать полностью »
Как мы перестали бояться тикетов на UI
2016-05-03 в 13:31, admin, рубрики: .net, ASP, ASP.NET, C#, javascript, JS, React, ReactJS, Блог компании Mindbox Всем привет.
Прошло уже больше года с тех пор, как мы начали использовать ReactJS в нашей разработке, и мы наконец созрели для того, чтобы поделиться тем, насколько счастливее стала наша компания после этого. В этой статье я собираюсь рассказать о причинах, которые привели нас к использованию этой библиотеки и о том, как мы её используем.
Небольшой комментарий по поводу форматирования статьи. Небольшие листинги я привожу как есть. Все скриншоты и большие листинги я заворачиваю в спойлеры, так как мне кажется, что так читать статью удобнее
А вообще зачем всё это
Мы — маленькая компания, наш штат — порядка 50 человек, 20 из которых — разработчики. Сейчас у нас 4 команды разработки, в каждой из которых сидит примерно по 5 fullstack разработчика. Но одно дело — называть себя fullstack-разработчиком, а другое дело — действительно разбираться одинаково хорошо в тонкостях работы SQL Server'а, ASP.NET, разработке на C#, разбираться в OOP, DDD, знать HTML, CSS, JS и уметь этим всем разумно пользоваться. Конечно же каждый разработчик тяготеет к чему-то своему, но все мы так или иначе специалисты именно в разработке на .NET и 90% кода мы пишем на C#.
Наш продукт — система автоматизации маркетинга — подразумевает довольно большой объем настроек для каждого конкретного клиента, и для того, чтобы наши менеджеры могли заниматься этой самой настройкой продукта под клиентов, у нас есть административный сайт, в котором можно заводить рассылки, создавать триггеры и другие механики, кастомизировать сервисы и многое другое. Этот административный сайт содержит довольно много различного нетривиального UI'а, и чем сильнее мы углубляемся, чем более тонкие моменты мы даём настраивать, чем большее количество фич мы выпускаем в продакшн, тем более интересным он становится. Чтобы не быть голословным, пара скриншотов (уже под катом, и скриншотов там отнюдь не пара!):
Читать полностью »
Xamarin Forms в действии. Medchest Assistant
2016-04-28 в 14:59, admin, рубрики: C#, github, mobile, Блог компании DataArt, Программирование, разработка, разработка мобильных приложений, Разработка под android, разработка под iOS
Автор: Константин Марс
Когда мы пришли на Medtech Hackathon, нашей целью было создать простой и легковесный инструмент для пользователей, которые хотят вести учет аптечки и вовремя получать оповещения об истечении срока годности препаратов, чтобы приобрести новые.
Мы долго колебались с выбором платформы между популярной и престижной iOS и модным, современным и приятным в разработке Android. Поэтому я предложил использовать Xamarin, который, между прочим, использует C# как основной язык разработки (и это главный язык, на котором в повседневной жизни пишет организатор нашей команды Арсений). Таким образом мы подошли к началу путешествия в мир кроссплатформенной разработки с Xamarin.
Читать полностью »
Миллион и один день INotifyPropertyChanged
2016-04-27 в 21:23, admin, рубрики: C#, c# оgтимизация WPF, разработка под windows, метки: c# оgтимизация WPFОптимизации пользовательского интерфейса посвящается.
Пользовательский интерфейс должен быть быстрым, очень быстрым, невероятно быстрым.
В попытках сэкономить наносекунды за частую упускаются места где можно экономить секунды. Забавно, однажды на мое возмущение о двух секундной от рисовке небольшого списка, я получил ответ «Дабпиэф ничего не поделаешь», серьезно? Изучая всевозможные варианты реализации INotifyPropertyChanged habrahabr.ru/post/281294 возникает вопрос об идеальном балансе производительности пользовательского интерфейса и разработчика, который занимается этим интерфейсом. Захотелось понять как повлияет на работу интерфейса выбор конкретной реализации.
Читать полностью »
Xamarin SDK в Open Source и многое другое на Xamarin Evolve 2016
2016-04-27 в 20:58, admin, рубрики: .net, android, C#, evolve 2016, iOS, Mono и Moonlight, Visual Studio, xamarin, xamarin test cloud, XAML, Блог компании Microsoft, разработка мобильных приложений
Невероятное количество событий произошло в этому году и несомненно присоединение компании Xamarin к Microsoft одно из самых ярких. Казалось, после анонсов на конференции Build 2016, удивить разработчиков кросс-платформенных приложений и поклонников фреймворка Xamarin совершенно нечем, однако, сегодня на конференции Evolve 2016, команде Xamarin это удалось.
Xamarin SDK, как и было обещано, сегодня официально стал проектом с открытым исходным кодом, и у всех желающих появилась возможность приложить собственные усилия к развитию этой технологии. Открыты bindings API для iOS, Android и Mac, инструменты командой строки, Xamarin.Forms и т.д. Подробности по ссылке: open.xamarin.com
Читать полностью »
Взрывная волна в Unity3D (displacement shader)
2016-04-27 в 10:51, admin, рубрики: C#, Gamedev, shaders, unity3d, Программирование, разработка игр Всем привет, пишу небольшую 2D игру и параллельно хотел бы рассказывать о реализации некоторых вещей в Unity3D.
Программирование графики само по себе очень интересное занятие с безграничным количеством вариаций результата. В этой статье опишу реализацию искажения пространства от взрывной волны.
Читать полностью »
Автономный ftp-client с докачкой файлов
2016-04-27 в 10:45, admin, рубрики: .net, C#, ПрограммированиеХочу поделиться своим опытом в разработке автономного ftp клиента.
В наличии имеется ftp-сервер, на котором периодически появляются данные в виде графических изображений и текстовых файлов, их размер варьируется от десятков килобайт до пары гигабайт. Доступ в интернет может быть через провод, а может быть через GSM-свисток или вообще по спутнику, то есть стабильным и нестабильным соответственно. Во втором случае резко повышается вероятность потери соединения из-за погодных условий, географического положения и т.п.
Итак, требования к клиенту следующие:
- Опрос ftp-сервера на наличие новых файлов и их последующая загрузка.
- В случае внезапной остановки загрузки (будь то обрыв соединения, или упадёт система, на которой стоит мой ftp-клиент), закачка должна продолжиться при первой возможности.
- Ограничение скорости загрузки (это связано со стоимостью трафика по GSM).
Если интересен мой способ решения задачи, прошу под кат!
Читать полностью »
Подключайтесь к онлайн-трансляции! Открытие конференции Xamarin Evolve 27 апреля
2016-04-26 в 8:34, admin, рубрики: .net, C#, Conference, cross-platform development, Mono и Moonlight, Visual Studio, xamarin, Блог компании Microsoft, разработка мобильных приложенийЕще больше новостей про Xamarin ожидает разработчиков на конференции Xamarin Evolve — 27 апреля!
Xamarin Evolve — крупнейшая конференция, посвященная созданию кросс-платформенных мобильных решений, в мире. В этом году мероприятие собирает 1500 разработчиков, лидеров индустрии и экспертов Xamarin для обсуждения современных стратегий и будущего мобильных приложений.
Не пропустите ключевой доклад конференции Evolve 2016. Онлайн-трасляция начинется 27 апреля (среда) в 16:00 (МСК).
Подключайтесь и смотрите на официальном сайте мероприятия.
Большое количество интересных сессий с не менее интересными докладчиками:
Читать полностью »