Разработчикам любого уровня нужно постоянно учиться — смотреть, слушать и читать всё, что может пригодиться для развития и становления в качестве специалиста. Особенно это касается новичков в разработке, ведь им нужно освоить огромное количество информации. И книги — один из лучших источников её получения. Под катом расскажем о 5 хороших книгах по C#, которые стоит прочесть начинающему программисту.
Программист
Обобщенные фабрики тайпгардов в TypeScript
Привет, Хабр! Меня зовут Сергей Соловьев, я разрабатываю интерфейсы международных платежей в Тинькофф Бизнесе. Уверен, многие хотят писать надежный, поддерживаемый, но при этом лаконичный код. Как найти баланс?
TypeScript упрощает разработку веб-приложений ценой роста кодовой базы. В большинстве случаев накладные расходы, связанные с аннотацией типов, невелики и полностью компенсируются выигрышем в надежности и поддерживаемости кода. TS всеми силами пытается облегчить нам работу за счет мощной системы вывода типов, но компилятор языка не всесилен, и порой нам приходится самим указывать, какие типы мы хотим видеть.
Частный случай решения проблемы сужения типов — функции-тайпгарды. Это полезная фича языка, но ее применение может привести к появлению однотипного кода и даже увеличить риск возникновения багов. В статье рассмотрим проблемы, связанные с использованием функций-тайпгардов и один из способов их решения — создание обобщенных фабрик.
«Искусство схемотехники»: предисловие к 3 изданию
На днях узнал, что вышла русскоязычная версия третьего оригинального издания книги «Искусство схемотехники» (статья на Хабре). Новость заинтриговала. Так как достаточно давно увлекаюсь этой книгой и не понаслышке знаю, что отечественные читатели ее очень ждали. Точнее даже, заждались. Авторы оригинальной книги еще в 2015 году сделали рекламу своему произведению, разместив в свободном доступе, на сайте, посвященному книге, предисловие к третьему изданию. Но это не только реклама, но и достаточно детальное описание книги, а также декларация концепций и идей в ней заложенных. Надеюсь, мой скромный любительский перевод не будет воспринят издательством «Бином» в штыки: целей что-либо нарушать у меня нет. Если что, ко мне можно обратиться на почту. Я всегда рад конструктивному диалогу и считаю, что давно сложились условия, когда отечественная версия оригинальной книги просто обязана превзойти оригинал. Кроме того, реклама от самих авторов-корифеев еще никому не вредила.
Я заказал себе «первый том» от «Бинома». Скоро должна книжечка прийти. Я ее внимательно изучу, и по результатам будет рецензия. Надеюсь, книга оправдает мои ожидания. Даже интересно сравнить свои навыки в переводе с профессионалами. А пока, предлагаю приступить к чтению предисловия.
C# Тренажер
Хочу представить вашему вниманию бесплатный курс C# Тренажер, который недавно опубликовал на платформе Stepik.
Курс включает в себя множество практических задач по программированию на языке C#, которые способствуют повышению вашего уровня навыков в этой области. В ходе обучения вы столкнетесь с разнообразными заданиями, включая как классические, так и те, которые часто встречаются на собеседованиях в ведущих компаниях, таких как Microsoft, EA, Intel, Amazon, Uber и Unity. Это обеспечит разностороннее развитие ваших навыков работы с переменными, типами данных, операторами, циклами, функциями и алгоритмами.
Использование возможностей Angular. Часть 1
Добрый день. Меня зовут Юрик и я angular-разработчик. Остальные в комнате у психиатра:
- Здравствуй Юрик, мы рады тебя видеть.
Использование возможностей Angular. Часть 2
Как работают utility types, для чего они нужны и как использовать в работе. Для чего нужен infer, in, extends
Умный дом с котом: мой опыт автоматизации домашней рутины
Как автоматизировать дом, чтобы кошачий лоток отправлял в «Телеграм» сообщения, что его пора почистить, а на экране ТВ появлялось сообщение, что ванная комната освободилась. Об этом рассказал наш комьюнити‑менеджер Игорь Губайдуллин, инженер с 20-летним опытом работы. Умный дом стал его хобби пять лет назад — началось всё с робких шагов по освоению Apple HomeKit, а закончилось выделенным сервером умного дома с Home Assistant на борту.
Настройка CI/CD для самых маленьких разработчиков
Считается, что построение CI/CD - задача для DevOps. Глобально это действительно так, особенно если речь идет о первоначальной настройке. Но часто с докручиванием отдельных этапов процесса сталкиваются и разработчики. Умение поправить что-то незначительное своими силами позволяет не тратить время на поход к коллегам (и ожидание их реакции), т.е. в целом повышает комфорт работы и дает понимание, почему все происходит именно так.
Настроек для пайплайна Gitlab очень много. В этой статье, не вдаваясь в недра тюнинга, поговорим о том, как выглядит скрипт пайплайна, из каких блоков он состоит и что может содержать.
Как собрать бюджетный умный дом. Общие принципы проектирования на оборудовании Wiren Board
Сборник коротких рецептов по автоматизации инженерных систем дома, офиса и любого другого объекта на оборудовании Wiren Board.
Статья будет полезна всем, кто задумывался о построении умного дома, офиса, теплицы и любого другого объекта с автоматизацией и диспетчеризацией.
Мобильные экранчики в ваших проектах: большой и понятный о гайд о различных дисплеях
Пожалуй, немалая часть моих читателей так или иначе интересуется DIY-тематикой. И в различных самодельных девайсах порой есть необходимость вывести какую-либо информацию на дисплей, будь это текст, графики или даже какая-то анимация! Для разных задач существуют самые разные дисплеи и в сегодняшнем материале я хотел бы систематизировать и собрать подробнейший гайд об использовании дисплеев с нерабочих мобильных телефонов: какие бывают протоколы и шины данных, как читать схемы устройств и определять контроллеры дисплеев, какие дисплеи стандартизированы, а какие придётся реверсить самому и как быть с подсветкой. В практической части статьи мы подключим дисплей по протоколу MIPI DBI к RP2040 с использованием DMA. Интересно? Тогда добро пожаловать под кат!
Аутентификация для WebSocket и SSE: до сих пор нет стандарта?
WebSocket и SSE появились более десяти лет назад, однако до сих пор в стандартах отсутствуют рекомендации по решению задачи аутентификации для подобных соединений.
В статье разберем особенности аутентификации применительно к протоколу WebSocket и технологии Server-Sent Events, обсудим, какие нюансы могут быть, когда клиентская часть находится в браузере, и на что еще стоит обратить внимание, чтобы избежать неочевидных проблем.
А еще заодно поговорим про уязвимость Cross-Site WebSocket Hijacking (CSWSH) и в целом посмотрим на многие вопросы через призму информационной безопасности.
Хватит маппить все руками, используй Mapster
Привет, Хабр! Меня зовут Георгий, я С#-разработчик в SimbirSoft. Хочу рассказать об опыте использования библиотеки Mapster: как он может упростить разработку, сэкономить силы и частично избавиться от рутины маппинга.
Данная статья подойдет и тем, кто только собирается открыть для себя мир автомаппинга, и тем, кто хочет найти для себя альтернативу используемой библиотеки. Для полного понимания, что тут будет происходить желательно обладать базовым пониманием C#, знать о существовании DI и подозревать, что рефлексия не так проста, как кажется. Ну и LINQ с EF.Core, куда же без них (хотя про них достаточно просто когда-то слышать и примерно представлять, зачем они нужны).
Юнит-тесты: чек-лист методик проектирования
Привет, Хабр! Меня зовут Василий Косарев, я Java‑разработчик в CDEK. Много раз мы слышали о необходимости писать модульные тесты, о том, что весь код должен быть ими покрыт. При этом мне не встречалось списка: какие именно методики лучше использовать при тестировании кода.
Я задумался: есть ли чек‑лист/ руководство, который облегчил бы генерацию тестовых сценариев и помог выявлять серьёзные ошибки? Чтобы вдумчиво подходить к тестированию и не тратить ресурсы впустую, сводя к минимуму количество необходимых тестов.
Сегодняшней статьёй попробую ответить на эти вопросы. Материал будет полезен разработчикам, которые уже пишут модульные тесты и которые только думают внедрять их в свой проект. Мы с вами применим методики проектирования тестов и разберёмся, насколько они эффективны.
Микрофронтенд с использованием Module Federation. Соединяем компоненты между системами на разных фреймворках
Всем привет! Мы — Иван и Даниил, ведущие разработчики компании ITFB Group. У компании два собственных продукта — ЕСМ/CSP/BPM-платформа СИМФОНИЯ (документооборот, хранение контента, архив, портал) и система распознавания/обработки документов ITFB EasyDoc. Пару месяцев назад к нам прилетела задача интегрировать ряд функций распознавания из продукта ITFB EasyDoc и оформить их в отдельный модуль платформы СИМФОНИЯ, дабы пользователь всё делал в одном месте и не дрейфовал по разным системам. Однако возникла загвоздка: СИМФОНИЯ — на React, а ITFB EasyDoc — на Vue. Для решения вопроса посерчили различные источники информации и плавно ушли в собственное творчество, поскольку не обнаружили стоящих вариантов с вменяемой технической детализацией. В какой-то момент возникло острое желание поделиться нашими итоговыми наработками на Хабре и заполнить пробелы базы знаний в интернете по этому вопросу. Всем, кому интересно увидеть наше решение, добро пожаловать под кат :-)
Анализируем виды тестов для Frontend
С развитием веба сайты превратились в сложные приложения, которыми ежедневно пользуются десятки и сотни миллионов людей: почта, облачные хранилища, соцсети, маркетплейсы, стриминговые платформы и т. д. И каждое из них должно работать корректно. Как это сделать? Конечно писать хороший код, а потом и тестировать его. Хотя кто‑то обходится без тестов, тем не менее тестирование — важная часть инженерных практик наравне с мониторингом. Оно помогает нам заблаговременно находить и исправлять баги (или незапланированные фичи) в приложениях. Основная цель тестирования — получить гарантию корректной работы любого ПО .
При этом тестировать современный фронтенд сложно: неуправляемая асинхронность (событийная модель браузера), различие браузеров, тяжелое окружение — это лишь малая часть сложностей. Можно ли все возложить на ручных тестировщиков или исправлять баги после жалоб пользователей? Однозначно нет. В большинстве случаев такой подход в скором времени приведет к оттоку пользователей: не все пишут о багах, просто уходят к конкурентам. Безусловно, ручное тестирование остается важным элементом разработки, но тестировщики не могут держать сотни или тысячи сценариев, которые нужно пройти перед релизом или запуском новой фичи. Так где нам получить гарантии, что ключевые сценарии приложения работают корректно? Автоматическое тестирование.
Всем привет! Меня зовут Миша, работаю фронтэнд‑разработчиком в VK в команде Облака Mail.ru, и я хочу разобрать различные виды тестов, дать их сравнительный анализ и применимость. Сразу скажу, тут не будет практики написания тестов. Потому что это нереально сделать внутри одной статьи, необходимо разобрать: теорию тестирования, классов эквивалентности, различие подходов/методов к тестированию, комбинаторику состояний, правильное использование моков и стабов, понимание чистых функций, знание архитектуры приложения. Поэтому предлагаю сконцентрироваться на видах тестирования и начать с «идеального теста».
Zod умер. Да здравствует ajv-ts
TLRD: zod не подходил в проекте и решили сделать свой builder с помощью ajv в zod-like API. Поскольку гугление не показало никаких вменяемых результатов - было решено сделать свои костыли решения.
Если стало интересно - прошу под кат!
Зернистые градиенты на CSS и SVG
Изучая графику на Dribbble или Behance, вы найдёте там дизайнеров, использующих простую технику добавления в изображения текстур: шум. Добавление шума делает сплошные цвета или плавные градиенты, например, тени, более реалистичными. Но несмотря на любовь дизайнеров к текстурам, шум редко применяется в веб-дизайне.
В этой статье мы при помощи CSS и SVG сгенерируем цветной шум, позволяющий добавлять текстуру к градиенту.
Динамическое создание компонентов Angular на лету
В этой статье мы поговорим о создании компонентов динамически, шаг за шагом пройдем этот путь. Помимо простого создания компонентов, мы поговорим о более продвинутых вещах, которые можно сделать в рамках этого процесса.
OpenAPI/Swagger для начинающих
Эта статья в основном для аналитиков, которые впервые сталкиваются с необходимостью описания запросов в Swagger, но может быть полезна всем, кто хочет разобраться или ищет подсказку.
Дизайн-система Gravity UI: как легко построить свой интерфейс
Всем привет, я Алексей Сизиков, руководитель отдела User Experience в Yandex Cloud. В этой статье я хочу поделиться новостью: мы выпустили нашу дизайн-систему и библиотеку компонентов Gravity UI в опенсорс.
Под катом — рассказ, зачем мы сделали Gravity UI, как его используем, в чём особенности и преимущества нашего подхода и как мы планируем развивать его дальше. А ещё — как настроить разные цветовые схемы в своих проектах и почему у нас четыре темы вместо двух стандартных.
Information
- Rating
- 5,057-th
- Date of birth
- Registered
- Activity