• Что плохого в количестве коммитов чуть больше, чем за которое могла решиться задача на самом деле?

    Xuxicheta
    @Xuxicheta
    инженер
    В личных тараканах ревьюера. Если уж его так парят коммиты при слиянии PR можно слепить коммиты в один.

    Наоборот, чем меньше изменений в коммите. тем лучше. Я вот страдаю обратным, в конце дня делаешь коммит, потом не разберешься во всем этом.
    Ответ написан
    1 комментарий
  • Что такое Model Driven Design? И отличается ли от Domain Driven Design?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Domain Driven Design -> Проблемно-ориентированное проектирование
    Вот книжка: Domain Driven Design: Tackling Complexity in the Heart of Software (Eric Evans)
    Смысл такой что нужно сосредоточиться на предметной области, а не на употребляемой технологии.

    Model Driven Design: вроде такое словосочетание не употребляется, а имеется ввиду Model Driven Architecture (Архитектура, управляемая моделью)
    вот гайд консорциума, который эту шнягу продвигает: www.omg.org/mda/mda_files/Cephas_MDA_Fast_Guide.pdf
    смысл такой, что спецификация устройства системы не привязана к реализации на конкретной технологии.

    Получается что эти две парадигмы могут использоваться вместе.
    Ответ написан
    Комментировать
  • Изучил C#, написал пару своих проектов. Стоит ли переходить на С++?

    Да, переходи
    Ответ написан
    Комментировать
  • Как реализовать кастомный тип данных в c++ без использования нативной системой типов?

    @Mercury13
    Программист на «си с крестами» и не только
    На самом деле такое возможно единственным методом: через ассемблерные вставки. Чем-нибудь типа
    mov ecx, [data]
    mov byte ptr[ecx], 5

    Штатные типы позволяют, в числе прочего, интерпретировать те или иные байтовые данные разными методами. Вернёмся к одному байту. Он может быть…
    • числом
    • восемью флагами
    • четырёхбитовым числом и четырьмя флагами
    Ответ написан
    Комментировать
  • Как реализовать кастомный тип данных в c++ без использования нативной системой типов?

    @vanyamba-electronics
    Сперва создаём класс, хранящий размер данных в байтах. Это нужно для того, чтобы определить наш тип как шаблон, для реюзабельности кода.
    class MySize
    {
    public:
        static const unsigned int size;
    };

    Пусть будет 3 байта, например:
    const unsigned int MySize::size = 3;
    Затем определяем сам тип:
    template <typename SizeT>
    class MyValueT
    {
    protected:
        void* m_value;
    public:
        MyValueT() {
            allocate_value();
        }
        void allocate_value() {
            m_value = malloc(SizeT::size);
            if (m_value == NULL)
                throw "Can't allocate MyValueT object";
            if (mlock(m_value, SizeT::size)) {
                free(m_value);
                throw "Can't lock MyValueT object";
            }
        }
        virtual ~MyValueT() {
            munlock(m_value, SizeT::size);
            free(m_value);
        }
        MyValueT(const MyValueT& src) {
            allocate_value();
            memcpy(m_value, src.m_value, SizeT::size);
        }
        operator int () const {
            int ret_val = 0;
            char* p = (char*) m_value;
            char* pv = (char*) &ret_val;
            for (unsigned int n = 0; n != SizeT::size && n != sizeof(int); ++n) {
                *pv = *p;
                p++;
                pv++;
            }
            return ret_val;
        }
        MyValueT& operator = (int val) {
            char* p = (char*) m_value;
            char* pv = (char*) &val;
            for (unsigned int n = 0; n != SizeT::size && n != sizeof(int); ++n) {
                *p = *pv;
                p++;
                pv++;
            }
            return *this;
        }
    };

    А вот, как его можно использовать в коде приложения:
    int main() 
    {
        MyValueT<MySize> my_value;
        int n_value = 0x7FF5F4F3;
        my_value = n_value;
        cout << hex << n_value << " " << my_value << endl;
        return 0;
    }

    Посмотреть, как он работает, можно на Joodle.com - Проект на Joodle.com.
    Ответ написан
  • Как организовать учетную запись клиента в игре?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    У нас на обоих клиентах должно по идее одно и то же отображаться?

    Вовсе не обязательно. Всё зависит от того, что вы хотите и как устроен ваш сервер. Можно не позволять так делать, либо можно разрешить двум разным людям (устройствам) входить под одним и тем же логин\паролем, но выступать как два разных человека (хотя никнейм будет одинаковый). Как сделаете, так и будет у вас. А сделать можно, что душе угодно.

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

    В любом случае вам нужно освоить понятия (игровая) сессия. Потому что она привязывается к устройству. Обычно, в момент авторизации по логину\паролю устройству выдаётся некий ключ (токен), и далее доступ осуществляется по нему. Для пущей надежности можно нумеровать пакеты, тогда сессию вообще не получится перенести на другое устройство, но это уже тонкости безопасности, в простом варианте это совсем не обязательно.

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

    В общем, ответ: 1) сделайте сессии 2) кикайте из старой сессии при создании новой.
    Ответ написан
    5 комментариев
  • Где найти примеры "идеального" кода на C++?

    Zoominger
    @Zoominger
    System Integrator
    Идеальный код пишете вы, плохой - все остальные (:
    Ответ написан
    Комментировать
  • Как дать оценку проекту?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Без внятного ТЗ - оценка ХЗ.
    Ответ написан
    Комментировать
  • Как дать оценку проекту?

    @Kostik_1993
    Web Developer
    Обычная практика современного мира разработки. Расчёт простой вы сейчас называете стоимость не вдаваясь в подробности, так как их не знаете, с вами начинают работать, конечно в процессе работы возникают доп работы за которые никто не будет платить так как вы договорились о цене изначально. То есть все проблемы ложатся на ваши плечи. Посмотрите в каждой задаче на фрилансе одна и таже ситуация, сначала оцените потом ТЗ будет
    Решение одно. Или почасовая оплата или пусть дают расширенное ТЗ, в противном случае мой совет не работать с таким заказчиком
    Ответ написан
    1 комментарий
  • Почему прямоугольник не является экземпляром класса квадрата?

    @ProkletyiPirat
    ПМСМ авторы привели ЖУТКО НЕПРАВИЛЬНЫЙ пример ООП
    Смотрите
    1)квадрат,
    1.1)имеет переменную A="длина сторон"
    1.2)Имеет функцию площади F=(A^2)

    2)прямоугольник
    2.1)имеет переменную A="длина"
    2.2)имеет переменную B="ширина"
    2.3)Имеет функцию площади F=(A*B)

    3)четырёхугольник
    3.1)имеет переменную A="длина стороны 1"
    3.2)имеет переменную B="длина стороны 2"
    3.3)имеет переменную C="длина стороны 3"
    3.4)имеет переменную D="длина стороны 4"
    3.5)имеет угол Q="угол между сторонами 1 и 2"
    3.6)имеет угол W="угол между сторонами 2 и 3"
    3.7)имеет угол E="угол между сторонами 3 и 4"
    3.8)имеет угол R="угол между сторонами 4 и 1"
    3.9)функция высчитывания площади самопересекающегося четырёхугольника(точнее функция высчитывающая площадь с учётом того что четырёхугольник может быть самопересекающимся)

    А вот теперь ВНИМАНИЕ: В каждом из этих объектов есть что-то что не нужно(излишне) другим объектам, ПОТОМУ данные объекты(классы) не могут быть "наследуемыми" друг от друга.

    А как правильно?
    А правильно сделать "интерфейс"("интерфейс" - это название шаблона(паттерна) проектирования) под названием "объект имеющий площадь" в котором объявить функцию "получить площадь" и сделать 2\3\4\N классов которые будут наследовать данный интерфейс и реализовывать данную функцию.

    p.s.Вообще мне в понимании ООП и того "нахрена это нужно" очень сильно помогли статьи на тему паттернов проектирования, и лично я считаю что одно без другого преподавать нельзя.
    Ответ написан
    2 комментария
  • Как лучше искать путь среди окружностей?

    tsarevfs
    @tsarevfs
    C++ developer
    Достаточно легко доказать что пути будут лежать по общим касательным и дугам между точек касания для непроходимых сфер. Можно строить динамический граф и использовать A*.
    C тормозящими кругами может быть сложнее. Если они не могут пересекаться с препятствиями, то их выгоднее обходить по дуге, которая не более чем в pi/2 (~1.5) длинее хорды.
    Если могут, то если аналитическое решение найти трудно, я бы добавил несколько точек на границе медленных зон в граф и искал приближенное решение.
    Про непроходимые круги: https://redblobgames.github.io/circular-obstacle-p...
    Ответ написан
    2 комментария
  • Хватит ли плагина google translate?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    В 1Сники можно податься.
    Ответ написан
    1 комментарий
  • Как обстоят дела с единым протоколом обмена мгновенными сообщениями (аналог email)?

    Zoominger
    @Zoominger
    System Integrator
    есть протокол email

    Нет такого протокола.

    Почему нет единого протокола, как с email?

    Был такой, XMPP назывался. Тут проблема не в протоколе, скорее, а в серверах, где хранятся учётки юзеров.

    Возможно уже были попытки такое сделать?

    Так XMPP же.

    Как обстоят с этим дела?

    Он сдох.

    Почему протокол email не обновился до возможностей мессенджера?

    "Почему на грузовики не ставят гоночные двигатели?". Потому что другие задачи.
    Ответ написан
    7 комментариев
  • Какой самый быстрый язык для бота ВК?

    sergiks
    @sergiks Куратор тега ВКонтакте
    ♬♬
    Ассемблер, Си.
    Но какая разница? Сделайте для начала медленного бота с кучей недостатков.
    У вашего первого бота обязательно должны быть недостатки, иначе неправильно это как-то.
    Ответ написан
    Комментировать
  • Чат на WebSocket с MYSQL бд?

    DevMan
    @DevMan
    Дописать в пример функционал сохранения в бд.
    Всегда ваш, Кэп.
    Ответ написан
    Комментировать
  • Что происходит, когда я подключаю телефон в режиме модема?

    Radjah
    @Radjah
    Гугли по слову "RNDIS".
    Ответ написан
    Комментировать
  • Как внутри программы определить куда вывод идет в терминал или в файл?

    @lil_Toady
    Автор заметил что вывод разный, то что он сам направил вывод в файл он в курсе :)

    Узнать пишем ли мы в терминал можно так:
    isatty(fileno(stdout));

    istty находится в io.h, а fileno в stdio.h

    И ls, действительно смотрит если вывод в терминал - то в одну строку, иначе - в несколько:
    https://github.com/coreutils/coreutils/blob/master...
    Ответ написан
    Комментировать
  • Задачи с собеседований по максимальным числам: как решить?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    регулярки тебе никак не помогут в этой задаче
    вот тут почитай про этот тип задач
    Ответ написан
    1 комментарий
  • Где учить этичный хакинг по С\С++\Python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Таким вещам нигде не учат. Сначала становишься профессиональным программистом с широким кругозором и глубокими знаниями, а потом учишься сам в исследовательском режиме. Чтобы взломать сайт вроде Тостера, надо сначала уметь написать сайт вроде Тостера.
    Ответ написан
    1 комментарий
  • Для чего можно использовать 64 гб оперативки?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    сколько бы у тебя не было памяти, данных, как правило, больше чем оперативки.
    поэтому процесс вычисления делится на этапы, но оперативка тебе позволяет например сохранять в кэше промежуточные шаги вычисления, значительно ускоряя передачу данных между этапами всего вычисления.
    Ответ написан
    Комментировать