📣 Исключения или Result — что выбрать для обработки ошибок
Когда речь заходит о том, как лучше обрабатывать ошибки в C#, многие разработчики оказываются в двух лагерях.
• Исключения — классический подход
Исключения используются в C# с самого начала. Они позволяют немедленно прерывать выполнение программы в случае ошибки и предоставить стек вызовов для диагностики проблемы.
Многие считают это стандартом, потому что исключения чётко отображают сбой, который требует внимания.
• Result-типы — альтернатива
С другой стороны, есть подход с явным использованием Result-типа, который помогает разработчику контролировать ошибки через возвращаемые значения.
Обеспечивает большую гибкость в работе с результатами, позволяет возвращать ошибки с дополнительной информацией.
💬 Когда вы предпочитаете использовать исключения? А когда лучше использовать 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 ошибок, делающих ваш код неподдерживаемым
В статье выделяются пять распространённых ошибок в проектировании ПО, которые приводят к трудностям в поддержке кода.
— Пройдите наш опрос про ИИ
🐸 Библиотека шарписта #свежак
Представляем самые важные новости и события, которые определяли повестку уходящей недели.
— C# сохраняет пятую позицию в TIOBE
C# продолжает оставаться одним из ведущих языков для разработки приложений, игр и веб-сервисов.
— 6 скрытых возможностей C# для геймдева
В видео делятся практическими примерами использования малоизвестных функций для повышения производительности и качества кода.
— От фотографий к задачам с помощью ИИ
В новой статье Microsoft описывается, как с помощью .NET MAUI и Microsoft.Extensions.AI можно преобразовать изображения в структурированные данные.
Пользователи могут делать снимки или выбирать фотографии, а ИИ анализирует их, извлекая задачи и проекты для приложения Telepathic.
— 5 ошибок, делающих ваш код неподдерживаемым
В статье выделяются пять распространённых ошибок в проектировании ПО, которые приводят к трудностям в поддержке кода.
— Пройдите наш опрос про ИИ
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека задач по C# | тесты, код, задания
В чем различие между классом и структурой?
Для С# классы 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#
Библиотека задач по C#
😢12😁6❤2🤔1🌚1
Tech Lead (C#) — гибрид в Москве.
Инженер-программист C# (Middle) — от 200 000 ₽, офис в Москве.
C# Developer (.Net) — до 370 000 ₽, удалёнка.
C#/.NET Developer (Middle, Senior) — удалёнка.
Senior .NET Developer — удалёнка.
Бустер — удалённо в метре от вас.
Please open Telegram to view this post
VIEW IN TELEGRAM
Проблема: создание эффективной системы инвентаря является ключевым элементом в разработке игр, требующим динамичного управления предметами и их взаимодействиями.
Решение: в книге «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);
}
}
}
Преимущества:
— Гибкость в управлении предметами и их свойствами.
— Упрощение процесса добавления и удаления предметов из инвентаря.
— Лёгкость в интеграции с другими системами игры, такими как квесты или торговля.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱15❤3🌚2👾1
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
🥱15❤4👍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 в боевых задачах
🎓 На курсе мы подходим к этому практично:
Именно на третьем уроке вы впервые собираете не просто «умного бота», а живую систему из агентов, которая работает вместе — как команда.
Причём по-настоящему: врач, SQL-аналитик, travel-планировщик, Python-генератор, поисковик.
Please open Telegram to view this post
VIEW IN TELEGRAM
👾4🥱2❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁31💯4🔥2👍1
🔍 Как диагностировать проблемы с производительностью в .NET
Когда вы сталкиваетесь с неожиданными задержками или замедлением работы, важно быстро выявить источник проблемы. Разберёмся как это сделать.
1. Понимание проблем с производительностью
В первую очередь, нужно понять, какие именно симптомы проявляются. Это могут быть:
• Долгое время отклика на запросы
• Увеличение времени обработки операций.
• Частые паузы или лаги, которые не зависят от внешней нагрузки.
2. Использование инструментов для профилирования
.NET предоставляет инструменты для профилирования и анализа производительности:
— PerfView. Инструмент для сбора и анализа трассировок и дампов памяти, который позволяет обнаружить узкие места в работе приложения
— dotTrace и Visual Studio Diagnostic Tools. Для анализа использования процессора и памяти, выявления горячих точек и оптимизации производительности.
— Application Insights. Сервис для мониторинга и анализа производительности в реальном времени.
3. Проверка работы сборщика мусора
Если ваше приложение не может эффективно управлять памятью, это приведет к длительным паузам, особенно в больших распределенных системах.
Фоновая сборка мусора в .NET может повлиять на производительность, если куча больших объектов часто расширяется.
Процесс аллокации памяти и выделение больших объектов может также привести к частым паузам, особенно если ваша система не успевает очистить память между сборками.
4. Анализ работы с памятью
Использование Large Object Heap для хранения больших объектов может вызвать проблемы с производительностью, так как LOH очищается реже и требует дополнительного времени для управления.
Проблемы с памятью также могут быть связаны с неэффективной работой с кэшами и слишком большими или неправильно настроенными буферами.
Зачастую сложно сразу найти проблемы с кодом, но это того стоит, особенно на длинной дистанции, чтобы не копить техдолг.
🐸 Библиотека шарписта #буст
Когда вы сталкиваетесь с неожиданными задержками или замедлением работы, важно быстро выявить источник проблемы. Разберёмся как это сделать.
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-сфера — это «психологическая бомба замедленного действия», и в ней нужно менять многое, чтобы сохранить благополучие специалистов.
Возможно, нужна более гибкая и заботливая рабочая среда?
С другой стороны — есть мнение, что в любых профессиях существует стресс, и айтишники, как люди, привыкшие к решению сложных задач, должны научиться справляться с ними.
Наш админ думает так:
💬 Что думаете об этом? Как у вас обстоят дела с головой? Делитесь в комментариях 👇
Понравился пост? Поделитесь бустом, а мы взамен поделимся топовым контентом.
🐸 Библиотека шарписта #междусобойчик
Многие думают, что айтишники наполовину состоят из проблем с головой. Кто в этом виноват и стоит ли переживать?
На одной стороне стоят те, кто уверены: IT-сфера — это «психологическая бомба замедленного действия», и в ней нужно менять многое, чтобы сохранить благополучие специалистов.
Возможно, нужна более гибкая и заботливая рабочая среда?
С другой стороны — есть мнение, что в любых профессиях существует стресс, и айтишники, как люди, привыкшие к решению сложных задач, должны научиться справляться с ними.
Наш админ думает так:
Как тут не свихнёшься, когда тебя каждый день спрашивают одно и то же в надежде на изменения? Как попугаи «Какой статус? Какой статус?»
💬 Что думаете об этом? Как у вас обстоят дела с головой? Делитесь в комментариях 👇
Понравился пост? Поделитесь бустом, а мы взамен поделимся топовым контентом.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁9❤1
Мультикурсор однозначно маст-хев для работы с однотипными изменениями в коде. Вместо монотонных изменений — раз и готово.
Смотрите и сохраняйте себе хоткеи для 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 июня
Грабли, находки, паттерны, эксперименты — всё это накопилось и в какой-то момент стало жалко держать только у себя.
Никита — рассказывает (и показывает) базу: токенизация, LLM, SFT, PEFT, локальный инференс + RAG и как оценивать его качество.
Диана — как строят мультиагентные системы, какие есть паттерны проектирования и библиотеки.
Макс — про инференс в проде + разберет CoPilot, соберет с вами из кусочков свой копайлот, а затем его сломает через prompt injection. // Макс фанат autogen (а если нет — он вас разубедит в своем классном канале)
Финальным аккордом Дима углубится в MCP и соберет несколько кейсов повзрослее.
Курс тут: https://clc.to/47pgYA
Промокод:
🥱5
Представьте себе онлайн-магазин в средневековом стиле, где можно не только купить или продать товары, но и почувствовать атмосферу старинного рынка.
Именно такой проект недавно был создан с использованием ASP.NET.
Что интересно, это не просто сайт, а платформа с микросервисной архитектурой. Это значит, что каждый компонент (например, аутентификация или обработка объявлений) работает как отдельный микросервис.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Давайте решим, нужны ли комментарии в коде:
💯 — Нужны
⚡️ — Можно и без них
🐸 Библиотека шарписта #развлекалово
💯 — Нужны
Please open Telegram to view this post
VIEW IN TELEGRAM
💯149⚡89👾1