• Каким образом и где можно разместить аудиофайл с расширением mp3 чтобы доступ на прослушивание к нему был, но возможность скачивания не была доступна?

    CityCat4
    @CityCat4 Куратор тега Информационная безопасность
    //COPY01 EXEC PGM=IEBGENER
    Задача не имеет решения.

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

    А что помешает энтузиасту-фанату написать свой плеер с функцией сохранения? Опять же аудиопоток можно банально записать с аудиовыхода - без всяких аудиокабелей - просто включив воспроизведение в колонки и положив рядом телефон :) Да, качества не будет, но обычно когда задумываются о такой вот вещи - качество не нужно, обычно это аудиозаписи "волшебных курсов", там достаточно разборчивого текста.
    Ответ написан
    3 комментария
  • Возможен ли перенос сайта на новый домен без потерь?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Много чего читал, все объяснено малость «на ленточке», без точных цифр в большом количестве, чтобы представить общую картину.

    Вы хотите точных цифр, с закрытым алгоритмом ранжирования и без конкретного региона, ключа, устройства, тематики итп?
    Есть ли какие-то среднестатистические данные?

    Зависит от контекста и пряморукости переносчика, но падение будет гарантировано.
    Ответ написан
    1 комментарий
  • Имеют ли VPN-провайдеры юридическое право не хранить логи пользователей?

    ValdikSS
    @ValdikSS
    И, если на самом деле за пользователями таких VPN нет никакой слежки, логирования, то это прекрасная возможность для хакеров, террористов, продавцов оружия/наркотиков и прочих правонарушителей оставаться незамеченными.
    Всё так, они и пользуются:
    https://edition.cnn.com/2021/06/30/tech/doublevpn-...
    https://www.cnet.com/tech/services-and-software/fb...
    https://www.safetydetectives.com/news/mullvad-vpn-...

    Думаю, вам стоит начать с инструкции Tor по работе Exit Node. Там есть и ссылки на сопутствующие законы в разных юрисдикциях, и примеры работы с письмами о злоупотреблениях, атаках и нарушениях копирайта.
    https://community.torproject.org/relay/community-r...
    Ответ написан
    Комментировать
  • Как подготовить перламутровую этикетку к печати?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А не лучше ли узнать в конкретной типографии, в которой собираетесь заказывать этикетки?
    Ответ написан
    Комментировать
  • Как поместить в grid полоску?

    delphinpro
    @delphinpro
    frontend developer
    нарисовать градиентом на фоне грид-контейнера

    Ответ написан
    9 комментариев
  • Почему в RTK Query эта ошибка вылазит?

    Elaryks
    @Elaryks
    В документации написано, что импорт для React должен быть таким (обратите внимание, откуда импортируется):

    import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'
    Ответ написан
    Комментировать
  • Связи в ООП, Агрегация в PHP как часто используется?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Основа всех современных фреймворков - это контейнер зависимостей. Который, создавая на лету экземпляр требующегося для обработки НТТР запроса класса, "внедряет" в него (через конструктор или через параметры методов) необходимые этому создаваемому объекту/вызываемому методу зависимости. Создавая их на лету или используя готовые.
    И, в свою очередь, создавая эти зависимости, также внедряет нужные уже им сервисы. И так по цепочке.

    Если вы посмотрите на пример реализации контроллера в Симфони например, то вы нигде не увидите что-то вроде
    public function process()
    {
        $request = new Request();
        $param = $request->get('name')
    }

    а только
    public function process(Request $request)
    {
        $param = $this->request->get('name')
    }


    Заметил, что в PHP если и используется связи между объектами(ассоциация), то только в виде композиции,

    А вот тут я реально удивился. Скорее это я бы у вас попросил "пример кода" в котором "вы заметили" композицию. Потому что в современном РНР коде её днем с огнём не найти - везде сплошная агрегация. Даже там, где по сути подошла бы и композиция. Давно ли вы видели в коде создание new Сlass внутри класса вместо использования $this->object? И если да - то мне страшно любопытно - где?

    Хотя нет, кажется я понял. Есть такие гении, которые действительно, вместо
    class User
    {
        public function __construct(Database $db)
        {
            $this->db = $db;
        }
    }

    пишут
    class User
    {
        protected $db;
        public function __construct()
        {
            $this->db = new Database();
        }
    }

    Но тут надо понимать, что это дети, которые вчера увидели редактор кода. Больше никто так не пишет.
    (Тут надо оговориться, что это не догма, и внедрение через параметры не обязательно. Вполне можно создать какой-то объект и на лету, но это случается гораздо реже, чем использование уже готового)

    редко бывает, когда создаётся самостоятельный класс, а потом он ещё и в другой класс попадает.

    А здесь вы вообще какую-то чушь написали. Если говорить про классы, то они вообще почти никогда не создаются кодом на лету. Классы пишет программист, и сохраняет в коде программы. Которая потом выполняется, и создает из этих классов объекты.
    А если вы имели в виду объекты, то их создаётся миллион, и все они "попадают" в другие объекты. Даже при обработке НТТР запроса
    Ответ написан
    9 комментариев
  • Почему кнопка постоянно disabled?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Отвечать прямо не буду, предложу ряд встречных вопросов, разберётесь с ними - разберётесь со своим:

    Сколько у вас чекбоксов?
    Что выдаёт метод every для пустого массива?
    Как работает оператор ||?
    Ответ написан
    2 комментария
  • Стоит ли использовать lodash сейчас?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Я так понимаю все что предлагает лодаш уже реализовано нативно

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Странное желание - отказаться от механизма, предназначенного для работы с данными, чтобы колхозить на коленке его замену.
    300000 строк в базе данных с правильным индексом никакой заметной нагрузки на сервер не создадут.
    Ответ написан
    Комментировать
  • Сколько комбинаций из цифр 5678?

    Maksim_64
    @Maksim_64
    Data Analyst
    Вы имеете ввиду сколько перестановок возможно без замены то есть если я использовал например 8 то все я не могу использовать 8 снова. Логика следующая у вас есть 4 позиции _,_,_,_ на первую вы можете сколько вариантов подставить вы имеете на выбор 5, 6, 7, 8 то есть 4. Вы имеете 4,_,_,_. Теперь выбираете из 3 чисел. 4,3,_,_ и по той же логике получаете 4*3*2*1.
    Ответ написан
    Комментировать
  • Для чего вызывают apply и call последовательно?

    Alexandroppolus
    @Alexandroppolus
    кодир
    супермозговывертный вызов можно сократить до
    console[level].apply(console, argsWithFormat)

    console[level] - некая функция из консоли, например, console.error. Но в IE9 у неё нет apply, и вызов через точку не сработает. Потому берется стандартный Function.prototype.apply и вызывается через call, так что console[level] станет для него как this (как то, что перед точкой), а остальное - аргументами.
    Ответ написан
    6 комментариев
  • Права для локальной разработки должны быть 777?

    @Everything_is_bad
    Если выставить 755 то начинаются вечно какието косяки, то скрипт не может создать папку, то откорректировать файл.
    для локальной разработки пофиг, но лучше всё таки разобраться как это они работают, чтобы понимать, а не делать тупое 777. Ну и кроме прав, разобраться с owner и group

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

    @psiklop
    let href = "https://site/ua-search/page-4?search=футболка";


    Твой вариант, но со вторым параметром в substring:
    console.log(href.substring(href.indexOf("page-")+5, href.indexOf("?")));


    Вариант с регуляркой:
    console.log(href.match(/page-(\d+)/)[1]);
    Ответ написан
    1 комментарий
  • Почему появляется такая ошибка на PHP?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    - $path = $_SERVER['DOCUMENT_ROOT'];
    - $path .= "./snippets_main/head_main.php";
    + $path = __DIR__ . "/snippets_main/head_main.php";
    Ответ написан
    Комментировать
  • Как масштабировать число с идеальной точностью?

    vaut
    @vaut
    Предлагаю решить уравнение
    11*x=13
    И почитать что такое рациональные числа.
    Ответ написан
    2 комментария
  • Laravel 5.2 редирект на предыдущую страницу с сохранением get параметров?

    greabock
    @greabock
    Могу
    Например, в Laravel есть механизм intended. Можно посмотреть как он устроен, и сделать нечто подобное.
    Нас конечно же больше всего интересуют методы guest и intended класса Illuminate\Routing\Redirector.

    /**
         * Create a new redirect response, while putting the current URL in the session.
         *
         * @param  string  $path
         * @param  int     $status
         * @param  array   $headers
         * @param  bool    $secure
         * @return \Illuminate\Http\RedirectResponse
         */
        public function guest($path, $status = 302, $headers = [], $secure = null)
        {
            $this->session->put('url.intended', $this->generator->full());
    
            return $this->to($path, $status, $headers, $secure);
        }
    
       /**
         * Create a new redirect response to the previously intended location.
         *
         * @param  string  $default
         * @param  int     $status
         * @param  array   $headers
         * @param  bool    $secure
         * @return \Illuminate\Http\RedirectResponse
         */
        public function intended($default = '/', $status = 302, $headers = [], $secure = null)
        {
            $path = $this->session->pull('url.intended', $default);
    
            return $this->to($path, $status, $headers, $secure);
        }


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

    Реализуйте схожий механизм со своими нюансами и будет вам счастье.

    Вообще (если ваша задача описана в вашем вопросе в полной мере) будет вполне достаточно сделать так:
    if(auth()->guest()) {
        session()->put('url.intended', url()->full());
    
        return redirect()->route('auth');
    }
    Ответ написан
    3 комментария
  • Как перенести большую базу на другой сервер без простоев?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Рабочий ли вариант если просто через rsync передать всю папку /var/lib/mysql?

    Просто перенос файлов рабочей БД окончится тем, что файлы есть, а базы нет, потому что неоткуда взяться метаданным в системной базе данных. Вернее, всё ещё забавнее - базы вроде бы и нет (USE приводит к ошибке "БД не существует"), но её нельзя создать, потому что она есть. И то же самое с таблицами (SELECT/DROP/прочее нельзя, потому что таблицы нет, CREATE нельзя, потому что она есть).

    Метод сработает, если переносить все БД сразу, включая служебные. Но требуется точное соответствие исходной и конечной конфигураций - начиная с версии и сборки MySQL и кончая именами каталогов и именами/паролями учётных записей в операционной системе. Плюс перегенерация и переподключение сертификатов.

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

    Решений без блокирования практически не существует. Нет, можно наколхозить реальное решение, которое обойдётся вообще без остановки, я даже представляю как именно (FEDERATED ENGINE + triggers), но подробно рассказывать не буду - для её реализации нужны достаточная квалификация и опыт, на одних советах шанс на удачу невелик, скорее всё поломается.

    Есть вполне себе документированные способы: Copying MySQL Databases to Another Machine. Особенно последний из описанных. Он предполагает минимальное время простоя при использовании штатных средств.
    Ответ написан
    Комментировать
  • Непонятное поведение своей интерпретации функции Promise.race, почему так происходит?

    Alexandroppolus
    @Alexandroppolus
    кодир
    строка
    promise.then(onFullfiled).catch(onRejected);
    на самом деле работает как
    promise.then(onFullfiled, err => {throw err;}).then(v => v, onRejected);

    Если имеем дело с зарезолвленным/зареджекченным промисом, то здесь первый then ставит микротаск в очередь сразу, а второй - только по выполнении микротаска от первого.

    соответственно, для примера
    const promises = [
      Promise.reject('rejected1'),
      Promise.reject('rejected2'),
      Promise.resolve('resolved'),
    ];


    микротаски составили такую очередь:
    1) err => {throw err;}
    2) err => {throw err;}
    3) onFullfiled
    4) onRejected,
    5) onRejected
    6) v => v,


    Где пункты 1-3 добавились на цикле, а 4-6 по мере выполнения первых трёх.

    вот так и вышло, что onFullfiled вылез вперед.
    Ответ написан
    1 комментарий
  • Как организовать доступ к непубличным токенам?

    1. НИКОГДА не храните секреты (токены, логи-пассы и т.д.) в коде, который сохраняете в Git. Даже для пет-проектов. Даже если вы потом удалите этот токен из файла, он навсегда сохранится в истории гита, потом вы про это забудете, поделитесь кодом с кем-то, и он найдёт этот токен в истории. Вопрос не в том, найдет ли пользователь этот токен или нет, вопрос только в том, когда он найдёт этот токен. Очень-очень-очень многие просто забывают о том, что когда-то коммитили токен в репозиторий, забывают вычистить историю, и этот токен утекает...

    2. Код и секреты - это отдельные сущности, и жить они должны в разных местах. Если хотите поделиться кодом, обязательно опишите в README процесс получения токена, чтобы пользователи смогли хоть как-то этим кодом пользоваться. Это хороший тон в open-source.

    3. Если вы будете пользоваться системами CI/CD от Github или Gitlab, то там у репозиториев есть специальные разделы, в которых можно безопасно хранить секреты. Но вы должны быть внимательными, если сделаете кого-нибудь контрибьютером в вашем проекте. Не забудьте проверить все разрешения, которые выдаёте этим людям, потому что они при деплое проекта через эти системы CI/CD смогут вычитать ваши секреты. Если вы один хозяин репозитория, то хранить секреты там вполне безопасно.

    4. Если же вам всё-таки по какой-то причине очень надо, чтобы пользователи всё же как-то работали с вашим токеном, то единственное, что мне приходит в голову - это написать приложение типа API Gateway, которое будет имитировать ту апиху, от которой ваш токен. И это ваше приложение будет иметь базу данных пользователей которые смогут в вашем приложении регистрироваться и получать уже ваши токены, вами сгенерированные, для доступа к вашей апихе, а ваша апиха будет внутри себя вытаскивать данные из оригинальной API по оригинальному токену и отдавать эти данные им.
    Ответ написан
    Комментировать