Задать вопрос
  • В чем разница между symfony и laravel для начинающего?

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

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

    Симфони сложновата для новичка, так как во первых полностью компонентная, во вторых даже для построения элементарной модели придется достаточно много писать ручками.
    Ответ написан
    2 комментария
  • Как проверить класс использую assert?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Не используйте публичных свойств, проверки выполняйте для всех аргументов всех методов.

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

    @Zzzz9
    Для резервной копии нужен отдельный диск.
    Ответ написан
    Комментировать
  • Как закэшировать выполненную часть php кода?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Цикл не закэшируешь, конечно, а результат можно, нарпимер используя serialize(), если там действительно объект.
    Ответ написан
    3 комментария
  • Запуск скрипта при загрузке, не чаще 1 раза в сутки?

    @nApoBo3
    Самый простой метод, и самый предсказуемый, делать onboot и проверять внутри скрипта.
    Остальные варианты потенциально обладают не интуитивным поведением.
    Ответ написан
    2 комментария
  • Где найти правила хабра?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    1. Крутим страницу в самый низ.
    2. Тыцаем «О сервисе».
    3. В правой колонке видим пункт «Правила».
    4. Удивляемся, почему ТАК ГЛУБОКО ЗАПРЯТАЛИ ВЫ ТАМ ЧО ВАЩЕ С УМА СОШЛИ!
    Ответ написан
    1 комментарий
  • Почему может возникать ошибка Undefined offset: 5?

    Читаем CSV-файл встроенной функцией:
    if ($fh = fopen('/public/vag102020.csv', 'r')) {
        while (($csvStr = fgetcsv($fh, 1024, ';')) !== false) {
            $csvArr[] = $csvStr;
        }
    }


    А по поводу ошибки — да, скорее всего поле пусто. Решается просто:
    $weight = $line[5] ?? 0;
    Остальные поля желательно обрабатывать так же.
    Ответ написан
    1 комментарий
  • Как из массива объектов удалить дублирующиеся объекты?

    @alexalexes
    Можно удалить id из элемента массива (точнее из копии элемента), оставшиеся свойства засериализовать, от сериализации найти md5 хэш - это и будет ориентир для уникальности элемента.
    $out_array = [];
    foreach($donates as $donate)
    {
       $donate_copy =  $donate; // копируем элемент массива
       unset( $donate_copy->id); // удаляем уникальное свойство из элемента
       $key = md5(serialize($donate_copy)); // получаем уникальный ключ по содержанию остальных свойств
       $out_array[$key] =  $donate; // добавляем исходный элемент в новый массив по уникальному ключу
    }
    Ответ написан
    2 комментария
  • Почему изменения в php.ini не меняет значение в phpinfo?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    потому что перезапускаешь ты веб-сервер а надо - РНР
    Ответ написан
    1 комментарий
  • Как исправить сокращение даты?

    DevMan
    @DevMan
    $date = 'Oct 08, 2020';
    $date = DateTime::createFromFormat('M d, Y', $date);
    echo $date->format('F d, Y');
    Ответ написан
    Комментировать
  • Как начать изучать новое?

    DreamShaded
    @DreamShaded
    Front-end developer
    Ну, для начала, надо научиться решать базовые вещи. В случае вёрстки - тупо уметь верстать всё, на что взгляд попадёт, в разумных пределах. Я учебные макеты не доводил до конца, если понимал, что всё дальше делается по аналогии) Разбирал именно сложные моменты, например, адаптивность со сменами положений фона, ретину, анимации.

    В случае с жс и другими яп для начала надо на кодварсе многое нарешать. Чтобы быть уверенным джуном, хотя бы 5 лвл задачи нужно садиться и решать. Именно решать, находить своим умом, не подглядывая в ответы. Такой подход очень хорошо "точит" мозги. Ну и регулярность. После - реализовать какой-то полноценный проект, используя знания и документации. Если цель прокачать мозги - тогда без фреймворков, разбираясь с дом-манипуляциями и тп. Долго, но качественно)
    Если цель - устройство на работу фронтом или разработка своего проекта - то надо разбираться с воркфлоу, там, реакты - вью - ангуляры - свелте, библиотеки, таск-раннеры, бандлеры, шаблонизаторы, и прочая, прочая. Тут тоже показатель - завершённость проекта. Если на вёрстку можно класть, щас вёрсткой не удивить, то тут вот надо прям рабочий проект создать.

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

    Ещё момент про "две книги". Изучение материала с разных сторон - это бест практис вообще, так рекомендуют вообще всё разбирать. Естественно, должно быть об одном и том же) Подробнее можно прочесть тут.

    Удачи :)
    Ответ написан
    Комментировать
  • Обновление железа компьютера. Что поменять?

    Zoominger
    @Zoominger Куратор тега Компьютеры
    System Integrator
    Етить.
    Я бы менял целиком, чесслово.
    Ответ написан
    Комментировать
  • Есть старый процессор, какую подобрать мать, чтобы использовать процессор по максимуму?

    @gusteraom87
    1. Athlon 64x2 6000+ (AM2)
    Под этот процессор можно брать любую материнку на сокете AM2 или AM2+. И тот и тот сокет поддерживает только память DDR2. Чипсет – главное не Nvidia, умирали очень часто. Биос возможно придется обновлять, в зависимости от конкретной модели процессора.

    Athlon 64x2 6000+ горячий процессор. Особенно если с частотой 3Ghz (у него TDP 125W и в комплекте шел кулер с тепловыми трубками, как на opteron). Если с частотой 3,1 Ghz - то похолоднее, достаточно будет стандартного кулера, если без разгона. Лучше уточните модель перед покупкой охлаждения и материнки.

    2. Core2 duo e7500 (LGA775)
    Достаточно свежий процессор, поэтому на самых древних материнках работать не будет. Нужно смотреть не только сокет, но и чипсет (должен быть G31 или P31 минимум. Иногда работает на 945-м и 965-м чипсете после заливки свежего биоса).
    Преимущество LGA775 – бывают материнки под память DDR3 (но чаще все-таки DDR2).
    Core2 duo e7500 – относительно холодный, боксового алюминиевого кулера хватает с головой.

    Заниматься разгоном на таком железе лично я не вижу смысла. Это старшие модели, оба процессора уже имеют внушительные для своего поколения 3Ghz. Обычно хорошо гонятся младшие модели. Если пытаться разгонять выше 3Ghz – на приличное охлаждение уйдет больше денег, чем на все остальное железо. Правда у Core2 duo e7500 запас по разгону еще должен быть, они легко брали 4-4,5.
    Ответ написан
    4 комментария
  • Как мне исправить ошибку PHP0413?

    dyuriev
    @dyuriev
    A posteriori
    установите/активируйте модуль php-fileinfo и перезапустите установку композера

    ps: на последнем скрине, кстати, это и написано
    Ответ написан
    Комментировать
  • Как привязать домен к динамическому ip?

    Sanes
    @Sanes
    Через сервисы, вроде DynDNS и No-IP.
    Главное не путайте динамический с белым IP.
    Ответ написан
    5 комментариев
  • Где можно получить повышение квалификации backend разработчику?

    @vitaly_il1
    DevOps Consulting
    В целом согласен с Alex McArrow. А точнее - я не верю в какое-то "хорошо прокачиваться у более сильных" - подумайте о слабых местах, конкретных проблемах в вашем проекте и ищите, как их улучшить и оптимизировать.
    И не вестись на "использовать кубернетес", "выкинь PHP, перепиши на Go", "делай так, потому что я сказал".
    Ответ написан
    Комментировать
  • Как сделать систему регистрации на php?

    anton_reut
    @anton_reut
    Начинающий веб-разработчик
    Регистрация это по сути тупо создание записи в базе по определённым тобой правилам через форму на сайте, таким как:
    - заполнение обязательных полей
    - валидация данных в полях
    - проверка на уникальность
    И так далее.
    Ответ написан
    Комментировать
  • Как найти все комбинации определенных слагаемых числа?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Различных комбинаций очень много. Так что, раз уж вы их все обходите, то полный перебор будет работать не сильно медленнее. Его потом можно соптимизировать.

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

    Функция перебирает 2 варианта. Пусть отсавшаяся сумма s, а разрешенное максимальное число имеет номер i (они хранятся в каком-нибуть отсортированном a[]).

    1) Берем текущее максимальное слагаемое. Естественно, если оно помещается в остаток s >= a[i]. Кладем его к текущим слагаемым в массив и рекурсивно вызываемся от уменьшенного остатка, не меняя максимальное число - (s-a[i], i). Важно - если слагаемые хранятся в глобальной переменной, то надо после рекурсивного вызова "вернуть как было" - удалить только что добавленное слагаемое из массива.

    2) Пропускаем текущее максимальное число. Значит, больше его брать вообще нельзя. Вызываемся от (s, i-1). Естественно, этот вариант есть только если i>0.

    Если мы получили, что оставшаяся сумма s равна нулю, то мы подобрали разбиение, надо вывести текущие слагаемые.

    Ах да, чтобы этот метод хорошо работал имеет смысл слагаемые отсортировать по возрастанию. Чтобы сначала брались самые большие.

    Если среди возможных слагаемых нет 1, то этот полный перебор может заходить в тупики. На пример, доступны слагаемые 6 и 11, надо набрать 29. Алгоритм может пропустить 11 и попытаться набрать 29 одними шестерками, но этого никогда не получится. Эти лишние тупиковые ветки можно обрезать и ускорить таким образом решение в некоторых случаях.

    Для этого смотрите задачу о рюкзаке. Почти как в ней сделаейте динамическое программирование, которое будет считать, сколько способов собрать заданную сумму k мешьшими слагаемыми. После этого в рекурсивной функции вы можете сразу же возвращаться, если ДП говорит, что вариантов набрать s первыми i слагаемыми - 0.

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

    EDIT: Только заметил, что вам порядок важен и 1,2,3 считается отдельно от 3,1,2

    Изменения просты - рекурсивная функция теперь принимает только один параметр - сколько осталость добрать. Вместо двух вариантов она перебирает N вариантов - какое именно число из разрешенных взять.

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

    iResource
    @iResource
    Разработчик IR XML2Ozon
    После объявления $file не хватает точки с запятой.
    Да и в параметрах fopen кавычки вокруг $file лишние.
    Ответ написан
    Комментировать