Задать вопрос
  • Часто ли телеграм боты подвергаются атакам и как вы этого избегаете?

    Vindicar
    @Vindicar
    RTFM!
    Ну для начала что значит "атака"? Какую угрозу ты ожидаешь? Потому что ответы будут ОЧЕНЬ разные в зависимости от этого.

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

    Зафлудить бота запросами? С одного аккаунта не получится, а с многих - недёшево. Кому ты нужен за такие деньги?

    Потыкать команды бота на пример SQL-инъекции? Если бот вообще использует БД, достаточно использовать стандартные средства подстановки параметров в запросы, а не колхозить SQL чере зформатирование строк.

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

    Короче, ответь хотя бы для себя на вопросы:
    1. чего конкретно боишься?
    2. кому конкретно ты нужен?
    Ответ написан
    2 комментария
  • Как распарсить приведённую строку?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Разбей строку по амперсандам. А потом - по знаку равно.
    Ответ написан
    Комментировать
  • Как вместо числа "5620", показывать "5,6K"?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Вы какой-то не тот интернет "облазили". Задача давно решена, ответ ищется за три секунды: https://www.google.com/search?q=thousands+to+k+php
    Но даже если предположить, что никто до вас такого не делал, то ведь это алгоритм на десять строчек...
    Ответ написан
    Комментировать
  • Как незаметно переползти на новый сервер?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Обычно поднимают балансировщик и делают так что сначала все ходят на 1.1.1.1.
    Потом делают перевод новых сессий в новое место в пропорции 20:80.
    И так далее пока все сессии не переползут.
    Ответ написан
    4 комментария
  • Как правильно покрыть WiFi сетью квадрат 5х5 км. на 100 000 человек?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Правильно - идти к профессионалам, которые будут гарантии связи по ТТХ давать.
    Они разворачивают сеть из специализированных точек доступа с mesh сетью и контроллерами.

    А вообще предполагаю, что вопрос отвечается простым гуглением типа "wifi для фестиваля"
    Ответ написан
    2 комментария
  • Как защититься от хакерской атаки на телефон?

    @maxsmeller
    Сейчас на полном серьезе тебе скажу, с моим знакомым была похожая ситуация. Ему рекомендовали пойти к врачу, но он не верил, что кукуха едет. Потом за ним стали следить спецслужбы через фонарные столбы и автомобильную дверь. Он ее разобрал. Дальше было только хуже. Бросай всё и иди к врачу. Все написанное выше - не сарказм или издевательства. У тебя едет кукуха.
    Ответ написан
    4 комментария
  • Частное облако и дата-центр, отличия?

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

    Sanes
    @Sanes
    Посмотрите здесь. Вроде были там какие-то бесплатные варианты.
    Ответ написан
    Комментировать
  • Как тестировать горизонтальное масштабирование?

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

    kubernetes, rabbitMQ, и прочие плюшки - это только инструменты, и кстати их использование не обязательно (хотя идеи используемые в них использовать так или иначе придется), и требования именно для их использования так же минимальны.

    Если говорить про конкретику - kubernetes можно развернуть буквально на одном физическом сервере (на виртуальных машинах) и полноценно изучать все его фишки, кстати будет отлично видны накладные расходы на те 'удобства', которые оно предоставляет, но помним что когда кластер разрастется до нескольких физических машин, это станет уже незаметно.

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

    И да, все это можно вообще реализовать без существующих инструментов, написать десяток другой небольших скриптов, собственно так они (большие продукты типа kubernetes) и появились, кому то надоел зоопарк скриптов и разношерстных приложений для этого
    Ответ написан
    Комментировать
  • Как отключить ssl-pinning в приложении, которое написано на React Native?

    Декомпилируешь apk.
    Затем ищешь место в коде, где включается ssl-pinning и добавляется сертификат - скорее всего там будет фигурировать вызов метода certificatePinner() класса OkHttpClient.
    Тебе нужно вызов этого метода убрать.
    Затем собираешь apk обратно.

    Но это зависит ещё от того, как именно приложение rossgram реализовано - это я описал пример, если оно написано на java/kotlin

    UPD: rossgram написан на React Native. Сейчас ещё немного покопаю, как можно декомпилировать его

    UPD2: для декомпиляции React Native приложений есть https://github.com/numandev1/react-native-decompiler
    Тебе нужно достать из apk файл index.android.bundle - для этого используй apktool

    UPD3: react-native-decompiler не может это декомпилировать
    Ответ написан
    2 комментария
  • Как читать книгу Вирт, Алгоритмы и Структуры данных школьнику?

    Adamos
    @Adamos
    Программирование в начале изучения - навык. Для него достаточно учебника, где простым языком написано, какие есть структуры и алгоритмы и как их использовать. Незачем лезть в издания, для прочтения которых требуется знание матана. Они - для тех, кто хочет разобраться, как оценить оптимальность использования тех или иных алгоритмов и структур.
    Вы же и по методичке без всякой аналитики можете выучить синтаксис и начать практиковаться. Потом, если захочется, полезете глубже. Спойлер: многие и многие программеры до этого этапа не доходят никогда ;)
    Ответ написан
    Комментировать
  • Как запустить puppeteer в хроме с другим пользователем (профилем)?

    Nik_o_lay
    @Nik_o_lay Автор вопроса
    Изучаю фронтенд
    Пока остановился на этом:
    1. Создаем профили в браузере.
    2. Ищем директорию, где они хранятся в файлах.
    3. В папке профиля создаем папку Default.
    4. В папку Default переносим содержимое папки профиля.
    5. В args указываем путь к профилю.

    Пример в Хроме на Убунту:
    const browser = await puppeteer.launch({args:['--user-data-dir=/home/rut/.config/google-chrome/Profile 1']});
    const page = await browser.newPage();
    await page.goto('https://google.ru/');
    await page.screenshot({path: 'google.png'});
    await browser.close();
    Ответ написан
    Комментировать
  • Хорошая ли стратегия разбивать монолит джанго на микросервисы джанго?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Смотри. Уже прошло время когда все пилили монолиты на микросервисы. Щас пошло переосмысление.
    Объективно есть 2 причины пилить. Первое - организационная. Команда по какой-то причине не хочет
    или не может поддерживать приложение. Или там что-то с бизнесом. Слияние. Поглощение. Передача
    проекта другой команде в поддержку. Тогда берут и ставят задачу раздела отвественностей.
    Конвей про это писал еще.

    И второе - это баланс нагрузки и децентрализация. Про failover тут еще даже речи нет. Это
    тяжелая тема и распилить монолит так чтобы его части были отказоустойчивы очень трудно. Более
    того в случае синхронных взаимодействий между частями микросервисов может быть даже падение
    перформанса
    . Да. Теоретики которые там пишут восторженные отзывы - совершенно игнорируют
    накладные на RPC. И не упоминают что в монолите цена RPC была равна нулю. Иногда RPC заменяют
    на MQ - но это новая архитектура и это надо полностью переделывать бизнес.

    И что делать с базой данных? Это тот еще вопрос. Я почти готов спорить что вы базу пилить не будете.
    И что в результате будет? Иммитация микро-сервисов? Где слабая связность?

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

    Но имеет смысл сделать модуляризацию монолита. Например что там...
    application
    - sales
    - hiring
    - userprofiles

    Тоже очень полезно для управления сложностью. И пускай себе будет монолит зато будет сильный
    контроль за изменениями.
    Ответ написан
    6 комментариев
  • Возможно ли найти неоплачиваемую стажировку?

    opium
    @opium
    Просто люблю качественно работать
    Чирканите на почту если не найдете
    Ответ написан
    2 комментария
  • Возможно ли найти неоплачиваемую стажировку?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Попробуйте взглянуть на вопрос с точки зрения бизнеса :)

    Приходит чел, говорит "нихрена не умею, но готов работать бесплатно". Какую работу можно доверить такому челу, чтобы от нее был хоть минимальный толк? Да никакую. Все что он там наваяет - все придется пропускать через ревью специалиста (то есть отвлекать его от основной работы). Так какой смысл в этом? Правильно, никакого.
    Ответ написан
    6 комментариев
  • Как разбить строку через разделитель несколько раз?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    $result = preg_replace('~^(.{8})(.{4})(.{4})(.{4})(.*)~', '$1-$2-$3-$4-$5', $str);
    Ответ написан
    Комментировать
  • Какую базу данных использовать для такого проекта?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут подходит любая реляционная SQL БД потому что нет противопоказаний. Реляционку мы выбираем
    уже более 30 лет как default вариант и почти не ошибаемся.

    Когда задача имеет признаки ярко выраженной high-load системы - мы делаем ей частичную денормализацию
    и раскладываем ее в NoSQL Key-Value решение. Но это не про улучшение а это про неизбежность. У нас нет выхода просто.
    Иначе мы клиенту не сможем быстро отдать какой-то резуальтат.

    Когда задача имеет ярко выраженную документную природу (нет спецификации на values) - мы берем MongoDb/CouchDb.

    Когда задача хранит граф и ищет в графе и вообще требует графовых алгоритмов - то мы берем Neo4j или ей подобные.

    Когда задача хранит данные измерений (телеметрия) - то предпочтительно взять InfluxDb или ей подобные. Здесь-же мы предполагаем что у нас - не будет joins а будет только измерения в диапазоне времени.

    Но в данном ТЗ и на картинке обычная SQL БД (MySQL/Postgres) вполне себе нормально справляется.
    Ответ написан
    Комментировать
  • Какую базу данных использовать для такого проекта?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Ну, на основной вопрос уже ответили, а я освещу отдельную проблему, которая очень часто волнует умы юных падаванов.

    когда лучше реляционную и нереляционную использовать?

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

    Как только осознаёшь этот простой факт, то всё сразу становится на место:
    Если нужна база данных, то и использовать надо базу данных. Реляционную. Какую именно - в вашем случае не принципиально.

    Если вдруг проект пройдет стадию "неясные идеи", и выльется во что-то практическое, и даже появится какая-то нагрузка, то можно будет начать думать про использование одного или нескольких подсобных хранилищ в дополнение к базе данных.
    Ответ написан
    2 комментария
  • Как реализовать диалоговый бот на PHP?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    $data = json_decode(file_get_contents('php://input'), TRUE);

    Вот тут в $data у вас не только сообщение, но и много другой информации. В частности, айди юзера.
    я думаю, что этот айди можно использовать в качестве идентификатора сессии, передавая в session_id() перед вызовом session_start()
    Во всяком случае можно попробовать
    если сессия не взлетит, то эмулировать её на любом другом хранилище, используя идентификатор юзера чтобы сохранять состояние бота для него

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