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

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Можно я внесу немного конструктивной критики в ваш вопрос, ну и сделаю некоторые выводы, возможно вам они будут полезны...

    Я занимаюсь разработкой интернет проектов. Сейчас вместе с командой специалистов мы готовимся к разработке большого и высоконагруженного проекта.
    Вы же не рекламное письмо фирме пишете, говорите четко - "у нас есть 6 маркетологов, джун верстальщик и эйчар". Ну или " У нас было два пакетика травы, семьдесят пять ампул мескалина, 2 явиста мидла, 2 пхп сеньера, бухгалтерия, наполовину наполненная старушками с калькуляторами, и целое море различных специалистов по яваскрипту, цсс, хтмл и их комбинациям в ассортименте, а так же...".
    Тогда понятно - что вам искать, какие спецы какого уровня у вас уже есть и стоит ли их менять или строить будущую архитектуру под уже имеющийся состав.

    Общая концепция выглядит приблизительно так:
    Будет много разных баз данных, в которых будет храниться информация разного типа, текстовая, . Каждая база будет содержать информацию по разным темам.
    Информация графическая, видео и аудио типов чаще всего не хранится в бд. Если вы не программист/архитектор IT структур - поручите вопросы архитектуры и структурирования данных кому-либо из команды, кто в этом разбирается (если таковые есть).

    Отдельно будет полнотекстовая поисковая система объединяющая информацию из всех источников.
    В принципе не особо зависит от стека, тут больше архитектурно-проектировочная задача.

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

    Посоветуйте пожалуйста какой стек технологий для разработки выбрать, с учётом некоторых условий:
    - Язык(и) программирования современные и содержащие подробную информационно-документальную базу и популярные сообщества поддержки.
    На сегодняшний день есть 4-5 хорошо распространенных языка, используемых в вебе: пхп, ява, жс, питон, в меньшей степени c#, руби, голанг, остальные больше экзотика, нежели мэйнстрим.
    - Высокая производительность и многопоточность.
    Которая в вебе не особо нужна, хотя практически все вышеперечисленные языки в той или иной мере многопоточность поддерживают. Опять же - сразу "видны уши" вашей недостаточной компетентности в вопросах разработки высоконагруженных проектов. Дело в том что в 99% случаев код именно языка программирования особо не нагружен. Больше всего процессорного времени будет съедаться запросами к бд и внешним сервисам. Код просто прослойка между фронтом и бд, чаще всего просто выполняющая задачи CRUD прослойки.

    - Простая масштабируемость.
    - Актуальность на ближайшие 2-3 года.
    Везде подходит

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

    Постарайтесь пожалуйста привести аргументы в пользу того или иного выбора, а так же возможные минусы.
    выбор надо делать не в пользу языка, а в пользу специалистов (ну и от них плясать уже по стеку). Как пример - проще всего поднять на пхп/ноде, специалистов много, они дешевле например явистов или шарпистов, поддержка проекта не сдохнет при уходе какого-нибудь ведущего спеца. С другой стороны, если речь идет о корпоративном заказе - скорее всего вам придется писать на яве/цшарп, емнип только у них есть соответствующие сертификаты по работе с шифрованием и прочей секюрити. Так же сильно зависит от того кто вообще есть в вашем регионе, кого можно быстро/возможно вообще найти на замену уходящим сотрудникам, и еще 1000 и один вопрос, который отпадает при выборе специалиста, а не стека (после этого голова болит уже у него, а не у вас, но в своей области, что гораздо лучше).

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

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Техническое задание.
    Ответ написан
    Комментировать
  • Нужно вместо хэша возвращать имя файла, при это сохранять файлы как хэш на сервере?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    так как мне передать это имя пользователю
    Из всего диалога в комментариях должен быть вывод:
    1) урл файла для скачивания может быть любым, его трогать не надо.
    2) Чтобы файл скачался под нужным именем, в заголовки нужно добавить принудительное переименование на клиенте
    header('Content-Disposition: attachment; filename="' . $meta['name'] . '";', false);
    , где $meta['name'] - имя под которым должно сохраниться у пользователя.
    Ответ написан
  • Как построить запрос по выборке состоящей из дат?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    sql запрос по выборке состоящей из дат?
    Не из дат, а из строк, то что вы думаете о них как о датах, таковыми их не делает.

    в самой таблице бд они хранятся как VARCHAR(50)
    Тадааам! Вот и ответ на вопрос "а зачем все эти стопитьсот типов, когда есть варчар?" Это раз. Ну а в случае скулайта - хотя бы соблюдать формат ISO8601 и использовать соответствующие функции.
    Ну и второе - last_control_milking_date == "10.10.2022" с двумя "равно".

    Ну и по мелочи:
    - судя по переменным внутри запроса это из пхп, но переменная sql не имеет $ (возможно просто опечатка?).
    - зачем farm_name в квадратных скобках, есть общепринятый формат выделения полей через `` кавычки, что позволяет запросу быть "кроссплатформенным"?
    - ну и классика - почему не используются подготовленные запросы?
    Ответ написан
    3 комментария
  • Как сделать привязку данных таблицы к тому юзеру у которого открыта сессия на сайте(он авторизовался) привязка по типу id==userid?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    если решение наколеночное, не фреймворк, то в сессию пишется что-то типа $_SESSION['user']['loggedIn'] = true; По вкусу можно держать там же айди юзера, и например никнейм, чтобы два раза не бегать... Или взять движок типа лары и использовать что есть из коробки...
    Ответ написан
    Комментировать
  • Почему рабочий php код не работает?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    При попытке сделать var_dump($result); я получаю NULL
    Заменить file_get_contents на curl, в курле включить verbose (гуглить curl verbose php). Скорее всего лажа с серитфикатами. Можно поставить настройку игнорить сертификат, но сервер может просто не принимать ваши запросы. В любом случае нет смысла гадать, надо смотреть отчет курл по соединению.
    Ответ написан
    Комментировать
  • Форма отправки методом POST?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Если используется движок - скорее всего он перебивает пост данные и имеет свою обертку для доступа к пост данным. Судя по скринам, вы вызываете не один конкретный файл, а целую цепочку, от индекса через какое-то ядро и до шаблона, что там происходит - загадка. Читайте доку к фреймворку. В остальных случаях - все должно работать, единственно что проверки по типу if(isset ($_POST ) && $_POST)тупость, хоть и простительная новичку, но все равно непонятно зачем вообще это.
    Ответ написан
  • Временная страница сайта?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    гуглить:
    Единая точка входа
    mod_rewrite
    MVC
    роутинг
    Ответ написан
    1 комментарий
  • Как передавать html по ссылке?

    ThunderCat
    @ThunderCat Куратор тега HTML
    {PHP, MySql, HTML, JS, CSS} developer
    открыть в браузере - выделить все - ктрл+ц - ктрл+в в гугл почту не пробовали?
    Ответ написан
    Комментировать
  • Почему происходит сбой авторизации во фрейме через какое-то время после открытия страницы?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Если это SPA, то скорее всего протухает токен. Пинайте бэкендеров на тему "а чо так мало?" в плане лайфтайма токена.
    Ответ написан
    3 комментария
  • Как конвертировать уже существующие записи в другую кодировку?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Мне нужен рецепт
    Рецепт зависит от ингридиентов, универсального рецепта нет.

    Столбец name из кодировки utf8mb3_general_ci в utfmb4_general_ci
    Просто смените ему кодировку, данные "сконвертируются" автоматически, так как "битность" существующих данных не поменяется. На всякий случай можно сделать копию таблицы и поиграться с ней перед сменой основной таблицы, но вообще-то разницы быть не должно.
    Ответ написан
  • Объеденить 2 модели при выводе?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Короче, есть два стула варианта:
    1) Хороший, но долгий и муторный - рефакторинг. Переделать таблицы, разнести данные, навести порядок и красоту. Скорее всего это не ваш вариант, ну или придется сильно бодаться с владельцем.
    2) Вынести в отдельную таблицу денормализованные данные, то есть айди, материал_айди, материал_тайп, дата. И после выборки уже извращаться на основе выборки из нее с материалами из 2 других таблиц. Если честно - хрень полная, но работать будет. Естественно, при добавлении новых сущностей надо будет еще туда добавлять записи.
    Ответ написан
    4 комментария
  • Как передать цифру из переменной JS в переменную PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Мне нужно сделать вывод информации о карточке в модальном окне, для этого я решил использовать связку jquery and php, данные получаем из базы данных и выводим циклом в карточки, но если нажать на карточку, то открывается подробное описание.

    1) ничего не мешает при формировании страницы сразу добавить всю информацию в готовые шаблоны, а по нажатию делать их видимыми. Собственно чаще всего так и делают.
    2) Аякс - запросы без перезагрузки страницы, позволяющие получить данные с бэкенда "скрытым" запросом. Отправляете ваш айди аяксом на заранее подготовленный урл, который обратно отдает данные карточки.
    Ответ написан
    2 комментария
  • Лента последних купленных товаров?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    сокеты ? EventSource ? просто гет запросы через каждые 2 минуты ?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Можно ли сделать таким образом, чтобы указанные данные передавались в форму на сайте B сумбитили ее и возвращали обратно результат то есть редириктели на полученную ссылку, но надо сделать так, чтобы этот процесс проходил быстро и не перенаправлял пользователя на сайт B, а возвращал уже результат.
    Нет, если вы не можете модифицировать код сайта В. Единственное что можно сделать - субмитить форму на свой сайт А, на сервере принимать эти данные и с сервера А на сервер В отправлять запрос с этими данными (нарпример через CURL), получать ответ, обрабатывать и возвращать нужные данные на фронтенд.
    Ответ написан
    Комментировать
  • Откуда берутся cookie в запросе?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    1 - да.
    2 - куки могут устанавливаться 2 способами, с клиента и с сервера. Эти скорее всего с сервера передаются.
    посмотрел все предыдущие ответные заголовки
    Видимо не все. Если это куки относящиеся к авторизации, скорее всего они появляются в ответе пост запроса. Или, если вы уже заходили ранее на этот сайт, они уже были у вас на момент открытия странички, а часть из них записывается при первом же заходе, например сессионная кука.

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

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    if (file) { //если человек прикрепил файл
    const formData: any = new FormData()
    formData.append('chat_id', CHAT_ID)
    formData.append('document', file)
    text: message,
    parse_mode: 'html',
    axios
    .post(URL_API_DOCUMENT, formData, {
    headers: {
    'Content-Type': 'multipart/form-data',
    },
    })
    .catch((error) => {
    console.warn(error)
    })
    }
    Ответ написан
  • Как ускорить выполнение скрипта?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    // вычисляем номер последней записи
    Вы напишите нормально какую задачу то решаете? А то как-то не соответствует код комментариям... вы перебираете ВЕСЬ массив, и вычисляете минимальное число. Зачем? Вы что, каждый раз перенумеровываете все записи при добавлении новой???
    Ответ написан
  • Как объедеить запросы и выполнить один SQL запрос и затем получить результат в виде значений переменных PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    SELECT v.product, , v.link FROM v_product v WHERE v.id = 5463 ORDER BY v.product ASC;
    SELECT i.id as info_id, i.link_to_site FROM infograph v WHERE id = 5463;
    SELECT i.info, description, title, price, first_letter FROM baseinfo v WHERE id = 5463;

    Во первых - куда делся префикс алиаса в условии во втором запросе и почему сам алиас как в первом, хотя используется какой-то i? И тот же вопрос про третий запрос. Еще и в первом 2 раза выбран v.link... Короче бардак с самими запросами для начала пофиксить бы...
    Во вторых - почему у вас айди в 3 разных таблицах один и тот же? Может это не первичный индекс, а внешний ключ, тогда он должен иначе называться. И где тогда сам первичный ключ?
    В третьих - сделать нормальную структуру, ну и тогда можно объединить их через внешний ключ, с указанием что один из них (базовый) равен 5463.

    Похоже что сам синтаксис вам предельно незнаком, и вы просто пишете рандомные строки...
    Ответ написан
    5 комментариев