Как стать автором
Обновить
13
0

Software Developer

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

Новые API в .NET 6

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

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

Читать далее
Всего голосов 21: ↑18 и ↓3+19
Комментарии49

Что нового в .NET 6?

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

На момент написания этих строк вышло уже семь превью-версий .NET 6. Дальше — только релиз-кандидаты. Все основные фичи уже добавлены во фреймворк, идёт отладка, тестирование и оптимизация. Ожидать чего-то кардинально нового в RC-версиях, пожалуй, уже не стоит. Пришла пора рассмотреть .NET 6 поближе.


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


Поговорим об этом.

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

Даты, время и часовые пояса: улучшения в .NET 6

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

Материал переведен. Ссылка на оригинал

В этой статье я расскажу о грядущих улучшениях в .NET 6, затрагивающих даты, время и часовые пояса. Все, о чем здесь говорится, вы можете опробовать сами — эти возможности будут доступны, начиная с версии .NET 6 Preview 4.

Мы рассмотрим следующие темы:

Читать далее
Всего голосов 18: ↑18 и ↓0+18
Комментарии5

Generic Math: суперфича C#, доступная в .NET 6 Preview 7

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

10 августа 2021 года Microsoft в блоге опубликовала информацию о свежевыпущенном .NET 6 Preview 7.

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

Читать далее
Всего голосов 27: ↑27 и ↓0+27
Комментарии87

Функциональное программирование — это не то, что нам рассказывают

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

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



Хотя люди обычно признают удобства ФП фич, ведь намного приятнее писать:


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;
}

Так ведь? С одной стороны да. А с другой именно вторая программа в отличие от первой является функциональной.


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

Читать дальше →
Всего голосов 208: ↑200 и ↓8+251
Комментарии795

Монады как паттерн переиспользования кода

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


В предыдущей статье мы обсуждали, почему функциональное программирование это совсем не то, что распиарено, и что оно совершенно не противоречит ООП, так, что даже сам "Дядя Боб" пишет про хороший ФП дизайн порождающий хороший ООП дизайн программы (и наоборот).


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


Но ведь в интернете буквально сотни статей про ФП и монады, зачем писать еще одну?


Дело в том, что все их (по крайней мере те что я читал) можно поделить условно на две категории: с одной стороны это статьи где вам объяснят что монада это моноид в категории эндофункторов, и что если монада T над неким топосом имеет правый сопряжённый, то категория T-алгебр над этой монадой — топос. На другой стороне располагаются статьи, где вам рассказывают, что монады — это коробки, в которых живут собачки, кошечки, и вот они из одних коробок перепрыгивают в другие, размножаются, исчезают… В итоге за горой аналогий понять что-то содержательное решительно невозможно.


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


Я же хотел бы занять промежуточную позицию, и рассказать про монады без заумных терминов, но и без котиков, используя понятные ООП разработчикам термины: интерфейсы, паттерны, копипаста, инкапсуляция сложности, бойлерплейт, и так далее. В процессе работы над статьёй ни один термин теории категории использован не был.

Читать дальше →
Всего голосов 89: ↑85 и ↓4+100
Комментарии256

Почему не все тестовые задания одинаково полезны: разбор одного фееричного провала

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


Всем привет, это PsyHaSTe и сегодня я хотел бы рассказать о том, куда меня занесла нелегкая в процессе оптимизации и рефакторинга кода решения тестового задания из статьи товарища novar (кто пропустил — рекомендую ознакомиться). Какие проблемы были у этого решения? Почему все-таки человеку отказали в работе? Что можно с этим сделать? Ответы на эти и многие другие вопросы оказались слишком длинными для комментария и вылились в статью с подробным разбором, примерами и альтернативной реализацией задания.


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

Читать дальше →
Всего голосов 94: ↑87 и ↓7+115
Комментарии114

Подводные камни при работе с enum в C#

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

0844_EnumBoxing_ru/image1.png


C# имеет низкий порог вхождения и прощает многое. Серьёзно, на этом языке преспокойно можно писать, не особо понимая, как всё работает под капотом, и не забивать голову. Однако со временем приходится сталкиваться с разными нюансами. Сегодня рассмотрим один из них — работу с перечислениями.

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

Подводные камни HttpClient в .NET

Время на прочтение9 мин
Количество просмотров93K
Продолжая серию статей о «подводных камнях» не могу обойти стороной System.Net.HttpClient, который очень часто используется на практике, но при этом имеет несколько серьезных проблем, которые могут быть сразу не видны.

Достаточно частая проблема в программировании — то, что разработчики сфокусированы только на функциональных возможностях того или иного компонента, при этом совершенно не учитывают очень важную нефункциональную составляющую, которая может влиять на производительность, масштабируемость, легкость восстановления в случае сбоев, безопасность и т.д. Например, тот же HttpClient — вроде бы и элементарный компонент, но есть несколько вопросов: сколько он создает параллельных соединений к серверу, как долго они живут, как он себя поведет, если DNS имя, к которому обращался ранее, будет переключено на другой IP адрес? Попробуем ответить на эти вопросы в статье.
Читать дальше →
Всего голосов 52: ↑51 и ↓1+50
Комментарии12

Лурк, великий и ужасный: восход и закат энциклопедии рунета

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

Шёл далёкий уже 2006 год: время мемной революции, удешевления доступа к сети и стремительного роста населения рунета. Из «сделанной из разного и палок пристройки к настоящей англоязычной сети» рунет на глазах превращался в самобытное информационное пространство. Медвед и Ктулху были повсюду, расцветали ЖЖ, дайри, бесконечные форумы на всевозможные темы. Имиджборды бурлили уходящими в небытие тредами, полными контркультурного андерграунда и всевозможной дичи, превращаясь в реакторы самого неожиданного и яркого контента.
Что же с ним стало?
Всего голосов 162: ↑152 и ↓10+208
Комментарии148

Почему ты не будешь доволен результатами твоего performance review

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

Syn ack, Хабр!

Если ты зашел сюда, то скорее всего уже знаешь, что такое performance review и скорее всего ты недоволен его результатами:

According to Gallup, only 14% of employees strongly agree their performance reviews inspire them to improve

Как видишь ты не один и в этой статье мы поговорим, почему твое ревью не оправдывает твоих ожиданий.

Читать далее
Всего голосов 35: ↑28 и ↓7+32
Комментарии67

Как бесплатно поступить в Стэнфорд, Гарвард, MIT: опыт Дильназ Камаловой

Время на прочтение11 мин
Количество просмотров46K
Всем привет!

Ontol — это github для бесплатных текстов и видео, которые оказывают значимое влияние на жизнь и судьбу человека.

Годы, проведенные в университете — самые определяющие в жизни человека, и от того, какой университет вы выбрали, колоссально зависит ваша дальнейшая судьба. Но иногда, увы, этот выбор сделан рандомно и халатно, а иногда и «под давлением» друзей, семьи, военкомата, халявы (дипломов с олимпиад), районной администрации, государства, и человек поступает в университет номер 461, а в универститеты номер 1, 2, 3, 4, 5 он даже не посмел подать заявку (если вообще знал о их существовании).

Каждый может поступить в Стэнфорд и MIT бесплатно. Сегодня я начинаю серию публикаций и интервью, которые призваны бороться с выученной беспомощностью школьников и разрушать интеллектуальный железный занавес, который закрепощает учеников внутри границ одной страны. Слово Дильназ Камаловой:

image

Я учусь в выпускном классе школы НИШ Алматы. Занимаюсь робототехникой и развитием индивидуальных проектов. В апреле этого года узнала, что поступила в 6 вузов США. А именно в Принстонский, Стэндфордский, Гарвардский, университет Райса, Лихайский, университет Дьюк.

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

Я делюсь личным опытом в надежде, что это будет полезно кому-то и станет некой дозой мотивации.
Всего голосов 39: ↑24 и ↓15+15
Комментарии96

Обход графа: поиск в глубину и поиск в ширину простыми словами на примере JavaScript

Время на прочтение5 мин
Количество просмотров219K
Доброго времени суток.

Представляю вашему вниманию перевод статьи «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.
Читать дальше →
Всего голосов 9: ↑8 и ↓1+10
Комментарии1

Выгорание, поставленное на поток. Как в Китае работает система «Третий глаз», и почему программисты из-за нее умирают

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


В крупнейших китайских IT-компаниях действует система наблюдения под названием Ди Сан Цзи Янь, «Третий глаз». Она получает данные из камер в офисах и из ноутбуков каждого человека, чтобы определить, кто стоит повышения, а кого нужно уволить. «Третий глаз» позволяет отслеживать экраны программистов в режиме реального времени, записывать их чаты, их активность в браузере и каждое редактирование документа. Часть компаний устанавливают систему даже в туалетах.


Программа автоматически отмечает «подозрительное поведение», такое как посещение сайтов поиска работы или платформ с потоковым видео. Отчеты генерируются еженедельно, суммируя время, потраченное на «непрофильные» веб-сайты и приложения. Даже если вы посещали их в свое обеденное время или сидя в уборной.


Дальше это может убрать у вас перспективы карьерного роста и повышения зарплаты. Выводы системы также используются в качестве доказательства, когда компания хочет уволить определенных людей. Главное, за чем следит система — чтобы вы не проводили ни минуты рабочего времени за «лишними активностями». Некоторые программисты из-за неё уже совершили суицид, другие — умерли от измождения.

Читать дальше →
Всего голосов 120: ↑111 и ↓9+138
Комментарии542

Изучаем Docker, часть 3: файлы Dockerfile

Время на прочтение12 мин
Количество просмотров793K
В переводе третьей части серии материалов, посвящённых Docker, мы продолжим вдохновляться выпечкой, а именно — бубликами. Нашей сегодняшней основной темой будет работа с файлами Dockerfile. Мы разберём инструкции, которые используются в этих файлах.

Часть 1: основы
Часть 2: термины и концепции
Часть 3: файлы Dockerfile
Часть 4: уменьшение размеров образов и ускорение их сборки
Часть 5: команды
Часть 6: работа с данными


Бублики — это инструкции в файле Dockerfile
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии11

Что я не знал про образование

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


Я тут полез изучать опыт школьных учителей в педагогике, — и совершенно внезапно обнаружил кучу важных для управления проектами принципов. В смысле, что я опять хочу познакомить вас со странным человеком и рассказать про его опыт. Итак, знакомьтесь, обычная учительница в астраханской гимназии, Ольга Анисимова, которая порвала мне все шаблоны того, что происходит в обычной школе.

Она не учит детей методам решения задачи, она учит их сначала найти саму задачу, потом прикинуть спектр вариантов подхода, а уже потом — как конкретно получить ответ.

Она относится к детям как ко взрослым во многих аспектах.

Она позволяет себе ошибаться, позволяет детям исправлять свои ошибки и аргументировано спорить с ней. Более того, она иногда специально допускает ошибки, чтобы дети не расслаблялись.

Она разрешает готовить шпаргалки и списывать. Разрешает детям «выпихивать» на ответ того, кто выучил тему. Использует понятную детям игрофикацию для мотивации.

В общем, всё настолько пропитано здравым смыслом, что просто не может и не должно происходить в школе. В чёртовой школе!
Читать дальше →
Всего голосов 166: ↑163 и ↓3+208
Комментарии482

Как работает менторство

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

До какого-то момента самый быстрый способ профессионального роста – это выделяться компетенцией. То есть быть крутым специалистом, который в одно лицо может всё. Это очень комфортная и приятная позиция, потому что вы отвечаете только за себя, не несёте огромных расходов каждый месяц и не делаете ничего такого, что стало бы серьёзным риском.

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

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

Проблема в том, что даже если такой есть, вы ему нафиг не нужны.

Тем не менее, оказывается, менторство так или иначе распространено в бизнесе. Сразу скажу, что этот термин сильно попортили всякие деятели от инфобизнеса. Но я бы хотел поговорить про саму модель, поскольку выглядит она довольно интересно. Не факт, что вы её захотите использовать, но её как минимум стоит понимать.
Читать дальше →
Всего голосов 7: ↑6 и ↓1+9
Комментарии8

Считаешь себя синьором? Да кого ты обманываешь

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


Мой друган в очередной раз объяснял кому-то в уличной курилке, как устроен C#. Я глотнул кофе, закурил и облокотился на ограду, чтобы послушать. Он рассказывал, какие интересные тонкости нашел в сборщике мусора. Говорит, в дотнете он устроен довольно просто снаружи, но очень хитро в деталях реализации.

Я не встревал — просто слушал и мотал на ус. Было 11 утра, я только что закрыл тикет, который от меня ждали завтра, и мог весь оставшийся день слоняться по офису. Витян всегда был очень прокачанным парнем. Он контрибьютил в рослин, изучал сорцы всех инструментов, которыми пользовался, и действительно глубоко шарил в дотнете. Я знал — мне до него как до луны. Но у нас все равно почему-то были одинаковые позиции и зарплаты.
Читать дальше →
Всего голосов 227: ↑174 и ↓53+167
Комментарии206

Зачем уметь работать в командной строке?

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

Сегодня мы поговорим о том, зачем учить операционную систему GNU/Linux, о преимуществах работы в командной строке и о том, как это все связано с философией Unix.

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

Читать далее
Всего голосов 39: ↑21 и ↓18+7
Комментарии97

Производная и интеграл — проще некуда

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

19 декабря 2020 г. на Хабре вышла статья «Интуитивное объяснение интеграла».

В комментариях к ней некоторые пользователи указали, что объяснение получилось не очень интуитивным, например:

“Тема сама по себе интересная, недавно снова повторял курс, но должен сказать, что на мой взгляд, в материале нет изюминки. Автор прав, что в современных изданиях часто даются темы без описания их прикладного применения, из-за чего непонятен смысл их изучения.

Но конкретно интегралы это такая тема, которую надо описать или короче, чем у вас, или намного дольше.
Иначе и школьник не поймет, и те, кто знает, ничего нового не откроют."

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

Итак:
Всего голосов 28: ↑22 и ↓6+24
Комментарии26

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность