Задать вопрос
  • Перенос на новую строку в PHP?

    Ответ написан
    Комментировать
  • Как сделать форму регистрации?

    shmatuan
    @shmatuan
    8 year of Web, 5 years of Vue
    https://learn.javascript.ru/events-change

    <input type="text" id="login"> 
    <script>
      var input = document.getElementById("login")
      var data = {
        "login":"",
        "password":""
      }
      input.oninput = function() {
        data.login = input.value;
      };
    </script>
    Ответ написан
    1 комментарий
  • Как сделать, что бы повторное нажатие не срабатывало пока анимация не будет завершена?

    @glagolew059
    frontend developer
    $( ".menu-btn, .menu-box-btn" ).click(function() {
        var thiss = this;
        if(!$(thiss).hasClass('wait')) {
            $( ".menu" ).toggleClass("menu-visible");    
            $(thiss).addClass('wait');
            var animationDuration = 2000;
            setTimeout(function(){$(thiss).removeClass('wait')}, animationDuration);
        }
    });
    Ответ написан
    Комментировать
  • Кто читал Мэтт Зандстра PHP: объекты, шаблоны и методики программирования. 4-е издание?

    3е издание не читал. Сразу 4ое прочел. Книжка очень достойная я скажу. Очень много нужного в разработке материала. Говорится о многих современных и нужных технологиях и о том как их использовать в разработке на php. Мне нравятся больше всего глава про шаблоны корпоративных приложений и глава про DDD - как эти штуковины реализованы/используются при разработке php. После прочтения этой книги решил углубиться этими темами и прочел пару книг про шаблоны и ДДД
    Ответ написан
    1 комментарий
  • Возможно ли на статичном сайте организовать платежи с помощью карты?

    prrrrrrr
    @prrrrrrr
    Верстаю сразу на PHP.
    Как сделать что то подобное?

    Виджет PayPal-a (первый скрин) вставляете себе на сайт и всё.
    Ответ написан
    Комментировать
  • Где можно пройти хорошие онлайн курсы по DevOps?

    thiago_alvarez
    @thiago_alvarez
    Student
    Мне кажется девопсом становятся только на практике
    Ответ написан
    Комментировать
  • Где можно пройти хорошие онлайн курсы по DevOps?

    nonname
    @nonname
    Как выше уже сказали профессии такой нет, но есть инженеры, которые используют DevOps практики.
    Я в эту профессию попал из системного администрирования, имея довольно неплохой бэкграунд и последнее время склоняюсь к тому, что это не та профессия, которую нужно начинать с нуля. Сейчас пытаюсь разработать внутренние курсы для для своего работодателя, чтобы привлечь в профессию ops инженеров или разработчиков. Сначала думал что можно дать материал джунам, но в итоге пришёл к выводу, что для начала нужно поработать в разработке\администрировании до уровня мидла, чтобы иметь представление о том как вообще работают системы, как они разрабатываются и эксплуатируются, параллельно можно изучать DevOps инструменты.
    По курсам посоветую только базовые курсы, любые какие вам по душе по темам: Linux, Python, Docker, Kubernetes, Jenkins, Git.
    Ответ написан
    Комментировать
  • Знания Junior php разработчика?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    что должен знать идеальный джуниор (мое личное мнение):

    - Сетевой стэк. Нужно иметь хотя бы базовое представление о том как с сервером общаются. Ну то есть не нужно лезть в дебри, но понимать что такое HTTP или чем TCP от UDP отличается - нужно. В целом это пара часов чтения википедии.
    - GIT или любая другая распределенная VCS. Базовые навыки, что бы хотя бы понимал что есть git revert или git rebase, что такое фичабрэнчи и примерное представление как это работает и зачем надо.
    - Базовые основы unix. Ну то есть что бы не пугаться таких вещей как ssh хотя бы.
    - PHP. Без этого никуда. Он должен понимать что такое слабая динамическая типизация (не заучивать табличку кастов типов, а понимать плюсы и минусы, такая же история с приоритетами операторов - не заучивать а знать как избегать проблем с чтением кода)
    - Понимать что код чаще читают чем пишут, а потому не экономить 5 минут на написании кода, а писать так, чтобы сэкономить 30 минут человеку, разбирающемуся в куске кода.
    - Знать базовые вещи в плане безопасности. XSS и как защищаться, SQL инъекции и как защищаться, CSRF, MITM. Понимать что такое NDA, что данные пользователей - секретная информация. Как хэшировать пароли (не md5 а password_hash) и почему это важно.
    - Знать SQL. Глубоких знаний не требуется, нужно лишь понимание того, что такое нормальная форма, желательно разобраться с вопросом денормализации данных. Идеально иметь хотя бы базовые представления о том как работать с NoSQL решениями.
    - Процедурное программирование: почему глобальные переменные порождают сложность, что такое состояние, как можно использовать классы для изоляции состояния и т.д. Инкапсуляция. Инварианты, пост/пред условия, сохранение целостности...
    - Разделение ответственности. Это один из важнейших принципов, и упрощать все это до "mvc фреймворк" слегка неправильно. Вы должны понимать что от чего отделяете и главное зачем.
    - Автоматические тесты. Джуниор должен знать что это такое и иметь хотя бы минимальный опыт их написания. Должен понимать разницу между юнит и интеграционными тестами. Быть знакомым с пирамидой тестирования.
    - Уметь решать стандартные задачи не задавая слишком много вопросов. Например регистрацию пользователя по email-у вы должны написать, или авторизацию через соц сети, или комментарии, или новостную ленту.
    - Уметь дебажить. xdebug, blackfire и тд.

    В целом где-то за годик весь этот список можно влегкую покрыть с нуля.

    p.s. Я в списке специально не указывал ООП, поскольку всеравно первые пару лет у разработчиков выходит процедурщина на классах. Это не плохо, но того что в моем списке более чем должно хватать для решения стандартных задач. Но термины вроде "инкапсуляция/полиморфизм/наследование" требуются в обязательном порядке подавляющем количеством интервьюверов, а стало быть знать это надо. Единственное что - рекомендую в свободное время глубже погрузиться в этот вопрос а не тупо заучивать формулировки.

    Так же вещи вроде docker джуниорам знать не обязательно просто потому, что их врядли допустят сходу к управлению инфраструктурой. А так пару неделек на изучение и вперед.
    Ответ написан
    12 комментариев
  • Хочу сделать API, с чего начать?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Следует начать с проектирования API. Возмите https://swagger.io/ и набросайте все, что нужно.
    Swagger вам позволяет объединить роутинг, документацию и примеры вызовов в единое целое.
    Кроме этого он позволяет сгенерировать заглушки для разных языков программирования и фреймворков.
    В принципе вы можете найти значительное количество интеграций для разных фреймоворков.

    В целом API лучше делать с помощью фреймворков, поскольку в них уже реализованы тривиальные моменты по безопасности, аутентификации и авторизации. Вы можете использовать микрофреймворки, например тот же Slim. Вы даже можете сгенерировать роутинг для него используя генератор от Swagger.

    В REST есть 6 принципов, прекрасно изложенных в Wiki. В REST нет ничего сложного и особенного. Это просто надстройка над стандартным протоколом HTTP. Именно поэтому нет никаких особенных уроков. Изучите работу HTTP и вы поймете как работает веб в целом и REST в частности.

    По поводу отдельного сервера для API. Есть множество разных подходов. В последнее время все более актуальными становятся Serverless-приложения. Serverless архитектура идеально вписывается в REST. Но думаю для вас это пока рановато и сложновато. Слишком много для начала.

    Логичнее всего держать проект в моно-репозитарии, если он не будет большим. Если вы точно не знаете насколько большим он будет, то можно разбить проект на компоненты и использовать Composer для управления зависимостями (советую полность прочитать эту страницу от корки до корки).

    По поводу best practices есть очень хороший ресурс https://12factor.net/ru/
    Он в целом применяется для всех приложений.

    Запомните: первый блин всегда комом. Прочитайте все ресурсы, которые я привел для вас. В них много ссылок на другие, походите по ним, присмотритесь. Напишите первую версию API так, как вам кажется удобно. Постарайтесь применить практики из статей.
    Вам нужен опыт и вы его не наберетесь, пока не сделаете что-то сами. Вы можете потратить год на чтение, но останетесь на том же месте, с которого начали. А другой человек напишет на коленке API за неделю, а потом перепишет его 20 раз за год и он вам расскажет в 10 раз больше, чем то, что вы изучили за год.
    Дерзайте!
    Ответ написан
    16 комментариев
  • Как настроить доступ к внутренним ресурсам через VPN?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Судя по "Хочу поднять VPN-сервер на нем, чтобы отдавать один сайт."
    "То есть не было доступа к 80 порту сервера до установления соединения по VPN. "
    "Какой сервер тут лучше использовать и как ограничить доступ к нему из интернета?"

    Замечено, что ты не очень хорошо представляешь себе, как именно это работает, и то, что ты хочешь сделать на самом деле, возможно делается не при помощи VPN а при помощи настроек того же веб сервера.
    Подними его не на 80 порту а на каком-то другом.
    Сделай доступ только для определенных IP адресов.
    Настрой средствами HTTP авторизацию.

    ВСЕ, не нужны никакие дополнительные сервера.
    Ответ написан
    Комментировать
  • Могут ли просмотреть php файлы из js?

    usdglander
    @usdglander
    Yipee-ki-yay
    В общем и целом - нет. js - выполняется на клиентской стороне (то есть в браузере) и посмотреть с помощью него, то, что нельзя увидеть через браузер - нельзя.
    Ответ написан
    Комментировать
  • Какие плюсы у PHPStorm перед Visual Studio Code?

    Начинал с notepad++ затем сублайм, затем глючный атом, потом был vscode ну и в конце phpstorm. Да и остальные всякие разные редакторы пробовал. NetBeans, PHPeD(неплохая штука кстати), Eclipse. У шторма есть несколько плюсов, которые возвышают его над конкуретнами. Во первых из коробки он может намного больше чем надо. Удобная работа с гитом? Есть. (особенно клевый интерфейс для мерджей). Поддержка тестов есть, эмет есть...да куча всего есть. При этом достаточно быстро работает. Это одна из немногих ide, в которой ты работаешь, а не сражаешься. Я так привык к шторму, что любые другие редакторы не идут. Заходить в vscode, затем подтягивать кучу плагинов, настраивать все это, словить пару багов...не. Не хочу. Надоело.
    Ответ написан
    Комментировать
  • Тестовый сервер + Боевой сервер + Git + TeamCity как правильно организовать работу?

    Astrohas
    @Astrohas
    Python/Django Developer
    Ну можно файл c локальными настройками добавить в гитигнор
    Ответ написан
    1 комментарий
  • Из чего состоит окружение продвинутого php разработчика?

    nonlux
    @nonlux
    Поправил ответ, так будет логичнее.
    Ниже приведены инструменты, которые использую лично я и причины почему.

    1. docker-окружение
    (в 90% случаев для веб-разработки достаточно php -S 0.0.0.0:8000)
    виртуальные машину становятся нужны:
    - когда надоест переустанавливать хост-систему из-за обилия хлама
    - когда работаешь с несколькими проектами имеющие специфические (разные) настройки окружения(php, web-сервер, база)
    - когда надоест решать проблемы в команде из-за того что по разному настроено окружение

    2. git - система контроля версий
    Помнить что ты и когда изменял, должен не человек, а машина.
    Это необходимо:
    - чтобы не испортить всю работы за прошедший год нажав del
    - чтобы определить кто из команды злодей и все испортил
    - чтобы не думать как перенести свежую версию проекта с одной машины на другую

    3. composer - пакетный менеджер для php
    Нужно, когда лениво помнить все ссылки на все php библиотеки, самому качать их, подключать в автозагрузку

    4. behat + phpspec
    Тесты нужны:
    - когда хочется почувствовать себя безопасности и для сладко спать ночь, забыв о кошмарах о сломанном коде
    - когда в production все снова сломалось
    - когда ты написал одну новую фичу, а сломал три

    5. zsh
    Хорошей консолью приятно пользоваться, работа идет быстрее.
    Консоль есть жизнь, жизнь есть shell.

    6. tmux
    Мало одно окошка в консоли, тогда tmux идет к вам.
    В качестве бонуса получите возможность парного программирования совершенно бесплатно

    7. tmuxinator
    Надоело каждый раз открывать кучу окон для tmux, попробуйте его )
    8. vim
    - Потянуло на что-нибудь необычное?
    - Хочется эффективнее писать код ?
    Ну что открыли vim? В первый раз? Поздравляю закрыть вы его не сможете )
    Вызывает зависимость при частом потреблении


    9. continuous integration сервер
    Вообще ci сервер это одушевленная машина. Это твой тамагочи, ты кормишь его хорошим кодом, он радуется и ты видишь приятный зеленый огонек. Если ты дал с код от скажет что не вкусно. Ну а если ты ему, что гнилое он будет долго на тебя орать плохими словами. Со временем он растет и учится делать более серьезные вещи, и начнет помогать тебе:
    Его скилы:
    - он может сам выполнить 10 минутные тесты
    - подготовить и опубликовать проект
    - рассказать о твоем коде, даже то что ты не знаешь
    Он легко обучается и ты легко сможешь научить его удивительным вещам.

    10. куча линтеров на pre commit hook
    Чтобы ci не кормить плохими продуктами, хорошо бы проверять что ты сделал до отправки на сервер. Что бы не забыть это сделать git сам работу.

    11. gulp
    gulp - это еще один твой помощник.
    как если использовать, как watcher файлов + livepreview, можно забыть о F5 в браузере

    12. bower
    Тоже что и composer но для управления ассетами. Это я о всяких jQuery и Bootstrap

    666. Линукс
    Даже если не хочется ставить как хост-систему, его все равно надо знать. Ваш код будет работать на нем )
    Ответ написан
    16 комментариев
  • Хочу настроить сервер для офиса с redmine. Какую ОС выбрать?

    2ord
    @2ord
    Стоит попробовать установить Redmine, но на этот раз через штатный менеджер пакетов . Он сам доустановит и веб-сервер, СУБД и другие зависимости.
    По-моему таким образом всё установится в пару кликов и останется разве что изменить некоторые настройки типа сервер SMTP и др.
    8Гб оперативки? Хватит и 2-4.
    Ответ написан
    2 комментария
  • MySQL+PHP и компилируемый язык?

    @stratosmi
    Лучше всего годится тот язык под эту задачу, что лично вы (или нанятый вами человек) лучше всего знаете.

    Для данной задачи важно не на каком языке.
    Важно - как именно сделать, а не на чем.

    В том числе и для:
    Просто нужно быстро и отказоустойчиво доставать все данные из БД.

    PHP годится.

    "Отказоустойчиво доставать данные из БД" - это вообще реализуется кластером из нескольких серверов СУБД.
    Язык тут не при чем.
    ;)

    Работать будут пока человек 20, но активно. Хотелось бы предусмотреть рост функционала и нагрузку с годами на ПО.


    Только ваше умение работы с СУБД.
    Можно хоть на ассемблере сделать - но лучше от этого работать не будет.
    Ибо нагрузка - это СУБД и корректный способ работы с ней (грамотные запросы, правильные индексы). А это от языка программирования вашего приложения не зависит. Это только SQL. А он будет всегда, независимо от того, на чем у вас приложение C++ или PHP или Haskell
    Ответ написан
    Комментировать
  • Как Вы осуществляете "deploy" на "production"?

    @Cepega
    Программирую на Рельсах. Для деплоя использую Capistrano. Очень удобно.
    Ответ написан
    Комментировать
  • Как сделать автоматический деплой PHP приложения?

    Нужно попробовать Docker.

    Идеология:
    - делается Dockerfile, который описывает как с нуля развернуть проект и что делать при каждом запуске контейнера (например, почистить кеш и применить миграции). Там всего пару команд надо знать - ADD (добавить файлы), RUN (запустить команду), CMD/ENTRYPOINT (главное приложение контейнера)
    - на hub.docker.com настраивается Automatic build, который по web hook может пинать сервер, что пора забрать новый image. Можно аналогичное сделать с помощью Jenkins или вообще своего скрипта
    - когда серверу говорят, что появился новый image, он его скачивает, останавливает текущий контейнер и быстро запускает новый. Простой - пару секунд. Если это долго, можно запускать новый контейнер, а старый не удалять, перед ними ставить nginx или другой балансер и в нём переключать на новый контейнер, а потом удалять старый.
    Ответ написан
    Комментировать
  • project deploy (разворачивание проекта)

    Рекомендую Capistrano (http://habrahabr.ru/tag/capistrano/):
    — мы используем вместе с модулем multistage, он позволяет разворачивать код на несколько stage-серверов (по команде «cap demo deploy» выкладывается ветка testing на демо-сервер, «cap production deploy» — ветка master на боевой)
    — позволяет делать cached-copy: при первом развёртывании создаётся папка с клоном репозитория, при последующих — в ней делается git pull. Далее эта папка тупо копируется в целевую вместе с .git (у нас www-root находится не в корне проекта, а в одной из вложенных папок — так что паранойя нас сильно не мучает)
    — deploy:rollback — откат к предыдущему деплою
    — возможно задавать всякие разные задачи: before update, after update, restart, web:disable (блокировка сервера на период обновления)
    — так же нашли и допилили модуль для создания тегов при каждом деплое — теперь прямо в дереве коммитов можно легко определить кто, что, куда и когда деплоил. Различия между версиями? Пожалуйста. Дату релиза? Пожалуйста. Конфетка получилась :)
    — деплой на 10 серверов разом и выполнение всяких разных команд локально\удалённо — само собой разумеющееся
    Ответ написан
    3 комментария
  • Deploy на несколько серверов php кода?

    Rpsl
    @Rpsl
    Кратко о себе
    capistrano, fabric, phing, etc... Все они по сути лишь обертка для исполнения команд на удаленной машине. Для деплоя и отката действий нужно написать самостоятельный набор команд.

    В большинстве случаев схема деплоя работает следующим образом:

    Создается слепок текущего репозитория.
    Загружается на удаленный сервер в папку /var/www/mysite/deploy_2015_01_01_00:00:01
    Сам вебсервер при этом смотрит на симлинк типа /var/ww/mysite/current
    Если все прошло удачно, то симлинк переносится на только что созданную папку.

    Процесс отката такойже только наоборт, смотрим какие есть папки деплоев и переносим симлинк на предпоследнюю.
    Ответ написан
    Комментировать