• Можно ли общаться с ChatGPT голосом?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Да, если ChatGPT соединить с системой распознавания голоса, которая сможет перевести голос в текст.

    Надеюсь ты понимаешь, что ChatGPT - это не любой "умеющий разговаривать" бот, а конкретный, разработанный OpenAI, конкретная модель. Уже сейчас возможность на сайте OpenAI при общении с ChatGPT выбрать, какие плагины ты хочешь использовать из "plugin store". Если чего-то не хватает сейчас, то в ближайшем будущем наверняка появится.
    Основная ссылка: https://chat.openai.com/
    Правда, без танцев с бубном из РФ будет сложно получить доступ.

    Сейчас практически все неофициальные "сайтики", на которых можно общаться с GPT, используют API от OpenAI. Это не обязательно ChatGPT, потому что у OpenAI есть и другие модели, способные "общаться". Тем не менее, надо понимать, откуда ноги растут.
    https://platform.openai.com/docs/introduction

    Что касается ChatGPT и Алисы, то если их сравнивать, то первый - подросток лет 16, а Алиса - ребенок лет 10. Обе модели прочитали миллион книг в свои годы (антропоморфизированно выражаясь).
    Ответ написан
    Комментировать
  • Как найти определенную последовательность в массиве объектов?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Попробуй это:
    код
    function findSequence(arr) {
        let maxSequence = [];
        let currentSequence = [];
    
        for (let i = 1; i < arr.length - 1; i++) {
            const currentValue = parseInt(arr[i].value, 10);
            const prevValue = parseInt(arr[i - 1].value, 10);
            const nextValue = parseInt(arr[i + 1].value, 10);
    
            if (prevValue > currentValue && currentValue < nextValue) {
                currentSequence = [arr[i]];
            } else if (currentSequence.length > 0 && currentValue < nextValue) {
                currentSequence.push(arr[i]);
            } else {
                currentSequence = [];
            }
    
            if (currentSequence.length > maxSequence.length) {
                maxSequence = currentSequence.slice();
            }
        }
    
        if (currentSequence.length > 0 && parseInt(arr[arr.length - 1].value, 10) > parseInt(arr[arr.length - 2].value, 10)) {
            currentSequence.push(arr[arr.length - 1]);
            if (currentSequence.length > maxSequence.length) {
                maxSequence = currentSequence.slice();
            }
        }
    
        return maxSequence;
    }
    
    let arr1 = [{ value: '2' }, { value: '4' }, { value: '11' }, { value: '7' }, { value: '8' }, { value: '9' }];
    let arr2 = [{ value: '5' }, { value: '20' }, { value: '5' }, { value: '7' }, { value: '9' }, { value: '11' }];
    
    console.log(findSequence(arr1)); // (7, 8, 9)
    console.log(findSequence(arr2)); // (5, 7, 9, 11)

    Результат верный. Для первого вызова - (7, 8, 9), а для второго - (5, 7, 9, 11).

    К слову, код довольно кривой, так как это просто пример того, как найти определенную последовательность в массиве объектов. Подредактируй под свои нужды.
    Ответ написан
    1 комментарий
  • Как написать подсчет времени проведенного в игре для лаунчера?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Просто следишь, что такой-то процесс всё ещё запущен и находится в памяти.
    В Стиме сделано так, что эта инфа периодически отсылается на сервер, и там уже происходит подсчет времени.
    Ответ написан
    Комментировать
  • Как реализовать вместо рандома очередь, 1, 2, 3, 4 и т.д.?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Зависит от конкретной задачи. Если это что-то типа рекламы, где точность не важна, то можно хранить счетчик в самом браузере в localStorage (через JavaScript).
    var counter = localStorage.counter || 0; // загружаем
    counter++;
    if (counter >= 10) counter = 0;
    localStorage.counter = counter; // сохраняем
    
    console.log(counter == 9 ? "Да" : "Нет");
    Ответ написан
  • Как просчитать "свободную" орбиту для своего спутника?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Основными организациями являются: ЦУП (РФ), NORAD (США и Канада, так что без VPNа не получится) и ESA (Европа).

    Для расчета орбиты спутника используются сложные методы аэрокосмической инженерии и астродинамики. Основным параметром является высота орбиты, которая влияет на период обращения спутника вокруг Земли. Для более сложного расчета, включающего взаимодействие с другими спутниками, используется компьютерное моделирование, включая алгоритмы предсказания столкновений. Вообще за помощью в расчете орбит лучше обратиться в профильный ВУЗ типа МАИ и т.п., либо можно попробовать напрямую в Роскосмос, или какой-нибудь СПУТНИКС и т.д..
    Ответ написан
  • Как создать модуль выполнения тасков и начисление опыта?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Возможно, обновление опыта и поинтов после добавления задачи в список выполненных не работает, потому что вы делаете 2 последовательных вызова метода user.save(). Метод save() возвращает промис, который представляет собой будущий результат асинхронной операции. Попробуйте вместо двух вызовов save() объединить всё и сделать в одном.
    Ответ написан
    Комментировать
  • Почему ChatGPT зачеркнул текст?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Это markdown. Аналогично текст, обрамленный символами *, будет показан курсивом. Поэтому вопросы/ответы вида "вычисление 2*2*2" будут выглядеть как "вычисление 222".

    Видя такие визуальные искажения, нужно понимать, что там есть невидимый символ типа * или ~, который автор (вы или нейросеть) печатал не как служебный.
    Ответ написан
    Комментировать
  • Регулярное выражение огрнаичение чисел только 4 и от 1900 до 2100?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    От 1900 до 2100:
    spoiler
    ^(19[0-9]{2}|20[0-9]{2}|2100)$
    Пример:
    let regex = /^(19[0-9]{2}|20[0-9]{2}|2100)$/;
    let test = regex.test("2000"); // возвращает true
    let test2 = regex.test("1899"); // возвращает false

    А если надо от 1990 до 2100 (в вопросе у тебя нашел как минимум три опечатки), то вот:
    spoiler
    ^(199[0-9]|20[0-9]{2}|2100)$
    Ответ написан
    Комментировать
  • Как отсортировать массив по значению?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Нужно преобразовать твой объект в массив, тогда можно сортировать штатной функцией.
    spoiler
    var data = {
        "ID": "414",
        "ELEMENT": {
            "5333": {
                "ID": "5333",
                "sort": 300,
            },
            "5334": {
                "ID": "5334",
                "sort": 500,
            },
            "5335": {
                "ID": "5335",
                "sort": 100,
            }
        }
    }
    
    // Преобразование объекта в массив
    var elementsArray = Object.keys(data.ELEMENT).map(function(key) {
        return data.ELEMENT[key];
    });
    
    // Сортировка массива по sort
    elementsArray.sort(function(a, b) {
        return b.sort - a.sort;
    });
    
    // Выводим массив в консоль
    console.log(elementsArray);

    А сортировка объекта просто не имеет смысла, т.к. порядок ключей (например, при переборе) там не гарантирован.
    Ответ написан
    Комментировать
  • Регулярные выражения: как найти слово с начинающееся с цифры?

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

    Можно перечислить все символы в артикле:
    \b(\d[\d\w.-]*)
    (числа, латинские буквы, дефис, точка)
    Если нужны русские, их нужно отдельно вписать по типу А-Яа-я.

    Также можно использовать выражение "всё кроме". Например, "кроме пробела":
    \b(\d[^ ]*)

    В общем виде будет как-то так:
    preg_match('/\b(\d[^ ]*)/', $product->name, $matches);
    Ответ написан
    1 комментарий
  • Уход во время испытательного срока, нормально ли это?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Ты можешь уйти в любое время, включая испытательный срок. Ты не привязан к компании навечно. Но учти, что профессиональный мир мал, и репутация важна. Если часто уходить посреди проектов, это может повредить твою репутацию. Впрочем, если тебе пришло предложение, лучше рассмотри его. Просто делай всё красиво и вежливо.
    Ответ написан
    Комментировать
  • Насколько имеет смысл проводить тестирование на локалхосте?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Тестирование на локалхосте может быть полезным в определённых случаях, но, как правило, оно используется в более ранних стадиях процесса разработки. Оно полезно тем, что у вас полный контроль. Скажем, мы можете устроить системе какую-то бяку или стресс-тест, чего нельзя делать на реальном сервере. То есть больше возможностей для экспериментов. Вы можете залезть в БД и что-нть поменять там, не боясь поломать.

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

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В PHP можно создавать процессы внутри процессов, но есть некоторые нюансы, которые следует учитывать.

    Когда ты вызываешь pcntl_fork(), ОС создает копию текущего процесса. Этот новый процесс наследует от родительского процесса все открытые файлы и соединения. Это включает в себя все файлы, открытые с помощью popen(), fopen(), сокеты, соединения с базой данных и т. д.

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

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

    Кроме того, ты можешь столкнуться с проблемами с буферизацией вывода. Функции вроде popen() обычно буферизуют свой вывод, и если ты не очистишь буфер перед тем, как завершить процесс, ты можешь потерять часть вывода. Ты можешь использовать функции вроде fflush() для очистки буфера перед завершением процесса.
    Ответ написан
    1 комментарий
  • Как найти числа в списке после символа «:» с помощью регулярного выражения?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    import re
    
    data = """
    1 ) София Захарова : 322 221 929 монет
    2 ) Диана Зайцева : 123 543 монеты
    3 ) Семен Соколов : 199 монет
    4 ) Вадим Новиков : 18 монет
    5 ) Игорь Валеев : 5 монет
    """
    
    # Регулярное выражение для поиска чисел после ":"
    pattern = r":\s*([\d\s]+)"
    
    # Поиск всех совпадений
    matches = re.findall(pattern, data)
    
    # Преобразование результатов в список чисел
    numbers = [int(match.replace(" ", "")) for match in matches]
    
    print(numbers)
    Ответ написан
    1 комментарий
  • Не работает расширение chrome?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Попробуй такой манифест
    {
      "manifest_version": 3,
      "name": "My Extension",
      "version": "1.0",
      "permissions": [
        "activeTab", "scripting"
      ],
      "action": {
        "default_popup": "popup.html"
      },
      "background": {
        "service_worker": "background.js"
      }
    }
    Такой popup.js
    document.getElementById("myButton").addEventListener("click", myFunction);
    
    function myFunction(){
        chrome.runtime.sendMessage({command: "runCode"});
    }
    И такой background.js
    chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
      if (message.command === "runCode") {
        chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
          chrome.scripting.executeScript({
            target: {tabId: tabs[0].id},
            function: functionToInject
          });
        });
      }
    });
    
    function functionToInject() {
      document.querySelector("#APjFqb").value="123";
    }
    Ответ написан
    Комментировать
  • Почему не выводится значение и название локальной переменной?

    dollar
    @dollar Куратор тега Lua
    Делай добро и бросай его в воду.
    Всё выводит.
    Перепроверьте здесь: https://rextester.com/l/lua_online_compiler
    Ответ написан
  • Как получить размер объекта userdata?

    dollar
    @dollar Куратор тега Lua
    Делай добро и бросай его в воду.
    Никак. Это объект среды. Если среда вам подконтрольна, то в самом объекте и реализуйте функцию типа GetSize(), которую можно будет вызывать из Lua.
    Ответ написан
  • Как сделать так, чтобы после перезагрузки страницы данные не исчезали?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Делая свой собственный счётчик посещений, нужно решить для начала, что именно ты хочешь считать - загрузки страницы, уникальных пользователей или что-то ещё. После этого и считать именно это.

    Что касается уникальности, есть нюансы, но общий принцип един - сначала определяешь некий "отпечаток" (уникальность) пользователя, затем отправляешь его на сервер, и сервер уже решает, считать его или нет. Например, был ли уже этот пользователь в этот день или какой-то интервал времени, в течение которого повторные посещения уже не учитываются. Будет ли в этот "отпечаток" включён ip пользователя, или это вообще будет уникальный токен, выданный по логин+пароль, решать тебе.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    1) с 09.00 до 10.59
    (hour >= 9 && hour < 11)

    2) с 11.00 до 16.59
    (hour >= 11 && hour < 17)
    Ответ написан
    Комментировать
  • Какие виды сетевых атак можно выявлять при помощи эвристических методов?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Зачем эвристика, когда есть Honeypot?

    Собственно, супер умную эвристику я как-то так себе и представляю - она должна играть в поддавки, но контролировать ситуацию.
    Ответ написан
    Комментировать