Ответы пользователя по тегу IT-образование
  • PHP+JS Трудности с выбором учебно-боевого проекта?

    Nikolino
    @Nikolino
    Сделайте приложение по оптимизации и ресайзингу картинок, по типу tinypng.com

    Пользователь может залить картинку любого размера, ваше приложение должно "сжать" эту картинку без потерь.
    Пользователь также может выбрать фичу уменьшения размера изображения, допустим, до 50% от исходного изображения. То есть картинка 800х600 будет уменьшена до 400х300 и сжата без потерь.

    Если усложнить задачу, то позволить пользователю заливать zip/rar архивы с изображениями, также указывает свою почту куда скинуть итоговый архив с обработанными изображениями.

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

    Но это может быть слишком сложно для новичка. Поэтому:

    Поэтому простой блог с админ панелью (на bootstrap).

    Усложняем:
    В блоге есть посты, категории и теги. Пост может быть в нескольких категориях. У категорий могут быть родительские категории. Ajax комментарии и лайки к постам и комментариям, комментарии должны быть вложенными (как на хабре или vc.ru).

    Еще усложняем:
    Пост добавляется через WYSIWYG редактор, в редакторе можно добавлять картинки, которые будут сохраняться на сервере. Желательно, чтобы картинки можно было ресайзить прям на лету. Лучше использовать какой-нибудь filemanager.

    Еще усложняем:
    Регистрация/авторизация пользователей через соц. сети.

    Еще усложняем:
    Сделайте полнотекстовый поиск по блогу, в том числе и по комментариям. Освойте Sphinx или Elasticsearch, научитесь устанавливать и настраивать все это на фреймворке (Laravel или Symfony).
    Познакомьтесь с Redis, научитесь кешировать данные из базы в redis'e. Обновляйте кэш, когда кто-то добавил комментарий/like или вы добавили пост.

    Еще усложняем:
    Познакомьтесь с Websocket'ами, научитесь делать так, что если кто-то ставит лайк под постом или комментарием, то все, кто онлайн, видят сразу, что кол-во лайков у поста/комментария увеличилось.
    Чтобы со всем этим поиграться, освойте Docker.
    Покройте приложение простейшими Unit тестами.
    Ну и конечно же, коммитьте это всё на Github(Bitbucket).

    Если всё это получилось, то вы уже почти готовый fullstack больше в сторону backend'a. Для middle backend'ера еще нужно подтянуть Rest API, чтобы умели api'шки пилить (с авторизацией), и желательно еще одну СУБД, лучше PostgreSQL, а также анализ запросов к БД (индексы, explain и т.д.). Для полноценного fullstack'a нужно освоить получше JS, верстку(БЭМ) и frontend framework'и: Vue.js, React, Angular, чтобы уметь в одиночку запилить SPA приложение, которое по api тащит данные с вашего же сервера.

    Сейчас меня закидают помидорами потому, что сказал middle, и кто-то скажет, что middle это больше n лет реальной разработки. Но описанное выше решает большую часть всех повседневных задач в коммерческих проектах. Если научились делать это, значит научитесь решать и остальные задачи, пусть и немного (или много) погуглив. Здесь на тостере есть те, у кого 5 лет опыта в разработке, но по-прежнему junior'ы, потому что всё время пилили лендинги или сайты-визитки на 3-5 страниц.
    Также следует сказать, что грейды (junior, middle, senior) сильно отличаются в разных компаниях

    Всё описанное это дело в лучшем случае, полугода. В худшем случае может затянуться и на года.

    Скорей всего такого не случится, что вы будете всё время заниматься только этим блогом. На протяжении обучения у вас появится желание сделать что-то еще, потестировать то или это, поиграться с какой-то технологией (Sphinx, Elasticsearch, Redis, RabbitMQ и т.д.) отдельно, или проштудировать верстку, js, возможности фреймворка отдельно. К проекту вы будете возвращаться время от времени, почерпнув знания из промежуточных тестовых проектов.
    Ответ написан
    Комментировать
  • Стратегия входа, путь развития во фрилансе. С чего начать, чтобы стать верстальщиком и php-программистом?

    Nikolino
    @Nikolino
    Html и css с практическими задачами лучше изучать на htmlacademy.ru. После того как освоился, качаешь бесплатные psd макеты и верстаешь, с адаптивом, какие-то сложные вещи, которые не можешь сверстать оставляешь пока.
    Далее ищешь видео где верстают макет, обычно на первых секундах-минутах показывают макет и сразу можешь понять сможешь ли сверстать сам или нет, если понимаешь, что не сможешь, то смотришь как автор это сделает, узнаешь новое для себя.

    По php. Читать большие и толстые книги пока бессмысленно, всё прочитанное будет вылетать из головы. Ставишь OpenServer, и сразу в бой:
    1. Переменные, условия, циклы, массивы.
    2. Пользовательские функции
    3. Базовые функции по работе со строками и с массивами. Комбинация функций. (важно понять и запомнить что они умеют).
    4. Post и Get запросы, получение Post и Get запросов из формы (тут сразу и html по формам подтянешь)
    5. Базы данных, простые запросы к базе, выборки, запись в базу данных из формы.
    6. Куки, сессии.
    7. Чтение и запись в файлы.
    8. Регулярные выражения.
    9. ООП, базовые понятия. Самое сложное и непонятное для новичка. Непонятно потому, что не ясно зачем это нужно и почему это в дальнейшем упрощает работу, поэтому как-то мимо ушей все пролетает.

    Если с английским хорошо, то codecademy.com.
    Если плохо, то базовую теорию (и сразу практику) делать здесь.

    Далее лучше сразу переходить на фреймворк (лучше Laravel). MVC в теории тоже понимается плохо потому, что пользу донести до понимания новичкам сложно, а при работе с фреймворками сам понимаешь почему это удобно.
    Во время изучения фреймворка и ООП подтянешь.

    Самое главное, по моему опыту обучения, это сразу делать практические задания по ходу изучения тем, постепенно, набивать руку. Задания лучше не пропускать (с мыслью "да тут легко, в теории я знаю как это сделать, пропущу, интересно что будет дальше").
    Самое неправильное, это дойти в чтении чуть ли ни до ООП, а открыв редактор кода, понять, что не можешь написать простые условия или перебор массива.

    То есть чтения меньше, практики больше. Это про голый PHP.

    Про фреймворк, если английский позволяет то Laracasts: Laravel 5.4 from scratch. Если не позволяет, то ищешь в ютубе что-то вроде "простой блог на Laravel", смотришь и кодишь параллельно у себя.
    Тут тоже самое, под попкорн просмотреть всю серию роликов от начала до созданного блога с админкой бесполезно. Обнаружится потом, что не можешь даже базовые вещи сделать. Нужно делать параллельно с автором, он делает какой-то функционал, смотришь, делаешь также, изначально может быть непонятно многое и зачем автор это делает, но со временем поймешь как это работает.

    Далее пробуешь сделать что-то свое, какие-то "фичи", например авторизацию с помощью соц. сетей, лайки к постам и комментариям (с помощью ajax, тут можно jQuery изучить чуть-чуть), вложенность комментариев и т.д. Можешь другой себе проект придумать(представь себя стартапером).

    Далее можно изучить системное администрирование чуть-чуть, покупаешь VPS недорогой, ставишь Nginx, MySQL, PHP-FPM и т.д. Пробуешь залить туда свой проект, так чтобы всё работало. Далее можешь попробовать прикрутить какой-нибудь поисковый движок (Sphinx, например). Изучение командной строки тоже на codeacedemy.com есть.

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

    Сам изучаю всё это недавно. До этого был Python+Django(первый фреймворк). В команде никогда не работал. Так что можно сказать передаю опыт от новичка новичку.
    Ответ написан
    3 комментария