Light Code – Telegram
Light Code
1.76K subscribers
44 photos
13 videos
101 links
Блог Senior Fullstack разработчика 👨‍💻

Мои соц сети:

ВК:
https://vk.com/lightcode_dev

Boosty:
https://boosty.to/lightcode

Забустить ТГ:
https://news.1rj.ru/str/boost/lightcode_group
Download Telegram
Channel created
⚡️Решение популярной задачи c собеседования в компаниях по типу Google

📌 Описание, условие и объяснение алгоритма решения задачи на YouTubeКЛИК

str - исходная строка ("привет") для решения задачи.

Затем, с помощью str.ToCharArray(), конвертируем эту строку в массив символов charArray. Теперь у нас есть массив символов, где каждый символ строки находится в отдельной ячейке массива.

Определяем длину этого массива символов и сохраняем ее в переменной length. В данном случае, длина равна 6, так как строка "привет" содержит 6 символов.

Цикл for перебирает все элементы массива - начинается с i = 0 и продолжается до тех пор, пока i меньше половины длины массива (length / 2). Это важный момент, потому что мы меняем символы только до середины массива, чтобы не менять их дважды.

Внутри цикла происходит обмен символов. Мы используем временную переменную temp, чтобы сохранить значение текущего символа charArray[i]. Затем мы перезаписываем charArray[i] значением charArray[length - i - 1]. Это делает переворот: первый символ становится таким, как последний, второй - как предпоследний и так далее.

После завершения цикла, массив символов charArray теперь содержит перевернутую версию исходной строки.

Для преобразования массива символов обратно в строку, мы используем new string(charArray) и сохраняем результат в переменной reversedstring.

Наконец, мы выводим перевернутую строку на консоль с помощью Console.WriteLine(reversedstring).

👉 LightCode | .NET Developer
😱2
⚡️Что такое делегат?

📌 Объяснение на YouTubeКЛИК

В C# существует несколько встроенных делегатов, таких как Func, Predicate и Action, которые упрощают работу с делегатами в определенных сценариях.

Функция:
Func представляет собой метод, который возвращает значение. Он может принять от 0 до 16 параметров. Это полезно, когда вам нужно выполнить какое-то действие и получить результат.

Предикат:
Predicate это делегат, предназначенный для выполнения проверок на соответствие условию. Он представляет собой метод, который принимает один аргумент и возвращает булево значение, указывающее, соответствует ли переданный объект заданному условию.

Действие:
Action метод, который не возвращает значения (void). Он может принять от 0 до 16 параметров. Это удобно для выполнения действий без необходимости получения результата.

👉 LightCode | .NET Developer
⚡️Статусные коды HTTP

📌 Объяснение на YouTubeКЛИК

Коды статуса HTTP — это способ, которым серверы и клиенты обмениваются данными между собой при запросах и ответах в сети.

100 Continue (Продолжить)

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

101 Switching Protocols (Переключение протоколов)

Этот статус говорит о том, что сервер соглашается на изменение протокола. Например, при использовании HTTP/1.1 клиент может запросить переключение на HTTP/2.

200 OK (Успех)

Этот статус говорит о том, что запрос клиента был успешно обработан, и сервер отправил запрошенные данные. Например, когда вы запрашиваете веб-страницу.

201 Created (Создано)

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

202 Accepted (Принято)

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

204 No Content (Нет содержания)

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

300 Multiple Choices (Множество вариантов)

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

301 Moved Permanently (Перемещено навсегда)

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

302 Found (Найдено)

Этот статус сообщает о временном перенаправлении клиента на другую страницу или URL. Клиент автоматически переходит по новому адресу.

304 Not Modified (Не изменено)

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

400 Bad Request (Плохой запрос)

Этот статус указывает на то, что запрос клиента неверен или неполон. Например, при неправильно составленном запросе.

401 Unauthorized (Не авторизовано)

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

403 Forbidden (Запрещено)

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

404 Not Found (Не найдено)

Этот статус говорит о том, что запрашиваемая страница или ресурс не найдены на сервере.

500 Internal Server Error (Внутренняя ошибка сервера)

Этот статус указывает на то, что на сервере возникла ошибка при обработке запроса.

502 Bad Gateway (Плохой шлюз)

Этот статус говорит о том, что прокси-сервер или шлюз, используемый для запроса, не смог передать запрос на сервер.

503 Service Unavailable (Служба недоступна)

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

Это не все имеющиеся HTTP коды, а лишь основная их часть!

👉 LightCode | .NET Developer
⚡️Повторяющиеся символы в строке

📌 Объяснение, условие и объяснение алгоритма решения задачи на YouTubeКЛИК

word - исходная строка ("подпишись") для решения задачи.

Затем, с помощью word.ToCharArray(), конвертируем эту строку в массив символов characters. Теперь у нас есть массив символов, где каждый символ строки находится в отдельной ячейке массива.

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

С помощью цикла foreach итерируемся по массиву, и если символ уже существует в словаре charMap, мы увеличиваем его счетчик на 1. В противном случае, мы добавляем символ в словарь со счетчиком 1.

Далее итерируемся по словарю charMap с помощью цикла foreach и выводим на консоль (Console.WriteLine) все ключи, где значение > 1.

👉 LightCode | .NET Developer
⚡️Mocking

📌 Объяснение на YouTubeКЛИК

Самые популярные библиотеки для .NET: Moq, NSubstitute, FakeItEasy.

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

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

👉 LightCode | .NET Developer
⚡️GUID vs ULID

📌 Объяснение на YouTubeКЛИК

Использование Guid.NewGuid() в качестве первичного ключа в базе данных может быть неэффективным с точки зрения производительности. Это связано с тем, что в некоторых базах данных первичные ключи обычно используются для создания кластерных индексов, которые определяют, как данные будут храниться на диске.

Хорошая статья на хабре про использование типов для генерации ключей в БД - КЛИК

Для использования Ulid в .NET - необходимо установить nuget пакет Ulid. Ссылка на их репозиторий - КЛИК

👉 LightCode | .NET Developer
⚡️REST vs gRPC

📌 Объяснение на YouTubeКЛИК

Когда лучше использовать REST или gRPC?

REST стал просто модным словом для любого типа HTTP API, поэтому чаще вам будет хотеться следовать именно этой спецификации. Если вы разрабатываете открытые системы для пользователей интернета, то REST будет отличным решением т.к gRPC не имеет нативной поддержи в браузерах. При интеграции клиентов разных компаний REST также может быть предпочтительнее gRPC т.к REST слишком популярен и другая сторона, которая будет интегрироваться к вам в систему будет настаивать на том, что нужно использовать REST. К тому же в таком случае при взаимодействии нескольких сторонних клиентов у REST преимущество в плане предопределенных кодов состояния.

gRPC следует использовать. когда у вас микросервисы на разных языках программирования и вам важна скорость передачи данных. Он поддерживается всеми популярными языками программирования. Зачастую используется, если ваша система является внутренней, а не публичной. Отлично подходит, когда нужно передавать данные в режиме реального времени. Также, если вам нужно реализовать дуплексную передачу данных, то необходимо использовать gRPC.

👉 LightCode | .NET Developer