Задать вопрос
  • Как поместить в массив с указанным типом Null?

    @dima20155
    you don't choose c++. It chooses you
    если у вас vector/array используйте std::variant или std::optional в качестве шаблонного параметра
    в случае С-array, используйте указатель на тип
    вот пример:

    #include <iostream>
    #include <vector>
    #include <optional>
    
    int main() {
        std::vector<std::optional<int>> vec;
        vec.push_back(10);
        vec.push_back(std::nullopt);
        vec.push_back(15);
        for (auto i : vec) {
            if (*i) {
                std::cout << *i << std::endl;
            } else {
                std::cout << "value is not exist\n";
            }
        }
    
        return 0;
    }
    Ответ написан
    1 комментарий
  • Персональный гугл, если ли?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Google - это прежде всего инфраструктура, а не софт. Как только сможете позволить себе потратить десятки миллиардов долларов на постройку ЦОДов, можно и персональный Google будет завести.
    Ответ написан
    3 комментария
  • База по разработке ПО с плагинами на C++?

    Существуют ли книги - я не знаю, но фундаментально ничего не изменилось:

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

    Таким языком может быть lua - очень популярный вариант. Можно даже какой-нибудь свой язык для плагинов придумать - вот Minecraft вообще для плагинов стопку json-ов предлагает писать.

    Из нового ещё появился webassembly: он удобен тем, что разработчик плагина может выбрать в принципе любой язык, и запускаться он сможет на любой платформе.
    Ответ написан
    Комментировать
  • Как получить случайные числа в C++?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    srand вызывайте только один раз где-нибудь в начале программы. А потом сколько угодно раз используйте rand.

    srand устанавливает состояние генератора псевдослучайных чисел. В качестве seed вы там используете количество миллисекунд, которое целую миллисекунду одинаковое, поэтому состояние генератора у вас в каждой функции rand_offer одно и то же - поэтому числа и генерируются одни и теже. sleep(1) лечит проблему потому, что следующий вызов посчитает другое значение count_ms.
    Ответ написан
    Комментировать
  • Как открывать много TCP соединений и поддерживать их?

    bingo347
    @bingo347
    Crazy on performance...
    Как уже написали в соседнем ответе, лимит портов 65535 на 1 интерфейс.
    Но это на один интерфейс, самое простое решение тут воткнуть несколько сетевых карт, да у них будут разные ip (по сути у одной машины будет пул ip), но для 100к коннектов хватит 2 карточек.
    В Linux (насчет других ОС не уверен, но возможно тоже) есть способы поизвращаться и поднять 2+ виртуальных интерфейса на одной сетевой карте. При этом у машины так же будет 2 ip адреса и нужно будет распределять соединения между ними.

    Хотя по хорошему я бы посмотрел здесь в сторону UDP с одним занятым портом на машине, а необходимые возможности TCP уже воспроизводить программно.
    Ответ написан
    5 комментариев
  • Как гарантировать последовательную запись данных без пропусков id?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Таблицы на основе генераторов или sequences обычно ствавят главной задачей - обеспечить
    уникальность id в первую очередь
    . С эти sequence справляется.

    Гарантировать блокировку или захват sequence они не могут так как Postgres создавался
    как много-пользовательская БД
    . Тоесть много сессий обладают правом в любой момент
    взять из sequence следующее значение
    . Поэтому требование хронологии - это как эксклюзивный
    лок объекта. Слишком жесткое требование. И никому не нужное. Если б так БД работали то
    они теряли бы в производительности и ждали-бы чтоб какая-то главная сессия отпустила таблицу.

    Выход есть - брать ранг записи извне. Тоесть само приложение должно быть поставщиком
    таких номеров. А БД будет просто их вставлять.

    Еще вариант - в уже после загрузки обновить одно полей одной транзакцией как row_number
    сортируя по любому признаку.
    Ответ написан
    6 комментариев
  • Какие есть лёгкие альтернативы у стандартного средства просмотра фотографий windows?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Используйте IrfanView - он работает еще быстрее стандартного вьюера, скорости света и вообще открывается раньше, чем даже на кнопку нажмете или откроете файл. Ничего лучше не придумали и уже не придумают.
    Ответ написан
    4 комментария
  • Как правильно реализовать освобождение памяти выделенной в функции?

    @dima20155
    you don't choose c++. It chooses you
    Все до безобразия просто:
    Вы выделяете память в момент, когда она вам нужна, а удаляете когда эта память вам более не нужна.
    Соотвественно, вам нужна функция array_deinit(), которая возьмет на себя непосильную ношу освобождения памяти в момент, когда вы больше не планируете обращаться к своему двумерному массиву.

    В простейшем случае, в С++ подобный функционал оборачивают в класс, который, в свою очередь, обязательно должен почистить за собой память хотя бы в деструкторе.

    Также в современном С++ не принято использовать new/delete без веской причины (например, вы пишете супер быстрый, современный контейнер, в котором хотите управлять всеми аллокациями самостоятельно), а рекомендуется использовать умные указатели для работы с памятью.
    Ответ написан
    2 комментария
  • Скачет головка жёсткого диска что делать?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ну раз уже вскрыли, то остаётся только выбросить. Шансы на восстановление при вскрытии не в чистой (беспылевой) камере околонулевые.
    Ответ написан
    9 комментариев
  • Графическая библиотека для C++?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Судя по всему, вы про винду спрашиваете. Надо использовать всякие виндовые апи. Помимо GDI+ есть возможность работы через DirectX (c Win8) и WindowsGraphicsCapture (с Win10). С этим можно получать скриншот в текстурах. Потом можно прям на GPU их с шаблонами сравнивать, что будет на порядки быстрее работы с отдельными пикселями.
    Ответ написан
    2 комментария
  • Не могу скачать Windows 10 в россии, как скачать?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    https://uupdump.net/
    Генерирует скрипт, который скачивает нужные файлы и создаёт ISO с установкой Windows.
    Дополнительно нужны пакеты cabextract, wimtools, chntpw, genisoimage и aria2.
    Ответ написан
    2 комментария
  • Зачем нужен оператор fixed в c#?

    fixed запрещает перемещать объект в памяти.
    Сборщик мусора может и не соберёт объект, но без fixed он может его переместить и тогда указатель станет невалидным.

    stackalloc выделяет данные на стеке, а по тому с ним такой проблемы нет, ну и да - он не нагружает gc, хоть и обладает кое-какими другими потенциальными проблемами.
    Ответ написан
    3 комментария
  • Как происходит разработка по почте?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Единственный такой проект, о котором я слышал — это разработка ядра Linux. Там изначально велась разработка по почте. Да и сейчас кажется ничего не изменилось. На гитхабе мы видим лишь зеркало проекта. Гит изначально был придуман Торвальдсом специально так, чтобы он максимально прозрачно интегрировался в такой процесс. Даже коммиты при просмотре выглядят как электронные письма — там есть имя и мыло автора, тема, тело с подробным описанием изменений…

    А ответ на вопрос «как?» вы найдете в официальной книге Pro Git. Там этому посвящена целая глава. Учебник продолжает дополняться и переписываться сообществом, в том числе и на русском.
    Ответ написан
    1 комментарий
  • На чем пишутся современные десктопные приложения?

    Lapish72
    @Lapish72
    C# уже много лет спокойно работает на линуксе. На c# можно писать кроссплатформенный gui через:
    1) Avalonia. Наследник WPF с исправлением болячек wpf(тех же стилей) и реактивностью по умолчанию.
    2) UNO. Многообещающий проект, но лично мне не понравился. Слишком тяжеловесное решение и сложное. Avalonia проще и завелась сразу.
    3) Maui. Официальное решение от Microsoft, но не под линукс. На github пилят отдельно под него поддержку.
    4) Blazor/Electron.Net. Web app в виде десктопа.

    JavaFX. Сугубо субъективное мнение, но это тихий ужас по сравнению с тем же WPF.

    Для себя хочу изучить Dart и Flutter из-за быстрой перезагрузки(тот же wpf, а особеннно у blazor с этим проблемы) и 100% следования material guidline, т.к это все google. На Flutter ui пишется под все платформы и его практически не нужно будет подгонять.
    Ответ написан
    Комментировать
  • Может ли владелец сервера shadowsocks расшифровать мой трафик?

    pindschik
    @pindschik
    ФЫВА ОЛДЖ
    Была история с сетью TOR, когда "утекли" множество писем дипломатической переписки. И ВНЕЗАПНО оказалось, что подавляющее большинство бесплатных нод входа и выхода в сеть TOR - существуют не на чистом альтруизме, а вполне себе "засланные казачки". ОКАЗЫВАЕТСЯ они мониторят все данные, а т.к. переписка в открытом виде пошла через них - то и была украдена.

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

    Я не знаю, как шифрует данные приложение сбера, но допускаю, что могут быть уязвимости в протоколе или вовсе открытая передача. Соответственно - вам нужна еще одна технология защиты данных внутри такого VPN, которая как минимум пробросит соединение дальше. До той точки, которой не будет дела до ваших данных.
    Ответ написан
    Комментировать
  • Как отключить TlS в Windows?

    Скорее всего твоя программа просто начнёт ошибку выдавать, если каким-либо образом централизованно отрубишь TLS, тк единственный способ централизованно это сделать - поломать инфраструктуру проверки валидности сертификатов (самое простое - удалить все доверенные сертификаты)

    Обычно https-трафик расшифровывают при помощи прокси и подсовывания нового доверенного сертификата, которым потом будет пепеупаковываться расшифрованный трафик.

    Глянь burpsuite, mitmproxy, fiddler, Charles - они все это умеют
    Ответ написан
    3 комментария
  • Допустимо ли воспроизведение программного обеспечения с точки зрения авторского права?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Код программы или игры, используемые в ней изображения, звуки, сюжет, сеттинг, игровая система (например, Dungeon&Dragons) могут быть защищены копирайтом. Название может быть защищено торговой маркой. В остальном самостоятельно сделать аналог вполне законно. На идеи и алгоритмы в России авторское право не распространяется.
    Ответ написан
    2 комментария
  • Что за формат чисел в ассемблерных файлах 000ABC100h в конце 'h', конкретно как парсить?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Ты немного путаешь формат записи и разрядность архитектуры.

    1. Чтобы отличать числа от меток и переменных, считается что любая запись числа должна начинаться с цифры, поэтому часто шестнадцатиричные записи могут быть записаны с дополнительным ведущим 0
    ( 0a10h ), именно чтобы в начале не было а.

    2.
    Для шестнадцатиричной записи используется суффикс h
    0293h, 0a123123h
    Также для шестнадцатиричной можно использовать формат 0x<ЧИСЛО>
    0xab, 0x01, 0xFF23

    Использовать и префикс и суффикс типа 0xA019h - не стандарт, и я навскидку не могу вспомнить где такое может быть, и скорее всего так будет неправильно. Но может быть где-нибудь какой-нибудь парсер предусмотрел и такую глупость, поэтому кушает без выдачи ошибок.

    3. Для двоичной записи используется суффикс b
    000101010b, 1b

    4. Для восьмиричной используется суффикс q
    1q, 2323q, 7283123q

    5. Для обычной десятичной можно указывать суффикс d, или не указывать его
    123, 123d, 982d, 1
    Ответ написан
    Комментировать
  • Что за формат чисел в ассемблерных файлах 000ABC100h в конце 'h', конкретно как парсить?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Давай слегка тормознем твой поток созднания. Слишком много у тебя тезисов.
    В каждом языке программирования есть свои числовые литералы. В си-шарпе - свои.
    И в ассемблере свои.

    Попробуем ответить на первый.

    А могул ли быть, А100000000000000h, то есть начаться с А


    Да могут быть. В хекс-системе числа состоят из цифр и букв от A до F. Другое
    дело что ты должен следить за разрядностью и понимать что в регистр процессора
    (ассемблер) и тип данных (для шарпов) может влезать ограниченный диапазон
    величин. Например для ассемблерного двойного слова (DWORD) максимальное число FFFFFFFFh
    И для шарпового unsigned long максимальное 0xFFFF_FFFF_FFFF_FFFF

    Тоесть правильный ответ состоит из проверки числа на допустимые символы и проверки
    ТИПА данных на диапазон.
    Ответ написан
    4 комментария