⚙️⚙️ System.Threading.Channels
❓ Каналы в C# — это мощный инструмент для организации обмена данными между производителями (producers) и потребителями (consumers). Канал можно представить как асинхронную очередь, которая связывает две стороны: одна записывает данные, а другая — их читает. Такой подход полезен, если данные генерируются в одном потоке, а обрабатываются в другом.
Основные компоненты каналов:
⚙️ ChannelWriter — отвечает за добавление данных в канал. Это «производитель».
⚙️ ChannelReader — отвечает за чтение данных из канала. Это «потребитель».
⚙️ Channel — объединяет Writer и Reader, предоставляя общий интерфейс для их взаимодействия.
Преимущества использования:
✅ Работа с каналами основана на async/await, что упрощает интеграцию с другими асинхронными компонентами.
✅ Низкоуровневое управление потоками и памятью делает их быстрее, чем использование классических очередей.
✅ Поддерживает настройку поведения, например, фиксированный или неограниченный размер буфера.
❓ Каналы в C# — это мощный инструмент для организации обмена данными между производителями (producers) и потребителями (consumers). Канал можно представить как асинхронную очередь, которая связывает две стороны: одна записывает данные, а другая — их читает. Такой подход полезен, если данные генерируются в одном потоке, а обрабатываются в другом.
Основные компоненты каналов:
⚙️ ChannelWriter — отвечает за добавление данных в канал. Это «производитель».
⚙️ ChannelReader — отвечает за чтение данных из канала. Это «потребитель».
⚙️ Channel — объединяет Writer и Reader, предоставляя общий интерфейс для их взаимодействия.
Преимущества использования:
✅ Работа с каналами основана на async/await, что упрощает интеграцию с другими асинхронными компонентами.
✅ Низкоуровневое управление потоками и памятью делает их быстрее, чем использование классических очередей.
✅ Поддерживает настройку поведения, например, фиксированный или неограниченный размер буфера.
👍34❤6⚡2
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
🥱2
⚙️ 🗒️ MemoryCache в C#: Зачем и как использовать
MemoryCache — это инструмент для хранения временных данных в оперативной памяти, что позволяет ускорить доступ к часто используемой информации. Это особенно полезно для веб-приложений, API или других программ, где важно снизить нагрузку на внешние источники данных (например, базы данных).
Основные возможности MemoryCache
⚙️ Быстродействие: Данные хранятся в памяти, поэтому доступны быстрее, чем при запросах в БД или файловую систему.
⚙️ Временное хранение: Вы можете настроить срок жизни данных (например, 5 минут или до определённого времени).
⚙️ Политики истечения:
Абсолютное истечение (Absolute Expiration): Данные удаляются по истечении указанного времени.
Скользящее окно (Sliding Expiration): Время истечения обновляется при каждом обращении к данным.
⚙️ Управление памятью: Ограничение общего объёма данных, чтобы не перегружать оперативную память.
❓Когда использовать MemoryCache?
✅ Кэширование часто используемых данных: Например, результаты сложных запросов в базу данных, ответы сторонних API или статические файлы (настройки, конфигурации).
✅ Улучшение производительности: Если ваши данные редко изменяются, кэширование уменьшает задержки на их повторное получение.
✅ Локальные сценарии: MemoryCache используется для данных, которые актуальны только в текущем процессе (например, при работе на одном сервере).
MemoryCache — это инструмент для хранения временных данных в оперативной памяти, что позволяет ускорить доступ к часто используемой информации. Это особенно полезно для веб-приложений, API или других программ, где важно снизить нагрузку на внешние источники данных (например, базы данных).
Основные возможности MemoryCache
⚙️ Быстродействие: Данные хранятся в памяти, поэтому доступны быстрее, чем при запросах в БД или файловую систему.
⚙️ Временное хранение: Вы можете настроить срок жизни данных (например, 5 минут или до определённого времени).
⚙️ Политики истечения:
Абсолютное истечение (Absolute Expiration): Данные удаляются по истечении указанного времени.
Скользящее окно (Sliding Expiration): Время истечения обновляется при каждом обращении к данным.
⚙️ Управление памятью: Ограничение общего объёма данных, чтобы не перегружать оперативную память.
❓Когда использовать MemoryCache?
✅ Кэширование часто используемых данных: Например, результаты сложных запросов в базу данных, ответы сторонних API или статические файлы (настройки, конфигурации).
✅ Улучшение производительности: Если ваши данные редко изменяются, кэширование уменьшает задержки на их повторное получение.
✅ Локальные сценарии: MemoryCache используется для данных, которые актуальны только в текущем процессе (например, при работе на одном сервере).
👍10👏5❤2
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Привет, друзья! 👋
Мы готовим статью об ИИ-инструментах для программирования в 2024 году и хотим услышать ваше мнение! 🤖💻 Поделитесь своим опытом и помогите нам сделать материал еще полезнее. Самые интересные ответы войдут в статью! 🏆
Мы готовим статью об ИИ-инструментах для программирования в 2024 году и хотим услышать ваше мнение! 🤖💻 Поделитесь своим опытом и помогите нам сделать материал еще полезнее. Самые интересные ответы войдут в статью! 🏆
Какой ИИ-инструмент для программирования вы считаете самым полезным и почему? 🛠
Anonymous Poll
11%
GitHub Copilot
45%
ChatGPT
3%
Claude
3%
Codeium
5%
Локальные LLM
30%
Не пользуюсь ИИ
4%
Другой (укажите в комментариях)
Как изменилась ваша продуктивность после начала использования ИИ-инструментов в разработке? ⏱️
Anonymous Poll
13%
Значительно выросла (более чем на 50%)
22%
Умеренно выросла (20-50%)
30%
Незначительно выросла (до 20%)
32%
Не изменилась
2%
Снизилась
Какой аспект разработки, по вашему мнению, больше всего выигрывает от использования ИИ? 🚀
Anonymous Poll
40%
Автодополнение кода
22%
Генерация кода с нуля
15%
Отладка и поиск ошибок
15%
Оптимизация существующего кода
9%
Другое (поделитесь в комментариях)
Не забудьте оставить комментарий с вашими мыслями об ИИ в программировании! Какие преимущества и недостатки вы видите? Какие инструменты рекомендуете попробовать коллегам? 🤔💬
🚀 CountBy: Новый метод LINQ в .NET 9, который упростит вашу жизнь
В .NET 9 команда Microsoft продолжает улучшать библиотеку LINQ, и одним из нововведений стал метод CountBy. Этот метод открывает новые горизонты для удобной и лаконичной работы с данными, позволяя эффективно группировать элементы и подсчитывать их количество.
🔍Что именно он делает?
- Группирует элементы по заданному ключу;
- Подсчитывает количество элементов в каждой группе;
- Возвращает результат в виде коллекции пар «ключ-значение».
Как это работало раньше? Пример с подсчётом букв в строке:
Ранее подобное можно было сделать через комбинацию методов GroupBy и Select, но CountBy делает этот процесс проще и менее подверженным ошибкам. Теперь это выглядит вот так:
В .NET 9 команда Microsoft продолжает улучшать библиотеку LINQ, и одним из нововведений стал метод CountBy. Этот метод открывает новые горизонты для удобной и лаконичной работы с данными, позволяя эффективно группировать элементы и подсчитывать их количество.
🔍Что именно он делает?
- Группирует элементы по заданному ключу;
- Подсчитывает количество элементов в каждой группе;
- Возвращает результат в виде коллекции пар «ключ-значение».
Как это работало раньше? Пример с подсчётом букв в строке:
var charCounts = input
.Where(c => !char.IsWhiteSpace(c))
.GroupBy(c => c)
.Select(group => new { Key = group.Key, Count = group.Count() });
Ранее подобное можно было сделать через комбинацию методов GroupBy и Select, но CountBy делает этот процесс проще и менее подверженным ошибкам. Теперь это выглядит вот так:
var charCounts = input
.Where(c => !char.IsWhiteSpace(c))
.CountBy(c => c);
👏37👍17🌚5🥰1
Forwarded from Библиотека тестировщика | QA, тестирование, quality assurance, manual testing, autotesting, ручное тестирование, автотесты
🚀🐘 Оптимизация хранимых процедур в PostgreSQL: 4 трюка для взрывного ускорения
Кто из нас не сталкивался с медленными хранимыми процедурами в PostgreSQL? Наверняка таких мало. Сегодня поговорим о том, как реально ускорить их работу. Никакой сухой теории — только проверенные на практике методы. Разберем, как анализировать запросы, правильно использовать индексы и применять другие хитрости, которые действительно работают.
Читать статью
Кто из нас не сталкивался с медленными хранимыми процедурами в PostgreSQL? Наверняка таких мало. Сегодня поговорим о том, как реально ускорить их работу. Никакой сухой теории — только проверенные на практике методы. Разберем, как анализировать запросы, правильно использовать индексы и применять другие хитрости, которые действительно работают.
Читать статью
👏3
❓⚙️ gRPC против REST: что выбрать для вашего проекта?
⚙️ REST (Representational State Transfer): Архитектурный стиль взаимодействия, который основан на протоколе HTTP и обычно использует формат JSON или XML для передачи данных.
⚙️ gRPC (Google Remote Procedure Call): Фреймворк удаленного вызова процедур, построенный на основе HTTP/2 и использующий протокол сериализации Protocol Buffers (Protobuf).
❓ Когда выбрать gRPC?
- Высокопроизводительные микросервисы с бо́льшим количеством запросов.
- Нужен стриминг данных в реальном времени.
- Система использует несколько языков программирования.
- Ограничения на пропускную способность или необходимость минимизировать задержки.
❓ Когда выбрать REST?
- Простые CRUD-приложения, где производительность не критична.
- Высокая совместимость с веб-приложениями и стандартными клиентами.
- Простота разработки и отладки важнее строгой типизации.
- Нужна удобная документация и тестирование API.
⚙️ REST (Representational State Transfer): Архитектурный стиль взаимодействия, который основан на протоколе HTTP и обычно использует формат JSON или XML для передачи данных.
⚙️ gRPC (Google Remote Procedure Call): Фреймворк удаленного вызова процедур, построенный на основе HTTP/2 и использующий протокол сериализации Protocol Buffers (Protobuf).
❓ Когда выбрать gRPC?
- Высокопроизводительные микросервисы с бо́льшим количеством запросов.
- Нужен стриминг данных в реальном времени.
- Система использует несколько языков программирования.
- Ограничения на пропускную способность или необходимость минимизировать задержки.
❓ Когда выбрать REST?
- Простые CRUD-приложения, где производительность не критична.
- Высокая совместимость с веб-приложениями и стандартными клиентами.
- Простота разработки и отладки важнее строгой типизации.
- Нужна удобная документация и тестирование API.
👍39🤔1
❓ На Reddit разработчик настольных приложений делится своими затруднениями при переходе к разработке веб-приложений. Он отмечает сложности в понимании новых технологий, таких как ASP.NET, MVC, HTML, CSS и JavaScript, и просит совета у сообщества.
Участники обсуждения предлагают различные рекомендации:
✅ Постепенное обучение: начать с основ веб-разработки, изучая HTML и CSS, затем переходить к JavaScript и фреймворкам, таким как ASP.NET MVC.
✅ Использование ресурсов: воспользоваться онлайн-курсами, тьюториалами и книгами, чтобы структурировать процесс обучения.
✅ Практика: создавать небольшие проекты или участвовать в существующих, чтобы применить полученные знания на практике.
А что разрабатываете вы? Как вам даются новомодные веб-приложения?
Пишите в комментарии! 👇
#интерактив
Участники обсуждения предлагают различные рекомендации:
✅ Постепенное обучение: начать с основ веб-разработки, изучая HTML и CSS, затем переходить к JavaScript и фреймворкам, таким как ASP.NET MVC.
✅ Использование ресурсов: воспользоваться онлайн-курсами, тьюториалами и книгами, чтобы структурировать процесс обучения.
✅ Практика: создавать небольшие проекты или участвовать в существующих, чтобы применить полученные знания на практике.
А что разрабатываете вы? Как вам даются новомодные веб-приложения?
Пишите в комментарии! 👇
#интерактив
👍5🌚4👾2🥱1
📜 ТОП-15 международных IT-сертификаций, которые увеличат твой доход в 2025 году
Хочешь знать, какие «корочки» реально поднимут твою зарплату? Исследование Skillsoft раскрыло ТОП-15 самых денежных IT-сертификаций. Спойлер: облака и безопасность рулят.
👉 Читать статью
Хочешь знать, какие «корочки» реально поднимут твою зарплату? Исследование Skillsoft раскрыло ТОП-15 самых денежных IT-сертификаций. Спойлер: облака и безопасность рулят.
👉 Читать статью
👍5❤3
🛠️🚀 Что нового в Visual Studio 17.12?
Visual Studio 17.12 делает акцент на улучшении продуктивности и интеграции с современными инструментами. Вот самые важные из изменений, которые непосредственно влияют на разработку и не только:
1. Продуктивность
🎯 Копирование ошибок из списка ошибок: Быстрая работа с ошибками — копируется только описание, что полезно для фиксации багов.
🎯 Обновление результатов поиска: Актуализация данных поиска позволяет сразу находить изменения в коде.
🎯 Неблокирующая очистка кода при сохранении: Вы сохраняете файл и выполняется автоматическая оптимизация кода, не прерывая работу.
🎯 Настраиваемый индикатор свернутого текста: Повышает визуальную удобочитаемость кода, особенно в больших проектах.
2. Интеграция с Git и GitHub
🤖 Ссылки на строки в коде: Удобно для командной работы — вы легко делитесь ссылками на конкретный код в репозитории.
🤖 AI для сообщений коммитов: Экономит время на написание коммитов, особенно при сложных изменениях.
🤖 Работа с мульти-репозиториями: Полезно, если проект разделен между несколькими репозиториями, связанными с Azure DevOps или GitHub.
3. Отладка и диагностика
🔧 Возврат значений метода при отладке: Вы сразу видите результат выполнения метода, не добавляя дополнительных логов.
🔧 Анализ памяти: Сравнение снимков памяти полезно для выявления утечек или анализа производительности.
🔧 Улучшенная отладка Blazor WebAssembly: Если вы разрабатываете приложения на Blazor, этот инструмент значительно улучшит процесс отладки.
4. Улучшения для .NET и C#
✈️ Поддержка .NET 9: Если вы планируете использовать новейшие функции .NET 9 (например, LINQ CountBy, Task.WhenEach), Visual Studio полностью поддерживает эту платформу.
✈️ Интеграция AI: GitHub Copilot помогает писать более эффективный код, исправлять ошибки, а также улучшать логику LINQ-запросов.
✈️ Поддержка SDK-стиля SQL-проектов: Если в вашем проекте активно используются базы данных, это упрощает работу с SQL Server.
5. Поддержка облачных решений
☁️ Публикация Azure WebJobs на Linux: Удобно для работы с облачными функциями на платформе Linux.
☁️ Функции Azure Flex Consumption: Если ваш проект использует Azure Functions, новая модель Flex Consumption упрощает управление.
Visual Studio 17.12 делает акцент на улучшении продуктивности и интеграции с современными инструментами. Вот самые важные из изменений, которые непосредственно влияют на разработку и не только:
1. Продуктивность
🎯 Копирование ошибок из списка ошибок: Быстрая работа с ошибками — копируется только описание, что полезно для фиксации багов.
🎯 Обновление результатов поиска: Актуализация данных поиска позволяет сразу находить изменения в коде.
🎯 Неблокирующая очистка кода при сохранении: Вы сохраняете файл и выполняется автоматическая оптимизация кода, не прерывая работу.
🎯 Настраиваемый индикатор свернутого текста: Повышает визуальную удобочитаемость кода, особенно в больших проектах.
2. Интеграция с Git и GitHub
🤖 Ссылки на строки в коде: Удобно для командной работы — вы легко делитесь ссылками на конкретный код в репозитории.
🤖 AI для сообщений коммитов: Экономит время на написание коммитов, особенно при сложных изменениях.
🤖 Работа с мульти-репозиториями: Полезно, если проект разделен между несколькими репозиториями, связанными с Azure DevOps или GitHub.
3. Отладка и диагностика
🔧 Возврат значений метода при отладке: Вы сразу видите результат выполнения метода, не добавляя дополнительных логов.
🔧 Анализ памяти: Сравнение снимков памяти полезно для выявления утечек или анализа производительности.
🔧 Улучшенная отладка Blazor WebAssembly: Если вы разрабатываете приложения на Blazor, этот инструмент значительно улучшит процесс отладки.
4. Улучшения для .NET и C#
✈️ Поддержка .NET 9: Если вы планируете использовать новейшие функции .NET 9 (например, LINQ CountBy, Task.WhenEach), Visual Studio полностью поддерживает эту платформу.
✈️ Интеграция AI: GitHub Copilot помогает писать более эффективный код, исправлять ошибки, а также улучшать логику LINQ-запросов.
✈️ Поддержка SDK-стиля SQL-проектов: Если в вашем проекте активно используются базы данных, это упрощает работу с SQL Server.
5. Поддержка облачных решений
☁️ Публикация Azure WebJobs на Linux: Удобно для работы с облачными функциями на платформе Linux.
☁️ Функции Azure Flex Consumption: Если ваш проект использует Azure Functions, новая модель Flex Consumption упрощает управление.
👍6❤1🔥1
📦 Что такое dotnet scaffold?
dotnet scaffold — это инструмент для быстрого создания компонентов, шаблонов проектов и приложений на основе ваших потребностей. Его главная цель — автоматизировать рутинные задачи, чтобы разработчики могли сосредоточиться на написании кода, а не на настройке окружения.
🛠️ Установка
Чтобы начать использовать инструмент, установите его через командную строку:
⚙️ Как это работает?
1️⃣ Войдите в папку с вашим проектом.
2️⃣ Выполните команду:
3️⃣ Вам будет предложено выбрать тип создаваемого объекта. Например:
- Web API
- Blazor
- Web App
4️⃣ Далее следуйте интерактивным подсказкам: выберите фреймворк, настройте маршруты или добавьте зависимости.
5️⃣ Инструмент автоматически сгенерирует необходимые файлы и обновит ваш проект.
Преимущества использования:
🚀 Интерактивность: Удобные подсказки помогают избежать ошибок при настройке.
🚀 Экономия времени: Генерация готовых к использованию шаблонов за считанные секунды.
🚀 Гибкость: Поддерживаются различные типы проектов, включая ASP.NET Core, Blazor и даже кастомные шаблоны.
dotnet scaffold — это инструмент для быстрого создания компонентов, шаблонов проектов и приложений на основе ваших потребностей. Его главная цель — автоматизировать рутинные задачи, чтобы разработчики могли сосредоточиться на написании кода, а не на настройке окружения.
🛠️ Установка
Чтобы начать использовать инструмент, установите его через командную строку:
dotnet tool install --global Microsoft.dotnet-scaffold
⚙️ Как это работает?
1️⃣ Войдите в папку с вашим проектом.
2️⃣ Выполните команду:
dotnet scaffold
3️⃣ Вам будет предложено выбрать тип создаваемого объекта. Например:
- Web API
- Blazor
- Web App
4️⃣ Далее следуйте интерактивным подсказкам: выберите фреймворк, настройте маршруты или добавьте зависимости.
5️⃣ Инструмент автоматически сгенерирует необходимые файлы и обновит ваш проект.
Преимущества использования:
🚀 Интерактивность: Удобные подсказки помогают избежать ошибок при настройке.
🚀 Экономия времени: Генерация готовых к использованию шаблонов за считанные секунды.
🚀 Гибкость: Поддерживаются различные типы проектов, включая ASP.NET Core, Blazor и даже кастомные шаблоны.
👍21
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
💡 Как избавиться от WebSockets и сэкономить $1 млн в год: неожиданные решения для оптимизации
Как снизить расходы на инфраструктуру и повысить эффективность? Оказывается, отказ от WebSockets может сэкономить миллионы. Вместо привычного подхода можно использовать решения, которые не только проще, но и лучше подходят для определённых задач, как, например, асинхронные очереди или SSE.
Знаете ли вы, как выбрать стратегию, которая одновременно сократит затраты и улучшит масштабируемость? Разберитесь в тонкостях оптимизации и найдите способ выжать максимум из вашей системы. 🚀
🔗 Читать статью
🔗 Зеркало
Как снизить расходы на инфраструктуру и повысить эффективность? Оказывается, отказ от WebSockets может сэкономить миллионы. Вместо привычного подхода можно использовать решения, которые не только проще, но и лучше подходят для определённых задач, как, например, асинхронные очереди или SSE.
Знаете ли вы, как выбрать стратегию, которая одновременно сократит затраты и улучшит масштабируемость? Разберитесь в тонкостях оптимизации и найдите способ выжать максимум из вашей системы. 🚀
🔗 Читать статью
🔗 Зеркало
👍6
В последней версии Visual Studio 2022 разработчики получили возможность легко копировать и вставлять файлы и папки между разными экземплярами среды разработки. Ранее этот процесс был сложным и требовал дополнительных манипуляций с файловой системой, что отнимало время и могло приводить к ошибкам.
Теперь всё стало проще: достаточно выбрать нужный файл или папку в «Проводнике решений» (Solution Explorer), нажать Ctrl+C для копирования или Ctrl+X для вырезания, а затем переключиться в другой экземпляр Visual Studio и нажать Ctrl+V для вставки. Все изменения автоматически синхронизируются с файловой системой, что исключает необходимость дополнительных действий.
Также поддерживается перетаскивание (drag and drop) файлов и папок, что делает управление проектами ещё более удобным. Эта функция теперь доступна для всех типов проектов.
Теперь всё стало проще: достаточно выбрать нужный файл или папку в «Проводнике решений» (Solution Explorer), нажать Ctrl+C для копирования или Ctrl+X для вырезания, а затем переключиться в другой экземпляр Visual Studio и нажать Ctrl+V для вставки. Все изменения автоматически синхронизируются с файловой системой, что исключает необходимость дополнительных действий.
Также поддерживается перетаскивание (drag and drop) файлов и папок, что делает управление проектами ещё более удобным. Эта функция теперь доступна для всех типов проектов.
👍38
Хочешь проверить себя и узнать, насколько ты прокачан в разработке? Тест для айтишников, чтобы проверить знания. Отличный способ отвлечься и сравнить результаты с друзьями!
👉 Пройти
👉 Пройти
😁10🤩1