Задать вопрос
  • PHP FTP менеджер?

    https://www.google.ru/search?q=PHP+FTP+%D0%BC%D0%B... - наблюдаем 264000 результатов.
    https://packagist.org/search/?q=PHP%20FTP%20%D0%BC... - 1350 страниц результатов.

    Выбирай-не-хочу! Учитесь пользоваться поиском.
    Ответ написан
    2 комментария
  • Временная загрузка и отображение изображения?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Можно использовать FileAPI и вообще ничего не грузить на сервер до отправки формы.
    Но делать это, разумеется, с оглядкой на поддерживаемые браузеры.
    Ответ написан
    7 комментариев
  • Как добавить условие при связях?

    Смотрите, вы можете пойти двумя путями. Сделать условие выборки единичным, там где вам это нужно.
    function ($someCountry = 'Ukraine')
    {
    $product = Product::findOne(123);
    //Запрос ниже выполняться может сколько угодно раз в отличии от $price = $product ->Price();
    $price = $product ->getPrice()
        ->where(['country =:someCountry', [':someCountry' => $someCountry])
        ->orderBy('id')
        ->all();
    }


    Либо изначально сделать связь с определенным условием.
    class Product extends ActiveRecord
    {
        public function getBigPrices($someCountry)
        {
            return $this->hasMany(Price::className(), ['product_id' => 'id'])
                ->where('country > :someCountry', [':someCountry' => $someCountry])
                ->orderBy('id');
        }
    }


    Только в первом варианте, думаю есть более простой Where что то вроде
    $query->where(['country' => USA]);
    Ответ написан
    2 комментария
  • Как лучше брать оплату за работу (фикс за объем / фикс за время / почасовая)?

    @redakoc
    Вы не о том вообще:

    Фиксированная оплата предполагает, что весь проект описан и оценен.

    Повременная оплата позволяет выполнять любые дополнительные работы по мере их поступления.

    Это даже разные виды описания проектов.
    Ответ написан
  • Восстановление файлов ext4, возможно ли?

    https://wiki.archlinux.org/index.php/File_recovery
    Актуально не только для Arch Linux.
    Ответ написан
    Комментировать
  • Symfony 2 или Laravel для распределённой системы?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    без разницы, в принципе. И на том и на том можно сделать как просто и быстро так и плохо. Разница по сути только в подходах по работе с базой (доктрина - domain centric, ларавелевская ORM - database centric).

    Ну и да, в Laravel вполне себе удобный IoC (даже не смотря на то что в symfony2.8 уже сделали автовайринг), и концепция мидлвэров. Но у Symfony2.8 можно включить микроядро, и по производительности он уйдет вперед (чисто фреймворк, без учета ORM и т.д.)
    Ответ написан
    5 комментариев
  • Веб приложение на Symfony Components, как правильно?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Разделить приложение по паттерну MVC,


    Ваш MVC плавно превращается в MVA, а MVA плавно превращается в луковую архитектуру.

    и слоя такого как модель нет

    Потому что модель это не слой, это объект. Один одинешенек (в контексте одного реквеста) такой... его задача взять запрос и выплюнуть данные. То есть для контроллера модель это сервис, для шаблона модель это... сущности или DTO.

    Модель это ВСЕ ЧТО УГОДНО что умеет обрабатывать данные и содержит их.

    Symfony же это UI фреймворк, который всего-лишь позволяет вам быстро организовать UI к вашему приложению (HTTP API или CLI скрипты это только UI приложения) и потому как именно вы будете организовывать архитектуру приложения - это чисто ваша забота. Симфони вам предоставляет только контейнер зависимостей что бы организовать сервисный слой удобненько.

    MVC это бесполезные три буквы которые не говорят ровным счетом ничего о том как у вас чего организуется. MVA уже лучше и это именно то что использует подавляющее большиинство на бэкэнде последние лет 10 (в том числе и RoR), но концепция та же - разделение логики представления данных от логики обработки этих данных.

    Тогда как поступить с этим? Есть компонент форм для валидации данных и заполнения полей авторизации-регистрации, есть ORM а как мне связать и валидацию и записи через ORM в объект User допустим.


    Вам как правильно сделать или как удобно? Как удобно зависит от вас. Вы можете и писать из форм прямо в сущности анемичные и т.д. и еще как хотите. Но по сути флоу должен быть примерно таким:

    компонент форм пишет данные в DTO (тупые контейнеры данных). DTO идут в сервисный слой где данные мэпятся на сущность. Сущности (у нас же это пропел)... по правилоному за их сохранноть должны отвечать репозитории, а внутри уже что угодно используйте, но раз уж у нас active record то все что мы можем тут сделать - просто вызвать save в сервисах либо страдать (доктрина в этом плане намного удобнее но у нее есть свои проблемы, а так же она сложная).

    Но я крайне сомневаюсь что вы откажитесь от удобств и станите делать DTO. Скорее всего для вас просто не будет в них профита, они нужны для инкапсуляции сервисного слоя, то есть что бы UI ничегошеньки не знал о том как реализовано нутро, что бы вы могли все менять когда захотите. Сущности - это деталь реализации сервисного слоя, они никогда не должны попадать в контроллеры, но иногда это удобно. А хорошая архитектура - это та с которой удобно работать в конце концов (то есть мы балансируем между простотой и изоляцией изменений).

    Так же рекомендую почитать вот эту штуку: The Twelve Factors
    Ответ написан
    Комментировать
  • Тенденция к перехвату проектов/клиентов сотрудниками с последующим увольнением. Что делать?

    Регулярно сталкиваемся с этим явлением, радует что если с тебя копируют и перехватывают твои проекты, значит ты впереди. Проект закончится, а опыт не приходит так быстро, и собственные шишки. А для нас это повод стать лучше, придумывать куда идти лучше и чем ещё можно от таких фирм отличаться. Преимущество в том что вызнаете своего конкурента в лицо, вы сами его вырастили и знаете его плюсы и минусы. Некоторым клиентам можно это правильно преподнести. Не стоит расстраивается, это естественный процесс, когда специалист начинает мнить себя собственником и не видя всей работы, считает чем он хуже и почему он не может делать тоже самое, работая на себя. Можно только пожелать успехов новоиспеченному предпринимателю , и бессонных ночей. Наоборот, хорошо что такие люди отваливаются из команды быстрее, освобождая место для людей, которым можно будет доверять, и которые проверят себя временем!)
    Ответ написан
    Комментировать
  • Как вы изучали yii2?

    Хотите что-то изучить - придумывайте проект и начинайте яростно над ним работать. Лучше способ сложно найти.
    Ответ написан
    Комментировать
  • Как организовать взаимодействие между REST бэкендами?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Обычные curl (или лучше Guzzle) запросы внутри сервисов-репозиториев. Тогда вы сможете в будущем отказаться от curl и перейти на MQ например или еще как... зависит от задачи и целей которые вы приследуете.
    Ответ написан
    Комментировать
  • Почему постоянно лезет undefined?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Да, именно так, на момент вызова console.log колбэк еще не отработал. Добро пожаловать в callback hell. Альтернативы:
    - промисы, позволяют уменьшить вложенность колбэков
    - корутины - сложно но можно писать асинхронный код в синхронном стиле, повторюсь это сложно
    - async/await - еще не запилили в js.
    Ответ написан
    9 комментариев
  • Корректно ли выполнять действия в конструкторе?

    @djay
    Конструктор - это механизм инициализации состояния класса. Он создан для того чтобы произвести начальную инициализацию свойств класса, так чтобы его новый обьект мог работать. А всякие проверки на существование файлов, или инициализации других обьектов должны строго выполнять после инициализации состояния.

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

    И кстати, лучше будет писать так:

    $starter = new Starter();
    $starter->prepare();


    В то время как тело метода prepare() содержит те методы и ту последовательность:

    $this->iniConfig();
    $this->rewriteHeaders();
    Ответ написан
    1 комментарий
  • Прибавление предыдущего числа к следующему php?

    @dmitryKovalskiy
    программист средней руки
    Я извиняюсь, но вчера один персонаж 3 раза задавал разные вопросы по рекурсии с правками кода функции nums_from. 1) Отправлю жалобу на задание, не обижайтесь. 2) Передайте вашему преподавателю что он дебил. Рекурсия - инструмент специфический. Если задача коротко и прозрачно решается итеративно - решать ее рекурсией будет только имбецил. Задачи решают рекурсией, если итеративно код выглядит как ночной кошмар (обход деревьев, xml, ханойская башня).
    Ответ написан
    1 комментарий
  • Какая бд выдержет нагрузку в 10к запросов в минуту?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    скорее всего вам посоветовали грамотно проектировать БД, а не свою СУБД написать.

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

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

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

    никогда. Всегда нужно использовать готовые решения, если они позволяют вам сэкономить время. Писать полностью свои решения нужно только тогда, когда вы объективно видите проблемы с существующими (а это без опыта трудно определить).
    Ответ написан
    3 комментария
  • Как удалить вирусы в Debian headless сервере?

    поставить пакет auditd
    повесить правила позволяющие отследить создание файлов или запуск процессов
    по логам найдется процесс супервайзер
    Ответ написан
    Комментировать
  • Как конвертировать wav в mp3 с помощью lame в подпапках?

    sim3x
    @sim3x
    код для ffmpeg/avconv

    find . -name "*.wav" -exec avconv -i "{}" -c:a libmp3lame -b:a 192k "{}.mp3"
    Ответ написан
    Комментировать
  • Как устроен AngularJS?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ангуляр берет HTML и парсит его (не регурялками, ибо парсить HTML регурярками не шибко удобно). Запись вида {{var}} является ничем иным как сокращенной записью директивы ng-bind:

    <div>Hello, {{name}}</div>
    <!-- Эквивалентно -->
    <div> Hello, <span ng-bind="name"></span></div>


    Как только шаблон полностью обработан, ангуляр может начать применять директивы к элементам. тут я на 100% не помню, но вроде как Angular тупо траверсит все элементы нашего фрагмента и пытается найти зарегистрированные директивы. Это удобно, тогда у нас есть период простого препроцессинга HTML, а затем мы просим распарсить это дело браузер, далее работая исключительно с DOM. Браузер за нас сделает большую часть грязной работы.

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

    Директива ngBind, которая используется в нашем случае, слушает изменения переменной в скоупе и, когда дожидается оных, меняет содержимое элемента через DOM.
    Ответ написан
    6 комментариев