• В каком конфиге Symfony храниться настройки Doctrine?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    app/config/config.yml - там есть отдельная секция. Для этого вы можете просто отключить автоматический мэппинг и вручную прописать что где хранится (подробнее в документации). Но лучше просто держать мэппинги там где им место.
    Ответ написан
    Комментировать
  • Существует ли соглашение о наименовании бандлов в Symfony?

    @want2know
    Полностью согласен с Сергей Протько. Больше склоняюсь к именованию в единственном числе. Вот интересный ответ по поводу singular/plural names for packages.
    Ответ написан
    2 комментария
  • Существует ли соглашение о наименовании бандлов в Symfony?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Именуйте их так, что бы вам или другому человеку было понятно что это и зачем. А еще лучше - старайтесь обходиться AppBundle-ом и выносите в бандлы только то, что можно реюзать.
    Ответ написан
    2 комментария
  • Заработок в интернете помимо кодинга?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    1. Сидеть дальше
    2. Перейти на заочку и идти работать
    3. бросить учёбу и идти работать
    4. Не выделываться, выучиться, заработать денег и отправить родителей на пару недель на море - как компенсацию :)
    5. Начать играть на бирже
    6. НЕ начинать играть на бирже
    7. После учёбы мыть полы
    8. После учёбы грузить вагоны
    9. ...
    10. ...
    Ответ написан
    Комментировать
  • С чего начать изучение написания TDD - тестов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    нужно писать TDD тесты.

    Нет, нет такой вещи как "TDD тесты". TDD это одна из методик экстремального программирования (XP). Вам уже привели ссылку на книгу Кента Бэка на эту тему (к слову крайне рекомендую)

    Суть этой методологии в том, что бы разбить работу над кодом на три этапа, которые называются циклом красный-зеленый-рефакторинг.

    - Красный - перед тем как написать код, мы должны написать тест который ломается (обычно в консоли сломанные тесты подсвечиваются красным). Согласно этой методологии писать код вы должны строго тогда, когда у вас есть сломанные тесты. Если сломанных тестов нет, то и код писать не нужно.
    - Зеленый - когда вы получили красные тесты, вы должны максимально быстро дописать код так. что бы тесты были зелеными. Скажем если вы написали тест который ожидает от функции, что она вернет строку "foo" то в коде у вас должно быть не больше чем сама функция и вывод строки "foo". Как только мы этого добились мы либо рефакторим, либо добавляем еще красных тестов что бы потом дописать код. Конечно настолько примитивные вещи делать по такому циклу избыточно, и у Кента Бэка описывается понятие "длины шага", то есть сколько работы мы можем делать на каждом этапе. Вы всегда должны подключать здравый смысл словом.
    - Рефакторинг - на предыдущих фазах мы не загонялись о том насколько наш код красив, насколько мы соблюдали принципы DRY и т.д. так что это фаза отчистки кода. Мы можем делать ее на каждой итерации, а можем раз в пару часов, но важно делать это как можно чаще. На этом этапе мы устраняем дублирование как в коде приложения так и в тестах. Важно отметить что хорошей мыслью будет не рефакторить одновременно и код и тесты, ибо у нас должен быть источник правды. Если мы почистили тесты и при этом они начали фэйлиться, то значит мы что-то сломали пока числити. И наоборот. А если менять и то и то между запусками тестов то не понятно кто виноват.

    Обычно TDD практикуют используя unit-тесты (что логично, ибо они выполняются достаточно быстро что бы выполнение тестов не заставляло нас заваривать чай), что подразумевает собой то, что мы тестируем один юнит (один класс или объект), а все его зависимости должны подменяться на моки (фэйковые объекты, которые нужны что бы проверить как наш объект взаимодействует с другими, об этом тоже много написано). Но никто не запрещает использовать интеграционные/функциональные тесты и при этом практиковать TDD (так например делают чуваки практикующие BDD), а Кент Бэк это дело называет ATDD.

    Собственно TDD дает нам следующие преимущества:
    - вы не тратите время на проектирование системы в микроскопических масштабах, это эволюционный подход, архитектура приложения постоянно меняется и эволюционирует вместе с требованиями. Все требования формализуются в виде тестов.
    - код всегда покрыт тестами (пусть и не на 100%, обычно хватает и 20% что бы можно было жить, все зависит от сроков жизни проекта и требуемого уровня надежности)
    - если вам становится трудно писать тесты (например много зависимостей, сложно мокать) - то это должно навести вас на мысль о не правильной архитектуре и инициировать более глубокий рефакторинг. А при наличии тестов это не так уж и страшно.
    - необходимость покрывать тесты увеличивает потребность в соблюдении всяких принципов типа SOLID и т.д. так как иначе мы начинаем писать тесты очень не эффективно и опять же возвращаемся к тому что с архитектурой что-то не так.

    updated

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

    Минусы TDD проистекают из плюсов. Это эволюционный подход, который хорошо работает когда мы вносим изменения в систему маленькими порциями и всегда рефакторим наш код, что бы он большую часть времени был красивым и удобным к расширению. Если же вам в руки дали легаси проект и сказали отрефакторить, то TDD тут не подходит или подходит плохо. Но опять же такая задача ставится довольно редко, чаще - добавление функционала. И в этом случае мы возвращаемся к внесению изменений маленькими порциями и эволюционному подходу. Просто на это уйдет довольно много времени, но если сравнивать с "рефакторинг + добавление функционала + регрессионное тестирование" то в зависимости от ситуации TDD может дать как профит так и нет. Все зависит от сложности системы. На простых системах в этом нет смысла.

    По поводу области применения... Тут есть несколько точек зрения. Как минимум TDD решает вопрос проектирования архитектуры, а не разработки алгоритмов. Этого мы достигаем тестами. Но опять же через юнит тестирование довольно не удобно разрабатывать определенные типы проектов: комиляторы, трансляторы, различные решения основанные на сложных алгоритмах (например алгоритмы сжатия, шифрования и т.д.), штуки завязанные на сетевом взаимодействии, например клиенты для протоколов. Для этих вещей больше подходят функциональные тесты или же их вовсе сложно покрыть тестами.
    Ответ написан
    5 комментариев
  • Как правильно синхронизироваться с проектом, который находится на удаленном сервере?

    @ChernovGV
    Ну думаю все же стоит поставить какую то систему контроля версий. Странно как такой проект без нее обходится в принципе)
    Ответ написан
    1 комментарий
  • Почему замедляется работа скрипта?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    Скорость вставки в базу можно проверить отдельно, посмотрев SHOW PROCESSLIST;

    Однако исходя из описания у вас проблема не со вставкой в базу, а с тем что бы обработать большой XML файл. jaxel правильно подсказывает что загружать весь XML в память плохая практика, но, скорее всего вы так и делаете.

    Армянское Радио правильно указывает на то что нужно пользоваться средствами мониторинга и профилирования. Попробуйте поставить и освоить xhprof, это будет вам очень полезно с точки зрения общего понимания что и как работает и сможете ответить на вопрос точно - где тратиться больше всего времени, без догадок и домыслов.

    Гуглите на тему "поточный парсинг xml", с его помощью сможете парсить практически без ограничений и с минимальным потреблением ресурсов, в рамках возможного в PHP, конечно же.

    Для сравнения кейс парсинга каталога книг с ozon.ru на Golang:
    - 3.9 гигабайт файл xml
    - 2.3 миллиона книг (у каждой книги название, авторы, описание, ссылка на обложку, перечень языков, стоимость книги, перечень категорий и отдельно список всех категорий к книгам)
    - 10 минут поточного парсинга с сохранением в базу
    - без предварительного сохранения на диск
    - с автодокачкой при сетевых разрывах
    Ответ написан
    1 комментарий
  • Почему замедляется работа скрипта?

    jumper423
    @jumper423
    web-developer
    Как мне кажется ты делаешь это с помощью отдельных INSERT-ов, если это так, то надо это оптимизировать. Для этого составляй разовые INSERT-ы с добавлением к примеру за раз тысячи записей.
    Ответ написан
    2 комментария
  • Почему замедляется работа скрипта?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    оптимизировать работу с базой. Я на 99% уверен что:
    - товары вставляются по одному
    - перед каждой вставкой вы проверяете наличие категорий и прочего через базу, причем индексов в базе у вас нет или mysql (вы же mysql используете?) у вас настроена дефолтным образом и выходит много чтений с диска

    Хотя даже при таком раскладе 20 часов для 16К элементов это как-то сильно долго...
    Ответ написан
    5 комментариев
  • Как подключиться к серверу по локальной сети?

    Если хосты настроены по именам (а не по IP), и IP-адрес нетбука более-менее постоянный, то открываете /etc/hosts на той машине, откуда надо заходить и вбиваете туда сопоставления айпишника нетбука и ваших хостов. Не забудьте только удалить потом, когда перестанет быть нужно. Некоторые антивирусы будут ругаться - ничего не поделаешь.
    Ответ написан
    1 комментарий
  • Как подключиться к серверу по локальной сети?

    @Yestestvenno
    Системный администратор
    для доступа используйте ІР неккбука
    вот вам пример настройки хостов
    Ответ написан
    1 комментарий
  • Как подключиться к серверу по локальной сети?

    Extor
    @Extor
    sysadmin
    Подключиться можно по протоколу SSH.

    Для этого надо знать IP нетбука, который в свою очередь можно посмотреть командой "ip a". Пример:
    ip a
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether d8:54:e6:54:20:c0 brd ff:ff:ff:ff:ff:ff
        inet 10.73.128.18/24 brd 10.73.128.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::da50:e6ff:fe54:18c0/64 scope link 
           valid_lft forever preferred_lft forever


    Если подключаться с windows, то можно использовать putty.
    Если с Linux, то достаточно в терминале:
    ssh user_netbook@ip_netbook
    Ответ написан
    Комментировать