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

    @alexalexes
    Так-то подзапрос "знает" о таблице b_uts_crm_company из основного запроса в секции where (но не наоборот).
    UPDATE b_uts_crm_company 
    SET UF_CRM_1696186645 = (SELECT b_crm_company.REVENUE
                            FROM b_crm_company
                            where b_crm_company.ID = b_uts_crm_company.VALUE_ID)

    Есть еще момент, что подзапрос не должен возвращать больше 1 значения, тогда он выполнится корректно.
    Если что-то нужно вставить из связанной таблицы любой ценой, то используйте max( b_crm_company.REVENUE) или min( b_crm_company.REVENUE).
    Ответ написан
  • Можно ли писать большой desktop pet-проект на python в один файл?

    @alexalexes
    а код уже перевалил за 200 строк

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

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

    Ну, например, прочитайте книгу "Рефакторинг (кода на JavaScript). Улучшение проекта существующего кода". В ней как раз на примере монолитного проекта разбирается как что переделать, чтобы код проекта стал гибким.
    Ответ написан
    Комментировать
  • Такой ssd пойдет к материнке?

    @alexalexes
    Можно через адаптер pcie x1 to m2 (пример, https://aliexpress.ru/item/1005006040413155.html), но скорость будет ограничена 500 Мбайт/с, так же если вы бы выбрали ssd на sata интерфейсе. Но такой вариант имеет право на жизнь, если вы хотите начать апгрейд компа с трердотельника, чтобы потом купить материнскую плату, где будет m2 разъем.
    Ответ написан
  • Как передать данные js в php?

    @alexalexes
    1) Разобраться с клиент-серверной архитектурой вашей поделки. Научиться не путать код, который выполняется на клиенте, и код, который выполняется на сервере.
    2) Передать сведения от клиентской части вашего приложения на серверную по любой технологии: ajax, websocket или банальный редирект с get/post параметрами.
    Ответ написан
    Комментировать
  • Можно ли составить такой sql запрос?

    @alexalexes
    Если универсальный запрос составлять, который не зависит от состава свойств, то он будет многострочный, нужно собирать свойства в массив в той среде откуда обращались к СУБД:
    select 
      ar.id, 
      ar.name, 
      ar.date, 
      ar.text,
      ap.property_id,
      p.name as property_name, --поскольку у вас есть в базе реализовано универсальное хранение свойств, то почему бы не вывести имя свойства из справочника?
      ap.value as property_value
    from  articles as ar
    left join articles_property as ap on  ap.article_id = ar.id
                                                            and ap.property_id in (/* перечисляем все необходимые свойства */) 
    left join property as p on  ap.property_id = p.id -- справочник названий свойств

    Другой вариант запроса дает конкретные значения свойств, и довольно плоскую выборку, не требующую постобработки (одна строка - это строго одна статья). Но такой запрос не универсален по набору свойств.
    select 
      ar.id, 
      ar.name, 
      ar.date, 
      ar.text,
     (select value
        from articles_property as ap
      where ap.article_id = ar.id
          and ap.property_id = 10) as author
    from  articles as ar
    Ответ написан
  • Как сделать редирект с подстановкой на php?

    @alexalexes
    Вы используете PHP сервер, а пути в url ведут к статичным html, а не на index.php.
    Допустим, по index.html сервер выполняет некий скрипт в index.php (допустим, вы настроили htaccess).
    То в этом скрипте все компоненты адреса можно получить через $_SERVER и отредиректить, куда надо:
    $protocol = $_SERVER['HTTPS'] == 'on' ? 'https' : 'http';
    $host = $_SERVER['HTTP_HOST'];
    $path = $_SERVER['SCRIPT_NAME']; 
    /****/
    // Что-то сделать с $protocol, $host, $path а может что-то еще забрать из $_GET, $_POST, $_FILES....
    /****/
    header('location: '.$protocol.'://'.$host.$path);
    Ответ написан
  • Какой элемент на фото?

    @alexalexes
    Вероятно, вы разобрали блок питания.
    Можно по модели платы найти приблизительную схему БП, а можно самому нарисовать и догадаться по функциональному расположению детали, что она делает (но это старая школа - навыки утеряны).
    Обычно, в блоках питания четырехпиновые корпуса имеют диодные мосты (стабилизированный выход подписан "+" и "-"), либо оптроны в цепях обратной связи (обычно, ставятся на границе гальванических периметров).
    Ответ написан
    1 комментарий
  • Что делать если попап окно уже открыто при загрузке на сайт?

    @alexalexes
    Значит, CSS стили не подействовали, или были перебиты другими стилями от других модулей.
    Ответ написан
    Комментировать
  • Как реализовать запросы на подключения в комнату?

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

    @alexalexes
    F12 в браузере, далее вкладка "Сеть". Смотрите ответ на запрос /api/clients, там у вас что-то еще пришло помимо JSON.
    Ответ написан
    Комментировать
  • Как отключить url кодирование в браузере chrome?

    @alexalexes
    Они в адресной строке изначально в url-кодировке, и передаются тоже в закодированном виде на сервер. Это разработчики Хрома сделали, чтобы человекам удобно читалось. Вероятно, есть настройка, которая выключает удобство чтения адреса, но не наоборот.
    Ответ написан
    1 комментарий
  • Windows 11, не удается настроить мобильный хот-спот?

    @alexalexes
    TP-LINK TL-WN722N этих свистков tp link выпустил 2 или 3 поколения с разными чипсетами, не факт, что у вас в руках свисток того чипсета, с которым проблем не было в прошлом. Сам как-то покупал 722-й, мне нужен был для kali linux для режима монитора - не прокатила лотерея, попался не тот чипсет. Так что, нужно вскрывать непонятные свистки и смотреть, что внутри распаяно и уже принимать решение, повезло с чипом и можно без проблем пользоваться, либо пытаться найти правильные драйвера на чип, либо выбросить свисток.
    Воткнул китайский ноунейм, на чипсете MT7601

    А это как раз правильное решение покупать по чипсету, а не по названию бренда, хоть и Китай.
    Ответ написан
  • Почему от 16 GB VRAM нет большой производительности если шина 128 бит?

    @alexalexes
    Решил спросить в комментариях YouTube совета, сказали не брать 4060 или 4060 ti на 8 или даже 16 GB потому что там шина 128 бит урезанная, и по сути от PCIe x16 нет никакого толка, якобы "будет всё работать нормально но только как по x8".

    Что-то перепутали теплое с мягким.
    Когда говорят о битности видеокарты, то имеют ввиду ширину шины между GPU и VRAM (грубо говоря, больше чипов памяти на плате - больше битность). Этот параметр повышает эффективность параллельной работы задач уже загруженных в GPU. Это напрямую влияет на FPS и плавность его падения от простых сцен к сложным.
    Когда говорят про PCIe - то тут шина от GPU к CPU - этот параметр будет влиять, если приложению не будет хватать VRAM чтобы обновить сцену - в этом случае будут просадки FPS.
    4060 или 4060 ti на 8 или даже 16 GB

    Чип GPU чуть по производительней, кол-во чипов VRAM такое же, только объем чипов x2. Вот и вся разница.
    Там вроде чипы vram говорят распаяны с обратной стороны платы, причём на те же ножки, в простую, с обратной стороны текстолита, и какой в этом минус, если перегрева особого от этого не происходит

    Какие-то чудеса говорите. 4 чипа будет, не больше не меньше, а уже на них раскидывайте любую поддерживаемую емкость банок памяти для данных GPU.
    Как по мне, карта вроде хорошая, если учесть что это не замена 3060 а встройки 12 поколения, и если учесть что она и без DLSS потребляя 115 ватт лучше по производительности на 5-15% чем предыдущее поколение, за те же деньги

    Для тех кто хочет действительное что-то новое, не заезженное, после встройки, но не готов платить как за чугунный мост. Еще преимущество, что конструктивные особенности охладов в 4000-ой линейке более менее качественные, если сравнивать разных производителей, и между топами и бюджетов - можно по этому параметру брать любую карту и не беспокоится. Качество исполнения радиаторов не гуляет от Palit-а к MSI, как в 3000-ой линейке - если нужно что-то выбирать из этого поколения, то придется внимательно смотреть на этот параметр.
    Ответ написан
    1 комментарий
  • Как объединись значения из двух массивов в один?

    @alexalexes
    Типичная ситуация преобразовать плоский массив, полученный из запроса, в более объемный вложенный массив:
    $rows = /* тут выполняется запрос для получения данных */;
    $out_data = []; // массив выходных данных
    foreach($rows as $row)
    {
      $order = &$out_data[$row['order_id']]; // ссылка на элемент массива заказа
      $order['order_id'] = $row['order_id'];
      $order['firstname'] = $row['firstname'];
      $order['lastname'] = $row['lastname'];
      $order['telephone'] = $row['telephone'];
      if(!isset($order['products'])) $order['products'] = []; // этот if  нужен, если обязательно наличие ключа products с пустым массивом, если в выборке возможны пустые реквизиты продукта.
      if(!is_null($row['product_id']))
      { 
        $product = &$order['products'][$row['product_id']]; // делаем ссылку на элемент массива products с уникальным ключом product_id
        $product['product_id'] = $row['product_id'];
        $product['sku'] = $row['sku'];
        $product['quantity'] = $row['quantity'];
        // ... таким же способом можно делать более глубокие ссылки в product, если в этом элементе понадобится массив данных
        unset($product); // уничтожайте ссылку в конце цикла, иначе не сможете переиспользовать переменную $product за циклом.
      }
      unset($order);
    }
    Ответ написан
  • Как выбрать базу данных для проекта?

    @alexalexes
    1. Если в разрабатываемой системе нет потребности производить нечеткий поиск, получать сверхбыстрый ответ на запрос в реальном времени (не более пары миллисекунд), производить аналитику данных в самых разных разрезах. У вас в потоках данных определены сущности с четкими реквизитами и сущности имеют высокую связность, то в 99% случаях вы даже не повернете голову в сторону нереляционных СУБД, будете использовать реляционные.
    2. На самом деле, просто зависит от того, как сложно администрировать СУБД в том масштабе, в которой развилась база данных. Сначала берут первую попавшуюся, или с тем, с чем освоились более-менее, а потом смотрят с течением времени, как сложно нанять нужного специалиста на администрирование, удобно ли масштабировать экземпляры баз данных при возросшей нагрузке, удобно подымать экземпляры из небытия, держать непрерывный аптайм. Вот тут уже выясняется специфика работы предметной области и необходимость переезжать на подходящее окружение.
    Ответ написан
    1 комментарий
  • Как избавиться от лишних пользователей wifi?

    @alexalexes
    Переделать авторизацию с Personal на Enterprise, поднять Radius сервер и выдавать каждому пользователю логин и пароль индивидуально. В настройках радиуса установить одну (две) авторизацию на одного пользователя.
    Ответ написан
    Комментировать
  • Как установить лимит на количество сканируемых файлов?

    @alexalexes
    Если в общих чертах рассказать, то вам нужно сделать такие шаги:
    1. Переписать функцию из рекурсивной формы в стековую форму. То есть, вместо того, чтобы пользоваться стеком вызова функций и помещать туда входные параметры вызова (в данном случае, $dir), вам нужно самим на основе массива создать стек для хранения параметров, чтобы реализовать хранение контекста текущей директории.
    После того, как вы организуете стек, вы легко можете прерывать функцию в любом месте и сохранять состояние стека в свойстве класса.
    2. Сохраняйте дескриптор $handle в свойстве класса и очищайте его, когда полностью пройдете по текущей директории или когда полностью закончите сканирование. Это также позволит прерывать функцию в любом месте.
    3. Чтобы сканировать по 100 файлов, делайте локальный счетчик внутри функции и просто выходите из функции, когда достигли макс. значения.
    4. Имея 1, 2 и 3, при очередном вызове функции сначала проверяете можно ли воспользоваться дескриптором $handle для чтения очередного файла, если нет, то попытаться вытащить следующий элемент из стека директорий, освежив дескриптор $handle.
    Если у вас удалось получить рабочий $handle, то сканирование продолжится.
    Когда сканирование находит очередной каталог, то его нужно положить в стек. Если переключаться на сканирование найденного каталога сразу, то у вас будет работать метод сканирования в глубину, если переключаться на новый каталог после того, как закончите сканирование текущего, то сканирование будет работать в ширину.
    ЗЫ: чтобы запустить функцию сначала, нужно положить в стек элемент с корневым каталогом.
    ЗЫЫ: В стеке удобнее будет хранить дескрипторы а не строковые пути, по ним удобно работать функцией readdir, если у вас будет поиск в глубину.
    Ответ написан
  • Как транспонировать строки в столбцы?

    @alexalexes
    Никак. Эта форма вывода сведений. Она должна рисоваться либо у конечного пользователя в графическом интерфейсе, либо скриптом на стороне сервера, клиентом СУБД которого он является (PHP, NodeJS), либо, на худой конец, хранимой процедурой или функцией, которая на выходе выдает текст в html.
    Напрягать SQL, чтобы выводил произвольное кол-во столбцов - это не его задача.
    Ответ написан
    Комментировать
  • Какая логика поднятия объявлений в топ?

    @alexalexes
    Я бы построил бы структуру таблиц так, чтобы можно было бы выполнить такой запрос (по версии sql Oracle):
    -- премиум выборка
    select  1 as priv_type, -- тип привилегии 1 - премиум объявление
        C.*
    from
    (
      select B.*,
                 dense_runk() over (order by B.user_id) as user_num, -- нумеруем авторов объявлений
                 row_number() over (partition by B.user_id order by rownum) as add_num -- нумеруем объявление в пределах автора
      from
      ( -- достаем премиум объявления в случайной сортировке
         select A.*
           from A
         where premium_pay_date is not null and sysdate - premium_pay_date <= 3 -- условие попадания в премиум
      order by DBMS_RANDOM.RANDOM
       ) B
    ) C
    where user_num <= 5 -- берем 5 авторов
       and add_num = 1  -- по одному объявлению от автора
    union
    -- обычная выборка
    select 2 as priv_type, -- тип привилегии 2 - обычное объявление
             A.*,
            -- зануляем доп. поля от премиум, чтобы union работал корректно
            null user_num,
            null add_num 
      from A
      where premium_pay_date is null or sysdate - premium_pay_date > 3 -- можно исключить премиум из общей выборки, а можно не исключать
    order by priv_type, Publication_Date desc
    Ответ написан
    Комментировать
  • Есть ли бесплатная база данных с фильмами?

    @alexalexes
    Торрент-форумы очень хорошо структурированы, как каталог фильмов.
    Если приложить некоторые усилия в плане парсинга такого форума, то можно получить дамп .torrent файлов - а это практически прямые источники видеопотока, но нужен торрент-клиент.
    Ответ написан
    Комментировать