• Где symfony DI собирает все зависимости?

    @Flying
    Если говорить именно об аргументах контроллера, то они собираются в ArgumentResolver::getArguments() на основании метаданных (получаемых через reflection) из ArgumentMetadataFactory::createArgumentMetadata. Передача аргументов в action контроллера идёт при его вызове здесь.

    Если же речь идёт об общем случае то там схема существенно сложнее т.к. непосредственно инициализация сервисов очень сильно отличается в зависимости от настроек контейнера в отношении конкретного сервиса (вспоминаем про factories, абстрактные сервисы и т.п.), но в общем случае все варианты приводят к генерации соответствующего метода в контейнере.
    Ответ написан
    Комментировать
  • Какие инструменты облегчают изучение чужого кода?

    @m0nym
    Линтеры/статические анализаторы.
    И качественная IDE, например, PHPStorm, - процесс пробежки к телу там сведен к нажатию одной горячей клавиши.
    Ответ написан
    5 комментариев
  • Стоит ли брать MacBook Pro 13 128gb 2017 г. для backend и мобильной разработки?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Судя по тому, на сколько часто на Тостере задают подобный вопрос, не стоит.
    Ответ написан
    Комментировать
  • Какой лучше стул из этих двух удобнее и тд?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Оба - хлам. Чтобы ничего не болело, кресло надо искать эргономичное и делать это в специализированных магазинах.
    Ответ написан
    8 комментариев
  • Правильно ли такая ответственность классов?

    Направление верное.
    То что вы описываете как класс Users, это своего рода репозитарий, который знает как получить, записать, и удалить записи из соответствующей таблицы.

    а все проверки вроде "а может ли текущий пользователь удалять других пользователей" или "может ли пользователь просматривать других пользователей"

    Это зона ответственности другого класса или группы классов, системы доступа, как правило это RBAC.

    классы остаются незащищенными, если вдруг какая-то проверка окажется дырявой ...

    Это вполне нормальная ситуация, эта проблема решается написанием тестов.

    Подробнее можно почитать про принципы SOLID, а именно про S - Single responsibility
    Ответ написан
    Комментировать
  • Баг с font-awesome или кривые руки?

    @lagudal
    у вас font-awesome подключен аж 3 раза - 2 раза в head ´
    <link rel="stylesheet" type="text/css" href="typo3conf/ext/multishop/templates/css/font-awesome/css/font-awesome.min.css?1528109206" media="all">

    <link rel="stylesheet" type="text/css" href="/fileadmin/templates/extern/font-awesome/4.6.3/css/font-awesome.min.css?1531392793" media="all">

    и один раз импортом, что вы и указали -
    @import url ("https://netdna.bootstrapcdn.com/fonz-awesome/4.6.3/css/font-awesome.min.css")


    один из подключеных в head, 4.4.0, два других показывают 4.6.3, из них что подключается с bootstrapcdn видимо как раз включает те иконки, что нет в других.
    Уберите эту чехарду, подключайте нужную версию только один раз, все равно в каком месте, и все будет нормально
    Ответ написан
    Комментировать
  • Почему не работает цикл?

    @Arik
    $i = count($url_arts);

    тут < или <= , но никак не =

    По коду получается вы переменной $i присваиваете результат count($url_arts), что дает тот же результат условию. Выходит если кол-во 0, то будет false, если больше нуля - true, и никакое кол-во итераций не изменит эту ситуацию, на что и получаете бесконечный цикл
    Ответ написан
    Комментировать
  • Как сделать выборку из Mysql таблицы по полю с несколькими значениями?

    qonand
    @qonand
    Software Engineer
    разберитесь с нормальными формами БД и перепроектируйте по нормальному базу данных.
    Ответ написан
    2 комментария
  • Выводим / Показываем свои работы (какие способы реализации)?

    alex-1917
    @alex-1917
    Если ответ помог, отметь решением
    Использовать БД не хочу

    ахахах)))
    Перечитал внимательно ваше бестолковое нагромождение слов - 200 слов и ни одной запятой - думаю, вам идеально подойдет страничка в одноклассниках!
    Там есть ВСЁ, что вы перечислили. И даже авторизация!
    Я сам не мог в это поверить пока не решился зарегистрироваться в одноклассниках поэтому надо выбрать одноклассники не выбрать тогда однолкассник выбрать вк и потому что вот так. Ну как вам без запятых?)))
    Ответ написан
    Комментировать
  • Как сделать отказоустойчивый кластер PostgreSQL?

    Melkij
    @Melkij
    PostgreSQL DBA
    Мультимастер СУБД - это такая замечательная штука, которую все хотят и ни у кого пока не получилось.
    Потому что есть такая штука как CAP теорема, весьма мешающая сделать серебряную пулю.

    Ладно, ближе к делу.
    Самая большая проблема с автоматическим failover СУБД - решить, что уже пора переключаться. Для чего необходимо выяснить, а что вообще происходит, не развалилась ли сеть, не вернётся ли через пару секунд мастер обратно - если в сети в результате окажется два мастера, то нет никакого разумного способа определить, где данные актуальны. Худшее что можно представить - это split brain: когда часть приложений ходит в один мастер, часть в другой и данные стремительно расходятся в разные стороны. Есть такая байка про гуглдиск "у нас всё отказоустойчиво, все данные хранятся в 4 экземплярах. Правда, у нас была авария и мы теперь понятий не имеем, какая из копий актуальная"
    Переключение мастера на 90% - решение административное и человеческое. Автоматика же добавляет головной боли. Зачастую - больше головной боли, чем без неё. Особенно если железо адекватное серверное, которое "вдруг" выпадает очень редко.

    Обычно автоматики нет, и есть детальная инструкция по переключению мастера БД, по которой и в ночи можно переключиться.

    Если всё ещё хочется походить по граблям - посмотрите patroni. Есть пара кластеров с ним на поддержке, при наличии мониторинга особых проблем не припоминаю. До split brain по крайней мере не придумал как довести, вроде все варианты прикрыты. В худшем случае в readonly уходит.
    Ответ написан
    7 комментариев
  • Запись в файл PHP?

    webinar
    @webinar Куратор тега PHP
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Это называется кеш. В том числе кеш может храниться в файле(ах). Он имеет ключ, по которому можно получить его значение и имеет срок давности.
    Реализаций миллион: волшебный сайт с ответами

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

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    В разных компаниях это делают по-разному. Процитирую свой старый ответ на эту же тему, но про Django.

    Есть три способа:
    1. Верстальщик делает для каждого типа страниц рыбу, бэкендер напяливает её на шаблонизатор. При дальнейших правках верстальщик правит рыбу, бэкендер правит шаблон. Плюс в простоте включения верстальщика в процесс, минус в дополнительной нагрузке на бэкендера. Хорошо подходит для привлечения верстальщиков со стороны.
    2. Поднимаете отдельный сервер для разработки. Настраиваете на нём FTP. Запускаете на нём нужные проекты, выдаёте права только на шаблоны. Запускаете верстальщика по FTP с chroot'ом в каталоге с проектами. Минус - нужен дополнительный сервер и понимание языка шаблонизатора со стороны верстальщика. Плюс - снижение нагрузки на бэкендера и возможность тестировать правки на живом проекте.
    3. На комп верстальщика ставится python и git. Верстальщик клонирует проект, запускает из корня проекта специально подготовленный батник, который активирует виртуальное окружение, ставит зависимости и запускает dev-сервер. Требует от верстальщика умения работать с git (а других нанимать и не надо), а от бэкендера делать нормальные приложения, которые не требуют долгих танцев с бубном для запуска.
    Ответ написан
    Комментировать
  • С чего начать работу на фрилансе?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Начните с гугла. На тостере подобных вопросов было несколько сотен.

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

    На фрилансе главная задача - уметь быть САМОСТОЯТЕЛЬНЫМ, а вы даже начать сами не можете.
    Ответ написан
    Комментировать
  • Фронтендером без во?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    В текущих реалиях, образование для работы в IT не нужно.
    Нужны реальные скиллы, способность к самообучению.
    Однако, формальное наличие образования будет полезно при эмиграции.

    PS модераторам: может не будете удалять вопрос? Регулярно же возникает у людей.
    Ответ написан
    5 комментариев
  • В чем смысл ВУЗа?

    @odox
    Сам перешел на 3 курс, в семье есть ктн. Чего-то вроде бы должен понимать.
    "Зачем программистам учить русский, обж, шрифты в Ворде?"
    Не зачем, а почему. Есть программа от министерства образования(ну точнее набор требований). Там указано всякое вроде Этикета и Философии. Так же в институте исторически есть эти кафедры, которые даже при полном отсутствии смысла будут доказывать острую необходимость читать психологию айтишникам, ибо иначе сокращения, а профильные кафедры просто забьют ибо психолог будет кричать громче и убедительнее. Те же кто будут принимать решения не заинтересованы в вашем образовании, вам же тогда не продать доп курсы и прочую ересь, а узнают о действительном качестве образования единицы т.к. родители ваши не понимают в этой сфере(в большинстве своем), а соответственно схавают любой связный текст со дня открытых дверей, а когда уже поймете - будет поздно. Плюс человек имеет такое свойство, если он потратил кучу ресурсов на что-то и это что-то оказалось фуфлом он будет склонен находить в этом фуфле кучу плюсов и затаскивать туда остальных и тем больше плюсов, чем фуфловее фуфло. Так же есть(как бы это не было неприятно) куча "еврейских мам"(пап), которые предыдущий факт совмещают еще с тем, что он не получил вышку/хотел стать кем-то и будет пихать это в ребенка.
    "Почему все профили по программированию противоестественно смешивают с математикой?"
    Потому что исторически программист - это инженер/математик, который построил математическую модель, засунул ее в компьютер с 256 командами. Тогда это было что-то вроде дополнения к основной работе(по крайней мере ВУЗ это представлял себе так). Все изменения после 90го года если и как-то преподы за уши втянули в требования программ, то основа все равно старая.
    "Зачем нужен преподаватель, читающий лекции по книге, когда есть книга?"
    Опять же не зачем, а почему. В старой системе не было даже книг на каждого человека в библиотеке. Сегодня же никто даже не собирается обновлять программы, придумывать чего-то новое. Максимум, что сделали - все тоже самое, только по скайпу.
    "Тогда в чём смысл ВУЗа?"
    в вузе вас приучают к современной действительности, где необходимо 11 лет + 4 года + 2 года(опционально) заниматься не ясно чем не ясно ради чего. Чтобы выбить из человека все желания и заставить делать, что говорят. Знания же вы и так получите, работа же вам нужна.
    "И почему требуется его корочка чтобы устроиться на работу?"
    Спокойно работаю с середины первого курса(требование только быть на митингах 2 раза в неделю, дни плавают поэтому спокойно прогуливаю, в итоге выходит немного плюс у старших курсов можно узнать отношение преподов к прогулам) Коллеги есть как с образованием так и без. Требования по образованию есть только если заказчик не из наших и не понимает как это ВУЗ может быть бесполезным. Это уже вы сами себе внушили, что вам нужна бумажка.
    Ответ написан
    Комментировать
  • Как вы выбираете из множества решений то, которое в итоге реализуете?

    @immaculate
    Программист-путешественник
    Это вряд ли возможно формализовать. Один из подходов: KISS — keep it simple. Выбираю самое простое решение, потому что, пока оно дойдет до production, требования 10 раз поменяются (и еще 10 раз поменяются уже после внедрения), а простое решение и проще реализовать и проще переделать. Но это только одна из эвристик.

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

    Иногда по мере того, как делаешь задачу, понимаешь, что ее можно сделать совсем иначе, при этом получится проще и эффективнее. Ничего страшного нет: с самого начала продумать идеальное решение не может никто.

    В жизни нет готовых рецептов на все случаи. Жизнь вообще не поддается формализации.
    Ответ написан
    5 комментариев
  • В чем смысл ВУЗа?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    7102012232216iwsmt.jpeg
    Смысл ВУЗа в получении корочки, расширяющей возможности по трудоустройству. Впрочем, с каждым годом всё меньше и меньше компаний её требуют.
    Ответ написан
    1 комментарий
  • В чем смысл ВУЗа?

    @Anthony7
    Лохотрон это, просто попробуй связаться с работодателями с интересной для тебя вакансией, скажи что знаешь все что они хотят, но диплома у тебя нет. Если согласятся, забивай на ВУЗ. В наших вузах из полезного только столовая и телки. Я лично отучился и толку никакого, последние пару лет тролил преподов, что они тупее большинства студентов (мой ВУЗ сейчас в середине рейтинга лучших универов по стране). Они растягивают любую программу и добавляют туда воды, чтобы ты подольше платил)
    Ответ написан
    3 комментария
  • Как загрузить БД MySQL, если выдает такую ошибку?

    martin74ua
    @martin74ua Куратор тега MySQL
    Linux administrator
    дамп не полный. Либо вы что то недоговариваете.
    Сначала создается таблица CREATE TABLE, потом в нее данные укладываются INSERT INTO
    Ответ написан
    Комментировать
  • Как ускорить запрос Postgresql?

    Melkij
    @Melkij
    PostgreSQL DBA
    Нужен explain (analyze,buffers), сильно желательно с track_io_timing = on в конфиге.

    параметр work_mem на данный запрос не может оказывать почти никакого влияния

    Оказывает. Если планировщик решит, что work_mem не хватает - не будет hash join. Для сортировки 27кб, очевидно, без разницы.

    Впрочем, зачем вам вообще join подзапроса где одна только группировка подзапроса занимает половину времени ответа? Вам простой exists нужен.
    SELECT "t1".* FROM table_1 as t1
    where exists (select 1 from table_2 as t2 WHERE t1.primarykey=t2.session)
    ORDER BY "starttime" DESC LIMIT 20;

    А дальше know your data. Если по starttime DESC быстро находятся нужные exists - будет хорошо. Если exists мало - стоит подумать, а не денормализовать ли этот признак в table_1 с триггером для консистентности в table_2 и частичным индексом по starttime where t2_exists.

    Поля session и primarykey в формате uuid

    Не очень хорошая идея. Оно и сильно медленнее при сравнении относительно bigint (особенно если речь о varchar, а не uuid типе данных) и из-за случайного распределения несколько сбивает с толку статистику планировщика.
    Ответ написан
    1 комментарий