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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
🚨 ИИ уже съел ваше место?

Стоп. Давайте без паники и хайпа.

Пока одни кричат «ИИ всех заменит!», другие спокойно получают оффер за оффером. Пока CEO сокращают команды «из-за ИИ», разработчики с нужными скиллами поднимают зарплаты.

Мы копаем глубже твиттеров «экспертов» и собираем данные от тех, кто каждый день коммитит, деплоит, фиксит баги — но в этом нам нужна ваша помощь.

Хотим понять:
— Кого действительно уволили и почему
— Как изменились задачи разработчиков
— Где ИИ помогает, а где только мешает
— Какие роли появились, какие исчезли
— Сколько платят тем, кто «дружит» с ИИ

Без буллшита — только цифры и факты. Результаты будут открыты для всех.

📊 Чем больше участников — тем точнее картина. Поделитесь опытом: https://clc.to/aFntFw
😁4
🧑‍💻 AI-инструменты, которые я использую каждый день

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

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

➡️ Как вам формат? Задавайте вопросы в комментариях, а мы найдём экспертов 👇

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53🔥1😁1🌚1
💡 Команда дня: профилирование .NET-приложения через dotnet-trace

Инструмент dotnet-trace предназначен для сбора runtime-трассировок .NET-приложений без сложной настройки.

Устанавливается командой:
dotnet tool install -g dotnet-trace


Сбор трассировки:
dotnet-trace collect \
--process-id <PID> \
--format speedscope \
-o profile.speedscope.json


Откройте profile.speedscope.json в Speedscope — получите интерактивную визуализацию горячих точек CPU, поведения GC и потоков.

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍54🥱1
📣 Исключения или Result — что выбрать для обработки ошибок

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

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

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

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

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

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

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

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

🐸Библиотека шарписта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
3🤔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