Задать вопрос
  • Как правильно изменить sql запрос чтобы считывать данные с двух строк одной базы данных?

    @alexalexes
    Если предположить, что в таблице _post_extras есть столбец user_id, при этом данная таблица хранит расширенные сведения о записях другой таблицы - _post, каждая запись которой связана с первой таблицей отношением 1 к 1, через ключ post_id (название столбца-ключа как с первой таблицей, так и со второй автор не сообщал, но такая связь обязана существовать), получается следующее:
    SELECT SUM(rating) as rating, SUM(vote_num) as num
      FROM " . PREFIX . "_post_extras as pe
      inner join " . PREFIX . "_post as p on p.post_id = pe.post_id -- тут название ключей post_id с обеих сторон нужно уточнять!
    WHERE pe.user_id ='{$id}'
         and p.category = '{$category_id}'

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

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

    @alexalexes
    Во времена царствования AGP интерфейса можно было получить поломку в виде короткого замыкания, если стандарт питания не был соблюден на мат. плате и видеокарте.
    Но сейчас давно времена PCI-E, такое в принципе невозможно на данном интерфейсе. Так что, ставьте смело.
    Ответ написан
    Комментировать
  • Получить аудиофайл из запроса к Google Translate?

    @alexalexes
    https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&tl=en&q=Ваш+текст+на+английском

    Такой вариант работает, но не исключено, если будете эспериментировать с параметрами или частотой запросов, то будут блокировки.
    Ответ написан
    Комментировать
  • Как сравнить два поля VARCHAR и INT?

    @alexalexes
    Как выглядит ваша проблема:
    Таблица новостей:
    ID, CATEGORIES
    1, '1,13,14'

    Как нужно реализовать:
    Добавить еще таблицу Categories_Of_News
    ID, NEWS_ID, CATEGORY_ID
    1, 1, 1
    2, 1, 13
    3, 1, 14

    Тогда запросы не будут содержать никаких костылей с парсингом строк и у вас будут работать индексы (если их создать).
    Например, получить все категории, в которые входит новость :news_id
    select  C.Id
    from News N
    join Categories_Of_News CoN on CoN.News_Id = N.Id
    join Category C on C.Id = CoN.Category_Id 
    where N.Id = :news_id

    PS: Смотрите, как реализовать связь "многим-ко-многим".
    Ответ написан
    Комментировать
  • Почему событие onchage не срабатывает для select?

    @alexalexes
    Есть события: click, change, input и т.д.
    Привязка обработчика соответствующего события с использованием атрибута тэга осуществляется с приставкой on:
    <select id="selectTheme" onchange="alert('Theme changed')">
    </select>

    Но в тоже время, привязка обработчика события с использованием addEventListener не требует указания on, берется само название события и с названием атрибута не нужно путать:
    sel.addEventListener('change', (event) => {
        	alert('Theme changed');
        })
    Ответ написан
    3 комментария
  • Для чего нужны спецификаторы в C?

    @alexalexes
    Чтобы дать функции printf дополнительную информацию, в каком виде вы хотите вывести результат второго и последующих аргументов этой функции. Спецификаторы имеют определенное отношение к такому понятию, как тип данных. В выводе типа вещественного числа можно настроить знаковую точность, поэтому есть не только %f, но и %0.f и т.д.
    https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D...
    Ответ написан
    Комментировать
  • Как собрать в один массив несколько переменных из input с одинаковыми ID?

    @alexalexes
    Если наступить на горло веб стандарту, игнорируя условие уникальности, то к id нужно относиться как обычному атрибуту тега. Следовательно, для захвата всех элементов с одинаковым id в коллекцию нужно использовать селектор вида:
    input[id="id_imgs"]
    Ответ написан
    1 комментарий
  • Как записать данные из запроса VK в бд?

    @alexalexes
    Отработать навык, как вставить в базу вообще что-то.
    Например, так https://html5css.ru/php/php_mysql_insert.php
    Обратите внимание, что у процесса взаимодействия с БД есть несколько фаз работы:
    подключение к базе, формирование запроса, добавление параметров к запросу, выполнение запроса и получение результата (если нужен действия статус или выборка).
    Ответ написан
    Комментировать
  • Как уменьшить разрешение картинки без потери качества?

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

    @alexalexes
    Можно.
    Для трех точек кривая Безье описывается как:
    P = (1−t)^2*P1 + 2(1−t)*t*P2 + t^2*P3
    Для координат X уравнение примет вид:
    X = (1−t)^2*X1 + 2(1−t)*t*X2 + t^2*X3.
    X - эта координата на кривой Безье, и X1, X2, X3 - это координаты X опорных точек.
    Очевидно, что X будет перебираться в области min(X1,X2,X3) до max(X1,X2,X3), но не факт что каждый X даст точку (или сразу две точки) на кривой Безье.
    Получается, что X1,X2,X3 - вы задаете сами, а X перебираете исходя из условия выше.
    Осталось разобраться, как найти t.
    Перепишем уравнение, чтобы известные координаты стали константами квадратного уравнения.
    X = X1 - 2*X1 + X1*t^2 + 2*X2*t - 2* X2 * t^2 + t^2*X3
    X = (X1 - 2*X2 + X3) * t^2 + 2 * (X2 - X1) * t + X1
    Получается квадратное уравнение:
    (X1 - 2*X2 + X3) * t^2 + 2 * (X2 - X1) * t + X1 - X = 0
    Коэф, которого:
    a = X1 - 2*X2 + X3
    b = 2 * (X2 - X1)
    c = X1 - X
    Решаете его, получаете 2 решения.
    Если есть решение с t в отрезке от 0 до 1, значит точка определена на кривой Безье (могут быть оба решения входить в отрезок 0,1 - это две разные точки!).
    Зная t, можно найти Y координату:
    Y = (1−t)^2*Y1 + 2(1−t)*t*Y2 + t^2*Y3
    Если решение уравнения не входит в данный отрезок, либо нет решения с действительным числом (дискриминант оказался отрицательным), то на данной координате X нет точки на кривой Безье.
    PS: Скорее всего вы найдете Y близкие к целочисленным значениям с некоторой погрешностью, можно округлять к ближайшему целому.
    Ответ написан
    Комментировать
  • Как организовать обработку url запросов на сайте на стороне сервера?

    @alexalexes
    Но это очень ресурсозатратно, поэтому я хочу создать отдельный серверный обработчик, занимающийся абсолютно всеми обращениями к сайту. Допустим, если сайт называется asd.com, то любое обращение через asd.com (asd.com/registration, asd.com/documents/users, asd.com и т.д.) должно проходить через этот скрипт. Сам скрипт, считывая url запрос, выдавал бы определенный нужный файл, а сама строка url при необходимости изменялась бы при помощи js (pushState и replaceState например)

    Ну, вы уже описали технологию, берете любой популярный веб-сервер - php, node.js, python, asp net и реализовываете.
    А каким образом вообще можно организовать сервером обработку url

    Любой запрос, прежде чем попасть на выполнение в серверный скрипт попадает на обработку на http сервер.
    Скорее всего, вы будете работать с apache или nginx. Ответ на этот вопрос кроется в искусстве конфигурирования файла htaccess или nginx.conf.
    PS: После того, как http сервер перенаправит запрос согласно правилам конфиг. файла до нужной точки входа - тому файлу-скрипту, с которого начнется выполнение кода на сервере, сам скрипт точки входа может передать управление другому исполняемому файлу компоненту или просто подключать нужные скрипты, согласно параметрам url. Этот процесс называется роутингом, а координирующий скрипт - роутер.
    Если вы поищите "Роутер или роутинг в <любимая среда разработки/фреймворк>" то найдете пример реализации.
    Причем, роутинг можно реализовывать, как на стороне сервера (роутинг php/laravel/node.js), так и на стороне клиента (клиентские фрейворки, например vue).
    Самый наколеночный вариант будет выглядеть так.
    После того, как научитесь создавать многокомпонентное серверное приложение и связывать их, можете посмотреть, что такое Rest API, GraphQL, TreeQL.
    Ответ написан
    Комментировать
  • Как изменить положение у строчно-блочных элементов списка?

    @alexalexes
    </li><!-- тут символ переноса строки, вносит свою лепту как текстовая нода, имеющая небольшие, но геометрические размеры -->
          <li class="modules-card layout">

    Часто такой эффект выявляется, когда используется display: inline-block.
    Выход - не переносить li элементы (и не оставлять пробелы), или нивелировать размер текстовых нод с помощью css.
    Ответ написан
    Комментировать
  • Структуризация и импорт базы для интернет магазина?

    @alexalexes
    артикулом/категорией/брендом/названием/ценой

    Редко какое свойство товара останется скалярным значением с развитием структуры базы и не перейдет в таблицы-справочники.
    Что же сразу должно бросится в глаза начинающему проектировщику БД - это то, что нужны таблицы:
    - Категория товара
    - Бренд
    - Цена на товар (одна запись соответствует цене товара за определенный период, может нести сведения о скидке и т.д.)
    Причем, валюта цены тоже может быть отдельным справочником.
    У товара могут быть габариты ДxВxШ.
    Название оси габарита - эта тоже справочник.
    Размерность - см, м, дюймы - тоже справочник.
    Так что, смотрите, любое свойство можно превратить в справочник, и довольно разобранный на составляющие.
    Ответ написан
    Комментировать
  • Перенос таблиц из одной бд в другую в postgresql?

    @alexalexes
    В общем случае, вам нужно подучить, чем отличаются
    а) запросы, которые модифицируют архитектуру базы (Create table, Alter Table, Create index и т.д.)
    б) от запросов, которые работают с данными текущей архитектуры (SELECT, INSERT, UPDATE, DELETE).

    Сделав экспорт базы в формате sql, вы обнаружите, что дамп состоит из запросов, которые сначала создают или модифицируют архитектуру базы, а зачем, идут запросы, которые вставляют данные.

    Например в db1 есть table_user с сотнями данных, а в db2 его нет. Нужно, чтобы table_user перешел в db2, но без данных, нужно чтобы она просто создалась.


    Для этой задачи достаточно взять дамп db1 базы или даже отдельной таблицы table_user, и выполнить только те запросы из дампа, которые не касаются вставки данных в table_user, и других таблиц объектов схемы.

    И второй вариант событий: в db1 и db2 есть table_user, но у db1 table_user появилось 20 новых колонок, как их передать в более легком виде db2 table_user?

    Тут посложней.
    Изучайте alter table add column и применяйте его для недостающих колонок. Не забудьте из дампа взять запросы, которые создают или модифицируют другие объекты, связанные с новыми колонками.
    Ответ написан
  • Как сделать проверку наличия слов?

    @alexalexes
    Самый тупой вариант без регулярок:
    $email_exploded = explode('@', $email);
    if(count($email_exploded) == 2 && ($email_exploded[1] == 'gmail.com' || $email_exploded[1] == 'mail.ru'))
    {
      echo 'Домен в порядке, проходите!';
    }
    Ответ написан
    Комментировать
  • Как настроить автоматический вход в личный кабинет на сайт?

    @alexalexes
    В качестве ключа для автоматического входа нужно использовать идентификатор открытой сессии.
    Ни в коем случае не хранить пароль.
    Нежелательно светить логин и id, по которому авторизовывались.
    Идеально, держать подальше идентификатор сессии от JS скрипта, сделать куку только http only и позволить проверять ее только серверу.
    Ответ написан
    2 комментария
  • Процедурная генерация случайного мира из 100 на 100 клеток?

    @alexalexes
    Интуитивно можно действовать так:
    1. Капнуть разными красками в N начальных точках, выбранных случайно.
    2. Выбрать цвет для покраски следующей точки (случайно или последовательно).
    3. Найти точку выбранного цвета, с которой еще не работали (нужно выходить из цикла если отработали все точки).
    3.1. Если непокрашенных соседей нет, то запоминаем, что работали с этой точкой, идем опять на шаг 3 (или на шаг 2, можно случайно выбирать).
    4. Выбрать у этой точки непокрашенного соседа (случайным образом).
    5. Покрасить соседа выбранным цветом.
    6. Запомнить, что работали с точкой, выбранной на шаге 3. Перейти к шагу 2.
    7. Кончились точки с которыми не работали - скорее всего пора выводить результат.
    Ответ написан
    Комментировать
  • /deletethis/deletethis?

    @alexalexes
    Не факт, что там будет изучение именно веб'а или нужного мне ЯП.

    Ни колледжи, ни университеты не созданы, чтобы следовать трендам. Вас просто познакомят с систематизированными знаниями о Computer Science. Что такое машина Тьюринга, как работает центральный процессор, как данные из ethernet кабеля на нижнем уровне превращаются в http запрос на верхнем уровне, как работать с графами, как работает диспетчер задач в ОС, как распределяется память между процессами, какова сложность алгоритмов и т.д. Вы получите, только те знания о технологиях, которые стали фундаментальные, классикой жанра.
    Главной задачей профессии вашей станет не получение этих знаний, и даже не тех знаний, которые дают тренды. А чтобы найти заказчика, или устроиться на место работы, куда приходят нужные вам заказчики (желательно, чтобы они были достаточно денежны), и обслуживать их интересы. У них будут потребности в некой системе, в которой будет кнопочка "сделать хорошо", ваша задача будет сделать кнопочку "сделать очень хорошо", или даже "супер". Заказчику будет не важно, пишите ли вы на пайтоне или на пыхе, получили навыки работы с бэком две недели назад или пашете 5 лет. Если вы напишите свой продукт достаточно качественно и в срок, то ваши потуги оценят (желательно принимать только денежные оценки). Вот в этом и будет философия "доучивания".
    В универ стоит идти, если не хотите сразу из школы в армию. В универе можно будет учиться на 3, посещать меньше всего занятий, насколько это возможно, и одновременно искать место, где можно работать с теми самыми заказчиками.
    Ответ написан
  • Сравнение времени mysql?

    @alexalexes
    Минус переставьте в нужное место.
    SELECT * FROM `test` WHERE `time` >= (now() - INTERVAL 10 MINUTE);
    Ответ написан
    3 комментария