Задать вопрос
  • Есть аналоги Wordpress но попроще?

    muhammad_97
    @muhammad_97
    PHP-разработчик
    Ответ написан
    Комментировать
  • На какое российское ПО можно импортозаместить операционную систему?

    selivanov_pavel
    @selivanov_pavel
    Linux admin
    Есть российские ОС на базе Linux, по сути - пересборка общеизвестных дистрибутивов, иногда с достаточно глубокой переработкой. Самый известный и долгоживущий - AltLinux: www.altlinux.ru Стоит учитывать следующие факторы:

    - не всё ПО имеет аналоги под Linux. Многие программы, особенно написанные в российском госсекторе, работают только под Windows. Некоторые из них удастся запустить под wine (программа под Linux, эмулирующая Windows API), но далеко не все
    - потребуется переучивать IT-персонал: системных администраторов, суппортов
    - потребуется переучивать пользователей. В силу зачастую низкой компьютерной грамотности пользователей даже незначительное изменение интерфейса может сильно затруднить их работу
    - под Linux есть достаточно качественный аналог MS Office - Openoffice/Libreoffice. Но для сложных документов совместимость может быть неполной

    Советую делать переход постепенно, сначала отработать на небольшом подразделении. И, вероятно, для какого-то специфичного ПО несколько машин с Windows всё-таки придётся оставить.
    Ответ написан
    9 комментариев
  • Почему такая разница в рейтинге языков программирования?

    @Maa-Kut
    Разница из-за различных методик сбора данных. Рейтинг TIOBE строится на подсчете количества поисковых запросов, содержащих название языка (https://ru.wikipedia.org/wiki/Индекс_TIOBE). Github, полагаю, ориентируется на количество коммитов в проекты, написанные на соответствующих ЯП. Stackoverflow, скорее всего, ориентируется на теги.

    Особо зацикливаться на эти рейтинги, честно говоря, не вижу нужды; максимум, на что они годны - это служить аргументом в разных фаллометрических баталиях на тему "ЯП1 vs ЯП2". В реальной жизни лучше ориентироваться на количество/качество предлагаемых вакансий (если хочется программировать профессионально) или на личные предпочтения (если хочется программировать "для души").
    Ответ написан
    3 комментария
  • Разделение внутри бандла?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    когда бандл большой но не на столько чтоб делать 2 бандла


    Читаем symfony best practice - у вас должен быть всегда только один бандл. AppBundle. Все остальные варианты бандлов - только для самодостаточных вещей, которые вы хотите реюзать между проектами. Причем как правило "в бандл" заранее не стоит это заварачивать а уже когда будет видно что получилось что-то реюзабельное.

    Далее, разделение по функциональности - дело хорошее. Вот только не стоит забывать, что контроллеры к приложению имеют весьма посредственное отношение, это просто UI. Имеет смысл разделять по слоям/зонам ответственности + по функционалу. так у нас может быть такая структура:

    Controller
        User
           UserController
    Entity
       - User
           - UserProfile
           - UserCredentials
           - User
           - UserRepository (только интерфейс)
       - Downloads
           - какие-то сущности


    Словом, делайте так, как вам удобно. Но лучше пусть в одной директории будет 10 файлов, чем если бы у нас было 5 директорий и по 1-2 файла в каждом.
    Ответ написан
    Комментировать
  • Как сделать работы websocket на php без запуска сервера через консоль?

    Denormalization
    @Denormalization
    Просто настраиваем тот же supervisord, который будет запускать\перезапускать процесс.
    Ответ написан
    Комментировать
  • Где лучше объявлять приватные свойства?

    Denormalization
    @Denormalization
    Переменные принято объявлять в начале файла (и не важно класс это или просто файл с функциями)
    Ответ написан
    Комментировать
  • Есть ли косяки в роутинге?

    trevoga_su
    @trevoga_su
    почитай - www.phpinfo.su/articles/practice/chpu_na_php.html

    вот это
    if ( Logic::get() === "frontend") {
    
    if ( $this->uri[1] === "news"
    
    if ( $this->uri[1] === "catalog"

    лютый треш. неужели сам не видишь, что это говнокод хардкод? Куча стремных if-ов, монолитность, непереносимость. Все делается ГОРАЗДО проще. Прочитай статью.

    if (Logic::get() === "backend") {
    нет никакого frontend и бекенд. с точки зрения роутинга - это просто разные контроллеры.
    Ответ написан
    Комментировать
  • Есть ли косяки в роутинге?

    @IceJOKER
    Web/Android developer
    Лень читать тело методов, но мне не нравится конструктор, не перегружайте его лишними данными, он обычно служит для инициализации переменных и т.д. остальную логику перенесите в методы, так легче будет поддерживать код
    Ответ написан
    Комментировать
  • Как узнать какая версия php используется?

    echo phpversion();
    Ну а если нужно изменить, то путь к конфигу веб сервера.
    Ответ написан
    Комментировать
  • JQuery есть ли смысл изучать?

    sim3x
    @sim3x
    ты настолько занят, что не можешь уделить пару минут на чтение апи jQ?
    Ответ написан
    Комментировать
  • Оправданно ли использование doctrine в хелпер классе symfony 3?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    container-aware - знает про контейнер и может работать с ним, чего по хорошему оно не должно уметь делать.

    Хочу писать написать функцию которая достает записи из бд по id.


    Записи из БД или сущности? Это вопервых весьма большая разница, а во вторых уже же есть старый добрый $em->find(Entity::class, $id), парам конвертеры дефолтные и т.д

    функцию в хелпер классе который будет находиться тут AppBundle\Utils


    Вообще это весьма плохая идея. И про то что будет глобальная функция которая этим будет заниматься, и то что вы ее как статику в класс запихаете а не сервис сделаете, и то что Utils... это называется "мне было лень придумывать адекватное название".
    Ответ написан
    3 комментария
  • Немного про замыкания в PHP?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    А каковы границы тут ?


    А тут никто никуда не ходит вообще. У вас есть скоуп функции и наружу вы ходить не можете. Вы можете снаружи прокидывать нужные переменные в скоуп вашего замыкания (use ($tax, &$total)). То есть вы просто даете вашему замыканию попользоваться этими переменными.

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

    p.s.
    Но в вашем случае в этом нет ровным счетом никакого смысла. Если вам надо просто сумму посчитать - вам стоит использовать функцию array_reduce, правда тогда придется изменить еще и способ, как вы храните ваши "продукты". А еще вот эта штука:

    $pricePerItem = constant(__CLASS__ . "::PRICE_" .
                        strtoupper($product));


    Попахивает "дурными решениями". Пощадите тех, кто будет работать с вашим кодом через пол года (даже себя самого). Код должен быть не "коротким" а "понятным". Код чаще читают чем пишут. Все должно быть не двусмысленно, выражать что вы хотели сделать и не требовать комментариев (а все что требует комментариев выносится в приватные методы с адекватным названием).
    Ответ написан
    5 комментариев
  • Правильно ли я понял философию Docker?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Контейнеры данных


    Они не нужны, используйте named volumes вместо этого (с версии 1.9 докера).

    Исходный код и локальные npm-модули (или лучше это в предыдущий контейнер, и при старте выполнять


    Нет, npm install надо выполнять ДО сборки образа. Когда контейнер стартует - внутри у него уже все должно быть. Опять же я лично против того, что бы выносить исходники проекта в отдельный контейнер-пустышку. У вас есть контейнер с нодой - исходники для ноды должны быть там. Есть некоторые нюансы связанные со сборкой контейнера но это так.

    На файловой системе хоста


    Ничего.

    Логи прокидываются в stdout/stderr контейнера и собираются на хосте через докер любым подходящим драйвером (читаем документацию).

    Конфигурация - все что в конфигах от окружения к окружению меняется - в ENV переменные. Все остальное - не меняется и потому просто вшито внутрь контейнера.
    Ответ написан
    21 комментарий
  • Каким должен быть контрольный список знаний для Junior PHP(2016)?

    Uwe_Boll
    @Uwe_Boll
    Я Злой и Страшный Уве Болл в Разработке знаю Толк
    где компилятор?
    7112_20.jpg
    Ответ написан
    Комментировать
  • Стоит ли открывать ИП при работе в Upwork или остаться физиком?

    Zifix
    @Zifix
    Barbatum
    Налоговые каникулы для IT ИП действуют не во всех регионах. Если заниматься серьезно, и выводить серьезные суммы, то можете привлечь внимание соответствующих органов, тем более что незаконное предпринимательство у нас наказуемо. С ИП головной боли не много, уплата налогов головной болью не является, сейчас все автоматизировано сервисами типа Эльбы и Мое Дело.
    Ответ написан
    4 комментария
  • Doctrine не запускает PrePersist при загрузке фикстур?

    BoShurik
    @BoShurik Куратор тега Symfony
    Symfony developer
    Не забыли добавить аннотацию к классу?
    @ORM\HasLifecycleCallbacks()
    Ответ написан
    Комментировать
  • Не заносятся данные с формы в БД?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1. mysql_query не будет работать в PHP 7.0 и выше.
    2. В INSERT'е попытка записать в два поля семь значений.
    Ответ написан
    Комментировать
  • Как правильно писать названия переменных, функций и тому-подобное?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    нижнее подчеркивание у функции убираем и все уже чуть получше.

    В целом же названия надо делать осмысленными. То есть если не знаем как что назвать, просто формулируем что мы хотим сделать (на английском языке), и исходя из этого уже выдумываем названия:

    // calculate sum
    $sum = calculateSum(); 
    // generate report for premium users
    $sum = generateReport(new PremiumUsersSpecification());


    как-то так. Ну а что как, у меня такие правила:

    - константы - SCREAMING_SNAKE_CASE
    - названия объектов - UpperCamelCase
    - названия переменных, методов, функций и т.д. - lowerCamelCase
    - таблички/поля в бд, json, yml - snake_case
    Ответ написан
    Комментировать
  • Как узнать какой именно php скрипт приводит к ошибке или работает медленно?

    copist
    @copist
    Empower people to give
    Если есть возможность, замените Apache на PHP FPM SAPI, прилагающийся к PHP. При этом можно включить PHP slow log. В специальном логе будут появляться стек-трейсы процессов, которые работали больше заданного количества секунд именно в этот самый момент, то есть например, в 30ую секунду от запуска процесса.

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

    Также к PHP FPM прилагается встроенная система мониторинга. Можно посмотреть, сколько сейчас порождено процессов. Иногда их чрезвычайно много.

    Если заменить Apache на PHP FPM невозможно, то путь исследования более длинный: нужно в настройках Apache настроить CustomLog с замером времени на выполнение. см. ответ на serverfault. Затем исследовать логи (там будут только URL запросов, без стрек-трейсов) и самостоятельно определять, что именно могло вызвать тормоза.

    Можно подключить профилировщики XDebug + Webgrind или XHprof. Замеры можно делать на выборочных запросах, например только для пользователя с определённого IP или при наличии определённой куки. Отчёты будут очень детальные и будут включать замеры по всем внутренним вызовам от начала до завершения процесса, а не только в 30ую секунду, как делает php slow log.
    Ответ написан
    Комментировать