• Как сделать переключение между аккаунтам, как в yandex, mail, gmail?

    sarapinit
    @sarapinit
    Точу водой камень
    В случае oauth2 хранятся токены (не обязательно в local storage, для старых браузеров могут и в куках) для нескольких аккаунтов. При переключении аккаунтов выбирается, какой токен писать в заголовок запросов. Сервер по токену определяет пользовательские данные.
    Ответ написан
    Комментировать
  • Как добавить в таблицу БД без повторов?

    sarapinit
    @sarapinit
    Точу водой камень
    insert into Students
    select list.Id, list.[Name] 
    from 
    (values	
    	(1,N'Вася'),
    	(2,N'Петя'),
    	(3,N'Женя'),
    	(4,N'Коля'),
    	(5,N'Настя'),
    	(6,N'Аристарх'),
    	(7,N'Никодим')
    ) list (Id, [Name])
    left join Students s on s.Id = list.Id
    where s.Id IS NULL
    Ответ написан
    2 комментария
  • Как в ограничении where задать ограничение по struct или class одновременно?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    В данный момент нет возможности добавлять OR в ограничение where. Можете просто оставить public class Test<T>без ограничений.
    Ответ написан
    Комментировать
  • Как организовать очередь запросов в redis?

    sarapinit
    @sarapinit
    Точу водой камень
    Ответ написан
    Комментировать
  • Как гарантировать неизменность данных во время получения данных?

    sarapinit
    @sarapinit
    Точу водой камень
    Вам подойдет уровень изоляции SNAPSHOT.

    Specifies that data read by any statement in a transaction will be the transactionally consistent version of the data that existed at the start of the transaction. The transaction can only recognize data modifications that were committed before the start of the transaction. Data modifications made by other transactions after the start of the current transaction are not visible to statements executing in the current transaction. The effect is as if the statements in a transaction get a snapshot of the committed data as it existed at the start of the transaction.


    https://docs.microsoft.com/en-us/sql/t-sql/stateme...
    Ответ написан
    3 комментария
  • Как документировать схему данных в Redis?

    sarapinit
    @sarapinit
    Точу водой камень
    У нас общая библиотека расшарена с типами и методами работы с Redis. Всё формирование ключей там же. Хранится json или бинарные данные сериализованные с помощью protobuf.
    Подходит если все пишут на одном языке.
    Ответ написан
    Комментировать
  • Как искать по названию файла в Visual Studio Code??

    sarapinit
    @sarapinit
    Точу водой камень
    Tip: You can open any file by its name when you type ⌘P (Windows, Linux Ctrl+P) (Quick Open).


    https://code.visualstudio.com/docs/editor/editinge...
    Ответ написан
    Комментировать
  • Каким образом стать гуру в Си?

    sarapinit
    @sarapinit
    Точу водой камень
    У нас в компании есть команда, которая пишет на C. Они делают прошивки для микроконтроллеров. Книг по C особо нет. Потому что там особо нечего писать. Синтаксис умещается в тонкую книжку. Остальное - специфическая документация для железок. Так что лучше всего вам попасть стажером в компанию, которая пишет что-то для железа. IoT иди вроде того.
    Можете купить какой-то простенький микроконтроллер и попробовать его освоить. Может в процессе и пропадет желание писать на C.
    Если вы не готовы этому посвящать много времени и сил, учиться паять, пользоваться осциллографом и отказаться от многих современных инструментов разработки, то лучше не надо.
    Ответ написан
    Комментировать
  • Где можно посмотреть решения задачи читатель-писатель различными методами синхронизации на C#?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Возьмите книгу Рихтера «CLR via C#». Там все это есть
    5deb6ddd534d9750389283.jpeg
    Ответ написан
    Комментировать
  • Что нужно знать для введения в Backend-разработку?

    sarapinit
    @sarapinit
    Точу водой камень
    В зависимости от проекта:
    → tcp/udp или http/https
    → сериализация
    → если ЯП со сборкой мусора, то принцип работы, режимы работы
    → профилирование запросов
    → взаимодействие с базами данных
    → кэширование
    → основы многопоточности+асинхронности

    + основные бэкенд библиотеки/фреймворки под ваш стек
    + для web в общих чертах представлять как работает/конфигурируется целевой web сервер
    Ответ написан
    Комментировать
  • Актуальна ли книга Джеффри Рихтера: CLR via C# Программирование на платформе Microsoft NET Framework 4.5 на языке C#?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Книга Рихтера - хорошая база для понимания работы CLR. Большая часть будет релевантна и для CoreCLR в частности. А к тому времени как вы проработаете 4е издание, может Рихтер и про CoreCLR напишет.
    Ответ написан
    Комментировать
  • Какой язык программирования подойдёт для написания высокопроизводительного приложения на Windows?

    sarapinit
    @sarapinit
    Точу водой камень
    Если текст находится в файле, то сделать замену по регулярному выражению можно стандартными средствами powershell.
    Ответ написан
  • Когда стоит разделять приложения?

    sarapinit
    @sarapinit
    Точу водой камень
    1 кейс.
    У вас есть запросы на которые нужно отвечать быстро (текущее состояние) и какой-то сервис с отчетами. Когда пользователи запрашивают большой отчет скорость ответа текущего состояния начинает проседать. Тогда вы делаете отдельный сервис для отчетов, выносите его в отдельное приложение и на отдельную виртуалку. Таким образом вы изолируете потребляемые ресурсы и устраняете влияние сервисов друг на друга. Плюс получаете возможность отдельно масштабировать сервис отчетов во времена наибольшей нагрузки.

    2 кейс.
    У вас есть сервис авторизации для которого нужно учесть множество разных требований и стандартов по безопасности. Вы привлекаете отдельную команду для его разработки с определенными навыками. В этом случае вы изолируете ресурс "навыки разработки безопасных сервисов" чтобы команда не тратила свое время на другие фичи.

    3 кейс.
    Вы делаете несколько сложных сервисов и решаете распаралелить разработку на несколько команд. Одна команда делает "Кинопоиск", другая "Афишу". Все они обращаются к серверу авторизации из кейса 2 и бекендам из кейса 1.

    Итог.
    Разделение на несколько приложений - это либо логическое разделение, когда приложения делают разные и несвязанные вещи. В этом случае удобно думать о разных задачах как о разных приложениях. Отдельно их разрабатывать, деплоить и т.д.
    Либо это управление вычислительными мощностями. Когда разные части системы требуют разделения ресурсов, нелинейного масштабирования или имеют совсем разный режим работы (например АПИ для загрузки фоток и асинхронный воркер который делает превьюшки для этих фоток)
    Либо это управление на уровне человеческих ресурсов, когда приходится вводить в разработку несколько команд.
    Ответ написан
  • План изучения C# чтобы стать C# junior - как улучшить?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Могу дать список из личного опыта. Я менял профессию из эксплуатации телекоммуникационых систем перешел в программисты.
    К моменту получения 1й работы:
    - Я прошел 2 курса: Базовый по языку C# и базовый по TSQL (кстати тоже от ITVDN, лысый дядька норм объясняет).
    - Прочитал книгу Адама Фримена про asp.net.
    - Прочитал книгу Макконела "Совершенный код".
    - Научился в общих чертах пользоваться AspNet + EntityFramework + SqlServer

    Кстати, вот эта связка AspNet + EntityFramework + SqlServer очень часто мелькает в тестовых заданиях.
    Обычно хотят чтобы ты собрал простой сайтик-справочник, прикрутил к нему БД, прикрутил к нему авторизацию, и сделал пару форм и таблиц, чтобы продемонстрировать умение делать простой CRUD функционал.
    Надо сказать что книжка Адама Фримана примерно про это и рассказывает.

    На самом деле после трудоустройства и началось реальное обучение. Приходилось закрывать дыры в своих знаниях по вечерам и по выходным. Через год стало полегче. Наверное лучше найти какую-то стажировку еще на этапе обучения, чтобы пообщаться с реальными людьми и реальным кодом. Реальный мир лучше всего указывает недостатки и на то, что нужно изучать дальше.
    Ответ написан
    2 комментария
  • Как очистить ссылки и зависимости в Asp Net Core?

    sarapinit
    @sarapinit
    Точу водой камень
    Дело в том что сам пакет aspnetcore состоит из метапакетов. Вот эта статья должна кое-что прояснить.
    Ответ написан
  • Гуманитарий мозгом, но нравится кодить, как быть?

    sarapinit
    @sarapinit
    Точу водой камень
    Сюрприз-сюрприз, оно и не должно легко даваться. Вы думаете на нас тут на всех снизошла божья благодать?) Прочтите книгу «Думай как математик» Барбары Оакли. Это поможет понять как построить свое обучение и не страдать по поводу того что «мне не дано». Если действительно хотите этому жизнь посвятить, то разберётесь. Если это мимолетное увлечение, то никто вам не запретит иметь программирование в виде хобби. Ну а если можете не программировать, то не занимайтесь этим. В мире есть еще много занятий где надо думать и творить.
    Ответ написан
    Комментировать
  • Как проверить вхождение диапазона в диапазон?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    class Program
        {
            private static readonly Range[] ExistedRanges = {
                new Range(0, 2),
                new Range(5.01f, 7),
                new Range(7.01f, 9)
            };
    
            public static bool IsValidRange(Range range)
            {
                return !ExistedRanges.Any(o => o.IsCross(range));
            }
    
            static void Main()
            {
                Console.WriteLine(IsValidRange(new Range(2.01f, 5)));
                Console.WriteLine(IsValidRange(new Range(11, 13)));
                Console.WriteLine(IsValidRange(new Range(1, 3)));
                Console.WriteLine(IsValidRange(new Range(3, 10)));
    
                Console.ReadKey();
            }
        }
    
        public struct Range
        {
            public readonly float Start;
            public readonly float End;
    
            public Range(float start, float end)
            {
                Start = start;
                End = end;
            }
    
            public bool IsCross(Range other)
            {
                return Math.Min(Math.Max(Start, End), Math.Max(other.Start, other.End)) >=
                       Math.Max(Math.Min(Start, End), Math.Min(other.Start, other.End));
            }
        }


    Алгоритм проверки пересечения не мой. Взял когда-то с просторов интернета. Но не помню где взял и как он называется. Если кто-то знает, напишите в комментах.
    Ответ написан
  • Как получить коллекцию студентов определенного грейда?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    То как вы написали модели означает для EntityFramework, что он должен использовать явную загрузку для коллекции Students. Вам нужно сделать что-то вроде:
    var gradesWithStudents = await _context.Grades.Include(o => o.Students).ToArrayAsync();
    Ответ написан
    Комментировать
  • Зачем асинхронность?

    sarapinit
    @sarapinit
    Точу водой камень
    Асинхронное исполнение кода позволяет более эффективно использовать процессорное время.
    Если взять синхронный сценарий исполнения, то какое-то время поток приложения загружает процессор работой, далее обычно наступает ситуация, когда поток приложения ждет завершения какой-то операции ввода\вывода. Это может быть ожидание срабатывания таймера, ожидание данных от сетевой карты, ожидание пользовательского ввода и т.п. Пока происходит ожидание поток приложения не использует процессор. В некоторых случаях это нас устраивает, если другой полезной работы мы не можем совершить. В других ситуациях мы хотим одновременно что-то делать, например иметь возможность обрабатывать клики мышкой пользователя в то время как идет запрос к БД, например.
    Тогда мы задействуем асинхронный подход. В этом случае когда поток приложения доходит до ожидания окончания операции ввода\вывода, он не ждет а может быть использован для другой работы, а в момент когда закончится операция ввода\вывода и поток не будет занят другой работой, он сможет продолжить исполнение кода с того места на котором остановился.

    Также есть и другое понятие асинхронности, также его называют отложенным исполнением. Это ситуация когда данные обрабатываются не во время запроса пользователя, а данные быстро буферируются на диске в БД или очереди и мы быстро отвечаем пользователю. А в этот момент асинхронный воркер циклично обрабатывает этот буфер, например уменьшает картинки, или перекодирует видео или считает какую-то агрегацию.
    Ответ написан
    Комментировать