• Какой нейронной сетью (или другим инструментом) можно проанализировать текст чтобы понять настроение клиента?

    Maksim_64
    @Maksim_64
    Data Analyst
    Перед тобой задача классификации. Есть дискретные состояния и вероятности, которые будут присвоены моделью, типичная задача классификации, что значит можно решать, как классическими алгоритмами машинного обучения, так нейронными сетями.

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

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

    @d-stream
    Готовые решения - не подаю, но...
    напрашиваются оконные функции
    возможно поверх группировки
    Ответ написан
    2 комментария
  • Как добавить водяной знак на видео, используя php?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    через сам php никак, только с помощью ffmpeg
    Ответ написан
    3 комментария
  • Как строятся (архитектурно) real-time сервера?

    sarapinit
    @sarapinit
    Точу водой камень
    Есть 3 варианта, позволяющие двухсторонний обмен сервер-клиент:
    - WebSockets
    - Server-Sent Events
    - Long Polling

    Есть библиотеки которые являются обёрткой над этими транспортами и выбирают лучший исходя их возможностей клиента. Для .Net это SignalR, для Java и Kotlin не знаю, но можете поискать по ключевым словам.

    И еще, до кучи, ответ со StackOverflow https://stackoverflow.com/questions/11077857/what-...
    Ответ написан
    2 комментария
  • Как при наличии GET-параметра у картинки - отдать другую?

    @dodo512
    location ~* \.(jpe?g|gif|png|svg)$ {
        if ($arg_moderation = "on") { 
            rewrite ^ /upload/system/no-avatar.jpg break;
        }
    }
    Ответ написан
    1 комментарий
  • Как модифицировать window.location.href или поставить на него геттер?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Если либа лежит у вас, то можно обернуть код во что-то типа:
    {
      const window = {
        get location(){
          debugger;
        }
      }
      // код
    }
    Ответ написан
    Комментировать
  • Как сделать неодинаковое количество записей в двух столбцах mysql?

    @zhaar
    Фигня такой подход - появится еще одна мадам, придется переделывать структуру таблицы?
    Делаешь 2 таблицы - users и messages
    users
    id, name

    messages
    userid, msgid, message

    и работаешь с ними через джойны.
    Ответ написан
    Комментировать
  • Как не проводить деньги через счет своей организации?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    Каждый партнер регистрирует на себя платежную систему.
    В зависимости от партнера подставляете разные id/secretы/логины при оплате/генерации подписей и т.п.
    Колбеки-вебхуки от платежной системы приходят на условно уникальные url где мы тоже уже понимаем что платеж к какому-то конкретному партнеру поступил.

    Технически никаких проблем в этом нет в общем. Из ограничений только ваша фантазия.

    Только никто не захочет ничего не себя регистрировать и/или давать вам доступы, но это уже другая история xD
    Ответ написан
    3 комментария
  • Нужно ли выносить API админки в отдельное приложение?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Ну, начнем с того на каком http эндпоинте находится админка и основной проект не влияет примерно ни на что по тому как это вопрос только роутинга трафика. Что качается зависимостей - они свои у каждого приложения, хотя SDK для работы с микросервисами должны быть выделены пакетами и подключаться как и когда нужно.

    По сути это два абсолютно разных SPA
    Ответ написан
    1 комментарий
  • Как использовать подход git flow для осуществления мелких правок?

    @alexalexes
    Есть вариант вести ветку pred, которая вбирает в себя самые последние изменения.
    Саму ветку pred сливать с master-веткой либо в определенные промежутки времени, либо когда набирается критическая масса изменений.
    PS: Если очень развита виртуализация и обратная связь с пользователями (или анализ поведения), то желательно на 20% процентах пользователей апробировать последние изменения pred с целью оперативного выявления небольших багов и востребовательности принятых изменений.
    Ответ написан
    Комментировать
  • Легаси-монстр. Как побеждаете?

    @RidgeA
    Немного банальностей:
    1. Бизнес не даст ресурсов на переписывание проекта с 0: время и большие риски
    2. Бизнесу как правило все-равно какое говно там крутится, лишь бы деньги приносило.
    3. Если более-менее адекватное руководство - нужно донести идею постепенного рефакторинга кода по мере необходимости в процессе фикса багов и разработки новых фич и тем самым аргументировать что на разработку новых фич/фикс багов нужно больше времени.

    Как я бы делал:
    1. Тесты на существующие функции (если возможно, видел методы в контроллерах с мешаниной вызовов методов моделей, созданием DTO и сохранением их через репозиторий, прямых http-запросов и запросов в бд на 1000+ строк, покрыть такое тестами - невозможно)
    2. Составить план рефакторинга, где отметить что и где надо сделать, коротко, в основном для команды разработчиков.
    3. Постепенно рефакторить старый код по мере взаимодействия с ним.
    4. Новый код - писать сразу правильно, для взаимодействия со старым кодом где нет возможности/времени его переделать - делать какие-то адаптеры, что бы не распространять токсичный код.
    5. Как оперативная мера защиты от SQL иньекций можно поставить что-то вроде этого https://github.com/nbs-system/naxsi
    6. Мониторинг кода, который не используется - pinba.org , по мере обнаружения такого кода - удалять безвозвратно (в крайнем случае есть VCS, я надеюсь). Начать с более высокоуровнего кода - контроллеры, напримерю. Плюс IDE в этом могут помочь и grep.
    7. Как вариант - новые фичи можно пилить в отдельном проекте (v2), крутить оба и постепенно переходить на новый, со временем старый (v1) выкинуть (и начать делать новый - v3 :-) )
    Ответ написан
    3 комментария
  • Postgresql + Pgpool. Как организовать быстрый доступ из разных концов земли?

    @relgames
    Java Developer
    Нужно использовать witness server
    Ответ написан
    Комментировать
  • Обьясните, что здесь происходит ++ndigi[c-'0']?

    @Mercury13
    Программист на «си с крестами» и не только
    '0' — это не число 0, а код символа «0». Во всех машинах, кроме совсем уж мамонтов, используются надмножества кодировки ASCII, и '0' = 48.

    И в ASCII, и в EBCDIC, и во внутренних кодировках, скажем, ЖК-индикаторов коды цифр идут последовательно от 0 до 9 — так что, отняв от кода цифры код символа «0», получаем числовое значение цифры.
    То есть ,
    '0' - '0' = 48 - 48 = 0
    '1' - '0' = 49 - 48 = 1
    ...
    '9' - '0' = 57 - 48 = 9
    (цифры справедливы для ASCII и его надмножеств, но в EBCDIC аналогично)

    В компьютере вообще нет понятия «символ», и что такое 48 — сорок восемь попугаев, X-координата на экране или код символа '0' — программист или компилятор должен думать сам. Так что Си (который, по сути, кроссплатформенный ассемблер), а ним и Java ставят очень эфемерную грань между одним и другим. В отличие от Паскаля, где надо писать Ord(c) - Ord('0').
    Ответ написан
  • Разная обработка SASS интерполяции в Webpack и sass-rails. Кто прав и как уговорить sass-rails работать так же, как Webpack?

    jj_killer
    @jj_killer
    В этом плане SASS очень нестабильная штука и многое зависит от версии, даже если просто взять рубишный джем, выходит так:

    sass 3.2:
    @media (min-width: 768px +1px) {
      ... }


    sass 3.3, 3,4:
    @media (min-width: 768px (+1px)) {
      ... }


    sass 3.4.25:
    DEPRECATION WARNING on line 4:
    #{} interpolation near operators will be simplified in a future version of Sass.
    To preserve the current behavior, use quotes:
    
      unquote("#{$some_var} + 1px")
    
    You can use the sass-convert command to automatically fix most cases.
    
    @media (min-width: 768px (+1px)) {
      ... }


    А в 4.0.0.alpha.1 вообще все вот так выглядит:
    @media (min-width: 768px1px) {
      ... }


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

    UPD: я тут посмотрел, что webpack использует биндинги для libsass и там как раз такое поведение и реализовано:
    @media (min-width: 769px) {
      ... }


    Так что есть смысл посмотреть в сторону https://github.com/sass/sassc-rails
    Ответ написан
    Комментировать
  • Как правильно сделать проверку прав в API?

    @vsuhachev
    Я обычно аутентификацию вешаю на before_action, авторизацию указываю ручками для каждого метода каждого контроллера т.к. это проще. Так же я обычно правлю шаблоны скаффолдинга под текущий проект для того чтобы код авторизации генерился автоматом.

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

    Еще для политик pundit можно писать тесты, иногда это оправданно, если политики со сложной логикой.

    Так же я видел проекты где тесты контроллеров для проверки авторизации выполнялись под разными ролями, но это, мне кажется, плохой подход т.к. много зависит от ручной работы по приведению в соответствие кода и тестов.
    Ответ написан
    Комментировать
  • Как зарегистрировать смену свойства position у элемента?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Попробуйте с MutationObserver, примерно так:
    var observer = new MutationObserver( function(mutations) {
        mutations.forEach(function(mutationRecord) {
            console.log('стиль изменён');
        });    
    });
    
    var target = document.getElementById('flash-messages');
    observer.observe(target, { attributes : true, attributeFilter : ['style'] });
    Ответ написан
    Комментировать
  • Как обеспечить безопасность сайта?

    Stalker_RED
    @Stalker_RED
    Очень крутой вопрос, прямо хочется бегать по кругу, размахивать руками и кричать.
    Ну... как-бы... ВСЕХ дыр стоит остерегаться!
    И того, что вам вместо аватарки шеллскрипт зальют, и того, что вместо поискового запроса будет sql инъекция, и того, что в вашу форму с оплатой заказа прилетит "левый" запрос сформированный при помощи XSS. И это не полный список возможных неприятностей, если что. А полный список будет сильно зависеть от того, какие вообще злоумышленник сможет делать запросы и есть ли в обработчиках этих запросов хоть какие-то проверки.

    Общие правила примерно такие:
    1. Проверяйте и/или фильтруйте все данные, которые приходят со стороны пользователя
    1a. Убедитесь, что эти запросы не ddos, не брутфорс и не xss.
    2. Наймите хорошего сисадмина, который будет следить за безопасностью и обновлениями OS и компонентов вебсерера.

    Конечно, если ваш сайт не представляет интереса для "крутых хакеров™", то можно на все это просто забить и довольствоваться защитой Неуловимого Джо.
    Ответ написан
    1 комментарий
  • ROR: Как исправить отсутствие в путях параметра :id?

    Dem1
    @Dem1 Куратор тега Ruby on Rails
    Ruby on Rails developer
    Вы забыли s в resources
    resources :din_pages
    Ответ написан
    1 комментарий
  • Почему не работает "не" в ограничениях в роутинге rails?

    У вас `authorized` это лямбда. Тоесть это функция, которая будет выполняться каждый раз, когда запрос придёт в рельсы.
    А вот это `!authorized`, это отрицание от лямбды, оно всегда будет ложью. Это не отрицание результата выполнения лямбды, это отрицание для самого объекта лямбды.

    2.3.1 :001 > ->() { false }
     => #<Proc:0x00000001f744e0@(irb):1 (lambda)>
    2.3.1 :002 > !(->() { false })
     => false
    Ответ написан
    2 комментария
  • Почему для мультидоменности в rails рекоммендуют отдельный класс, а не лямбду?

    Jeiwan
    @Jeiwan
    Никакой разницы. В класс выносят, если слишком много логики в условии. У вас одна только строчка, поэтому достаточно лямбды. Это просто вопрос читаемости кода.
    Но я бы вообще никогда не выносил в класс, так как придется каждый раз искать этот класс, лезть в него и разбираться в нем. Лучше, когда всё в одном месте.
    Ну и этот ответ на SO морально устарел: сейчас ложить что-то в lib очень плохо. Но где тогда хранить эти классы, я не знаю — обычно это решается в рамках конкретного проекта, каждый делает, как ему удобно.
    В дополнение, статья о том, как разбивать routes.rb на несколько модулей: blog.arkency.com/2015/02/how-to-split-routes-dot-r...
    Ответ написан
    6 комментариев