- PVSM.RU - https://www.pvsm.ru -
Я побывал первый раз на конференции Laracon лично и, должен сказать, я получил там весьма приятный опыт — возможно, даже более приятный, чем я ожидал. Конференция была хорошо организована и доклады были разнообразными, информативными и действенными. Первый день был посвящен техническим вопросам и в основном вращался вокруг Laravel. Второй день был разбавлен выступлениями на самые разные темы, довольно занимательными и заставляющими задуматься.
Лично мне больше всего понравилась возможность встретиться с целой кучей людей, с которыми я общаюсь Твиттере.
Другой интересный момент — это возможность совершить небольшое ”пищевое паломничество” в Нью-Йорке. На Лараконе также было много бесплатной еды, и я даже немного ее попробовал, но я не собирался упускать эту возможность.
В этой статье будет краткий обзор того, что я узнал на презентациях. К сожалению, мне не удалось прослушать блок докладов от Science Fair. Я не делал заметок и не смогу представить детальный отчет по каждому выступлений. По некоторым выступлениям материала много, по другим — мало.
Тема: Создаем панель управления с помощью Laravel, Vue.js и Pusher
Мне уже был знаком материал, который Фрик осветил в своем выступлении, поскольку я уже читал запись в его блоге на эту тему. И всё же я узнал много нового, поскольку он кодил в прямом эфире, чтобы показать, как сделаны компоненты времени/погоды, статистики packagist и лента Твиттера.
Он также представил впечатляющие в статистику по опенсорс-пакетам Spatie.
Ссылки:
Тема: Как строить многопользовательские приложения
Презентация попала в точку, поскольку половина аудитории мечтала построить свое крутое SaaS-приложение. Том говорил о различных стратегиях баз данных: Он сравнивал, как можно использовать одну базу и как несколько, говорил об их достоинствах и недостатках. Также он говорил о других своих соображениях: например, о том, что надо сегментировать разные компоненты своего приложения (очереди, консольные команды, миграции, хранилище файлов, кэш и т.д.) и стратегии назначения доменов. Я поделюсь деталями ниже, так как его презентация уже есть в открытом доступе.
Том упоминал у себя в Твиттере, что он будет выступать впервые, так что для первого раза вышло вполне неплохо.
Ссылки:
Тема: CRUDово по дизайну
Адам в своем выступлении сфокусировался на том, что контроллеры надо делать как можно более RESTful. Вначале он показал скриншот Basecamp 3, который упоминал в своем твите David Heinemeier Hansson (DHH):
https://twitter.com/dhh/status/647163196839739392 [15]
Здесь надо обратить внимание на следующие показатели: количество контроллеров, маленькое количество методов на каждый контроллер и среднее число строк кода в каждом методе.
Адам писал код прямо на сцене для демо-приложения — Casthacker. В его файле маршрутов было два контроллера — PodcastsController с 13-ю методами и EpisodesController с 5-ю.
Он переработал их в дополнительные контроллеры при помощи следующих принципов:
Главная мысль демо была в том, что никогда не надо писать кастомные действия. Ограничьте методы контролера до 7 CRUD-действий: index
, create
, store
, show
, edit
, update
и destroy
.
// Примеры:
// До
PodcastsController@publish
PodcastsController@unpublish
// После
PublishedPodcastsController@store
PublishedPodcastsController@destroy
// До
PodcastsController@subscribe
// После
SubscriptionsController@store
Его презентацию и демо-приложение еще нельзя посмотреть онлайн, но он написал в Твиттере, что скоро всё выложит. Но если вы уже подписаны на его курс Test-Driven Laravel, то вы найдете эту тему в секции “Publishing Concert Drafts”.
Ссылки:
Тема: Laravel Scout + Algolia + Vue
Меня впечатлила презентация Максима, где он в прямом эфире показывал, как легко можно построить поисковый интерфейс для своего существующего проекта. Примерно за 15-20 минут он построил функционирующий поисковый интерфейс для списка выступающих на конференции. Для этого сделал следующее:
scout:import
.Если вы не знали, у Algolia Есть опция поиска в документации Laravel [20].
Ссылки:
Тема: Состояние Vue на 2017 год
Презентация Vue показалось мне немного сдержанной, и на то есть причины, поскольку Vue 2.x сейчас находится в стабильном состоянии и в ближайшее время не планируется никаких релизов с новыми крутыми функциями.
Первая конференция VueConf проходила в Польше в июне.
Эван в основном говорил о росте Vue: показывал впечатляющую статистику из Github (61.2k+ звезд), NPM (622k+ загрузок в месяц) и Chrome Devtools (228k+ активных пользователей в неделю). Он также приводил примеры роста экосистемы Vue. Самое примечательное из — Weex [26], мобильный UI-фреймворк.
Также я отметил ряд моментов:
Ссылки:
Тема: Управление зависимостями
Я пропустил довольно большой кусок этого выступления. Похоже, там предлагали Private Packagist (или Satis) в качестве решения задачи по мирроингу пакетов и управлению рисками зависимостей софта.
Во второй половине доклада дали хорошие подсказки для композера:
composer update [--dry-run] <package>
вместо полного composer update
. Метка dry-run
позволяет просматривать изменения без какого-либо влияния на файлы.composer.lock
в систему контроля версий. Используйте git checkout <branch> composer.lock
, чтобы разрешать конфликты слияния в lock-файле.Важное уточнение к последнему пункту: если вы работаете в команде, у вас будут возникать проблемы с composer.lock
, только если все одновременно запустят composer update
в своих ветках без какой-либо цели. Если следовать этим двум правилам, то проблемы будут возникать редко:
composer.lock
для обновления пакетов.composer update <package>
, если надо проапгрейдить конкретную зависимость при работе над какой-то функцией или при исправлении баги. Этот момент также надо обговаривать со всей командой, чтобы несколько человек ненароком не обновили один и тот же пакет, пока они работают над чем-то еще.Ссылки:
Тема: Laravel Horizon (возможно, там было что-то другое, но именно эта тема была у всех в голове)
Наконец, пришло время главного доклада. Тейлор прошелся по всему списку новых функций Laravel 5.5. Я включил в список ссылки на Laravel News и Laracasts, где можно изучить в деталях все функции. Меня особенно порадовали классы кастомных правил валидации. Я писал о них раньше в другой статье [34].
Но все взоры были прикованы к Horizon. Когда его наконец показали публике, я очень обрадовался, потому что это именно то, что мне нужно для моей текущей работы. Horizon — это пакет Laravel, который помогает управлять очередями через конфигурационный файл. И у него отличный интерфейс. Если вы часто страдаете от того, что приходится управлять несколькими проваленными задачами одновременно через командную строку, то Horizon вам понравится. Одно предостережение: он поддерживает только драйвер Redis, но это опенсорс, так что в сообществе, возможно, скоро добавят поддержку и других драйверов.
Сайт Horizon запустили на 2ой день конференции: https://horizon.laravel.com [35]
Тейлор также намекнул, что скоро будет больше обновлений. Почти наверняка они будут связаны с файлом cloud.yml
, который был у него в корневой папке демо-приложения, и командой cloud deploy
, при помощи которой он вносил изменения в конфигурацию.
Ссылки:
Тема: Настройка Laravel
Мэтт так тараторил, что шутка про повторный просмотр его выступления на Youtube на скорости 0.5 и шуткой-то не является.
Он рассказал о многих базовых и продвинутых техниках кастомизации Laravel, чтобы настроить его под особые нужды вашего приложения. Его презентация доступна в списке ссылок ниже, так что я не буду повторять материал.
Что меня особенно зацепило в его выступлении, так это его мысли о читабельности кода:
Мне вспомнилась иллюстрация, которую я видел в книге “Чистый код” за авторством Роберта Мартина (Дядя Боб):
Источник:
http://www.osnews.com/story/19266/WTFs_m [45]
Полагаю, плохая читабельность кода будет означать, что показатель “что это за хрень?!” в минуту будет довольно высоким.
Ссылки:
Тема: webpack — основные идеи и не только
Шон очень круто объяснил, чем является webpack для backend-разработчиков, которые в основном используют его вместе с Laravel Mix.
webpack — это компоновщик модулей. Он объединяет модули JavaScript (ES6, CommonJS и AMD) для запуска в браузере. У енго модульная архитектура, основанная на плагинах. 80% webpack-а построено на плагинах.
В остальной части доклада обсуждали компоненты плагинов и “tapable” элементы.
Материалы, возможно, будут полезны, если вы разрабатываете плагины или если вы пытаетесь отлаживать модуль, но в большинстве случаев от всех этих проблем прикроет Laravel Mix.
Вы можете помочь разработчикам webpack, если вы поддержите их на сайте Open Collective [50].
Ссылки:
Тема: Запуск и масштабирование стороннего проекта
Эту презентацию подготовили основатели Geocod.io, которые по особому стечению обстоятельств оказались мужем и женой. В своем докладе они рассказали о своем опыте по запуску и масштабированию стороннего проекта.
Многие идеи, которые они озвучили, вполне очевидны. Например, решай свою собственную проблему, создай MVP, ратифицируй свой продукт, знай свой рынок, не масштабируйся слишком рано и т.д. Впрочем, помимо таких идей они делились своим собственным опытом, поэтому слушать их было интересно. Также они дали пару практических советов по поводу переноса компании в США, страховки и SaaS-приложений для обслуживания клиентов и аналитики, которыми они пользовались сами.
Ссылки:
Тема: Отладка дизайна
Выступление Лауры содержало правильное сообщение для правильной целевой аудитории. Она подвела всех к мысли о том, что к редизайну сайта надо подходить с точки зрения разработчика — решать проблемы по шагам. Такой подход облегчает работу для того, у кого нет природной склонности к дизайну.
Она показала, как подобрать основной цвет, общую палитру, типографику (шрифты, иерархия, размеры), отступы, планировку и как навести блеск в конце. Все материалы были очень практичны. Для меня бонусом стал список инструментов, которые она использовала. Я перечислил их ниже.
Ссылки:
Тема: Как создавать приложения, которые люди будут покупать
Доклад Джастина был весьма занимательным. Возможно, он немного пересекался с предыдущим докладом о стороннем проекте, но подход был другой.
Ключевые мысли его доклада:
Он также порекомендовал пару книг. Ссылки на них вы увидите ниже.
Ссылки:
Тема: Убить чудовище
Большинству людей, возможно, было бы интересно послушать выступление Джеффри “Глубинный анализ цветовой темы, которую я использую”. Если судить по комментариям к его видеозаписям на Laracasts, людям интересны IDE-темы так же, как и сам код.
Джеффри озвучил 9 причин, почему нужно “Убить чудовище”. В этот момент я перестал делать записи, и поэтому у меня нет детального изложения его материала. Основная мысль, которую я запомнил (потому что он возвращался к ней много раз) — это то, что все переделки кода должны быть грубыми. Это значит, что если какая-то часть кода перестала вас устраивать, то переделайте ее самым простым из возможных способов. Если после этого ваш код не стал лучше, не бойтесь вернуться к предыдущей версии.
В основном он затрагивал те темы, которые в той или иной степени освещались на Laracasts: очистка внутреннего api, использование одиночных traits, уменьшение количества условий в views, событий/слушателей и объектов запросов.
Под конец он выдал пару интересных цитат. Мне особенно понравилась цитата про убийство кода. Я нашел ее источник и добавил к ссылкам ниже.
Если вам нужно доказательство будущего, то вам не нужен Терминатор T-1000. Вам нужен Кенни из Южного Парка. Нам нужен код, который можно убить легко и весело.
Ссылки:
Тема: Глубокое влияние
Тема, о которой говорил Джек, была довольно мрачная (по крайней мере, первая половина), но он всё же преподносил ее довольно легко и смог донести свою точку зрения. Ключевая мысль была в том что в определенный период нужно позволить себе глубоко сфокусироваться на своей работе, отказавшись от постоянных развлечений современной жизни. Мы постоянно ходим по краю и не углубляемся в реальную работу, и при этом мы очень заняты, но так не должно быть.
В зависимости от того, с какой точки зрения на это посмотреть, его высказывание было либо полностью неуместным, либо как раз-таки попало в точку, поскольку зал был полон людей, которые сидели, уткнувшись в свои ноутбуки или телефоны. Он также говорил о модели обучения, которую он назвал “Заплати вперед”. При такой модели вы обучаете троих людей, и каждый из них в свою очередь обучает еще троих, и так далее. Доклад прозвучал вполне уместно для конца конференции: он не освещал никаких технических вопросов, и всё же заставляла задуматься о некоторых вещах.
Ссылки:
Автор: r-moiseev
Источник [88]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/261697
Ссылки в тексте:
[1] Freek Van der Herten: https://medium.com/@freekmurze
[2] https://twitter.com/freekmurze: https://twitter.com/freekmurze
[3] https://spatie.be/en/opensource: https://spatie.be/en/opensource
[4] https://murze.be/2017/06/building-realtime-dashboard-powered-laravel-vue-2017-edition/: https://murze.be/2017/06/building-realtime-dashboard-powered-laravel-vue-2017-edition/
[5] https://github.com/spatie/dashboard.spatie.be: https://github.com/spatie/dashboard.spatie.be
[6] https://speakerdeck.com/freekmurze/dashboard-laraconus: https://speakerdeck.com/freekmurze/dashboard-laraconus
[7] Tom Schlick: https://medium.com/@tomschlick
[8] https://twitter.com/tomschlick: https://twitter.com/tomschlick
[9] https://multitenantlaravel.com/: https://multitenantlaravel.com/
[10] https://speakerdeck.com/tomschlick/building-multi-tenant-applications: https://speakerdeck.com/tomschlick/building-multi-tenant-applications
[11] https://github.com/HipsterJazzbo/Landlord: https://github.com/HipsterJazzbo/Landlord
[12] https://github.com/orchestral/tenanti: https://github.com/orchestral/tenanti
[13] https://github.com/tomschlick/townhouse: https://github.com/tomschlick/townhouse
[14] Adam Wathan: https://medium.com/@adamwathan
[15] https://twitter.com/dhh/status/647163196839739392: https://twitter.com/dhh/status/647163196839739392
[16] https://twitter.com/adamwathan: https://twitter.com/adamwathan
[17] https://adamwathan.me/: https://adamwathan.me/
[18] https://adamwathan.me/test-driven-laravel/: https://adamwathan.me/test-driven-laravel/
[19] http://transmission.vehikl.com/theres-a-model-hiding-in-your-rest-api/: http://transmission.vehikl.com/theres-a-model-hiding-in-your-rest-api/
[20] документации Laravel: https://laravel.com/docs/5.4
[21] https://twitter.com/maxiloc: https://twitter.com/maxiloc
[22] https://github.com/maxiloc/laracon17: https://github.com/maxiloc/laracon17
[23] https://laravel.com/docs/5.4/scout: https://laravel.com/docs/5.4/scout
[24] https://www.algolia.com/: https://www.algolia.com/
[25] https://github.com/algolia/vue-instantsearch: https://github.com/algolia/vue-instantsearch
[26] Weex: https://weex.incubator.apache.org/
[27] https://twitter.com/youyuxi: https://twitter.com/youyuxi
[28] https://github.com/vuejs/vue-test-utils: https://github.com/vuejs/vue-test-utils
[29] https://conf.vuejs.org/: https://conf.vuejs.org/
[30] https://twitter.com/naderman: https://twitter.com/naderman
[31] https://packagist.com/: https://packagist.com/
[32] https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control: https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control
[33] Taylor Otwell: https://medium.com/@taylorotwell
[34] другой статье: https://medium.com/koomai/model-factory-and-custom-validation-artisan-commands-in-laravel-5-5-cf7f62b8d70a
[35] https://horizon.laravel.com: https://horizon.laravel.com
[36] https://twitter.com/taylorotwell: https://twitter.com/taylorotwell
[37] https://laravel-news.com/category/laravel-5.5: https://laravel-news.com/category/laravel-5.5
[38] https://laracasts.com/series/whats-new-in-laravel-5-5: https://laracasts.com/series/whats-new-in-laravel-5-5
[39] https://laravel.com/docs/5.4/queues: https://laravel.com/docs/5.4/queues
[40] https://medium.com/@taylorotwell/introducing-laravel-horizon-4585f66e3e: https://medium.com/@taylorotwell/introducing-laravel-horizon-4585f66e3e
[41] https://horizon.laravel.com/: https://horizon.laravel.com/
[42] https://github.com/laravel/horizon: https://github.com/laravel/horizon
[43] https://mattstauffer.co/blog/introducing-laravel-horizon-a-dashboard-for-your-queues: https://mattstauffer.co/blog/introducing-laravel-horizon-a-dashboard-for-your-queues
[44] Matt Stauffer: https://medium.com/@mattstauffer
[45] http://www.osnews.com/story/19266/WTFs_m: http://www.osnews.com/story/19266/WTFs_m
[46] https://twitter.com/stauffermatt: https://twitter.com/stauffermatt
[47] https://speakerdeck.com/mattstauffer/custom-laravel: https://speakerdeck.com/mattstauffer/custom-laravel
[48] https://customlaravel.com/: https://customlaravel.com/
[49] Sean T. Larkin: https://medium.com/@TheLarkInn
[50] Open Collective: https://opencollective.com/webpack
[51] https://twitter.com/thelarkinn: https://twitter.com/thelarkinn
[52] https://github.com/webpack/webpack: https://github.com/webpack/webpack
[53] https://webpack.academy/: https://webpack.academy/
[54] https://github.com/webpack-contrib/awesome-webpack: https://github.com/webpack-contrib/awesome-webpack
[55] Mathias Hansen: https://medium.com/@MathiasHansen
[56] Michele Hansen: https://medium.com/@mjwhansen
[57] https://twitter.com/MathiasHansen: https://twitter.com/MathiasHansen
[58] https://twitter.com/mjwhansen: https://twitter.com/mjwhansen
[59] https://speakerdeck.com/minicodemonkey/launching-and-scaling-a-side-project: https://speakerdeck.com/minicodemonkey/launching-and-scaling-a-side-project
[60] https://geocod.io/: https://geocod.io/
[61] http://foundershield.com/: http://foundershield.com/
[62] https://helpflow.net/: https://helpflow.net/
[63] https://www.hotjar.com/: https://www.hotjar.com/
[64] https://www.intercom.com/: https://www.intercom.com/
[65] https://twitter.com/laurium: https://twitter.com/laurium
[66] https://designacademy.io: https://designacademy.io
[67] http://debuggingdesign.co/: http://debuggingdesign.co/
[68] https://dribbble.com/colors/: https://dribbble.com/colors/
[69] http://paletton.com: http://paletton.com
[70] https://land-book.com/: https://land-book.com/
[71] http://fontpair.co/: http://fontpair.co/
[72] https://fonts.google.com: https://fonts.google.com
[73] http://type-scale.com/: http://type-scale.com/
[74] Justin Jackson: https://medium.com/@mijustin
[75] https://twitter.com/mijustin: https://twitter.com/mijustin
[76] https://justinjackson.ca: https://justinjackson.ca
[77] https://devmarketing.xyz/: https://devmarketing.xyz/
[78] https://productpeople.club/: https://productpeople.club/
[79] http://www.whencoffeeandkalecompete.com/: http://www.whencoffeeandkalecompete.com/
[80] https://www.amazon.com/Competing-Against-Luck-Innovation-Customer/dp/0062435612: https://www.amazon.com/Competing-Against-Luck-Innovation-Customer/dp/0062435612
[81] Laracasts: https://medium.com/@laracasts
[82] https://twitter.com/jeffrey_way: https://twitter.com/jeffrey_way
[83] https://laracasts.com/: https://laracasts.com/
[84] http://kranglefant.tumblr.com/post/131808192355/future-proof: http://kranglefant.tumblr.com/post/131808192355/future-proof
[85] Jack McDade: https://medium.com/@jackmcdade
[86] https://twitter.com/jackmcdade: https://twitter.com/jackmcdade
[87] https://www.amazon.com/dp/1455586692/ref=cm_sw_r_cp_api_QoIEzb3RH7N2T: https://www.amazon.com/dp/1455586692/ref=cm_sw_r_cp_api_QoIEzb3RH7N2T
[88] Источник: https://habrahabr.ru/post/334918/
Нажмите здесь для печати.