Задать вопрос
  • Как можно оптимизировать генерацию и загрузку боьшого html?

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

    Можно ли её рендерить на клиенте при помощи js?
    Можно, но скорее всего прироста вы особо не получите. Если проблема на бэкенде - метод рендера будет абсолютно по барабану. Если на форнте - скорее всего будет медленнее, так как вы сначала получите все данные, а потом еще будете средствами языка (а не движка браузера, который очевидно быстрее) отрисовывать хтмл.

    И почему на смартфоне в мобильном safari та же самая страница грузится за пару секунд?
    Опять же, вопрос скорее к вам чем к кому-либо еще. Возможно кеширование, которое на мобильных браузерах практически всегда более агрессивное. Возможно вы просто не видите как тормозит загрузка, например в силу другого метода рендеринга, который сразу при получении данных выводит все что возможно, в то время как на стационаре рендеринг идет только после загрузки тега целиком. Достаточно например быстро промотать на сафари вниз при загрузке, чтобы увидеть что загрузилось далеко не все... А возможно в мобильной версии отображается сильно меньше элементов...

    Можно ли этот эффект повторить на десктопе?
    Если есть что повторять... Можно попробовать сделать таблицу не цельной, а разбить на несколько таблиц, по 100-300 строк. Или еще адкеватнее - сверстать дивами.

    Как вариант - лэзилоад, по мере прокруки страницы подгружать новые данные по мере необходимости, что сильно снизит как трафик в целом, так и тормоза рендера.

    PS:
    я тоже склоняюсь к неэффективной вёрстке. Если я эту вёрстку буду генерировать js’ом, процесс ускорится?
    Скорее всего, как я уже написал, скорости не прибавится. Вообще что мешает проверить эффективность верстки? Тупо выведите все строки дивами, без всяких разделителей, одна строка - один див с данными, разделенными "|" например, и посмотрите на разницу.
    Ответ написан
    Комментировать
  • Как сгенерировать шахматный бакграунд в ImageMagick.Net?

    @U235U235
    Зачем рисовать квадратики в цикле? Вообще-то шахматный паттерн уже есть в IM.
    convert -size 8x8 pattern:gray50 -scale 5000%  chessboard.png
    Ответ написан
    6 комментариев
  • Как мне настроить .htaccess?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    добавить файлы статики в исключения. Хотя по идее у вас и так перенаправляться будут только отсутствующие файлы и папки...
    RewriteCond %{REQUEST_URI} !\.(css|jpg|gif|png|zip|rar|doc|xls|js|tif|tiff|docx|xlsx|ico)$
    RewriteRule ^(.*)$ index.php [L,QSA]
    Ответ написан
    3 комментария
  • Почему не работает оперативная память в двухканале?

    hint000
    @hint000
    у админа три руки
    Тайминги разные. Но давайте попробуем это победить. Если честно, я не обещаю, что получится, но почему бы не попытаться.
    Если BIOS материнки позволяет вручную рулить таймингами, то будем рулить.
    Запускаете в одноканале и смотрите, с какими таймингами запустилась одна планка и другая (ну а частота одинаковая, 2133, как вы говорите).
    Берёте максимальные тайминги (внимание, не путать с частотой, здесь чем больше тайминги, тем медленнее), запоминаете, у какой планки тайминги больше, у какой меньше. Нам нужно замедлить более быструю, т.е. с меньшими таймингами нужно их увеличить (по характеристикам Crucial быстрее, но вы это проверьте именно при частоте 2133). Ставите только более быструю планку, заходите в BIOS, добавляете ей тайминги, сохраняете, после успешной загрузки выключаете. Ставите вторую планку в двухканал, пробуете загрузиться. Если не получилось, то опять оставляете только более быструю и ещё по единичке добавляете тайминги, снова пробуете двухканал.
    Если всё это не поможет, то попробуйте вручную уменьшить частоту на одну ступеньку (сколько там... 2066 что ли будет?)
    Ответ написан
    1 комментарий
  • Как выполнить cURL запрос с ключом -u в PHP?

    Для параметра -u в PHP нужно передать CURLOPT_USERPWD
    https://www.php.net/manual/ru/function.curl-setopt.php

    UPD.
    curl_setopt($ch, CURLOPT_USERPWD, '12345:');
    Ответ написан
    3 комментария
  • В чем может быть проблема с cURL?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    & на мысли не наталкивает ? Что такое html entity знаете ?
    В общем или в базу муссора насовали или позже обработали строку.
    Есть два подхода (крайности), к тому как заносить данные в базу данных.
    1) Все проверяем по куче условий, при любой ошибке отказываемся.
    2) Пофиг - записываем все как есть, потом будем опасное экранировать.
    Ответ написан
    9 комментариев
  • Как из JSON забрать значения и передать их в html (php)?

    Ge1i0N
    @Ge1i0N
    Всё есть в документации.
    $array = json_decode($json, true)
    На выходе получаете массив. Страны будут лежать тут, выводите как нужно:
    $array['promocodeInfo']['countryDetails']
    Ответ написан
    5 комментариев
  • Пропал интернет на пк?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    В настройках "Панель управления" - "Сеть и интернет" - "Сетевые подключения", проверить, не выключили ли вы случайно проводное Ethernet подключение.

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

    @Drno
    дело или в кабеле или в сетевой карте)

    Раз на ПК показывает что нет линка( не горит лампочка), то что то из этого...

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

    Adamos
    @Adamos
    появилась проблема что не читает кирилицу

    "Доктор, у меня проблема" - сказал старый партизан. И больше никакой информации не выдал!

    Ладно, погадаем на гуще. Если раньше все работало и ТС качал (откуда-то) некую "новую версию", можно предположить пальцем в небо, что к этой скачанной версии тупо приложены шрифты без кириллицы. В mPDF шрифт можно подложить буквально при генерации, указав путь. Как там в dompdf - надо гуглить.
    Ответ написан
    2 комментария
  • Как правильно писать тесты PHPUnit под ООП?

    Вам не надо тестировать приватные методы.
    Но как же тогда быть, вы скажете?
    Публичные методы используют эти приватные методы, так и проходит тестирование.
    Из этого вытекает, что класс должен быть небольшим и выполнять только одну задачу. Поэтому его приватные методы будут всегда задействованы при тестировании публичных.
    Но вы скажете, что у вас там в публичных методах обращения к базе данных и внешним API, как же тут быть?
    А быть тут просто: все зависимости вашего класса должны включаться в качестве аргументов конструктора, и через использование интерфейсов в аргументах. (Dependency Injection)
    Таким образом в тесте все зависимости класса заменяются теми же моками, и вы легко тестируете не просто сферического корня в вакууме (приватный метод), а именно то, что и нужно тестировать: функциональность самого класса, а не его частей, потому что в OOP именно класс является как бы атомом функционала.
    Но... если вам всё же таки очень надо, то можно это сделать при помощи рефлексии:
    Хорошей практикой является использовать всегда protected вместо private.
    Пишете себе такую вот утилиту:
    class PHPUnitUtil
    {
      public static function callMethod($obj, $name, array $args) {
            $class = new \ReflectionClass($obj);
            $method = $class->getMethod($name);
            // $method->setAccessible(true); // если PHP старше 8.1.0
            return $method->invokeArgs($obj, $args);
        }
    }


    И используете ее в тестах
    $returnVal = PHPUnitUtil::callMethod(
                    $this->object,
                    '_nameOfProtectedMethod', 
                    array($arg1, $arg2)
                 );


    Есть ещё вариант.
    // Оригинальный класс
    class Foo {
      protected function stuff() {
        // secret stuff, you want to test
      }
    }
    
    // Класс для тестов
    class SubFoo extends Foo {
      public function exposedStuff() {
        return $this->stuff();
      }
    }
    Ответ написан
    3 комментария
  • Какой стек технологий выбрать для разработки веб-приложения по учету успеваемости студентов?

    Adamos
    @Adamos
    Вам, молодой человек, надо не "что лучше", а "что потяну".
    Без фреймворка с никаким опытом шансов сделать что-либо в хоть сколько-нибудь разумные (не то что короткие) сроки тут нет. Так что выбор между Джангой и Ларой. Ни разу не нюхавшему Пых за Лару браться бессмысленно, остается Джанга. Но с опытом "поделал лабы" и отсутствием понимания архитектуры сайта (база, например, не указана вообще) заикаться про "короткие сроки"...
    Ответ написан
    6 комментариев
  • Температура видеокарты RTX 3070 - 81 градус при очень низком вольтаже - нормально ли?

    xez
    @xez Куратор тега Железо
    TL Junior Roo
    81 градус для нее вроде норм, но вот что я бы проверил:
    1. Надо понять что с охлаждением корпуса. Если корпус маленький и/или душный, то у вас будут как раз такие проблемы.
    2. 3070 карта не новая - возможно, пора заменить термоинтерыейсы.
    Ответ написан
    2 комментария
  • Температура видеокарты RTX 3070 - 81 градус при очень низком вольтаже - нормально ли?

    @Drno
    разбери и помотри. но такое впечатление что её надо обслужить
    Ответ написан
    Комментировать
  • Как переменную имеющую тип строка и содержащую координату перевести в числовой формат на php?

    Adamos
    @Adamos
    Если вам нужна строго определенная точность - забудьте про float. Для этой математики даже 0.7 - бесконечная дробь.
    Храните int, при вычислениях делите на миллион, при приведении в строку - втыкайте точку за шесть знаков до конца. Класс на три метода, написать и забыть проблему.
    Ответ написан
    Комментировать
  • Как поменять местами максимальное и минимально число в массиве?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    попробуйте представить, как оно будет работать, в замедленном режиме.
    Что, если массив не 5 чисел, а несколько миллионов, длиннющий?
    Хорошо бы его проходить только 1 раз. И по пути находить минимум и максимум, и их индексы.
    Как?
    Сначала и min и max это первое значение, а оба индекса 0.
    Далее с очередным элементом массива смотрим, больше ли он нашего "максимума"? Если да, то он становится максимумом, а текущий индекс — индексом максимума. То же с минимумом. Если меньше текущего минимума, то ...
    Прошли весь массив — ок, имеем минимум, максимум, их индексы.
    Меняем местами элементы по индексам.
    Ответ написан
    Комментировать
  • Как создать сборку для быстрого развертывания сервера с WP?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    1. Делаете дамп базы болванки вашего сайта и файлов WP
    2. Пишете ansible-плейбук, который:
    2.1 Настраивает все потроха ОС (устанавливает и обновляет все нужные пакеты, Докер, пользователей, создаёт каталоги и т.д).
    2.2 Устанавливает СУБД.
    2.3 Восстанавливает в СУБД ваш дамп.
    2.4 Разворачивает файлы WP в нужные каталоги.
    2.5 Запускает контейнеры с РНР, Redis и nginx.

    Всё!
    Ответ написан
    4 комментария
  • Как создать сборку для быстрого развертывания сервера с WP?

    @Drno
    Сделайте lxc контейнер и его разворачивайте. 1 раз собрали внутри него, и копируйте на новые сервера

    Ну либо докер...
    Ответ написан
    2 комментария
  • Что делать если не открывается диск D на Линукс?

    @va_k
    Нужно делать fsck. В зависимости от того какая там ФС. Если это ntfs, то чекать лучше виндой.
    Ответ написан
    Комментировать
  • Как правильно мержить в main из dev, если там есть незаконченные фичи?

    bingo347
    @bingo347
    Crazy on performance...
    Фича ветки делаем только от актуального main.
    Для проверки мержим фича-ветку в dev, но не удаляем.
    Когда одна или несколько фичей проверены и готовы, то делаем от main релизную ветку и мержим туда все готовые фичи, прогоняем тесты и если всё ок, то мержим релизную вету в main.
    Ну и полезно мержить main в фича ветки, когда main обновился.
    Ответ написан
    Комментировать