Задать вопрос
  • После клонирования системы на USB SSD она не грузится, почему?

    shurshur
    @shurshur
    Если в системе был включен BitLocker, то это не будет работать. Сам напоролся, когда впервые мигрировал систему с HDD на SSD.

    Надо выключить BitLocker и только после этого клонировать.
    Написано
  • Как защитить SPA от парсинга?

    shurshur
    @shurshur
    Valeriu Vodnicear, видимо потому что wasm типа сложнее обфусцированного js?

    Но если использовать совсем тривиальный API безо всякого контроля запросов - это не поможет вообще никак.
    Написано
  • Как обмениваться сообщениями с личного аккаунта WhatsApp через внешний сервис?

    shurshur
    @shurshur
    На гитхабе вагон реализаций эмуляции whatsapp web, можно пытаться искать активно обновляемые и популярные. Также есть коммерческие сервисы, которые подобное предоставляют.

    Но это всё рискованно и ненадёжно. И лучше не использовать на личном аккаунте и ценном номере, завести под это отдельную сим-карту, которую не жалко выбросить.
    Написано
  • Через что отправлять смс в битрикс?

    shurshur
    @shurshur
    Правильнее плясать от поставщика, искать с удобными ценами/условиями. У любого массового поставщика обычно есть готовые компоненты как для on-premise bitrix, так и для облачного bitrix24.

    БФЛ это банкротство? Что-нибудь типа коллекторской деятельности? Коллекторам вообще тяжело живётся. Там часто дохлые номера или уже новый владелец номера, при отправке на почту/мессенджеры/соцсети шквал нажатий пользователями "это спам", низкие рейтинги и блокировки отправителей...
    Написано
  • Не могу понять как правильно удалить сообщение?

    shurshur
    @shurshur
    НИКОГДА!!! нельзя удалять по принципу message.message_id - 1. Никто не гарантирует, что id всегда будут идти последовательно и что между сообщениями не вклинится что-то ещё. Эффекты подобных действий могут быть самыми непредсказуемыми. Вместо этого надо запоминать id отправляемых сообщений и явным образом удалять их.
    Написано
  • Как защитить SPA от парсинга?

    shurshur
    @shurshur
    Не бывает "ломанного" Selenium. И никакого "эмулятора браузера" там нет, там самый настоящий браузер, "web driver". Бывает undetected web driver - тот самый браузер, которому патчат те части, которые выдают его запуск в headless-режиме.

    Надо понимать, что Selenium изначально создавался вовсе не для того, чтобы обманывать сайты. Его делали для автоматизированного тестирования сайтов при их разработке.

    Надёжно отличить curl и postman нельзя вообще никак, потому что эти инструменты делают http-запросы в полно соответствии со стандартами, и если указать там все нужные заголовки по аналогии с браузером, то отличить их от браузера будет нельзя.

    Даже Cloudflare ломают, тем более что и Cloudflare работает на статистике запросов, потом показывает капчу и в случае её прохождения выставляется кука, с которой всё опять работает, в том числе для автоматизированной обработки.

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

    Если ваш бизнес может прогореть от того, что кто-то спарсит ваши данные, значит, это была изначально плохая бизнес-идея.
    Написано
  • Grub rescue unknown filesystem, как исправить?

    shurshur
    @shurshur
    Какие делались манипуляции?

    lvmid намекает на то, что там был lvm.
    Написано
  • Как обезопасить программу С# от взлома?

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

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

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

    Небольшой пример из области. Я как-то ломал древнюю программу, которая внутри содержала базу знаний, которую показывала в embedded IE. Файлы извлекались во временный каталог, показывались в браузере и тут же удалялись. Две разных части программы я ломал двумя путями:

    1. Часть ломалась запретом удаления файлов (в NTFS так можно сделать).

    2. Другая часть падала, если не могла удалить файл, но там я просто запустил циклический rsync, который быстро забирал все новые файлы.

    А дальше все собранные файлы я скриптами обрабатывал-переименовывал и конвертил в chm-файл, который в винде очень удобно и быстро можно смотреть штатным просмотрщиком справки.

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

    И всё это может требовать нехилых таких вложений сил и времени, которые может быть полезнее потратить на написание более полезного и даже прибыльного проекта. Так что следует начать с целеполагания и модели угроз.

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

    shurshur
    @shurshur
    dima89e, например, в составе msys2 есть.
    Написано
  • Как узнать когда страница сайта попала в индекс гугл?

    shurshur
    @shurshur
    Jorg2009, для этого ндо быть владельцем сервера, на котором крутится сайт.
    Написано
  • Что так с моим кодом?

    shurshur
    @shurshur
    xfnxfn, ну вот пример задачи, в которой можно многое попробовать.

    Считать с диска список файлов: имя, размер, дата изменения - и сделать список из него. Сделать сортировку по имени, по размеру, по времени изменения несколькими способами (пузырьком, слиянием итд). Заодно тренировка по алгоритмам.
    Написано
  • Что так с моим кодом?

    shurshur
    @shurshur
    xfnxfn, указатели по-прежнему нужны, просто сфера их применения сильно сократилась. Также часть функциональности указателей теперь можно исполнить с помощью ссылок &.

    При использовании std::vector и других структур STL вообще не нужно задумываться, например, о размере выделенной памяти. Добавляешь сколько угодно элементов - класс сам решит все вопросы. Как - его проблемы. И при удалении объекта деструктор сам всё за собой подчистит, не нужно забивать этим себе голову.

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

    shurshur
    @shurshur
    xfnxfn, матрицы обычно лучше передавать не двумерными массивами, а одномерными, с вычислением индекса по формуле i*n+j. Тогда и выделять память многократными операциями не нужно, и обращение к элементу массива не будет требовать двух операций с указателями.

    Но совет использовать STL - он полезный. Повсеместное использование указателей в C++ - это практика из конца прошлого века.
    Написано
  • Что так с моим кодом?

    shurshur
    @shurshur
    И в чём вопрос? Не компилируется? Не работает?
    Написано
  • Как появляется телеграм бот при переходе по ссылке в канал?

    shurshur
    @shurshur
    Это такая фича. Раньше бот мог писать только тем пользователям, которые по своей инициативе ему сами написали. С некоторых пор бот может писать подписчикам канала, в котором бот добавлен как админ.

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

    shurshur
    @shurshur
    Елена, такси, доставка и даже неведомое "прочее" позволяют указывать точки куда приехать и куда привезти. Я даже больше скажу - это ещё и точнее работает. Давать доступ к своему местоположению вообще необязательно.
    Написано
  • Какой лимит лайков через VK API?

    shurshur
    @shurshur
    Если использовать API с токеном пользователя, то это всё равно, что пользователь сам лайкает, так что лимиты такие же. Но если начать слишком активно ботоводствовать действия пользователя, то реально можно нарваться на бан.
    Написано
  • Возможно ли создать асинхронную функцию чтобы отправлять в неё данные постепенно без await?

    shurshur
    @shurshur
    RINCODE, не надо верить любым сказкам, которые рассказывает нейросеть. В современной версии телебота есть класс AsyncTelebot, который как раз асинхронный.

    Однако разбираться потом, что там сломается при замене класса на асинхронный, может быть не очень просто. И вполне возможно окажется, что проще переписать всё на более развитую асинхронную библиотеку aiogram либо даже на сам pyrogram, раз уж он тоже предполагается к использованию.
    Написано
  • Баг с FSM с telebot?

    shurshur
    @shurshur
    0xsetup, я go не знаю и поэтому опишу "на пальцах".

    Предствим себе, у нас есть "состояние" - это может быть строка, а может быть класс с полями. Самый простой способ хранить состояния - это массив:

    user_states[user_id] = state

    Но это имеет недостатки: мы вынуждены обходиться одним процессом, а также теряем состояние при падении/перезапуске. Ещё на это требуется память, при большой аудитории это может оказаться важно.

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

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

    Вот, и вместо массива состояний можно класть/брать в базу или в key-value.

    В данном случае видимо используется redis. Но если состояния путаются, то я полагаю там что-то путается в ключах. Например, может быть stateKey не только userId использует, но и как-то зависит от других внешних сущностей, которые успевают поменяться между запусками?

    Повторю, я go не знаю, рассказываю общие вещи.
    Написано