Большинство кандидатов видят только популярные вакансии, а те, что скрыты, остаются незаметными из-за дефектов поиска и плохих фильтров. Булевые операторы помогают создавать точные запросы, которые учитывают и исключают нужные параметры.
Гитхаб и Google — дополнительные инструменты для охоты на вакансии, особенно стартапы, которые редко выкладывают открытые позиции на обычных сайтах.
Please open Telegram to view this post
VIEW IN TELEGRAM
Управление данными в свойствах теперь проще с новым ключевым словом для доступа к автоматически созданному полю.
Раньше для добавления логики установки значения использовалось отдельное поле и аксессоры:
private string _msg;
public string Message
{
get => _msg;
set => _msg = value ?? throw new ArgumentNullException(nameof(value));
}
Сейчас field ссылается на поле, которое создает компилятор, сокращая код:
public string Message
{
get;
set => field = value ?? throw new ArgumentNullException(nameof(value));
}
Минимум кода — максимум контроля: write-only свойства снаружи и строгая логика внутри.
#il_люминатор
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤2😁2
Неделю взяли Microsoft со своей конференцией и обновлениями.
— .NET Conf. День 1 и день 2
— Doom теперь в Telegram
— Юбилейный .NET
— Обновления .NET и .NET Framework
В ноябрьском обновлении 2025 года вышли новые релизы .NET 8.0.22 и .NET 9.0.11, включающие набор технических исправлений.
#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
Anonymous Poll
20%
Мемы
17%
Пост про foreach
13%
Напоминания про .NET Conf
5%
Холивар про скриншоты
18%
Пост про сравнения у рекордов
19%
Про копирование с with
40%
Мини-обзор .NET 10
14%
Про два using'a
38%
Обновлённые расширения типов в C# 14
🥱17🔥2
Records идеально сочетаются с pattern matching. Вы получаете алгебраические типы данных, которые раньше были только в функциональных языках вроде F#.
Представьте, что вам нужно рассчитать площадь разных фигур:
public abstract record Shape;
public record Circle(double Radius) : Shape;
public record Rectangle(double Width, double Height) : Shape;
double CalculateArea(Shape shape) => shape switch
{
Circle(var r) => Math.PI * r * r,
Rectangle(var w, var h) => w * h,
_ => throw new ArgumentException("Неизвестная фигура")
};
Никаких is checks, никаких кастов, никакого боксинга. Компилятор знает структуру и гарантирует полноту проверки всех случаев.
Можете комбинировать с проверками свойств:
if (shape is Rectangle { Width: > 100, Height: > 100 })
Console.WriteLine("Большой прямоугольник");Это делает бизнес-логику выразительнее и безопаснее. Вместо цепочки if-else с кастами получаете элегантный switch:
public abstract record OrderStatus;
public record Pending : OrderStatus;
public record Shipped(DateTime Date) : OrderStatus;
public record Cancelled(string Reason) : OrderStatus;
string Describe(OrderStatus status) => status switch
{
Pending => "Ожидает отправки",
Shipped(var date) => $"Отправлен {date:d}",
Cancelled(var reason) => $"Отменён: {reason}",
};
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25❤3🙏2
🚀 В IT ценится не перфекционизм, а движение вперёд, и если вы давно откладывали обучение — самое время начать.
❤️ Proglib Academy продлевает розыгрыш MacBook Pro 14 до 30 ноября!
Что нужно:
⚡️ выбрать курс;
⚡️ пройти минимум две недели обучения (можно за два вечера);
⚡️ написать куратору #розыгрыш;
⚡️ забрать макбук.
🎓 Курсы, которые участвуют
👉 Участвовать
❤️ Proglib Academy продлевает розыгрыш MacBook Pro 14 до 30 ноября!
Что нужно:
⚡️ выбрать курс;
⚡️ пройти минимум две недели обучения (можно за два вечера);
⚡️ написать куратору #розыгрыш;
⚡️ забрать макбук.
🎓 Курсы, которые участвуют
👉 Участвовать
😁3👍1
🛠 Натуральные преобразования для Span и ReadOnlySpan
C# 14 позволяет неявно преобразовывать между
Типы
🐸 Библиотека шарписта
#il_люминатор
C# 14 позволяет неявно преобразовывать между
Span<T>, ReadOnlySpan<T> и массивами, упрощая манипуляции с данными и повышая скорость:ReadOnlySpan<char> roSpan = "hello";
Span<char> span = roSpan;
char[] array = roSpan.ToArray();
Типы
Span теперь могут выступать как принимающие методы расширения, то есть станут получателями вызова таких методов. Они также могут комбинироваться с другими типами преобразований.#il_люминатор
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤2⚡1
Records созданы для API контрактов и DTO. System.Text.Json работает с ними без дополнительных конфигураций — просто как есть.
public record WeatherData(string City, decimal Temperature, string Condition);
var data = new WeatherData("Москва", 15.5M, "Облачно");
var json = JsonSerializer.Serialize(data);
Console.WriteLine(json);
// {"City":"Москва","Temperature":15.5,"Condition":"Облачно"}
var deserialized = JsonSerializer.Deserialize<WeatherData>(json);
Ни лишних конструкторов, ни public setters, ни аннотаций. Десериализация понимает init-only свойства и positional параметры. Это делает API слой минималистичным и надёжным.
Работает и с Newtonsoft.Json, и с gRPC. Records — это естественный способ определения контрактов между системами.
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤🔥3
Команда Microsoft обсуждает интеграцию Windows Edge Light в PowerToys. Это небольшая утилита для освещения лица во время видеоконференций, которая нужна, когда вокруг вас темно, а вебкамера плохо справляется с автоматическими настройками.
Сейчас Windows Edge Light работает как отдельное приложение: вы запускаете его перед видеозвонком, и оно подсвечивает лицо через экран вашего монитора. Инструмент простой, но продуманный — можно менять интенсивность света, использовать горячие клавиши для быстрого включения-отключения, удерживать окно поверх других приложений и даже кликать через него, не закрывая фокус на основном приложении.
#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
🎓 Экспресс-курс «Математика для Data Science» стартует 4 декабря
Этот курс для вас, если вы:
🧑💻 Программист
Когда нужно понять, что происходит «под капотом» ML-алгоритмов.
📊 Начинающий DS / аналитик / студент
Чтобы закрыть теорию, подтянуть фундамент и собрать портфолио.
📈 Смежный специалист
Чтобы уверенно работать с моделями, статистикой и гипотезами.
🎁 Сейчас лучший момент стартовать:
— скидка 40% на курс до конца ноября
— можно пройти бесплатный тест на знание основ математики
👉 Записаться на курс
Этот курс для вас, если вы:
🧑💻 Программист
Когда нужно понять, что происходит «под капотом» ML-алгоритмов.
📊 Начинающий DS / аналитик / студент
Чтобы закрыть теорию, подтянуть фундамент и собрать портфолио.
📈 Смежный специалист
Чтобы уверенно работать с моделями, статистикой и гипотезами.
🎁 Сейчас лучший момент стартовать:
— скидка 40% на курс до конца ноября
— можно пройти бесплатный тест на знание основ математики
👉 Записаться на курс
Удобство и гибкость метапрограммирования — теперь nameof работает для обобщений без аргументов.
Благодаря новой поддержке можно получить имена обобщенных типов без указания параметров:
Console.WriteLine(nameof(List<>)); // Выведет "List"
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥4😁1
Когда тип переменной явно указан, можно опускать его в инициализации с помощью target-typed new:
Dictionary<string, int> scores = new();
Вместо повторения полного типа справа, достаточно просто написать
new(). Фича доступна с C# 9.#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱29👾2
This media is not supported in your browser
VIEW IN TELEGRAM
🥱17🌚2😁1👾1
Чем важна математика расскажет Мария Тихонова - кандидат компьютерных наук, руководитель исследовательского направления SberAI, доцент факультета компьютерных наук и преподаватель НИУ ВШЭ на курсе «Математика для Data Science» от Proglib Academy.
Курс предусматривает выполнение практического проекта с фидбеком от экспертов. За проект можно взять темы:
• обучите градиентный спуск для предсказания цен на квартиры
• создадите классификатор тональности или тематики текста
• построите простую рекомендательную систему на матричных разложениях
Бонусы:
- скидка 40% до 30 ноября
- если оплатить до конца ноября, получите курс «Базовая математика» в подарок
➡️ Пройти бесплатный тест на знание математики
Записаться на курс
Please open Telegram to view this post
VIEW IN TELEGRAM
В Git 2.52 появились полезные новинки для повседневной работы и поддержки больших репозиториев. Команда внедрила новую команду
git last-modified, с помощью которой теперь можно быстро увидеть, какие коммиты последними изменяли каждый файл в папке.Для тех, кто заботится о здоровье репозиториев, git maintenance получил новый режим geometric, который экономит время при репаках.
Ещё одна заметная особенность — экспериментальная команда
git repo, которая помогает получать разную информацию о репозитории, например, сколько в нём веток или тегов.#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍2
Реактивное программирование в C# Advanced: сложные операторы, обработка ошибок и холодные/горячие Observable
Асинхронность в C# может быть простой, если знать, как с ней работать правильно. На открытом вебинаре курса OTUS C# Developer. Advanced Елена Сычева покажет, как реактивное программирование помогает избавиться от Callback Hell и писать код, который сам реагирует на данные и события.
→ 26 ноября, 20:00
Реактивное программирование в C# Advanced
— продвинутые операторы Rx.NET: Switch, GroupBy, Buffer, Throttle
— устойчивые к сбоям системы: Catch, Retry, Finally
— холодные и горячие Observable: Publish, Replay, RefCount
— управление подписками и жизненным циклом реактивных компонентов
Вебинар будет полезен разработчикам на C#, работающим с асинхронным кодом, потоками данных и событиями. Участники узнают, как проектировать реактивные системы, способные восстанавливаться после ошибок, и писать декларативный, читаемый и эффективный код.
→ Зарегистрируйтесь: https://clc.to/U2plGA
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Асинхронность в C# может быть простой, если знать, как с ней работать правильно. На открытом вебинаре курса OTUS C# Developer. Advanced Елена Сычева покажет, как реактивное программирование помогает избавиться от Callback Hell и писать код, который сам реагирует на данные и события.
→ 26 ноября, 20:00
Реактивное программирование в C# Advanced
— продвинутые операторы Rx.NET: Switch, GroupBy, Buffer, Throttle
— устойчивые к сбоям системы: Catch, Retry, Finally
— холодные и горячие Observable: Publish, Replay, RefCount
— управление подписками и жизненным циклом реактивных компонентов
Вебинар будет полезен разработчикам на C#, работающим с асинхронным кодом, потоками данных и событиями. Участники узнают, как проектировать реактивные системы, способные восстанавливаться после ошибок, и писать декларативный, читаемый и эффективный код.
→ Зарегистрируйтесь: https://clc.to/U2plGA
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Вы пишете библиотеку на C#, используете async/await, и всё работает. Но потом ваша библиотека попадает в веб-приложение, мобильное приложение, или какой-то другой контекст — и начинаются странные deadlock'и или даже зависания.
Проблема вот в чём: когда код выходит из await, он хочет продолжить выполнение в том же контексте, в котором был запущен. Если это UI-приложение, контекст одноточечный — только главный поток может работать с UI.
Если ваша библиотека захватит этот контекст и не отпустит — приложение зависнет. А если написали синхронный код, который вызывает async библиотеку, и она захватит контекст — будет deadlock.
ConfigureAwait(false) как раз говорит: «Мне вообще всё равно, в каком контексте продолжать. Возьми любой поток из thread pool'а«. И вот это спасает приложения от проблем:await stream.WriteAsync(buffer, ct).ConfigureAwait(false);
Результат: библиотека не блокирует контекст, не создаёт deadlock'и, работает везде одинаково.
Когда НЕ нужен ConfigureAwait(false):
В приложениях можно писать без него, если вам нужен контекст:
// В ASP.NET контроллере — можно без ConfigureAwait(false)
[HttpGet]
public async Task<IActionResult> GetData()
{
var data = await service.GetDataAsync(); // Контекст нужен для логирования, etc
return Ok(data);
}
// В UI приложении — нужен контекст
private async void Button_Click(object sender, EventArgs e)
{
var data = await LoadDataAsync(); // Нужно вернуться в UI поток
UpdateUI(data);
}
#il_люминатор
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍8🥱1
С# 14 упрощает определение лямбда-выражений с модификаторами, без лишних повторений.
Теперь можно использовать ref, out, in и другие модификаторы в параметрах лямбд без обязательного указания типа:
delegate bool TryParse<T>(string text, out T result);
TryParse<int> parse = (text, out result) => int.TryParse(text, out result);
Ранее можно было добавлять модификаторы к параметрам лямбда-выражений только при условии, что для всех параметров явно указывались типы.
🔹 Алгоритмы и структуры данных
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
👏4