Telegram Web Link
📣 Исключения или Result — что выбрать для обработки ошибок

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

• Исключения — классический подход

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

Многие считают это стандартом, потому что исключения чётко отображают сбой, который требует внимания.

• Result-типы — альтернатива

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

Обеспечивает большую гибкость в работе с результатами, позволяет возвращать ошибки с дополнительной информацией.

💬 Когда вы предпочитаете использовать исключения? А когда лучше использовать Result? Делитесь мнениями в комментариях 👇

🐸Библиотека шарписта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
2🤔1
📌 Главное за неделю

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

C# сохраняет пятую позицию в TIOBE

C# продолжает оставаться одним из ведущих языков для разработки приложений, игр и веб-сервисов.

6 скрытых возможностей C# для геймдева

В видео делятся практическими примерами использования малоизвестных функций для повышения производительности и качества кода.

От фотографий к задачам с помощью ИИ

В новой статье Microsoft описывается, как с помощью .NET MAUI и Microsoft.Extensions.AI можно преобразовать изображения в структурированные данные.

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

5 ошибок, делающих ваш код неподдерживаемым

В статье выделяются пять распространённых ошибок в проектировании ПО, которые приводят к трудностям в поддержке кода.

Пройдите наш опрос про ИИ

🐸Библиотека шарписта #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
В чем различие между классом и структурой?

Для С# классы System.Object, System.Exception, System.File-Stream и System.Random — это ссылочные типы (память выделяется из упр. кучи). В свою очередь размерные типы в документации называются структурами (structure) и перечислениями (enumeration). Например, структуры System.In132, System.Boolean, System.Decimal, System.TimeSpan и перечисления System.DayOfWeek, System.10.FileAttributes и System.Drawing.FontStyle являются размерными типами (хранятся обычно в стеке потока, но могут быть встроены в ссылочные типы).

Библиотека задач по C#
😢12😁62🤔1🌚1
⌚️ Подборка вакансий для шарпистов

Tech Lead (C#) — гибрид в Москве.

Инженер-программист C# (Middle) — от 200 000 ₽, офис в Москве.

C# Developer (.Net) — до 370 000 ₽, удалёнка.

C#/.NET Developer (Middle, Senior) — удалёнка.

Senior .NET Developer — удалёнка.

Бустер — удалённо в метре от вас.

➡️ Еще больше топовых вакансий — в нашем канале С# Jobs
Please open Telegram to view this post
VIEW IN TELEGRAM
🎮 Реализация системы инвентаря в Unity 6 с использованием C#

Проблема: создание эффективной системы инвентаря является ключевым элементом в разработке игр, требующим динамичного управления предметами и их взаимодействиями.

Решение: в книге «Unity 6 Game Development with C# Scripting» автор предлагает подробное руководство по разработке системы инвентаря, используя возможности Unity и C#. Он акцентирует внимание на создании гибкой структуры данных, которая позволяет эффективно управлять предметами, их свойствами и взаимодействиями в игровом процессе.

Пример кода:
public class InventoryItem
{
public string itemName;
public Sprite itemIcon;
public int itemID;
public string itemDescription;

public InventoryItem(string name, Sprite icon, int id, string description)
{
itemName = name;
itemIcon = icon;
itemID = id;
itemDescription = description;
}
}

public class InventorySystem : MonoBehaviour
{
private List<InventoryItem> items = new List<InventoryItem>();

public void AddItem(InventoryItem newItem)
{
items.Add(newItem);
Debug.Log("Item added: " + newItem.itemName);
}

public void RemoveItem(InventoryItem itemToRemove)
{
if (items.Contains(itemToRemove))
{
items.Remove(itemToRemove);
Debug.Log("Item removed: " + itemToRemove.itemName);
}
else
{
Debug.Log("Item not found: " + itemToRemove.itemName);
}
}

public void DisplayInventory()
{
foreach (var item in items)
{
Debug.Log("Item: " + item.itemName + " | ID: " + item.itemID);
}
}
}


Преимущества:

— Гибкость в управлении предметами и их свойствами.
— Упрощение процесса добавления и удаления предметов из инвентаря.
— Лёгкость в интеграции с другими системами игры, такими как квесты или торговля.

➡️ Лучшее из мира IT-книг — у нас в @progbook
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱153🌚2👾1
⚙️ Основные структуры данных в Unity и C#

Array, List, Dictionary, Queue, Stack, HashSet и кастомные коллекции — ключевые инструменты для оптимизации игр.

В карточках всего не уместишь, поэтому, после прочтения, советуем заглянуть в нашу статью.

➡️ Изучить остальные структуры

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱154👍1
✏️ Как пройти собеседование джуну

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

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

Вот формат, который вы будете использовать для анализа проблемы и выработки отличной рекомендации:
Ситуация кандидата

$candidate_situation (Опишите ситуацию кандидата, сосредоточив внимание на несоответствии между его резюме и реальным опытом)
Потенциальные риски завышения опыта

$risks_of_misrepresentation (Перечислите потенциальные негативные последствия преувеличения опыта, как в краткосрочной, так и в долгосрочной перспективе)
Этические соображения

$ethical_considerations (Кратко обсудите этические последствия завышения опыта)
Рекомендованный подход: Прозрачность и демонстрация навыков

$recommended_approach (Это основа ваших советов. Сосредоточьтесь на том, как кандидат может быть прозрачным в отношении своего опыта, при этом подчеркивая свои навыки и потенциал)
Ключевые стратегии для преодоления "разрыва в опыте"

Признание и переформулировка: $strategy_1 (Как признать несоответствие, не признавшись в явном обмане)

Фокус на навыках и проектах: $strategy_2 (Как продемонстрировать навыки через личные проекты, вклад в open-source или соответствующие курсы)

Подчеркнуть способность к обучению: $strategy_3 (Как показать готовность и способность быстро учиться и адаптироваться к новым технологиям)

Подчеркнуть страсть и энтузиазм: $strategy_4 (Как передать искренний интерес к роли и компании)

Подготовка к техническим вопросам: $strategy_5 (Как предугадать и ответить на технические вопросы, даже если нет прямого профессионального опыта)

Примеры ответов на часто задаваемые вопросы на собеседованиях

"Расскажите о вашем опыте работы с [Технология X]": $example_response_1 (Пример ответа, который признает ограниченный профессиональный опыт, но подчеркивает соответствующие навыки и проекты)

"Почему мы должны нанять вас, а не кого-то с большим опытом?": $example_response_2 (Пример ответа, который акцентирует внимание на потенциале, способности к обучению и страсти)

Долгосрочная стратегия для карьеры

$long_term_strategy (Предложите шаги, которые кандидат может предпринять, чтобы получить настоящий опыт и построить прочную основу для своей карьеры)

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


💬 Какие у вас сложности с прохождением собеседований?

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1😢1
📝 Немного инсайтов из третьего модуля курса

Сейчас большинство представлений об ИИ ограничиваются одним агентом — моделькой, которая что-то предсказывает, генерирует или классифицирует.

Но реальный прорыв начинается, когда этих агентов становится несколько.
Когда они начинают взаимодействовать друг с другом.
Когда появляется координация, распределение ролей, память, планирование — всё это и есть мультиагентные системы (MAS).

➡️ Пока кто-то думает, что это звучит как научная фантастика, индустрия уже переходит к новым уровням сложности:
— Microsoft делает язык DroidSpeak для общения между LLM
— Open Source-фреймворки вроде LangChain, AutoGen, CrewAI, LangGraph — бурно развиваются
— компании, включая МТС, уже применяют MAS в боевых задачах

🎓 На курсе мы подходим к этому практично:
🔵 разбираем, как устроены MAS
🔵 пишем агентов с нуля
🔵 учимся выстраивать взаимодействие: конкуренцию, кооперацию, планирование

Именно на третьем уроке вы впервые собираете не просто «умного бота», а живую систему из агентов, которая работает вместе — как команда.

Причём по-настоящему: врач, SQL-аналитик, travel-планировщик, Python-генератор, поисковик.

🙂 Если хочется не просто использовать ИИ, а проектировать системы, которые думают, планируют и сотрудничают тогда забирайте курс по ИИ-агентам
Please open Telegram to view this post
VIEW IN TELEGRAM
👾4🥱21
🔍 Как диагностировать проблемы с производительностью в .NET

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

1. Понимание проблем с производительностью

В первую очередь, нужно понять, какие именно симптомы проявляются. Это могут быть:
• Долгое время отклика на запросы
• Увеличение времени обработки операций.
• Частые паузы или лаги, которые не зависят от внешней нагрузки.

2. Использование инструментов для профилирования

.NET предоставляет инструменты для профилирования и анализа производительности:

— PerfView. Инструмент для сбора и анализа трассировок и дампов памяти, который позволяет обнаружить узкие места в работе приложения

— dotTrace и Visual Studio Diagnostic Tools. Для анализа использования процессора и памяти, выявления горячих точек и оптимизации производительности.

— Application Insights. Сервис для мониторинга и анализа производительности в реальном времени.

3. Проверка работы сборщика мусора

Если ваше приложение не может эффективно управлять памятью, это приведет к длительным паузам, особенно в больших распределенных системах.

Фоновая сборка мусора в .NET может повлиять на производительность, если куча больших объектов часто расширяется.

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

4. Анализ работы с памятью

Использование Large Object Heap для хранения больших объектов может вызвать проблемы с производительностью, так как LOH очищается реже и требует дополнительного времени для управления.

Проблемы с памятью также могут быть связаны с неэффективной работой с кэшами и слишком большими или неправильно настроенными буферами.

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

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍1
🤔 Такие ли айтишники проблемные

Многие думают, что айтишники наполовину состоят из проблем с головой. Кто в этом виноват и стоит ли переживать?

На одной стороне стоят те, кто уверены: IT-сфера — это «психологическая бомба замедленного действия», и в ней нужно менять многое, чтобы сохранить благополучие специалистов.

Возможно, нужна более гибкая и заботливая рабочая среда?

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

Наш админ думает так:
Как тут не свихнёшься, когда тебя каждый день спрашивают одно и то же в надежде на изменения? Как попугаи «Какой статус? Какой статус?»


💬 Что думаете об этом? Как у вас обстоят дела с головой? Делитесь в комментариях 👇

Понравился пост? Поделитесь бустом, а мы взамен поделимся топовым контентом.

🐸Библиотека шарписта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
😁91
👨‍💻 Хоткеи для мультикурсора

Мультикурсор однозначно маст-хев для работы с однотипными изменениями в коде. Вместо монотонных изменений — раз и готово.

Смотрите и сохраняйте себе хоткеи для VS Code с картинки.

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
3
🤯 Мы больше года строим мультиагентные системы

Грабли, находки, паттерны, эксперименты — всё это накопилось и в какой-то момент стало жалко держать только у себя.

Никита — рассказывает (и показывает) базу: токенизация, LLM, SFT, PEFT, локальный инференс + RAG и как оценивать его качество.
Диана — как строят мультиагентные системы, какие есть паттерны проектирования и библиотеки.
Макс — про инференс в проде + разберет CoPilot, соберет с вами из кусочков свой копайлот, а затем его сломает через prompt injection. // Макс фанат autogen (а если нет — он вас разубедит в своем классном канале)
Финальным аккордом Дима углубится в MCP и соберет несколько кейсов повзрослее.

Курс тут: https://clc.to/47pgYA
Промокод: datarascals действует до 23:59 29 июня
🥱5
🤩 Онлайн-магазин в средневековом стиле

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

Именно такой проект недавно был создан с использованием ASP.NET.

Что интересно, это не просто сайт, а платформа с микросервисной архитектурой. Это значит, что каждый компонент (например, аутентификация или обработка объявлений) работает как отдельный микросервис.

➡️ Репозиторий проекта

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Давайте решим, нужны ли комментарии в коде:

💯 — Нужны
⚡️ — Можно и без них

🐸Библиотека шарписта #развлекалово
Please open Telegram to view this post
VIEW IN TELEGRAM
💯14989👾1
2025/07/09 11:11:41
Back to Top
HTML Embed Code: