Роль Selenium и C# в создании надежных автоматизированных тестов
Представьте, что автоматизированные тесты - это специальные инструменты, которые помогают проверить, работает ли программа правильно. Такие тесты особенно полезны для веб-сайтов, и вот почему.
Selenium - это как мощный детектив, который может заметить, что происходит на веб-странице. Он может найти кнопки, текстовые поля, выпадающие списки и многое другое. А C# - это язык, на котором можно "разговаривать" с Selenium и давать ему команды.
Вместе Selenium и C# - как динамичный дуэт. Они позволяют нам создавать тесты, которые будут проверять веб-сайт на ошибки. Например, мы можем сказать, чтобы они "нажали" кнопку "Войти" и проверили, что после этого появится правильное сообщение. Это как если бы вы проверяли, что все кнопки на вашем пульте дистанционного управления работают правильно.
Манипуляция с веб-элементами
При создании надежных автоматизированных тестов необходимо взаимодействовать с веб-элементами, такими как кнопки, текстовые поля и выпадающие списки. В этом процессе Selenium предоставляет инструменты для поиска и взаимодействия с элементами на странице, а C# дает возможность эффективно управлять этими элементами.
Клик на кнопку "Войти" на странице авторизации
IWebElement loginButton = driver.FindElement(By.Id("login-button"));
loginButton.Click();
Ввод текста в поле для поиска
IWebElement searchBox = driver.FindElement(By.Name("search"));
searchBox.SendKeys("Selenium testing");
Выбор опции "Черный" из выпадающего списка цветов
I
WebElement colorDropdown = driver.FindElement(By.Id("color-selector"));
SelectElement colorSelect = new SelectElement(colorDropdown);
colorSelect.SelectByText("Черный");
Вход на сайт и проверка успешной авторизации
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
[TestFixture]
public class LoginTests
{
IWebDriver driver;
[SetUp]
public void SetUp()
{
driver = new ChromeDriver();
driver.Navigate().GoToUrl("https://www.example.com/login");
}
[Test]
public void TestSuccessfulLogin()
{
IWebElement usernameInput = driver.FindElement(By.Id("username"));
IWebElement passwordInput = driver.FindElement(By.Id("password"));
IWebElement loginButton = driver.FindElement(By.Id("login-button"));
usernameInput.SendKeys("myUsername");
passwordInput.SendKeys("myPassword");
loginButton.Click();
IWebElement welcomeMessage = driver.FindElement(By.CssSelector(".welcome-message"));
Assert.AreEqual("Welcome, User!", welcomeMessage.Text);
}
[TearDown]
public void TearDown()
{
driver.Quit();
}
}
📌 Читать дальше
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
В этой статье вы найдете полную подборку вопросов для собеседования по многопоточности C#, которые не только проверят ваше знание предмета, и обеспечат хорошую подготовку к следующему техническому собеседованию.
📌 Читать
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Хотите бесплатно изучить чистой архитектуры?
Первое, что необходимо понимать — приложения, созданные с помощью принципов чистой архитектуры, обладают высокой устойчивостью к изменениям. Они быстро адаптируются к новым требованиям и возможностям, сохраняя при этом высокое качество кода и производительность. Кроме того, система становится гораздо проще для понимания и сопровождения, что делает ее более доступной для других разработчиков.
Принципы чистой архитектуры также помогают избежать проблем с зависимостями и разделить приложение на логические блоки. Это повышает удобство добавления новых функций и изменения уже существующих. В результате, время разработки сокращается, а приложение становится более гибким и масштабируемым.
Какие преимущества могут дать принципы Clean Architecture :
▪Улучшение качества кода;
▪Быстрая адаптация к изменениям и новым функциям;
▪Удобство сопровождения и расширения приложений;
▪Минимизация проблем с зависимостями;
▪Повышение гибкости и масштабируемости приложений;
▪Сокращение времени разработки и улучшение производительности.
Все эти пункты дают принципам чистой архитектуры важное преимущество в сравнении с другими методиками разработки.
Представляем вам список из 45 полезных уроков, разбитых по темам.🔥
𝗖𝗹𝗲𝗮𝗻 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗙𝘂𝗻𝗱𝗮𝗺𝗲𝗻𝘁𝗮𝗹𝘀
- Project setup
- Minimal APIs - https://youtu.be/GCuVC_qDOV4
- Dependency injection - https://youtu.be/tKEF6xaeoig
- CA + Document database - https://youtu.be/Ru6_b50wdfo
- Project setup from scratch - https://youtu.be/fe4iuaoxGbA
- 4 Best practices for new project - https://youtu.be/B9ZUJN1Juhk
- Structured logging - https://youtu.be/nVAkSBpsuTk
- Message queues - https://youtu.be/CTKWFMZVIWA
𝗗𝗼𝗺𝗮𝗶𝗻-𝗗𝗿𝗶𝘃𝗲𝗻 𝗗𝗲𝘀𝗶𝗴𝗻 𝗜𝗻𝘁𝗿𝗼𝗱𝘂𝗰𝘁𝗶𝗼𝗻
- Rich Domain model - https://youtu.be/1Lcr2c3MVF4
- Entities - https://youtu.be/00tCda35Bvk
- Value objects - https://youtu.be/P5CRea21R2E
- Aggregate root - https://youtu.be/0D3EB2jvQ44
- Domain validation - https://youtu.be/KgfzM0QWHrQ
- Domain model tradeoffs - https://youtu.be/eC7GMGIR4Gw
- Repository pattern - https://youtu.be/h4KIngWVpfU
- Specification pattern - https://youtu.be/rdY5ElleWKY
- Unit of work - https://youtu.be/vN_j1Bs0ALU
- Smart Enums - https://youtu.be/v6cYTcEfZ8A
- Snapshot pattern - https://youtu.be/HhZ4DtON404
- Strongly typed IDs - https://youtu.be/LdrMdIabE1o
- Anemic Domain model - https://youtu.be/6gwIDiUk2h4
- DDD modeling - https://youtu.be/fO2T5tRu3DE
- DDD + EF mapping - https://youtu.be/IlXnIe6p_Uk
- Incomplete aggregates - https://youtu.be/cCnZJE0wEjY
- Double dispatch - https://youtu.be/wi_wsw5Gp6Q
𝗖𝗤𝗥𝗦
- CQRS Fundamentals - https://youtu.be/vdi-p9StmG0
- Validation /w Result - https://youtu.be/85dxwd8HzEk
- Validation /w Exception - https://youtu.be/OhQA4PDdp0Q
- Read models - https://youtu.be/AVBAAKa84cs
- UoW pipeline - https://youtu.be/sSIg3fpflI0
- The "Truth" on CQRS - https://youtu.be/F3xNCfP3Xew
- CQRS Query side - https://youtu.be/RgqCavV2cqQ
- Materialized views - https://youtu.be/2ZNMlx44gKQ
𝗧𝗲𝘀𝘁𝗶𝗻𝗴
- Parameterized tests - https://youtu.be/Pk2d-qm5KwE
- Unit testing - https://youtu.be/a6Qab5l-VLo
- Integration testing /w Docker - https://youtu.be/tj5ZCtvgXKY
- Architecture tests - https://youtu.be/_D6Kai4RdGY
𝗗𝗲𝘀𝗶𝗴𝗻 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀
- Idempotent consumer - https://youtu.be/mGeEtokcjVQ
- Saga pattern - https://youtu.be/dlXCodLxhag
- Compensating transaction (Saga) - https://youtu.be/FPVzevl6Ri8
- Domain events - https://youtu.be/AHzWJ_SMqLo
- Domain vs. Integration event - https://youtu.be/K806a-rWE2g
- Options pattern - https://youtu.be/wxYt0motww0
- Options pattern validation - https://youtu.be/qRruEdjNVNE
- Decorator pattern - https://youtu.be/i_3I6XLAOt0
@csharp_ci
Первое, что необходимо понимать — приложения, созданные с помощью принципов чистой архитектуры, обладают высокой устойчивостью к изменениям. Они быстро адаптируются к новым требованиям и возможностям, сохраняя при этом высокое качество кода и производительность. Кроме того, система становится гораздо проще для понимания и сопровождения, что делает ее более доступной для других разработчиков.
Принципы чистой архитектуры также помогают избежать проблем с зависимостями и разделить приложение на логические блоки. Это повышает удобство добавления новых функций и изменения уже существующих. В результате, время разработки сокращается, а приложение становится более гибким и масштабируемым.
Какие преимущества могут дать принципы Clean Architecture :
▪Улучшение качества кода;
▪Быстрая адаптация к изменениям и новым функциям;
▪Удобство сопровождения и расширения приложений;
▪Минимизация проблем с зависимостями;
▪Повышение гибкости и масштабируемости приложений;
▪Сокращение времени разработки и улучшение производительности.
Все эти пункты дают принципам чистой архитектуры важное преимущество в сравнении с другими методиками разработки.
Представляем вам список из 45 полезных уроков, разбитых по темам.🔥
𝗖𝗹𝗲𝗮𝗻 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗙𝘂𝗻𝗱𝗮𝗺𝗲𝗻𝘁𝗮𝗹𝘀
- Project setup
- Minimal APIs - https://youtu.be/GCuVC_qDOV4
- Dependency injection - https://youtu.be/tKEF6xaeoig
- CA + Document database - https://youtu.be/Ru6_b50wdfo
- Project setup from scratch - https://youtu.be/fe4iuaoxGbA
- 4 Best practices for new project - https://youtu.be/B9ZUJN1Juhk
- Structured logging - https://youtu.be/nVAkSBpsuTk
- Message queues - https://youtu.be/CTKWFMZVIWA
𝗗𝗼𝗺𝗮𝗶𝗻-𝗗𝗿𝗶𝘃𝗲𝗻 𝗗𝗲𝘀𝗶𝗴𝗻 𝗜𝗻𝘁𝗿𝗼𝗱𝘂𝗰𝘁𝗶𝗼𝗻
- Rich Domain model - https://youtu.be/1Lcr2c3MVF4
- Entities - https://youtu.be/00tCda35Bvk
- Value objects - https://youtu.be/P5CRea21R2E
- Aggregate root - https://youtu.be/0D3EB2jvQ44
- Domain validation - https://youtu.be/KgfzM0QWHrQ
- Domain model tradeoffs - https://youtu.be/eC7GMGIR4Gw
- Repository pattern - https://youtu.be/h4KIngWVpfU
- Specification pattern - https://youtu.be/rdY5ElleWKY
- Unit of work - https://youtu.be/vN_j1Bs0ALU
- Smart Enums - https://youtu.be/v6cYTcEfZ8A
- Snapshot pattern - https://youtu.be/HhZ4DtON404
- Strongly typed IDs - https://youtu.be/LdrMdIabE1o
- Anemic Domain model - https://youtu.be/6gwIDiUk2h4
- DDD modeling - https://youtu.be/fO2T5tRu3DE
- DDD + EF mapping - https://youtu.be/IlXnIe6p_Uk
- Incomplete aggregates - https://youtu.be/cCnZJE0wEjY
- Double dispatch - https://youtu.be/wi_wsw5Gp6Q
𝗖𝗤𝗥𝗦
- CQRS Fundamentals - https://youtu.be/vdi-p9StmG0
- Validation /w Result - https://youtu.be/85dxwd8HzEk
- Validation /w Exception - https://youtu.be/OhQA4PDdp0Q
- Read models - https://youtu.be/AVBAAKa84cs
- UoW pipeline - https://youtu.be/sSIg3fpflI0
- The "Truth" on CQRS - https://youtu.be/F3xNCfP3Xew
- CQRS Query side - https://youtu.be/RgqCavV2cqQ
- Materialized views - https://youtu.be/2ZNMlx44gKQ
𝗧𝗲𝘀𝘁𝗶𝗻𝗴
- Parameterized tests - https://youtu.be/Pk2d-qm5KwE
- Unit testing - https://youtu.be/a6Qab5l-VLo
- Integration testing /w Docker - https://youtu.be/tj5ZCtvgXKY
- Architecture tests - https://youtu.be/_D6Kai4RdGY
𝗗𝗲𝘀𝗶𝗴𝗻 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀
- Idempotent consumer - https://youtu.be/mGeEtokcjVQ
- Saga pattern - https://youtu.be/dlXCodLxhag
- Compensating transaction (Saga) - https://youtu.be/FPVzevl6Ri8
- Domain events - https://youtu.be/AHzWJ_SMqLo
- Domain vs. Integration event - https://youtu.be/K806a-rWE2g
- Options pattern - https://youtu.be/wxYt0motww0
- Options pattern validation - https://youtu.be/qRruEdjNVNE
- Decorator pattern - https://youtu.be/i_3I6XLAOt0
@csharp_ci
Большой сборник теоретического материала по работе с базами данных.
▪основы: https://phpclub.ru/mysql/doc/tutorial.html
▪отношения между таблицами в БД: https://jtest.ru/bazyi-dannyix/sql-dlya-nachinayushhix-chast-3.html
▪внешние ключи: https://denis.in.ua/foreign-keys-in-mysql.htm
▪большой учебник по SQL: https://www.pyramidin.narod.ru/rusql/index.htm
▪sql канал с практичесикми задачами: @sqlhub
▪сборник запросов на все случаи жизни (англ): https://www.artfulsoftware.com/infotree/queries.php
▪таблицы отличий в диалектах SQL в разных СУБД (англ): https://en.wikibooks.org/wiki/SQL_dialects_reference
▪манга-учебник про SQL в картинках: https://www.nostarch.com/mg_databases.htm
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое ad-hoc-полиморфизм, какие проблемы он решает и как вообще его реализовать, используя паттерн type class на языке программирования C#?
▍ Виды полиморфизмов
Оказывается, что полиморфизмов есть, как минимум, три вида:
1. Параметрический.
2. Специальный (ad-hoc).
3. Полиморфизм подтипов.
Начнём с параметрического полиморфизма. Допустим, у нас есть список элементов. Это может быть список целых чисел, чисел с плавающей запятой, строк, чего угодно. Теперь представьте метод GetHead(), который возвращает первый элемент из этого списка. Для него не важно, является ли возвращаемый элемент типом int, string, Apple или Orange. Его возвращаемый тип — это формальный типовой параметр, стоящий вместо T внутри IList<T>, и его реализация одинакова для всех типов: «вернуть первый элемент».
interface IList<T>
{
T GetHead();
}
В отличие от параметрического полиморфизма, специальный полиморфизм привязан к типу. В зависимости от него вызываются разные реализации метода. Перегрузка методов — один из примеров ad-hoc-полиморфизма. Например, можно иметь две версии метода, присоединяющего первый элемент ко второму — одну, которая принимает два целых числа и складывает их, и другую, которая принимает две строки и конкатенирует их. Вы знаете, что 2 + 3 = 5, но "2" + "3" = "23".
class Appender
{
public int AppendItems(int a, int b) =>
a + b;
public string AppendItems(string a, string b) =>
$"{a}{b}";
}
При полиморфизме подтипов дочерние классы предоставляют разные реализации метода некоторого базового класса. В отличие от специального полиморфизма, где решение о том, какая реализация вызывается, принимается на этапе компиляции (раннее связывание), в полиморфизме подтипов оно принимается во время выполнения (позднее связывание).
abstract class Animal
{
public abstract int GetMeatMass();
}
class Cow : Animal
{
public override int GetMeatMass() => 20;
}
class Dog : Animal
{
public override int GetMeatMass() => 5;
}
Теперь давайте ближе рассмотрим ad-hoc-полиморфизм, два других рассматривать подробно в этот раз не будем.
📌 Читать дальше
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Пятничный C# квиз:
Foo foo = new Foo();
Bar bar = new Bar();
Baz baz = new Baz();
Console.WriteLine($"{foo.a}, {bar.a}, {baz.a}");
record struct Foo(int a = 10);
struct Bar
{
public Bar(int a = 10)
{
this.a = a;
}
public int a { get; }
}
record class Baz(int a = 10);
Что выведет на экран код выше?
Anonymous Quiz
56%
10, 10, 10
6%
0, 0, 0
13%
0,0,10
10%
0,10, 0
16%
10,0,10
🔥 Дайджест полезных материалов из мира : C# за неделю
Почитать:
— Как приручить автотестового монстра, или Dependency Injection в автотестах
— Книги по C# для начинающих и практикующих специалистов
— Ad-hoc-полиморфизм и паттерн type class в C#
— Путь к Инновационному Тестированию с Selenium и C#: Мастерство и Качество
— Saia do loop #1 - Hello World em C#
— Announcing Appwrite’s New .NET SDK
— Game Dev Digest — Issue #202 - Clean Code
— Fluent Validation or Data Annotations in C# – Which Is Better?
— Rest Api Using C#, Dotnet, Docker, Entity Framework and Azure Data Studio
— Setting up VS Code for C# development
— Elanat 2 on the GitHub.
— Anti-patterns that every developer should know
— Method Syntax vs. Query Syntax in C# LINQ: Unveiling the Differences, Pros, and Cons
— What Alternatives Are There to Use in Unit Tests Instead of Mocks?
Посмотреть:
📌The Smart Way of Using the Decorator Pattern in C#
📌Марк Шевченко — Пишем функционально на C# и F#Доклад на русском
Хороших выходных !
@csharp_ci
Почитать:
— Как приручить автотестового монстра, или Dependency Injection в автотестах
— Книги по C# для начинающих и практикующих специалистов
— Ad-hoc-полиморфизм и паттерн type class в C#
— Путь к Инновационному Тестированию с Selenium и C#: Мастерство и Качество
— Saia do loop #1 - Hello World em C#
— Announcing Appwrite’s New .NET SDK
— Game Dev Digest — Issue #202 - Clean Code
— Fluent Validation or Data Annotations in C# – Which Is Better?
— Rest Api Using C#, Dotnet, Docker, Entity Framework and Azure Data Studio
— Setting up VS Code for C# development
— Elanat 2 on the GitHub.
— Anti-patterns that every developer should know
— Method Syntax vs. Query Syntax in C# LINQ: Unveiling the Differences, Pros, and Cons
— What Alternatives Are There to Use in Unit Tests Instead of Mocks?
Посмотреть:
📌The Smart Way of Using the Decorator Pattern in C#
📌Марк Шевченко — Пишем функционально на C# и F#Доклад на русском
Хороших выходных !
@csharp_ci
⚡ Introducing the Identity API endpoints
В этой статье рассматривается новый функционал ASP.NET Core Identity, добавляемый в .NET 8 в виде API, которые можно использовать для выполнения базовых операций идентификации, таких как регистрация пользователей.
Эти конечные точки служат удобными альтернативами "стандартному пользовательскому интерфейсу", который уже некоторое время доступен в ASP.NET Core Identity.
В статье показно, как использовать эти API для взаимодействия с защищенными API в вашем приложении.
📌Читать
@csharp_ci
В этой статье рассматривается новый функционал ASP.NET Core Identity, добавляемый в .NET 8 в виде API, которые можно использовать для выполнения базовых операций идентификации, таких как регистрация пользователей.
Эти конечные точки служат удобными альтернативами "стандартному пользовательскому интерфейсу", который уже некоторое время доступен в ASP.NET Core Identity.
В статье показно, как использовать эти API для взаимодействия с защищенными API в вашем приложении.
📌Читать
@csharp_ci
✔SyntheticHumans Package (Unity Computer Vision)
A package for creating Unity Perception compatible synthetic people.
Модель для генерации людей, обученная на большом наборе антропоцентрических измерений, которая способна генерировать широкий спектр форм и поз человеческого тела.
🖥 Github: https://github.com/Unity-Technologies/com.unity.cv.synthetichumans
📂 AnthroNet: https://github.com/Unity-Technologies/AnthroNet
📕 Paper:https://arxiv.org/abs/2309.03812v1
⭐️ Dataset: https://paperswithcode.com/dataset/unity-synthetic-humans
@csharp_ci
A package for creating Unity Perception compatible synthetic people.
Модель для генерации людей, обученная на большом наборе антропоцентрических измерений, которая способна генерировать широкий спектр форм и поз человеческого тела.
📂 AnthroNet: https://github.com/Unity-Technologies/AnthroNet
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира: C# за неделю
Почитать:
— Инструменты создания API клиента для .NET
— Отслеживание изменения температуры в помещении при помощи ультразвука
— 9 лучших консольных файловых менеджеров Linux
— Использование MassTransit (RabbitMQ) в ASP.NET Core
— Осторожно: ICacheEntry
— The key new features and changes in .NET 8
— Validation in Elanat
— Game Dev Digest — Issue #203 - Simulations, Patterns, VR and more
— Get images from resources in Windows Forms
— Building a Contact Form with Microsoft Azure and Blazor
— How to Convert a Word Document into Images Using the Syncfusion Word Library
— Multi-Tenant SaaS Architecture with Entity Framework
— Training of components in Elanat core
— How to install Elanat CMS
— Evolution of C# (videos)
— Power your .NET REST API with data queries and reports
Посмотреть:
🌐 Reviewing Bad LinkedIn C# Advice (⏱ 10:32)
🌐 The Weirdest Bug Your C# Code Has Right Now (⏱ 07:04)
Хорошего дня!
@csharp_ci
Почитать:
— Инструменты создания API клиента для .NET
— Отслеживание изменения температуры в помещении при помощи ультразвука
— 9 лучших консольных файловых менеджеров Linux
— Использование MassTransit (RabbitMQ) в ASP.NET Core
— Осторожно: ICacheEntry
— The key new features and changes in .NET 8
— Validation in Elanat
— Game Dev Digest — Issue #203 - Simulations, Patterns, VR and more
— Get images from resources in Windows Forms
— Building a Contact Form with Microsoft Azure and Blazor
— How to Convert a Word Document into Images Using the Syncfusion Word Library
— Multi-Tenant SaaS Architecture with Entity Framework
— Training of components in Elanat core
— How to install Elanat CMS
— Evolution of C# (videos)
— Power your .NET REST API with data queries and reports
Посмотреть:
🌐 Reviewing Bad LinkedIn C# Advice (⏱ 10:32)
🌐 The Weirdest Bug Your C# Code Has Right Now (⏱ 07:04)
Хорошего дня!
@csharp_ci
Архитектурные тесты.
Это автоматизированные тесты, проверяющие структуру и дизайн кода.
С их помощью можно обеспечить соблюдение правил проектирования, выраженных в коде C#.
- Определить все зависимости проекта
- Определить нейминг классов
- Использовать изолированные классов
Представьте себе, что затраты на реализацию архитектуры вашего программного обеспечения сведены к нулю.
Вот что могут дать вам архитектурные тесты.
ArchUnitNET - это бесплатная, простая библиотека для проверки архитектуры кода на C#.
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔐 Steam Desktop Authenticator
Десктопная реализация мобильного приложения аутентификатора Steam на C#.
• Github
@csharp_ci
Десктопная реализация мобильного приложения аутентификатора Steam на C#.
• Github
@csharp_ci
🔥 Дайджест полезных материалов из мира C# за неделю
Почитать:
— Идея небольшого дополнительного механизма для контейнера внедрения зависимостей
— Вещественные числа с плавающей двоичной точкой в .NET и .NET Framework
— Магия степеней двойки, или Запуск кучи docker контейнеров
— Сборка .NET решений через код на Nuke Build
— The Power of Convention
— Visual Studio Appsettings.json schemas
— Crafting an Item-Spawn System
— Learn2Blog
— How To Work With The Browser's Local Storage in Blazor
— ASP.NET Core VS CodeBehind
— Game Dev Digest — Issue #204 - 2 Minutes To Midnight
— SQL-Server insert record get primary key back
— C# Intrepid Voyage: 10 Strategies to Master the Language
— Unit of Work, Repositories Pattern, and Fluent Validation in Dotnet Core Web API 🛠️"
Посмотреть:
🌐 The "Terrible" Keyword You Didn’t Know C# Had (⏱ 09:09)
🌐 Why Startups Hate .NET and C# (⏱ 10:38)
Хорошего дня!
@csharp_ci
Почитать:
— Идея небольшого дополнительного механизма для контейнера внедрения зависимостей
— Вещественные числа с плавающей двоичной точкой в .NET и .NET Framework
— Магия степеней двойки, или Запуск кучи docker контейнеров
— Сборка .NET решений через код на Nuke Build
— The Power of Convention
— Visual Studio Appsettings.json schemas
— Crafting an Item-Spawn System
— Learn2Blog
— How To Work With The Browser's Local Storage in Blazor
— ASP.NET Core VS CodeBehind
— Game Dev Digest — Issue #204 - 2 Minutes To Midnight
— SQL-Server insert record get primary key back
— C# Intrepid Voyage: 10 Strategies to Master the Language
— Unit of Work, Repositories Pattern, and Fluent Validation in Dotnet Core Web API 🛠️"
Посмотреть:
🌐 The "Terrible" Keyword You Didn’t Know C# Had (⏱ 09:09)
🌐 Why Startups Hate .NET and C# (⏱ 10:38)
Хорошего дня!
@csharp_ci
Изучите базовый синтаксис и процессы, необходимые для создания простых приложений на языке C#.
📌 Курс
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM