Вывод

Вчера прошел выпускной с вручением сертификатов, кружек, шариков и шампанским. Так как из курса по PHP выпустилось только четверо, нас объединили с выпуском верстальщиков и, по моему, дизайнеров. Была полезная и интересная лекция по поиску работы и собеседованиям от рекрутеров. После - много общения и продолжение празднования в пабе :) Даже без холиваров на тему кто круче, бэкэнд или фронтэнд :)
Про школу. Epic Skills крутые ребята, о чем я уже, в принципе знала, посетив летом их интенсив по адаптивке. Учиться у умных людей и специалистов, работающих с сфере прямо здесь и сейчас, всегда крайне интересно и полезно. Обратная связь великолепная, никогда вас не оставят без ответа или с чем-то непонятным. Ну и царящая атмосфера на курсах чудесная. Мне и правда повезло жить в Питере, где есть такие места :) Я не очень умею выражать восторг, но от эпиков я пребываю именно в этом щенячьем чувстве.
Про курс. После его окончания я, как и положено при нормальном обучении, понимаю, что знаю крайне мало о PHP. И что учеба только началась. Но, теперь я точно знаю в каком направлении двигаться дальше. И что ООП это не так страшно, пусть пока и не совсем осознанно. Да и вообще, что это только начало. В голове творится странное, раздумья куда двигаться дальше, уходить с головой в Node.js и это всё, или познать PHP и браться за более серьезные языки. Так много интересного и так мало времени.

Дневник цели

Вчера, титаническими усилиями засунув свой перфекционизм поглубже, отправила учебный проект на проверку. Мне многое самой в нем не нравится, TODO просто огромный, некрасивых мест в коде полно, дыр тоже. Работы там огого ещё. Но задача стояла не сделать идеально, а сделать чтобы работало :) Нельзя же вот прост так взять и написать всё впервые на ООП правильно. Ну я, по крайней мере, себя так утешаю. Первый вариант был гораздо хуже, а это всего лишь второй. Раза с седьмого, думаю, получится уже более-менее приличный результат.
В общем, мой первый раз в первый класс получился хромым и убогим, как и положено :) Надо разбираться с middleware и шаблонизаторами. Эх, если бы не надо было работать и спать, то всё пошло бы быстрее.
А завтра у нас выпускной.

Вчера было вспомогательное занятие, ответы на вопросы и разъяснение оставшегося непонятным. Поняла, что предстоит не рефакторинг, а полное переписывание кода. Но это нормально. Сложно выстроить архитектуру, логичная структура приходит в голову только после написания работающего прототипа. Эх, времени маловато. Рабочий проект нужно допилить до пятницы, а в субботу "выпускной".
Поставила наконец-то OpenServer с нормальной версией PHP, развернула Laravel, чтобы посмотреть как там логика устроена, чуть с ума не сошла xD Не самый легкий пример для обучения.
В общем, переписываю всё заново, завалена бумажками со схемами и доками. Голова пухнет, ночью не уснуть от роя мыслей, режим полетел к чертям. Обычный учебный процесс ))))

Светик, у меня все время так... А потом еще оказывается, что нормально поставленный php перестает работать, когда какие-нибудь тесты пытаешься настроить... При установке чего-нибудь не понимаешь куда какие пути прописывать - в мануале есть название папки, а в php таких три :))) Короче, жизнь продолжается :)))

Светлана, Я очень надеюсь, что пока ты до них доберешься, я с ними разберусь настолько, что смогу помочь, если чего... Для меня установка и настройка оказались, пожалуй, самым сложным из того, что я делала.... Впрочем, не факт, что так же будет у других. Там просто одну неправильную запятую поставишь, или не тот путь пропишешь - ломается полностью все. Нормальных мануалов по установке нет, наверное, не стоит этому удивляться, так как у всех все очень по разному настроено в системе, предсказать все возможные варианты невозможно. Написание самих тестов по сравнению с этим кажется детским лепетом, но пока я осознала что такое моки, и у меня заработал первый тест, тоже ушло куча времени... Очень трудно локализовать проблему, большая часть информации в сети не рабочая или вообще, или просто конкретно для моей системы (собственно, все как у всех, но другие пути, другие типы установки описываемой плюшки.... Сделать все аналогично невозможно, так как полный процесс описан только в доке, не всегда достаточно подробно.. Ты находишь то, что тебе нужно, но для другой системы или для другого софта (Open Server, NetBeans, PHPStorm, Lamp, Wamp, XAMPP и иже с ними - все одно и тоже, но пути, папки, версии и системы на которых это все установлено - отличаются. Кроме всего прочего, у меня пока что держится ощущение, что opensource-проекты на php написаны гораздо менее аккуратно, чем аналогичные инструменты на js. Просто, что не установишь, редактор всегда вопит про ошибки. Из-за этого я долго понимала, что если дебаггер говорит, что ошибка где-то в дебрях папрк php-unlt, это не разработчик-редиска, а опять я что-то нахомутала может с кодом, а может с настройками - точно сказать НЕвозможно - нужно экспериментировать. Знаешь, я сейчас думаю, что для изучения тестов точно лучше искать какую-то песочницу, там где они уже установлены и работают. Я по Фреймворкам не особо лазила, но например так в Angular.seed или как там называется ознакомительное приложение от Angular-а. Таким образом ты получаешь работающий и настроенный пакет рабочих тестов и не получаешь опыта по их установке и настройке. Впрочем, нужно ли это, если разработчиками предполагается, что ты не будешь писать велосипед, а расширишь их базовый проект необходимыми тебе функциями. Таким образом, наверное, можно превратить изучение тестирования в сплошное удовольствие, а я, видимо, по незнанию слишком рано туда влезла... У меня такое часто бывает :)))

Вчера, как и планировалось, было про фреймворки. Composer и Silex, вот это всё. На мой махонький ноут с виндой и денвером композер упрямо не вставал, да там вообще беда даже с Cmder, нифига не работает нормально. Надо бы его отформатировать да убунту поставить, хоть заодно понять что за зверь и как с ним дружить. Вот и повод научиться.
Ну так я просто почитала документацию, ничего там сложного нет конечно, это микро-фреймворк, без БД и шаблонизатора. Прочитала, потом полезла смотреть Laravel, там уже пожирнее и поинтереснее. Пока ещё не совсем понимаю когда действительно нужен фреймворк, а не собственный набор библиотек + подгружаемые компоненты тем же композером. Ну не нравится мне идея с кучей зависимостей, большая часть из которых вроде бы и не нужна. Надо бы ещё разобраться окончательно с неймспейсами, а то начала писать блог и запуталась с ними...
Следующее занятие с субботы перенесено на следующую неделю, так как рабочий день. Время для допиливания учебного проекта теперь есть в достатке. У меня довольно странная архитектура получается, роутер сам ищет и вызывает класс контроллера, сказали не надо так )))) Пока не могу сообразить, как лучше сделать.

Лена, спасибо, ты как всегда - кладезь полезной практической информации и ценных советов :) Я, видимо, пока на фреймворки так смотрю, потому как не разобралась сама до конца со всем этим ООП )))) Хочется написать самой, чтобы хорошо понять что происходит и как, порефакторить, а потом уж приду к готовому для ускорения. Да и проекты такие простые, масштаб не тот...
С неймспейсами разберусь конечно, просто ещё даже и не читала ничего особо по теме, кроме документации. То есть для чего понятно, но как их грамотно с автолоадером подружить...
Да я о форматировании диска к тому, что винду нафиг снести ))) У себя дома я с композером разобралась за пять минут, просто путь поменяла и всё хорошо. Так как стоит уже многое для фронтенда, он даже ничего не просил и не ругался особо, только на версию OpenSSL, но работает, тянет зависимости. Я с утра налила чашечку кофе, поставила, развернула Silex, написала простейший контроллер, дел-то на 20 минут, документацию вчера ж прочитала )

Светлана, Я люблю, когда мои советы нафиг не нужны - это значит, что у человека все и так здорово :)))) Но вот зде-е-есь:
"...но как их грамотно с автолоадером подружить" лови:
http://www.php-fig.org/psr/psr-4/
http://www.php-fig.org/psr/psr-4/examples/
http://victor.4devs.io/ru/php/autoload-composer.html
http://victor.4devs.io/ru/php/classes-autoload-php.html
Остальное, если понадобится)))) читать только после вот этих четырех ссылок.

Вчерашнее занятие было снова по ООП. Абстракция, статические переменные, методы и свойства, пространства имен, интерфейсы, автоматическая загрузка классов, Composer. Немного о контроле типа и его будущем в следующих версиях PHP. Очень и очень познавательно и интересно. Было даже жаль, что занятие длилось всего 4 часа. ООП для меня перестало быть чем-то страшным и непонятным :)
Надеюсь, что книга "Объектно-ориентированный анализ и проектирование" окончательно вправит мозг на ОО-мышление.

Ты перед тем, как читать - спроектируй какую-то модельку посложнее. Не заморачивайся с реализацией - сделай в каждом классе по одному свойству, геттеру и сеттеру - чисто для проверки, что это работает. Натвори кучу интерфейсов, абстрактных классов и методов. Пример можно из жизни придумать - я ежедневник проектировала - заметка, заметка + напоминание - задача. Начиная отсюда уже мозгопарка - для проекта делать отдельный класс (дублируется код), массив из задача??? (некрасиво вызывается)... Было решено сделать пустого наследника - просто для имени... У этого всего куча общего - очень удобно играться с интерфейсами и абстракциями. После того, как проблема с проектом решена - ищем новые - задача + задача = проект, проект + проект = цель... ну и дальше насколько угодно полно. Если это сделаешь, то читать, возможно, не понадобится, а если решишь читать, то книга станет не тонной дополнительной теории, а ответом на конкретные вопросы, а значит лучше усвоится...

Лена, спасибо за совет! Он очень практичный и ценный. Ну мы, собственно вчера примерно этим и занимались, простейшие классы писали, интерфейсы, абстрактные. Как это друг с другом связывать. Полиморфизм опять же в действии. Потом преподаватель показывал реальные рабочие примеры где, что и как используется. У нас, собственно, теории как таковой немного, большая часть времени практике уделяется. Книжку я уже начала читать, мне от неё нужно именно понимание правильного проектирования и анализа, она не сколько об ООП, сколько о том, зачем это нужно и как применять. Дошла как раз до текстологического анализа, очень полезная штука оказалась :) Понятно, что нужна практика и как можно больше, но хочется избежать совсем уж банальных ошибок, времени на сдачу учебного проекта не так уж и много осталось, а ещё ведь работа...
По интерфейсам хороший пример был приведен - работа с БД, то есть обязательные методы CRUD. Да и с абстракциями мне всё понятно. Сначала не совсем поняла статические переменные (с методами и свойствами ясно было), но опять же - как пример использование статической переменной для хранения ссылки на соединение с БД в функции, в случае компонентности приложения и возможности вывоза функции несколько раз разными составными включаемыми частями, вопрос отпал по причине наглядности. При первом взгляде показалось, что отличия от хранения в глобальной нет, но изолированность наше всё же :) Хорошо, когда можно посмотреть живой и рабочий пример, не абстрактный или слишком огромный, разобрать его без особого взрыва мозга и вникнуть. И ещё и вопрос задать "зачем", "а что если".

Вчерашнее занятие было посвящено таким понятиям как фронт контроллер, роутинг, шаблонизация, MVC и, конечно же, ООП. Писали маршрутизацию на функциях, разобрали try catch, потом простейшие классы. Домашнее задание - переписать контроллеры в ООП.
Пошел хардкор и это очень радует, ну лично меня по крайней мере :) Прямо был подарок на др. Заказала себе "Объектно-ориентированный анализ и проектирование" от любимого Head First O'Reilly, надо добить тему ООП в этот раз. Ну и пополнить коллекцию Head First.

Я только что с Nette (это php на MVC ) покнопалась - очень неглубокое первое погружение вроде как вызвал довольно приятные ощущения... Дружелюбный, какой-то, что ли... Их приложение заработало с первого раза без особых проблем, хотя я писала его, вроде как сама (ну в смысле по рекомендациям из доки, имею в виду, что не скачала готовый вариант, конечно, можно и так). Короче получишь маленький и абсолютно рабочий бложек - с комментами, авторизацией и базой данных.

Светлана, Это точно. А то будет, как у меня - не закончив одно, уже в Ноду лезть надо... А надо и то, и другое, и еще кучу всего... Закончишь курсы, если там не предложат что-либо более актуальное - посмотри - он ничего и, вроде как на третьем месте по популярности или что-то вроде того... Я не могу совсем советовать, так как это мой первый php-фреймворк, но он не вызвал сложностей в установке, а это значит, что можно сосредоточиться на коде. Обычно у меня бывает несколько по другому :))))

Занятие сегодня было не про даты, JSON и XML. А, что важнее, на мой вкус, пор безопасность. XSS и SQL Injection, CSRF вот это всё. Ну и продолжили по вводу данных пользователем, авторизации. PDO это и правда очень хорошо, хотя бы prepare, пусть я и привыкла вручную все данные проверять.
Но хоть окончательно уверовала в try catch для отлова ошибок. Посмотрела сегодня немного на документацию Lavarel, в частности на Lumen. Посоветовали глянуть для начала на Silex, то бишь начать с микрофреймворков. Не знаю, насколько это будет несложно с условием того, что ООП для меня пока не очень-то известно. Не, ну я в курсе что такое классы, методы, отличаю public, private и static, понимаю что такое наследование, полиморфизм и инкапсуляция... Даже один раз написала свой класс :) Ну и паттерны проектирования увлекательно читаю, интересно. Но то ли масштаб пока не позволяет, то ли твердолобость, но пока не особо вижу особых каких-то преимуществ перед процедурным...
Эх, хорошо бы было начинать программирование сразу с ооп-языков и сразу со сложных проектов. Явно должно что-то в мозгу перемкнуть. Причем, самое забавное, что я всё как раз таки воспринимаю скорее в объектной модели, и пишу, держа в голове объекты и методы, но... В процедурном стиле. Как из этого замкнутого круга бы вырваться :)

я по Silex ничего особо не нашел =| ...он так же как и Laravel на Симфони компонентах базируется.
Даже Доки не понял где они ;)....
--
про "безопасность" это вкусно...=)).....ох уж эти шаловливые хакерские наклонности, хотя чем больше разбираешься в IT, тем более создается впечатление, что взламывают только по-настоящему "нереальных имбицилов".

Вчера было занятие по PHP и MySQL. Использовали PDO, писали запросы, выводили данные, немножко коснулись JOIN (мне кажется по JOIN нужно отдельное занятие, я помню мне было довольно непросто с объединением разобраться, хоть и давно это было). Под конец поговорили о POST и GET и, собственно, как их использовать для получения данных. Мне всё сложнее оценивать занятия, я вижу как народ увлеченно строчит, задает вопросы, преподаватель хорошо объясняет, помогает. Но я, оказывается, знаю не так уж и мало, как думала, с задачей справилась за час, перевыполнила на пару занятий вперед :) Мне уже дали задание заняться авторизацией с мини-админкой.
Узнала про триггеры, факультативно почитала что за зверь. Обрадовалась, но преподаватель сказал, что триггеры в реальных больших проектах редко используются из-за сложной поддержки, то есть лучше это делать в коде. Да и внешние ключи тоже по той же причине. То есть, в идеале должна быть хорошая документация к проекту, где описаны все сценарии и связи, и все участники должны её читать и знать. Ещё и разбираться хорошо в SQL. В общем, в жизни, говорят, такого не бывает :)
Рабочий проект у нас теперь блог, от интернет-магазина отказались. Жаль, что загруженность адская, так бы сделала и то, и другое.

Светлана, Именно!))) Я, к примеру для тренировок люблю какие-то нетривиальные задачи - это как с моим html5-чудом недописанным - сначала все говорили, что это полный бред и зачем оно мне надо, а потом, когда результат начал нарисовываться начали ругать, что не доделываю))) Это тренирует не только кодописание, но и фантазию - как это выкрутить, чтобы из этого получилось что-то нормальное. Ты знаешь, удовольствие от такой работы, по крайней мере для меня, ни с чем не сравнится - это типа как написать велосипед и умудриться сделать его единственным в мире)))) При этом то, что я знаю по js и тому же html5 - только из этого полунаписанного бреда. Уже в этом огромная польза, а цель по дописыванию ждет своей очеди. Сейчас никак не могу :(

Сегодня было дополнительное занятие, посвященное алгоритмам и блок-схемам. Крайне увлекательно и познавательно. Вспомнила каково это - выходить к доске )))) Вот люблю я проектирование. Мне только дай схемы порисовать и по полочкам всё разложить, обстоятельно и не торопясь. Жаль, в рабочих проектах такого практически не бывает.
В общем, ни на секунду не пожалела, что из-за этого пришлось пропустить тренировку. Трехкилометровая прогулка очень бодрым шагом под скринкаст от Web Standards тоже хоть какая, но физ. нагрузка :)

Сегодня по плану были базы данных и SQL. Занятие наглядное, на примерах, проводилось сразу в MySQL Workbench, от чего я, честно говоря, слегка обалдела. Не знаю, как людям вообще не сталкивающимся до этого с MySQL, но даже для меня это перебор. Нет, в самой софтинке ничего особо сложного, кроме крайне нагруженного интерфейса на английском. Наверное, для проектирования БД это хороший вариант. После этого работать с phpMyAdmin там каким-нибудь просто отдых :)
Так как давались опять же основы, я, чтобы не уснуть, читала про InnoDB, внешние ключи, связи и транзакции. В эти тонкости как-то не вникала, а давно было пора. Хоть поняла разницу между MyISAM и InnoDB. Безусловно на занятии я узнала несколько очень полезных моментов для себя, которые просто из практики работы с БД выясняются.
Сама себе дала задание обновить знания о нормализации БД (давненько читала) и вникнуть в транзакции и блокировки в InnoDB.

Я на пару....;) чего не получается в Workbech делаю в myAdmin и наоборот..
а вообще да в интрефейсе разбираться впадлу...)
да и вообще какой-то такой принцип уже сформировался Апатия к интерефесу или технологии в которую ты вникаешь дольше 20ти минут. Все что больше либо шлак либо не дорос ;}

alex_whoami, ну тут вопрос даже не к сложности и времени, необходимому разобраться в софте. А необходимости использования такого инструмента. Если проектировать объемную БД со сложными связями, то Workbech безусловно удобный, вместо прописывания вручную FK и рисования на бумажке :) С простыми же БД, думаю и в phpMyAdmin спокойно работать можно. Каждой задаче свой инструмент, короче.