Задать вопрос
  • C# поля Dictionary в Class?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Ну и инициализируйте его правильно. В чем проблема?
    public static Dictionary<string, float> Weapons = new Dictionary<string, float>(){
                {"a", 1f},
                {"b", 2f}
            };
    Ответ написан
    Комментировать
  • На каком языке сейчас чаще всего программируют микроконтроллеры?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    почему для этой цели (как я читал на других источниках) язык Си выбирают чаще чем свой более развитый аналог - Java

    Пример контроллера - ATTiny13:
    - 1 КБ внутрисистемно программируемой Flash памяти программы
    - 64 байта внутрисистемно программируемой EEPROM памяти данных,
    - 64 байта встроенной SRAM памяти

    Удачи с размещением виртуальной машины Java + кода самой программы с учетом имеющихся ресурсов...
    Ответ написан
    5 комментариев
  • Как организовать безопасное общение между микросервисами?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Межсервисное взаимодействие ничем не отличается от клиент-серверного. Та же аутентификация и авторизация (тот же пресловутый openid credentials grant flow), тот же SSL. В некоторых редких случаях можно ограничиться white-list ip, но тут хватает ограничений и никаких ролей
    Ответ написан
    4 комментария
  • Где лучше объявлять перечисления?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Если оно относится только к классу то внутри его, если нет то за пределами
    Ответ написан
    Комментировать
  • Как измерить размер данных, находящихся в кеше Redis?

    Есть команда INFO memory — покажет сколько памяти занимает весь сервер со всеми данными.

    Ещё может помочь MEMORY USAGE key чтобы посмотреть, сколько памяти занимает конкретный ключ.
    Ответ написан
    Комментировать
  • Какой системный язык программирования похож на Javascript?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    C++
    Ответ написан
    Комментировать
  • На ком лежит натяжка шаблона?

    DevMan
    @DevMan
    как договоритесь, так и будет.
    четкого и однозначного деления нет.
    Ответ написан
    Комментировать
  • Что лучше использовать для проектирование API в high-load сервисе?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Протокол обмена данными к факту нагрузки не имеет отношения. Используйте то что решает ваши задачи. Напомню что:
    • REST - Representational State Transfer (простая передача состояния ресурсов)
    • JSON API это на самом деле HAL ( Hypertext Application Language )
    • А GraphQL решает просто проблему распределенных микросервисов


    А Highload это про архитектуру
    Ответ написан
    Комментировать
  • Как работают современные мессенджеры?

    EvgenyMamonov
    @EvgenyMamonov
    Senior software developer, system architect
    как сервер за столь короткое время умеет прошерстить базу данных, найти сообщения конкретного пользователя и отдать их

    Я бы делал немного иначе, например пользователь отправляет сообщение, которое принимает сервер.
    В случае, если получатель сообщения также подключен - сервер параллельно доставляет получателю сообщение, за счёт этого имеем быструю доставку сообщений, и параллельно сохраняет сообщение в базу.

    Что касается быстрой загрузки истории сообщений - то тут нужно сохранять сообщения таким образом, чтобы сообщения одного пользователя всегда были на одном и том же сервере (если используется шардинг). Тогда обычный SELECT из базы по user_id будет вполне себе быстро работать даже на огромной базе. Также таблицы можно еще партицировать, чтобы еще быстрее загружать последние сообщения в истории.

    Что касается безопасности, если не использовать e2e шифрование, как вариант, можно использовать обычные RSA ключи. Например на сервере генерируем два ключа, открытый отправляем кленту, он шифрует им сообщение и передает сообщение на сервер. Вы на сервере его расшифровываете при помощи закрытого ключа. Для отправки сообщения клиенту, можно сделать тоже самое. Клиент также генерирует два RSA ключа и открытый ключ отправляет серверу. Когда серверу нужно доставить сообщение клиенту, он шифрует сообщение открытым ключём, который ему высылал клиент и отправляет ему.

    Мне тоже интересно узнать другие варианты решения этой задачи, буду следить за этой темой :)

    Хорошее дополнение по хранению сообщения и организации поиска от Ильи
    Распределение нагрузки решается шардингом — получается много небольших БД вместо одной огромной. Скорее всего каждое сообщение разбивается по словам/частям слов и сохраняется в поисковый индекс типа слово—message_id и такой индекс строится для каждого пользователя и тоже шардируется. При поиске сначала получаем идентификаторы подходящих сообщений из поискового индекса, потом выгружаем сообщения из БД с сообщениями.

    Дополнение от Stalker_RED
    только не "сообщения одного пользователя всегда были на одном и том же сервере" а сообщения из одного чата/канала/группы (включая чаты, в котором всего два участника). То-же самое касается построения индекса.
    Ответ написан
    7 комментариев
  • Бывает ли стыдно за свои старые вопросы?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Да, бывает. И за вопросы, и за ответы, и за посты на форумах, и за комментарии под техническими статьями. Но самое главное - за старый код. И это хорошо. Часто это обозначает, что я сильно вырос с того времени, как стыдное написал.
    Ответ написан
    Комментировать
  • Как работают блокировки и конкурентный доступ?

    @MechanID
    Админ хостинг провайдера
    Сначало почитайте про то как работает InnoDB, про транзакции и уровни изоляции и тогда будет понятно как работают блокировки и тд.
    начните с https://dev.mysql.com/
    Ответ написан
    Комментировать
  • Какие технологии надо изучить C# backend разработчику?

    1. SQL - обязательно (в плане понимания, как вообще реляционные БД работают)
    2. HTTP - чтобы понимать вообще, как оно работает (чтобы можно было ответить на вопрос "почему нельзя поменять код ответа после отправки заголовков")
    3. asp net (core), как самый популярный фреймворк для бэкенда в C# (достаточно базового понимания. Не нужно сильно глубоко лезть)
    4. Entity framework (Core), linq2db, dapper - чтобы вообще примерно понимать, как всякие ORM работают, но это не столь обязательно.
    5. Всякие форматы данных - json, xml
    6. Всякие способы построения апишек - soap, grpc, rest
    Ответ написан
    Комментировать
  • Как изучить сервисы Azure?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    А чем не устраивают официальные курсы от Microsoft + очень хорошая документация?
    Ответ написан
    1 комментарий
  • Лучший ресурс(ресурсы) для изучения React.js для новичков?

    miraage
    @miraage
    Старый прогер
    Официальная документация React
    Ответ написан
    Комментировать
  • Как сделать чтобы большая БД держала нагрузку?

    Melkij
    @Melkij
    PostgreSQL DBA
    Ооо.... Вы это сейчас вообще серьёзно?

    Если вы запускаете DBaaS платформу и не знаете что делать собственно с базами - то у вас не
    Запускаю свою облачную платформу, код и архитектура создана с нуля.

    У вас нет вообще абсолютно ещё ничего и уж архитектуры - в особенности. Кроме "идеи", над которой бьётся давно и много кто, при том имея ресурсы на собственные команды DBA.

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

    Значит этому юзеру достаточно ходить только на мастер.
    Для сферического в вакууме приложения нет средств автоматически распределять запросы по репликам. И такое сделать вовсе невозможно без накладывания ограничений на использование. Например,
    select somefunc();
    Что делает эта функция? Она только читает данные и потому можно отправить на реплику или она пишет и потому должна быть на мастере? Хотите правильный ответ от контрибьютора postgresql? Это достоверно не знает даже сама база до тех пор пока не выполнит функцию.

    Другой пример:
    begin isolation level repeatable read;
    select ...
    update ...
    commit;

    Как максимум на запросе select вы должны уже знать можете ли вы эту транзакцию отправить на читающую реплику. Откуда бы вам это узнать заранее?
    И прочие принципиально-нерешаемые вопросы.

    DBaaS это не про большие базы. Как бы не хотелось маркетингу убедить в обратном. Это про небольшие или стартующие проекты, где проще переплатить сервису за относительно вменяемую настройку и сопровождение типовой конфигурации.
    Ответ написан
    Комментировать
  • Есть ли будущие у бэкенда? Стоит ли идти в бэкенд?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Во-первых - У приложений будущего может не быть бэкенда - как бы немного не тот посыл.
    Во-вторых - Саму статью не читали? Да, приложения смогут (на самом деле уже давно могут) обходиться без написания апи, используя готовые сервисы (которые тоже кто-то должен написать), ну и как всегда - получится тупое формошлепство, которое в итоге все равно подходит далеко не всем, то есть при создании более-менее серьезного функционала все равно придется пилить свой бэкенд, либо платить готовым сервисам неадекватные деньги за допиливание функционала. Ну и деньги, скорее всего будет дешевле 1 раз написать свое, нежели платить аренду сервиса за апи...
    Ответ написан
    1 комментарий
  • Как разработать системный подход к обучению?

    anton_reut
    @anton_reut
    Начинающий веб-разработчик
    Вся штука в том что наша память устроена таким образом что мы хорошо помним 2 вида информации:
    1. Что-то очень яркое и эмоциональное.
    2. То чем постоянно пользуемся.

    Всё остальное оседает где-то очень глубоко или забывается, так как нейроны в мозгу постоянно обновляют связи, то есть мы не можем как жесткий диск записать в мозг информацию и потом её доставать, он постоянно "перемешивается" и ненужное/неиспользуемое удаляется.

    На счет билетов ПДД - вот у меня есть права, я получил их много лет назад и сейчас я на 100% могу сказать что НЕ сдам экзамен - потому что многие нюансы я забыл, но помнил их тогда когда нужно было.

    Так что всё зависит от практики - чем пользуешься то и помнишь и не нужно бояться что-то забывать.
    Ответ написан
    Комментировать
  • Нормально ли использовать примеры из документации в своих проектах?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Да.
    Ответ написан
    Комментировать
  • Возможна ли перепривязка типа в DI контейнере ASP.Net Core?

    petermzg
    @petermzg
    Самый лучший программист
    Задайте его типом Transient и в методе фабрике возвращаете нужный инстанс обьекта
    serviceCollection.AddTransient<ITest>((serviceProvider) =>
    {
         return (<условие>) ? new TestClass1() : new TestClass2();
    });
    Ответ написан
    4 комментария