Задать вопрос
  • Чем мой вариант хуже?

    bogolt
    @bogolt
    судя по описанию tinyxproxy он умеет модифицировать http заголовки. Думаю именно для этого используется разбиение по переносам строки и сохранение всех этих строк в отдельный список. Ну и вся эта избыточность как раз для этого предназначена.
    Ответ написан
    Комментировать
  • В каких случаях использовать мульпроцессинг/мультипоточность/asyncio?

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

    С потоками все иначе. Так все потоки принадлежат одному процессу, и у них общая память GIL уже обойти нельзя. Но есть нюанс. Если поток выполняет некую системную функцию, в общем не связанную с самим питоном то таких функций можно выполнять одновременно любое количество. Основные примеры таких функций - чтение запись данных в файлы ( или в сокеты ). То есть можно принимать сразу множество сообщений в разных потоках, но как только мы вывалимся в питон код GIL снова вступит в силу и начнет их выполнять по очереди.
    Ответ написан
    3 комментария
  • Тестированое "ошибками", или как эмулировать их при дебаге и отладке?

    bogolt
    @bogolt
    Пишите логи всех действий совершаемых программой. Например
    2018-11-01 15:12:12.123 Menu 'Open file' activated
    2018-11-01 15:12:12.223 Opening file '/home/user/abc.txt'
    2018-11-01 15:12:12.223 Operation failed with system error: Permission denied


    Достаточно подробный, снабженными нужными значениями переменных лог ( пароли от баз данных и другие опасные вещи лучше заменять в логе на звездочки ) можно позже спокойно проанализировать, и воспроизвести ( а затем и починить баг ). Логи можно попросить выслать с машины на которой случился баг, если он например не воспроизводится на вашем железе.

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

    bogolt
    @bogolt
    Рекомендую вам выводить матрицы после каждого прохода цикла, думаю, что это наведет на понимание его работы.
    Ответ написан
    Комментировать
  • Почему выходит из цикла?

    bogolt
    @bogolt
    А что умение дебажить в уме ( на листе бумаги ) или даже дебаггером уже совершенно утеряно у подрастающих поколений? По-моему ответы на подобные вопросы просто вредны для самого специалиста, ну или человека который хочет стать таковым.
    Ответ написан
  • Не могу понять, в чем ошибка?

    bogolt
    @bogolt
    Попробую объяснить путь к понимаю проблемы переполнения.
    double temp = random(a, b);
    Подставьте сюда сами разные значения ( напиример 0 5 или -5 и 3 ) подумайте какие возможные результаты может вернуть функция ( максимальный и минимальный ). Прибавьте граничные результаты к b ( у вас же temp + b ) вспомните какое максимальное количество элементов вы выделили.

    2. Все-таки обнулите выдленный блок памяти. Можно руками в цикле а можно через www.cplusplus.com/reference/cstdlib/calloc например ( там и с параметрами запутаться сложнее ).

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

    bogolt
    @bogolt
    Кажется у вас переменная tree не инициализирована. Точней под нее не выделена память, ведь это просто указатель у вас.

    Ну а так - используйте отладчик, расставляйте принты в разных точках программы чтобы понять куда она дошла а куда нет, убирайте лишнее чтобы еще больше сузить область возникновения ошибки. И будет вам счастье самостоятельного нахождения ответов.
    Ответ написан
  • Альтернативы Skype для ADSL 512 кбит/с?

    bogolt
    @bogolt
    Пользовался скайпом еще во времена Dial-up с такими же скоростями. Вполне можно было общаться голосом.
    Ответ написан
    Комментировать
  • Как сделать так, чтобы std::set при добавлении объектов сравнивал на повторяемость по моим правилам?

    bogolt
    @bogolt
    Указать ваш компаратор:

    std::set<std::shared_ptr<CString>, MyCompare>
    Который будет сравнивать значения внутри умных указателей.

    Чтобы с пониманием делать такие вещи нужен опыт и некоторые навыки чтения литературы.

    upd:
    using namespace std;
    typedef shared_ptr<string> SString;
    
    class SharedLess
    {
    public:
        bool operator() (const SString& a, const SString& b) const
        {
            return *a < *b;
        }
    };
    Ответ написан
  • Какую FastCGI-библиотеку для C/C++ посоветуете?

    bogolt
    @bogolt
    А может ну его, это фаст-сги, а взять сразу http библиотеку, и прямо с ее помощью все написать?
    А потом пустить все через nginx чтобы исключить разные проблемы безопасности.

    Например берем libevent http - он позволяет обрабатывать http запросы, пишем на его основе одно/многопоточный сервер.
    Тоже самое можно сделать при помощи boost.asio, в самом бусте есть немало примеров посвященных созданию http серверов.
    Кроме того вам уже указали на cppcms которая вроде как заточена под подобные задачи.

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

    bogolt
    @bogolt
    the-game.ru - космическая стратегия, с возможностью создания скриптов на перле для оптимизации производства, полетов и в общем любых действий.
    Ответ написан
    Комментировать
  • Как понять суть программирования (подробнее в содержании)?

    bogolt
    @bogolt
    Смотреть и пробовать - разные вещи. Настолько разные, что часто смотреть как кто-то что-то делает скучно, а вот самому делать интересно. И наоборот.
    Не думаю что можно понять что-то об интересующем занятии не попробовав его.

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

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

    bogolt
    @bogolt
    cocos2d-x ( с++11 )
    SDL ( с )

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

    bogolt
    @bogolt
    А зачем? Все нормально, лет через десять оглянитесь назад - а у вас куча не сделанных ( или сделанных другими ) проектов, посмотренных фильмов, прочитанных книг. Так никуда и не съездили куда хотели.. молодость куда-то утекла, но зато поленились всласть. Сказка ведь, ага?
    Ответ написан
    1 комментарий
  • Как сделаить Ряд тейлора (через указатели)?

    bogolt
    @bogolt
    У вас в программе три явно выраженных участка - это ввод данных, вычисление и вывод результата. Каждый из этих фрагментов можно вынести в свою функцию.
    По-поводу указателей - вы можете вернуть указателями значения из функции ввода данных.
    Ответ написан
    Комментировать
  • Почему если вызывать QWidget::show() через точку, то не показывает?

    bogolt
    @bogolt
    Вам уже ответили правильно, хочу добавить что в Qt все окна и контролы нужно создавать в куче ( так как тогда сама Qt сможет корректно их удалить ). Кроме того при создании нового объекта не забывайте указать ему на его родителя ( в вашем случае при создании QWidget внутри класса Widget -
    QWidget* w = new QWidget(this);
    QLineEdit *line = new QLineEdit(w);
    Ответ написан
    1 комментарий
  • Как написать анализатор выражений C++?

    bogolt
    @bogolt
    Люди, ну почему вы разучились думать сами?
    Нет, не нужно читать книжку если вам задали задание найти максимальный элемент массива.
    Омг, да какие нафик книги, просто напишите этот код. Вначале без скобок, потом добавьте скобки.

    Не можете придумать алгоритм? Возьмите лист бумаги и ручку, напишите простейший пример 3+2 и разберите по шагам как вы сами его решаете. Затем тоже самое выразите на нужном вам языке. Потом останется только добавить операторов, вспомнить о приоритетах ну и подключить скобки.
    Ответ написан
    3 комментария
  • Запуск скрипта keyhunter.py Linux, как?

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

    Программа выдает какую-нибудь ошибку при запуске ?
    Ответ написан
  • Можно ли не передавать пароль на сервер, а шифровать им соединение (например, через сокеты)?

    bogolt
    @bogolt
    В вашей же схеме предусматривается что обе стороны уже владеют одним общим ключом для связи друг с другом. В этом случае ваша схема будет работать, так как это будет обычное шифрование любым блочным шифром.

    Сложность как раз в том чтобы распределить ключи между двумя сторонами, так чтобы никто не смог их перехватить и/или подделать.
    В общем публичные ssh ключи установленные на веб серверах как раз и решают эту задачу только с обратной стороны. Они дают клиенту в руки пароль для отправки сообщений на сервер, которые нельзя незаметно подделать.
    Ответ написан
    Комментировать
  • Какие средства/технологии применяются для разработки приложений для Linux?

    bogolt
    @bogolt
    > но я полный профан в вопросе разработки сетевых приложений
    А вам и не нужно разрабатывать сетевое приложение. Максимум запросить страницу по http ( что делается одной-двумя функциями кода в том-же Qt да и на чистых сокетах не так уж сложно.

    Основной код будет скорее всего гуи, и тут важно определится на чем будете его делать. Сразу на ум приходят конечно Gtk и Qt.
    Ответ написан