PHP+JS Трудности с выбором учебно-боевого проекта?

Передо мной встала задача, за кратчайшее время освоить php+js на базовом уровне. Я в этой теме полный нуб. Так как нет лучшего способа изучить язык, чем сделать на нем проект. Помогите с идеей проекта, реализация которого затребует полноценного базового освоения связки php+javascript, и чтобы сложность идеи позволила потом реализованный проект включить в портфолио.
  • Вопрос задан
  • 1109 просмотров
Пригласить эксперта
Ответы на вопрос 7
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
Так как нет лучшего способа изучить язык, чем сделать на нем проект.

Сейчас попрут толпы хейтеров из вк)

Помогите с идеей проекта

Лучше всего, чтобы проект включал в себя базу для взаимодействия юзеров не только с сервисом, но и друг с другом. К примеру это может быть любительская мини-букмекерская контора. Тогда перед вами встанут задачи:

  • Парсить матчи с удаленного источника
  • Организовать серверную часть на PHP
  • Организовать часть на WebSocket'ах для обновления данных в реальном времени (коэффициенты, for example)
  • Сконструировать хороший JavaScript-фронтенд. Возможно с использованием Vue/Angular/Rect..
Ответ написан
Stalker_RED
@Stalker_RED
Стандартные темы типа "сделай блог, сделай чат, сделай todo-list" неплохо работают, если ты не поддешься соблазну скопипастить готовый пример из интернетов. Если цель "повторить инструкцию по шагам и положить в портфолио", то можно и так.

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

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

Можно полистать какой-нибудь список идей для сайтов, и выбрать оттуда что-то интересное.
Ответ написан
Комментировать
kosolapus
@kosolapus
Если помогло - отмечайте решением
Привет! Пара наводящих вопросов:
1.
кратчайшее время

речь идет о часах, неделях или месяцах? За пару часов с гуглом реально собрать простецкое CRUD-приложение, которое будет гордо именоваться "100001'ый TODO-list". За пару недель - внимательно прочитать какой-нибудь учебник/справочник/мануал вроде javascript.ru, который расскажет о базовых вещах, но не расскажет о деталях и нюансах. Опять же, только прочитать. Может, выполнить часть тестовых задачек. Если в распоряжении месяцы, можно параллельно читать справочник мозиллы, проштудировать какие-нибудь онлайн курсы и с пониманием инструмента начать работать над проектом. Ну а если кратчайшее время - это пара лет, то велкоме в мир фреймворков, кроссбраузерной гадости и неточных вычислений. Так что для начала советую определиться с временными рамками, в которые хочется уложить проект.
2.
Я в этой теме полный нуб

В теме php/js или программировании в целом? это, скажем так, довольно важный коэффициент для расчета перспектив любого реализуемого проекта)
3.
нет лучшего способа
для начала - читайте мануалы/справочники/стандарты. Это не даст понимания работы всех механизмов языка, но даст сведения о словах, которые будут встречаться в процессе.
4.
затребует полноценного базового освоения

Так полноценного или базового? Базовый, как уже писал выше, собирается в компании с гуглом за час-два, запускается и удаляется нафиг с сервера, т.к. остается унылым шлаком с тысячами повторов на просторах.
Исключение - это узкоспециализированная задача, которая должна решаться в пару действий и еще не решена, т.к. это нужно узкому кругу людей. Полноценное изучение может и годы занимать - языки-то растут и развиваются, там что у php, что у js уже давно свои собственные экосистемы в виде наростов из фреймворков и библиотек.
5.
включить в портфолио

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

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

0. Одно время работал в караоке, слышал такую просьбу - "хочу приложение, с которым можно будет по столикам планшеты разложить и с каждого столика песни принимать прямо на месте". Это прям задача целиком из мира клиента - ничем нихрена не обозначены границы реализации, возможности и требования к софтине. Ищешь спецификацию на караоке-машину, составляешь себе ТЗ, отрисовываешь дизайн, продумываешь и прописываешь логику, настраиваешь работу сервиса - и хоть ща иди продавай) Задачка простая, но покопаться можно вполне себе.

Дальше типовое:
1. TODO-лист. Дрянь редкостная, коих полно. Время изготовления - пара часов под гуглом.
2. Тест. Чуть сложнее листа, если в примитивном варианте.
3. Бложек. По уровню сложности - в районе предыдущих, но тут куда больше нюансов, которые придется продумать. Первый шаг в сторону бизнес-логики)
4. Чатик. Велкоме в асинхронный мир, легкий перелом мозга гарантирован (но все еще просто и полно мануалов по сабжу)
5. Чатбот а-ля "живосайт" с завязкой на телегу или другой мессенджер. Добавляем бизнес-логике работу с внешними апи.
6. Сервис по обработке данных. Собери аналитику, которую никто не собирал, обработай и красиво отдай.
7. Стартапъ. Гугли тренды и пробуй повторить.
Ответ написан
Комментировать
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, возможности фреймворка отдельно. К проекту вы будете возвращаться время от времени, почерпнув знания из промежуточных тестовых проектов.
Ответ написан
Комментировать
VladimirAndreev
@VladimirAndreev
php web dev
Блог. Без перезагрузки страниц.
Ответ написан
Комментировать
@developer007
можешь сделать свой инет магазин ключей https://zaka-zaka.com/
либо агентский plati.ru + digiseller.ru (Они вместе работают. Есть апи)

я как раз с этого начинал и барыжил скриптом за $15
даже продавалось в 2009
Ответ написан
Комментировать
iCoderXXI
@iCoderXXI
React.JS/FrontEnd engineer
Если нет опыта успешного и эффективного решения олимпиадных задач, то ситуация патовая.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы