• Сколько математики нужно программисту?

    devspec
    @devspec
    Помогло? Отметь решением
    За 15 лет кодинга самая сложная математика, которая у меня была - вычисление процентов для прогресс-бара.
    Но я прикладник. Как выше написали - кол-во необходимой математики зависит от выполняемых задач.
    Ответ написан
    1 комментарий
  • Как это реализовано в Laravel?

    @D3lphi
    Это называется рефлексия. Пример:
    $class = new \ReflectionClass('Название класса');  // Создаем объект для рефлексии класса
    $method = $class->getMethod('Имя метода');   // Получаем метод по имени
    $params = $method->getParameters();   // Получаем массив с параметрами
    $paramName = $params[0]->getName();   // Берем первый элемент массива, он имеет тип ReflectionParameter, и получаем его имя.

    Можно сразу создать объект для рефлексии метода "напрямую":
    $method = new \ReflectionMethod('Класс', 'Имя метода');
    // Далее, аналогично

    С помощью рефлексии можно не только получать имена параметров, но и их типы, значения по умолчанию. Можно получать даже док-блоки для методов/свойств и тд. С помощью рефлексии, например, работает doctrine orm. Он использует аннотации (как один из вариантов конфигурации) для описания сущностей.
    Ответ написан
    Комментировать
  • Как правильно спроектировать Laravel приложение с уклоном в enterprise?

    Используйте Laravel и не беспокойтесь. Он построен на Symfony. Если понадобится, то использование Doctrine вместо/вместе с Eloquent возможно.

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

    Laravel позволит быстро построить прототип. Изменить какие-то критичные части всё одно придётся. И это не отменит использование частей от Symfony.
    Ответ написан
    Комментировать
  • Как создать систему управления обучением наподобие moodle?

    Sanes
    @Sanes
    Могу ли я на основе уже существующего решения(например, moodle) собрать свое, без ненужного мне функционала?
    Конечно. Тыжпрограммист.
    Ответ написан
    1 комментарий
  • Попросили проверить код, на что смотреть нужно?

    apavlyut
    @apavlyut
    www.pavlyut.ru
    Все комментаторы совершили одни и те же ошибки управления потому что, при всем уважении, скорее всего за эти ошибки (в стратегировании) они не платят из своего кармана.

    На пальцах отвечаю на ваш вопрос:

    1) По структуре - при проверки качества кода / решения / задачи / продукта / настройки сервера и так далее нужно проходить по списку (чеклист) критериев контроля качества - обычно они выглядят как списки определенных параметров которые может замерить третье лицо или сама система - формат проверяемого параметра прямо вот соответсвует / не соответсвует. На сколько процентов пройден чеклист - на столько процентов результат "качественный"
    2) Почему ребята ошиблись - потому что стали приводить конкретные списки. Дело в том что у каждого проекта / сиутации / команды / набора компетенций - свои наборы таких чеклистов на разные ситуации. В больших командах сущесвтует основной чеклист который регламентирует CodeReview - и за него отвечает как правило тим лид - он его обновляет, развивает, обосновывает внесенные правила и следит за тем чтобы ПЕРЕД началом разработки все разработчики были ЗАРАНЕЕ ОЗНАКОМЛЕНЫ с этим порятком проверки качества, а все потому что:
    3) Количество стайлгайдов и критериев в приципе существует огромное количество - и то как каждому в одной части света / компании удобно делать одно дело - не регламентирует ни разу что именно так же другому человеку в другой ситуации применять эти правила к своему контексту. В виде открытых стайлгайдов они существуют для накопления практик и навыков в первую очередь для их же развития (процесс формулировки наводит порядок в голове) а также дают возможность "на них конкретно" нанизать точечные ответы огромного сообщества людей, и получить те самые разные взгляды на ситуации, и по возможности опять же привести к общему знаменателю. Но это все мелочи жизни, а в вашем случае вы совершите серьезную ошибку если прямо сейчас возьметесь (примите на себя ответственность) проверять чужой код на предмет оценки, потому что:
    4) Вас явно используют как внешнего эксперта на которого можно сослаться, от которого можно получить якобы аргументацию для давления на свою позицию при решении какой-то возникшей ситуации во взаимоотношениях клиент-разработчик на проекте куда вас приглашают за экспертизой.
    Если вы, не предупредив, о том что "качество кода" начинается с декларации этого качества (в случае если речь идет о проверке этого внутреннего качества в рамках сотрудничества, а не самих задач которые поставлены перед создаваемой системой - фичесов) - любая ваша оценка будет недостоверна контексту ее применения (вы напишете про строки или еще что-то - а у человека будут либо взыскивать деньги / либо недоплатят за работу / или инкапсулируют в договоренности пост фактум за те же деньги работу над соотвествием определенным стилям - это все работа которая должна быть оплачена). Поэтому вот вам вилка ваших дейсвтий:

    1) Если у вас просто просят менторства молодые коллеги - дайте им ссылку на гугл и ключевое словосочетание php style guide github
    2) Если вас спрашивают (либо вы сами являетесь таким заказчиком который ищет за что зацепиться в коде чтобы продавить свою позицию) - нет критериев качества кода ДО начала работ подписанных на бумаге / пересланных по почте - никакие критерии не могут быть применены к текущим отношениям - только к следующей итерации за следующие деньги.
    3) Если вы все же разработчик и вас попросили оценить код - донесите данную ситуацию до стадии корректного закрытия текущего этапа работ - но дальше предложите уже введение стайл гайда если оно того требует. Я полагаю что на самом деле нет. Дав сейчас ответ на вопрос в виде оценки качества кода вы сделаете только одно - абсолюно необоснованно дадите агрумент в явно перекошенном споре, и просто возьмете на себя еще один мешок кармогрязи которую будуете еще сколько-то положенного времени отрабатывать.

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

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    не использую костылей подобных сувания ошибки в сессию

    это и есть единственный расово верный способ.
    Использовать flash сообщения через сессию.
    Ответ написан
    1 комментарий
  • Когда надо и не надо использовать скобки в relations?

    amelihovv
    @amelihovv
    Фулстек веб разработчик

    $author->post()

    возвращает query builder, поэтому вы можете продолжить вызывать методы query builder'а, например,
    $post->comments()->where('published', true)->get();

    А во втором случае вы получаете сразу модель или коллекцию моделей.
    Ответ написан
    6 комментариев
  • Как автоматически сгенерировать переменные из массива на выходе из цикла?

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

    DJZT
    @DJZT
    Laravel - code for you
    Вот на CMS ускоряется разработка, так как просто нажимаешь на кнопочки.

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

    v_decadence
    @v_decadence
    > Так проще же сделать таблицу в phpmyadmin
    На продакшн сервер и все тестовые сервера ручками потом переносить все изменения?

    > Есть валидация данных, так это просто сделать на чистом php с помощью if, использую ajax
    И получается что-то вроде этого?

    > по мне так проще сделать шаблоны на разных языках
    И при малейшем изменении бегать по 10 файлам и менять одно и то же место?

    > сайт будет больше тормозить и больше лишних конструкций
    Это скорее CMS касается с её кучей модулей, которые далеко не всегда нужны конкретному сайту.

    Мне кажется, вы просто не делали более-менее серьёзного проекта (требования к которому не вписываются в возможности CMS), иначе таких вопросов не возникло бы.
    Есть сайты, которые действительно можно быстрее сделать на CMS, но по мере роста проекта не всегда такое решение остаётся легко поддерживаемым.
    С помощью Laravel (и другого здравого фреймворка) можно сделать почти всё и контролировать любую часть сайта.
    Если у вас сайтик с тремя страничками и формой обратной связи, то да, быстрее будет сделать на CMS.
    Ответ написан
    9 комментариев
  • Почему в PSR пишут, что НЕОБХОДИМО 4 пробела?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    4 потому что размер таба "стандартный".
    Пробела потому что с пробелами будет выглядеть везде одинаково(браузер, блокнот, всё что угодно), в отличие от табов.

    разобраться в которой без 4 пробелов невозможно, типа callback-hell в js?

    Причем здесь PSR(php) и JS только непонятно...
    У JS свои рекомендации, точнее даже у каждой компании свои JS правила.
    Ответ написан
    3 комментария
  • Правильный ли план по изучению Битрикс?

    @kirill-93
    Не учите битрикс, не губите себя! Тем более, что это судя по всему первое, что вы учите. Вам будет очень тяжело перейти с него на что-нибудь нормальное.
    Битрикс - один сплошной старый неподдерживаемый говнокод. Вы не сможете получить какие-то определенные знания, чтоб начать в нем разбираться, потому что в нем нет ни единого подхода, ни каких-то правил/принципов, которых придерживаются его разработчики. Вам всегда нужна будет помощь людей, если потребуется выйти за рамки самых стандартных задач.
    Если вы хотите стать хорошим разработчиком, начинайте с голого php и фреймворков, если хотите писать говнокод среднего уровня (уровня сайтов визиток или шаблонных интернет магазинов), учите вордпресс/оперкарт/магенто. Там тоже говнокод, но он простой и понятный, он логичный.
    Битрикс не имеет никакого отношения к программированию, учить его - это как учить интерфейс какой-то программы, очень плохой программы.
    Ответ написан
    5 комментариев
  • Как не начать говн*кодить?

    banderos120
    @banderos120
    Играю на балалайке
    - Оу, смотрите, я сумел сделать форму и отправить ее POST запросом и вывести ответ и это все в одном файле !
    - Таак, шаблоны на Wordpress, отлично, только что за файл functions.php. О! Анонимные функции я видел такое в JQuery ! Оказывается все так просто.
    - Воот, раскидал функции (процедуры) по конкретным файлам. Думаю так будет удобнее и понятнее.
    - ООП, ооп. Везде требуют ООП. "Классы", "наследование", "инка..." чего ?! Понял ! Классы - это же такая неплохая обертка для моих любимых функций !
    - Ого ! Блин, опять приходится плодить одинаковый функционал. Наверное наследование поможет это исправить. СТАТИЧЕСКИЕ МЕТОДЫ !!!
    - Черт, везде необходимо знание фреймворка. Попробую-ка я Symfony. *!"#$^$&@мать !!! КТо придумал эту хрень ! Месяц прошел я так ничего и не запустил !!
    - Роутинг, хм, толково. Контроллеры. Сервисы. Ага, так вот что означает single responsibility.
    - Ребята ! Я предлагаю не пихать всё в один бандл, а разделить.
    - ORM, репозитории, сервисы, сущности ...
    - ТАК ВОТ ЗАЧЕМ НУЖНЫ ИНТЕРФЕЙСЫ !
    - Чё за "бизнес логика" такая ? DDD ? Чта, простите ?
    - Б*я, б*я, б*я... Так, если эту сущность вынести в этот модуль, то тогда у нас появляется зависимость в вот этом модуле, а это не хорошо. Блин, этот метод вообще не несет смысла. Тааак, а тут стандартный Chain Responsibility . Отлично, напишу-ка тест под это дело.
    - Да пофиг, что по CQRS команда не должна возвращать результат, мне так удобно.
    ...
    - Да Сережа, делать вот как ты делаешь - это и есть говнокод.
    Ответ написан
    Комментировать
  • Дает ли строгая типизация в PHP 7 прирост производительности?

    Начал писать ответ комментарий https://toster.ru/answer?answer_id=937197, но ответ получился большим и поэтому решил поместить его отдельно.

    DevMan , я попробую уточнить ваше утверждение, что немного снижает.
    На самом деле, при использовании скалярных тайпхинтов снижается производительность вызова функций, поскольку возникает некий дополнительный оверхед на валидацию аргументов и приведение значений к нужным типам (если не используется strict_types). Но! Так как внутри функции значения аргументов уже приведены к нужным типам, то при использовании аргументов не происходит неявного приведения типа.
    Поясню на синтетическом примере:
    function foo($x) {
        $result = 0;
        for ($i = 0; $i < 100; $i++) {
            $result += $i + $x;
        }
        return $result;
    }


    Если вызвать эту функцию так: "foo('123')", то в таком случае внутри цикла аргумент будет неявно приводится к целому числу 100 раз. Если вызвать функцию так: "foo(123)", то в таком случае аргумент не будет внутри цикла приводится к целому числу. Очевидно, что второй вариант более производительный:
    ~$ time php70 -r 'function foo($x) { $result = 0; for ($i = 0; $i < 10000000; $i++) { $result += $i + $x; } } foo("123");'
    
    real    0m0.860s
    user    0m0.855s
    sys     0m0.005s

    ~$ time php70 -r 'function foo($x) { $result = 0; for ($i = 0; $i < 10000000; $i++) { $result += $i + $x; } } foo(123);'
    
    real    0m0.508s
    user    0m0.500s
    sys     0m0.008s


    В то же самое время, если добавить к аргументу скалярный тайпхинт, то тогда значение аргумента один раз будет приведено к тайпхинту и внутри функции уйдёт весь оверхед связанный с неявным приведением типа:
    ~$ time php70 -r 'function foo(int $x) { $result = 0; for ($i = 0; $i < 10000000; $i++) { $result += $i + $x; } } foo("123");'
    
    real    0m0.502s
    user    0m0.498s
    sys     0m0.003s

    ~$ time php70 -r 'function foo(int $x) { $result = 0; for ($i = 0; $i < 10000000; $i++) { $result += $i + $x; } } foo(123);'
    
    real    0m0.504s
    user    0m0.495s
    sys     0m0.008s


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

    Зато использование строгой типизации не даст запустить функцию в неконтроллируемом состоянии: когда функция ожидает на вход целое число, а по какой-то причине подсунули массив:
    $var = $_GET['foo'];
    bar($var);
    , для get-параметра foo=123 вызов будет корректным, а для foo[]=123 вызов функции приведёт к TypeError; для foo=abc тоже будет TypeError. Разумеется, этот пример сильно надуман и тут нужно использовать "нормальный" валидатор.
    Ответ написан
    1 комментарий
  • Обновление Drupal 6 -> Drupal 8 - проблема?

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

    hummingbird
    @hummingbird
    Я не буду смотреть этот код, лень. К тому же он ужасно отформатирован. Думайте о людях, которые вам бесплатно помогают. Ладно. Я просто опишу как бы это сделал я.

    Суть вот в чем. Как я понял, у вас слева есть колонка со списком всех транзакций. По нажатию на транзакцию вы хотите в правой колонке отобразить всю информацию о транзакции.
    Я бы это все сделал на AJAX. То есть справа у вас есть блок:
    <div id="js-transaction"><!-- empty --></div>
    Куда будет класться вся информация.

    Теперь в этот блок нужно как-то поместить информацию. Представим, что левый блок представляет собой тупо ссылки. Добавляем в ссылку атрибут:
    onclick="getTransaction('this_key_for_transaction');"


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

    mzcoding
    @mzcoding
    Web-Разработка
    В composer.json чтото типа такого
    "autoload": {
       ....
            "files": [
                "app/helpers.php"
            ]
        },

    Далее создаете файл helpers.php в app и тулите туда функции
    Ответ написан
    Комментировать
  • Как работать с отношениями в Laravel без второстепенных моделей?

    AmdY
    @AmdY
    PHP и прочие вебштучки
    Вы хотите архитектуру или костыли? Есть MetadataTranslations, создавайте для неё модель. Экономя на спичках вы ничего не выиграете.
    Ответ написан
    Комментировать
  • Геймдизайн: может ли жить такая механика?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Есть опасения, что пользователи подумают что расы за деньги сильнее чем бесплатные, и перестанут играть из-за подозрения в дисбалансе. Оченъ сильный риск.

    Надежнее было бы дать всем возможность выбирать свой стиль игры (расу) а монетизировать уже особые юниты.

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