Задать вопрос
  • Может ли язык быть быстрее языка на котором сам написан его компилятор?

    @pfg21
    ex-турист
    все зависит не от языка, на котором пишешь, а от эффективности сгенерированного бинарного кода.
    если компилятор генерит хороший и качественный код, то скорость естественно будет хорошей, вне зависимости от скорости генерации онного исполняемого кода.
    обычно наоборот кстати, если в компиляторе включить все опции оптимизации скорости выполнения, то компиляция будет дольше за счет более глубокого анализа

    ну и весьма зависит от качеств писаки, тут даже языки не помогают.

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

    Nipheris
    @Nipheris Куратор тега C++
    он зависит от большого количества so-библиотек.

    У вас два варианта:
    1. Использовать статические варианты библиотек вместо динамических (so) - это то, что предлагает Vitaly.
    2. Продолжать собирать как сейчас, но научиться собирать нормальные пакеты под нужные вам дистрибутивы, с нормальным описанием зависимостей - тогда системный пакетный менеджер при установке вашего пакета поставит все нужные вам зависимости.

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

    Jump
    @Jump
    Системный администратор со стажем.
    почему не могут избавиться от strcpy?
    Ну наверное по той же причине, по которой на кухне до сих пор не могут избавиться от ножа.

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

    doublench21
    @doublench21
    ОБРАТНАЯ СОВМЕСТИМОСТЬ, слышал?
    Нельзя просто взять и удалить эту функцию.
    Именно поэтому добавляют новые и советуют ими пользоваться.

    5aa56215149d7175407375.jpeg
    Ответ написан
    5 комментариев
  • Как сделать, чтобы в WinAPI stdout перенаправлялся, а stderr уходил в никуда?

    @cicatrix
    было бы большой ошибкой думать
    Язык какой?
    На C# это гораздо проще делается, без Win32API вообще.
    На плюсах смотрим структуру STARTUPINFO
    typedef struct _STARTUPINFO {
      DWORD  cb;
      LPTSTR lpReserved;
      LPTSTR lpDesktop;
      LPTSTR lpTitle;
      DWORD  dwX;
      DWORD  dwY;
      DWORD  dwXSize;
      DWORD  dwYSize;
      DWORD  dwXCountChars;
      DWORD  dwYCountChars;
      DWORD  dwFillAttribute;
      DWORD  dwFlags;
      WORD   wShowWindow;
      WORD   cbReserved2;
      LPBYTE lpReserved2;
      HANDLE hStdInput;
      HANDLE hStdOutput;
      HANDLE hStdError;
    } STARTUPINFO, *LPSTARTUPINFO;

    В dwFlags обязательно устанавливаем STARTF_USESTDHANDLES
    После вызова CreateProcess в hStdInput, hStdOutput и hStdError получают указатели на соответствующие потоки.
    Ответ написан
    Комментировать
  • Можно ли организовать связь между QT, mySQL и Excel?

    @Mercury13
    Программист на «си с крестами» и не только
    Qt и MySQL работают отлично и очень быстро. Маленькая подсказка: помимо DLL драйвера, который надо бросить в подкаталог plugins\sqldrivers, надо положить в РАБОЧИЙ каталог программы DLL MySQL или MariaDB (зависит от сборки Qt).

    С Excel’ем сложнее, и приходится искать любую Excel-библиотеку, имеющуюся на Си++.
    Из открытых — XLNT (кроссплатформенный) и QtXlsx (привязан к системе классов Qt).
    Мы используем частично LibXL (платный, тормозной, огромный расход памяти, но QtXlsx ещё хуже, насколько я проверял), частично свой велосипед (минимум функциональности, оптимизирован под огромные XLSX — вплоть до того, что Excel берёт большую таблицу за 10 секунд, а мы за три, а LibreOffice вообще над ней размышляет минутами).

    Но это уже собственно вопрос: а что есть для Excel’я на Си++. Может, сырой XLNT довели до ума. Может, у вас нет огромных таблиц, и того, что есть, вам хватает…

    UPD. Есть разные сборки DLL MySQL, так что придётся экспрериментировать, чтобы работало не только на разработческой машине, но и у потенциального юзверя.
    Ответ написан
    Комментировать
  • При копировании данных из одного массива в другой последний элемент копируется с мусорными значениями. Как это устранить?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Добавь в конце строки символ окончания строки(имеет код 0). А ещё копировать лучше с помощью strncpy
    Ответ написан
    8 комментариев
  • Чем смотреть log-файл так, чтобы он обновлялся realtime и в просмотрщике?

    saboteur_kiev
    @saboteur_kiev Куратор тега Windows
    software engineer
    1. Обычная команда tail -f в командной строке - tail есть и под мак и под виндовс (нужно скачать unix utils for windows или поставить какой-нить git, с которым это идет вместе)
    2. FAR такое умеет
    Ответ написан
    9 комментариев
  • Как сохранить несколько значений в переменную?

    tsklab
    @tsklab Куратор тега SQL Server
    Здесь отвечаю на вопросы.
    Как сохранить несколько значение в переменную?
    Для MS SQL можно использовать функции работы со списками. STRING_SPLIT (Transact-SQL) и STRING_AGG (Transact-SQL).
    Например

    Список ролей дополняется другим списком без повторов.
    DECLARE @Role TABLE(Role VARCHAR(100))
    INSERT INTO @Role SELECT TRIM( value ) FROM STRING_SPLIT( @RLR, ',' )
    INSERT INTO @Role SELECT TRIM( value ) FROM STRING_SPLIT( @ROL, ',' ) 
                                      WHERE TRIM( value ) NOT IN ( SELECT [Role] FROM @Role )
    DELETE @Role WHERE (TRIM( [Role] ) = '')
    SELECT @RLR = STRING_AGG ( [Role], ', ' ) FROM @Role
    Ответ написан
    1 комментарий
  • Не работает магазин Windows, не ищет обновления, что делать?

    @DmitriyShuhov Автор вопроса
    Как же я начал матерится когда открыл файл hosts, в кои я около полугода назад внёс все адреса связанные с мелкософтом.
    После очистки файла всё естественно заработало.
    Потрачено.
    Ответ написан
    Комментировать
  • Код или математика?

    @dmshar
    Давайте все таки строго формализуем вопрос.
    "в коде обучения нейронной сети или математической модели этого самого обучения" - как то совсем нечетко. Предположим, вы имели ввиду
    "математическая модель обучения" =="алгоритм обучения сети"
    "код обучения" == "программная реализация этого самого алгоритма".
    Тогда задача получает строгую формулировку: "Мы запрограммировали некоторый процесс обучения. Результат не такой, как мы ожидаем. Где ошибка - в алгоритме или в коде".
    И если это так, то в такой постановке задача хоть и не может быть решена с абсолютной точностью, но понятно что надо делать, что-бы дать ответ. По большому счету, она теперь ничем не отличается от обычной задачи, решаемой на этапе тестирования при разработке любого программного продукта - от игрушек до веб-сайтов.

    Вариантов решения два.

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

    Экспериментальный:
    1. Находим и четко записываем алгоритм.
    2. Даем его запрограммировать двум, трем.... чем больше-тем лучше... программистам. Получаем множество реализаций одного и того-же алгоритма.
    3. Прогоняем процесс обучения сети через каждую реализацию. Сравниваем результаты с ожидаемыми.
    4. Если реализации дали результаты, отличные от ожидаемых, но совпадающие между собой - ищи ошибки в алгоритме. Если реализации дали результаты, отличные от ожидаемых, но различные между собой - ищи ошибки в коде.

    Но простых, "книжных" решений этой задачи - нет.
    Ответ написан
    Комментировать
  • Что за странная ошибка?

    GavriKos
    @GavriKos
    Не странная. MAXLINE везде заменится на 1000. Соответственно конструкция будет int 1000, что есть определение переменной. Имена переменных не могут начинаться с цифр.

    И так, чисто для справки:
    - не кидайте ошибки и код скриншотами - ничерта не видно
    - поставьте английский язык в IDE
    Ответ написан
    Комментировать
  • Как хранить версии текстов?

    @AVKor
    Можно патчи хранить. Если размеры текстов большие, и их много, то место будет расходоваться экономнее. Но для восстановления полного текста определённой версии в этом случае необходимо патчить исходную версию нужное число раз.
    Ответ написан
    Комментировать
  • Подменить IP в строке запроса?

    @kisaa
    Нужен роутер линуксовый, на нем squid в прозрачном режиме, у squid'а настраиваются правила url_rewrite (обычно через внешние модули) - там можно сделать все что угодно.
    Ответ написан
    Комментировать
  • Постоянные запросы к QMap или локальная копия объекта. Где лучшая производительность?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Ваш код тормозит? Если да, то профилируйте, и смотрите где. Если не профилировали, то и нечего говорить о производительности :)

    Метод value всегда вернёт копию значения. Т.е. логично её где-то сохранить, если вам надо несколько раз обращаться к разным полям. Можно избежать копирования, используя итератор или константную ссылку + оператор [] у мапы.

    Почитать в официальной документации Qt. Можно ещё на QHash посмотреть, там поиск быстрее, но на ключ накладываются другие ограничения.
    Ответ написан
    Комментировать
  • Как получить нужную точность при умножении и делении чисел типа double?

    @Mercury13
    Программист на «си с крестами» и не только
    Дело в том, что 4,2 и 4,3 невозможно представить в виде double. И система, например, сохраняет 4,3 в виде 4,2999999, которое при умножении на 10 станет 42,999999.
    Нужно убедиться, что при преобразовании double → int происходит round, а не усечение.
    Ответ написан
    2 комментария
  • Есть ли такой софт. Кто встречал?

    athacker
    @athacker
    Такой софт называется "второй компьютер" ;-) Ставите туда софт, который крутит презенташки, и если нужно -- управляете этим вторым компом через какой-нибудь TeamViewer / VNC / Radmin.
    Ответ написан
    4 комментария
  • Столкнулся со странным объявлением структуры - где о таком прочитать?

    @wawa
    1) Это не C, а С++ (смотрю на тег вопроса)
    2) Число полей структуры не может быть переменным. Здесь их три: NumSrtucts, Size, Offsets.
    3) Offsets это указатель, которому в конструкторе присваивается выделенная в куче память. И размер это памяти варьируется динамически на момент вызова конструктора, но хранится эта память вне структуры, а как было сказано в куче (динамической памяти) и структура лишь хранит адрес этого участка кучи в Offsets.
    Ответ написан
    Комментировать
  • Бесплатная IDE для C++?

    @Wexter
    VS Express/QtCreator/MinGW
    Ответ написан
    Комментировать
  • Где почитать про "боевое" использование сокетов?

    gbg
    @gbg Куратор тега Компьютерные сети
    Любые ответы на любые вопросы
    Йон Снейдер - эффективное использование TCP/IP
    Ответ написан
    2 комментария