Как стать автором
Обновить
12
0
Олег @ol_x

.net разработчик

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

Гиперфокус: как сосредоточиться на главном (Чек-лист по его включению в конце)

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

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

Мы рассмотрим некоторые приёмы для погружения в состояние сверхконцентрации, о котором рассказывает Крис Бейли в своей книге «Гиперфокус». Они пригодятся всем, кто занимается сложной умственной работой, например, написанием кода, тестированием, разработкой архитектуры приложений и созданием уникальных алгоритмов.

Читать далее
Всего голосов 9: ↑6 и ↓3+3
Комментарии4

Алгоритмы сортировки и их производительность

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

Здравствуйте, давно читаю Хабр и все хотел написать кому-нибудь статью, но не знал с чего начать и о чем писать. Но решил что тянуть кота за причинное место. Надо просто взять и написать обзор о чем то что я знаю и что будет просто для начало. Поэтому решил описать алгоритмы сортировки в размере 37 штук. Я понимаю, что на Хабре есть подобные статьи, одна постараюсь их добавить количеством алгоритмов и приведением небольшого числа графиков.

Читать далее
Всего голосов 79: ↑77 и ↓2+75
Комментарии29

Soft skills для разработчиков: зачем и как развивать?

Время на прочтение4 мин
Количество просмотров29K
Спрос на IT-специалистов растет с каждым днем, вместе с этим увеличивается конкуренция. Для построения карьеры в хорошей компании уже недостаточно только профессиональный навыков (hard skills). Работодатели стали также обращать внимание и на так называемые “мягкие” навыки — soft skills. Это навыки, которые не связаны с профессией, а относятся больше к личностным качествам (коммуникабельность, креативность, эмпатия и тд). О том, действительно ли это так важно, какие навыки требуются и как их развивать — поговорим сегодня.

image

Почему soft skills стали необходимы?


Все мы знаем “известный” образ программиста: интроверт, в бабушкином свитере, растянутых штанах и очках. Конечно, в момент зарождения профессии (и появления этого стереотипа) ни о каких soft skills речи не шло, потому что, если ты умел писать код, то был уже крут! Сейчас сфера IT и сама профессия существенно изменилась.

В обязанности хорошего разработчика входит уже не только выполнение тех.заданий, но и навыки управления командой, общения с клиентами и другие. Другими словами, к специалистам стало больше требований.
Читать дальше →
Всего голосов 25: ↑15 и ↓10+5
Комментарии12

WinAPI из C#

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

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

Для работы с операционной системой С# использует платформу .Net - по сути, высокоуровневую обертку для WinAPI функций. Для того чтобы выполнить элементарные операции нужно просто найти нужный класс/функцию и передать необходимый набор параметров.

Но всё становится сложнее, если нужно работать с функциями, которые не имеют оберток для .Net или когда требуется низкоуровневый доступ к структурам данных или нативному коду. Статья расскажет о нескольких способах использования функций WinAPI из C#.

Читать далее
Всего голосов 20: ↑16 и ↓4+12
Комментарии10

Особые исключения в .NET и как их готовить

Время на прочтение17 мин
Количество просмотров33K
У разных исключений в .NET есть свои особенности, и знать их бывает очень полезно. Как обмануть CLR? Как остаться в живых в рантайме, поймав StackOverflowException? Какие исключения перехватить вроде бы нельзя, но если очень хочется, то можно?



Под катом расшифровка доклада Евгения (epeshk) Пешкова с нашей конференции DotNext 2018 Piter, где он рассказал про эти и другие особенности исключений.
Всего голосов 51: ↑50 и ↓1+49
Комментарии0

Исследуем .NET 6. Часть 2. WebApplicationBuilder

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

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

Часть 1. ConfigurationManager

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

Teaful — крошечная, простая и мощная библиотека управления состояниями React

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

Способов управления состоянием между компонентами в React множество. Из-за простоты автор остановился на React Context, но есть проблема. Если изменить значение одного поля, повторно будут отрисованы все компоненты, работающие с полями состояния.

Библиотека Teaful, которая в начале разработки называлась Fragmented store, решает эту проблему. Результат вы видите на КДПВ. Рассказываем о Teaful, пока начинается наш курс по Fullstack-разработке на Python.

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Комментарии12

Погружение в Helm Package Manager. Часть первая

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

Helm — один из самых популярных пакетных менеджеров для Kubernetes. Познакомиться с ним полезно любому DevOps-инженеру и всем, кто сталкивается с задачами деплоя приложений. Эта статья — первый из двух материалов, которые можно вместе можно рассматривать как краткое, но достаточно полное введение в Helm.

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

8 способов вызвать утечки памяти в .NET

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

Опытные .NET-разработчики знают, что даже несмотря на наличие в .NET сборщика мусора (Garbage Collector), утечки памяти все равно возникают с завидной регулярностью. Утечки возможны не из-за ошибок в сборщике мусора, а потому что даже в управляемом коде есть множество способов их появления.

В этой статье мы пройдемся по наиболее частым причинам возникновения утечек памяти в .NET-приложениях. Все примеры написаны на C#, но описанные проблемы и способы их решения справедливы и для других .NET-языков.

Читать далее
Всего голосов 28: ↑25 и ↓3+22
Комментарии44

Преодоление сложности в CQRS

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

Эта статья является переводом материала «Tackling Complexity in CQRS».

Шаблон CQRS может творить чудеса: он может максимизировать масштабируемость, производительность, безопасность и даже «превзойти» теорему CAP. Тем не менее, например, в своей статье о CQRS Мартин Фаулер утверждает, что шаблон следует применять умеренно и даже осторожно:

«...для большинства систем CQRS добавляет риски»;

«...вы должны быть очень осторожны при использовании CQRS»;

«Итак, хотя CQRS - это шаблон, который хорошо иметь в наборе инструментов, имейте в виду, что его сложно применять правильно, и вы можете легко пропустить важные части, если неправильно использовать его.»

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

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

Ищем дедлок в .NET 5 с помощью анализа дампа

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

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

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

Blazor: SPA без джаваскрипта для SaaS на практике

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

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

Всё это случилось когда мир фронтенда спас Он.

Ну ладно, сбавим обороты у нашей машины пафоса.

Сегодня я предлагаю вам взглянуть на возможности Blazor в версии .Net 6. Внезапно, под катом не будет очередного ПриветМир, а окажется полноценное SaaS веб-приложение, написанное на Блейзоре, пощупав которое вы сможете гораздо лучше оценить.

убийца или чижика съел?
Всего голосов 13: ↑11 и ↓2+9
Комментарии22

Книга «C# 9 и .NET 5. Разработка и оптимизация»

Время на прочтение11 мин
Количество просмотров15K
image Привет, Хаброжители! В этой книге опытный преподаватель Марк Прайс дает все необходимое для разработки приложений на C#. В пятом издании для работы со всеми основными операционными системами используется популярный редактор кода Visual Studio Code. Издание полностью обновлено и дополнено новой главой, касающейся Microsoft Blazor.

В первой части книги рассмотрены основы C#, включая объектно-ориентированное программирование и новые возможности C# 9, такие как создание экземпляров новых объектов с целевым типом и работа с неизменяемыми типами с использованием ключевого слова record. Во второй части рассматриваются API .NET для выполнения таких задач, как управление данными и запросы к ним, мониторинг и повышение производительности, а также работа с файловой системой, асинхронными потоками, сериализацией и шифрованием. В третьей части на примерах кросс-платформенных приложений вы сможете собрать и развернуть собственные: например, веб-приложения с использованием ASP.NET Core или мобильные приложения на Xamarin Forms.
К концу книги вы приобретете знания и навыки, необходимые для использования C# 9 и .NET 5 для разработки сервисов, веб- и мобильных приложений.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии11

Как научиться работать в Blazor, делая что-то полезное. Часть I

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

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

Меня это удручает. Давайте попробуем написать что-нибудь полезное и при этом показать вам, что можно и чего не нужно делать с достаточно новой технологией Microsoft под названием Blazor.
Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии9

Книга «Безопасность контейнеров. Фундаментальный подход к защите контейнеризированных приложений»

Время на прочтение16 мин
Количество просмотров4.7K
image Привет, Хаброжители! Во многих организациях приложения работают в нативных облачных средах, обеспечивая масштабируемость и отказоустойчивость с помощью контейнеров и средств координации. Как участнику команды Ops, DevOps или даже DevSecOps, отвечающему за настройку подобной среды для своей компании, гарантировать безопасность развертываемых приложений? Как специалисту по безопасности, имеющему опыт использования традиционных систем на основе серверов или виртуальных машин, адаптировать свои знания к контейнерному развертыванию? И что разработчику нативных облачных приложений стоит учесть, чтобы повысить безопасность своих контейнеризованных приложений? В данной книге описаны ключевые технологии, лежащие в основе контейнеров и нативного облачного программирования. Поэтому после ее прочтения вы сможете лучше оценить риски для безопасности и решения, подходящие для конкретной среды, а также избежать нерекомендуемых приемов, которые подвергают опасности технологии, развернутые вами.

С помощью этой книги вы изучите многие базовые технологии и механизмы, часто применяемые в контейнерных системах, а также способы их построения в операционной системе Linux. Вместе мы углубимся в основы функционирования контейнеров и их взаимодействия и ответим не только на вопрос «что» относительно безопасности контейнеров, но и, главное, «почему». При написании данной книги я ставила перед собой цель помочь читателю лучше разобраться в происходящем при развертывании контейнеров. Мне хотелось бы вдохновить вас на создание ментальных моделей, позволяющих вам самостоятельно оценить потенциальные риски для безопасности при развертывании.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

10 игр для программистов, которые позволят улучшить свои навыки

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

Планируете изучать Java, C++ или Python, но не знаете, с чего начать? А как насчёт игр для программистов?

Да, именно так.

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

Давайте же узнаем о том, как геймификация помогает нам лучше учиться и какие игры помогут стать программистом!
Читать дальше →
Всего голосов 51: ↑47 и ↓4+43
Комментарии42

Учим ASP.NET Core новым трюкам на примере Json Rpc 2.0

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

Хотите добиться нестандартного поведения от aspnet core? Мне вот понадобилось добавить прозрачную поддержку Json Rpc. Расскажу о том, как я искал решения для всех хотелок, чтобы вышло красиво и удобно. Может быть, вам пригодятся знания о разных точках расширения фреймворка. Или о тонкостях поддержки Json Rpc, даже на другом стеке/языке.


В результате получилась библиотека, которая позволяет работать с Json Rpc, вообще не задумываясь, что он спрятан под капотом. При этом пользователю не нужно уметь ничего нового, только привычный aspnet mvc.

Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии6

Нагрузочное тестирование выполнять сложно, а инструменты далеки от совершенства. Почему?

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


Если вы создаёте приложение, которое должно масштабироваться — а все мы надеемся, что наши приложения будут расти — то в определённый момент нам приходится разбираться, может ли оно это делать на самом деле. Именно тогда на помощь приходит нагрузочное тестирование: если вы хотите узнать, справится ли ваше приложение с крупными масштабами, то мы просто генерируем эти масштабы и проверяем! Звучит достаточно просто.

Но потом мы пробуем действительно сгенерировать нагрузку. Это делается легко, только если ваше приложение ужасно простое, ведь тогда можно использовать что-нибудь типа Apache JMeter для генерации повторяющихся запросов. Если у вас это получится, то я вам завидую: все системы, с которыми мне приходилось работать, сложнее и требовали более изощрённой схемы тестирования.

Если ваше приложение становится чуть сложнее, то вы переходите к инструментам наподобие Gatling. Они позволяют симулировать виртуальных пользователей, выполняющих различные сценарии, что намного полезнее, чем простая осада одного или нескольких URL. Но даже этого недостаточно, если вы пишете приложение, использующее одновременно WebSockets и HTTP-вызовы в течение долговременной сессии, а также требующее повторения по таймеру определённых действий. Возможно, я серьёзно недоглядел чего-то в документации, но мне не удалось найти способа, допустим, настроить периодическое событие, запускаемое каждые 30 секунд и выполняющее определённые действия при ответе на сообщение WebSocket, а также производящее действия по HTTP, и всё это в рамках одной HTTP-сессии. Я не нашёл такой возможности ни в одном инструменте нагрузочного тестирования (и именно поэтому написал на работе свой собственный инструмент, который надеюсь выложить в open source, если найду время на подчистку кода и отделения его от проприетарных частей).
Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии17

Токен Авторизации

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

В настоящее время киберпреступность стала проблемой мирового уровня. Например, Дмитрий Самарцев, директор BI.ZONE в сфере кибербезопасности привёл на Всемирном экономическом форуме следующие цифры. В 2018 году ущерб мировой экономики от киберпреступности составил по его словам 1.5 триллиона долларов. В 2022 году прогнозируются потери уже в 8 триллионов, а в 2030 ущерб от киберпреступлений может превысить 90 триллионов долларов. Чтобы уменьшить потери от киберпреступлений, необходимо совершенствовать методы обеспечения безопасности пользователей. В настоящее время существует множество методов аутентификации и авторизации, которые помогают реализовать надежную стратегию безопасности. Среди них многие эксперты выделяют в качестве лучшей авторизацию на основе токенов.

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

Читать далее
Всего голосов 20: ↑15 и ↓5+10
Комментарии8

Тестируем веб-API ASP.NET Core

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

При проектировании и разработке широкого спектра API с использованием ASP.NET Core 2.1 Web API важно понимать, что это только первый этап в создании продуктивного и стабильного решения. Наличие стабильной среды для вашего решения также очень важно. Ключ к отличному решению заключается не только в правильном построении API, но и в его тщательном тестировании, чтобы исключить возможность негативного опыта у пользователей во время использования вашего API.

Эта статья является продолжением моей предыдущей статьи для InfoQ под названием «Продвинутая архитектура веб-API ASP.NET Core». Не беспокойтесь, вам не нужно вникать в предыдущую статью, чтобы разобраться с тестированием в этой, но она может помочь вам лучше понять, как я спроектировал обсуждаемое здесь решение. На протяжении последних нескольких лет я много времени размышлял о тестировании, создавая API для клиентов. Знание архитектуры веб-API ASP.NET Core 2.1 может помочь и вам расширить ваше понимание.

Солюшн и весь код из примеров в этой статье можно найти в моем GitHub репозитории.

Читать далее
Всего голосов 9: ↑8 и ↓1+7
Комментарии11

Информация

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

Специализация

Fullstack Developer, System Software Engineer
Senior
Git
SQL
.NET
Entity Framework
ASP.Net
.NET Core
C#
MySQL