Search
Write a publication
Pull to refresh
4
0.2

.NET Software Engineer

Send message

Зарплатные вилки весной 2023: языки программирования и фреймворки

Reading time15 min
Views140K

Мы на Хабр Карьере регулярно анализируем зарплаты IT-специалистов: по полугодиям, в разрезе специализаций, квалификаций, городов, компаний, языков программирования и т.д. В этом году мы решили попробовать собрать новый срез и посмотреть на зарплатный рынок со стороны работодателя.

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

Читать далее

Шпаргалка по SQL (postgres), которая выручает меня на собесах

Level of difficultyEasy
Reading time8 min
Views234K

Привет, Хабр!

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

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

Читать далее

ThreadPool.Workers

Reading time13 min
Views7.1K

На этот раз длинная история. Но длинная она в основном из-за множества примеров, которые вы можете легко повторить у себя.

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

Читать далее

Учимся конфигурировать и настраивать Jenkins

Reading time8 min
Views16K

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

Читать далее

Эксклюзив: детализация уровней сотрудников Shopify. Часть 1

Level of difficultyEasy
Reading time14 min
Views5.8K

Shopify — это один из крупнейших конкурентов Amazon в сфере онлайн‑ритейла. В компании работает около 10 000 человек. Shopify, в отличие от Amazon — централизованной торговой площадки, предлагает коммерческим структурам платформу для создания их собственных онлайн‑магазинов и веб‑сайтов. Shopify — это одна из крупнейших технологических организаций, в которой применяется полностью удалённый режим работы. Она перешла к такой модели в начале 2020 года. Это — одна из последних компаний такого размера, которая не переводит сотрудников обратно в офисы. По крайней мере — пока не переводит.

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

Я поговорил с несколькими инженерами‑программистами и менеджерами, которые сейчас работают в Shopify. Мне было интересно узнать от них о том, как в компании работает система уровней сотрудников, что вкладывается в понятие «мастерство», почему компания решила сделать то, что сделала. В этом материале мы исследуем следующие вопросы:

Читать далее

Нестабилизированный AC/DC источник питания. IR2153

Level of difficultyEasy
Reading time6 min
Views23K

Для создания AC/DC источников питания есть две микросхемы, которые можно назвать «народными» - IR2153 и TL494.

В этой статье рассмотрю простейшее включение микросхемы IR2153.

Почитать далее

Как заставить программистов пахать? 5 неочевидных советов

Level of difficultyEasy
Reading time4 min
Views79K

Для начало придется забыть слово заставить. Задача помочь сотрудникам полюбить зарабатывать вам деньги.

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

Там, где я работал, были разные системы управления, но всегда работал один и тот же принцип.

Читать далее

Запуск фоновых задач в asp.net core

Reading time10 min
Views53K

Небольшой обзор стандартных средств запуска бэкграунд-задач в аспнет приложениях — что есть, чем отличается, как пользоваться. Встроенный механизм запуска таких задач строится вокруг интерфейса IHostedService и метода-расширения для IServiceCollection — AddHostedService. Но есть несколько способов реализовать фоновые задачи через этот механизм (и ещё несколько неочевидных моментов поведения этого механизма).

Читать далее

Реализация пула соединений в WCF для .Net Core с использованием HttpClientFactory

Reading time4 min
Views9K
Наш продукт разрабатывается на платформе .Net Core 2.2 с использованием WCF 4.5 для взаимодействия с SOAP сервисом клиента. В процессе работы сервиса разработчики шины данных заметили высокую нагрузку на сервер. Далее стали появляться проблемы с доступом к сервису. В результате выяснили, что причина кроется в количестве активных соединений.

Существует такая проблема как connection exhaustion. Она может возникать из-за нехватки доступных портов при установлении соединения или ограничения на количество соединений с внешним или внутренним сервисом. Есть два варианта решения:

• Увеличение доступных ресурсов,
• Уменьшение количества соединений.

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


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

.NET Core Workers как службы Windows

Reading time3 min
Views26K

В .NET Core 3.0 мы представляем новый тип шаблона приложения под названием Worker Service. Этот шаблон предназначен для того, чтобы дать вам отправную точку для написания долго-работающих сервисов в .NET Core. В этом пошаговом руководстве мы создадим worker и запустим его в качестве службы Windows.



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

Бенчмаркая Array Reverse: как быстро перевернуть массив?

Level of difficultyEasy
Reading time12 min
Views4.5K

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

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

Сразу отмечу, что для тестов используется атрибут [GlobalSetup], что позволяет не переживать о стартовых данных, так как они будут «Executed once per each N value» и это нам и надо.

Для полной картины происходящего основные тесты идут на массивах с количеством элементов 1000, 10_000, 100_000, 1_000_000, 100_000_000, а самый последний с добавлением до 1_000_000_000 чисел.

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

Для старта используется обычный While, представленный в более удобной записи, чем аналоги на просторах сети:

Читать далее

Динамические методы в .NET (часть 2)

Level of difficultyMedium
Reading time6 min
Views6.2K

В предыдущей статье я начал свой рассказ динамические методы.

Мы узнали, как создать простейший динамический метод, в общих чертах обсудили, как работает стековая машина и рассмотрели некоторые простейшие операции Common Intermediate Language, которые можно использовать при генерации методов в runtime, такие как работу с константами, математические и битовые операции, а также работу с аргументами методов и локальными переменными.

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

Кроме этого поговорим про динамические методы, привязанные к объектам, и рассмотрим возможность вызова одних динамических методов из других.

Читать далее

enum class и мой первый раз (использования Source Generator)

Level of difficultyEasy
Reading time15 min
Views2.8K

Приветствую.

Выбор между enum и собственным классом перечислений в C# был для меня сложной темой. Но когда увидел enum class из Kotlin, мое мировоззрение немного поменялось, я захотел иметь их в C#.

Но делать proposal мне не хотелось. И тут я вспомнил про генераторы исходного кода, добавленные в .NET 5, и решил, что пришло время их потрогать.

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

Читать далее

Reciprocal throughput

Level of difficultyEasy
Reading time10 min
Views10K

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

Читать далее

Как развернуть свой Wireguard VPN сервер с WEB-интерфейсом за одну команду

Level of difficultyEasy
Reading time2 min
Views88K

WireGuard является одним из наиболее популярных и простых в использовании VPN-решений, предоставляющих безопасное сетевое соединение. Если вы ищете быстрый и простой способ развернуть собственный VPN-сервер WireGuard с WEB-интерфейсом, то Docker-контейнер представляет отличное решение. В этой статье мы рассмотрим, как установить и запустить Docker-контейнер WireGuard с WEB-интерфейсом за одну команду, а также как подключиться к нему с различных устройств.

Исходники

Читать далее

Как настроить RDP без static ip и сторонних сервисов

Level of difficultyEasy
Reading time4 min
Views40K

Для меня никогда не вставал вопрос про RDP, так как постоянно носил с собой ноутбук. Если в студенческие годы таскать на горбу 17 дюймовый Lenovo IdeaPad Z710 почти под 3кг веса (2.9кг) было не сложно, то со временем даже 15 дюймовый HP или 13 дюймовый MacBook Pro стал прилично ощущаться и не в лучшую сторону для моей спины. 

Первая задача: как уменьшить вес, но не потерять в производительности? Для себя я выбрал собрать стационарный компьютер и подключаться к нему с iPad. Эта задача решается достаточно просто. И на ней не будем останавливаться.

Вторая задача: а как, собственно, подключаться?

Читать далее

Бенчмаркая строки и циклы: Replace, Split и Substring

Level of difficultyEasy
Reading time9 min
Views5K

Уважаемые читатели, в этой статье я хочу рассказать о небольших тестах со строками и представить свои выводы. Тесты сделаны на .net 7.

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

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

Хочется начать с string.Replace, который проверяется разными вариантами, начиная с базового.

Читать далее

Wireshark — подробное руководство по началу использования

Level of difficultyMedium
Reading time8 min
Views333K

Wireshark – это широко распространённый инструмент для захвата и анализа сетевого трафика, который активно используется как для образовательных целей, так и для устранения неполадок на компьютере или в сети. Wireshark работает практически со всеми протоколами модели OSI, обладает понятным для обычного пользователя интерфейсом и удобной системой фильтрации данных. Помимо всего этого, программа является кроссплатформенной и поддерживает следующие операционные системы: Windows, Linux, Mac OS X, Solaris, FreeBSD, NetBSD, OpenBSD.

Читать далее

Outer Join в LINQ

Reading time6 min
Views17K
Коментарий автора: Статья написана в 2012 году и пролежавшая 8 лет в песочнице.

LINQ — как много было придумано в C# лишь для того чтобы мы могли наслаждаться прелестями Language Integrated Query. А именно:

  • Generics
  • Extension Methods
  • Lamda expressions
  • Expression trees
  • Anonymous types
  • Object initializers
  • Type inferring

И это все чтобы мы могли написать нечто вроде такого:

	var query = 
		from itemA in listA
		join itemB in listB
			on itemA.Key equals itemB.Key
		select new {itemA, itemB};
	

Нельзя не согласиться — впечталяет.

И среди всего этого синтаксического сахара была ложка дегдя которая мне не давала нормально выспаться :)

Это тотальное отсутствие поддержки OUTER JOIN. Но как оказалось деготь с легкостью превращается… превращается… превращается…
Читать дальше →

Как уже выучить этот Инглиш (часть 2)

Level of difficultyEasy
Reading time10 min
Views21K

Здравствуйте, коллеги! Мы продолжаем наш рассказ о том, как максимально быстро и эффективно выучить английский язык.

Первую часть статьи вы можете прочитать здесь.

Содержание статьи

1. Самый эффективный способ выучить английский

2. Какую методику для изучения английского выбрать?

3. Большая подборка учебных материалов

4. Что делать для «погружения в язык»?

5. Как учить лексику и запоминать новые слова

6. Что делать, если вы плохо воспринимаете слова на слух

7. Что делать, если не хватает разговорной практики

8. Как подтянуть грамматику?

9. Эффективны ли занятия онлайн по Zoom или Skype?

10. Что делать, если я не очень люблю учить языки, но надо?

11. Как избавиться от акцента?

12. Краткое резюме и подведение итогов.

Читать далее

Information

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

Specialization

Backend Developer
C#
SQL
.NET
WPF
Database