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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
✈️ Локальный запуск LLMs в .NET с Ollama и Semantic Kernel

Большие языковые модели (LLMs) чаще всего ассоциируются с облачными решениями, такими как OpenAI или Azure. Но что, если вам нужно запустить модель локально? Это может быть полезно для обеспечения конфиденциальности данных, экономии средств или работы в офлайн-среде. Именно здесь на помощь приходят Ollama и Semantic Kernel. Давайте разберём, как это работает.

🦙 Что такое Ollama?
Ollama — это инструмент, позволяющий запускать большие языковые модели локально, на вашем компьютере. Он минимизирует зависимость от облачных сервисов, обеспечивает защиту данных и позволяет вам полностью контролировать вычислительные ресурсы.

Что такое Semantic Kernel?
Semantic Kernel — это SDK от Microsoft, созданное для интеграции возможностей ИИ в приложения на .NET. Оно поддерживает работу с различными провайдерами LLMs, включая локальные серверы, такие как Ollama.

Как всё это работает?
Установка Ollama: вы начинаете с установки Ollama на свою систему. Он предоставляет простой способ загрузки и запуска LLMs.
Загрузка модели: после установки вы можете выбрать и загрузить модель, например llama2, с помощью команды в Ollama.
Настройка Semantic Kernel: semantic Kernel подключается к Ollama как к локальному серверу. Вы используете его для отправки запросов к модели и получения ответов.
Интеграция в .NET-приложение: cоздаёте проект в .NET 8 или 9, добавляете Semantic Kernel через NuGet и настраиваете взаимодействие с Ollama.

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

🤩 За подробностями в статью!
Please open Telegram to view this post
VIEW IN TELEGRAM
Реализация службы на основе времени в .NET 8 с использованием IHostedService

Фоновые службы — это важный компонент для выполнения задач, работающих параллельно с основным приложением. В .NET 8 интерфейс IHostedService предоставляет простой и гибкий способ управления такими службами. Вот как это работает.

Что делает IHostedService?
IHostedService используется для создания служб, которые запускаются при старте приложения и завершаются при его остановке. Он предоставляет два метода:
1️⃣ StartAsync: выполняется, когда приложение запускается. Здесь вы определяете, что должно делать ваша служба.
2️⃣ StopAsync: вызывается перед завершением работы приложения. Здесь можно остановить фоновые задачи и освободить ресурсы.

Как работает служба на основе времени?
Основная идея — это выполнение определённой задачи через регулярные промежутки времени, например:
Отправка данных на сервер.
Очистка временных файлов.
Обновление данных кэша.

Для реализации этого обычно используется таймер. Таймер запускается в методе StartAsync и выполняет задачу через указанные интервалы времени. Когда приложение останавливается, таймер отключается в методе StopAsync, чтобы избежать утечек памяти или нежелательной активности.

Где найти пример?
Для более подробной реализации с кодом и пошаговыми инструкциями рекомендуем ознакомиться со статьёй.
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 Эффективное проектирование программных систем

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

Наш интенсив «Архитектуры и шаблоны проектирования» научит вас строить программные системы без боли и стресса. Вы на практике освоите основные паттерны проектирования и прокачайте свои навыки архитектора программного обеспечения.

🎄Начните свой 2025 со скидкой 35% на все курсы. Это лучшее вложении уходящего года – https://proglib.io/w/cc21e069
📘 SkunkHTML: Генератор статичных сайтов

SkunkHTML — это инструмент, который позволяет легко и быстро создавать статичные веб-сайты из файлов Markdown, автоматизируя процесс генерации и развертывания. Он разработан на F#, что делает его не только функциональным, но и интересным примером использования этого языка.

🛠️ Как это работает?
1. Форкните репозиторий: SkunkHTML на GitHub.
2. Добавьте контент: создайте свои файлы Markdown в соответствующей папке.
3. Настройте GitHub Pages: включите автоматическое развертывание через GitHub Actions.
4. Наслаждайтесь готовым сайтом!

📎 Попробуйте сами!

#новость
☁️ Размышления про абстракции

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

Основные мысли:
💭 Хорошая абстракция упрощает работу, скрывая сложные детали;
💭 Плохая абстракция лишь увеличивает количество слоев и усложняет понимание системы;
💭 Абстракции стоят дорого: они могут снижать производительность и усложнять сопровождение;
💭 Со временем даже хорошие абстракции могут начать «протекать», требуя знания внутренних механизмов.

Прежде чем добавлять новый уровень, задайте себе вопрос: действительно ли это абстракция или просто очередной слой косвенности? Хорошая абстракция должна приносить реальную ценность, а не просто усложнять код.
🔗 Что такое паттерн «Цепочка»?

В основе паттерна «цепочка» лежит идея последовательной обработки запроса через несколько микросервисов. Клиент делает запрос, который обрабатывается первым сервисом (A). Этот сервис передает результат следующему (B), затем — следующему (C) и так далее, пока не будет получен финальный результат, возвращаемый клиенту.

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

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

Недостатки паттерна
Высокие задержки: каждый вызов в цепочке требует времени, а синхронное взаимодействие увеличивает общее время отклика для клиента.
Уязвимость к сбоям: Если один из сервисов выйдет из строя, вся цепочка перестанет работать, что может нарушить работу приложения.
Сложности мониторинга: С ростом длины цепочки становится сложнее отслеживать метрики производительности и отладку.

Когда использовать паттерн «Цепочка»?
Необходимо последовательное выполнение задач (например, обработка платежей или подготовка данных для аналитики).
Задачи строго зависят друг от друга.
Длина цепочки невелика, а задержки допустимы.
Если же время отклика критично или система должна быть устойчива к сбоям, стоит рассмотреть альтернативы, такие как асинхронное взаимодействие или паттерн оркестрации.
Please open Telegram to view this post
VIEW IN TELEGRAM
🎨 Новый канал для вдохновения — UX in GIF

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

📌 Чем полезен канал?

→ Идеи для дизайна интерфейсов.
→ Анимации, которые можно повторить или адаптировать.
→ Лёгкий способ искать вдохновение перед новым проектом.

👉 Подписывайтесь и вдохновляйтесь: UX in GIF
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Testcontainers в .NET с PostgreSQL и pgvector

💡 Мы нашли статью о том, как использовать Testcontainers в .NET для работы с PostgreSQL и расширением pgvector. Если вы хотите сделать тестирование интеграции удобнее и мощнее, то это именно то, что вам нужно!

📌 Что такое Testcontainers?
Это библиотека, которая позволяет запускать Docker-контейнеры прямо из тестов, создавая временные окружения для тестирования. Это упрощает интеграционное тестирование, минимизируя необходимость ручной настройки баз данных, брокеров сообщений и других сервисов.

📌 Что такое pgvector?
pgvector — это расширение PostgreSQL, добавляющее поддержку работы с векторными данными. Это крайне полезно для приложений, которые используют эмбеддинги (например, из OpenAI или Hugging Face) для поиска, машинного обучения или рекомендательных систем.

📌 О чём статья?
Как настроить Testcontainers для работы с PostgreSQL в .NET.
Как подключить расширение pgvector в тестовой базе данных.
Пошаговое руководство по созданию контейнера с PostgreSQL, выполнению миграций и настройке данных для тестов.
Примеры использования pgvector для хранения и поиска векторных данных.

Автор показывает, как использовать Testcontainers для запуска PostgreSQL с уже установленным pgvector. Это позволяет тестировать функции работы с векторами (например, поиск ближайших соседей) без необходимости настраивать базу данных вручную.
Please open Telegram to view this post
VIEW IN TELEGRAM
💻📈 Итоги года Proglib: 2024 год в цифрах и достижениях

Как оставаться в курсе самых актуальных тенденций, не теряя времени на поиск информации? Итоги года Proglib покажут, как платформа объединила разработчиков, помогая им оставаться впереди.

Загляните в цифры, достижения и материалы, которые сделали этот год ярким!
🌍✈️ 6 идей, как ускорить поиск работы за рубежом

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

👉 Читать статью
👋 Привет, мир: несколько креативных способов написать классический код на C#

Иногда самые простые вещи могут быть невероятно увлекательными. В этой статье автор собрал разнообразные способы написать легендарное 'Hello, World!' на C#. Это не просто базовые примеры, а настоящая коллекция техник и подходов, которая понравится как новичкам, так и опытным разработчикам.

📎 Узнайте, как добавить немного креатива даже в такие тривиальные задачи!
Бесплатный курс по фулстек-разработке — реальность 🔥

Под Новый год Дед Мороз приносит подарки, а наши подписчики — собственные курсы! Сергей Дмитриев, который занимается коммерческой разработкой уже 15 лет, поделился с нами своим обучением по созданию веб-сервиса с нуля. В курс входит 141 урок, 28 часов видео, исходный код и чат поддержки для участников.

Подробнее о курсе читайте на Хабре или в телеграм-канале Сергея
С наступающим, С# сообщество! Или уже наступившим!🎆🎆

Уже придумали чем заняться в новом году? 😉
Если нет, то предлагаем вам подборку фильмов и сериалов к просмотру:

🔠 Остановись и гори (2014)
🅰️ The IT Crowd (2006-2013)
🔠 Revolution OS (2001)
©️ Разрабы (2020)
🔠 Игра в имитацию (2014)
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Давайте признавайтесь в комментариях — что вам подарили? 👇
#интерактив
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔍 Новое обновление в Visual Studio 2022: закрепляем окно поиска

Работаете в Visual Studio 2022? Тогда у нас для вас отличные новости! Теперь окно поиска кода и функций можно закрепить в интерфейсе как полноценную панель инструментов. Это обновление делает рабочий процесс ещё удобнее и эффективнее.

Что нового?
1️⃣ Закрепление окна поиска
Раньше окно поиска появлялось поверх других окон, что могло мешать. Теперь его можно закрепить в любом месте интерфейса Visual Studio — например, рядом с «Обозревателем решений». Чтобы сделать это, нажмите на значок в правом верхнем углу окна поиска. 🎯

2️⃣ Упрощённый предварительный просмотр
Добавлена кнопка для включения/выключения панели предварительного просмотра (иконка глаза). Если панель включена, она автоматически адаптируется под размеры окна поиска, предоставляя удобный просмотр найденного кода. 👁

3️⃣ Повышение продуктивности
Эти изменения помогают лучше организовать рабочее пространство, особенно если вы часто пользуетесь поиском кода (Ctrl + T) или функций (Ctrl + Q).

#новость
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Подпишись на нашу еженедельную email-рассылку, чтобы быть в курсе последних открытий и тенденций в мире бэкенда.

В еженедельных письмах ты найдешь:
● Языки программирования и фреймворки для бэкенда
● Архитектура и проектирование серверных приложений
● Базы данных и управление данными
● Безопасность и защита данных
● Облачные технологии и DevOps
● API и интеграции
● Тестирование и отладка
● Инструменты и утилиты для бэкенд-разработчиков
● Лучшие практики и паттерны проектирования

👉Подписаться👈
🤩 Быстрый переход к строке кода в Visual Studio 2022

Microsoft продолжает улучшать Visual Studio, делая работу разработчиков быстрее и удобнее. Новое обновление для поиска кода теперь позволяет мгновенно переходить к конкретной строке как в текущем, так и в других файлах.

Как это работает?
Переход в текущем файле
Введите в поле поиска кода : и номер строки (например, :42), чтобы сразу открыть нужную строку в активном документе.

Переход в другом файле
Укажите название файла, затем двоеточие и номер строки (например, Order:43). Visual Studio найдёт файл и сразу покажет нужный участок кода.

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

#новость
Please open Telegram to view this post
VIEW IN TELEGRAM