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

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Например в Эльдорадо менеджеры повелись на маркетинг 1С и выбрали битрикс, не спросив технарей. В его оптимизацию и заточку под нужды компании грохнули миллионы, но как ни старайся - это битрикс, он будет тормозить и глючить.
    Ответ написан
    5 комментариев
  • Какой конденсатор подходит для снятия статического заряда с тела?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Поставьте увлажнитель воздуха. Основная причина накапливания статики - сухой воздух в помещении, особенно в зимнее время года.
    Конденсатор вам не поможет.
    Ответ написан
    2 комментария
  • Как скачать видео, начинающееся с blob?

    @TheSima
    Гуглится именно эта страница, но нормального ответа так и нет(не у всех Chrome), решил дополнить от себя.
    Для видео с протоколом HLS решение такое(источник):
    1) Определить m3u8 "список" для того видео, которое хотите скачать. Обычно это делается так:
    - Включаем режим разработчика в браузере и открываем(в этом режиме) вкладку Сеть.
    - Открываем страницу с видео
    - В появившихся строчках ищем "что-то".m3u8 (можно написать .m3u8 в строку фильтра во вкладке Сеть)
    Например: http://example.com/video_url.m3u8
    Это и будет нужная ссылка на "список"
    2) Скачать ffmpeg (и распаковать):
    Windows: можно здесь(ссылка устарела), здесь скачать из Assets файл ...-full_build.zip или 7z по вкусу, распаковать. Открыть папку bin, зажать Shift и кликнуть правой кнопкой в пустое место в окне папки bin, нажать "Открыть окно команд".
    Linux: я думаю, ребята разберуться ;)
    3) Скачать видео с помощью ffmpeg :
    Ввести следующую команду, заменив ссылку из примера на ссылку из пункта 1:
    ffmpeg -i "http://example.com/video_url.m3u8" -c copy -bsf:a aac_adtstoasc "output.mp4"

    output.mp4 - будет ваше видео) имя файла в команде можно менять ;)
    Ответ написан
    2 комментария
  • Как сделать "постамат", работающий по запросам с сайта?

    gbg
    @gbg Куратор тега Linux
    Любые ответы на любые вопросы
    Для того, чтобы отдать команду замку на открытие дверки, не обязательно использовать связку из ардуины и rpi. Достаточно мелкого контроллера типа ESP8266. У него уже хватит мозгов поддерживать связь с сервером и открывать замок.

    Вы беретесь за большую задачу и хотите решать ее всю сразу. Так вы рискуете утонуть в деталях. Сейчас у вас сделана декомпозиция вида "как на мой взгляд это должно работать".

    Более продуктивна декомпозиция "из каких этапов будет состоять разработка вундервафли".

    Она разбивается на три части:
    1) Железо: ящик с замком, электроника, питание
    2) Серверная инфраструктура - хостинг, домен, SSL, безопасность
    3) Софт, который все собирает в кучу.

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

    Смотрим, что для этой задачи понадобится в плане железа. Это esp-01 - миниатюрный модуль, который способен выйти в интернет. На GPIO2 у него есть светодиод, так что достаточно подать на модуль питание по схеме и закинуть на него простую прошивку на ардуино. (Да, Arduino-ide их поддерживает).

    Итого, нужны esp-01, блок питания на 3.3 вольта (можно две батарейки AA), адаптер USB-UART для прошивки, макетная плата и провода, чтобы собрать все в кучу.

    Пишете прошивку, которая цепляется к wifi, дергает по HTTPS скрипт на сайте и в зависимости от того, что выдал скрипт, включает или выключает GPIO. Таким образом, вы сразу обеспечиваете и минимальный уровень ИБ - никто не сможет подменить ваш сайт и командовать девайсом, для этого нужно будет подделать сертификат HTTPS.

    Полагаю, что сайт и скрипт вы сможете поднять и написать самостоятельно, самый простой хостинг и домен обойдутся примерно в 10 баксов в месяц, а сертификат HTTPS можно взять бесплатный через certbort.

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

    Личный опыт - дома через телеграм-бот управляю бытовой техникой. Все самописаное-самопайное.
    Ответ написан
    7 комментариев
  • Как защитить авторство на контент сайта от копирования?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Есть ли возможность защитить свой сайт от копирования
    Нет

    Существует ли возможность защитить от копирования
    скопированный проект с github'a?
    Чего?
    Ответ написан
    1 комментарий
  • Как защитить авторство на контент сайта от копирования?

    GavriKos
    @GavriKos
    Такая возможность только одна - не выкладывать в интернет то, что не должно быть скопировано. Все
    Ответ написан
  • Изучение андроид разработки что выбрать Java или kotlin?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Уже 100500 раз отвечен этот вопрос. Выбрать котлин. Это вполне отдельный язык, официальный язык для андроида. Можно учить его отдельно от джавы, вовсе не нужно страдать с самого начала. Потом, когда ты его изучишь, и твоя компетентность вырастет, можно будет доизучить особоенности JVM, джавовые коллекции и тд. На первых парах это совершенно не нужно.
    Ответ написан
  • Как запатентовать дизайн или идею продукта?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Идеи нельзя запатентовать.
    Ответ написан
    Комментировать
  • Можете подсказать практичный список литературы по разработке драйверов для linux и вообще по работе в ядре?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    The Linux Kernel Module Programming Guide: https://sysprog21.github.io/lkmpg/
    Linux Device Drivers: lwn.net/Kernel/LDD3
    Understanding the Linux Kernel: https://doc.lagout.org/operating%20system%20/linux...
    Linux Kernel Development: https://raw.githubusercontent.com/jyfc/ebook/maste...
    Understanding the Linux Virtual Memory Manager: https://www.kernel.org/doc/gorman/pdf/understand.pdf
    Unreliable Guide To Locking: https://www.kernel.org/pub/linux/kernel/people/rus...

    Содержимое каталога Documentation в ядре.
    https://lwn.net/Kernel/Index/ для точечного погружения в отдельные топики.
    Каталог doc с kernel.org: https://www.kernel.org/doc/
    Ответ написан
    2 комментария
  • Может ли яндекс карта указать если адрес находится за МКАД'ом или в его пределах?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Нарисуй себе полигон МКАД и проверяй внутри твой адрес или нет.
    Ответ написан
    Комментировать
  • Я только месяц изучаю С++, где найти ментора который поможет решать задачи?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Начните с более простых задач.

    Если не можете решить простую задачу примерно неделю, то пишите сюда, поможем. А если не можете решить простую задачу целых 5 минут, то продолжайте думать, потому что в таком случае от готового решения пользы будет ноль в плане обучения.
    Ответ написан
  • Почему шаблон django игнорирует id в словаре?

    WStanley
    @WStanley
    Back-end Developer
    1. Тебе надо чтобы твоя модель с комментариями имела ключ сама на себя
    parent = models.ForeignKey("self")
    2. Тебе надо во вью сформировать к примеру вот такой список с данными
    ПС: это делается с помощью рекурсивной функции, гугли (как рекурсивно сформировать дерево, примерно)
    ПС2: в список возможно также стоит включить parent_id и все что необходимо
    comments = [{
        'id': 1,
        'text': 'asdaasd',
        'childrens': []
    },
    {    'id': 2,
        'text': 'asdaasd',
        'childrens': [
            {    'id': 7,
                'text': 'asdaasd',
                'childrens': [
                    {    'id': 12,
                        'text': 'asdaasd',
                        'childrens': [
                            {    'id': 23,
                                'text': 'asdaasd',
                                'childrens': [],
                            },
                            ... # и т.д.
                        ],
                    },
                    ... # и т.д.
                ],
            },
            {    'id': 8,
                'text': 'asdaasd',
                'childrens': [],
            },
            ... # и т.д.
        ],
    },
    {    'id': 2,
        'text': 'asdaasd',
        'childrens': [
            {    'id': 15,
                'text': 'asdaasd',
                'childrens': [],
            },
            {    'id': 19,
                'text': 'asdaasd',
                'childrens': [],
            },
            ... # и т.д.
        ],
    }
    ... # и т.д.
    ]

    3. После этого выкинуть его в шаблон, и в шаблоне можно будет сделать так:
    ПС: там где список childrens пустой значит нет комментариев-ответов
    {%for comment in comments%}
        {{ comment.id }}
        {{ comment.text }}
        {% if comment.childrens %}
             # По идее здесь тоже надо будет организовать рекурсию, для отображения множественной вложенности
             # гугли - django template recursive tree, примерно
             # К вложенным комментариям вот так можно обращаться будет
            {% for children in comment.childrens  %}
                 {{ children.id }}
                 {{ children.text }}
                 {% if children.childrens %}
                      # и т.д.
                 {% endif %}
            {% endfor %}
        {% endif %}
    {% endfor %}

    Вот примерно так все это должно работать если использовать ссылку на себя
    ПС: а вообще для работы с деревом грамотно использовать nested sets что и делается в django-mptt, но это уже совсем другая история :)
    Удачного велосипедирования!
    Ответ написан
    4 комментария
  • Как это называется?

    Вы открыли exe-шник или библиотеку в блокноте видимо. Читайте про portable executable
    Ответ написан
    Комментировать
  • Как лучше всего делать статичный сайт-одностраничник в 2021-ом?

    tundramani
    @tundramani
    сделай сайт в конструкторе
    или стань программистом и тогда сам поймешь как делаются сайты
    Ответ написан
    Комментировать
  • Почему убунту выдает такие ошибки переустановка не помогла?

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

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Конечно, вы не правильно используете next step handler
    На гитхабе есть хороший пример использования

    https://github.com/eternnoir/pyTelegramBotAPI/blob...
    Ответ написан
    3 комментария
  • Есть ли книги/документация по администрированию сервера, где всё в одном?

    ky0
    @ky0 Куратор тега Системное администрирование
    Миллиардер, филантроп, патологический лгун
    Да, есть такое место, где всегда можно найти актуальную информацию обо всех системах. Называется - интернет.

    Заходите в поисковик и ищете информацию о версиях ПО в конкретных дистрибутивах, ченджлогах, изменениях синтаксиса и т. д.

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    База данных всегда сама подробно расскажет, почему у неё не получилось выполнить запрос. Надо её только об этом попросить.

    Поэтому сначала учимся правильно соединяться.
    Весь этот детский лепет "не могу соединиться с БД" выкидываем и пишем нормальный код, который сам, без всяких проверок, сообщит нам об ошибках.
    В случае mysqli это
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect($host, $user, $pass, $db_name);
    $link->set_charset("utf8mb4");

    Здесь первая строчка отвечает как раз за информирование об ошибках

    Кроме того надо не забыть про ошибки РНР
    Во-первых, всегда в коде должно быть error_reporting(E_ALL);
    Плюс на домашнем компе ini_set('display_errors',1);, а на боевом - ini_set('display_errors',0);ini_set('log_errors',1);, и смотреть, соответственно, в логах.

    После этого переписываем запрос. Причем так, чтобы данные в БД всегда попадали отдельно от самого запроса. Это непреложное правило, которое надо соблюдать всегда.
    Для этого надо
    • Заменить все переменные в запросе на специальные маркеры, которые называются плейсхолдеры или параметры, а по сути - просто знаки вопроса
    • Подготовить запрос к исполнению с помощью функции prepare(). Эта функция принимает строку запроса и возвращает экземпляр специального класса stmt, с которым в дальнейшем и производятся все манипуляции
    • Привязать переменные к запросу.
    • Выполнить подготовленный ранее запрос с помощью с помощью execute()

    В mysqli это будет так
    $sql = "INSERT INTO `events` (`title`, `discription`, `date`, `img`) VALUES (?,?,?,?)";
    $stmt = $link->prepare($sql);
    $stmt->bind_param("sssss", $title, $discription, $date, $path);
    $stmt->execute();

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

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

    Но по-хорошему для работы с БД в РНР лучше использовать PDO, Тем более что там колупаться с bind_param не нужно, а можно сразу отправить все данные в execute

    Подключение
    $host = '127.0.0.1';
    $db   = 'test';
    $user = 'root';
    $pass = '';
    $port = "3306";
    $charset = 'utf8mb4';
    $options = [
        \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
        \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
        \PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $dsn = "mysql:host=$host;dbname=$db;charset=$charset;port=$port";
    $pdo = new \PDO($dsn, $user, $pass, $options);

    Здесь за информирование об ошибках отвечает параметр PDO::ERRMODE_EXCEPTION, а остальные просто для удобства/корректности.

    Выполнение запроса
    $sql = "INSERT INTO `events` (`title`, `discription`, `date`, `img`) VALUES (?,?,?,?)";
    $stmt = $link->prepare($sql);
    $stmt->execute([$title, $discription, $date, $path]);
    Ответ написан
    2 комментария
  • Каков алгоритм перехода от Ардуино-поделки к серии?

    gbg
    @gbg Куратор тега Arduino
    Любые ответы на любые вопросы
    По первому вопросу - да, это крайне желательно. Плюсом также идет возможность вписать плату в нужный габарит и конфигурацию корпуса, возможность выкинуть лишние детальки (вот вам нужен конвертер USB-Serial? А линейный источник питания? А разъем USB.?) и так далее. Зато нужна пачка фильтров по питанию (это же автомобиль), защита входов и выходов.

    По второму вопросу - java тащит за собой jre, а он довольно жирный, ему нужен жирный контроллер, который любит вкусно кушать электроэнергию. Кроме того, поведение и задержки программы на C++ довольно предсказуемы, на java - нужны дополнительные ухищрения для того, чтобы сборщик мусора не навестил вас внезапно.

    Можно дальше развивать тему, отметив, что в условиях жестко ограниченных ресурсов (сколько там RAM? 8 килобайт?) язык с ручным управлением ресурсами (C, C++) гораздо более предсказуем, нежели вся такая автоматическая и удобная жаба.

    Ну и еще - я за всю свою радиогубительскую практику (более 15 лет) ни разу не покупал ардуину - я сразу проектировал прототип и делал плату (сначала ЛУТом, потом заказывал на производстве, так как это качественней и не намного дольше + на производстве изготовят сразу десяток плат, которые не страшно запороть в процессе отладки) - это
    на порядки надежнее ковыряний в клубке проводов. Ну и некоторые девайсы с аналоговым трактом (анализатор спектра, анализатор миоактивности) в виде клубка просто не работают.
    Ответ написан
    2 комментария