• Что почитать об архитектуре приложений и фреймворков на php?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В целом сразу вас расстрою, то что вы хотите нельзя "разобрать" за пару месяцев. На это уйдет пару тройку лет. И книги которые стоит по этой теме прочитать имеет смысл перечитывать. Ну и практика практика практика.

    Так же хочу заметить что "архитектура" это не что-то эдакое, а общее понимание команды разработчиков о том как функционирует приложение. Если этого общего понимания нет - у вас нет архитектуры. У многих разработчиков понимание пропадает уже через пару месяце стихийной разработки. Так что помимо архитектуры важно еще и процессы/методологии разработки подтянуть.

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

    но совершенно не имею представления о правильной архитектуре приложений на php


    "Правильно" не бывает, все зависит от задачи. "Правильная" архитектура является:

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

    Вот и все. Далее уже есть принципы SOLID (читать Роберта Мартина), GRASP (Крэйг Ларман), GoF (лучше тут почитать head first design patterns или даже начать с Мэта Зандстры, у него помимо паттернов еще про процессы мельком рассказано).

    Ну и смысла в этом всем нет если вы еще до конца не осознали что есть инкапсуляция и полиморфизм. Многие могут рассказать что значат эти термины, но на практике эти знания они не могут применить (чаще всего страдает инкапсуляция)

    или написании чего-то своего с нуля на чистом php


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

    идеально было бы вообще подробно расписанное сравнение внутреннего устройства нескольких фреймворков


    Берете Symfony или Zend и вперед. Все остальные фреймворки "проще". То есть скрывают больше от разработчика. После них уже можно брать что угодно.

    p.s. еще прочитайте тут: www.phptherightway.com
    Ответ написан
    12 комментариев
  • Какую книжку почитать по Mysql?

    magalex
    @magalex
    Архитектор распределённых систем управления
    Мне в своё время очень сильно помогла книга "Программирование баз данных SQL. Типичные ошибки ...
    В этой книге описаны различные часто-используемые паттерны: представление деревьев, EAV, полиморфные ассоциации и другие. Помимо этого представлено много советов и решений различных задач.
    Книга рассчитана на средний и выше среднего уровень владения SQL и проектирования ПО.
    Ответ написан
    1 комментарий
  • Laravel на linux. Найдутся ли менторы кто просвятит в нюансы установки?

    Denormalization
    @Denormalization
    У вас пробелы в самых азах.
    Начните с изучения:
    - Что такое Linux
    - Как запускать программы в linux
    - Где изучить английский за Х дней.
    - Что такое командная строка
    - Что такое php
    - Что такое composer

    Даже нет смысла давать ответ на ваш вопрос. Вы через 30 мин придете с новым: "У меня не работает ХХХХ"
    Ответ написан
    4 комментария
  • Какие есть методики отладки веб-приложения?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Правильное решение в данном случае: поднять на новом сервере какой нибудь vagrant / docker с окружением максимально идентичным исходному.
    В остальные решения от лукавого, полноценный дебаг приложения со сложной логикой это гарантированные человеко-месяцы.
    Ответ написан
    Комментировать
  • С чего начинается CI?

    akubintsev
    @akubintsev
    Опытный backend разработчик
    CI - это автоматизированная сборка проекта на основе версионного контроля и прогон тестов.

    Собственно, начинать надо с задачи реализации деплоя.
    Деплой сделать - задача нетривиальная. Есть для этого разные инструменты и универсального решения нет. Отладить процедуру деплоя нужно для сборок в CI и для продакшена/стейджа.
    Лично я для своего последнего маленького проекта для выкладки в продакшн выбрал deploybot.com - в принципе всё, что нужно есть, в том числе и хорошая интеграция с DigitalOcean.

    Что касается инструмента для CI, то из бесплатных обычно пользуются Jenkins. Я пробовал в последнем проекте PHP CI - тоже годно, но не настолько гибкий инструмент.

    Выкладку на продакшн/стейдж можно настроить по-разному. Например по коммиту в специальную ветку, по ключевым словам в коммите или вообще вручную. На прод однозначно стоит делать выкладку вручную.

    А, еще один немаловажный момент. Для успешного функционирования этого всего дела нужно внедрить версионирование схемы БД и фикстуры (для CI).

    Жизненный цикл у нас был такой. Тимлид определяет некий не большой, но и не очень маленький набор фич, которые должны попасть в новую версию приложения. Все тикеты связаны с версиями. И поэтому может случится так, что даже готовую фичу он определит в другую версию продукта.
    Каждая готовящаяся к релизу версия получает свою ветку в git и там делается мердж нужных коммитов с фичами. Каждый коммит автоматически тестируется в CI.
    Когда все фичи сделаны и коммиты слиты, то можно залить на стейдж сервер и погонять вживую версию в условиях близких к боевым. И наконец, если всё хорошо, то делается деплой на продакшн.
    Ответ написан
    Комментировать
  • Какой хороший мануал для настройки VDS ubuntu под веб-хостинг?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    https://www.digitalocean.com/community/tutorials/i...

    и ссылки с него и со ссылок с него
    Ответ написан
    Комментировать
  • Какие есть книги хорошие книги на английском языке по программированию PHP + MySQL?

    27cm
    @27cm
    TODO: Написать статус
    Modern PHP. New Features and Good Practices (2015)
    Трейты, генераторы, замыкания, OPcache, PSR, Capistrano, xdebug, XHProf... от создателя PHP. The Right Way

    The Clean Architecture in PHP (2015)
    Dependency Injection, MVC, Zend Framework, Doctrine, Laravel...

    Scaling PHP Apps (2014)
    LAMP, HAProxy, Redis, Memcached, CakePHP...

    Все книги легко найти на трекере.
    Ответ написан
    1 комментарий
  • Кнопка "Отписаться" в письме, как сделать?

    Machez
    @Machez
    Бу!
    1) Для каждого адреса генерируем токен и пишем его например в таблицу базы данных
    2) В письмо на кнопку Отписаться ставим ссылку вида site.ru/unsubscribe?token=сенерированный_токен
    3) При переходе по ссылке - проверяем наличие токена в таблице и отписываем соотвествующий e-mail
    Ответ написан
    1 комментарий
  • Где можно найти Laravel 1?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Зачем вам подобная мертвячина?))
    Ответ написан
    2 комментария
  • Стоит ли использовать ооп?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    То, что легче без ооп - безусловно, для скрипта на 100 строк, это будет лишним.

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

    То, что Виталий Пухов написал не верно. Легко !== правильно, удобно, человеко-понятно, тестируемо, надежно. Легко как правило писать говно. Фраза "работает же" как правило значит: "да, я понимаю, что оно хреновое, но лучше не могу".

    И писал пару робот на нём сильной разницы в скорости между ооп и не ооп проэктами не замечал.

    Вы не туда смотрите)). Производительность на stateless языке... В общем посмотрите на компилируемые))

    * Про vk вы правильно сказали, но забыли 2 важных нюанса: он писался, когда ООП в php особо не было; у них свой KPHP))
    * Для сравнения у facebook тоже свой php: hhvm, но он очень даже объектный.
    Ответ написан
    1 комментарий
  • С чего начать изучать программирование законченному гуманитарию?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Гумманитарию?
    0. Самым главным навыком ЛЮБОГО программиста это "Уметь читать по-английски". Даже использование гугла не так важно, как чтение на Шекспир-Language.
    1. Прочесть самой первой первой книгу, но не про программирование, а про компьютеры. Лучше Эндрю Таненбаума об этом никто не напишет. Читай, читай, читай и пока не вкуришь лучше за программирование не садиться. У любого программиста зашит в коже ответ на вопрос "Какие задачи можно решить с помощью компьютера, а какие невозможно?". Чтобы этот ответ был понятен нужно знать о том как работает вычислительная система в принципе, хотя бы на "сумбурно"
    2. Затем берите книгу по Python. Язык достаточно дружелюбен к новичкам и быстрый старт обеспечен. Решайте свои задачи, не заботясь о качестве. Просто решайте!
    3. После получения конкретного опыта решения задач. Читайте Стива МакКонела про его Совершенный код.
    4. Снова решайте задачи, но уже пытайтесь не только свои, но и вливаться в проекты с открытым исходным кодом
    5. Далее про модульное тестирование, рефакторинг и др.
    6. Только после того как в принципе будет понятно, что такое разработка нужно углубляться в дебри. В дебри под названием : алгоритмы и структуры данных. Изучать про сложности.

    P.S.:
    Не слушайте "умников" про алгоритмы сразу. Почему? Потому что пока у Вас не загорятся глаза "Да, черт побери! Это точно мое" не имеет смысла зарываться. Только когда прет и горят глаза, только в таком состоянии можно одолеть груду сложных и запутанных кодов.

    #define true false // счастливой ночи брат
    Ответ написан
    6 комментариев
  • Какие будут советы начинающему YII программисту?

    0) Обязательно прочитайте www.yiiframework.com/doc-2.0/guide-index.html. Без нее даже не думайте, что вы поймет изучите. Важно все, особенно Структура приложения, работа с БД, виджеты.
    1) Поймите, что такое MVC.
    2) Начинайте с изучения basic-версии, в расширенную не лезте
    3) Без знания composer будет трудно. Прочитайте для чего он, его основные команды
    4) Почитайте вот этого парня www.elisdn.ru/blog/programming
    5) Следите за новостями yii в дайджесте php на хабре
    6) Вот тут много плагинов и моделей, покопайтесь в коде demos.krajee.com/widgets
    7) Пользуйтесь Gii, врубитесь, что он генерирует, научитесь это делать сами, забудьте Gii.
    Ответ написан
    Комментировать
  • Где найти хорошее видео про mvc и ооп?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Где найти хорошее видео про mvc и ооп


    - Лекции по основам ООП: https://www.youtube.com/watch?v=-gGLSxmw3jo - где-то до до 50-ой минуты стоит смотреть. можно чуть перематывать.
    - если у вас хорошо с инглишом то рекомендую вот эти две видяшки:
    - Don't be stupid, grasp, solid
    - Models & Service Layers; Hemoglobin & Hobgoblins (к вопросу о полезности MVC, в прочем там по коду можно догодаться о чем речь)
    - хорошие лекции о GRASP и о шаблонах проектирования - https://www.youtube.com/watch?v=S-RjiMAxHio&list=P...

    ссылки чуть перемешаны и рекомендую не сильно задерживаться на теме GoF-ских паттернов, они поначалу могут ввести в ступор, SOLID-а и GRASP-а для начала хватит слихвой.

    Так же рекомендую ознакомиться с ADR. Там же достаточно инфы о MVC в контексте бэкэнда и т.д.
    Ответ написан
    Комментировать
  • Является ли empty оператором в PHP как isset?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Одна из самых сложных функций РНР.
    Понять, что она просто совмещает в себе isset и сравнение с нулем, удается далеко не каждому.
    Ответ написан
    1 комментарий
  • Вы работаете со своими проектами на локалке или удаленно?

    svfat
    @svfat
    ☺Нужен VPS? Два месяца бесплатно. Смотри профиль☺
    Послушайте, разработка под Windows - это боль. Нормальной консоли нет, а рано или поздно она понадобится, существующие решения довольно костыльные. Бросайте эту затею и переходите на другой уровень. Рекомендую скорее переходить на линукс, поставьте второй системой дома ubuntu или mint (они практически идентичны), вам это пригодится. На ней тренируетесь элементарно настроить стек LAMP или LEMP. Если вообще с консолью не дружите, то придется тяжеловато, но с минимальными навыками разберетесь быстро.

    Дальше заводите аккаунт на bitbucket.com - там можно бесплатно хранить git-репозитории, в том числе приватные. Играетесь с git. Теперь ваш код всегда можно перенести на любую машину, хоть в Denwer на ноутбуке, хоть на production, был бы интернет.

    В принципе этого уже достаточно для продуктивной работы, для дальнейшего развития поиграйтесь с vagrant - это такая штука для виртуализации. Можно создать кучу машин с разным набором софта, для отладки хоть черта лысого.

    Дальше можно завести VPSку за $5 в месяц. По моей реферральной ссылке получите $10, на пару месяцев тестирования хватит. Рекомендую устроить на ней что-то типа хостинга. Легко будет админить, можете какие-то свои проекты запускать, и сразу результат показывать клиенту.
    Ответ написан
    Комментировать