Как стать автором
Обновить
35
0
Дзеранов Иосиф @JosefDzeranov

Net Developer

Отправить сообщение

Как работает конфигурация в .NET Core

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

Давайте отложим разговоры о DDD и рефлексии на время. Предлагаю поговорить о простом, об организации настроек приложения.


После того как мы с коллегами решили перейти на .NET Core, возник вопрос, как организовать файлы конфигурации, как выполнять трансформации и пр. в новой среде. Во многих примерах встречается следующий код, и многие его успешно используют.


public IConfiguration Configuration { get; set; }
public IHostingEnvironment Environment { get; set; }

public Startup(IConfiguration configuration, IHostingEnvironment environment)
{
   Environment = environment;
   Configuration = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .AddJsonFile($"appsettings.{Environment.EnvironmentName}.json")
            .Build();
}

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

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

.NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 1

Время на прочтение18 мин
Количество просмотров71K
Публикую на Хабр оригинал статьи, перевод которой размещен в блоге Codingsight.
Вторая часть доступна здесь

Необходимость делать что-то асинхронно, не дожидаясь результат здесь и сейчас, или разделять большую работу между несколькими выполняющими ее единицами была и до появления компьютеров. С их появлением такая необходимость стала очень ощутимой. Сейчас, в 2019, набирая эту статью на ноутбуке с 8 ядерным процессором Intel Core, на котором параллельно этому работает не одна сотня процессов, а потоков и того больше. Рядом, лежит уже немного потрепанный, купленный пару лет назад телефон, у него на борту 8 ядерный процессор. На тематических ресурсах полно статей и видео, где их авторы восхищаются флагманскими смартфонами этого года куда ставят 16ти-ядерные процессоры. MS Azure предоставляет менее чем за 20$/час виртуальную машину со 128 ядерным процессором и 2 TB RAM. К сожалению невозможно извлечь максимум и обуздать эту мощь не умея управлять взаимодействием потоков.
Читать дальше →
Всего голосов 34: ↑34 и ↓0+34
Комментарии5

Представлен .NET 5

Время на прочтение7 мин
Количество просмотров67K
6 мая было объявлено, что следующим после .NET Core 3.0 релизом будет .NET 5. Это будет следующий большой релиз в семействе .NET.

В будущем останется только один .NET, и вы сможете использовать его для разработки под Windows, Linux, macOS, iOS, Android, tvOS, watchOS, WebAssembly и другие платформы.

Мы представим новые .NET API, возможности исполняющей среды и возможности языка как части .NET 5.


Читать дальше →
Всего голосов 71: ↑68 и ↓3+65
Комментарии201

Эти занимательные региональные настройки

Время на прочтение8 мин
Количество просмотров29K
Сегодня мы поговорим о региональных настройках. Но сперва — небольшая задачка: что выведет нижеприведённый код? (Код приведён на языке C#, но рассматривается достаточно общая проблематика, так что вы можете представить на его месте какой-нибудь другой язык.)

Console.WriteLine((-42).ToString() == "-42");
Console.WriteLine(double.NaN.ToString() == "NaN");
Console.WriteLine(int.Parse("-42") == -42);
Console.WriteLine(1.1.ToString().Contains("?") == false);
Console.WriteLine(new DateTime(2014, 1, 1).ToString().Contains("2014"));
Console.WriteLine("i".ToUpper() == "I" || "I".ToLower() == "i");

Сколько значений true у вас получилось? Если больше 0, то вам не мешает узнать больше про региональные настройки, т. к. правильный ответ: «зависит». К сожалению, многие программисты вообще не задумываются о том, что настройки эти в различных окружениях могут отличаться. А выставлять для всего кода InvariantCulture этим программистом лениво, в результате чего их прекрасные приложения ведут себя очень странно, попадая к пользователям из других стран.Ошибки бывают самые разные, но чаще всего связаны они с форматированием и парсингом строк — достаточно частыми задачами для многих программистов. В статье приведена краткая подборка некоторых важных моментов, на которые влияют региональные настройки.

CultureInfoExplorer Sceenshot
Читать дальше →
Всего голосов 57: ↑53 и ↓4+49
Комментарии32

Четыре реальные истории работы с микросервисной архитектурой — отчёт с митапа Backend United 3: Холодец

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

На третьей встрече из серии Backend United мы с коллегами из Booking, Dodo Pizza и Авито обменялись опытом работы с микросервисной архитектурой. Говорили о распилах, монолитах и всём, что за этим стоит. Этот пост — отчёт о том, как прошёл митап. Внутри — видеозаписи, презентации спикеров, ссылки на фотоотчёт и отзывы участников встречи.


Всего голосов 24: ↑24 и ↓0+24
Комментарии3

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

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

Пролог: internal is new public


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


image

Случился такой проект и в моей жизни. Очередной. Причём делаю я его под добровольным надзором, где за каждой моей строчкой следят. Соответственно, уже не только хотелось, но и надо было делать всё правильно. Одним из «правильно» было «чти инкапсуляцию и закрывайся по максимуму, потому что открыться всегда успеешь, а закрыться обратно потом будет поздно». И поэтому я везде, где только мог, стал использовать для классов модификатор доступа internal вместо public. И, естественно, когда ты начинаешь активно использовать новую для тебя фичу языка, возникают некоторые нюансы. О них по порядку и хочу рассказать.

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

Как не понимать принципы развития архитектуры SOLID

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

Есть проблема с описанием и толкованием принципов развития архитектуры SOLID (авторства Роберта Мартина). Во многих источниках дается их определение и даже примеры их использования. Изучая их и пробуя использованием примерить на себя, стабильно ловил себя на мысли, что не хватает объяснения магии их применения. И пытаясь увидеть внутренние шестеренки, понять — и для меня значит запомнить — разложил их по своим "терминам-полочкам". Хорошо если это будет полезно еще кому-нибудь.


image

Читать дальше →
Всего голосов 27: ↑23 и ↓4+19
Комментарии14

Где обучать детей программированию?

Время на прочтение4 мин
Количество просмотров23K
Ежегодно HeadHunter проводит “Школу программистов”, где обучает студентов и молодых специалистов всем хитростям разработки, а также работе в команде. Помимо языков программирования ребята изучают основы дизайна, тонкости командной разработки.

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

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

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

Повторение для программиста: почему важно решать схожие проблемы

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


От переводчика: сегодня публикуем для вас статью начинающего разработчика Эми Хаддад. В ней рассказывается, почему программистам стоит возвращаться к уже решенным проблемам.

Многие разработчики дают один и тот же совет: решайте столько проблем, сколько возможно, чтобы постоянно получать новый опыт и знания. Это хороший совет, поскольку решение проблем с кодом позволяет учиться новому и совершенствовать уже существующие навыки. Но я считаю важным еще и повторение: одну и ту же проблему можно решать по-разному. И такое повторение тоже позволяет программисту получить профит в виде совершенствования навыков.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии0

Разработчик SearchFace о возможностях алгоритма

Время на прочтение2 мин
Количество просмотров106K
Всем привет, я один из разработчиков сервиса SearchFace и готов поговорить о нём в комментариях.



Из-за шумихи с иском ВК на второй план отошло то важное, ради чего мы запустили сервис — чтобы протестировать возможности поиска. А раз уж теперь сервис доступен широкой публике, хочется продемонстрировать всем, на что способны наши алгоритмы распознавания.
Читать дальше →
Всего голосов 204: ↑200 и ↓4+196
Комментарии261

Примеры использования Moq

Время на прочтение8 мин
Количество просмотров154K
Moq – это простой и легковесный изоляционный фреймврк (Isolation Framework), который построен на основе анонимных методов и деревьев выражений. Для создания моков он использует кодогенерацию, поэтому позволяет «мокать» интерфейсы, виртуальные методы (и даже защищенные методы) и не позволяет «мокать» невиртуальные и статические методы.

ПРИМЕЧАНИЕ
На рынке существует лишь два фрейморка, позволяющих «мокать» все, что угодно. Это TypeMockIsolator и Microsoft Fakes, доступные в Visual Studio 2012 (ранее известные под названием Microsoft Moles). Эти фреймворки, в отличие от Moq, используют не кодогенерацию, а CLR Profiling API, что позволяет вклиниться практически в любой метод и создать моки/стабы даже для статических, невиртуальных или закрытых методов.
Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии3

F# меня испортил, или почему я больше не хочу писать на C#

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

Раньше я очень любил C#


Это был мой основной язык программирования, и каждый раз, когда я сравнивал его с другими, я радовался тому, что в свое время случайно выбрал именно его. Python и Javascript сразу проигрывают динамической типизацией (если к джаваскрипту понятие типизации вообще имеет смысл применять), Java уступает дженериками, отстутствием ивентов, value-типов, вытекающей из этого карусели с разделением примитивов и объектов на два лагеря и зеркальными классами-обертками вроде Integer, отсутствием пропертей и так далее. Одним словом — C# клевый.


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


А потом я из любопытства попробовал F#.

Читать дальше →
Всего голосов 82: ↑79 и ↓3+76
Комментарии327

Эффективные личные финансы. Уровень 1

Время на прочтение8 мин
Количество просмотров205K
Я решил написать эту статью для сотрудников нашей компании, так как понял, что они очень образованные и умные люди, но не перестают беспокоиться о пенсионной реформе
эффективно обращаться с финансами их никто не научил. Как руководитель, заботящийся не только о своем благосостоянии, но и о благосостоянии своих коллег, я постарался взять на себя роль финансового наставника. А мои наставления о том, как стать финансово-эффективным вы можете прочесть под катом.


Читать дальше →
Всего голосов 55: ↑45 и ↓10+35
Комментарии119

Стэн Драпкин. Ловушки высокоуровневой криптографии в .NET

Время на прочтение21 мин
Количество просмотров11K
Стэн Драпкин — эксперт по безопасности и комплаенсу, имеющий более чем 16 лет опыта работы с .NET Framework (начиная с .NET 1.0-beta в 2001 году). К сожалению, сам он не пишет статьи на русском языке, поэтому мы договорились с ним выпустить перевод его доклада с DotNext Piter. Этот доклад занял первое место на конференции!

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



Под катом — видео, слайды и перевод. Приятного прочтения!
Читать дальше →
Всего голосов 35: ↑35 и ↓0+35
Комментарии8

Python для ребёнка: выбор самоучителя

Время на прочтение8 мин
Количество просмотров123K
Python для ребёнка: выбор книги для самостоятельного изучения языка в 2018 году

Мой сын заинтересовался программированием на Python, и у меня появился вопрос – есть ли сегодня возможность купить книгу для ребёнка в качестве самоучителя? Самоучители для взрослых детям не подходят – мотивации продираться самостоятельно через учебники программирования и у взрослых не всегда хватает, а у ребёнка скучное «академическое» изложение вообще может убить весь интерес к предмету на пятой странице.

К счастью, на момент написания статьи (конец 2018 года) выбор оказался весьма широк – есть как переводные, так и отечественные книги, нацеленные на детскую и подростковую аудиторию. В ходе поиска, отсеяв книги по Python 2, я смог найти 10 свежих книг по Python 3 для детей, изучил каждую их них вживую в офлайн-магазинах, и результатами своих изысканий хочу поделиться с вами в статье под катом.
Читать дальше →
Всего голосов 47: ↑45 и ↓2+43
Комментарии54

Бэкендеры всех стран объединились. Рассказываем, как прошел Backend United #2

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

22 сентября мы провели Backend United #2: Фарш — встречу, посвященную тестированию бэкенда. Говорили о приемах тестирования бэкенда, его отличиях в разных языках. Обсуждали CDC-подход к тестированию микросервисов — почему в Авито используют нативные тесты, написанные на языках сервисов-потребителей. Рассказали о механике и сложностях внедрения Pact — наборе библиотек, которые реализуют Consumer-Driven Contract подход в тестировании API. И узнали, как в микросервисной архитектуре создать честные и эффективные изоляционные тесты.


Под катом делимся впечатлениями, фото, видео, презентациями со встречи и отзывами слушателей.


Про Фарш
Всего голосов 29: ↑28 и ↓1+27
Комментарии0

Если вы не нанимаете джунов, то не заслуживаете сеньоров

Время на прочтение9 мин
Количество просмотров53K
Позвольте рассказать вам историю об одной очень успешной компании, совершившей большую, глупую ошибку:
Мы не нанимаем младших программистов и интернов… Если не заводить щенка, не придётся убирать лужи.
--Netflix

Я был совершенно поражён, как некое корпоративное нечто умудрилось представить щенков в отрицательном свете, да ещё кого-то этим убедило. Щенки — самые чистые создания на Земле, живая пушистая радость! Лучики света в одиноком мире. Но перейдём к сути.

Многие компании последовали данной стратегии «нанимать только сеньоров». Они обосновывают это так:
  • У нас нет времени и ресурсов нанимать младших программистов; мы слишком быстро развиваемся.
  • Наша компания может себе позволить сеньоров, так что в джунах нет необходимости.
  • На текущем этапе мы не можем позволить себе ошибки. Ставки слишком высоки.
  • Наш процесс предоставляет сотрудникам большую автономность. Мы не готовы держать джунов за ручку, как они в том нуждаются.
  • Мы хотим заложить фундамент продукта прежде, чем начнём нанимать неопытных сотрудников.
Читать дальше →
Всего голосов 81: ↑71 и ↓10+61
Комментарии281

Советы студентам-программистам

Время на прочтение7 мин
Количество просмотров37K
Привет, Хабр! Представляю вашему вниманию перевод статьи "Advice for programming students".

Есть много вещей, которые я хотел бы знать, когда я начал свое путешествие в качестве студента-программиста. С тех пор прошло почти 10 лет, и, к сожалению, я не могу поделиться своим опытом и знаниями с моим прошлым «я», только с моими младшими коллегами. Этот пост состоит из некоторых полезных советов, которые я хотел бы услышать, когда мне было 18 лет.
Читать дальше →
Всего голосов 31: ↑25 и ↓6+19
Комментарии38

Книга «Программирование для детей. От основ к созданию роботов»

Время на прочтение1 мин
Количество просмотров11K
image Нашу жизнь невозможно представить без разнообразных цифровых устройств. Ноутбуки, планшеты, мобильники и другие гаджеты доступны детям буквально с рождения. «Разум» внедряется в привычные вещи — пылесосы, стиральные машины, холодильники, автомобили. Как не потеряться в этом мире? Как управлять умными вещами? Вероника и Игорь Воронины просто и увлекательно рассказывают о программировании, роботах, передаче зашифрованных посланий и многом другом. Книга научит основам программирования и созданию собственного робота, который будет выполнять команды. Теперь всё в руках родителя и ребенка. Изобретателем может стать каждый!
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии11

Краткий экскурс в GraphQL

Время на прочтение12 мин
Количество просмотров22K
Привет, Хабр!


Именно кратким экскурсом в язык запросов GraphQL послужит вам книга Алекса Бэнкса и Евы Порселло, которую мы отдали в перевод пару дней назад. Книга этих же авторов о React и Redux стала настоящим бестселлером (ждем 5-й тираж из типографии). Кстати, спасибо всем, кто указал нам на неточности в коде и терминах ;) книгу по столь быстро устаревающей технологии мы делали излишне быстро.

Автор сегодняшней статьи Робин Вирух также работает над книгой о GraphQL и библиотеках для этого языка, а в сегодняшней статье кратко объясняет достоинства и характерные особенности GraphQL как альтернативы REST
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии18

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность