.NET 6 в процессе разработки, и я хотел поделиться некоторыми из моих любимых новых API в .NET и ASP.NET Core, которые вам обязательно понравятся. Почему они понравятся? Потому что они разработаны при прямом участии нашего фантастического сообщества разработчиков .NET. Подробнее в статье.
Software Developer
Что нового в .NET 6?
На момент написания этих строк вышло уже семь превью-версий .NET 6. Дальше — только релиз-кандидаты. Все основные фичи уже добавлены во фреймворк, идёт отладка, тестирование и оптимизация. Ожидать чего-то кардинально нового в RC-версиях, пожалуй, уже не стоит. Пришла пора рассмотреть .NET 6 поближе.
Пресс-релиз для каждой версии содержит огромное количество восхвалений и убеждений в том, что теперь-то всем станет ещё лучше, и как мы вообще жили раньше — уму непостижимо. Где-то авторы не врут, где-то не договаривают, где-то преувеличивают. Пришлось тщательно прочитать все семь пресс-релизов, изучить массу смежных материалов и просмотреть огромное количество тикетов на Гитхабе. Всё для того, чтобы понять, чем они там занимаются и что выкатывают нам посмотреть.
Поговорим об этом.
Даты, время и часовые пояса: улучшения в .NET 6
Материал переведен. Ссылка на оригинал
В этой статье я расскажу о грядущих улучшениях в .NET 6, затрагивающих даты, время и часовые пояса. Все, о чем здесь говорится, вы можете опробовать сами — эти возможности будут доступны, начиная с версии .NET 6 Preview 4.
Мы рассмотрим следующие темы:
Generic Math: суперфича C#, доступная в .NET 6 Preview 7
10 августа 2021 года Microsoft в блоге опубликовала информацию о свежевыпущенном .NET 6 Preview 7.
Помимо добавления очередной порции синтаксического сахара, расширения функционала библиотек, улучшения поддержки UTF-8 и т.д., в данное обновление была включена демонстрация суперфичи — абстрактные статические методы интерфейсов и реализованная на её основе возможность использования арифметических операторов в дженериках.
Функциональное программирование — это не то, что нам рассказывают
Функциональное программирование — это очень забавная парадигма. С одной стороны, про неё все знают, и все любят пользоваться всякими паттерн матчингами и лямбдами, с другой на чистом ФП языке обычно мало кто пишет. Поэтому понимание о том, что же это такое восходит больше к мифам и городским легендам, которые весьма далеко ушли от истины, а у людей складывается мнение, что "ФП подходит для всяких оторванных от жизни программок расчетов фракталов, а для настоящих задач есть зарекомендовавший себя в бою проверенный временем ООП".
Хотя люди обычно признают удобства ФП фич, ведь намного приятнее писать:
int Factorial(int n)
{
Log.Info($"Computing factorial of {n}");
return Enumerable.Range(1, n).Aggregate((x, y) => x * y);
}
чем ужасные императивные программы вроде
int Factorial(int n)
{
int result = 1;
for (int i = 2; i <= n; i++)
{
result *= i;
}
return result;
}
Так ведь? С одной стороны да. А с другой именно вторая программа в отличие от первой является функциональной.
Как же так, разве не наоборот? Красивый флюент интерфейс, трансформация данных и лямбды это функционально, а грязные циклы которые мутируют локальные переменные — наследие прошлого? Так вот, оказывается, что нет.
Монады как паттерн переиспользования кода
В предыдущей статье мы обсуждали, почему функциональное программирование это совсем не то, что распиарено, и что оно совершенно не противоречит ООП, так, что даже сам "Дядя Боб" пишет про хороший ФП дизайн порождающий хороший ООП дизайн программы (и наоборот).
Сейчас же я хочу рассказать, что такое монады на самом деле, чем они полезны для обычного практикующего разработчика, и приведу примеры, почему недостаточная поддержка их в распространенных языках приводит к копипасте и ненадежным решениям.
Но ведь в интернете буквально сотни статей про ФП и монады, зачем писать еще одну?
Дело в том, что все их (по крайней мере те что я читал) можно поделить условно на две категории: с одной стороны это статьи где вам объяснят что монада это моноид в категории эндофункторов, и что если монада T над неким топосом имеет правый сопряжённый, то категория T-алгебр над этой монадой — топос. На другой стороне располагаются статьи, где вам рассказывают, что монады — это коробки, в которых живут собачки, кошечки, и вот они из одних коробок перепрыгивают в другие, размножаются, исчезают… В итоге за горой аналогий понять что-то содержательное решительно невозможно.
Получается, что первые обычно полезны тем, кто и так знает обсуждаемую тему, а вторые даже не знаю на кого рассчитаны: сколько я их не прочитал, ничего полезного понять из них мне не удалось.
Я же хотел бы занять промежуточную позицию, и рассказать про монады без заумных терминов, но и без котиков, используя понятные ООП разработчикам термины: интерфейсы, паттерны, копипаста, инкапсуляция сложности, бойлерплейт, и так далее. В процессе работы над статьёй ни один термин теории категории использован не был.
Почему не все тестовые задания одинаково полезны: разбор одного фееричного провала
Всем привет, это PsyHaSTe и сегодня я хотел бы рассказать о том, куда меня занесла нелегкая в процессе оптимизации и рефакторинга кода решения тестового задания из статьи товарища novar (кто пропустил — рекомендую ознакомиться). Какие проблемы были у этого решения? Почему все-таки человеку отказали в работе? Что можно с этим сделать? Ответы на эти и многие другие вопросы оказались слишком длинными для комментария и вылились в статью с подробным разбором, примерами и альтернативной реализацией задания.
Если вам интересно кто в здравом уме мог для выполнения поставленной задачи написать код сочетающий монады с goto, а также одновременно сократил объем кода и увеличил его производительность, то добро пожаловать под кат. И, конечно же, самое вкусное, связанное с оптимизациями на базе работы JIT — в конце. Итоговую версию решения тестового можно посмотреть на гитхабе по ссылке.
Подводные камни при работе с enum в C#
C# имеет низкий порог вхождения и прощает многое. Серьёзно, на этом языке преспокойно можно писать, не особо понимая, как всё работает под капотом, и не забивать голову. Однако со временем приходится сталкиваться с разными нюансами. Сегодня рассмотрим один из них — работу с перечислениями.
Подводные камни HttpClient в .NET
Достаточно частая проблема в программировании — то, что разработчики сфокусированы только на функциональных возможностях того или иного компонента, при этом совершенно не учитывают очень важную нефункциональную составляющую, которая может влиять на производительность, масштабируемость, легкость восстановления в случае сбоев, безопасность и т.д. Например, тот же HttpClient — вроде бы и элементарный компонент, но есть несколько вопросов: сколько он создает параллельных соединений к серверу, как долго они живут, как он себя поведет, если DNS имя, к которому обращался ранее, будет переключено на другой IP адрес? Попробуем ответить на эти вопросы в статье.
Лурк, великий и ужасный: восход и закат энциклопедии рунета
Шёл далёкий уже 2006 год: время мемной революции, удешевления доступа к сети и стремительного роста населения рунета. Из «сделанной из разного и палок пристройки к настоящей англоязычной сети» рунет на глазах превращался в самобытное информационное пространство. Медвед и Ктулху были повсюду, расцветали ЖЖ, дайри, бесконечные форумы на всевозможные темы. Имиджборды бурлили уходящими в небытие тредами, полными контркультурного андерграунда и всевозможной дичи, превращаясь в реакторы самого неожиданного и яркого контента.
Почему ты не будешь доволен результатами твоего performance review
Syn ack, Хабр!
Если ты зашел сюда, то скорее всего уже знаешь, что такое performance review и скорее всего ты недоволен его результатами:
Как видишь ты не один и в этой статье мы поговорим, почему твое ревью не оправдывает твоих ожиданий.
Как бесплатно поступить в Стэнфорд, Гарвард, MIT: опыт Дильназ Камаловой
Ontol — это github для бесплатных текстов и видео, которые оказывают значимое влияние на жизнь и судьбу человека.
Годы, проведенные в университете — самые определяющие в жизни человека, и от того, какой университет вы выбрали, колоссально зависит ваша дальнейшая судьба. Но иногда, увы, этот выбор сделан рандомно и халатно, а иногда и «под давлением» друзей, семьи, военкомата, халявы (дипломов с олимпиад), районной администрации, государства, и человек поступает в университет номер 461, а в универститеты номер 1, 2, 3, 4, 5 он даже не посмел подать заявку (если вообще знал о их существовании).
Каждый может поступить в Стэнфорд и MIT бесплатно. Сегодня я начинаю серию публикаций и интервью, которые призваны бороться с выученной беспомощностью школьников и разрушать интеллектуальный железный занавес, который закрепощает учеников внутри границ одной страны. Слово Дильназ Камаловой:
Я учусь в выпускном классе школы НИШ Алматы. Занимаюсь робототехникой и развитием индивидуальных проектов. В апреле этого года узнала, что поступила в 6 вузов США. А именно в Принстонский, Стэндфордский, Гарвардский, университет Райса, Лихайский, университет Дьюк.
Во все университеты я подавала заявку на полную финансовую помощь, не только на обучение, но и на ежедневные расходы, питание и проживание.
Я делюсь личным опытом в надежде, что это будет полезно кому-то и станет некой дозой мотивации.
Обход графа: поиск в глубину и поиск в ширину простыми словами на примере JavaScript
Представляю вашему вниманию перевод статьи «Algorithms on Graphs: Let’s talk Depth-First Search (DFS) and Breadth-First Search (BFS)» автора Try Khov.
Что такое обход графа?
Простыми словами, обход графа — это переход от одной его вершины к другой в поисках свойств связей этих вершин. Связи (линии, соединяющие вершины) называются направлениями, путями, гранями или ребрами графа. Вершины графа также именуются узлами.
Двумя основными алгоритмами обхода графа являются поиск в глубину (Depth-First Search, DFS) и поиск в ширину (Breadth-First Search, BFS).
Несмотря на то, что оба алгоритма используются для обхода графа, они имеют некоторые отличия. Начнем с DFS.
Выгорание, поставленное на поток. Как в Китае работает система «Третий глаз», и почему программисты из-за нее умирают
В крупнейших китайских IT-компаниях действует система наблюдения под названием Ди Сан Цзи Янь, «Третий глаз». Она получает данные из камер в офисах и из ноутбуков каждого человека, чтобы определить, кто стоит повышения, а кого нужно уволить. «Третий глаз» позволяет отслеживать экраны программистов в режиме реального времени, записывать их чаты, их активность в браузере и каждое редактирование документа. Часть компаний устанавливают систему даже в туалетах.
Программа автоматически отмечает «подозрительное поведение», такое как посещение сайтов поиска работы или платформ с потоковым видео. Отчеты генерируются еженедельно, суммируя время, потраченное на «непрофильные» веб-сайты и приложения. Даже если вы посещали их в свое обеденное время или сидя в уборной.
Дальше это может убрать у вас перспективы карьерного роста и повышения зарплаты. Выводы системы также используются в качестве доказательства, когда компания хочет уволить определенных людей. Главное, за чем следит система — чтобы вы не проводили ни минуты рабочего времени за «лишними активностями». Некоторые программисты из-за неё уже совершили суицид, другие — умерли от измождения.
Изучаем Docker, часть 3: файлы Dockerfile
→ Часть 1: основы
→ Часть 2: термины и концепции
→ Часть 3: файлы Dockerfile
→ Часть 4: уменьшение размеров образов и ускорение их сборки
→ Часть 5: команды
→ Часть 6: работа с данными
Бублики — это инструкции в файле Dockerfile
Что я не знал про образование
Я тут полез изучать опыт школьных учителей в педагогике, — и совершенно внезапно обнаружил кучу важных для управления проектами принципов. В смысле, что я опять хочу познакомить вас со странным человеком и рассказать про его опыт. Итак, знакомьтесь, обычная учительница в астраханской гимназии, Ольга Анисимова, которая порвала мне все шаблоны того, что происходит в обычной школе.
Она не учит детей методам решения задачи, она учит их сначала найти саму задачу, потом прикинуть спектр вариантов подхода, а уже потом — как конкретно получить ответ.
Она относится к детям как ко взрослым во многих аспектах.
Она позволяет себе ошибаться, позволяет детям исправлять свои ошибки и аргументировано спорить с ней. Более того, она иногда специально допускает ошибки, чтобы дети не расслаблялись.
Она разрешает готовить шпаргалки и списывать. Разрешает детям «выпихивать» на ответ того, кто выучил тему. Использует понятную детям игрофикацию для мотивации.
В общем, всё настолько пропитано здравым смыслом, что просто не может и не должно происходить в школе. В чёртовой школе!
Как работает менторство
До какого-то момента самый быстрый способ профессионального роста – это выделяться компетенцией. То есть быть крутым специалистом, который в одно лицо может всё. Это очень комфортная и приятная позиция, потому что вы отвечаете только за себя, не несёте огромных расходов каждый месяц и не делаете ничего такого, что стало бы серьёзным риском.
Правда, вы упираетесь в то, что делать что-то одному невозможно. Слишком долго, слишком сложно, требует кучи разных навыков, либо просто нерационально. В этот момент вы начинаете управлять командой. Команда нужна только для одного: она может сделать то, что не сделает один человек. Мы расплачиваемся за это внутренними издержками на координацию, но получаем больший результат.
Следующий потолок ещё интереснее: выясняется, что бывают задачи, к которым вообще непонятно, как подступаться. Оказывается, что самый быстрый способ — это использовать чей-то опыт, причём приложенный максимально практически к конкретной ситуации. Нужен опытный чувак, который всё знает, всё умеет и вдруг будет вам помогать советом.
Проблема в том, что даже если такой есть, вы ему нафиг не нужны.
Тем не менее, оказывается, менторство так или иначе распространено в бизнесе. Сразу скажу, что этот термин сильно попортили всякие деятели от инфобизнеса. Но я бы хотел поговорить про саму модель, поскольку выглядит она довольно интересно. Не факт, что вы её захотите использовать, но её как минимум стоит понимать.
Считаешь себя синьором? Да кого ты обманываешь
Мой друган в очередной раз объяснял кому-то в уличной курилке, как устроен C#. Я глотнул кофе, закурил и облокотился на ограду, чтобы послушать. Он рассказывал, какие интересные тонкости нашел в сборщике мусора. Говорит, в дотнете он устроен довольно просто снаружи, но очень хитро в деталях реализации.
Я не встревал — просто слушал и мотал на ус. Было 11 утра, я только что закрыл тикет, который от меня ждали завтра, и мог весь оставшийся день слоняться по офису. Витян всегда был очень прокачанным парнем. Он контрибьютил в рослин, изучал сорцы всех инструментов, которыми пользовался, и действительно глубоко шарил в дотнете. Я знал — мне до него как до луны. Но у нас все равно почему-то были одинаковые позиции и зарплаты.
Зачем уметь работать в командной строке?
Сегодня мы поговорим о том, зачем учить операционную систему GNU/Linux, о преимуществах работы в командной строке и о том, как это все связано с философией Unix.
Это не перевод, а мой авторский текст, появившийся в результате долгих чтений комментариев на хабре и других всевозможных интернет ресурсов. Я не ставил целью задеть чьи-то чувства или оскорбить, а любые совпадения случайны. Прошу отнестись с пониманием.
Производная и интеграл — проще некуда
19 декабря 2020 г. на Хабре вышла статья «Интуитивное объяснение интеграла».
В комментариях к ней некоторые пользователи указали, что объяснение получилось не очень интуитивным, например:
“Тема сама по себе интересная, недавно снова повторял курс, но должен сказать, что на мой взгляд, в материале нет изюминки. Автор прав, что в современных изданиях часто даются темы без описания их прикладного применения, из-за чего непонятен смысл их изучения.
Но конкретно интегралы это такая тема, которую надо описать или короче, чем у вас, или намного дольше.
Иначе и школьник не поймет, и те, кто знает, ничего нового не откроют."
Я попробую изложить материал максимально коротко, просто, без подробностей и отсылок. Так, чтобы школьники, наконец, поняли, пусть и с помощью родителей.
Информация
- В рейтинге
- Не участвует
- Откуда
- Россия
- Зарегистрирован
- Активность