• Как масштабировать число с идеальной точностью?

    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 по оригинальному токену и отдавать эти данные им.
    Ответ написан
    Комментировать
  • В чём смысл писать функциональные тесты на Java, если есть postman и другие инструменты?

    AnotherAnkor, Есть много историй с кафка или redis - где нам надо ходить и вариантов нет - и тут постман пролетает.
    Есть также всякие ui и скриншотные тесты, которые тоже надо писать и на постмане не сделать .
    А есть достаточно более сложные тесты где нам надо не только отправлять запросы, но слушать websoket, sse и не факт что только под одним пользователем.
    Плюс есть всякие штуки на создание и прочее, которые тоже простыми не бывают. И нам приходится использовать разные паттерны разработки.
    Да и много чего еще чего есть. Что если и можно сделать через постман - то это дорого и больно сложно.

    Но это не значит что постман плохой инструмент - это лиш значит, что он хорошо себя показывает в конкретных кейсах, на конкретных проектах.

    Если вы тестите простые веб-сервисы с простой логикой, то да отличный инструмент для автоматизации. И возможно что-то другое избыточно
    Ответ написан
    1 комментарий
  • В чём смысл писать функциональные тесты на Java, если есть postman и другие инструменты?

    xez
    @xez
    TL Junior Roo
    Смысл появляется, если тесты становятся чуть сложнее, чем проверка результатов http запроса.
    Ответ написан
    8 комментариев
  • Как работает then в промисах?

    miraage
    @miraage
    Старый прогер
    Ответ написан
    Комментировать
  • Как работает then в промисах?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    RTFM. Там всё описано.
    Ответ написан
    Комментировать
  • Что технически(какие it решения, технологический стек) нужны для создания ии ,который сможет на основе жалоб ставить диагноз?

    @HLudens
    Как уже верно указал Алексей стек простейший, вас устроит любая библиотека для создание нейросети под любой известный вам язык программирования. Например tensorflow хоть под питон хоть под жаваскрипт.
    Схема сети тоже простейшая вход-несколько полносвязных скрытых слоев-выход
    формат входа- вектор со всеми возможными видами жалоб в формате есть/нет/неизвестно
    Формат выхода- вектор где каждое число вероятность для болезни.
    Собственно все.
    Сложность у вас возникнет по 3 пунктам,
    -создать перечень (и интерфейс!) для жалоб
    -создать перечень диагнозов
    -и, самое главное, создать обучающую выборку! Т.е. проработать десятки а лучше сотни тысяч медкарточек, перегнать их в формат вектора жалоб и вектора диагноза и после этого обучить сетку.

    А так задачка простейшая :)
    Для программиста.
    А вот для того кто будет эти сотни тысяч карточек читать и вводить это ад.
    Ответ написан
    Комментировать
  • Как переместить скопировать удаленный репозиторий в другой удаленный репозиторий?

    vhood
    @vhood
    Не забывайте отмечать решения
    1. Клонируешь проект из исходного репозитория

    git clone <ссылка на старый>

    2. Переходишь в склонированный репозиторий и добавляешь новый удаленный репозиторий

    git remote add copy <ссылка на новый>

    3, Пушишь коммиты в новый репозиторий (выше в команде я назвал его copy)

    git push --all copy
    Ответ написан
    Комментировать
  • Как удалить аккаунт из списка Contributors?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега GitHub
    Автоматизатор
    Если в истории проекта есть коммиты этого человека, то мы увидим его в списке Contributors — тех авторов коммитов, кто внес свой вклад в проект.
    Имена авторов коммитов берутся из подписей коммитов и не всегда их можно сопоставить с конкретными аккаунтами гитхаба, так как люди не удосуживаются настроить подпись, а на гитхабе вообще скрывают своё мыло. В итоге не попадают в список авторов и их работа остаётся анонимной.

    Пытаться удалять человека из авторов (забывать его вклад) нет смысла. Достаточно забрать права на изменения, или вообще удалить из списка Collabolators.
    Ответ написан
    2 комментария
  • Таблица на HTML как сделать кликабельными строки?

    @archelon
    1. не использовать таблицу. сверстать на флексбокс, каждую строку обернуть в ссылку.
    <a href="#" class="link">
      <span class="name">Ремонт1</span>
      <span class="hours">3-5 часов</span>
      <span class="price">1190 ₽</span>
    </a>


    2 . javascript: повесить на tr событие onclick
    <tr class="link3" data-url="https://yandex.ru" onclick="goToUrl(this)">
        <td>Text</td>
    </tr>
    <script>
          function goToUrl(i) {
            const url = i.dataset.url
            window.location.href = url
          }
    </script>
    Ответ написан
    Комментировать
  • Как исправить ошибку "is not a valid parameter annotation" слэш-команды в когах?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    В слеш командах типы не просто показывают что за объект, но и выполняют конвертацию.
    Документацией в слеш командах разрешены следующие типы
    str
    int
    float
    bool
    disnake.abc.GuildChannel*
    disnake.User or disnake.Member**
    disnake.Role**
    disnake.Attachment
    disnake.abc.Snowflake***

    Судя по тому, что вы пытаетесь принимать commands.Context, которого в слеш командах нет, вы с предыдущих вопросов так и не ознакомились с различиями между обычными командами и слешами.

    Как исправить ошибку
    Либо переписать функцию, потому что во взаимодействии нет методов и атрибутов, которые вы пытаетесь использовать, либо оставить команду обычной.
    Ответ написан
    Комментировать
  • Как исправить ошибку "is not a valid parameter annotation" слэш-команды в когах?

    @angeloffy
    Для слеш-команд используется disnake.ApplicationCommandInteraction.

    async def _play(self, inter: disnake.ApplicationCommandInteraction, *, search: str):
    Ответ написан
    2 комментария
  • GitHub, GitLab или BitBucket?

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

    Я рекомендую Gitlab
    - Можно хостить весь Gitlab у себя. Вначале это может показаться лишним, но многие работодатели так делают, поэтому навыки по работе с Gitlab пригодятся.
    - Отличный CI. Как по мне, гораздо лучше чем Github actions
    - Проекты в Gitlab можно спокойно и очень просто синхронизировать с тем же самым Github прямо из интерфейса Gitlab, таким образом мы получаем преимущества обеих систем.

    bitbucket всё, забудьте о нём.
    Ответ написан
    7 комментариев
  • Применение ai ассистентов на работе?

    DevMan
    @DevMan
    разумное сомнение - критерий истины.

    если ссышь, дай в .env локальные креды, а в проде давай реальные отдельно.
    кагбе дев и деплой - немного много разное.
    Ответ написан
    4 комментария
  • Нужен ли большой монитор для разработки?

    @Drno
    Каждый работает так как ему удобно, вот и всё
    Ответ написан
    Комментировать
  • Почему 0,5 округляется до чётного числа?

    Это банковское округление называется.
    Нужно оно для повышения точности при обработке большого количества околослучайных чисел (когда количество чётных и нечётных +0.5 примерно равно)

    Если тебе такое поведение не нужно, то тогда просто передавай третий аргумент - там можно выбрать, как стоит округлять в такой ситуации.
    Ответ написан
    1 комментарий