🛠 LINQPad — инструмент для быстрых экспериментов
LINQPad — это интерактивная среда для запуска C#-кода без создания проектов, солюшенов и прочей бюрократии.
Почему это мастхэв:
➖ Быстрая проверка идей — пиши и запускай на лету
➖ Dump() — метод, которого не хватало
Даёт мгновенный вывод структуры объекта, с деревьями, списками, полями и цветами. Идеален для отладки.
➖ Поддержка EF Core, SQL и даже NoSQL
➖ Поддержка NuGet прямо в редакторе
Пример:
Набросали код и проверили с помощью
➡️ Попробовать LINQPad
🐸 Библиотека шарписта #буст
LINQPad — это интерактивная среда для запуска C#-кода без создания проектов, солюшенов и прочей бюрократии.
Почему это мастхэв:
Даёт мгновенный вывод структуры объекта, с деревьями, списками, полями и цветами. Идеален для отладки.
Пример:
var numbers = Enumerable.Range(1, 20);
var evens = numbers.Where(x => x % 2 == 0);
evens.Dump("Чётные числа");
Набросали код и проверили с помощью
Dump()
что получилось. Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥7❤1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
😺🐙🧼 Сам себе GitHub: как работать с чистым Git-репозиторием
Git — мощная система контроля версий, которую обычно используют через платформы вроде GitHub и GitLab. Однако Git сам по себе не требует веб-интерфейсов и облачных сервисов. Многие разработчики предпочитают работать с чистым Git-репозиторием, размещенным на собственном сервере.
➡️ В этой статье мы рассмотрим, почему это удобно, и как эффективно отправлять патчи в проекты, использующие этот подход.
🐸 Библиотека программиста
Git — мощная система контроля версий, которую обычно используют через платформы вроде GitHub и GitLab. Однако Git сам по себе не требует веб-интерфейсов и облачных сервисов. Многие разработчики предпочитают работать с чистым Git-репозиторием, размещенным на собственном сервере.
➡️ В этой статье мы рассмотрим, почему это удобно, и как эффективно отправлять патчи в проекты, использующие этот подход.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10💯4❤2
🎲 Разминка для мозгов
Шесть слов, связанных с ключевыми понятиями платформы. Справитесь без подсказок?
1 — Тип, предназначенный для создания неизменяемых объектов с авто-генерацией Equals и ToString.
2 — Современный компилятор C# с открытым API для анализа и генерации кода.
3 — Язык запросов, встроенный в C# для работы с коллекциями и источниками данных.
4 — Класс, который представляет таблицу в базе данных
5 — Структура, объединяющая фиксированное количество элементов разных типов.
6 — Базовая единица параллельного исполнения в многопоточном программировании .NET.
💬 Пишите ответы под спойлер в комментарии 👇
🐸 Библиотека шарписта #междусобойчик
Шесть слов, связанных с ключевыми понятиями платформы. Справитесь без подсказок?
1 — Тип, предназначенный для создания неизменяемых объектов с авто-генерацией Equals и ToString.
2 — Современный компилятор C# с открытым API для анализа и генерации кода.
3 — Язык запросов, встроенный в C# для работы с коллекциями и источниками данных.
4 — Класс, который представляет таблицу в базе данных
5 — Структура, объединяющая фиксированное количество элементов разных типов.
6 — Базовая единица параллельного исполнения в многопоточном программировании .NET.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2🔥1
📰 Самое важное за неделю
Ключевые события и тренды недели, которые могут повлиять на ваши решения, стратегию или просто расширить картину мира.
➖ AutoMapper и MediatR переходят на коммерческую модель.
➖ MediatR v12.5.0
Вышла новая версия MediatR, в которой добавили поддержку тайм-аутов для обработчиков запросов, улучшили регистрацию открытых поведений, реализовали полную передачу CancellationToken по цепочке вызовов и обновили инфраструктуру проекта.
➖ Windows Community Toolkit v8.2
Microsoft выпустила новую версию Windows Community Toolkit , предлагая разработчикам WinUI улучшенную поддержку Native AOT, совместимость с UWP для .NET 9 и новый SwitchConverter.
➖ Поучаствуйте в нашей подборке ноутов
🐸 Библиотека шарписта #свежак
Ключевые события и тренды недели, которые могут повлиять на ваши решения, стратегию или просто расширить картину мира.
Вышла новая версия MediatR, в которой добавили поддержку тайм-аутов для обработчиков запросов, улучшили регистрацию открытых поведений, реализовали полную передачу CancellationToken по цепочке вызовов и обновили инфраструктуру проекта.
Microsoft выпустила новую версию Windows Community Toolkit , предлагая разработчикам WinUI улучшенную поддержку Native AOT, совместимость с UWP для .NET 9 и новый SwitchConverter.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1😢1
Forwarded from Библиотека собеса по C# | вопросы с собеседований
✍🏻 Чем отличаются интерфейсы от абстрактных классов в C#?
Интерфейсы и абстрактные классы в C# являются механизмами для реализации полиморфизма и обеспечения повторного использования кода. Вот основные отличия между ними:
1. Отношение к классам-наследникам: Абстрактный класс может иметь как абстрактные, так и конкретные (реализованные) методы. Интерфейс же предоставляет только определения методов. Класс может наследоваться только от одного абстрактного класса, но может реализовывать несколько интерфейсов.
2. Реализация: Абстрактным классам разрешено иметь переменные экземпляра и иметь реализацию методов. Интерфейсы могут иметь только методы (и свойства) без реализации, только сигнатуры. Класс, реализующий интерфейс, должен предоставить реализацию всех методов и свойств интерфейса.
3. Использование: Абстрактные классы применяются, когда некоторые базовые методы и свойства должны быть доступны и переопределены в классах-наследниках. Интерфейсы используются для создания контракта, который должны выполнить классы, обеспечивая использование полиморфизма.
Оба механизма полезны в разных сценариях разработки. Выбор между использованием абстрактных классов и интерфейсов зависит от конкретных требований проекта.
Библиотека собеса по С#
1. Отношение к классам-наследникам: Абстрактный класс может иметь как абстрактные, так и конкретные (реализованные) методы. Интерфейс же предоставляет только определения методов. Класс может наследоваться только от одного абстрактного класса, но может реализовывать несколько интерфейсов.
2. Реализация: Абстрактным классам разрешено иметь переменные экземпляра и иметь реализацию методов. Интерфейсы могут иметь только методы (и свойства) без реализации, только сигнатуры. Класс, реализующий интерфейс, должен предоставить реализацию всех методов и свойств интерфейса.
3. Использование: Абстрактные классы применяются, когда некоторые базовые методы и свойства должны быть доступны и переопределены в классах-наследниках. Интерфейсы используются для создания контракта, который должны выполнить классы, обеспечивая использование полиморфизма.
Оба механизма полезны в разных сценариях разработки. Выбор между использованием абстрактных классов и интерфейсов зависит от конкретных требований проекта.
Библиотека собеса по С#
🥱31👍7😢4
Forwarded from Библиотека задач по C# | тесты, код, задания
Что выведет код?
👾 — Мусорное значение
👍 — Compile time error
🥰 — Программа распечатает значение по адресу 65535
⚡️ — 65535
Библиотека задач по C#
👾 — Мусорное значение
👍 — Compile time error
🥰 — Программа распечатает значение по адресу 65535
Библиотека задач по C#
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡98🥰16😢5🌚5👾5
Forwarded from IT Job Hub | Работа и вакансии в IT
Если вы следили за нашим мини-сериалом о валютной удаленке, то уже знаете:
И вот финальная часть — потому что оффер это только начало.
Что в статье:
Читать гайд по выживанию айтишника в валютных джунглях
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3👍2🥱1
OpenAI запустили универсальную аудио-модель, и теперь можно делать магию. Semantic Kernel уже умеет с ней работать, осталось только подключить и собрать что-то своё.
• SemanticKernel
• HttpClient
• OpenAIAudioChatCompletionService (входит в SemanticKernel)
Пример на C#:
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;
using Microsoft.SemanticKernel.Audio;
// Конфиг
string apiKey = "sk-...";
string model = "gpt-4o";
// Создаем Kernel
var builder = Kernel.CreateBuilder();
builder.AddOpenAIChatCompletion(model, apiKey);
// Подключаем аудио-модель
builder.Services.AddOpenAIAudioChatCompletion(model, apiKey);
var kernel = builder.Build();
// Аудиофайл на вход (WAV или MP3)
var audioPath = "audio_input.wav";
var audioFile = new FileInfo(audioPath);
// Запускаем аудио-комплит
var audioChatService = kernel.GetRequiredService<IAudioChatCompletionService>();
var response = await audioChatService.GetAudioChatMessageContentAsync(
new OpenAIAudioChatRequestSettings { ResponseFormat = AudioResponseFormat.MP3 },
new AudioChatMessageContent(AuthorRole.User, audioFile)
);
// Сохраняем ответ в файл
await File.WriteAllBytesAsync("response.mp3", response.Audio);
Что происходит под капотом?
1. Модель GPT-4o получает аудиофайл
2. Распознаёт текст (ASR)
3. Генерирует ответ
4. Конвертирует его в речь
5. Возвращает MP3-ответ
💬 Уже придумали где применить? Админ бы заставил приложение ругаться на пользователя🧑💻 Делитесь своими идеями в комментариях 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20❤4👍3
Шарписты!
Проголосуйте за наш канал, и в сторис мы опубликуем топ материалов, которые должен прочитать каждый шарпист.
➡️ Поддержать канал: https://yangx.top/boost/csharpproglib
Проголосуйте за наш канал, и в сторис мы опубликуем топ материалов, которые должен прочитать каждый шарпист.
Please open Telegram to view this post
VIEW IN TELEGRAM
1🥱11👍3❤1
🕸 Как работает протокол HTTP/2: основные принципы и преимущества в сравнении с HTTP/1.1
HTTP/2 — это как переход с однополосной дороги HTTP/1.1 на скоростное шоссе: быстрее, эффективнее и без пробок.
Узнайте, как новые технологии ускоряют загрузку веб-страниц и улучшают работу приложений.
➡️ Читать статью
🐸 Библиотека шарписта
HTTP/2 — это как переход с однополосной дороги HTTP/1.1 на скоростное шоссе: быстрее, эффективнее и без пробок.
Узнайте, как новые технологии ускоряют загрузку веб-страниц и улучшают работу приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🛠 Команда дня:
Вы сделали git rebase, всё вроде ок, но остаётся неприятное чувство неопределённости — а всё ли пошло так, как надо? Вот тут и приходит на помощь
Команда показывает, как изменилась история коммитов между двумя ветками. Это не просто сравнение кода — вы видите, какие коммиты исчезли, какие были переписаны, а какие остались нетронутыми.
Полезно после rebase или перед force-push, когда важно убедиться, что вы ничего случайно не потерли.
➖ Пример:
Сравнивает текущую ветку с origin/main, показывая, какие коммиты изменились, удалились или переехали.
🐸 Библиотека шарписта #буст
git range-diff
Вы сделали git rebase, всё вроде ок, но остаётся неприятное чувство неопределённости — а всё ли пошло так, как надо? Вот тут и приходит на помощь
git range-diff
.Команда показывает, как изменилась история коммитов между двумя ветками. Это не просто сравнение кода — вы видите, какие коммиты исчезли, какие были переписаны, а какие остались нетронутыми.
Полезно после rebase или перед force-push, когда важно убедиться, что вы ничего случайно не потерли.
git range-diff origin/main...HEAD
Сравнивает текущую ветку с origin/main, показывая, какие коммиты изменились, удалились или переехали.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
Please open Telegram to view this post
VIEW IN TELEGRAM
😁38👏1
🌐 Чек-лист: как искать работу
Чтобы не застрять в вечной отладке своей карьеры, держим в голове (и перед глазами) понятный план. Вот чек-лист на период поиска:
✅ Обновите резюме и профиль (да, и GitHub тоже)
Ваш профиль — это витрина. Убедитесь, что в нём отражены:
• актуальные технологии (например, .NET 6/7/8, Blazor, ASP.NET, Azure и т. д.).
• понятные результаты («реализовал систему логирования» , а не «писал код»).
• ссылки на GitHub с чистыми, осмысленными проектами — лишнее желательно скрыть или удалить.
✅ Сформулируйте ключевые навыки и корректные поисковые запросы.
Большинство рекрутеров используют автоматические фильтры. Включите в резюме чёткие названия технологий: Entity Framework Core, LINQ, RabbitMQ, Docker, CI/CD, Kubernetes.
✅ Следите за вакансиями регулярно, но без стресса
• Настройте уведомления на LinkedIn, Habr Career, hh.
• Подпишитесь на каналы с вакансиями, например, наш канал с вакансиями для шарпистов.
✅ Готовьтесь к собеседованиям заранее
• Освежите базовые концепции вроде async/await, Dependency Injection, SOLID, разберитесь в нюансах работы ASP.NET.
• Подумайте заранее, какие проекты вы можете описать как удачные кейсы.
• Поработайте над формулировками, которые показывают ваш вклад — рекрутеры ценят конкретику.
💬 Сколько в среднем ищете работу? Пару дней или пару месяцев? Пишите в комментарии👇
🐸 Библиотека шарписта #буст
Чтобы не застрять в вечной отладке своей карьеры, держим в голове (и перед глазами) понятный план. Вот чек-лист на период поиска:
Ваш профиль — это витрина. Убедитесь, что в нём отражены:
• актуальные технологии (например, .NET 6/7/8, Blazor, ASP.NET, Azure и т. д.).
• понятные результаты («реализовал систему логирования» , а не «писал код»).
• ссылки на GitHub с чистыми, осмысленными проектами — лишнее желательно скрыть или удалить.
Большинство рекрутеров используют автоматические фильтры. Включите в резюме чёткие названия технологий: Entity Framework Core, LINQ, RabbitMQ, Docker, CI/CD, Kubernetes.
• Настройте уведомления на LinkedIn, Habr Career, hh.
• Подпишитесь на каналы с вакансиями, например, наш канал с вакансиями для шарпистов.
• Освежите базовые концепции вроде async/await, Dependency Injection, SOLID, разберитесь в нюансах работы ASP.NET.
• Подумайте заранее, какие проекты вы можете описать как удачные кейсы.
• Поработайте над формулировками, которые показывают ваш вклад — рекрутеры ценят конкретику.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👾1
🎮🔌 4 cамых популярных фреймворка для разработки онлайн-игр на Unity
Сетевое взаимодействие — это сердце многопользовательской игры, и правильный выбор фреймворка это решающий фактор для проекта.
Посмотрите обзор самых популярных фреймворков для разработки онлайн-игр на Unity и выберите тот, который подходит для вашего проекта.
➡️ Читать обзор
🐸 Библиотека шарписта
Сетевое взаимодействие — это сердце многопользовательской игры, и правильный выбор фреймворка это решающий фактор для проекта.
Посмотрите обзор самых популярных фреймворков для разработки онлайн-игр на Unity и выберите тот, который подходит для вашего проекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
🙈 Что скрывает дисперсия: разгадка секрета точных ML-моделей
Представьте, что вы строите модель, которая прекрасно работает на тренировочных данных, но стоит подать ей новые примеры... и всё рушится. Знакомо? За этим почти всегда скрывается неправильное обращение с дисперсией.
🧐 Но что, если есть простая формула, способная:
• Мгновенно определить, насколько «разбросаны» ваши данные
• Значительно улучшить точность ваших ML-моделей
• Помочь обнаружить аномалии, которые вы раньше не замечали
В нашем вебинаре мы раскрываем все секреты дисперсии — без сложных терминов и занудных объяснений. Вы узнаете, почему дисперсия — как соль: без нее все пресно, а с переизбытком — несъедобно.
Хотите узнать, как находить идеальный баланс в своих моделях, причем тут Random Forest и много другого о Data Science?
➡ Тогда смотрите бесплатный вебинар от Proglib: https://proglib.io/w/0138fb1c
Представьте, что вы строите модель, которая прекрасно работает на тренировочных данных, но стоит подать ей новые примеры... и всё рушится. Знакомо? За этим почти всегда скрывается неправильное обращение с дисперсией.
🧐 Но что, если есть простая формула, способная:
• Мгновенно определить, насколько «разбросаны» ваши данные
• Значительно улучшить точность ваших ML-моделей
• Помочь обнаружить аномалии, которые вы раньше не замечали
В нашем вебинаре мы раскрываем все секреты дисперсии — без сложных терминов и занудных объяснений. Вы узнаете, почему дисперсия — как соль: без нее все пресно, а с переизбытком — несъедобно.
Хотите узнать, как находить идеальный баланс в своих моделях, причем тут Random Forest и много другого о Data Science?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2😁1
Рынок IT полон загадок, но одна из самых частых — что вообще значит “Middle+” разработчик? Где та тонкая грань между «ещё джун» и «уже можно доверить продакшн»?
💬 В чате наша подписчица спросила:
В вакансии увидела упоминание «владение языком C# на уровне middle+» — задумалась, а что это вообще значит? Что именно нужно знать и уметь?
💭 Один вариант ответа был такой:
Всякие особенности языка — это уже не совсем про middle+. Это только один из критериев.
Middle+ — это когда ты уже можешь затащить сложные задачи, брать на себя ответственность, делиться знаниями, декомпозировать задачи, быстро погружаться в незнакомый проект.
То есть тебя можно кинуть на новый проект — и ты не "заплюхаешься".
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1
Java и C# — зрелые, мощные платформы с крупными экосистемами, устойчивыми карьерными возможностями и богатым инструментарием.
Но язык — это не только про возможности. Это ещё и про то, как с ним живётся каждый день.
В видео подробно, но без фанатизма сравниваются разные аспекты языков.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁9❤2👍2
💡 .NET 10 Preview 3
Microsoft выпустила третью превью-версию .NET 10. Без громких анонсов, но с рядом улучшений, которые делают повседневную разработку немного приятнее.
Что нового:
1️⃣ Улучшения System.Text.Json
Добавлены новые атрибуты и возможности кастомной сериализации.
2️⃣ Поддержка инстанцирования generic-атрибутов
Теперь можно использовать обобщённые атрибуты с параметрами типа.
3️⃣ Native AOT для WebAPI
Возможность собирать WebAPI с Native AOT компиляцией.
4️⃣ Новые Roslyn Source Generators
Расширение генераторов кода — в том числе улучшения для CallerArgumentExpression, и лучшее поведение при компиляции.
5️⃣ Уточнения по поддержке Linux и WASI
.NET продолжает фокусироваться на кроссплатформенности: WebAssembly System Interface становится приоритетом.
➡️ Подробности в блоге разработчиков
🐸 Библиотека шарписта #свежак
Microsoft выпустила третью превью-версию .NET 10. Без громких анонсов, но с рядом улучшений, которые делают повседневную разработку немного приятнее.
Что нового:
Добавлены новые атрибуты и возможности кастомной сериализации.
Теперь можно использовать обобщённые атрибуты с параметрами типа.
Возможность собирать WebAPI с Native AOT компиляцией.
Расширение генераторов кода — в том числе улучшения для CallerArgumentExpression, и лучшее поведение при компиляции.
.NET продолжает фокусироваться на кроссплатформенности: WebAssembly System Interface становится приоритетом.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔧 Когда ваш C#-проект больше похож на замок, чем на приложение
Вы декомпозируете классы с такой тщательностью, будто строите ферму мобов?
А async/await у вас организованы лучше, чем сундуки с шалкерами?
Ваши interface'ы такие продуманные, что Стив бы поставил лайк.
😅 Признайтесь: вы не просто пишете код — вы его зачаровываете.
➡️ Самое время проверить, где заканчивается C# и начинается Minecraft
🐸 Библиотека шарписта
Вы декомпозируете классы с такой тщательностью, будто строите ферму мобов?
А async/await у вас организованы лучше, чем сундуки с шалкерами?
Ваши interface'ы такие продуманные, что Стив бы поставил лайк.
😅 Признайтесь: вы не просто пишете код — вы его зачаровываете.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Please open Telegram to view this post
VIEW IN TELEGRAM
😁22👍4