Задать вопрос
  • В поиске первой работы програмистом, предлагают бесплатную стажировку. Соглашаться?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Народ тут накинул на вентилятор, попробую раскидать по фактам: Варианта на самом деле 3, но мы сведем к очевидным 2:
    1) Вы ищете первую работу в стеке, из опыта у вас приложение ТуДуЛист и Хеловорлд.
    Такое предложение как минимум подарок, как максимум большая удача. Подарок если вам просто дадут поколупаться в серьезном проекте и покажут как работает команда в целом. Большая удача если при этом у вас будет вменяемый ментор и ревьювер, а кода писать вам дадут много. Для конторы это скорее всего в минус, но если у вас все пойдет норм, то к концу срока вы в любом случае уже будете тянуть на джуна. Даже если после этого вы расстанетесь, опыт штука которая навсегда останется с тобой, в крайнем случае вы в первый месяц можете спокойно свалить, если видите что вам там ничего не светит в плане роста. Короче кейс - "надо брать".

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

    третий вариант по сути нечто среднее, но опять же сводится к 2 - надо говорить.
    Ответ написан
    3 комментария
  • Счетчик с онлайн отображением, как сделать?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    1. Реально ли это сделать на HTML/CSS и JS?
    Без бэкенда не получится организовать общий сбор и обработку данных, так что если бэкенд делать на нодеЖС - то да, если же речь чисто о фронтенде - нет.

    2. Можно ли обойтись без WP?
    Здесь он вам не понадобится

    3. Куда будут сохраняться данные?
    Зависит. Если общая статистика не нужна, то на такой примитив вполне хватит просто записи в редис/мемкеш, ну или в самом банальном случае в файл. В противном случае нужна бд. Данные для вывода на экран просто вытаскиваются по крону, скажем, каждые 5-10 секунд.

    4. Можно ли сделать что бы у оператора была своя статистика своего рабочего места?
    Можно, но для этого уже нужны минимальные заморочки с аккаунтами и тут уже без базы будет как минимум сложно и странно.

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

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

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

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    За деньги https://directus.io/ например, типа админка SAAS...
    Ответ написан
    Комментировать
  • Как в скрипте указать class с любой цифрой на конце?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    1) Использовать регулярки, определяя какой блок какому пренадлежит.
    2) Сделать нормально через дата-атрибуты, тогда будет что-то типа:
    $(document).on('click', function(e) {
      if (!$(e.target).closest(".filter").length) {
        let filterNum = $(e.target).data('num');
        $('.filter-block' + filterNum).hide(); 
      }
      e.stopPropagation();
    });
    Ответ написан
  • Постоянные ссылки для кастомного типа записи в WordPress: как правильно создать?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Я создаю постоянные динамические ссылки
    Чет или я не понимаю в жизни, или вы.
    1) Есть ссылки постоянные. Обычно они строятся на основании числовых индексов объектов.
    2) Есть ссылки динамические. Обычно они строятся на основании slug представлений сущностей.
    Отличие первых от вторых в том, что если имя/название у сущности поменяется, соответственно слаг перегенерируется и динамическая ссылка будет вести на 404, а постоянная останется живой.
    Пример - заголовок новости, который поменяли и изменили слаг. В соцсети всегда постят постоянную ссылку, а на сайт отдают списки с динамическими, так все желающие и из СС и с сайта напрямую попадут куда надо.
    Ответ написан
  • Что учесть в начале создания веб-портала и перейти с начальной версии на продвинутую без потерь? Как выбрать разработчика, структуру и платформу?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Я всегда стараюсь приводить какую-то ясную аргументацию к конкретной предлагаемой технологии.
    Мое мнение - берите вордпресс. При всей моей нелюбви к нему. На вырост - самое то.
    Плюсы:
    1) Это просто, базовый функционал вы и сами знаете, плагинов миллиард. Да, есть вопросы к качеству некоторых, но почти всегда есть альтернатива или в крайнем случае возможность написать/заказать нужный функционал.
    2) Он поддерживает внятное чпу, которое легко перенести в более серьезный проект с нормальным роутингом.
    3) Структура хранения хорошо известна, не идеальна, но нормально переносится.
    4) Удобная админка. Не каждый разработчик заморачивается с админкой, так как "это же не фронтенд, сойдет".
    5) По нему много спецов, продукт весьма популярный, так что в случае каких-то проблем легче найти спеца.
    6) Это бесплатно, хотя ничего не мешает вам купить к нему стильный дизайн или крутой плагин за деньги.

    Минусы:
    1) Невысокая производительность на специфических задачах
    2) Качество кода оставляет желать... Что не особо мешает функционалу
    3) На больших нагрузках сильно проседает, но до этого еще дожить надо...

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    похоже вам нужен JSON_ARRAYAGG()
    Ответ написан
  • Как оформить данный CURL запрос на PHP?

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

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    У нас есть дизайн сайта в фигме. Это корпоративный сайт.
    Так все таки сайт или дизайн в фигме?

    Помимо самого сайта, у нас будет также самописная cms — для того, чтобы добавлять статьи, проекты и редактировать некоторый контент на сайте.
    А кто будет самописать? И почему готовые системы не подходят?

    Дизайн cms тоже готов.
    Серьезный подход.

    сделали даже визуализацию БД через mind map.
    Оу, у вас нет разработчика, но зато нашелся датабэйс архитект, прикольно...

    Соответственно, у нас почти весь контент на сайте создается через cms (под контентом мы имеем в виду фотографии/обложки кейсов и статей).
    Из текста создается впечатление что ваш проект уже что-то делает, кроме как рисует фигмовые формочки... Это вводит в заблуждение.

    1. С чего нам начинать разработку сайта, если большая часть контента создается через cms? С бэкенда или фронтенда?
    Хинт: 99% сайтов создают практически весь контент из админки. Любой готовый цмс движок (вордпресс, октобер, да даже друпал) скорее всего полностью покроет ваши требования, кроме разве что дизайна админки (я хз можно ли там что-то кастомизировать малой кровью).

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

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

    Если у вас есть ОЧЕНЬ специфичные штуки, которые вы не перечислили в вопросе - пишите, возможно под них действительно нужно писать самостоятельный продукт.
    Ответ написан
    Комментировать
  • Зависит ли скорость записи в БД от количества в ней записей?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Мне необходимо только узнать есть ли такой заказчик с такими данными.

    1) Оформляйте запрос строками, так будет гораздо проще и вам, и другим разработчикам понять что вы пишете и как оно работает:
    SELECT * 
    FROM `orders2022` 
    WHERE LOWER(`surname`) LIKE CONCAT('%', ?, '%') 
    AND LOWER(`name`) LIKE CONCAT('%', ?, '%') 
    AND LOWER(`fathername`) LIKE CONCAT('%', ?, '%')

    2) Синтаксис верный, но если вам важно найти "хоть одно совпадение", лучше использовать LIMIT 1, это остановит базу в поиске всех вхождений, то есть перебора ВСЕЙ таблицы вместо выхода по первому вхождению. Кроме того, CONCAT('%', ?, '%') можно использовать если вместо ? будет SQL выражение (например каой-то селект), в данном случае это просто трата ресурса процессора. Просто добавьте % в начале и конце подставляемой переменной.
    3) Неплохо давать более четкое описание проблемы, чтобы другим не пришлось гадать о чем код, так как никто кроме вас в контекст задачи не погружен.
    Ответ написан
    Комментировать
  • Почему браузер вместо того, чтобы скачать файл PDF, патается его отобразить?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    cajka-d, 1)
    Вывода перед заголовками тоже нет, если такое есть, то laravel сразу бы ошибку выдал.
    Это варнинг, а не ошибка, так что вполне может игнорироваться, в зависимости от настроек.

    2) Вроде в ларе респонс должен указывать заголовки отдельно:
    return response($content, 200)
                ->withHeaders([
                    'Content-Type' => $type,
                    'X-Header-One' => 'Header Value',
                    'X-Header-Two' => 'Header Value',
                ]);


    3) Попробуйте завести вручную:
    В контроллере вместо return $pdf->download($filename); сделайте руками вывод заголовков и ечо содержимого пдф, затем ексит. Если сработает - значит респонс дополнительно обрабатывается после ретурна из контроллера...
    Ответ написан
    Комментировать
  • Как спроектировать базу данных для мультиязычного сайта?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    1) Перевести проект на какой-то адекватный движок по типу лары,
    2) использовать готовые пакеты мультиязычности, протестированные, с прозрачной логикой и качественной реализацией.

    Как вариант - посмотреть в коде готовых мультиланг пакетов как сделать нормально.
    Ответ написан
  • Fatal error: Uncaught TypeError: Cannot access offset of type string on string in /home/m/mcphoenix/mcphoenix.beget.tech/public_html/engine/inc/inclu?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Очевидно $config содержит строку. Так как это DLE, неудивительно что код вообще не айс...
    Ответ написан
    Комментировать
  • Как правильно сделать отправку с проверкой условий?

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

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    В дальнейшем это повысит нагрузку на бд при поиске записей.
    Когда записей будет под миллион, запустите 1 раз удаление старых неактивированных аккаунтов и выиграете еще аж 500 (а может даже 5тыщь!) записей, это сильно поможет...
    Ответ написан
    Комментировать
  • Как вывести нужную запись по id из бд?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    <!--ССЫЛКА ПЕРЕХОДА НА ЭТОТ ФАЙЛ -->
    <a href="?content=single_city.php&city=<?=$myrow["id"];?>">
    где тут ссылка на файл? у вас ссылка на текущую страницу, в ваше случае - корень сайта/проекта (читай index.php), куда передаются GET параметры. Ничего удивительного что выводится та же страница.
    Ответ написан
  • Оптимизация сайта под высокие нагрузки (php,nginx, mysql). Какие критерии доработок? Что необходимо сделать в первую очередь?

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

    Спойлер: 90% что проблема в запросах к бд, так как сам по себе код в большинстве случаев банально отсылает запросы и принимает их результат, выводя его пользователю в несложных действиях. В редких случаях - запросы идут к внешним тормозящим сервисам, например к фейсбуку или другим СС. И крайне редко тормозит сам код, но тут уже опять же - 90% что это некомпетентность разраба, например, не способного построить нормальный запрос и сортирующий данные от бд в коде...

    Что конкретно надо делать:
    1) Взять за шкирку самого разбирающегося в коде (если таковой существует в проекте), и дать задание описать базовый стек вызовов, если это какой-то самопис, или сразу расставить код замера времени с метками в случае понятной архитектуры. Что то типа такого(класс - древний костыль, но работает, так что матом не ругаться):
    Class Timer.php:
    class Timer {
    
        static $start;
        static $end;
        static $marks = [];
        static $formats = [1=>''];
    
        static function init(){
            if(empty(self::$start)) self::$start = microtime(true);
        }
    
        static function setMark($markName = ''){
            $time = microtime(true);
            if($markName == '')$markName = $time;
            $data['name'] = $markName;
            $data['time'] = $time;
            $res['time'] = $time;
            if(count(self::$marks) > 1)$res['diff'] = $time - self::$marks[count(self::$marks)-2]['time'];
            else $res['diff'] = 0;
            $data['diff'] = $res['diff'];
            self::$marks[] = $data;
            return $res;
        }
    
        static function timeFormat($number,$format = ''){
            if(empty($format)) $format = 3;
            return number_format ($number,$format,'.','');
        }
    
        static function report(){
            self::$end = microtime(true);
            self::$marks['start'] = self::$start;
            self::$marks['end'] = self::$end;
            self::$marks['all_time'] =  self::$end - self::$start;
            if(!empty(self::$marks)) return self::$marks;
        }
    }


    In code:
    \Timer::init()
    //some code block 1
    \Timer::setMark('after block 1');
    //some code block 2
    \Timer::setMark('after block 2');
    ...
    //some code block n
    \Timer::setMark('after block n');
    //near end of code 
    \Timer::setMark('end');
    var_dump(\Timer::report());
    exit;

    2) Смотрите на блоки жрущие время, делите их до атомарных операций путем деления блоков пополам таймерами.
    3) Смотрите что там происходит - оптимизируете*. И так по кругу.
    4) Профит.

    * Оптимизация
    Запросы:
    1) Смотреть план запроса (use explain, Luke!).
    2) Расставить индексы которых явно не хватает
    3) Смотреть не вызывается ли 50 запросов в цикле? Если да - выписать пенделя писавшему, затем переписать в 1 запрос с нормальным джоином.

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

    Что нужно сделать обязательно кроме тестов и как тогда лучше спрашивать с разработчиков, если они предлагают размытые предложения? Хочется понять в какую сторону копать
    Бить палкой не вариант? Тогда берите других, эти испортились. Если разработчик не знает как выявить узкие места кода - нахрена он нужен? Код написать сегодня любой чат может... Ну, на крайняк дайте им вышеприведенный вариант решения проблемы...

    PS: Кстати, сервер может банально не выдерживать наплыв сетевых соединений, пните адимна, пусть глянет логи.

    PPS:
    достаточно 2000-4000 человек, заходящих в течение 20 минут на сайт
    это равномерные 3-4 рпс, ну или пусть в пике 50 рпс, должно держать даже на несложной конфигурации... Копайте код.
    Ответ написан
    Комментировать
  • Для чего Laravel-разработчики стремятся создать избыточные API ресурсы?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Ведь если нет никакой дополнительной обработки, то ведь можно просто сделать $model->toArray(), не?
    Во первых - в 90% случаев модель не достается "голой", а тянет с собой связанные объекты, например роли или аватарки или еще что-то. Они явно лишние в выдаче.
    Во вторых - не все поля одинаково полезны, скорее всего часть полей не должны попадать в выдачу, например хеш пароля или ключ авторизации...
    Ответ написан
    Комментировать
  • Если ли PHP-библиотека для конвертации HTML c CSS Grid в PDF?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Принципиально у этой проблемы всего 2 варианта решения:
    1) как уже написали - хедлесс хром на бэкенде - максимально красиво и точно, единственный минус - собсно сам софт, который кроме того что сам по себе жрет проц и память, так еще и не везде есть возможность поставить свой софт на сервер.
    2) Рендер на клиенте через html2pdf, который тоже неплохо справляется, но естественно тоже не без проблем. Во первых - готовый пдф будет не в виде документа с текстом и прочими плюшками, а тупо картинкой. Во вторых - все минусы решений на клиенте в ассортименте: нестандартные шрифты, настройки под "улучшайзинг" визуала по типу изменения масштаба странички, увеличение/уменьшение шрифтов и прочие мелкие радости жизни...

    Короче, выбор между хреновым и плохим решением...
    Ответ написан
    Комментировать