##(tl_note) Запись подкаста происходила в декабре 2013 года. 10 января 2014 года он был опубликован на Laravel.IO. На данный момент сайт Laravel.IO полностью переделан и нет возможности разместить прямую ссылу на подкаст. Сейчас подкаст можно найти и послушать в нашей группе ((http://vk.com/laravel_rus Вконтакте)). - //прим. ред.// ## Шон МакКул (Shawn McCool), далее **Ш**. Джефри Вэй (Jeffrey Way), далее **Дж**. Тэйлор Отвел (Taylor Otwell), далее **Т**. {{TOC}} == О продуктивности == **Дж:** Я пробую новую вещь, когда я не открываю email несколько первых рабочих часов. Если так подумать это как раз то время, когда мы самые продуктивные, но мы обычно начинаем проверять email и отвечать на письма и это так затягивает. **Т:** Я просто удаляю все :) == О релизе 4.1 == **Т:** День, когда мы выпустили Laravel 4.1 был очень богатым на события, к тому же у меня была очень сильная простуда, что сделало этот день еще хуже. Это был наш первый релиз после 4.0, и 4.0 был просто огромным мажорным релизом. С 4.1 мы просто хотели "подчистить" несколько вещей, и я надеялся, что апгрейд будет легче, чем он получился. Он конечно не сильно плох, но надеюсь, что апгрейд с 4.1 до 4.2 будет осуществляться при помощи нескольких строк в Composer. В 4.1 мы представили одну большую вещь - SSH, такой standalone-компонент фреймворка. Также Routing был сильно улучшен "под капотом", также read/write соединения с базами данных, Redis, улучшения работы паролей - в общем много чего. **Ш:** Read/write соединения с базами данных могут быть настроены для каждой модели? Потому что многие просили об этом. **Т:** Ээммм, мне кажется, что можно. **Дж:** Часто люди задавая подобные вопросы Тейлору не понимают, насколько огромный фреймворк, и что невозможно держать все это в голове. Иногда надо залезть в код, чтобы ответить на подобные вопросы. **Ш:** Круто, я пока не торопился с апгрейдом. **Дж:** WAT?? **Ш:** Хаха, просто хотел, чтоб сообщество протестировало все за меня, потому что моя база кода просто огромна (!!(tl_note)скорее всего имеется в виду форумный движок надо которым работает Шон - //прим. пер.//!!). Но я чувствую эйфорию, потому что я долго ждал многие из новых фишек. **Т:** Релиз на самом деле прошел гладко, были несколько багов, которые мы пофиксили в первые же дни, например, генерацию URL. И больше я не помню ничего такого большого. На работе я перевел мое приложение Snappy довольно быстро на новую версию, а оно не такое уж и маленькое. **Дж:** Я апргрейднулся тоже очень легко, были два бага - URL и генерация забытых паролей, но ты зафиксил это все в тот же день. == О конференции Laracon == **Ш:** Я видел, что запустили сайт ((http://conference.laravel.com conference.laravel.com)). **Т:** Да. **Ш:** Выглядит отлично, несколько кнопок, дизайн отличный. **Т:** Focus Lab снова сделали дизайн, и они делают очень крутые штуки. Монстр мне очень нравится. Мы также анонсировали даты проведения - май 15-16 в Нью-Йорке. Рассчитан на 250 человек. Отличное помещение, много зон для неформального общения. **Дж:** Сколько у нас там было человек на Laracon EU? **Ш:** 185. **Дж:** Мне просто интересно. Еще 6 месяцев, хватит ли всем места? Laravel-сообщество растет ооочень быстро. **Т:** Мне трудно такое предсказывать. В прошлом году у нас был waiting list (человек 20-30), при том что сам фреймворк и сообщество были значительно меньше. **Ш:** Да, я, например, общаюсь с многими разработчиками. Трудно представить, что Laravel 3 использовался, например, Fox Sports (!!(tl_note)один из ведущих спортивных каналов США - //прим. пер.//!!) и много где еще. **Т:** А теперь, когда мы делаем конференцию в Нью-Йорке много местных людей которым не надо никуда ехать очень заинтересованы в участии, больше чем в прошлогодней конференции в Вашингтоне. Мы по-прежнему принимаем заявки на доклад на сайте. **Дж:** Я клянусь, что как только ты объявил о том, что принимаешь заявки, вся моя лента в Твиттере как один подали заявки :) **Т:** Около 30 выступающих уже подали заявки. Билеты должны поступить в продажу с января. Билеты должны быть доступны, рассматривая то, что конференция проходит в Нью-Йорке. Также думаем, что проводить кроме самих выступлений. Sara MG будет выступать по поводу Hip-hop (HHVM), Джефри будет выступать. **Ш:** Кто, кто? :) **Т:** Новый парень, надо дать ему шанс. **Дж:** Я еще не решил, о чем будет доклад. Хочу рассказать о Javascript и Laravel. T: Хотел пригласить Размуса, но он занят, к сожалению. **Дж:** Кстати о Саре, никто не смотрел ее доклад с Nomad PHP (!!(tl_note)имеется в виду ((http://nomadphp.com/products/video-scaling-php-with-hiphop-sara-golemon/ этот)), стоит $25 - //прим. пер.//!!). **Т:** Нет, но я видел ее доклад о Hip Hop на Youtube. Очень крутой. **Ш:** В общем я буду в Нью-Йорке. Никогда там не был. **Т:** Я тоже там никогда не был. == О Laravel.io == **Ш:** Мы запустили формы, скоро запустим поиск, форум, много-много других разделов. Скоро можно будет постить новости, сообщество сможет модерировать эти новости сами. Есть идея публиковать сайты, написанные на Laravel, чтобы люди могли учиться. И конечно форумный движок, над которым мы работаем. **Дж:** Я очень уважаю идею open-source. Люди выкладывают код, понимая, что его увидят другие, поэтому они не могут оставлять костыли, потому что понимают, что потом с них спросят за них. **Т:** Да, меня всегда удивляло, что старые форумные движки живут так долго. Я даже думал написать один самому. **Ш:** Мы так же собираемся сделать каталог packages, также подгружать фото авторов и участников форума и ссылки на их Github аккаунты, чтобы люди могли посмотреть их другие проекты. Также отсутствие анонимности будет повышать качество и ответственность. Очень я рад что нашел на IRC человека, который мне помогает с дизайном. Очень тяжело найти людей которые согласятся помогать бесплатно open-source проектам в отрисовке дизайна, учитывая сколько времени тратится на разработку. **Дж:** Согласен, это ли не сумасшествие, что люди хотят получать деньги за свою работу?! //(все смеются)// **Ш:** Конечно, но представь сколько мы тогда должны бы были потребовать денег за форум, тикет систему, формы и т.д. У нас есть такое правило - если люди соблюдают стиль кода и другие правила, мы принимаем их код, какой бы неидеальный он был, а потом рефакторим его, комментируем, добавляем тесты и вот так потихоньку, шаг за шагом и движемся вперед. Я очень надеюсь, что наш проект станет таким пособием для других людей, чтоб они заходили и могли увидеть, как делать то, как делать это, как покрывать код тестами, как сделать слой контроллеров более объекто-ориентированным **Дж:** И ты используешь Codeception? **Ш:** Да. У меня есть проекты на которых тесты Acceptance занимают две минуты. Но это все равно настолько упрощает жизнь, если сравнивать с тестированием всего в браузере **Т:** Как это все интегрируется с Laravel? **Ш:** Не знаю, я не использую Codeception для functional-тестов. Я вообще еще использую unit-тесты. И это очень круто, когда ты можешь писать тесты с помощью Codeception, это такой браузероподобный движок, где ты можешь указывать в какой последовательности переходить по страницам. Я не работаю с классами при его использовании, больше процедурно и в контексте моего проекта я считаю, что это более правильно согласно подхода DRY. Где-то конечно классы более подходят. я просто разбиваю свои тесты на папки - Forms, Auth и так далее. **Дж:** В общем те, кто слушают нас и хотят начать работать с тестами Acceptance, должны присмотреться к Codeception. **Ш:** Что могу посоветовать перед использованием - прочтите всю документацию от начала и до конца, потому что использовать ее как референс не выйдет. И IRC канал мертвый у них). == O Laravel IRC == **Ш:** Мы собираемся сделать некую штуку на Laravel.IO которая сможет интегрировать ответы с IRC и выносить их к нам, где они будут индексироваться Гуглом и быть полезны сообществу. //**Дж,Ш,Т:** 5-минутное обсуждение, насколько активен IRC-канал Laravel в сравнении с Symfony и другими каналами.// == О Laravel 4.2 == **Т:** В мае новая версия будет работать с минимальной версией PHP 5.4. Я сомневаюсь, что например Symfony будет делать тоже самое. Во многом мы будет делать это из-за самих разработчиков языка, так как они объявили, что больше не будут поддерживать 5.3. Например в новом релизе Ubuntu который выйдет в апреле будет PHP 5.5. Также многие хосты уже переходят на 5.4. **Ш:** Я знаю, что например Media Temple вообще перескочили с 5.3 на 5.5-5.6 сразу же **Дж:** Это очень круто. Помню, недавно мы еще пытались перевести Laravel на 5.3, а тут... **Т:** Для фреймворка это позволит избежать некоторых костылей, особенно в работе с Closures, к тому же есть планы использовать traits, да и само сообщество движется в этом направлении и мы не хотим отставать. Кстати говоря я ожидал услышать кучу недовольных, и очень удивлен что таковых нет совсем, пока что //(смеется)//. **Ш:** Может просто те люди, которые не смогли уйти дальше 5.2 не используют Laravel //(смех в студии :))// == Об инвестициях в Sensio Labs (создатели Symfony) и Hip-Hop == **Дж:** Слышал, что создатели Symfony получили какие-то неслыханные инвестиции, 6-7 миллионов. Интересно как это повлияет на Laravel? **Т:** Мне тоже интересно и я бы хотел узнать подробности, особенно на что они планируют их потратить. В последнее время они делают много вещей связанных с Code Quality, static analysis. **Ш:** Проще говоря такие вещи, которые есть в других языках, но нет в PHP. Ты у него не уточнял (!!(tl_note)возможно имеется в виду Fabien Potencier, создатель Symfony - //прим. пер.//!!)) по поводу HTTP Curl? **Т:** Нет, не имею представления что он имел в виду. Может быть они работают над устранением проблемы persistence (!!(tl_note)скорее всего имеется в виду устранение недостатков описанных в это знаменитой статье "((http://habrahabr.ru/post/179399/ PHP создан, чтобы умирать))" - //прим. пер.//!!). Кстати, слышал новости, что разработчики Hip-Hop планируют доработать его до такого состояния, что на нем можно будет запускать проекты, также как на Apache и Nginx. И мне любопытно куда это все приведет, в течение нескольких лет, когда это все будет проще и проще, например когда все тесты Laravel будут проходить на Hip-Hop и мы, как сейчас говорим, не забудьте установить OPC, будет говорить тоже самое про Hip-Hop. Это должно увеличить производительность в разы. В общем я возбужден. PHP is coming back, baby!!! == Об IRC-канале == **Ш:** Ок, круто. Ну что, приступим к вопросам слушателей? **T:** Давайте. **Ш:** Мы сделали опросник и попросили людей присылать вопросы. Мы не сможем ответить на все, но я думаю самый важный вопрос для слушателей будет таким - что случилось и почему Robo нет на IRC-канале Laravel довольное продолжительное время и как это повлияет на культуру сообщества :) **Т:** Я очень волновался по поводу Robo, вот на самом деле //(смеется)//. Я не видел его в течение полутора-двух недель, потому что он как бы основа, главный человек нашего IRC-канала. Он как, не знаю, как это сказать, чтоб не разозлить его, но он как родственник, за которого всем стыдно, но по-прежнему всем весело его слушать //(смеются)// **Ш:** У него такое немного странное чувство юмора, что в некоторых ситуациях хоть стой, хоть падай. **Т:** Для меня он олицетворение интернета в общем. Он грубоват, но в тоже время получаешь своего рода удовольствие от его постов. Но я очень рад, что он вернулся. == О формальном образовании в IT == **Ш:** Перейдем к следующему вопросу - у кого здесь есть традиционное программистское образование (Computer Science) и как это повлияло на вашу карьеру? **Дж:** У меня нет. **Т:** Я могу сказать, что у меня есть своего рода. У меня бакалавр в Информационных Технологиях, что включало в себя C~++ и разработку баз данных. Но большая часть курсов была по сетям и железу (hardware) и т.д. То есть я не скажу, что у меня традиционное CS образование, это больше бизнес в IT. Что касается того, как это повлияло на мою карьеру, я бы не сказал, что так уж сильно. После университета я пошел на первую работу, где у них были шести месячные курсы, и вот это то место где я реально выучился программировать. **Ш:** Я думаю, что я потерял слишком много, не получив традиционного образования в CS, потратив огромное количество времени на пробуксовку. Только последних 5-6 лет я понял, что нахожусь в своем маленьком пузыре и что при желании я могу из него выйти и получить все необходимые знания самостоятельно. **Т:** Да, надеюсь, что мои профессора не будут слушать это. Профессора были очень олдскульные, такие все полностью в хардкорном C~++, всё без графических интерфейсов. Я вот недавно говорил с человеком из Гарварда, и они в этом семестре собираются иметь курс по построению веб-приложения на Laravel. Я отправил ему копии своей книги. То есть все зависит от университета. Для меня образование было - построй маленькое приложение на C~++, а для них это будет - построй современное веб-приложение на современном фреймворке. **Дж:** Ого-го, это очень-очень круто. Нет, на самом деле. В своей работе в TutsPlus я разговариваю с огромным количеством людей и много студентов, и они учат все эти суперустаревшие техники из 90-х, как табличная верстка в CSS. **Т:** О да, мы использовали Dreamviewer в одном из курсов, но это был не CS курс, в CS курсах мы не использовали графических интерфейсов, как я уже говорил. Я на самом деле мог бы вообще не ходить в университет и пойти сразу на шестимесячные курсы на работу. Вообще мне было больше интересно не компьютерные предметы - английский, искусство и т.д. **Дж:** На самом деле и вины профессоров в этом нет. Технологии движутся настолько быстро, что я, например, не представляю себя через 20 лет на том же самом уровне. Например, если ты начал 20 лет, трудно тебя судить, что ты не на самой вершине технологий - у таких людей есть семьи и много обязанностей. **Ш:** Я думаю это все-таки зависит от человека, потому что я знаю людей, которым лет 60, и они очень крутые. **Дж:** О, нет, нет. Я не имел в виду, что если тебе больше определенного возраста, то ты не можешь этого делать, или тебе не хватает мозгов. Я имел в виду учителей, которые преподают в школах и универах - им надо писать все эти планы, готовить уроки, они не в индустрии и не разрабатывают приложения каждый день, поэтому им и тяжело угнаться за развитием. Мы сами еле-еле поспеваем за прогрессом. **Т:** Да и у всех разные области. Например, мой декан был гением, на самом деле гением. И если ты хочешь написать свою операционную систему, то мой факультет — это то место, где тебе надо быть. Все зависит от того, чем ты хотел заниматься. И все зависит от факультетов. **Ш:** Особенно в PHP, и я не хочу, чтоб это прозвучало негативно, но много людей думают, что формальное образование — это пустая трата времени и денег. Я не люблю такие рассуждения. Я сам, например, как человек у которого только школьное образование, я думаю если бы у меня был Магистр в CS, мне бы не пришлось потратить столько много времени, чтобы быть в том положении, в котором я сейчас. ООП и т.д. и т.п. Это как раз, чему тебя должны научить в универе. **Дж:** Я думаю тут еще стоит обсудить стоимость образования. Потому что общество говорит тебе - закончи школу, иди в универ и когда ты его закончишь у тебя будет $80,000 долгов. Да и образование может быть не таким уж и крутым, если говорить честно. Ты учишь не совсем то, что надо или что-нибудь устаревшее. **Т:** Тогда поступайте в мой колледж :) Он дешевый. У меня была стипендия, потому что я играл в группе, но все образование стоит примерно, как один год в топ-вузах США. **Ш:** Знаешь, что у вас должно быть написано на номерном знаке? "Приезжайте в Арканзас - у нас дешевые вузы!" :) (!!(tl_note)в США и Канаде в каждом штате вместо региона написано просто название штата и своего рода девиз, у меня, например, "Страна Дикой Розы" - //прим. пер.//!!) **Дж:** Тейлор, на чем ты играл? **Т:** Барабанил, веселые были времена. == Eloquent Model == **Ш:** Следующий вопрос от пришел к нам от Джефри, не ты ли это Джефри? В последнее время много обсуждается, что ты должен помещать в Eloquent Model, многие говорят, что только геттеры-сеттеры. **Дж:** Да, это мой вопрос. **Т:** Если посмотреть в мой код, в Ticket System, у меня там, кроме всего прочего есть Tag, Staff, также много Helpers. В каком состоянии этот пользователь, какие его действия. **Дж:** Это именно то, о чем я говорил. Многие люди думают, что правильно будет не изменять и не добавлять в Eloquent ничего вообще. **Ш:** Я думаю, что Eloquent Model это просто класс, и когда ты готов использовать ORM для работы с базой данных, ты просто помещаешь туда Eloquent. **Т:** Да. **Ш:** То есть если у меня есть методы, например, для статьи в блоге. Я не знаю должен ли я поместить команды для его изменения и удаления или же просто сравнивать ID напрямую в запросе и... **Т:** Да я тоже так делаю. На самом деле это непростая тема. Я, например, помещу Validators в модель. **Ш:** Тоже так делаю. В последнее времена я использую CRUD-сервисы, например, для создания пользователей. Я передам массив, из формы, например, и отправлю все в модель, там провалидирую. == О будущем фреймворка == **Ш:** Тейлор, каким ты видишь будущее Laravel через год? **Т:** На самом деле уже почти не остается таких больших вещей, с 4.2 мы собираемся отшлифовать имеющийся функционал, хотя я по-прежнему думаю, что валидация форм заслуживает дополнительного внимания. Не сама валидация, а в общем процесс обработки форм. **Дж:** Мне очень интересно как ты собираешься это сделать, мы обсуждали уже, но... **Т:** Я слышал от людей, что в Symfony с этим полный порядок, надо взглянуть как сделано там. Еще как всегда улучшим Eloquent. **Дж:** Мне кажется ты недавно спрашивал у людей, что они хотят в 4.2 и на удивление много людей просят интеграцию с Grunt. **Т:** Я даже не знаю, вроде как много есть туториалов, как все настраивать. Я не думаю, что мы будем это делать. **Ш:** Я хочу видеть развитие в улучшении фреймворка как такового - скорость, производительность, может вообще что-то убрать и сделать отдельным компонентом. **Дж:** О, еще одна вещь. Полиморфные отношения many-to-many, это ж уже в 4.1? **Т:** Да. **Ш:** Полностью, в обе стороны? **Т:** Я думаю есть некоторые ограничения, то есть придется попотеть. **Ш:** Вообще, на самом деле, когда у меня возникают все эти полиморфные штуки, я просто ручками все делаю. == О Symfony == **Ш:** Вот спрашивают, как ты относишься к компонентам Symfony, после того как ты переписал Routing. **Т:** Тут надо немножко вернуться назад. В самом начале я не собирался ничего делать, но в Laravel мы делаем слишком много кастомных вещей, поэтому и пришлось писать своё и с нуля. То есть, мы дошли до того момента, когда пришлось поддерживать два разных механизма Routing. То есть я начал использовать и продолжаю использовать их routing только для нахождения соответствия регулярных выражений. Но мы решили для остального использовать свои структуры данных, и это спасло нам много времени на самом деле. Так же мы отказались Symfony Sessions и Http, не из-за Symfony как такового, а из-за того, как PHP управляет сессиями, то есть если в голом PHP ты создаешь сессии, эта функция создает и куки, как будто ты вызвал функцию %%setcookie()%%. Это приводило к определенным проблемам, например, с юнит-тестированием. И это разрушало инкапсуляцию всего ядра HTTP Kernel, то есть мы просто сделали это очень простым, без хитростей управлением запросами HTTP. **Дж:** Что по скорости? **Т:** Не то, чтобы все стало намного быстрее, но роутинг стал в два раза быстрее точно. Что касается компонентов из Symfony, например, HttpFoundation - я не вижу, чтобы мы когда-либо отказались от него в будущем. **Ш:** Чем вы пользуетесь для разворачивания приложений? **Дж:** Ничего особенного, я пользуюсь FortRabbit и у меня есть еще парочка скриптов для биллинга. Но я не работаю в большой команде. Но Laracasts не такой уже большой проект, то есть не бложик, но и ничего особенного. **Ш:** Вообще я очень рад сотрудничеству с FortRabbit. Я имею в виду, если ты делаешь сайт для комьюнити, то кто платит за хостинг? **Дж:** Они супер хостинг провайдер, и они даже собираются переписывать свой dashboard на Laravel. **Ш:** Пользуетесь ли вы continious integration в том или ином виде? **Т:** Да, когда мы деплоим на дев сервер, у нас есть тесты, которые просто проверяю на прохождение. **Ш:** А что вы думаете о Capistrano? То есть система, которая все делает автоматически - разворачивает, прогоняет тесты acceptance, миграции. Я делаю все вручную. То есть я думаю, как это все автоматизировать. Поэтому я все жду, что меня кто-нибудь научит им пользоваться. //Пару минут обсуждают Google Analytics для сбора статистики посещений - как он крут, сложен и т.д.// //Последние десять минут идет обсуждение Laravel.io и как быстро развивается Laravel.//