Задать вопрос
  • Какой выбрать C++ компилятор под Windows?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Любой из них подходит под ваши требования
    Ответ написан
  • Существует ли алгебра логики с оператором логического вычитания?

    Griboks
    @Griboks
    Составим таблицу истинности для математического вычитания.
    A B A-B
    0 0 0
    0 1 1
    1 0 1
    1 1 0

    Получаем, что A-B=A xor B, следовательно - := XOR.

    Открываем гугл: Сложе́ние по мо́дулю 2 (исключа́ющее «или», XOR, строгая дизъюнкция, поразрядное дополнение, инвертирование по маске, жегалкинское сложение, логическое вычитание, логи́ческая неравнозна́чность) - булева функция, а также логическая и битовая операция, в случае двух переменных результат выполнения операции истинен тогда и только тогда, когда один из аргументов истинен, а второй — ложен.

    Соответственно, смысл у неё во взаимной разности двух множеств, т.е. результат не принадлежит двум множествам одновременно.
    A B (Необщая часть A) (Необщая часть B) (Объединения частей)
    0 0 0 0 1
    0 1 0 1 1
    1 0 1 0 1
    1 1 0 0 0
    Ответ написан
  • Тестирование сборки (Build Verification Test) проводится на уровне unit-тестов?

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

    BVT это чаще всего набор автоматических тестов, которые запускаются как часть CI/CD Pipeline, и отвечают на вопрос "отвечает ли продукт необходимым и достаточным требованиям для прохождения этапа сборки". Т.е. одно из ключевых отличий BVT от Smoke это то, что BVT подразумевает автоматизированные тесты.

    Далее, к вашему вопросу. Термин Unit-тестирование очень уж спорный. Если вы спросите 3-х специалистов о том, что же является unit-тестом, вы получите не менее пяти разных мнений. С точки зрения BVT абсолютно не важно, какие это тесты, unit/integration/e2e. Важна скорость их выполнения (очень частая цель - до 10 минут). В большинстве случаев BVT будет состоять или из тестов системного уровня, или из тестов на различных уровнях.
    Ответ написан
    Комментировать
  • Как безопасно скачивать и открывать файлы (например zip,txt,jpg) из интернета?

    @tifco
    Надо стараться файлы брать с проверенных источников, а не абы откуда.

    Вирус открывать не надо. Зачем? Удалить и дело с концом. Т. к. "вылечить" исполняемый файл не всегда возможно. Он может быть просто поломан в процессе: антивирус не те байты поменяет и привет.

    В виртуальной машине можно, к примеру, поизучать действие вредоноса. Любопытства ради. И, обычно, без ущерба для основной машины. Если машины, конечно, не объединены в локальную сеть (хост система <-> виртуальная система) и мы не запускаем, к примеру, некоего сетевого червя, что распространяется, как раз-таки, по сети. Используя, допустим, какие-то уязвимости, размещенных в ней (локалке), хостов. Как видно, опасность сего мероприятия зависит от функциональности, продвинутости зловреда. Так что насчет 100% абсолютности - врядли, не всегда и не со всеми. Ну а в целом, если не фанатеть этим, то интересного там не особо много. Потестил раз, два и надоест. Возникнет вопрос: нафиг оно вообще?
    Тут же жизнь со всеми ее приключениями. Кого-то не взяли айтишником, а он - талантище. Так вот и мстит обидчивый миру за несправедливость. Как умеет. Или изначально пошел по пути криминала. Это уже о мотивах и психологии данных "писателей".

    Исполняемые файлы (exe) содержат в себе исполняемый программный код. Все остальные (если грубо разделить) форматы не содержат его.
    Пример. Раньше, как-то была статья об уязвимости встроенного просмотрщика фотографий Windows. Дескать, открытие, специально сформированного, графического файла могло вызвать ошибку программы просмотра и, вроде как, допустить несанкционированный доступ к системе из вне. Вообще, софт пишут люди и в нем хватает ошибок. Сколько, в процентном отношении, таких уязвимостей и насколько реально они опасны (что в итоге может натворить программа после получения доступа (ее опасная начинка) или злоумышленник (по сети)) - еще вопрос. Тут, всеже, эксешники (exe) вне конкуренции. Их-то и надо опасаться, при прочих равных. Хотя, "вирусы" тоже эволюционировали. Понапридумано масса иных лазеек. Сейчас классические вирусы не столь актуальны, нежели трояны.
    Временами, эти истории вообще походят на байки. Про зараженные архивы, картинки и уже тем более текстовики. Если подумать логически: чего может быть опасного в простейшем текстовом файле? Ну завершит он с ошибкой Блокнот, если, к примеру, файл будет очень большой (пару мегабайт, да и на слабом ПК). Так это не вирус, а ограничения программы. Памяти не хватило.

    Тема вирусов достаточно обширная. Начиная от самых безобидных "шуток" и до очень мудреных, резидентных вирусов, сетевых червей и т. п. Что висят только лишь в оперативной памяти. Но на такое способно малое число "писателей", в основном же, речь идет о лютой туфте.

    Так что тут дело в вероятности. EXE-высока вероятность, все остальные - мала, если не крайне. Либо ущерб незначителен. Легко фиксится руками. Как и обезвреживается само поделие.

    Если exe-файл не запускать, не выбирать команду по файлу "открыть", то он безвреден. Т. к., в данном случае, это просто набор байтов (как и все остальное компьютерное содержимое), а не некая выполняющаяся программа (код).
    Ответ написан
    2 комментария
  • Как получить username пользователя имея id без использования telegram web, но используя Python?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Получить id по username средствами Bot API нельзя. Его можно получить только вместе с событием, связанным с пользователем. Например, пользователь нажал кнопку /start, пользователь написал боту или в общую группу с ботом, пользователь вступил в группу...

    Telegram Bot API предполагает (и это абсолютно правильно!), что боты не могут писать произвольным пользователям и вообще знать об их существовании. Речь должна идти исключительно об инициативе пользователя начать коммуникацию. Иногда косвенно: например, вступая в группу, куда администратор добавил бот. Но случайных пользователей без их явно выраженного действия бот не может найти.

    Конечно, это можно обойти клиентским API (telethon выкидывает из-за того что его активно используют спамеры, но это тоже решаемо). Но я бы рекомендовал зайти с другой стороны: не надо вообще делать всякую фигню, на которую Bot API не рассчитан. Никакой пользы от неё нет.

    Например, если задача в том, чтобы получить список контактов для взаимодействия, то НЕ НАДО было собирать ссылки на профили пользователей. Вместо этого следовало просить их написать боту или вступить в группу. А там уже ботом словить информацию по ним и записать куда надо для ботовых задач.
    Ответ написан
    Комментировать