• Почему код выдает ошибку http 451?

    @cicatrix
    было бы большой ошибкой думать
    https://ru.wikipedia.org/wiki/HTTP_451
    Ошибка 451 или «Недоступно по юридическим причинам» (англ. Unavailable For Legal Reasons) — стандартный код ответа HTTP, означающий, что доступ к ресурсу закрыт, например, по требованию органов государственной власти или правообладателя в случае нарушения авторских прав. Был одобрен IESG 21 декабря 2015 года[1] и опубликован как RFC 7725 в феврале 2016 года. Код ошибки является отсылкой к роману Рэя Брэдбери «451 градус по Фаренгейту»[2]. Можно сказать, что код HTTP 451 — это уточняющая версия кода HTTP 403[3].
    Ответ написан
  • В чем преимущество Angular перед Vue или React?

    search
    @search
    мама говорит что я особенный
    Пользовался Ангуляром почти 3 года. Главный плюс Ангуляра в том что это платформа. В ней стандартизированно почти всё: от процесса бутстрепа до процесса деплоя. Включая работу с CLI, тестированием и еще много чем. Это огромный селлинг поинт для проектов корпоративного уровня: когда над проектом трудится много человек из разных стран. Им не нужно договариваться об архитектуре, тестировании, и т.п. потому что Ангуляр предоставляет готовые решения на многие проблемы.

    Лично я бы не стал пихать Ангуляр в проект уровня дэшборда или лендинга. Но для проекта уровня, например, клиент банка, Ангуляр может быть отличным кандитадом.

    Я не пользовался Вью никогда, поэтому не знаю что он предоставляет. Но после где-то двух лет на Реакте (огромный проект с микрофронтендной архитектурой для Dazn) впечатления такие: в целом весело. Очень хорошо подходит для прототипов и небольших проектиков. Но для энтерпрайз проекта я бы не стал его советовать, так как слишком много нерешенных или по-детски решённых проблем. Командам будет сложно договариваться между собой.

    Такие дела.
    Ответ написан
    Комментировать
  • Хайп вокруг ЯП Rust и C?

    vabka
    @vabka
    Токсичный шарпист
    По порядку:
    Насколько критичной проблемой для программиста является ручное управление памятью, которое называют недостатком языка Си?

    С неправильным управлением памятью связано очень много ошибок. Например в хроме вроде около половины CVE с этим связано. Ещё можно вспомнить HeartBleed в OpenSSL, который тоже связан с неправильным управлением памятью.

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

    Да
    разве общее число ошибок не перераспределяется на другие недостатки

    1. Самые сложные в исправлении ошибки - кривое управление памятью и многопоточность, обе их Rust Решает
    2. Нет, ошибки не перераспределяются, это же не тараканы.
    являются ли ошибки с памятью ошибками программиста

    Если управление памятью ручное, то это ошибки, которые допустил разработчик.
    Если управление памятью автоматическое (хоть через GC, хоть через Borrow checker), то это ошибка компилятора/рантайма/языка.

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

    Не обязательно.

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

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Логично сделать 2 учетки.
    соответственно при старте из скриптов запускаются нужные сервисы как то vpn ssh tunnel докер и прочее
    в logout скрипте гасятся
    Ответ написан
    Комментировать
  • Как организовать сравнение переменной с элементом массива?

    Вы привели фрагмент кода
    float value = (float)analogReag(A1)*5*1000/1024;
    int value_int = (int)value_int;
    switch(value_int) {
    case(4442):
    current = 120;

    Во второй строке ошибка? Должно быть int value_int = (int)value;?
    Если да, то зачем интовое значение analogReag переводить во флоат, а потом опять в инт? Разрядность это не увеличит, поэтому можно сделать так:
    //Объявли массив table из 1024 значений
    //Для каждого значения ввели правильный ответ
    int table[] = {12, 34, 64, 33, ..., 954}
    
    //Где-то в коде
    int value = analogReag(A1);
    current = table[value];

    Это уменьшит Вашу таблицу вдвое, выборка будет максимально быстрой. Расплатой послужит некоторая неочевидность заполнения таблицы, т.к. оперировать придется не значением напряжения, а отсчетами АЦП.
    Ответ написан
    1 комментарий
  • Как накидать логику работы будущей программы?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Вы не научитесь писать и проектировать программы, если самостоятельно не набьете на этом шишек.

    Переписывание программы заново - нормальный процесс, называемый рефакторингом. "На берегу", еще до начала написания кода, вы не будете видеть все тонкости и нюансы. Так что хлопанье себя по лбу и отправка кода в корзину = нормальный творческий процесс разработки.

    После нескольких таких заездов по граблям вы получите опыт - ошибки и трудности, с которыми вы начнете сталкиваться будут такие, что ни в книге сказать, ни на StackOverflow прочитать.
    Ответ написан
    1 комментарий
  • Как правильно установить на QT - 5.15.2 плагин wwWidgets?

    Adamos
    @Adamos
    Этой страничке минимум 10 лет. Актуальная версия wxWidgets - 3.14, и скрещивать ее с Qt можно только от очень большого желания создать себе побольше причудливых проблем.
    Уже пытались запилить wxQt - и его развитие довольно быстро ушло в полную стагнацию.

    Так что в рамках одного проекта - либы кьют, либо вэ-икс-виджеты. Не смешивать, и взбалтывать тут тоже не о чем.
    Ответ написан
    6 комментариев
  • Вместо значений выдает -nan(ind). Что делать?

    15432
    @15432
    Системный программист ^_^
    вы (2 * a * c) в скобки-то возьмите,
    а то вы не делите, а умножаете
    Ответ написан
    Комментировать
  • Найти ошибку в сборке кода С++ Visual C++ 2019?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    unresolved external symbol означает что линовщик не может найти функции в *.lib файлах. Вам помимо заголовочных файлов нужно еще указать путь к библиотекам *.lib.
    Ответ написан
    1 комментарий
  • Как крякнуть защищенную программу?

    @cicatrix
    было бы большой ошибкой думать
    Это отдельное направление, которое называется Реверс-инжиниринг.
    Те, кто этим занимается, это действительно, своего рода, "элита", так как там не существует готовых методик, шаблонных решений и пр. Каждая новая программа - чёрный ящик, который надо разобрать и посмотреть, как он работает, при этом ты ничего не знаешь о том, что было на уме у его создателя.
    Разумеется, любая защита обходится, но дело это кропотливое, долгое, требующее хороших знаний языка ассемблера для той линейки процессоров, под который программа написана.
    Для C# существует IL-Spy или похожие дисассемблеры, которые действительно позволяют получить некое подобие исходного кода, но, зачастую, даже имея на руках код (очень часто обфуцированный) предстоит ещё очень долгая, нудная и кропотливая работа только для того, чтобы разобраться, что там вообще происходит.
    Кряк "взлом" программы часто сводится к подмене результата проверки условия. Простой if, казалось бы. Однако найти нужное место в машинном коде или в памяти процесса - очень и очень сложно.

    Сразу говорю, что кракером быстро не становятся. На это могут потребоваться годы наряжённого труда и самообучения (помните - этому никто не сможет научить, этому можно только научиться самому), методом проб и ошибок. А каждый новый взлом - это новая задача, требующая новых знаний и совсем других подходов.
    Ответ написан
    Комментировать
  • C++ WinForm Как правильно вывести массив структур переданный через указатель?

    @res2001
    Developer, ex-admin
    base[ind].birth.month
    Вообще и остальные поля нужно выводить через точку.
    Кроме того, если приведенный код ch_kol() - это реально все что есть в функции, то это не верно. Вы в ch_kol возвращаете указатель на локальную переменную, как только отработает return этот указатель станет не действиетльным, т.к. массив base перестанет существовать после выхода из функции.
    Подобное определение массива baseProgr base[max];, если max не константа приводит к объявлению массива переменной длины (VLA). Строго говоря С++ не поддерживает VLA, т.к. это фишка Си. Но некоторые компиляторы (gcc) при включенных расширениях (по умолчанию включено) позволяют их использовать. Но этот код становится не переносимым, т.к. при других опциях компилятора или на другом компиляторе код может не собраться.
    Ответ написан
    4 комментария
  • Как перевести строку бинарного файла в UTF8?

    Adamos
    @Adamos
    Ты не в С++ еще очень зеленый, а в информатике в целом.
    Упорно долбишься в принципиально неверно поставленную цель.
    Единственный способ, которым ты можешь наглядно отобразить бинарную информацию и ничего не потерять - это hexdump (отображение каждого символа его шестнадцатеричным кодом). Собственно, все так и делают еще с прошлого века.
    Аналогично, работа с бинарными данными принципиально отличается от работы со строками. Ты получаешь байты и обрабатываешь байты. Если какой-то кусок этих байтов выстраивается в строку в какой-то кодировке - копируешь этот кусок, присваиваешь его строке, и тогда уже можно использовать библиотеки, перекодирующие из одной кодировки в другую. Но пока у тебя файл, в котором навалено разных данных и служебной информации - разбирать его надо именно побайтово.
    Ответ написан
    2 комментария
  • Какой IDE выбрать вместо Borland C++?

    @maximsemin23
    Лучшая IDE - Visual Studio
    Попробуйте к ней привыкнуть пару дней
    Почти все c++ программисты сидят Visual Studio
    Ответ написан
    Комментировать
  • Как создать проект с++ на основе готового кода?

    @rPman
    Это известная беда кроссплатформенности или кроссфреймворков, в мире существует столько полусовместимых и там столько нюансов, и кстати это беда не только у c++ но и с другими языками, только реже.

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

    У этого проекта вики такая инструкция написана и даже видео выложили
    Ответ написан
    Комментировать
  • Как Исправить код?

    MvcBox
    @MvcBox
    Software Developer [C/C++/JS(for Node.js)/etc]
    Вы не тем способом пытаетесь решить проблему.
    Подсказка:
    Q2K4YwETvJexBA.jpg
    Ответ написан
    3 комментария
  • Как вращать кривую Безье в функций на WinAPI?

    Nipheris
    @Nipheris Куратор тега C++
    1. Рисовать что-либо нужно в WM_PAINT. Но вы НЕ должны вызывать повторную инвалидацию в WM_PAINT, да и работать с таймером нежелательно.
    2. По срабатыванию таймера (т.е. или в WM_TIMER, или в колбэке, как вам удобно) нужно делать инвалидацию окна с помощью InvalidateRect или UpdateWindow. Вы НЕ должны рисовать в обработчике таймера.

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

    Это удобно тем, что например если окно скрыто, Винда не посылает вам WM_PAINT и вы ничего не рисуете вообще, экономя ресурсы машины.

    Если вы хотите добиться анимации, вам нужно регулярно (раз в N мс) заявлять Винде, что у вас устарело содержимое окна.
    Ответ написан
    Комментировать
  • Можно ли запустить bash-скрипт в текущем процессе?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Однако я не могу получить доступ к любой из инициированных скриптом переменных в текущем процессе. Как я понимаю, это происходит потому, что скрипт выполняется отдельным процессом, а возможности экспортировать переменную на уровень выше нет.

    Непонятно, каково отношение между "скриптом" и "текущим процессом". Кто кого запускает?

    Если скрипт запускает процесс, то переменные окружения надо экспортировать, как сказано здесь. Если процесс запускает скрипт как другой процесс, то никакие изменения в переменных окружения сделанные скриптом в процессе видны не будут.
    Ответ написан
    Комментировать
  • Как заставить работать код C++ правильно?

    @none7
    Могу предположить, что cin >> K[i].year; не читает завершение строки(ведь они не число) и оно прилетает на ввод следующего имени. Вообще в нынешнем с++ использование указателей и неуправляемых массивов — ересь.
    #include <windows.h>
    #include <iostream>
    #include <vector>
    #include <string>
    #include <sstream>
    #include <algorithm>
    #include <ctime>
    
    using namespace std;
    
    const int UserCount = 3;
    struct Worker { // начало объявления структурного типа Worker
        string surname; //объявление поля «фамилия работника»
        string position; //объявление поля «название занимаемой должности»
        unsigned short int year; //объявление поля «год поступления на работу»
    
        static bool insensitive_compare(const Worker& a, const Worker& b)
        {
            string ta(a.surname), tb(b.surname);
            transform(ta.begin(), ta.end(), ta.begin(), [](unsigned char c) { return std::toupper(c); });
            transform(tb.begin(), tb.end(), tb.begin(), [](unsigned char c) { return std::toupper(c); });
            return ta < tb;
        }
    }; //конец объявление структуры Worker
    
    template<class T> void getline_i(istream& is, T& o)
    {
        string s;
        while (true)
        {
            getline(is, s);
            stringstream(s) >> o;
    
            if (s.length() < 1 || !isdigit(s[0]))
            {
                cout << "Ошибка. Значение должно быть числом: ";
                continue;
            }
            else
            {
                break;
            }
        }
    }
    
    int main()
    {
        system("chcp 1251");
        int n = 3; // объявление константы n — числа элементов типа «Worker»
    
        bool people = false;
    
        time_t rawtime;
        struct tm _tm;
    
        time(&rawtime);
        gmtime_s(&_tm, &rawtime);
        unsigned short int now_year = _tm.tm_year + 1900, seniority; // объявление переменных now_year — текущий год и seniority — стаж
        vector<Worker> K;
        Worker temp;
    
        for (int i = 0; i < UserCount; i++)
        {
            cout << "Фамилия и инициалы: ";
            getline(cin, temp.surname);
    
            cout << "Название занимаемой должности: ";
            getline(cin, temp.position);
    
            cout << "Год поступления на работу: ";
            getline_i(cin, temp.year);
    
            cout << "\n";
            K.push_back(temp);
        }
    
        cout << "Введите стаж работы(лет): ";
        getline_i(cin, seniority);
    
        cout << endl;
    
        for (auto current : K)
        {
            if ((now_year - current.year) > seniority)
            {
                cout << current.surname << endl;
                people = true;
            }
        }
    
        if (people == false) 
            cout << "Нет таких работников!" << endl;
    
        cout << endl;
        cout << "Список работников в алфавитном порядке" << endl;
    
        sort(K.begin(), K.end(), Worker::insensitive_compare);
    
        for (auto current : K)
            cout << current.surname << endl;
    
        system("pause");
        return 0;
    }
    Ответ написан
    Комментировать
  • Как убрать консоль при выполнении кода C++?

    15432
    @15432
    Системный программист ^_^
    Изменить в студии тип проекта с Console на Win32
    Ответ написан
    8 комментариев
  • Системе не удается найти указанный путь?

    flapflapjack
    @flapflapjack
    на треть я прав
    Если папка в имени содержит пробелы, ее название нужно брать в кавычки.
    Ответ написан