Задать вопрос
  • Почему int * оценивается как int * вместо int * * при подстановке в шаблонный параметр?

    shurshur
    @shurshur
    Евгений Шатунов, я знаю что это неопределённое поведение и прямо написал об этом. Более того, я вообще ожидал, что в этом месте программа упадёт. Но по случайному совпадению вызывающая main функция оставила в этой части стека ссылку на argc, что забавно.
  • Как шифровать payload?

    shurshur
    @shurshur
    Falseclock, обычно если документация пишется нормально, то в ней не только щеголяют умными словами, но и приводят понятные примеры. А если что-то непонятно или странно работает, то спрашивать лучше у того, кто это разрабатывал и реализовывал.
  • Почему int * оценивается как int * вместо int * * при подстановке в шаблонный параметр?

    shurshur
    @shurshur
    Короче, я сделал так:

    template<typename T>
    void f2(T * var) { std::cout << var << " " << *var << std::endl; }


    Вывод:

    0x7ffd85542ccc 22079
    0x7ffd85542dd0 1
    0x7ffd85542cd0 0x7ffd85542dd0


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

    shurshur
    @shurshur
    Qubc, нет, это как раз нормально, ведь мы передаём указатель на любой_тип, и любой_тип считается за T. Это можно обойти прямым указанием типа int* у f2, но тогда копилятор ожидаемо упадёт:

    $ g++ -g y.cpp 
    y.cpp: In function ‘int main()’:
    y.cpp:16:12: error: cannot convert ‘int*’ to ‘int**’
       16 |   f2<int*>(pi); // f2<int>(pi); // pi is int * // T == int * // ???
          |            ^~
          |            |
          |            int*
    y.cpp:5:13: note:   initializing argument 1 of ‘void f2(T*) [with T = int*]’
        5 | void f2(T * var) { }
          |         ~~~~^~~


    upd: ой не то... В общем, так нормально собирается:

    f2<int>(pi); // f2<int>(pi); // pi is int * // T == int * // ??? 
      f2<int*>(&pi); // f2<int*>(&pi);
  • Как шифровать payload?

    shurshur
    @shurshur
    Я открыл RFC 7516 и там всё очень детально описано, включая подробный пример. Так детально и подробно и длинно-многословно, что я сразу же расхотел реализовывать это вручную своими силами и пошёл искать готовые решения. Например, нашёл python-jose и jwcrypto для python, go-jose и jwe для go, jwe для ruby. openid jwe для java, jose-php для php, и в целом для любого языка можно найти готовые библиотеки и примеры.
  • Почему int * оценивается как int * вместо int * * при подстановке в шаблонный параметр?

    shurshur
    @shurshur
    Qubc, а откуда сделан вывод, что f2<int*> нет? Я только что скомпилял этот код gcc, и в нём есть два варианта функций f1 и f2 - для int и int*:

    00000000000011b9 W _Z2f1IiEvT_
    00000000000011c7 W _Z2f1IPiEvT_
    00000000000011d6 W _Z2f2IiEvPT_
    00000000000011e5 W _Z2f2IPiEvPT_
  • Как прочитать файлы из кеша телеграм?

    shurshur
    @shurshur
    Посмотреть в новой актуальной версии клиента, что как он хранит. Это же опенсурс.
  • Не открывается чаты WhatsApp, через веб-версию браузера?

    shurshur
    @shurshur
    А почистить кэш/куки для этого сайта и повторно залогиниться в WA не помогает? Можно ещё сессию эту прибить на телефоне в настройках...

    Проблема с любым аккаунтом? Может, конкретный уже не существует просто?
  • Меня взломали и всё равно продолжают ломать??!! что делать?

    shurshur
    @shurshur
    Filipp42, автор отредактировал вопрос до неузнаваемости.
  • No space left on device?

    shurshur
    @shurshur
    Вместо этой команды удобно использовать ncdu.
  • Обмен сигналами между процессами в linux?

    shurshur
    @shurshur
    mayton2019,
    Штук 10 кажется


    Намного больше.

    Один студен курсом младше меня любил в шутку засунуть кому-нить в crontab

    killall -24 mc

    Бедный пользователь не понимал, почему mc регулярно вылетает с ошибкой превышения процессорного времени...
  • Почему сайты постоянно регистрируют 'подозрительный трафик' после установки Arch Linux?

    shurshur
    @shurshur
    Никита Савченко, это довольно странно, потому что firefox обычно проблем не вызывает. Либо в этой сборке есть что-то "не такое как надо", либо дело не в браузере.

    Кстати, это легко проверить: зайти на этой же системе другим браузером на те же сайты.
  • Как победить EOFError: EOF when reading a line в python3.8?

    shurshur
    @shurshur
    дмитрий шевченко, если даже там используется stdin, то может оказаться, что в последней строке нет переноса строки, и это ломает input. Поэтому имеет смысл делать, например, sys.stdin.read().
  • Почему сайты постоянно регистрируют 'подозрительный трафик' после установки Arch Linux?

    shurshur
    @shurshur
    Никита Савченко,
    ибо зачем устанавливать Арчу ВПН без моего ведома


    Если бы всё было так просто...

    Могу также предположить, что CF чем-то не нравится текущий User-Agent или что-то ещё в новом браузере. Ещё вариант, что просто случайно совпало и сейчас появилась какая-то активность с того же IP или из той же подсети.

    Про VPN кстати ни фига не шутки. Сейчас много "VPN" (на самом деле прокси) для браузеров развелось и многие их себе ставят. А потом они ломаются с разными странными симптомами.

    Иногда бывают такие расширения, у которых не сразу догадаешься, что там такая функция есть. Я поставил Censor Tracker на один из своих неосновных браузеров и не сразу заметил, что чёта изменилось, ведь срабатывает он только на некоторые сайты, которые по егоданным в России заблокированы, не на все подряд. Но эту функцию легко просто выключить, если она не нужна.
  • Почему сайты постоянно регистрируют 'подозрительный трафик' после установки Arch Linux?

    shurshur
    @shurshur
    Никита Савченко, а если проверить? Рекомендую на сайтах-проверялках IP сравнить его со своим реальным.
  • Почему архиваторы не эффективно сжимают одинаковые файлы?

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

    А в задаче автора эти гигантские словари ещё и не помогут, так как вряд ли эти полтора гига будут одинаковыми каждый день до байтика. А если даже да, то проще уж тогда считать md5 архива и вместо очередного бэкапа класть текстовый readme.txt "сегодня ничего не поменялось".

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

    shurshur
    @shurshur
    van000, в данном случае большая ошибка считать, что архиватор реально вычисляет повторения. На самом деле нет.

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

    shurshur
    @shurshur
    milanova48, не существует универсального решения для этой задачи. В простейших случаях можно использовать программы, которые скачивают страницы сайта по ссылкам, начиная от главной страницы, как может сделать тот же wget из предыдущего комментария, хотя бывают и программы с графическим интерфейсом, но я не слежу за ними и не знаю современных, из двадцатилетней давности могу вспомнить только offline explorer и teleport pro.

    Но современные сайты часто обвешаны javascript, в них контент формируется динамически, и просто так их скачать невозможно. В общем случае придётся писать свой собственный парсер сайта, что может быть не очень просто.

    Иногда может помочь sitemap, из которого можно дёрнуть список ссылок для последующего скачивания, но он может оказаться не очень простым. Например, у этого магазина он содержит 9 файлов: https://www.regard.ru/sitemap.xml - и я не уверен что в них реально ссылки на весь ассортимент, а не просто какая-нибудь первая тысяча ссылок сайта...

    Ну и если начать активно качать всё подряд с сайта, то он может забанить и перестать отдавать контент полностью, как с помощью своих собственных механизмов, так и через использование сторонних решений типа CloudFlare.
  • Как обслуживать юзеров по очереди телебот?

    shurshur
    @shurshur
    Не знаю, есть ли в telebot реализация Finite State Machine


    Да, есть. Пример.
  • Как сделать принятие и вывод данных telebot?

    shurshur
    @shurshur
    Peq, ну вот смотри, ты отправляешь "Введите ник" и ТУТ ЖЕ, не дожидаясь ответа, делаешь что-то ещё. Это так не работает.

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

    Для этого обычно используется конечный автомат (Finite State Machine, FSM), и в телеботе есть встроенный очень простой в использовании FSM на основе вызовов register_next_step_handler. Погуглить "telebot step_example.py" и будет официальный пример, на котором можно разобраться в принципе его работы.

    Использовать input, конечно же, не получится, ведь input считывает с консоли того сервера, где запущен бот.