• Что почитать об архитектуре приложений и фреймворков на 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 комментариев
  • Почему LIMIT так сильно влияет на скорость?

    alsopub
    @alsopub
    Если вы их выполняли именно в этой последовательности, то ничего странного нет.
    В первом случае была перелопачена база, отобраны 20 записей, а во втором случае - все уже лежало в кеше.
    Ответ написан
    Комментировать
  • Статика или функции?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Глобальное состояние - это плохо. Но вот только вещи типа валидации, обрезки картинок и т.д. не имеют состояния. У вас один вход и один выход.

    Потому функций для этого достаточно.

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

    Ну и ооочень редко нужно хранить статическое состояние. Например сингелтоны полезны когда вам нужно работать с ком портом и вам смертельно важно что бы небыло ни единой возможности создать два экземпляра класса для работы с оным.
    Ответ написан
    Комментировать
  • Как отлаживать javascript без console.log?

    inblank
    @inblank
    Full Stack Web Developer
    devtools в Chrome. Ctrl-Shift-I
    Вкладка Sources. Можно комфортно дебажить: брейкпоинты, watcher, стек и т.д.
    Ответ написан
    Комментировать
  • Что делать дальше после изучения основ javaScript + jquery?

    @Itvanya
    Андрей Рысь во-первых, забыть о том, что такое jQuery, потому что он бесполезен и убивает в вас перспективу реального разработчика и программиста. Во-вторых, учить паттерны проектирования на примерах реальных(своих) небольших проектах и использовать только чистый JavaScript. В-третьих, учить алгоритмы(да-да), потому что фронт-энд инженеры сегодня пишут не только визитки на бутстрапе, но и игры в 2-Д, 3-Д, которые потом портируют на другие платформы. Дальше - проще : html-фреймворки, css-фрейворки, gulp, ES2015, lodash, node немного лишь для того, чтобы дальше потянуть react/angular. Если последние два фреймворка не даются, то повторить с шага номер 1.
    Ответ написан
    10 комментариев
  • На чём лучше вести локальную разработку?

    boramod
    @boramod
    Упрощенно.

    Вагрант — система управлением конфигурацией конкретной машины.
    Докер — запуск изолированных процессов на машине.

    Докер.
    Это не виртуальная машина, а запуск изолированных процессов. Т.е., запущенный процесс думает, что он один единственный, и ничего вокруг нет. Это работает на уровне ядра Linux. Без использования виртуальных машин.

    В терминологии Докера есть Images и Containers.
    Image — образ, шаблон, на основе которого запускается Container.
    Image строится на основе какого-либо базового образа ОС.

    Container — сервис, запущенный и построенный на базе Image.

    Таким образом, вы можете построить несколько образов, например, образ для Nginx, образ для PHP, образ для MySQL. Вдобавок, вы можете построить несколько образо, для каждой желаемой версии PHP, MySQL и т.п.

    Каждый из этих образов будет иметь у себя в базе какую-либо ОС. Т.е., происходит изолирование окружения, на котором работает Docker.
    На базе построенных образов вы можете запускать Containers, т.е., непосредственно строить рабочее окружение. Каждый запущенный контейнер думает, что он запущен один, в образе наследуемой ОС. Но на самом деле, это всего лишь отдельный процесс, работающий на уровне ядра Linux, без виртуализации. Т.е., у вас нет накладных расходов на виртуальные машины. Изолирование контейнеров выполняется на уровне ядра.

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

    Оба инструмента хороши. Но у каждого свое назначение.

    Vagrant — великолепный инструмент для конфигурации удаленных машин с нуля, VDS/VPS и т.п.
    Docker — великолепный инструмент для быстрого развертывания/переконфигурации рабочего окружения, практически без изменения системы, на которую он устанавливается.
    Ответ написан
    6 комментариев
  • Как сделать кнопку — добавить на домашний экран/в закладки (мобильник/десктоп)?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Это два абсолютно разных вопроса.
    1. Про десктоп - это где-то так:
    function bookmark(a) {
      title=document.title;
      url=document.location;
        try { 
         window.sidebar.addPanel(title, url, "");
        } catch (e) {
          if (window.opera && window.print || typeof(window.sidebar)=="object") {  // Opera || Mozilla
            a.rel="sidebar";
            a.title=title;
            a.url=url;
            a.href=url;
            return true;
          } else if(document.all) {  //  Internet Explorer
              window.external.AddFavorite(url, title);
              return true;
          }  else {
             alert('Нажмите Ctrl+D (Cmd+D на MacOS), чтобы добавить страницу в Избранное');
          }
       }
    }

    2. Про добавить на главный экран для Android: тут
    Пример приложения: тут
    Ответ написан
    2 комментария
  • Где искать красивые шаблоны интернет-магазинов?

    sevasargsyan
    @sevasargsyan
    Веб разработчик
    Когда то собрал эти ссылки может помогут
    PSD HTML CMS Шаблоны www.enfusionthemes.com www.mafiashare.net
    HTML PSD PHOTOSHOP followdesign.com
    Zoom эффект\галерея www.starplugins.com
    Шаблоны chocotemplates.com css-free-templates.com
    Флешь шаблоны www.flashmo.com
    Шаблоны бесплатно www.websitetemplatesonline.com
    Templatemonster blog.templatemonster.com/free-website-templates
    PSD шаблоны all-psd.ru
    Полезные разработки efimov.ws followdesign.com
    Фото для фона patterns.ava7.com
    Различные меню\всп окно\ и т.д. webscript.my1.ru
    Ответ написан
    2 комментария
  • Что делать когда из команды уходит team lead?

    kumaxim
    @kumaxim
    Web-программист
    Ответ очевиден - нанять нового тим.лида, т.к. незаменимых людей нет, есть взаимозаменяемые.

    Скорей всего, будет просадка по срокам и качеству исполнения задач в районе 3-6 месяцев, в зависимости от текущего объема кодовой базы.

    Также нужно зайти немного с другой стороны. Задайте себе вопрос: "А почему все тащил именно тим.лид"? У него подчиненных сеньоров/мидлов нет или компания кого-то сильнее джуна нанять из-за финансовых ограничений не может? Главная задача тим.лида - координировать работу команды, а не писать код/решать задачи. Разумеется нужно помогать людям, если они где-то застряли. Разумеется нужно направить подчиненного, если он не знает в каком направлении двинаться. Однако, писать код/решать задачи должны именно подчиненные тим.лида, а не он сам. Тогда после ухода лидера из команды она по инерции движется еще в течении 2-3 месяцев без всякого внешнего управления, а этого времени хватит для того чтобы нанять другого человека и дать ему возможность разобраться в текущих делах компании.
    Ответ написан
    1 комментарий
  • Что делать когда из команды уходит team lead?

    @kazmiruk
    "в принципе тащил всё на своих плечах" - а зачем тогда на работе числились Вы?
    При таких исходных данных пытайтесь разобраться в том что есть как можно детальней. Ковыряйте самый непонятный код, узнавайте как и почему. Что тут еще можно сказать. Никакого чудо-совета Вам тут не дадут.
    Ответ написан
    1 комментарий
  • Как правильно сделать идеальную структуру less или scss файлов в случае больших адаптивных проектов?

    eruditecat
    @eruditecat
    Красноглазик
    Методология БЭМ придётся Вам по вкусу. Но, я так понимаю, в Вашем текущем проекте — уже поздно. Тем не менее, на текущем этапе разработки Вам будет полезно использовать эти принципы. Изучите вопрос. А Ваша проблема решается так:

    @mobile: (max-width: 460px);
    @tablet:  (min-width: 461px) and (max-width: 970px);
    @desktop: (min-width: 971px);
    
    // Значения придуманы от балды
    
    .selector {
      @media @mobile {
        // ...
      }
      @media @tablet {
        // ...
      }
      @media @desktop {
        // ...
      }
    }


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

    Тем временем, где-то в идеальном мире:

    /* Файл /bem/block/block.less */
    .block {
      @media @mobile {
        // ...
      }
      @media @tablet {
        // ...
      }
      @media @desktop {
        // ...
      }
    }
    
    /* Файл /bem/block/__element/block__element.less */
    .block {
      &__element {
        @media @mobile {
          // ...
        }
        @media @tablet {
          // ...
        }
        @media @desktop {
          // ...
        }
      }
    }
    Ответ написан
    Комментировать
  • Как сделать ступеньки?

    axaxa_man
    @axaxa_man
    web developer
    А может как-то так попробовать?
    codepen.io/axaxaman/pen/JXwqgz
    Ответ написан
    Комментировать
  • Где можно следить за тенденциями в веб?

    Machinez
    @Machinez
    читайте еженедельные дайджесты по веб-разработке на хабре - очень полезно
    https://habrahabr.ru/company/zfort/blog/282325/
    Ответ написан
    Комментировать
  • Есть ли учебный материал по паттернам на основе пошагового создания веб-приложения?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Бросайте паттерны. На вашем этапе обучения они пока не нужны. Изучайте принципы (SOLID, GRASP). Учитесь писать тесты, пробуйте TDD/ATDD. И тогда паттерны будут образовываться сами собой.

    Паттерны придумали не для того что бы ими проектировать, они нужны что бы называть ваши решения. Это просто словарь терминов что бы меньше времени приходилось тратить объясняя то или иное техническое решение. Но сначала код а потом паттерны, а не наоборот.
    Ответ написан
    106 комментариев
  • Как сверстать новостную ленту?

    Kublyakov
    @Kublyakov
    Это называется masonry сетка. Погуглите, есть разные реализации, выберите себе по душе. Есть и на чистом css, но не во всех браузерах работать будет.
    Ответ написан
    Комментировать
  • Какие еще есть блогеры вроде Sorax?

    @gram2005
    Надеюсь это не развод, но появился новый канал Sorax • Уроки WEB разработки куда сейчас заливают все видео с оригинального канала Sorax. Позадавал вопросов - получил ответы что команда проекта увеличилась до 3 человек, новые видео будут выкладывать каждое воскресение, новые подкасты - каждое второе воскресение.
    Ответ написан
    4 комментария
  • Как сделать угол на CSS с прозрачным бэкграундом?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    1) Самый простой и элегантный - css clip-path: polygon. Сделано за 2 минуты - codepen.io/suez/pen/2a2b9d90bd00d671181906de5311bc8d
    Из очевидных минусов - ограниченная поддержка браузерами. Но если вам пофиг на древнее инвалидное говно, то юзайте не раздумывая.
    2) Svg clipPath. По сути дела это более геморройная версия первого варианта с некоторыми недостатками (например нельзя юзать %), но зато браузерная поддержка намного шире + можно юзать для каких угодно форм, ибо в основе лежит svg path.
    3) Стандартные хаки с помощью :before/:after. Например создаете блок, который сверху имеет прямые углы. Затем :before элемент делаете треугольником слева (ксс трегольники легко гуглятся и даже есть сайт генератор - apps.eky.hk/css-triangle-generator ). А :after блоком справа с закругленным верхним правым углом.
    4) Что-нибудь еще.
    Ответ написан
    4 комментария
  • Как правильно интегрировать верстку?

    littleguga
    @littleguga
    Не стыдно не знать, а стыдно не интересоваться.
    Плюсую Дмитрий и Алексей Николаев, а также добавлю несколько моментов:

    1. Сразу верстать в нужной cms = "натягивать"/интегрировать на/в CMS. А это стоит дополнительных денег.
    2. Заказчик может захотеть что-то поменять, а когда у вас только верстка, без натяжки, это сделать в разы проще.
    3. Опять таки jade/scss и прочие ништяки удобнее использовать просто верстая, а потом уже сгенерировать валидный код и копипастить его в CMS.
    Ответ написан
    Комментировать
  • Как правильно интегрировать верстку?

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

    P.S. К тому же, если использовать jade \ slim при разработке, второй способ может стать серьезным препятствием.
    Ответ написан
    Комментировать