Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤7👍5🤝2
На картинке — компактная памятка о том, как мыслить в системном дизайне через три главные цели: держать систему доступной 24/7, переваривать большой поток запросов и безболезненно расти по нагрузке и функциональности.
Сохрани, чтобы быстро освежать логику выбора решений и связывать требования бизнеса с метриками и архитектурой перед практикой и собеседованиями.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥5👍4
Raw string literals в C# 11: многострочные строки без экранирования и боли!
Когда нужно вставить JSON, SQL или Regex в код, обычные строки быстро превращаются в ад: везде обратные слеши, кавычки, переносы строк и постоянные ошибки в экранировании.
Раньше приходилось экранировать кавычки и руками добавлять переносы:
Такой код трудно читать, а любая правка JSON превращается в мини-квест.
В C# 11 появились raw string literals — строки в тройных кавычках, где почти ничего не нужно экранировать:
Переносы строк сохраняются как есть, кавычки внутри не нужно экранировать, и текст выглядит ровно так, как он должен выглядеть.
🔥 Итог: идеально для JSON/SQL/Regex — меньше мусора в коде, больше читабельности и меньше ошибок при редактировании.
➡️ C# Ready | #практика
Когда нужно вставить JSON, SQL или Regex в код, обычные строки быстро превращаются в ад: везде обратные слеши, кавычки, переносы строк и постоянные ошибки в экранировании.
Раньше приходилось экранировать кавычки и руками добавлять переносы:
string json = "{\n" +
" \"user\": \"Anna\",\n" +
" \"age\": 28,\n" +
" \"city\": \"Helsinki\"\n" +
"}";
Console.WriteLine(json);Такой код трудно читать, а любая правка JSON превращается в мини-квест.
В C# 11 появились raw string literals — строки в тройных кавычках, где почти ничего не нужно экранировать:
string json = """
{
"user": "Anna",
"age": 28,
"city": "Helsinki"
}
""";
Console.WriteLine(json);
Переносы строк сохраняются как есть, кавычки внутри не нужно экранировать, и текст выглядит ровно так, как он должен выглядеть.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤9🔥7
Почему DateTime.Now иногда ломает сроки действия?
Типичная ошибка — сохранять локальное время сервера и потом сравнивать его с UTC. Выглядит невинно:
Но
А локальную дату оставь для UI — конвертируй в таймзону пользователя:
Итог: UTC для хранения и сравнения, локаль — только для отображения.
➡️ C# Ready | #совет
Типичная ошибка — сохранять локальное время сервера и потом сравнивать его с UTC. Выглядит невинно:
var expiresAt = DateTime.Now.AddHours(1);
if (DateTime.UtcNow > expiresAt) { ... }
Но
Now зависит от таймзоны и DST: окружение поменялось — и сравнения начинают “плавать”. Надёжнее хранить момент времени в UTC, лучше через DateTimeOffset:var expiresAtUtc = DateTimeOffset.UtcNow.AddHours(1);
if (DateTimeOffset.UtcNow > expiresAtUtc) { ... }
А локальную дату оставь для UI — конвертируй в таймзону пользователя:
var expiresForUser = TimeZoneInfo.ConvertTime(expiresAtUtc, userTz);
Итог: UTC для хранения и сравнения, локаль — только для отображения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥5❤4
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥18🤝15❤3
Например,
код 200 означает, что всё прошло успешно, а 404 сообщает, что страница не найдена.Очень полезно держать под рукой, когда работаешь с API или отлаживаешь backend.
На картинке показаны самые часто используемые статусы от 100 до 599.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍10❤9
args[] легко превращается в понятные настройки: флаги включают режимы, --file принимает путь, а всё лишнее аккуратно ловится как ошибка.В этой задаче узнаешь:
• Как разбирать флаги -v/-h без путаницы;
• Как поддержать --file=... и --file ... одним правилом;
• Зачем нужен --, чтобы отделять опции от аргументов.
Такой каркас можно спокойно расширять: добавлять
--out, --mode, команды и нормальные сообщения об ошибках.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍6❤5👎3🤝3
This media is not supported in your browser
VIEW IN TELEGRAM
На нём собраны структурированные уроки, которые охватывают как базовые, так и продвинутые темы — от переменных и циклов до ООП, работы с файлами и созданием оконных приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥6👍3
Читаем большой файл построчно — когда лог огромный, а память не резиновая!
Иногда нужно обработать большой лог или CSV на десятки/сотни мегабайт. Если читать его целиком через
Для таких случаев в C# есть
Подключим нужные пространства имён:
Зададим путь к файлу:
Пройдёмся по файлу построчно и посчитаем ошибки:
🔥
➡️ C# Ready | #практика
Иногда нужно обработать большой лог или CSV на десятки/сотни мегабайт. Если читать его целиком через
ReadAllLines(), файл сначала полностью грузится в память — это лишние аллокации и давление на GC.Для таких случаев в C# есть
File.ReadLines() — он читает файл лениво, отдавая строки по мере чтения.Подключим нужные пространства имён:
using System;
using System.IO;
Зададим путь к файлу:
string path = @"C:\Logs\app.log";
Пройдёмся по файлу построчно и посчитаем ошибки:
int errors = 0;
foreach (var line in File.ReadLines(path))
{
if (line.Contains("ERROR"))
errors++;
}
Console.WriteLine($"Найдено ошибок: {errors}");
ReadLines() идеально подходит для больших файлов: не загружает всё в память, обрабатывает “на лету” и помогает избежать лишних аллокаций.Please open Telegram to view this post
VIEW IN TELEGRAM
❤13🔥6👍3