Библиотека шарписта | C#, F#, .NET, ASP.NET
22.9K subscribers
2.25K photos
35 videos
85 files
4.41K links
Все самое полезное для C#-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
💵💻🌍 Как не налететь на грабли: оформление и выплаты при валютной удалёнке из России

Если вы следили за нашим мини-сериалом о валютной удаленке, то уже знаете:

🔜 Как найти зарубежную удалёнку и зарабатывать больше

🔜 Как пройти путь от резюме до оффера

И вот финальная часть — потому что оффер это только начало.

Что в статье:

📍 Все легальные способы получения валютных выплат, от ИП в Грузии до пейролл-сервисов.

📍 Реальные риски: блокировки, штрафы, политическая турбулентность.

📍 Юридические тонкости и что писать в контракте, чтобы не остаться без денег.

📍 Как не влететь на налоги и почему «авось» — плохой бизнес-план.

Читать гайд по выживанию айтишника в валютных джунглях 🔗
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3👍2🥱1
💡 Заставляем C# говорить

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-ответ

💬 Уже придумали где применить? Админ бы заставил приложение ругаться на пользователя🧑‍💻 Делитесь своими идеями в комментариях 👇

➡️ Подробнее в блоге Microsoft

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥204👍3
Шарписты!

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

➡️Поддержать канал: https://t.iss.one/boost/csharpproglib
Please open Telegram to view this post
VIEW IN TELEGRAM
1🥱11👍31
🕸 Как работает протокол HTTP/2: основные принципы и преимущества в сравнении с HTTP/1.1

​HTTP/2 — это как переход с однополосной дороги HTTP/1.1 на скоростное шоссе: быстрее, эффективнее и без пробок.

Узнайте, как новые технологии ускоряют загрузку веб-страниц и улучшают работу приложений.

➡️ Читать статью

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🛠 Команда дня: 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
🌐 Чек-лист: как искать работу

Чтобы не застрять в вечной отладке своей карьеры, держим в голове (и перед глазами) понятный план. Вот чек-лист на период поиска:

Обновите резюме и профиль (да, и 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.
• Подумайте заранее, какие проекты вы можете описать как удачные кейсы.
• Поработайте над формулировками, которые показывают ваш вклад — рекрутеры ценят конкретику.

💬 Сколько в среднем ищете работу? Пару дней или пару месяцев? Пишите в комментарии👇

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👾1
🎮🔌 4 cамых популярных фреймворка для разработки онлайн-игр на 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2😁1
🤨 Что такое «Middle+» в IT

Рынок IT полон загадок, но одна из самых частых — что вообще значит “Middle+” разработчик? Где та тонкая грань между «ещё джун» и «уже можно доверить продакшн»?

💬 В чате наша подписчица спросила:
В вакансии увидела упоминание «владение языком C# на уровне middle+» — задумалась, а что это вообще значит? Что именно нужно знать и уметь?


💭 Один вариант ответа был такой:
Всякие особенности языка — это уже не совсем про middle+. Это только один из критериев.
Middle+ — это когда ты уже можешь затащить сложные задачи, брать на себя ответственность, делиться знаниями, декомпозировать задачи, быстро погружаться в незнакомый проект.
То есть тебя можно кинуть на новый проект — и ты не "заплюхаешься".


💬 А вы как оцениваете уровень middle+? Что важнее: знание языка или поведение в проекте? 👇

🐸Библиотека шарписта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101
👀 Что посмотреть: C# — это Java, сделанная правильно

Java и C# — зрелые, мощные платформы с крупными экосистемами, устойчивыми карьерными возможностями и богатым инструментарием.

Но язык — это не только про возможности. Это ещё и про то, как с ним живётся каждый день.

В видео подробно, но без фанатизма сравниваются разные аспекты языков.

➡️ Смотреть видео

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
😁92👍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 становится приоритетом.

➡️ Подробности в блоге разработчиков

🐸Библиотека шарписта #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🔧 Когда ваш C#-проект больше похож на замок, чем на приложение

Вы декомпозируете классы с такой тщательностью, будто строите ферму мобов?
А async/await у вас организованы лучше, чем сундуки с шалкерами?
Ваши interface'ы такие продуманные, что Стив бы поставил лайк.

😅 Признайтесь: вы не просто пишете код — вы его зачаровываете.

➡️ Самое время проверить, где заканчивается C# и начинается Minecraft

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🎮 Unity на C# — благословение или тормозной ад

Каждый разработчик в какой-то момент сталкивается с Unity. Одни вспоминают его с теплом, другие — с судорогой в глазу. Истина, как всегда, где-то между.

Почему благословение:
• Простой старт — C#, туториалы, всё в одном месте.
• Кроссплатформенность — один билд на всё.
• Asset Store — лего для ленивых.
• C# мощный — async, events, OOP, welcome.
• Большое коммьюнити — на любой баг найдётся тред.

Почему ад:
• Глючный Editor — «ты сегодня не поиграешь».
• GC тормоза — фризы во время кульминации.
• Хаос из MonoBehaviour'ов — архитектурный кошмар.
• Обновления ломают всё — стабильно нестабильные.
• UI до сих пор страдает — hello, 2010.

💬 На какой стороне вы? Ждём ваше мнение в комментариях👇

🐸Библиотека шарписта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱8👍71
📰 Самое важное за неделю

Всё, что стоило бы загуглить:

Semantic Kernel для .NET теперь поддерживает гибридный поиск
Теперь вы можете комбинировать векторный и полнотекстовый поиск для более точных и релевантных результатов

.NET Aspire 9.2
Microsoft выпустила новую версию .NET Aspire — обновление, которое приносит новые способы развёртывания через систему "publishers"

.NET 10 Preview 3

4 cамых популярных фреймворка для разработки онлайн-игр на Unity

Как работает протокол HTTP/2: основные принципы и преимущества в сравнении с HTTP/1.1

➡️ Вакансия бустера

🐸Библиотека шарписта #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
💻 Это база: кортежи

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

(string topping, bool isSpicy) = GetBurgerOptions();


В чём фишка

• Быстро: никаких лишних классов, никаких out-параметров

• Именованные поля: Name, Age — код становится читаемым без лишнего усилия

• ValueTuple — структура, работает быстрее и не создаёт лишней нагрузки на сборщик мусора.

Когда лучше не использовать кортежи

• Если данных слишком много — создайте отдельный class или record. С кортежем на 5+ элементов уже не смешно.

• Если вы заботитесь о будущем себе — помните, что анонимные Item1, Item2 быстро превращаются в загадку даже для вас через пару недель.

• Если пишете API, библиотеку или SDK — не заставляйте других гадать, что такое Item3. Имейте уважение к коллегам по цеху.

А ещё кортежей всё ещё нет в Java 😁

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19😁13🤔21
Что означает «I» в ACID?

👾 — «Изоляция»: каждая транзакция выполняется так, как будто она единственная в системе — другие не влияют на её выполнение.
👍 — «Интеграция»: транзакции выполняются без нарушения логики взаимодействия между системой и данными.
🥰 — «Индивидуальность»: каждая транзакция работает независимо, и её результат не виден другим до завершения.
⚡️ — «Инвариантность»: состояние данных остается неизменным, даже если несколько транзакций выполняются одновременно.

🐸Библиотека задач по C#
Please open Telegram to view this post
VIEW IN TELEGRAM
👾54🥱4👍2🥰1🙏1
🤔 Подборка вакансий для шарпистов

Backend C# / .NET Разработчик (middle, middle+) — до 450 000 ₽,
Гибрид

Backend Developer (.NET, C#) — от 3 500 $, Удалёнка

Разработчик C# — 250 000 ₽, Удалёнка

Бустер — Удалённо (весь мир)

➡️ Еще больше топовых вакансий — в нашем канале С# Jobs
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Ключевые слова C# от Microsoft

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

➡️ Шпаргалка

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
11🥱8