• Где программисту искать стартап-идею?

    @Meyvorrrata
    1) Потребность
    2) Ради прикола (так взлетели многие проекты)
    3) Для себя
    4) Идея не приходит за пару секунд, я бы вам посоветовал сесть и каждый день писать идеи (минимум 30-50 штук) как улучшить мир пусть сначала будут и бредовые, но как говориться, раз в год и палка стреляет
    Ответ написан
  • Хорошие уроки по C++?

    @oleg_ods
    На ютубе есть очень хороший канал SimpleCode.

    + книги
    + свои проекты(пусть даже кривые и бредовые)
    + StackOwerFlow
    + Google

    И будет тебе счастье.

    P.S. Единственное не трать время на видео и «книги» с названиями типа «Стань разработчиком за 15 минут» )))
    Ответ написан
  • Как правильно передать из ajax в php?

    gzhegow
    @gzhegow
    Думал, стану умнее, когда адаптируюсь, но нет
    Так у тебя не аякс ругается, а видимо сама страница когда ты её без аякса запрашиваешь, потому что туда ничего не передали.

    Проблема комплексная.

    Не выводи в ответ ничего кроме редиректа, когда данные отправляются постом. Нефиг. Есть Гет для этого. Нет, это не значит что данные нужно отправлять гетом. Это значит что когда ГЕТ - отдавай верстку. А когда пост - сохраняй данные. Если нужно с Гета на Пост перейти и не потерять - есть сессия (привязана к тому кто запрашивал) или база (для всех, придется ввести признак, как ты поймешь что это его). Этот совет актуален когда ты запрашиваешь страничку через браузер.

    В случае с Аяксом (параллельной отправкой) действуют правила API - компьютеры общаются между собой, им плевать что ты хотел нарисовать, они понимают только текст. Причем не понимают - они его передают и обрабатывают. А если еще точнее то они передают пакеты и им даже на текст плевать, но с текстом тебе привычнее работать. То есть в ответ на Пост пусть вылетает JSON с массивом а не верстка. Верстку строим потом на клиенте.

    В третьих можно писать так $id = $_POST['id'] ?? null; если пыха (не бэха) семерка. На крайняк
    $id = (! empty($POST['id']) ? $_POST['id'] : null;
    Ответ написан
  • Оцените верстку?

    Anitamsk
    @Anitamsk
    Frontend Dev
    Ошибок довольно много. Из тех что я увидела:
    1. Ваш контент не центрирован, используйте нативный центровщик либо библиотеки типа Bootstrap4, делайте отдельный div и закидывайте его туда, сейчас ваш контент расползается, и это учитывая то, что у вас просто Desktop версия, не адаптивная.
    2. Название классов - когда вы пишите код, старайтесь использовать методологию, например БЭМ, пишется не header_menu_button, а примерно header__menu-button, header__menu-button--active, 2 нижних подчеркивания это элемент, две черты после элемента - модификатор, и ваш код будет более читабельный.
    3. Старайтесь думать о том что бы не писать код 2 раза, если ваша кнопка на сайте будет повторяться 2 раза, то для кнопки пишется базовый стиль допустим site-button, а в header__menu-button вы уже дописываете стили позиционирования и в итоге ваша конструкция имеет вид
    4. Научитесь использовать правильную вложенность, вы должны представлять сайт как лего, правильно перебросив контент по блокам, так как если у вас будет адаптивная верстка, вам нужно продумывать еще и адаптацию этих блоков к экранам с меньшим разрешением.
    5. И последнее, скачайте какие нибудь платные курсы - бесплатно, допустим HTML Academy или другой конторки обучающей новичков, и вам будет легче учится верстать правильно
    Ответ написан
  • Как можно получить текущее значение "form-control"?

    ematveev
    @ematveev
    PHP разработчик / руководитель / писатель
    нужно использовать JavaScript, который при выборе значения в первом комбобоксе - подставит его во второй и обновит его
    Ответ написан
  • Как восстановить знания по C++ на сегодняшний день?

    @Koss1024
    0. Прочитайте Страуструпа последнее издание (англ). Если язык вы знали то это лучшая книга чтобы обновить знания

    1. C++11 C++14, в производстве чаще пока еще С++03
    2. Лучший компилятор clang++ (поддерживает любой стандарт и любую платформу)
    3. boost это набор библиотек на все случаи жизни самый хорошо сынжинереный. Стоит писать не под него а с использованием
    4. пункт 3
    5. C++ для задач требующих точного понимания стоимости каждой операции, это embedded DSP Server computing
    Math много чего еще

    Учтите, С++ это инструмент который нужно учить постоянно

    Дополню
    -----------
    С++ мультипарадигменный
    А так же много уровней абстракции поддерживает

    На нем можно писать как на чистом С - это самый низкий уровень
    Можно ООП и абстракции
    Можно паттерны
    А можно функциональный стиль

    С С++ в этом и проблема что знать нужно очень много.

    Я могу сказать что я читал на протяжении своей карьеры
    Прежде всего я умел программировать и имел представление об алгоритмах и модели памяти
    (что такое указатели, алокация удаление и т д)

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

    Потом Страуструп (тогда это было издание по стандарту 03). Здесь я дополнил свои знания деталями которые пропустил при самостоятельном изучении. Тут стоит отметить что Страуструп весьма странная книга и написана тяжело. Секцию же ООП вообще там лучше не читать (самая последняя).

    Где-то рядом я прочитал Гради Буч - ООА и ООП с примерами применения. Очень хорошая кика чтобы понять к чему все это придумали вообще. Сильно выправляла мозги

    Потом был Керниган и Ричи Язык программирования С. Эту я прочитал просто от безделья, но теперь считаю что это было необходимо. Здесь можно понять зачем придумали именно С. И насколько там все просто, задумано.

    Следом пошли техники: Герб Саттер Решение сложных задач на С++ и Новые сложные задачи С++
    читать обязательно, разобрано много костылей и проблем языка. Дано очень много дельных советов

    С Мейерс - Эффективное использование С++ туда же. Прекрасный разбор.

    Макконнел - Совершенный код. Очень крутая книга. Она отшлифует уже почти бриллиант.

    Помимо всего прочего я работал над проектами и постоянно читал всяческие форумы, блоги, дискутировал с коллегами. Решал задачки разных собеседований.

    Отдельного внимания заслуживает книга Банды четырех (Паттерны).
    Я ее с трудом дочитал, читал ее я уже аж после всего перечисленного и после примерно 7-8 лет опыта С++.
    Я уже давно был Senior dev. и наконец нашел таки время и для нее. Она мне показалась до ужаса скучной и очевидной, поскольку почти все предложенные решения я придумывал и сам неоднократно. Кроме того, большинство этих решений неоправданно тяжелы, и очень запутывают код. Тема холиварная и спать надо много, но я пожалуй остановлюсь только на том что в моей практике, худшими с точки зрения цены ошибок были разработчики которые учились начиная с этой книги. Их код недодерживаем запутан и очень плохо поддается рефакторингу. Такой код имеет самые долго отлеживаемые ошибки.

    Где-то рядом я прочитал Фаулера - Рефакторинг. Вполне себе неплохо. Рекомендую. Но тут стоит к опытному коллеге обратиться. Идея то проста Тесты - Маленькие комиты - YAGNI KISS и SRP но детали лучше познавать на практике.
    У меня был хороший лид, который меня в конце концов научил :)

    Совсем забыл! Александреску же! Скажем так - не так страшен Александреску как тот кто его начитался :)
    Фана доставил много, а так же дал возможность на эти игрища потерять около 3-х месяцев работы. Даже не знаю
    стоит ли читать. Наверное стоит, но нужно помнить что на практике лучше не использовать если вы уже не эксперт.

    Остальное С++ не касается, но чтобы стать профессионалом Вам потребуются алгоритмы и структуры данных (Кормен, Кнут), многопоточность (Энтони Уильямс), другие языки(питон, JS, java), оптимизация и профилирование.
    и много много разных специфических знаний

    Удачи Вам в этом нелегком но, безусловно, интереснейшем пути :)
    Ответ написан
  • Как осуществить вывод динамических параметров из таблицы базы данных?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    PIVOT.

    Дополнение

    Для отображения непостоянного списка атрибутов можно использовать табличное представление:
    5cc808e03cc1d203700022.png
    или:
    5cc808ee2c0f7926631262.png
    Ответ написан
  • Почему не работает перевод из 2 в 10 и обратно?

    @res2001
    Developer, ex-admin
    В DecBin() 2 ошибки:
    1. Вы заполняете строку с конца, а нужно с начала. Обратите внимание на вывод 173 (если не брать во внимание мусорный хвост, о котором в п.2) - ответ правильный, только записанный наоборот.
    2.После преобразования нужно добавить завершающий 0, т.к. на выходе у вас Си строка. Соответственно памяти нужно выделять на 1 байт больше необходимого. Из-за отсутствия завершающего нуля вывод не заканчивается в конце вашего буфера, а продолжает выводить содержимое памяти после буфера, пока не встретит нулевой байт, отсюда и мусор в конце.
    Можно и не добавлять нулевой байт, но в этом случае не нужно относится к возвращаемому DecBin() указателю как к строке, а работать с ним как с массивом байт. Т.е. выводить строго заданное количество байт.
    Ответ написан
  • Почему не работает перевод из 2 в 10 и обратно?

    @vanyamba-electronics
    #include <iostream>
    #include <cstring>
    
    using namespace std;
    
    unsigned int BinDec(char* bin)
    {
        unsigned int rez(0), n;
        for(n = 0; n < strlen(bin); ++n) {
            rez <<= 1;
            rez += bin[n] - '0';
        }
        return rez;
    }
    
    void DecBin(unsigned int number, char* result)
    {
        int n;
        for(n = 0; n < 32; ++n) {
            result[n] = (number & 0x80000000) ? '1' : '0';
            number <<= 1;
        }
        result[32] = 0;
    }
    
    int main() 
    {
        char bin[] = "10110110100111100010010110111010";
        unsigned int nn = BinDec(bin);
        cout << bin << " = " << nn << endl;
    	
        char *binn = new char[33];
        DecBin(nn, binn);
        cout << nn << " = " << binn << endl;
    	
        if (strcmp(bin, binn) == 0)
            cout << "OK" << endl;
        else
            cout << "False" << endl;
        delete [] binn;
        return 0;
    }
    Ответ написан
  • Почему не работает перевод из 2 в 10 и обратно?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Используйте стандартные функции, коль скоро у вас есть Qt. QString умеет и в число и из числа, с указанием системы счисления. Смотрите методы toInt и number.
    Ответ написан
  • Как можно заархивировать файл через QT?

    Zoominger
    @Zoominger
    System Engineer
    средствами QTCreator

    А?

    По теме - гораздо проще использовать встроенный архиватор (просто передаём программе zip или rar нужные ключи), но для этого нужно, чтобы в системе был установлен архиватор.
    Ответ написан
  • Как получить размер файла?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    1) удостоверьтесь, что файл действительно существует. Для этого open возвращает bool.
    2) лучше используйте QFileInfo.
    Ответ написан
  • Как правильно искать поля типа NULL через LIKE?

    Melkij
    @Melkij
    PostgreSQL DBA, contributor
    Вы начните с вопроса - а что вы получить-то хотите? Исходя из этого уже конструируйте запрос. Потому что все 3 запроса в вопросе полностью корректны и именно что и должны вести себя различным образом.

    С вариантами типа функция(поле) like 'pattern' - аккуратнее. Для большинства субд это обозначает сознательный отказ от использования индексов по этому полю. Для like '%pattern%' впрочем это и так справедливо для любых btree, не префиксовый поиск вести по btree штука закономерно не эффективная.

    PS: и ой большое опасение у меня по этому фрагменту что у вас sql инъекции открыты во всю свою ширину.
    Ответ написан
  • Как правильно искать поля типа NULL через LIKE?

    duhbox
    @duhbox
    null нельзя сравнить с null
    Для обхода нужно заменить null на что-то другое, например на пробел, и после можно будет сравнивать.
    Пример для oracle:

    SELECT * FROM nametable WHERE nvl(col1,' ') like '%"+ui->text_pole_1->text()+"%';

    сам пустой поисковый запрос также нужно заменить на пробел.
    Ответ написан
  • Как правильно искать поля типа NULL через LIKE?

    AnatolTh
    @AnatolTh
    Full Stack Developer
    В T-SQL есть IsNull()
    SELECT * FROM nametable WHERE IsNull(col1,'') like '%"+ui->text_pole_1->text()+"%' ;

    В MySQL есть IfNull()
    SELECT * FROM nametable WHERE IfNull(col1,'') like '%"+ui->text_pole_1->text()+"%' ;


    Так же есть COALESCE() и NVL()
    SELECT * FROM nametable WHERE coalesce(col1,'') like '%"+ui->text_pole_1->text()+"%' ;

    SELECT * FROM nametable WHERE nvl(col1,'') like '%"+ui->text_pole_1->text()+"%' ;


    В данных примерах мы NULL заменили на пустую строку
    Ответ написан
  • Кракозябры в mysql базе данных?

    @romkaby
    Попробуйте на сайте сразу после подключения вставить запрос
    SET NAMES utf8
    Ответ написан
  • Почему запрос объединяет не те строки?

    Delgus
    @Delgus
    Лучше Join'ы для таких запросов использовать
    SELECT 
        ships.sudovlad,
        s1.gruz_pass as summa,
        EXTRACT(YEAR FROM s1.data_vih_p_ot) as years,
        ((s2.gruz_pass - s1.gruz_pass) / s1.gruz_pass * 100) AS percent,
        s2.gruz_pass as summa2,
        EXTRACT(YEAR FROM s2.data_vih_p_ot) AS years2
    FROM ships
    LEFT JOIN ships as s1
    ON ships.sudovlad = s1.sudovlad AND EXTRACT(YEAR FROM s1.data_vih_p_ot)=2017 AND s1.sudovlad IN ('Русфлот, ООО', 'АрктикТранс ОИЛ, ООО','pere')
    LEFT JOIN ships as s2
    ON ships.sudovlad = s2.sudovlad AND EXTRACT(YEAR FROM s2.data_vih_p_ot)=2018 AND s2.sudovlad IN ('Русфлот, ООО', 'АрктикТранс ОИЛ, ООО','pere')
    GROUP BY sudovlad
    Ответ написан
  • Как составить mysql запрос оптимальнее?

    @ghostiam
    На Go писатель, серверов пинатель.
    WHERE 
    (
        `phone1` IN ('83519025115','87051036787', '88142531260', ...) 
      OR
        `phone2` IN ('83519025115','87051036787', '88142531260', ...)
    )
    Ответ написан
  • Почему Where IN выводит только одну строку?

    Delgus
    @Delgus
    Я не вижу строки 'Русфлот, ООО' 0 2018 0 0 2017 во втором выводе
    Я вижу 'Русфлот, ООО' 0 2017 0 0 2017 во втором выводе

    Может поэтому при первом запросе и не возвращает эту строку?

    Причина в
    GROUP BY EXTRACT(YEAR FROM data_vih_p_ot)
    Ты делаешь в первом подзапросе group by по году и он возвращает
    Русфлот, ООО 0 2017
    АрктикТранс ОИЛ, ООО 0 2018

    Есть такой вариант запроса, не знаю подойдет ли
    SELECT 
        reservtable.sudovlad,
        reservtable.summa,
        reservtable.years,
        ((reservtable2.summa2 - reservtable.summa) / reservtable.summa * 100) AS percent,
        reservtable2.summa2,
        reservtable2.years2
    FROM(
    SELECT sudovlad,gruz_pass as summa,EXTRACT(YEAR FROM data_vih_p_ot) AS years
    FROM ships
    WHERE EXTRACT(YEAR FROM data_vih_p_ot) = 2017 AND sudovlad IN ('Русфлот, ООО', 'АрктикТранс ОИЛ, ООО')
    GROUP BY sudovlad) reservtable,
        (SELECT sudovlad,gruz_pass as summa2,EXTRACT(YEAR FROM data_vih_p_ot) AS years2
    FROM ships
    WHERE EXTRACT(YEAR FROM data_vih_p_ot) = 2018 AND sudovlad IN ('Русфлот, ООО', 'АрктикТранс ОИЛ, ООО')
    GROUP BY sudovlad) reservtable2
    GROUP BY sudovlad
    Ответ написан