Библиотека шарписта | C#, F#, .NET, ASP.NET
21.7K subscribers
2.89K photos
45 videos
91 files
5.35K links
Все самое полезное для C#-разработчика в одном канале.

Наши курсы: https://clc.to/y3LDtw

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

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

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
🧑‍💻 Честность в айти — это грех

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

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

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

🔹 Практический интенсив «Архитектуры и шаблоны проектирования»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🥰1
📊 Рейтинг постов

Вы всю неделю ставили нам лайки, а мы выбрали топ по реакциям:

100 RPS Rate Limiting
Закон Брукса в разработке
Антиспам в .NET
FluentValidation в API
StackTraceHiddenAttribute

Давайте выберем самый лучший пост в голосовании.

Что добавить в следующий спринт? Пишите! 👇


🐸Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰5🔥1
🎁 Письмо Деду Морозу

До Нового Года 15 дней! Что бы вы хотели получить в подарок? Годовая премия не в счёт, это всегда как рулетка — повезёт/не повезёт.

Админ хотел бы набор оперативной памяти, желательно гига 32, откладывал до последнего и вот итог..

💬 Делитесь своими хотелками или сразу вишлистами в комментах 👇

📍 Навигация: ВакансииЗадачиСобесы

🐸Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
😁81
🎄 Социальный опрос айтишников

Есть два типа людей: те, кто ставит ёлку в начале декабря и наслаждается атмосферой целый месяц, и те, кто украшает её 31-го под бой курантов.

💬 Скидывайте фото своих ёлок в комменты 👇

📍 Навигация: ВакансииЗадачиСобесы

🐸Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
🤖 Миграция с GitHub

Если следите за IT-комьюнити, то наверняка замечали: всё больше программистов переезжают с GitHub. Недавно оттуда мигрировали язык программирования Zig и инструмент Leiningen, а за ними — сотни индивидуальных разработчиков.

В чём проблема

• GitHub стал хуже технически

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

• Copilot — это плагиат

GitHub Copilot буквально выдаёт куски кода дословно. Это нарушение лицензий и воровство чужого кода. Software Freedom Conservancy (те, кто поддерживают Wine, Git, QEMU) организовали кампанию «Give Up GitHub» именно из-за этого.

• Закрытая платформа для открытого кода

Парадокс: серверная часть GitHub — проприетарный софт. Вы размещаете open-source проекты на закрытой платформе, которую контролирует Microsoft.

В отличие от Instagram или Twitter, GitHub не контролирует дистрибуцию контента. Уход с GitHub — это небольшая неудобство для контрибьюторов, но не исчезновение из поля зрения.

Куда переезжать

Бесплатно и с хостингом:

• Codeberg (Forgejo) — некоммерческий проект, для FOSS
• SourceHut — платно $4-12/мес, но есть финпомощь
• GitLab — бесплатный тариф с ограничениями

Самохостинг:

• Gitea — простой и лёгкий
• Gogs — ещё проще
• Gerrit — если нужен продвинутый code review

Децентрализация:

• Radicle — p2p git
• Или просто свой скрипт, заливающий в S3

💬 Где вы держите свои проекты?

📍 Навигация: ВакансииЗадачиСобесы

🐸Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
9😁7👍4
😊 Менторство на работе

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

Идеальная ситуация

Компания доплачивает 15-20% к зарплате, джун быстро схватывает и задает умные вопросы. Вы получаете деньги, прокачиваете скилл объяснения. Все в плюсе.

Ловушка «помоги новенькому»

«Покажи, как тут все устроено» может быть и без доплаты, без официального оформления. Вы делаете две работы за одну зарплату. Времени уходит 5-10 часов в неделю, дедлайны остаются прежними. Через месяц выгорание и раздражение на джуна, хотя он не виноват.

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

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

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

💬 Менторили джунов? Как у вас это происходило? Делитесь в комментах 👇

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3
🤑 Мы ждали этого несколько месяцев

Что вы будете делать в этот дополнительный выходной?

Полная раскайфовка на кровати или жёсткий пет-проектинг?

💬 Пишите в комментах 👇

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
2
👀 YAGNI в реальной жизни

YAGNI (You Aren't Gonna Need It) — принцип из разработки: не делайте то, что может пригодиться когда-нибудь. Работает не только в коде.

Не покупайте инструмент на всякий случай. Нужна дрель — возьмите в аренду или одолжите. Купите перфоратор — будет пылиться 10 лет.

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

💬 Бывало такое, что нарушали YAGNI в реальной жизни? Или может наоборот трезво оценили ситуацию и не купились? Интересно будет почитать в комментах 👇

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
💯243👍2
✏️ Hello World с приколом

Вот код, который видел каждый в первый день знакомства с языком. Только здесь он немного другой:
using System;
using System.Threading;

class Program
{
static void Main(string[] args)
{
Console.CursorVisible = false;

print('H', ConsoleColor.Red);
print('e', ConsoleColor.Yellow);
print('l', ConsoleColor.Magenta);
print('l', ConsoleColor.Green);
print('o', ConsoleColor.Blue);
print(',', ConsoleColor.Red);
print(' ', ConsoleColor.Red);
print('w', ConsoleColor.Magenta);
print('o', ConsoleColor.Cyan);
print('r', ConsoleColor.Yellow);
print('l', ConsoleColor.Green);
print('d', ConsoleColor.Blue);
print('!', ConsoleColor.Red);
}

static void print(char letter, ConsoleColor color)
{
Console.ForegroundColor = color;
Console.Write(letter);
}
}


Возьмите минутку перерыва и запустите.

💬 А у вас есть любимый бессмысленный кусок кода

➡️ Источник

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱122
🎶 Разработчик написал программу для управления самодельным проигрывателем винила

Разработчик с Reddit строит автоматический проигрыватель пластинок с нуля: механику, электронику и прошивку для STM32. Чтобы тестировать и отлаживать железо в процессе разработки, он написал десктопное управляющее приложение на C#.

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

Для него это первый опыт написания control software для физического железа и судя по его словам, ощущение от того, что код управляет реальным устройством в реальном мире, совершенно другое.

➡️ Источник

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92
👨‍💻 Данные важнее алгоритмов

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

Почему структура данных первична

Когда данные организованы правильно, алгоритм становится очевидным. Его не нужно изобретать, ведь он вытекает из формы данных сам. Роб Пайк сформулировал это ещё в 1989 году, и с тех пор ничего не изменилось.

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

Что происходит, когда структура выбрана плохо

Состояние расползается по десяткам мест. Объекты мутируют там, где не должны. Каждое изменение ломает что-то в трёх других местах. Команда тратит время не на новые фичи, а на поиск причин, почему старые перестали работать.
Умный алгоритм, написанный поверх плохо организованных данных, не решает проблему. Он только откладывает её.

Что меняется после переосмысления структуры

Когда команда задаёт правильный вопрос: не "как это починить?", а "как данные должны течь через систему?", запутанный код превращается в понятный пайплайн. Становится короче. Баги исчезают. Новые фичи добавляются без страха сломать существующее.
Никакой магии. Просто правильно выбранная структура снимает нагрузку с алгоритма.

Практический ориентир

Перед тем как писать функцию, полезно ответить на четыре вопроса. Кто владеет этими данными. Где находится источник правды. Как данные попадают из точки А в точку Б. Соответствует ли структура тому, как к ней будут обращаться.
Если ответы нечёткие, сложность будет нарастать независимо от качества кода.

💬 Что думаете? Прав ли Роб Пайк или всё уже поменялось?

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
👍111
📰 Любимый автор по C#

Кого смотрите и читаете по C# и .NET? Авторы на YouTube, Хабре, телеграм-каналы, подкасты — пишите в комменты 💬

Мы, естественно, следим за Ником Чапсасом, но может есть менее гигантские медиа-личности?

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3😁3
🙂 Больше памяти — больше проблем

Автор книг по исходникам Quake и Doom собрал ретро-машину 1997 года. Материнка, HDD — дорого. А вот 384 МБ SDRAM обошлись всего в $60. Почему бы не взять с запасом?

Запустил Quake. Pentium MMX 233MHz выдаёт стабильные 44 fps. Всё отлично, пишет статью, уходит на месяц. Возвращается, запускает тот же бенчмарк и результат: 33 fps.

Перебрал всё: видеокарты, драйверы, переустановка системы. Ничего не помогает. Случайно попробовал вытащить одну планку — 33 fps. Вытащил ещё одну — 44. Вернул обратно и опять 33.

Оказалось, чипсет материнской платы кешировал только ограниченный объём RAM через L2-кеш. Всё, что сверх лимита — работало напрямую, без кеша вообще. А Windows 95 загружается «сверху вниз» по адресному пространству, то есть некешируемая зона задействовалась сразу при старте.

➡️ Источник

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔53
🎧 Музыка, шум офиса или тишина

Одни не могут написать строчку кода без наушников. Другие считают, что любой звук убивает концентрацию. Третьи спокойно работают под разговоры коллег в опенспейсе и не понимают, в чём проблема.

Музыка помогает войти в поток

Самый популярный аргумент. Фоновая музыка создаёт ритуал. Надел наушники, включил плейлист, мозг понял, что пора работать. Многие выбирают lo-fi, эмбиент или саундтреки из игр. Главное условие: без слов, или на языке, который не понимаешь.

Текст на знакомом языке подгружает языковые центры мозга, и на код остаётся меньше ресурсов.

Тишина как необходимость

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

Музыка в сложные моменты не помогает, а мешает. Просто мы этого не замечаем, потому что привыкли.

Офисный шум. Кому-то нормально

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

💬 Расскажите, как у вас? Работаете под музыку, в тишине или вам всё равно?

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
📢 Навигация по каналу

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

#sharp_view — короткие и полезные посты с кодом, best practices, фишки C#, сравнение подходов, code snippets и разбор багов

#il_люминатор — глубокие технические разборы: архитектурные паттерны, производительность, устройство .NET, CLR, GC, JIT и сложные концепции

#async_news — релизы .NET, обновления IDE, анонсы конференций, дайджесты и другие важные новости экосистемы

#entry_point — опросы, холивары, вопросы подписчикам, истории из практики и обсуждения с сообществом

#dotnet_challenge — задачи по C# и .NET, вопросы с собеседований, поиск ошибок в коде и интерактивные викторины

#схема — инфографика, диаграммы, шпаргалки, дорожные карты и визуальное объяснение сложных тем

#garbage_collector — мемы, юмор и забавные истории из жизни .NET-разработчиков

🔈 Используйте рубрики для быстрого поиска интересующих материалов и не пропускайте новые публикации.

🐸 Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
7
😐 AutoMapper жив или уже пора на пенсию?

Ещё несколько лет назад AutoMapper был почти стандартом для .NET-проектов. Сегодня всё чаще встречаются ручной маппинг, Mapperly, Mapster и другие source generators.

Одни не хотят тащить дополнительную магию ради пары присваиваний. Другие не готовы писать одинаковый код для десятков DTO.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🤔1🌚1
😳 Минимальные API или контроллеры

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

🔜 Но контроллеры никуда не исчезли. Для крупных проектов многим по-прежнему нравится привычная структура, группировка логики и накопленные практики команды.

А как у вас?

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍3
🤨 Комментарии в коде: писать или удалять всё лишнее?

Один из самых долгих споров среди разработчиков.

❇️ Одни считают, что хороший код не нуждается в комментариях. Если приходится объяснять, что происходит, значит, стоит улучшить имена, структуру или разбить метод.


🅰️ Другие отвечают: комментарии нужны. Но не чтобы пересказывать код, а чтобы объяснить почему он написан именно так. Например, описать сложное бизнес-правило, необычное решение, ограничение внешней системы или оставить ссылку на баг.


А как у вас?

👍 — комментариев минимум, код должен говорить сам за себя.
🔥 — комментарии нужны, если помогают понять неочевидную логику.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥85👍16
😑 Мокать зависимости или тестировать на настоящих?

Один из главных споров в тестировании.

Одни мокают почти всё вокруг проверяемого класса. Такие тесты быстрые, изолированные и падают только из-за логики самого кода.


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


На практике многие выбирают компромисс: внешние API и нестабильные сервисы мокают, а свои компоненты стараются тестировать вместе.

💬 А как у вас?

👍 — максимум моков, главное скорость и изоляция.
🔥 — минимум моков, лучше реальные зависимости.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍84
🔥 Где должна жить бизнес-логика: в хранимых процедурах или в коде приложения?

Спор, который не утихает много лет.

Сторонники хранимых процедур говорят: данные уже в базе, меньше сетевых запросов, выше производительность и больше контроля над SQL.

Сторонники логики в приложении отвечают: код проще тестировать, ревьюить, версионировать в Git и переносить между разными СУБД.


На практике многие выбирают компромисс: сложные операции над большими объёмами данных оставляют в базе, а бизнес-правила и оркестрацию — в приложении.

💬 А как устроено у вас?

👍 — максимум логики в приложении.
🔥 — сложную логику лучше держать в базе.

И был ли у вас проект, где сотни хранимых процедур со временем превратились в «чёрный ящик», который никто не хотел менять?

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека шарписта

#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥15