Search
Write a publication
Pull to refresh
4
0.1

.NET Software Engineer

Send message

Инструменты создания API клиента для .NET

Level of difficultyEasy
Reading time8 min
Views17K

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

Читать далее

Как работает JS: обзор движка, механизмов времени выполнения, стека вызовов

Reading time6 min
Views215K
Популярность JavaScript растёт, его возможности используют на разных уровнях применяемых разработчиками стеков технологий и на множестве платформ. На JS делают фронтенд и бэкенд, пишут гибридные и встраиваемые приложения, а также многое другое.

Анализ статистики GitHub показывает, что по показателям активных репозиториев и push-запросов, JavaScript находится на первом месте, да и в других категориях он показывает довольно высокие позиции.


Статистические сведения по JavaScript с GitHub

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

Если множество проектов плотно завязаны на JavaScript, значит, разработчикам необходимо как можно более эффективно использовать всё, что даёт им язык и его экосистема, стремясь, на пути разработки замечательных программ, к глубокому пониманию внутренних механизмов языка.

Как ни странно, существует множество разработчиков, которые регулярно пишут на JavaScript, но не знают, что происходит в его недрах. Пришло время это исправить: этот материал посвящён обзору JS-движка на примере V8, механизмов времени выполнения, и стека вызовов.
Читать дальше →

Ортографическая проекция в фотографии и прочие интересные фокусы с объективами

Level of difficultyMedium
Reading time30 min
Views25K

С тем как работает фотоаппарат мы знакомимся еще со школьной программы. Однако привычное нам из школьного курса сведение объектива к "тонкой линзе" на самом деле не отвечает на массу практических вопросов. Например как удается создавать объективы с ортографической проекцией применяемые в системах технического зрения?

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

Так как же работает объектив?

Архитектурные антипаттерны в микросервисах и способы их избежания

Reading time16 min
Views26K

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

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

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

Читать далее

Последствия кризиса депопуляции в России и мире

Level of difficultyEasy
Reading time16 min
Views39K

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

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

Кризис депопуляции миф, население планеты растёт. В демографии имеет значение не столько рост или убывание на данный момент времени, сколько долгосрочный тренд. Так как у демографических процессов большая инерционность. На данный момент население планеты растёт, но, по различным прогнозам, через 50-80 лет начнётся сокращение. Государства в мире находятся на разном уровне общественного развития, в каких-то странах демографический переход уже завершился, в каких-то ещё не начался. Но общее направление уже видно. Все страны не зависимо от культурных особенностей приходят к низкой рождаемости и соответственно к сокращению населения (Израиль исключение, подробности будут ниже).

Читать далее

Создание .NET библиотеки от А до Я

Level of difficultyMedium
Reading time32 min
Views19K

Думаете о создании .NET библиотеки, но не знаете, в какую сторону двигаться? Уже разрабатываете нечто подобное, но хочется открыть для себя что-то новое? Ищете варианты расширить автоматизацию? Не знаете, что делать с пользователями?

Надеюсь, данная статья поможет ответить на эти и другие вопросы. На примере своей библиотеки с открытым исходным кодом – DryWetMIDI – рассмотрим различные аспекты создания подобных проектов. И хотя речь будет идти про .NET/C#, уверен, многое применимо и к другим популярным платформам и языкам программирования.

Читать далее

Суп с котом: забавная задачка с LeetCode

Level of difficultyMedium
Reading time11 min
Views15K

Решал я недавно задачку на LeetCode. Вроде, обычная задачка на динамическое программирование, среднего уровня сложности. Но оказалось, что её можно решить и по-другому, существенно уменьшив временную и пространственную сложность.

Ну, давай, посмотрим, что там у тебя...

5 новинок CSS в адаптивной верстке, которые можно использовать уже сейчас

Level of difficultyEasy
Reading time4 min
Views30K

Hola, Amigos! На связи Игорь Мельников, Frontend-разработчик компании Amiga. Возможно, вы уже слышали про технологии, которые я описываю в статье, но не использовали их, потому что думали, что они не поддерживаются актуальными браузерами. Теперь можете смело брать их во всеоружие и применять в своих проектах! 

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

Читать далее

Работа с Sass в приложении ASP.NET Core

Reading time6 min
Views4.1K

Sass (Syntactically Awesome Style Sheets) — это скриптовый язык, используемый для создания каскадных таблиц стилей (CSS-файлов). Его синтаксис очень похож на обычный CSS, но вдобавок он поддерживает использование переменных, вложенность, миксины и наследование для селекторов, чего очень не хватает в базовом CSS, ведь эти фичи незаменимы в организации и поддержке стилей вашего веб-приложения. В этой статье я продемонстрирую вам шаги, необходимые для добавления и настройки Sass в вашем ASP.NET Core проекте как в Visual Studio, так и в VS Code.

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

Читать далее

Дорогая, что-то пошло не так. Гид по пустым состояниям и ошибкам + шаблоны на все случаи

Level of difficultyEasy
Reading time11 min
Views40K

Всем привет! Меня зовут Кира Калимулина, я руководитель группы UX-редактуры в Ozon. Я занимаюсь всеми интерфейсными текстами в приложении и на сайте. 

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

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

Что же случилось?

Как мы настраивали PostgreSQL для использования в качестве кэша

Level of difficultyHard
Reading time10 min
Views11K

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

Читать далее

3X-UI: Shadowsocks-2022 & XRay (XTLS) сервер с простой настройкой и приятным интерфейсом

Level of difficultyEasy
Reading time13 min
Views556K

В серии предыдущих статей я описывал, почему повсеместно используемые VPN- и прокси-протоколы такие как OpenVPN и L2TP очень уязвимы к выявлению и могут быть легко заблокированы цензорами при желании, обозревал существующие гораздо более надежные протоколы обхода блокировок, клиенты для них, а также описывал настройку сервера двух видов для всего этого.

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

Поэтому сегодня мы поговорим об установке и использовании графической панели 3X-UI для сервера X-Ray с поддержкой всего того, что умеет X-Ray: Shadowsocks-2022, VLESS с XTLS и т.д.

Читать далее

Я выучил иностранный язык за год и у вас тоже получится

Level of difficultyEasy
Reading time7 min
Views84K

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

Читать далее

C# и .NET: Blazor

Reading time5 min
Views15K

Blazor — это технология, позволяющая создавать клиентские веб-приложения с использованием C# и .NET, а не JavaScript. Blazor может запускать ваш код одним из двух способов. Blazor WebAssembly выполняет код C# на стороне клиента в любом современном браузере, поддерживающем WebAssembly. Blazor Server отправляет события пользовательского интерфейса на стороне клиента обратно на сервер с помощью технологии SignalR, которая обеспечивает связь через сокеты в режиме реального времени между браузером и сервером. После обработки на сервере изменения пользовательского интерфейса отправляются обратно в браузер по тому же сокетному соединению.

Сегодня мы сосредоточимся на создании нового приложения Blazor WebAssembly.

Читать далее

Восемь самых востребованных языков программирования в 2023 году

Level of difficultyEasy
Reading time5 min
Views54K


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

За последние семнадцать месяцев (с января 2022 по май 2023 года) DevJobsScanner проанализировал более четырнадцати миллионов вакансий разработчиков. Из этих четырнадцати миллионов были отобраны только те вакансии, которые содержали конкретные требования по владению языком. Обратитесь к разделу «Как проводилось исследование», если хотите узнать подробности. Под катом перечислены языки, спрос на которые выше всего.
Читать дальше →

Неразрешимые проблемы разработки

Reading time3 min
Views10K


Сроки


В разработке ПО существует неразрешимое противоречие — это оценка сроков.


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


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


  • новая функциональность нетипична
  • есть зависимости на другие команды
  • будет задействована новая технология
  • ТЗ надо сильно уточнять
  • надо разобраться в логике легаси-кода

Часто, для того, чтобы точно оценить сроки, нужно, собственно, сделать половину работы. Чем точнее надо оценить сроки, тем больше надо на это затратить времени, что приводит к суммарному увеличению time-to-market, причем все равно без гарантий.

Читать дальше →

Зарплаты IT-специалистов в первом полугодии 2023: +10% за счет регионов

Reading time5 min
Views295K

Каждые полгода мы на Хабр Карьере анализируем зарплаты IT-специалистов и собираем данные в большое исследование, чтобы посмотреть, как изменился рынок зарплат. Этот срез — один из таких.

Проанализировали 8 464 зарплаты в первом полугодии 2023 года — рассказываем, что получилось.

Узнать зарплаты

Градиентный бустинг: как подобрать гиперпараметры модели в 5 раз быстрее, чем обычно?

Level of difficultyHard
Reading time36 min
Views5.8K

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

Читать далее

EntityFramework: (анти)паттерн Repository

Reading time15 min
Views118K
Repository Pattern
Репозиторий является посредником между слоем доступа к данным и доменным слоем,
работая как in-memory коллекция доменных обектов. Клиенты создают декларативные
описания запросов и передают их в репозиторий для выполнения.
  — свободный перевод Мартина Фаулера

EntityFraemwork предоставляет нам готовую реализацию паттернов Repository: DbSet<T> и UnitOfWork: DbContext. Но мне часто приходится видеть, как коллеги используют в своих проектах собственную реализацию репозиториев поверх существующих в EntityFraemwork.


Чаще всего используется один из двух подходов:


  1. Generic Repository как попытка абстрагироваться от конкретного ORM.
  2. Repository как набор запросов к выбранной таблице БД (паттерн DAO).

И каждый из этих подходов содержит недостатки.

Читать дальше →

Архитектура CQRS

Level of difficultyMedium
Reading time10 min
Views25K


Идея CQRS возникла в 2010 году, когда Грег Янг (Greg Young) опубликовал статью на эту тему. CQRS быстро стал популярным в разработке приложений, и сегодня является одним из ключевых подходов в работе со сложными системами.

CQRS (Command Query Responsibility Segregation) — это архитектурный паттерн, который предлагает разделить операции записи и чтения данных в приложении на две отдельные ветки. Вместо того, чтобы использовать единый интерфейс для обеих операций, CQRS предлагает использовать различные модели данных для команд и запросов. Это позволяет оптимизировать каждую модель для конкретных задач и улучшить производительность приложения.
Читать дальше →

Information

Rating
5,440-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

Backend Developer
C#
SQL
.NET
WPF
Database