Задать вопрос
  • Сколько места доступно докер контейнеру на linux?

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

    Maksim_64
    @Maksim_64
    Data Analyst
    Бинарная классификация, подразумевает два варианта пост на IT тематику (True) или (False). Соответственно, только первый вариант, если учебный дата сет не будет содержать разных постов, то обучаться будет не на чем.

    Насчет пропорций, здесь интереснее. И так в реальности мы имеем куда более вероятное событие пост не IT чем IT. Но при создании модели нам нужно что бы наши пропорции были примерно равны или около того. Иначе мы будем иметь то что называется bias. У нас например в тренировочном сете значительно больше постов которые не IT и соответственно, мы уже имеем ПРЕДРАСПОЛОЖЕННОСТЬ. Что плохо. По этому изначально, для классификатора, не должно быть такого понятия, как НЕ IT пост более вероятен.

    Это общее правило с которого могут быть ответвления, например, когда есть датасет в котором одного класса сильно больше делают еще одну выборку с весами (resampling), то есть выбирают не с равными вероятностями. И потом получают близкое к равное распределение.

    В каких то случаях (редко) допускается и отклонения от этого правила, на уровне инженерных причин. Но стартовые позиции, как я описал выше.
    Ответ написан
    Комментировать
  • Как получить результат fetch в переменную?

    Stalker_RED
    @Stalker_RED
    Вам нужно дождаться когда вместо промиса будет результат.
    const jsonData = await getCategories()...
    Ответ написан
  • Почему появляются со временем ошибки в vendor'е Laravel?

    Sanes
    @Sanes
    Похоже на проблему с файловой системой. Может с правами что-то не так.
    Ответ написан
    Комментировать
  • Как узнать длительность mp3- файла без чтения всего содержимого файла в Node.js?

    Stalker_RED
    @Stalker_RED
    В некоторых записях ОПЦИОНАЛЬНО может быть длительность в id3 тегах. И вы сами можете туда дописать, если у вас эти файлы не на один раз.

    Для записей с фиксированный битрейтом можно кол-во фреймов перемножить на битрейт.

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Необходимо добавить после ips_addr_1 слово ips_addr_2, нужно чтобы было совпадение по последнему слову

    sed 's/\(.*ips_addr_[0-9]\)/\1 ips_addr_2/'
    Ответ написан
    Комментировать
  • Почему может создаваться большое количество файлов сессий на сервере Ubuntu?

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

    Соответственно, смотреть надо по двум направлениям
    1. проверить, не долбит ли кто-то запросами, и заблокировать или ограничить, например использовать Rate Limit у NGINX
    2. файловая система - самое убогое хранилище для сессий, и используется по умолчанию только потому, что для всех других нужно указывать параметры подключения. Соответственно, вместо файлов использовать базу данных.

    Плюс надо смотреть по коду. Если сайт создает сессию на откровенно мусорный запрос, то, возможно, этого не стоит делать. Ну и нельзя сбрасывать со счетов гениальных скриптописателей, которые сами себе создают нагрузку на сайт. Не раз и не два я видел любителей инклюдить локальные файлы по HTTP.
    Ответ написан
    Комментировать
  • Как посчитать сумму позиций из 2-х источников?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    В общем случае избежать "цикла в цикле" позволяет использование индексации массива идентификатором и - соответственно - обращение по индексу вместо перебора.
    В данном случае вторую коллекцию проиндексировать можно с помощью метода keyBy('id');

    И тогда останется только один цикл по первому массиву, в котором обращаться ко второму по id.
    То есть сложность будет длина массива * 2 вместо длина массива * длина массива

    Если же данные берутся из базы, то, как правильно заметили в комментариях, там же и надо сразу считать

    spoiler
    Типичный, кстати, вопрос из серии "Выучил ларавель, не выучил программировать"
    Ответ написан
    7 комментариев
  • Есть ли софт чтобы локальные ноутбук из-под NAT торчал наружу в веб, используя статический IP?

    @dronmaxman
    VoIP Administrator
    Если для тестов, то можно использовать ngrok в бесплатном тарифе.
    Ответ написан
    3 комментария
  • Ошибка Битрикс при переносе сайта на хостинг через резервную копию?

    Adamos
    @Adamos
    Судя по путям, папка vendor лежит вне корня сайта, и Битрикс ее не бэкапил вовсе.
    Собственно, ее, скорее всего, должен заполнять и обрабатывать Composer.
    Ответ написан
  • Почему не удается получить доступ к смещению типа string в строке?

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

    В ответе выше написана чушь.
    Обращаться к строке по индексу можно. И в РНР7, и в РНР 8. Без всяких предупреждений.
    К отдельным байтам (но не символам) в строке можно обращаться, указывая смещение в квадратных скобках:
    echo 'hello'[0];
    Но в сообщении об ошибке говорится конкретно про строковые ключи. А это уже действительно бессмыслица, никаких строковых смещений в строке быть не может. Что и написано черным по белому в ошибке.

    И проблема действительно находится выше, в совершенно дурацком присвоении пустой строки массиву.
    Если мы хотим использовать массив, то и присваивать начальное значение надо в виде пустого массива, а не строки.

    При этом отдельно проверять наличие $aUnit[$server['unit']] и $aUnit[$server['unit']][$server['game']] не нужно. Достаточно проверить на существование сразу конечный элемент.
    В 8.2 это можно красиво написать одной строчкой
    $aUnit[$server['unit']][$server['game']] ??= '';
    Но если почитать код дальше, то станет видно, что и здесь нам строка тоже не нужна. А снова нужен массив.
    Потому что в коде ниже эта строка разбивается через explode(???).
    То есть, надо написать
    $aUnit[$server['unit']][$server['game']] ??= [];
    $aUnit[$server['unit']][$server['game']][] = $server['id'];
    А ниже выкинуть всё от explode() до unset()
    spoiler
    Вообще, складывается ощущение, что исходный код писал либо ребенок, либо шизофреник - две разные личности, которые не видят код друг друга. Вот как с этим массивом например.
    Или вот этот кусок кода еще мне очень понравился
    $sql->query('SELECT `id` FROM `servers` LIMIT 1');
    if(!$sql->num())
        return NULL;
    $sql->query('SELECT `id`, `unit`, `game` FROM `servers` ORDER BY `unit` DESC');
    $all = $sql->num();

    Напоминает анекдот про ирландца, который перед тем как поспорить, выпьет ли он 10 кружек пива, сначала сбегал в соседний паб. Проверить, выпьет ли он 10 кружек пива.
    Ответ написан
    Комментировать
  • Как правильно разворачивать проект локально, написанный на php?

    Stalker_RED
    @Stalker_RED
    То что вы видите - не ошибка.

    В конфиге сервера нужно указать точку входа, скорее всего в вашем проекте это main.php
    Ответ написан
    Комментировать
  • Чем заменить установку переменных окружения Apache?

    Lynn
    @Lynn
    nginx, js, css
    Третий вариант, задавать переменные через map

    map $uri $APP_SETTINGS {
      default "";
      ~^/path1/ app-settings-12;
      ~^/path2/ app-settings-100500;
    }
    
    server {
      location ~\.php$ {
        fastcgi_pass ...;
        fastcgi_param APP_SETTINGS $APP_SETTINGS if_not_empty;
        ...
      }
    }
    Ответ написан
    Комментировать
  • Как заменить большое кол-во символов на другое?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Заменять хешированные пароли на дехешированные можно при помощи замены. В базах данные это UPDATE.

    P.S. Каков вопрос - таков и ответ, ни больше, ни меньше!
    Ответ написан
    Комментировать
  • Чей ip адрес адрес будет приходить?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Конечно IP-адрес удалённого сервера, с которого создалось соединение. Посетитель удалённого сервера к такому соединению имеет отношение только в том, что соединение создаётся для получения данных для этого посетителя.
    Ответ написан
    Комментировать
  • Как на PHP разделить склеенные буквы разного регистра?

    @humoured
    Вы всё на свете найдёте в коробке с карандашами
    Нужно не "разделять буквы разного регистра", а нормально обрабатывать разметку.
    Если в разметке были символы переноса строки в виде html-сущностей (<br>), то нужно выполнить их преобразование до вызова функции strip_tags:
    preg_replace('/\<br(\s*)?\/?\>/i', "\n", $string);
    Ответ написан
    1 комментарий
  • У меня есть let x = 10 let y = "+" let w = 10, как мне их сложить?

    @DEMOS-OK
    Fullstack Web Developer \ Laravel Developer
    Можно используя функцию eval().

    console.log(eval(x + y + w));

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

    if (y === '+') {
        console.log(x + w);
    }
    Ответ написан
    Комментировать
  • Как реализовать рассылку смс?

    Adamos
    @Adamos
    По моему опыту, API для пополнения счета вам все равно не поможет.
    Опсосы (а конкретно - МТС и Мегафон) теперь для дозволения любой, хоть технической, рассылки в своих сетях требуют предоставить им гарантийное письмо от того, кто эту рассылку делает, и оплатить ежемесячную дань в 2000 - 2500 за эту роскошную привилегию.
    Без этих телодвижений вы ничего на них не отправите, а делать это за своих клиентов вы не имеете права.

    Вообще, имхо, рассылка СМС просто-напросто устарела так же, как и оплата по СМС, и примерно по тем же причинам.
    Ответ написан
    Комментировать
  • Где ошибка в скрипте, устанавливающем время входа в систему в домене?

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

    $templateuser='a.khramov'
    $templatehours= Get-ADUser -Identity $templateuser -properties logonHours
    Get-ADGroupmember "msk-VPN_Users" |foreach {Set-ADUSer $_.samaccountname -Replace @{logonHours = $templatehours.logonHours} }
    Ответ написан
    Комментировать
  • Метод класса вписывается в класс который осуществляет действие или в класс над которым осуществляют действие?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Уфф, 5 раз прочитал, пока понял. Второе.

    Метод класса вписывается в класс который над которым осуществляют действие.
    Собственно, определение класса - это "данные и методы для работы с ними". С ними. А не с данными чужих объектов.

    Сущность Модератор в данном случае вообще не нужна, достаточно свойства в сущности Пользователь (кстати, откуда вы все берете этих "участников"? Участник бывает у события, а не у сущности. Вы же не говорите "участник 5А класса?")

    Связей здесь должно быть значительно меньше.
    Если модератор не упоминается ни в опросе, ни в добавленной книге, то и связи между ними никакой нет.
    В текущей схеме должна быть только одна связь: опроса с прошедшим его пользователем. Одним из свойств опроса будет экземпляр класса Пользователь. Причем это касается класса РезультатОпроса, которого нет на диаграмме. А он должен быть. И вот он будет связан с классом Опрос.

    Чего здесь не хватает - это интерфейса. Классов-контроллеров. Которые собственно эти методы и вызывают.
    Какой-нибудь BookController.add(), который принимает, скажем, два объекта, Пользователь и Инпут, и проверяет, является ли пользователь модератором. И если да, то создает объект Book, и используя данные из инпута, вызывает Book.add()
    И то же самое с опросами

    Еще по-хорошему должен быть BookRepository. Потому что если книга умеет сама себя добавлять в хранилище, то это считается плохим тоном. Должен быть отдельный объект Хранилище Книг, в котором и будут методы добавления и поиска.
    Ответ написан
    6 комментариев