Задать вопрос
  • Как отказаться от навязывания низкоквалифицированной работы?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Если в договорные работы не входила работа по наполнению готового нового сайта контентом или это не было явно указано в условиях договора - Вы не обязаны это делать.

    Самое основное - всегда разделяйте этапность работ: никогда не начинайте выполнять доп. работу не выполнив полностью предыдущую и не получив за неё заранее оговоренную с Заказчиком сумму.

    Лучший сейчас вариант (для Исполнителя) - создать нужную структуру категорий и создать 1-2 страницы, чтобы показать и объяснить Клиенту, как это делать ему самому в дальнейшем.
    Ответ написан
    3 комментария
  • Липпман или Прата?

    ThePyzhov
    @ThePyzhov
    iOS Ninja
    Сам учился по Прате, но могу сказать что лучше читать и Прату и Липпмана. Так больше материала усвоите.
    Ответ написан
    7 комментариев
  • Как учиться новому после рабочего дня?

    petermzg
    @petermzg
    Самый лучший программист
    Так учитесь новому, до начала рабочего дня. Вставайте раньше, учите нужное, затем на работу, а после работы отдых.
    Ответ написан
    7 комментариев
  • Как лучше расхлебать заваренную кашу?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    щас тебе расскажут как можно парить upwork на одну карту Пионера, ага

    у сервисов, гоняющих онлайн деньги есть огроменная проблема - фрод, а фрод на апворке - это не 29,99 как на порнсайте, а 299, 1299 и более
    Чтобы противостоять фроду Апворк просит информации побольше (то же и у Пионера кстати), и все равно, имея новый аккаунт со сканом паспорта, активным номером и отвечающим мужским голосом, никакая система не в состоянии предсказать - кто находится по ту сторону. Поэтому баны "если попался", во всех подобных сервисах - вечные.
    Ответ написан
    Комментировать
  • Почему при выводе на экран через форматы %d и %u получаются числа -14 и 4294967282?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    101010 = 3F216, значит в char запишется F216
    Когда вы пробуете печатать как целое число, то значение приводится к типу int, соответственно получается FFFFFFF216
    Как знаковое (%d), значение FFFFFFF216 = -1410
    Как беззнаковое (%u), FFFFFFF216 = 429496728210
    Ответ написан
    3 комментария
  • Почему при любом значении i, переменная a=1?

    Во-первых, если k != 0, то этого уже достаточно, чтобы всё выражение было true. Это элементарное свойство логического ИЛИ (дизъюнкции).

    Во-вторых, чтобы в итоге было a == 0, нужно, чтобы было i++&&++j == 0, И k == 0, И l++ == 0. Если же хотя бы одно из них не 0, то будет a == 1. Попробуй:

    int i = 0, l = 0, j = 0, k = 0;
    Ответ написан
    Комментировать
  • Какую дорогу в GameDev лучше выбрать?

    TrueBers
    @TrueBers
    Гуглю за еду
    Да не слушай ты этот бред, который пишут: "То бросай, это бросай, вакансий нету, всё пропало!".
    Всё есть, если есть интерес.
    Учить не важно какой движок, они все используют одни и те же концепции, паттерны примерно одинаковые.

    Внезапно(!), но везде есть и текстуры, и спрайты, и шейдеры. И игровой цикл даже есть!
    Изучив один движок, и написав пару игрушек, потом сам поймёшь, когда стоит перейти на что-то более функциональное и удобное. Придёт осознание, каких фич не хватает, и в каких движках они есть, и т. п.

    А все эти анрилы и юнити только ключевыми словами, по сути, отличаются. Ну, и общий дизайн у них чуть более удобен в плане декомпозиции кода, грамотной архитектуры. Но, пока сам не дойдёшь до необходимости использовать эту декомпозицию, ничего особо не выиграешь, только запутаешься. При переходе достаточно будет ознакомиться с паттернами Gang of Four и всё станет ясно более-менее.

    ПС Знаю разработчиков Юнити, которые начинали геймдев с этого движка и в шоке от того, что кто-то программирует не мышкой. Азы оптимизации им просто недоступны, ибо они даже понятия не имеют о нижележащем уровне API. Они искренне удивляются, как это знать чистый OpenGL и писать всё самому, а разве так можно? Точно так же, кстати, удивляются многие кодеры на плюсах: "А зачем мне знать ассемблер? Я с ним не сталкиваюсь никогда..."

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

    А уж, если хочется просто изучить полезный скилл зарабатывания денег и как зомби рубить бабки, то тут, как описали выше, 2 варианта по сути: Unity (C#), Unreal (C++). По ним вакансий немерено.
    Ответ написан
    4 комментария
  • Как бороться с плагиатом мобильного приложения?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Вы базу защищали в роспатенте или оформляли авторское свидетельство через депонирование кода и документации?
    Если нет - самое время! logo.svg(сервис проверил лично, 5% скидка!)
    Ответ написан
    1 комментарий
  • Как правильно вызвать функцию другого класса?

    MrNexeon
    @MrNexeon
    Это называется функция обратного вызова, или Сallback

    Существует достаточно много способов для реализации коллбеков, но самым современным решением в C++ является функтор.

    Функтор, или функциональный объект - это просто класс с перезагруженным оператором (). Стандартная библиотека уже включает в себя интерфейс для удобного создания и использования функторов - std::function

    В действии:

    #include <functional>
    
    void deleteAllItems(int); // <- функция, которую нужно вызвать
    
    std::function<void(int)> foo; // <- функтор
    
    foo = deleteAllItems; // <- создание коллбека
    
    foo(); // <- вызов функции deleteAllItems(int);
    Ответ написан
    2 комментария
  • Как сохранить подгружаемую страницу полностью?

    @khrisanfov
    Программист
    Страницу подгружает код на JavaScript, скорее всего ответ поступает в виде JSON, далее формируется страница на основе поступивших данных, поэтому получить подгружаемую часть в виде HTML у вас не получится. Если вам нужны конкретные данные, а не html-код, то ответ в JSON подойдет.
    Ответ написан
    Комментировать
  • Какие есть IDE для питона не на Java?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    Ответ написан
    Комментировать
  • Какие можете дать советы по постоянной работе в ночное время?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    После ночной работы ОБЯЗАТЕЛЬНО: хорошее питание и полноценный сон.
    А в остальном - никаких проблем абсолютно!
    Ответ написан
    2 комментария
  • В чём перевозить настольный компьютер?

    eapeap
    @eapeap
    Сисадмин, Беларусь
    О каком транспорте речь? Машиной, в поезде, самолетом в багаже, ...?
    О каком компе речь? Офисный комп, игровой комп с тяжеленными видюхой и процессорным кулером, игровой комп с водяным охлаждением, ...?
    Может, есть смысл взять с собой только "потроха", а корпус купить/найти на месте? Или потроха взять в ручную кладь в самолет, а корпус набить барахлом как чемодан и в багаж?
    Монитор тоже везете?
    Давайте подробности - будут более внятные рекомендации.
    Ответ написан
    Комментировать
  • Как запретить chrome делать screenshot рабочих столов?

    NeiroNx
    @NeiroNx
    Программист
    Запускайте браузер в виртуальной машине - они получат скриншот стола виртуальной машины.
    Ответ написан
    Комментировать
  • Как устранись ошибку с вложенными спецификаторами имени?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    name specifier 'Vector3<V>::' for declaration does not refer into a class

    Компилятор прав. У тебя нет такого типа. Есть тип Vector3<V,T>, с двумя параметрами в шаблоне.
    Можно написать так:
    template <class V, typename T>
    Vector3<V> &Vector3<V, T>::operator+=(const Vector3<V> &addVector) {
        this->x += addVector.x;
        this->y += addVector.y;
        this->z += addVector.z;
        return *this;
    }
    Ответ написан
    2 комментария
  • Как устранись ошибку с вложенными спецификаторами имени?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Шаблонные типы нужно определять полностью в хэдере.
    Ответ написан
    1 комментарий
  • Как называется механизм с доводящей якорь контактов пружиной?

    eapeap
    @eapeap
    Сисадмин, Беларусь
    Механизм мгновенного действия, вроде как. Или - предотвращение дребезга контактов.
    dic.academic.ru/dic.nsf/eng_rus/151799/%D0%BC%D0%B...
    Ответ написан
    1 комментарий
  • Как реализовать частичную специализацию для указателя на определённый класс?

    Так как вы хотите специализировать параметры шаблона класса, то придётся специализировать весь класс:

    template <typename Node, typename DataType>
    class List
    {
      Node *head, *tail;
      int count;
    
    public:
      // ...
      void AddHead(DataType data);
    };
    
    template <typename Node>
    class List<Node, Storage_device*>
    {
      using DataType = Storage_device*;
    
      Node *head, *tail;
      int count;
    
    public:
      // ...
      void AddHead(DataType data);
    };

    Теперь для этой специализации класса получится определить AddHead, как у вас.

    Можно обойтись без специализации всего класса, искусственно добавив шаблон в функцию:

    template<typename = std::enable_if<std::is_same<DataType, Storage_device*>>::type>
    void AddHead(DataType data);  // specialized version
    
    template<typename = std::enable_if<!std::is_same<DataType, Storage_device*>>::type>
    void AddHead(DataType data);  // general version

    Правда, я давно не использовал std::enable_if, не гарантирую, что это работает.

    template<typename Node, typename DataType>
    class List {
        //...
    public:
        template<typename = std::enable_if<std::is_same<DataType, Storage_device*>>::type>
        void AddHead(DataType data);
    
        template<typename = std::enable_if<!std::is_same<DataType, Storage_device*>>::type>
        void AddHead(DataType data);
    };
    
    template<typename Node, typename DataType>
    template<typename = std::enable_if<std::is_same<DataType, Storage_device*>>::type>
    void List<Node, DataType>::AddHead(DataType data);
    
    template<typename Node, typename DataType>
    template<typename = std::enable_if<!std::is_same<DataType, Storage_device*>>::type>
    void List<Node, DataType>::AddHead(DataType data);
    Ответ написан
    5 комментариев
  • Какое обьявление массива в c++?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Массив - это непрерывная область памяти (буфер) определенного типа.
    С++ на уровне языка определяет для этого два средства: статические массивы (a[10]) и выделение блоков памяти, на которые можно ссылаться через указатель (int *a = new int[10];)

    Но, в отличие от многих других языков, C++ не котролирует выход за границы массива, в результате чего можно сделать так:

    int a[10];
    a[333] = 5; // запись в ячейку памяти 
    //по адресу 334 * sizeof(int) от начала массива.


    Кроме того, для массивов, расположеных в куче (выделенных с помощью new) нельзя определить их реальные размеры (для статических массивов мы можем сделать sizeof(a)/sizeof(int)). Кроме того передавать многомерные массивы в функции, оперировать с динамическими массивами (изменяющими размер в процессе работы) и многие другие проблемы. Для их решения существует класс std::vector, который дарит нам абстракцию над массивом в хипе.

    PS С С++11 появился еще std::array, который является абстракцией над статическим массивом.
    Ответ написан
    Комментировать