• Как правильно спланировать обучение?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Если есть именно желание изучать - ты уже на полкорпуса впереди остальных.
    требования к джунам выросли, кол-во откликов от чуваков, прошедших трёхмесячные курсы скиллбокса, просто зашкаливает.
    Так и рынок взрослеет, раньше программирование было сродни шаманству, в институте учили азам, из учебников - документация, хорошо если на английском, а дальше старшие товарищи тебе объясняли как работает эта большая черная штука с зеленым монитором. Сейчас сфера как раз в том состоянии когда работы много, местами очень много, а работников с уровнем "сел и работает" кот наплакал, а джунов больше учить надо, чем ждать с них профита, так как обучаемость вещь ограниченная, ну и кроме того теперь вместо одной большой черной штуки их целый зоопарк, каждая контора молится на свой большой и черный набор технологий... То есть самый выгодный сотрудник - мифический "твердый мид", уже умеет делать что говорят, но стоит все еще не как сеньор.

    По этому рынок ищет джунов со скилами мида, ищет активно и не всегда безуспешно. Опыт собственных проектов сложнее верстки в 3 колонки и 3 скриптов, установленных с гита, играет в серьезный плюс.

    Из ваших скилов вам сильно не хватает как фронту одного-двух фреймворков, без которых сегодня уже никто никуда не едет в 90% случаев, соответственно учим в порядке популярности vue/react/angular, хотя бы 1 из уже будет серьезной заявкой на победу, тайпскрипт соответственно тоже.

    надеюсь что к моменту моего 3-4 курса (2026-2027) ситуацию с наймом как минимум не усугубится
    Ситуация будет усугубляться с каждым годом, в плане того что спецов так быстро готовить просто не реально, по крайней мере массово, по этому дефицит кадров будет только расти.

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

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

    В нашей же реальности есть автомобиль Тесла с автопилотом и подтвержденный факт что люди нарисовав левую разметку вызвали попадание машины на отбойник.
    Во первых - "автопилот" 2 уровня, то есть по сути адаптивный круиз-контроль, никак не тянущий на полноценное решение для распознавания ошибок в дорожной разметке. Во вторых это не есть нарушение работы нейросети, она натренирована соблюдать разметку и делает это хорошо. Это все равно что взломать деревообрабатывающий станок, сунув в него лом вместо полена, результат будет такой же нестандартный, как и вводимый материал. Кроме того, замечу что уровни автономности определяют так же и юридические аспекты ответственности, так например уровень автономности от 1 до 3 предполагает ответственность водителя за все правонарушения и аварии, в то время как уровни 4 и выше уже выносят ответственность за все последствия на производителя.

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $q = "INSERT INTO post(author, date_p, text_p) VALUES ('$author', '$datep', '$text_content')"; 
    //  ";" в одиночных запросах не ставится, а текстовые значения обрамляются кавычками
    var_dump($q); //смотрим глазками, проверяем в консоли
    $q = "INSERT INTO post(author, date_p, text_p) VALUES (?, ?, ?)"; 
    //никогда не лезем в бд без подготовленных выражений!
    $st = $pdo->prepare($q);
    $sth->execute([$author, $datep, $text_content]);
    Ответ написан
    1 комментарий
  • Не работает return PHP. Ничего не выводит на экран, что делать?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Мне нужно что-бы функция вернула корни уравнения в виде массива.
    Она возвращает

    Однако я получаю пустоту.
    Однако не получаете

    Почему?
    Скорее всего вы подразумевали не "получение" а "вывод". Но никакого вывода на экран вы не используете.

    Не работает return PHP. Ничего не выводит на экран, что делать?
    Формально ответ - по тому что "получение"/"возвращение" и "вывод" абсолютно разные вещи.
    Ответ написан
    Комментировать
  • Какие вещи нужно изучить чтобы подготовить себя к работе с Highload проектами?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Хайлоад это не какой-то особенный тип проекта, это все обычные проекты, но с объемом "туда-сюдирования" данных выше, чем тянул "прошлый сервер", когда проект был еще не хайлоад. В 90% случаев это выражается в росте количества запросов к бд, которая либо становится слаба по железу, либо вылазят косяки в запросах, написаных абы как, включая отсутствие индексов и кривую архитектуру.

    Что делается для "хайлоадинга"?
    1) Меняются сервера на помощнее, но это больше к админам обычно.
    2) Выявляются узкие места, в подавляющем большинстве случаев это либо обращения к бд, либо работа со сторонними сервисами, а-ля АПИ фейсбука и все такое.

    Как разгонять именно такие затыки 2 варианта - есть 3 пути:
    1) Оптимизация. Все что возможно ускорить - ускоряется, находятся самые тормознутые запросы, прогоняются через explain, переписываются, тюнятся, индексируются до состояния максимальной производительности.
    2) Кэширование. Обычно используют кей-валуе инмемори хранилища а-ля мемкеш и редис, и результаты запросов часто используемых, но не часто обновляемых данных пишутся в кэш. Время жизни настраивается в зависимости от необходимой актуализации. По идее на высоких нагрузках даже кэш с времением жизни 5-10 секунд может в разы снизить нагрузку на сервера.
    3) Иногда стандартных средств и инструментов не достаточно, и нужно искать какие-то новые инструменты, например переходить на сфинкс, так как фултекстсерч не вывозит. Или большие объемы данных идут на запись, и стандартной пропускной способности бд уже не хватает и нужно что-то типа систем хранения логов, или наоборот, аналитические бд по типу кликхауса...

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

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Таблица users - данные о пользователе, + понадобятся справочные таблицы, где у вас будут перечислены свойства (гендер, телосложение, цвета частей тела и прочее).

    Таблица prefers - набор желаемых свойств, возможно с диапазонами (типа рост от 150 до 152) или списками (например карие + голубые + зеленые... ) через многие-ко-многим.

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

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

    На случай если вы что-то конкретное будете спрашивать, а не приводить юзекейсы и простыни кода на гитхабе в купе с роликами на ютубе:
    Определите проблему с точностью до куска кода, помещающегося в 10-20 строк.
    Опишите что должно быть и что получается
    По необходимости дайте дампы переменных или уточните запрашиваемые детали.

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

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Если злоумышленник введет логин и пароль чужого человека сможет ли он авторизоваться?
    Например, если он сделает curl запрос в котором user agent такой же как у жертвы и пароль и логин также такой же как у жертвы, то сможет ли он авторизоваться в чужой аккаунт? Откинем в сторону вопрос как он получил эти данные, трояном или как нибудь еще.
    Ответ написан
    9 комментариев
  • Нужно ли делать условие перед вызовом метода для избежания выделения дополнительной памяти?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Мне нужно аргументировать ответ, но я не знаю как ответить правильно.
    Очень просто: Так как проверка отнимает процессорное время, то экономия все равно будет липовой, вместо памяти потратится ресурс процессора. Сколь ни будь значительной экономии это не даст ни в том, ни в другом случае, точнее экономия будет в случае отсутствия проверки и существования переменной, что будет происходить скорее всего чаще чем несуществование переменной, ну или по крайней мере в каком-то числе случаев, в то время как проверка будет осуществляться всегда.
    Ответ написан
    Комментировать
  • SQL запрос к БД через WordPress в 46 раз дольше чем через phpmyadmin?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых нужно нормально писать запрос, хотя бы для понимания что вы делаете:
    SELECT DISTINCT tt.term_id 
    FROM wp_term_relationships AS tr 
    JOIN wp_term_taxonomy AS tt 
    ON tr.term_taxonomy_id = tt.term_taxonomy_id 
    JOIN wp_terms AS t 
    ON tt.term_id = t.term_id 
    WHERE tr.object_id IN (
       SELECT p.ID 
       FROM wp_posts AS p 
       JOIN wp_term_relationships AS tr 
       ON p.ID = tr.object_id 
       JOIN wp_term_taxonomy AS tt 
       ON tr.term_taxonomy_id = tt.term_taxonomy_id 
       JOIN wp_terms AS t 
       ON tt.term_id = t.term_id 
       WHERE p.post_type = 'product' 
       AND p.post_status = 'publish' 
       AND tt.taxonomy = 'product_cat' 
       AND t.term_id = '2961' 
    ) 
    AND tt.taxonomy LIKE 'pa_%';

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

    Ну и в третьих, запросы без лимита почти всегда будут медленными, так как бд вынуждена перебирать все таблицы перебором. Если же такой запрос необходим по каким то причинам, то стоит посмотреть что же происходит с запросом. Нужно в первую очередь сделать отдельно вложенный запрос, проверить как он работает, оптимизировать, а затем то же самое сделать с внешним. Так же неплохо прогнать эти запросы через explain, посмотреть каких индексов не хватает. Ну и первое на что стоит обратить внимание это tt.taxonomy LIKE 'pa_%', что само по себе затратно, и требует обязательного индекса.
    Ответ написан
    Комментировать
  • Как правильно вывести последнее сообщение в блок слева который будет на картинке?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    SELECT m.*, u.login, i.img
        FROM messages m
        LEFT JOIN users u
        ON m.to_user_id = u.id
        LEFT JOIN image i 
        ON m.to_user_id = i.obj_id 
        WHERE m.date > :lastdate # надо выбирать все что позже уже полученных сообщений
        AND image.obj_type = 'user' 
        AND m.from_user_id = :fid  # айди "от юзера"
        AND m.to_user_id = :tid #айди "к юзеру"
        ORDER BY m.date  # по возрастанию все старше последнего полученного
    Ответ написан
    Комментировать
  • Как построить коллекцию на PHP при заданных ниже условиях?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    99% работы с массивами - циклы. Даже под капотом всяких мап тот же цикл, только скомпилированный в функцию. Тут безусловно нужен цикл.
    Ответ написан
    Комментировать
  • Как сделать повтор действия в php если элемент не найден?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    <input type="file" name="fileFF[]" multiple="multiple" multiple id="fileFF" class="w100" name="files[]" />
    Два раза указан атрибут name, причем теперь он files[], а в коде проверяется fileFF
    Ответ написан
    2 комментария
  • Как оптимизировать процесс загрузки большего объема данных?

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

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Для принтера существует отдельный медиа запрос, в котором вы пишете все свои хотелки по форматированию листа под печать, в том числе колонтитулы, размер страницы, нумерацию, так же описываете элементы в стандартных единицах печати - cm/pt. Все весьма просто гуглится и на том же хабре вроде даже пару толковых статей было (тыц тыц).
    Ответ написан
    Комментировать
  • Почему не работает ссылка на телеграм в webview?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Вроде написано же, ERR_UNKNOWN_URL_SCHEME, стоит наверное посмотреть как строится стандартный урл по схеме.
    Хинт: tg:// не стандарт, а в первом урл не хватает именно похожей стандартной части.
    Алсо поможет гугль, https://kinsta.com/knowledgebase/err_unknown_url_s...
    Ответ написан
    Комментировать
  • Что будет, если убрать из URL уникальный id у новости в CMS?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    что скажите?
    Во первых "скажете". Во вторых не понятна суть вопроса, вы описали 2 разных механизма, один использует slug, другой id, к чему относится ваше описание механизмов определения уникальности - не понятно. Где вопрос?
    Ответ написан
    6 комментариев
  • Почему с формы обратной связи на почту хостинга приходит пустое письмо?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Проверить что приходит в $_POST
    2) Не использовать стандартную функцию mail(), так как она слишком плохо дебажится, да и в целом не айс.
    3) Поставить нормальный мэйлер, типа пхпмэйлер/свифтмэйлер.
    Ответ написан
    Комментировать
  • Какой стек использовать для кастомизации магазина на Woocommerce?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Есть магазин на WP

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

    Подскажите пожалуйста куда двигаться: разработать новую тему на php, или взять пустую тему на underscore и написать надстройку на JavaScript? Какой из вариантов дороже? Какой вариант правильнее, если рассматривать с точки зрения на перспективу (возможно дальше будем делать приложение).
    Это вам подскажет только человек, добровольно решивший потратить часть своей жизни на изучение вордпресс как системы. Что касается приложения - то там есть много вариантов, часть из которых вообще никак с сайтом не взаимодействует, так как работает через апи, а часть наоборот - тупо оборачивают существующий сайт в свою имитацию браузера. Так что я бы не стал на этом акцентироваться.
    Ответ написан
    3 комментария