• Веб приложение на 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
    Ответ написан
    Комментировать
  • Как при клике на кнопку в массив вставить эл из Input?

    mannaro
    @mannaro Куратор тега JavaScript
    Умею профессионально гуглить
    Может, я не понял что значит "ожномю" или какой "эл" вы хотите вставить туда, но все работает как надо:
    jsfiddle.net/s1wnf7v1
    Ответ написан
    2 комментария
  • Обвернуть в span последние 3 цифры цены?

    Hatsune-Miku
    @Hatsune-Miku
    Няшк :3
    <span class="PricebasePriceWithTax">57 <span style="font-size: 0,9;">000</span> p</span>
    Ответ написан
    Комментировать
  • Как сделать консольный логгер nodejs таким же удобным как браузерный?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Найдите node-inspector на npm, он позволяет вести отладку node.js процесса из любого webkit+v8 браузера (Chrome, Opera)
    Ответ написан
    2 комментария
  • Как сверстать волнообразный бордер?

    27cm
    @27cm
    TODO: Написать статус
    Никак. Разве что вступить в W3C и реанимировать идею border-style: wave;
    Ответ написан
    Комментировать
  • ::after Появляется после текста в div а не после div - так и должно быть?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега CSS
    The ':before' and ':after' pseudo-elements can be used to insert generated content before or after an element's content. They are explained in the section on generated text.
    Спецификация

    ведь указано что он блочный элемент

    То, что это блочный элемент, вовсе не значит, что он по каким-то причинам должен рендериться вне родителя. Это влияет только на его взаимотношение с соседними элементами.

    А что касается вашего кода, у вас для after ширина дважды указана: 100% и 1400px. Не знаю, специально это или нет.

    P.S. В будущем постарайтесь более подробно описывать, что именно странного вы видите в поведении элемента, я не сразу сообразил о чем вы говорите.
    Ответ написан
    Комментировать
  • Как эффективно изучать php?

    Если честно, то по мне, самое лучшее это практика решения реальных задач (проектов). Сам когда то изучал PHP по книгам и задачникам, но после решения их, через неделю забывал уже что да как. И вот когда сам себе придумал проект и начал его делать, то навыки PHP сразу пошли в гору, и самое главное на реальном проекте листинг запоминается лучше.
    Для начало, самое простое, это возьми паттерн MVC и разбери как он работает и напиши самый простой сайт-визитку на нем. Ну а дальше уже я думаю сам поймешь куда продвигаться.
    Ответ написан
    1 комментарий
  • Тестирую сайт на localhost, загружаю Gif анимацию, почему не проигрывает, а открывает как картинку?

    EnterSandman
    @EnterSandman
    Эникей
    Что вы загружаете? Как вы загружаете? ПЖЛСТ!!!!
    Ответ написан
    Комментировать
  • Как правильно сверстать?

    miraage
    @miraage
    Старый прогер
    manos.malihu.gr/jquery-custom-content-scroller

    Там есть ссылка demo.
    Ответ написан
    Комментировать
  • Как избавиться от косяка с именами node_modules?

    alexofree
    @alexofree
    ИМХО - проще перейти на линукс. Проблема с именами в самой винде.
    Либо воспользоваться попробовать воспользоваться символьными ссылками, но не уверен, что поможет.
    Ответ написан
    5 комментариев
  • В чем смысл PostCSS сегодня?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В последнее время началась мода на PostCSS - много постов, статей о нем.

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

    Есть даже версия (не без оснований), что это - прародитель всех современных препроцессоров и веяний.

    Где ж это вы такое прочитали? postcss был попыткой решить проблемы, которые нельзя решить препроцессорами (или можно но долго).

    Окей, будем считать так, тем паче, что история коммитов на Гите это скорее подтверждает.

    Что именно подтверждает? сначала был Sass написанный рубистами что бы CSS можно было бы готовить так же нежно как они готовят HTML на HAML (кофескрипт туда же, рубистам хотелось сделать js похожим на ruby). И это заметте было в 2006-ом году! тогда и js был медленный, и V8 может только в планах был...

    Ведь все, что умеет PostCSS, умеют и препроцессоры

    postcss из коробки не умеет ровным счетом ничего. Он может только загрузить AST CSS файла и слепить из него обратно тот же CSS.

    И именно в этом сила postcss - модульность. Все существующие препроцессоры монолитны. То есть вы не можете просто так взять и добавить что-то свое туда. Да, в последних версиях less (и вроде как sass туда же подтягивается) у вас есть примитивный набор средств что бы вклиниться в процесс обработки AST документа и добавить какие-то примитивные вещи. Но это не удобно. Если вы хотите динамически менять проперти (например пересчитывать rem в em) или добавлять еще (опять же для того что бы руками не плодить в css кастыли для разных браузеров и делать это автоматом, на завязываясь ни на миксины и оставляя CSS чистым) свойств, но сделать это на less/sass сложно.

    Намного проще взять postcss и натравить это дело на результат работы препроцессоров.

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

    Вот как-то так. А за счет того что мы имеем доступ целиком и полностью к формированию и обработке AST мы можем и синтаксис CSS развивать. Примерами могут служить многочисленные плагины аля cssnext и т.п. Можно даже большую часть фич sass в виде плагинов подключить.

    А самое забавное, что работает это все быстрее того же libsass на плюсах. За счет архитектуры (имею в виду не голый postcss а с набором плагинов добавляющих функциональность sass).
    Ответ написан
    Комментировать
  • Как правильно подготовиться до уровня Junior PHP?

    zualex
    @zualex
    Senior Software Engineer
    Для начала PHP: Правильный путь - очень много полезной информации как для начинающего, так и для опытного программиста.
    А потом уже фреймворки, да без них сейчас никуда
    Ответ написан
    Комментировать
  • ООП в высоконагруженных проектах считается устаревшим?

    miraage
    @miraage
    Старый прогер
    Мужик дегенерат, однозначно.

    // EDIT

    Посмотрел прикрепленные исходники. Закапал святую воду в глаза.
    Выкиньте это всё, покажите ему, например, PHP: The Right Way.

    Я бы на Вашем месте уволился, незадумываясь.
    Ответ написан
    Комментировать
  • Надежна ли функция is_array?

    Melkij
    @Melkij
    PostgreSQL DBA
    На примере PHP5.6.14
    ext/standard/type.c PHP_FUNCTION(is_array) вызывает php_is_type (функция определена там же, чуть выше)
    Та проверяет на равенство Z_TYPE_PP(arg).
    Z_TYPE_PP, соответственно, макрос из Zend/zend_operators.h
    #define Z_TYPE(zval)		(zval).type
    #define Z_TYPE_P(zval_p)	Z_TYPE(*zval_p)
    #define Z_TYPE_PP(zval_pp)	Z_TYPE(**zval_pp)

    Как видим, прямое обращение к полю type базовой для zend'а структуры zval. Ну а уж оно врать не может, это или IS_ARRAY и is_array даст true или что-то другое и результатом будет false.
    Ответ написан
    Комментировать
  • Почему Angular плохой?

    @VanKrock
    Angular всего лишь инструмент, если вы умеете им пользоваться и он решает ваши задачи, используйте его, если нет используйте другой инструмент. На Angular достаточно просто решать большой пул задач, если вы будете постоянно только сравнивать инструменты и искать который лучше, то в итоге вместо проекта вы все еще будете искать инструмент, который лучше.
    Ответ написан
    4 комментария
  • В каких случаях нужно нанимать дизайнера сайтов?

    vaux
    @vaux
    Курящий лыжник
    Хороший дизайн помогает человеку решить его проблему. На входе мы имеем человека и его проблему. Человек находит сайт компании, которая, как он считает, может его проблему решить. Далее, путем работы с сайтом, человек либо решат свою проблему, либо уходит на другой сайт, где путь от захода на сайт до решения проблемы гораздо короче и понятнее. Так вот, хороший дизайн - это когда процент людей, решивших свои проблемы с помощью данного конкретного сайта, стремится к 100.

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

    Что же касается вашего вопроса, то тут всё зависит от того, как вы понимаете работу дизайнера. Если для вас это человек, который умеет рисовать красивые макеты, то, наверное, можно и не нанимать отдельного человека. Только хуже будет, поскольку вы не поймете друг друга. Если же для вас дизайн - это в первую очередь инструмент решения проблем людей, то нанимать дизайнера стоит. Единственное, что это должен быть именно дизайнер, а не просто рисовальщик красивых картинок.
    Ответ написан
    4 комментария
  • Где посоветуете учиться начинающему FrontEnd-разработчику?

    bodia7
    @bodia7
    Начинающий веб-разработчик
    скачайте курсы учебного центра "Специалист". очень доходчиво объясняют
    Ответ написан
    1 комментарий
  • Как автоматизировать автоматизацию во front-end?

    delphinpro
    @delphinpro Куратор тега Gulp.js
    frontend developer
    я папку node_modules симлинком подключаю в проект
    20150917-153845.png
    сам проект инициализирую yo генератором
    пара минут и все готово.
    Ответ написан
    Комментировать
  • Возможно ли через javascript определить что у пользователя используется именно uc browser (со своим движком)?

    miraage
    @miraage
    Старый прогер
    Скачайте себе этот браузер.
    Вбейте в консоле navigator.userAgent - получите агента.
    Используйте по нужной подстроке indexOf.
    Пример в вакууме:
    if (navigator.userAgent.indexOf("u3 kernel") !== -1) {
      // UC Browser
    }


    // UPDATE

    Если нужен feature-detector - Modernizr.
    Ответ написан
    3 комментария