diff --git a/csv/article/articles.csv b/csv/article/articles.csv
deleted file mode 100644
index ae2c7be..0000000
--- a/csv/article/articles.csv
+++ /dev/null
@@ -1,12667 +0,0 @@
-id,public,slug,head_title,head_description,head_image,title,section__id,preview,preview_img,page,css,js,date,tags
-25,False,kak-dobitsya-uspeha--i-nachat-zarabatyvat-2,Как добиться успеха и начать зарабатывать,Практическое пособие. История Йоси — специалиста по привлечению интернет-трафика,library/tild6162-3863-4732-a161-373466663939__filmzru_f_162599_eH70lPN.jpg,Как добиться успеха и начать зарабатывать 2,6,"Практическое пособие. История Йоси — специалиста по привлечению интернет-трафика. Он живет в Таиланде и зарабатывает тем, что приводит клиентов в разные бизнесы через интернет. Но пришел он к этому не сразу, а жалеет сейчас лишь о том, что не сделал так с самого начала.",library/tild6162-3863-4732-a161-373466663939__filmzru_f_162599_SaHU9lp.jpg,"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ПРАКТИЧЕСКОЕ ПОСОБИЕ
Как добиться успеха и начать зарабатывать
История Йоси
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
/ Этого человека на картинке зовут Йося
(В паспорте написано Иосиф, но все друзья и коллеги зовут его Йосей).
Сейчас он живет в Таиланде и зарабатывает тем, что приводит клиентов в разные бизнесы через интернет. Зарабатывает он в долларах, поэтому курсы валют его не сильно беспокоят.
Йося умный, будь как Йося.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
/ Но он не всегда был таким богатеньким Буратиной
со свободным графиком и кучей денег в кармане.
Еще пару лет назад он жил в Москве, учился в институте, по утрам пил чай, передавал в маршрутке за проезд.
Помогал старушке-соседке вынести мусор, учился прилежно. Но в глубине души он не был уверен, что это образование пригодится ему, несмотря на то, что он учился на экономическом факультете приличного вуза.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
/ Когда-то родители настояли на этом факультете, и Йося не стал упорствовать
но в 2012 году он понял — работать по специальности всю жизнь он не хочет.
Да и как многие студенты, Йося страдал от нехватки денег. Мир большой, столько всего хочется! Подработок полно, но сочетать их с учебой оказалось делом непростым.
То зарплата маленькая, то рабочий день полный, в общем, всё не то. Но Йося не падает духом. Он слишком долго занимался тем, что его не зажигает, поэтому ему особо терять нечего.
Трезво оценив свои перспективы, наш герой пришел к неутешительным выводам.
В институте никто не учит зарабатывать деньги. Экзамены, шпоры, рефераты, скаченные из интернета, никак не помогают заработать даже 20 тысяч рублей.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
А что же умел делать наш Йося?
-
-
-
-
-
-
-
-
-
-
-
-
/Да ничего особенного:
Частенько играл в онлайн игрушки, засиживался в соц. сетях, яростно переписываясь с «несогласными» на форумах, когда-то немного занимался спортом, в общем, обычная такая жизнь. Единственная реальная перспектива для Йоси — это#a4d2ffменеджер по продажам, ну не грузчиком же идти с высшим-то образованием!
Но менеджером по продажам работать не хотелось, перспектива постоянно висеть на телефоне и названивать клиентам, расписывая все прелести ненужных товаров.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Шанс стать очередным безработным выпускником нашего героя не устраивал, а вот заработок в интернете казался ему вполне подходящим делом и, воспользовавшись поисковиком, Йося пристально начал изучать, что же в этих самых «интернетах» можно заработать.
-
-
-
-
-
-
-
-
-
-
-
-
Йося сделал правильные выводы.
-
-
-
-
-
-
-
-
-
-
-
К 2016 году более половины долларов, потраченных в розничной торговле США, будут так или иначе связаны с Глобальной сетью. Торговля все больше и больше смещается в Интернет. В 2016 году доля Рунета в российском ВВП (показатель, отражающий рыночную стоимость всех конечных товаров и услуг, произведённых за год во всех отраслях экономики) составила 2,2%, что составляет 1,1 триллиона рублей.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ПЕРВЫЕ 50 000 РУБЛЕЙ
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
После тонны сомнительных сайтов о форексе, ставках, опционах и супер курсах «как заработать миллион за 1 вечер» Йося сделал вывод, что есть 3 основных направления, в которых можно заработать первые деньги, не сильно напрягаясь. Можно было стать либо веб-дизайнером, либо программистом, либо специалистом по привлечению интернет-трафика.
-
-
-
-
-
-
-
-
-
-
-
-
-
Специалист по трафику занимается комплексным привлечением посетителей на сайт, который продвигает. При этом использует все возможные инструменты продвижения: от социальных сетей до SEO продвижения.
-
-
-
-
-
-
-
-
-
-
-
-
/ Рисовать Йося с детства не умел, а Фотошоп казался ему чересчур не удобным в освоении, поэтому веб-дизайн отбросил сразу же.
/ Программирование виделось довольно сложным и занудным делом, доступным для быстрого освоения лишь персонажам из «Теории большого взрыва» или Анатолию Вассерману.
/ Оставался трафик. Ну, а что, посетители на сайт нужны всем и всегда. Это почти как менеджер по продажам, только не надо ни с кем общаться и никого уламывать купить «нашу хренотень». Просто приводи людей на сайт и получай за это деньги. То, что нужно. За чем же дело стало? Учебных материалов полно.
-
-
-
-
-
-
-
-
-
-
-
-
/ Контекстная реклама
-
-
-
-
-
-
-
-
-
-
-
-
-
С остатками упорства студента (которое он почти растерял к 5 курсу) Йося ринулся поглощать тему трафика и интернет продвижения сайтов. Тема оказалась настолько обширной, что для начала он решил остановиться на контекстной рекламе из поисковиков. В конце концов, за услуги по трафику чаще всего платят именно бизнесмены, а Яндекс директ и Google Adwords — наиболее подходящие инструменты для привлечения целевой аудитории.
-
-
-
-
-
-
-
-
-
-
-
-
Контекстная реклама — это текстовые объявления, которые показываются пользователям по запросам, если эти запросы рекламодатель добавил в настройки рекламной кампании. Объявления показываются пользователю именно в тот момент, когда он сам проявил интерес к товару или услуге.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Контекстная реклама в 2016 году остается одним из самых эффективных инструментов интернет-маркетинга. По данным АКАР на фоне общего снижения объема рекламного рынка контекст вырос на 17% за 9 месяцев 2015 года. По мнению экспертов британской компании Group M, канал продолжит рост на 6% в следующем году.
-
-
-
-
-
-
-
-
-
-
-
-
-
/Яндекс со всех сторон был ближе
и понятней, поэтому Йося принялся окучивать Яндекс Директ, благо большое количество бесплатных видео роликов, статей и советов от бывалых пользователей, размещенных в интернете, позволяло сделать первый шаг в настройке рекламных кампаний и самому в этом разобраться.
Настроив 3 тестовых кампании, Йося счел, что уже вполне разбирается в теме и может достигать неплохие результаты и решил, что тренироваться лучше не на «кошках», а на живых клиентах.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
И вот здесь наша история делает ключевой поворот
-
-
-
-
-
-
-
-
-
-
-
Йося разместил заказ на нескольких фрилансерских сайтах, и ему дико повезло. Ему, не имеющему ни отзывов, ни долгого времени работы, поступил заказ на продвижение в Директе салона красоты из Саратова (правда получил он его случайно, потому что засиделся в онлайн игре до 7 утра, и первым смог отреагировать на заявку на фрилансерском сайте).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Расчехлив все свои навыки общения, приобретенные в долгих интернет-спорах, Йося получил свой первый проект и бюджет на продвижение. Надо сказать, что легкость освоения оказалась иллюзорной — всё давалось с большим трудом. Успехи были локальными, деньги доставались тяжело. Заказчика постоянно не устраивала то цена клика, то малое количество заявок с сайта.
И тогда у Йоси созревает коварный план: учебу в сфере интернет-маркетинга должен оплатить работодатель. Оставив вольные хлеба, Йося устраивается помощником в серьезное digital-агентство на 20 000 рублей в месяц. Зарплата не ахти какая, зато есть доступ к интересным проектам, живым кейсам, а главное есть возможность экспериментировать в интернет-маркетинге за чужой счет, то есть за счет клиентов.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Юзабилити
-
-
-
-
-
-
-
-
-
-
-
Работа у Йоси не сказать, чтобы трудная. Он вплотную занялся настройкой контекстной рекламы для клиентов агентства. Поначалу ему доверили только одного заказчика — интернет магазин автозапчастей.
Но вот в чем засада, после начала работы клиент начал жаловаться на малое количество заявок, которое поступает с его рекламных кампаний. Понятное дело, ни Йосю, ни его начальника, ни клиентов такое не устраивает.
Особенно обидно Йосе за то, что он свою первую зарплату потратил не на яростный кутеж, а на большой тренинг по контекстной рекламе. Да и показатели по рекламным кампаниям у него довольно неплохие, а заявок у клиентов нет.
-
-
-
-
-
-
-
-
-
-
-
-
Юзабилити — это уровень удобства и простоты использования сайта. Чем выше уровень юзабилити, тем больше расположены к сайту посетители. Это напрямую влияет на лояльность, количество посещений и даже количество продаж.
-
-
-
-
-
-
-
-
-
-
-
-
-
Йося с упорством настоящего интернет-маркетолога продолжал работать над улучшением своих рекламных кампаний, пока не обратил свое пристальное внимание на сайт заказчика.
Сайт был сделан в лучших традициях 90-х годов: куча текстов, ссылок, менюшек, закладок и гиганский каталог автозапчастей, в котором только заказчик и мог разобраться. Иными словами, воронка продаж была выстроена очень криво.
(Йося еще не знал этого термина, но догадывался что одним лишь привлечением большего объема трафика проблему не решить).
Воронка продаж — маркетинговый термин, описывающий процесс продажи товара или услуги. Процесс продажи состоит из нескольких этапов, на каждом из которых часть клиентов отсеивается, и горлышко воронки сужается.
-
-
-
-
-
-
-
-
-
-
-
-
Йося на курсах по интернет маркетингу (на которые потратил последние сбережения) уже изучил основы юзабилити сайтов, а также основы продаж через сайт. Дождавшись очередной жалобы от этого клиента, Йося строго заявил, что работать в таком формате совершенно невозможно, что даже если он соберет весь трафик со всего интернета, продаж на этом сайте заказчику не видать, пока он этот сайт не переделает.
Заказчик Йосе попался сговорчивый, сам заказчик видел сайты своих конкурентов и понимал, что его интернет ресурс до них не дотягивает. Заказчик предложил Йосе (раз он такой умный) внести необходимые изменения в сайт, у заказчика был свой специалист по сайтам, который не разбирался в продажах, но был толковым технарем, от Йоси нужны были только конкретные рекомендации.
Проштудировав с полдюжины книг по юзабилити, Йося через неделю представил свой проект сайта для автозапчастей с конкретными рекомендациями по улучшению. Конечно, большинство из этих рекомендаций были почти нереализуемы в рамках небольшого регионального интернет-магазина, однако, внедрив даже треть всех рекомендаций, сайт магическим образом начал приносить заявки и заказы, при этом рекламные кампании Йося не менял.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
/ Повышение
Руководство диджитал-агенства, видя такие успехи, решило поощрить Йосю и резко повысить его в должности. Совсем недавно уволился старший менеджер по маркетингу, который отвечал за комплексное привлечение покупателей для топовых клиентов, а толкового спеца на адекватную зарплату найти было непросто.
Йосе предложили при соблюдении показателей занять вакантную должность интернет-маркетолога с зарплатой в 50 тысяч рублей.
-
-
-
-
-
-
-
-
-
-
-
-
-
Такой шанс наш герой упустить не мог, но в то же время он понимал, что его сегодняшний арсенал навыков явно недостаточен для этой работы. Воспользовавшись проверенными методиками он решил пойти на тренинг по интернет-маркетингу, где хотел прокачаться сразу по нескольким направлениям. Главным критерием при выборе такого рода тренеров для него стал опыт работы в сфере маркетинга и успешные кейсы с примерами работ.
Найдя по отзывам и кейсам успешную компанию, Йося решает вписаться в плотный 6-месячный практический курс. Надо сказать, учеба дается ему относительно легко, потому что на работе он может применить все полученные навыки.
-
-
-
-
-
-
-
-
-
-
-
-
На этом курсе он полностью осваивает сразу несколько направлений:
-
-
-
-
-
-
-
-
-
-
-
/ Веб-аналитику
С помощью инструментов аналитики Йося научился отслеживать все, что делают посетители на тех сайтах, которые он продвигает. Теперь он знает, где находятся дырки в воронке продаж, и какие каналы трафика стоит использовать.
/ Медийную рекламу
В этом разделе Йося изучил все нюансы баннерной рекламы. Теперь он точно знает, где и как использовать topline, rich-media, pop-under, screenglide и просто флеш баннера, и как именно это влияет на продажи сайта.
/ Видео рекламу
Йося знал, что такие видеохостинги как YouTube, Vimeo, Rutube, VideoClick, Imho — это отличная площадка для размещения рекламы. Но как именно это делать, и чем отличается формат pre-roll от overlay, он не понимал. На тренингах он восполнил этот пробел и научился получать дешевых клиентов с помощью видео.
/ SMM
Конечно, у Йоси была страничка в соц. сетях? и не одна, но он даже себе не представлял, какой огромный инструментарий имеют различные социальные сети для привлечения клиентов и увеличения продаж. Этот блок был для Йоси самым интересным.
/ RTB и CPA
RTB (Real Time Bidding) — технология закупки медийной рекламы с помощью онлайн-аукционов показалась Йосе довольно интересной штукой, позволяющей охватить большое количество потенциальных клиентов по приемлемым ценам, но самым перспективным моментом для Йоси оказалась работа по модели CPA. Cost Per Action, при которой оплачиваются только определенные действия пользователей на сайте рекламодателя.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Первая сотня
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Закончив свое обучение, Йося стал настоящим самураем трафика. Так же как истинный самурай он вел все свои рекламные кампании хладнокровно, четко, и эффективно. Отсекая все лишние и неэффективные методы и концентрируясь только на том что приносит максимальную выгоду для него и для клиентов.
Именно поэтому к нему постепенно стекались все основные клиенты агенства, и здесь наш герой столкнулся с проблемой, о которой он никогда не задумывался. Йося не справлялся с таким огромным потоком задач.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Йося не справлялся с таким огромным потоком задач
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Руководство агенства, довольно потирая руки и считая месячную прибыль (половину из которой обеспечивал лично Йося), предложило расширяться и нанять в помощь несколько стажеров — маркетологов.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
На это Йося заявил, что не готов нянчится со студентами за жалкие 50 тысяч рублей в месяц,
и раз уж он теперь становится руководителем отдела интернет-маркетинга, то и зарплата у него должна быть соответствующая, как минимум 100 тысяч рублей. Для убедительности наш герой привел примеры реальных вакансий на сайте HH.ru по запросу «руководитель отдела интернет-маркетинга».
Деваться руководству было некуда, Йося и вправду был ценным сотрудником и приносил компании намного больше, чем 100 тысяч рублей в месяц. Так началась управленческая карьера нашего героя. Теперь он не только отвечал за поток клиентов для заказчиков, но еще и руководил небольшим коллективом из двух фрилансеров на аутсорсинге, одного верстальщика и офисного контент-менеджера.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Незаметно для себя Йося превратился из простого студента в успешного руководителя
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Однако с каждым месяцем мешки под глазами у нашего героя приобретали все более темный цвет, а раздражение накапливалось. Постепенно его работа стала его главным раздражителем. На курсах он познакомился с несколькими предпринимателями, которые жили в Таиланде и работали только через интернет.
Йося завидовал им со страшной силой потому что двухнедельного отдыха ему явно не хватало, да и назойливые клиенты не давали нормально расслабится, обрывая личку, скайп и телефон. К тому же у Йоси появились даже собственные персональные клиенты, которые приходили к нему по рекомендациям действующих клиентов, а отказаться от калыма наше герой не мог.
И не только из-за денег, просто ему было интересно попробовать все, чему он научился на тренингах.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Но Йося хотел вырваться из офиса на волю, жить на юге, погрузив ноги в океан и уткнувшись в монитор ноутбука. Прикинув свои перспективы и посчитав, сколько он может зарабатывать самостоятельно как фрилансер, он понял, что до того же самого уровня ему все равно будет далеко.
Максимум он сможет делать по 70 тысяч рублей, привлекая клиентов для бизнесменов. Только Йося уже знал чит-код в этой сфере: если хочешь больше зарабатывать, ты должен уметь, то что не умеют другие.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
/ Мобильный маркетинг
Йося стал углубляться в самую перспективную отрасль — в мобильный маркетинг. Ходил на конференции, посвященные этой теме, посетил пару тренингов. Начал использовать в своей работе фишки и приемы, о которых рассказывали на этих мероприятиях.
-
-
-
-
-
-
-
-
-
-
-
-
-
В ближайшие пять лет появится 3 миллиарда новых интернет-пользователей, и большинство из них будет заходить на сайты через смартфон.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
150 000 РУБЛЕЙ
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
И вот, когда персональные проекты Йоси стали сопоставимы с его зарплатой, он решил принять стратегическое решение. Осуществить свою мечту — переехать в Таиланд и заниматься только своими собственными проектами.
У него уже сформировалась целая очередь из желающих клиентов. Оно и не удивительно — всем нужны заявки, трафик, продажи, а Йося за несколько лет стал именно тем человеком, которой может всё это обеспечить за разумные деньги, минуя всех посредников и агентства.
Пройдя целый ряд тренингов и специальных конференций, набив массу шишек, Йося стал не просто специалистом, а стратегическим интернет-маркетером.
На этом моменте мы и познакомились с нашим героем.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Сейчас он живет в Таиланде.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Точнее, зимует там, летом приезжает на родину на пару месяцев повидаться с друзьями и родителями, поностальгировать у березки, отдохнуть от азиатской жары. Если спросить у Йоси, что бы он изменил на этом долгом и тернистом пути, то наш герой ответил бы, не задумываясь:
-
-
-
-
-
-
-
-
-
-
-
-
-
Сразу же пошел бы обучаться комплексному интернет-маркетингу у профессионалов. Сэкономил бы кучу времени и нервов для себя, не повторяя нелепых ошибок, а также сэкономил бы мешок денег для клиентов, которые были моими подопытными кроликами. Смог бы уже через полгода реализовать свою мечту и жить в любой точке мира, а не тратить несколько лет на карабкание по карьерной лестнице!
-
-
-
-
-
-
-
Йося
Интернет-маркетолог
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Хотите за 6 месяцев начать зарабатывать столько же, сколько и Йося?
Дистанционный 6 месячный курс с гарантией трудоустройства ПРОФЕССИЯ ИНТЕРНЕТ-МАРКЕТОЛОГ ОТ А ДО Я!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-","
-
-","
-
-
-",2016-12-02 09:22:01.793493,"[10, 7]"
-19,True,mysli-vsluh,Мысли вслух,"На вопросы о профессии PR отвечает Дмитрий Захаров, заместитель директора департамента внешних коммуникаций Минкомсвязи России",library/badge_pr-questions_cover009_kbs7CuF.jpg,Мысли вслух,5,"На вопросы о профессии PR отвечает Дмитрий Захаров, заместитель директора департамента внешних коммуникаций Минкомсвязи России",library/cover009_wikimedia_PappLosAngeles02_xCbJ0Js.jpg,"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
«Мысли вслух»
На вопросы о профессии PR отвечает Дмитрий Захаров, заместитель директора департамента внешних коммуникаций Минкомсвязи России
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Дмитрий Захаров
Заместитель директора департамента внешних коммуникаций Минкомсвязи России
С 2012 года — заместитель директора департамента внешних коммуникаций Минкомсвязи России. Окончил факультет журналистики Московского государственного университета им. М. В. Ломоносова. Работал корреспондентом газеты «Коммерсантъ», возглавлял редакционное направление в газете РБК Daily.
-
-
-
-
-
-
-
-
-
-
~
-
-
-
-
-
-
-
-
-
-
— Стоит ли ожидать радикальных изменений в рабочем инструментарии PR-специалиста в ближайшее время? Каких именно?
— В целом ожидать чего-то принципиально нового в плане технологий PR сложно. Другое дело, что появляются новые каналы коммуникаций, которые, безусловно, оказывают влияние на характер нашей работы и в некотором смысле меняют аудиторию. Важным изменением стало появление социальных сетей. Работа в этом канале имеет свои особенности, в частности, технологические, однако она незначительно и непринципиально расширяет рабочий инструментарий PR-специалиста.
Когда появилось телевидение, оно не вытеснило прочие каналы коммуникаций, а просто отобрало у них часть аудитории за счет массовости и особенностей доставки сообщений. Теперь мы уже видим, что это был временный процесс, и появление интернета с набором специфических приложений снова привело к перераспределению долей в каналах коммуникаций. Однако это перераспределение также не стало окончательным: по-прежнему какие-то задачи необходимо решать с помощью телевидения, а какие-то — с помощью социальных сетей. Вместе с тем традиционные и давно изученные способы взаимодействия с аудиторией, как например, массовые мероприятия, практически не изменились, как и сам человек.
Стоит отметить, что информация стала гораздо доступнее, сильно упростился обмен сведениями, и это в целом повысило средний уровень потребителя информации.Таким образом, при планировании кампаний необходимо это учесть:эффективная работа все чаще требует творческого подхода, изобретательности.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— В какой момент руководство компании должно принять решение о начале PR-работы? Есть ли для этого наиболее благоприятный период в жизни организации?
— Когда аудитория или клиентская база,с которой взаимодействует компания, становится слишком большой для использования прочих методов взаимодействия или когда взаимодействие становится информационно слишком насыщенным, сложным. Это утверждение справедливо для хозяйствующих субъектов, которым нужно появляющиеся после осуществления капитальных затрат свободные средства на развитие направлять сначала на рекламу, потом на маркетинг, и только потом уже на PR.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Для микропредприятий или малых предприятий, чья выручка не достигает объема 2 млрд рублей в год, значительное число функций PR-специалиста может решить генеральный или коммерческий директор, обладающий некоторым уровнем культуры, вкуса, опытом общения с людьми и помощницей, которая обучена грамоте.
-
-
-
В случае политических или общественных организаций PR безусловно является неотъемлемой функциональной составляющей, и благоприятным моментом для привлечения к работе PR-специалиста может считаться даже такой, когда сама организация еще даже не возникла.
Основываясь на опыте, можно предположить, что в большинстве случаев наймом в штат полноценного PR-специалиста начинают интересоваться организации, которые переходят в категорию средних предприятий, то есть, их выручка достигает объема 2 млрд рублей в год.
Для микропредприятий или малых предприятий значительное число функций PR-специалиста может решить генеральный или коммерческий директор, обладающий некоторым уровнем культуры, вкуса, опытом общения с людьми и помощницей, которая обучена грамоте.
Недоумение вызывают коллективы стартаперов, которые в самом начале вместе с генеральным директором и техническим специалистом включают в стартовый состав предприятия штатного PR-специалиста, реже — дорогого PR-консультанта на гонорарах. Впрочем, эту особенность виртуальной экономики и серого рынка должны комментировать другие специалисты.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— В каких случаях компании требуется помощь агентства? Можно ли при наличии агентства обойтись без специалиста по коммуникациям внутри компании?
— Правильнее будет сказать: когда помощь агентства будет экономически оправдана. По моему глубокому убеждению, агентству, по крайней мере, в условиях России, правильнее доверять преимущественно организационную работу. Например, проведение семинара, тренинга, организацию пресс-конференции, корпоративного праздника и так далее.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Штатный специалист по коммуникациям — это заинтересованный сотрудник, который с каждым годом работы становится все большим экспертом по деятельности предприятия, находится под контролем руководства, и в долгосрочной перспективе обходится намного дешевле сотрудничества с PR-агентством.
-
-
-
Широкий опыт агентства с большим числом заказчиков может также позволить руководителю практики из агентства стать хорошим консультантом для штатного PR-специалиста для объективизации его собственных выводов о работе предприятия.
Все прочие действия, и в особенности контакты с ключевыми СМИ, должны быть строго завязаны на штатного специалиста.
При наличии агентства действительно можно обойтись без штатного специалиста по коммуникациям внутри компании, просто это будет дороже.
Таким образом, моя рекомендация предприятиям, которые задумались о развитии собственных PR-активностей — сначала отберите квалифицированного специалиста и лишь затем обращайтесь к услугам агентства. Безусловно, в случае, когда должность PR-специалиста создается в компании заново, весьма высок риск найма недостаточно квалифицированных кадров. Компенсация этого риска возможна за счет перевода другого сотрудника компании, например, заинтересованного специалиста из службы поддержки на должность PR-специалиста; за счет органического развития PR-специалиста с низкооплачиваемой ставки в ходе естественного расширения его обязанностей и увеличения объема знаний; за счет переманивания на штатную работу профильного сотрудника PR-агентства после некоторого успешного опыта сотрудничества.
Штатный специалист по коммуникациям — это заинтересованный сотрудник, который с каждым годом работы становится все большим экспертом по деятельности предприятия, находится под контролем руководства, и в долгосрочной перспективе обходится намного дешевле сотрудничества с PR-агентством. Экономическая оправданность штатной ставки PR-специалиста всегда может быть реализована за счет оперативного расширения его функционала. Например, за счет включения в перечень обязанностей такой важной составляющей, как работа с внутренней аудиторией — коллективом предприятия.
Случаи специфических сценариев применения ресурсов подрядчиков, такие как оперативный выход на рынок, организация городского фестиваля, организация массового обучения сотрудников и так далее, должны рассматриваться отдельно.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Специалисты по PR отмечают, что весьма ограничено предложение именно доступных финансово, но в то же время достаточно квалифицированных PR-услуг. Это, впрочем, еще один аргумент в пользу найма штатного специалиста по PR.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— С финансовой точки зрения, что выгоднее: расширение собственной пресс-службы или аутсорсинг услуг?
— Зависит от задач и особенностей ведения бизнеса. Однозначного ответа на этот вопрос нет, хотя я склоняюсь к тому, что расширение пресс-службы в случае положительной оценки ее работы финансово более выгодно. Как было сказано выше, специфические сценарии, требующие специфических решений, необходимо рассматривать отдельно.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— Куда смотрит рынок, чего хотят клиенты, какие услуги востребованы сегодня и будут востребованы завтра?
— Думаю, могу лишь ответить на вопрос про рынок. В настоящее время рынок смотрит в сторону повышения эффективности любого процесса, в том числе, деятельности PR-направления.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— На что нужно обратить внимание при выборе PR-агентства?
— Профессиональные рекомендации. Наличие экспертизы по конкретному направлению бизнеса. Подтвержденный опыт выполнения работ, которые планирует осуществить заказчик. Наличие всех необходимых инструментов для выполнения задачи. Репутация.
Добавлю, что как и при выборе холодильника, при выборе PR-агентства необходимо внимательно изучить негативные отзывы и понять, с какими недостатками можешь смириться, а с какими нет.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
~
-
-
-
-
-
-
-
-
-
-
-
— Какими личными компетенциями должен обладать PR-специалист?
— Уже очень много сказано о том, каким универсальным специалистом является сотрудник PR-агентства или пресс-службы. Правда, почему-то об этом чаще и громче всех рассказывают именно те PR-специалисты, которые такими компетенциями не обладают, когда дают интервью специализированным интернет-СМИ, которые будто бы созданы только для того, чтобы продвигать таких PR-специалистов.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Отмечу важное свойство успешной PR-деятельности — уместность. Оно подразумевает хорошее понимание того, что именно и в какой момент времени необходимо сделать или сказать. Или, например, сделать, но не сказать. Или сказать, но не сделать. Для этого PR-специалист должен уметь хорошо анализировать ситуацию, обладать глубокими знаниями сферы, в которой он работает. Он должен хорошо владеть устной и письменной речью, знать правила дорожного движения в профессии — в том числе, чтобы уметь их нарушать осознанно и безопасно.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
И, раз уж так складывается текущая ситуация на рынке PR-услуг, повторю, что PR-специалист должен быть способен адекватно оценивать практически все, но прежде всего самого себя.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
В тех областях, где высока цена индивидуально принимаемых решений, например, в политике или крупном бизнесе, важно умение выстраивать доверительные отношения между клиентом и PR-специалистом, которые в некотором смысле похожи на отношения врача и пациента. Не в последнюю очередь потому, что формирование успешной коммуникационной стратегии основывается прежде всего на глубоком понимании истинного положения вещей и понимания мотивации всех действующих лиц.
-
-
-
-
-
-
-
-
-
-
~
-
-
-
-
-
-
-
-
-
-
-
— Коммуникационная стратегия должна разрабатываться осознанно. Какие опорные вопросы нужно задать перед тем, как ее разработать?
— Первый, он же порой последний, важнейший вопрос — а где, собственно, сама стратегия развития предприятия? Последний — потому что многие организации пытаются получить коммуникационную стратегию, второстепенный, в общем-то, документ, не имея главного— стратегии развития бизнеса.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Возможно, я придерживаюсь весьма консервативного взгляда на вещи, однако PR, с моей точки зрения — это искусная эксплуатация реально существующей деятельности для формирования заранее продуманной репутации, которая, в свою очередь, уже может быть использована для решения бизнес-задач. То есть, вот мы идем в сложный поход, и с честью преодолеваем множество препятствий. Допустима коммуникационная стратегия, в рамках которой о своих достижениях мы расскажем в самом конце путешествия. Можно также много кричать после преодоления каждого брода. Вопрос цели. Однако без похода рассказать о его результатах будет довольно затруднительно.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— Вопрос: «Вы кто?» — «Я — PR-специалист», — «Ну и кого пиарите?» — всегда так спрашивают. Почему?
-
-
-
-
-
-
-
-
-
-
-
-
— Бытовое восприятие очень конкретное. На самом деле, большинство собеседников из числа простых людей совершенно не представляют себе, чем занимается PR-специалист, и это совершенно нормально. В ответ на вопрос «вы кто» я никогда не скажу, что я «PR-специалист», «пиарщик». Я отвечу «пресс-секретарь», потому что в большинстве случаев придется отвечать уже на следующий вопрос «а что ты делаешь» или «что это значит». Потому что когда этот следующий вопрос поступит, я скажу: знаете, вот у Путина есть пресс-секретарь Песков. Вот я примерно тем же самым занимаюсь, только на своем месте.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— Есть мнение: в сфере коммуникаций работает огромное количество интровертов, они признаются, что ежедневно их раздражает вплоть до 90% этой самой общественности. Но почему интроверты все-таки идут работать в связи с общественностью?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— Раздраженность PR-специалиста общественностью, с которой он взаимодействует более чем естественна. Это нормальная реакция, если учитывать, что собой представляет усредненный человек. Бывают, впрочем, и приятные открытия, но все же больше случаев, когда упавшая было на дно ущелья вера в человечество скатывается еще ниже. Что я могу посоветовать PR-специалистам, которые сильно страдают от этого? Развивайте эмпатию. Проще говоря, пытайтесь понять, почему человек делает именно так, и не пытайтесь судить его, но также вместе с тем и не бросайте попыток сделать мир вокруг себя лучше. Держи ум свой во аде и не отчаивайся
У меня нет в распоряжении статистики, что именно интроверты более склонны заниматься PR-деятельностью, но я могу допустить, что интроверты могут быть более успешны в ней благодаря своей склонности к аналитической работе, созерцанию, умению концентрироваться. Интроверты лучше слышат других людей.
Также вероятно интроверты могут быть более успешными PR-работниками в силу того, что чаще PR-специалисту приходится продвигать своего клиента, компанию, какой-то бренд, чем самого себя. Когда PR-специалист экстравертен, больше продвигает самого себя, к нему всегда больше вопросов у профессионального сообщества.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
~
-
-
-
-
-
-
-
-
-
-
-
— Как вы считаете, каждой ли компании необходим корпоративный PR? Или все зависит от сферы деятельности и задач, которые поставлены перед руководителями и сотрудниками?
— Я уже отвечал на близкий по смыслу вопрос и повторю, что все очень сильно зависит от размера компании и возможностей руководства пообщаться с каждым сотрудником.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Вообще же задачу информационного взаимодействия с коллективом считаю одной из важнейших и порой именно ее решение способно повысить эффективность работы предприятия. Многие же, особенно в коммерции, бросаются воздействовать на внешнюю аудиторию, не озаботившись сплоченностью и идеологической целостностью коллектива.
Проблема, возможно, в том, что многие руководства по внутренним коммуникациям плохо переведены на русский язык, и работой с внутренней аудиторией, как-то так сложилось, занимается менее квалифицированный специалист, чем тот, кто работает с внешней. И так-то ему, бедному, приходится работать с «мишен» и «вижен», а еще у него и опыта мало, харизмы не хватает, и выходит в итоге очень неестественный и поэтому невоспринимаемый большинством конструкт. А потому еще что внутренняя аудитория — ну она как будто бы не несет столько рисков, как внешняя. Вместе с тем это очень важная задача — говорить на одном языке с сотрудниками предприятия, понимать их ценности, иметь возможность что-то им предложить и это предлагаемое правильно спозиционировать.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— Сегодня многие российские компании работают с западными партнерами. Есть ли различия в подходе и в чем это выражается?
— В вопросе не сказано, в подходе к чему именно. Предполагаю, что речь идет о PR-деятельности. Мой опыт сотрудничества с западными партнерами не такой обширный. Могу лишь поделиться наблюдениями общего характера.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Западный PR по большей части планируемый, отечественный PR — ситуативный.
-
-
-
Западное общество очень сильно зарегулировано, на каждый шаг прописана инструкция, рассчитана стоимость реализации тех или иных задач, глубоко разработаны рабочие методики, они давно эффективно и стандартизировано преподаются, множество процессов сильно автоматизировано. Огромный плюс всего этого — неизменно поражающая нас, русских людей, эффективность, проявляющаяся буквально во всем: от строительства дорог до разработки новых материалов. Огромный минус — отсутствие той свободы мышления, развития, творческого потенциала, который может продемонстрировать даже заурядный наш студент. Западный PR по большей части планируемый, отечественный PR — ситуативный. С одной стороны, западные коллеги призывают мыслить за рамками ситуации, с другой стороны, они очень сильно ограничены в готовности результаты этих мыслительных процессов принимать и воплощать. Точнее, готовы, но за рамками ситуации может мыслить владелец компании, всем остальным это незачем. И их ценность зачастую состоит именно в знании множества протоколов и процессов. То есть, например, им важно иметь хорошую память, но не так важно уметь хорошо соображать, анализировать, сделать что-то из ничего, как это бывает необходимо в сугубо российской практике.
Всегда с некоторым недоумением наблюдал за так называемыми «мозговыми штурмами» по западному образцу, когда значительная группа людей билась над решением на мой взгляд весьма тривиальной задачи. Все всех должны были выслушать, каждое мнение должно было быть учтено и обсуждено — все согласно процессу. Решение меж тем с самого начала лежало на поверхности.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— В период кризиса многие работодатели отказываются, в первую очередь, от PR-специалистов. Что Вы можете сказать по этому поводу? К чему может привести данное действие? На Ваш взгляд, насколько это решение было бы правильным или неправильным?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— Это очень странное действие, которое, на мой взгляд, свидетельствует о полном непонимании руководством компании функции PR, отсутствии адекватной оценки труда PR-специалиста, неготовности адаптировать функционал этого специалиста под изменившиеся требования. Собственно, любому PR-специалисту, который идет на собеседование по поводу работы, я бы посоветовал сначала хорошенько выяснить у начальства, а отдает ли оно себе отчет в том, кого и для решения каких задач оно нанимает. Особенно, если это заново создаваемое направление.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
...любому PR-специалисту, который идет на собеседование по поводу работы, я бы посоветовал сначала хорошенько выяснить у начальства, а отдает ли оно себе отчет в том, кого и для решения каких задач оно нанимает.
-
-
-
Чем PR-специалист может помочь в кризис? Многим. Прежде всего, не забывайте, что это достаточно хороший аналитик и коммуникатор, который может провести внутренний аудит предприятия, подготовить отчет о том, как компания может измениться изнутри, чтобы адаптироваться к изменившимся условиям на рынке.
У медали всегда две стороны, и нельзя обвинять в расставании только лишь работодателя. Если PR-специалист в рабочее время предпочитает записывать видео от первого лица, ездить за счет компании на все профессиональные тусовки, проводить время на встречах и конференциях, такой сотрудник действительно становится первым кандидатом на сокращение.
-
-
-
-
-
-
-
-
-
-
-
~
-
-
-
-
-
-
-
-
-
-
-
— Насколько хорошо или, наоборот, плохо развит в России репутационный менеджмент? И в целом, важен ли он для компании?
— Репутация — ценнейший результат долгосрочной, то есть, стратегической работы команды PR-специалистов. Репутация стоит очень дорого и обращаться с ней нужно очень аккуратно, именно поэтому репутационный менеджмент — явление не самое распространенное, а следовательно, специалистов по данному направлению не так уж и много.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Важное свойство хорошей репутации — она очень долго и трудно зарабатывается, при этом самому рынку PR-услуг в России не столько лет, сколько нужно, например, для формирования устойчивой международной репутации. Репутационный менеджмент, как я его понимаю, должен подчинять себе множество процессов, в том числе и сугубо коммерческих. В то же время большинство предприятий не занимаются долгосрочным планированием — жизнь не позволяет.
Отмечу также, что склонность торгануть железобетонной столетней репутацией производителя, например, автомобилей у эффективного западного менеджмента в последнее время проявляется все чаще. Просто потому, что в современной экономике репутация — это лишь один из показателей эффективности бизнеса, и если ее слишком много, ее тоже могут сократить.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— Как Вы оцениваете работу PR-специалистов российских политиков? Можете привести пример идеального политического PR-специалиста?
— Без комментариев.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— Каким образом вы получаете обратную связь от стейкхолдеров и целевых аудиторий?
— По электронной почте и в ходе личного общения.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— Универсальны ли навыки PR-специалиста на рынке труда или переход из IT в сельское хозяйство (например) невозможен?
-
-
-
-
-
-
-
-
-
-
-
-
— Мой собственный опыт показывает, что для достижения хорошего уровня информированности или, образно говоря, загрузки всей необходимой информации о деятельности организации в оперативную память PR-специалисту нужен примерно один год. Полагаю, что за это время можно наработать некоторое количество связей внутри организации и в отрасли. Примерно через три года вдумчивой работы на одном месте PR-специалист получает достаточный экспертный уровень, проходит несколько этапов взаимодействия со СМИ, которые позволяют приобрести PR-специалисту, как говорится, определенный вес на рынке.
Таким образом, менять индустрии можно, но делать это часто я бы не рекомендовал. Очевидно также то, что полученный ранее опыт PR-специалиста никуда не уходит, просто на пик своей формы, а значит эффективности, специалист на каждом новом месте работы мгновенно не выйдет.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— Какие инструменты или показатели позволяют оценить качество медиа-присутствия бренда?
— Ничего нового не назову: мониторинги, опросы потребителей и экспертов, собственная аналитика.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— Какой отпечаток оставляет профессия PR-специалиста на личности человека?
— Слабого калечит, сильного воспитывает.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— Как выстраивать внутренние коммуникации в кризисное время?
— Лучше всего выстроить внутренние коммуникации до наступления кризисного времени. То есть, постоянно анализировать ситуацию, прогнозировать, готовиться заранее, иметь на случай кризисов конкретные регламенты. Никто, в общем, не ждет приземления гражданского авиалайнера на воду, но как себя вести в случае такового, написано в каждой пассажирской инструкции.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— Какие актуальные методы оценки эффективности PR внедряют в систему сегодня ведущие специалисты в области PR?
-
-
-
-
-
-
-
-
-
-
-
-
— Набор инструментов оценки эффективности работы PR-службы весьма широк. Можно смотреть на результат, можно заниматься количественными измерениями. Истина, на мой взгляд, как и всегда, находится где-то посередине, то есть, без выполнения некоторого легко измеряемого и понятно оцениваемого объема работы сложно добиться требуемого результата.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— Существуют ли универсальные правила, которые позволяют сформировать пул лояльных журналистов?
— С журналистами как с друзьями и родственниками необходимо обращаться бережно, но при этом понимать, что журналисты все же имеют одно существенное отличие от друзей и родственников. Оно заключается в следующем: их лояльность кончается там, где начинается их профессиональный долг. Требовать большего от журналиста просто неприлично.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
~
-
-
-
-
-
-
-
-
-
-
-
— Что делать, чтобы журналисты доверяли информации компании и были лояльны
и при этом не нарушить границы корпоративных задач?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
— Необходимо выполнить два обязательных условия. Первое: обеспечить адекватность корпоративных задач. Второе: обеспечить журналистов максимально качественной, подробной информацией, по которой сотрудники пресс-службы всегда готовы давать необходимый журналистам объем пояснений и уточнений.
-
-
-
-
-
-
-
-
-
-
-
-
В современных условиях очень важную роль играет качество информации, и в силу целого ряда особенностей, одна из которых финансовая, у сотрудников PR-служб гораздо больше возможностей обеспечивать это качество.
-
-
-
-
-
-
-
-
-
-
-
-
Дистанционный курс РАСО | Практика Профессия PR-менеджер
-
-
-
Перейти к курсу
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
В оформлении обложки использовано фото Modified version of Commons File: PappLosAngeles.jpg, 7 January 2011 Source Commons File:PappLosAngeles.jpg Author Blackbow17 This file is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-","
-
-","
-
-
-",2016-12-01 15:06:54.287850,[11]
-17,True,kak-dobitsya-uspeha--i-nachat-zarabatyvat,Как добиться успеха и начать зарабатывать,Практическое пособие. История Йоси — специалиста по привлечению интернет-трафика,library/tild6162-3863-4732-a161-373466663939__filmzru_f_162599.jpg,Как добиться успеха и начать зарабатывать,6,"Практическое пособие. История Йоси — специалиста по привлечению интернет-трафика. Он живет в Таиланде и зарабатывает тем, что приводит клиентов в разные бизнесы через интернет. Но пришел он к этому не сразу, а жалеет сейчас лишь о том, что не сделал так с самого начала.",library/tild6162-3863-4732-a161-373466663939__filmzru_f_162599_GvwJmgH.jpg,"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ПРАКТИЧЕСКОЕ ПОСОБИЕ
Как добиться успеха и начать зарабатывать
История Йоси
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
/ Этого человека на картинке зовут Йося
(В паспорте написано Иосиф, но все друзья и коллеги зовут его Йосей).
Сейчас он живет в Таиланде и зарабатывает тем, что приводит клиентов в разные бизнесы через интернет.
Зарабатывает он в долларах, поэтому курсы валют его не сильно беспокоят.
Йося умный, будь как Йося.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
/ Но он не всегда был таким богатеньким Буратиной
со свободным графиком и кучей денег в кармане.
Еще пару лет назад он жил в Москве, учился в институте, по утрам пил чай, передавал в маршрутке за проезд.
Помогал старушке-соседке вынести мусор, учился прилежно. Но в глубине души он не был уверен, что это образование пригодится ему, несмотря на то, что он учился на экономическом факультете приличного вуза.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
/ Когда-то родители настояли на этом факультете, и Йося не стал упорствовать
но в 2012 году он понял — работать по специальности всю жизнь он не хочет.
Да и как многие студенты, Йося страдал от нехватки денег. Мир большой, столько всего хочется! Подработок полно, но сочетать их с учебой оказалось делом непростым.
То зарплата маленькая, то рабочий день полный, в общем, всё не то. Но Йося не падает духом. Он слишком долго занимался тем, что его не зажигает, поэтому ему особо терять нечего.
Трезво оценив свои перспективы, наш герой пришел к неутешительным выводам.
В институте никто не учит зарабатывать деньги. Экзамены, шпоры, рефераты, скаченные из интернета, никак не помогают заработать даже 20 тысяч рублей.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
А что же умел делать наш Йося?
-
-
-
-
-
-
-
-
-
-
-
-
/Да ничего особенного:
Частенько играл в онлайн игрушки, засиживался в соц. сетях, яростно переписываясь с «несогласными» на форумах, когда-то немного занимался спортом, в общем, обычная такая жизнь. Единственная реальная перспектива для Йоси — это менеджер по продажам, ну не грузчиком же идти с высшим-то образованием!
Но менеджером по продажам работать не хотелось, перспектива постоянно висеть на телефоне и названивать клиентам, расписывая все прелести ненужных товаров.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Шанс стать очередным безработным выпускником нашего героя не устраивал, а вот заработок в интернете казался ему вполне подходящим делом и, воспользовавшись поисковиком, Йося пристально начал изучать, что же в этих самых «интернетах» можно заработать.
-
-
-
-
-
-
-
-
-
-
-
-
Йося сделал правильные выводы.
-
-
-
-
-
-
-
-
-
-
-
К 2016 году более половины долларов, потраченных в розничной торговле США, будут так или иначе связаны с Глобальной сетью. Торговля все больше и больше смещается в Интернет. В 2016 году доля Рунета в российском ВВП (показатель, отражающий рыночную стоимость всех конечных товаров и услуг, произведённых за год во всех отраслях экономики) составила 2,2%, что составляет 1,1 триллиона рублей.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ПЕРВЫЕ 50 000 РУБЛЕЙ
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
После тонны сомнительных сайтов о форексе, ставках, опционах и супер курсах «как заработать миллион за 1 вечер» Йося сделал вывод, что есть 3 основных направления, в которых можно заработать первые деньги, не сильно напрягаясь. Можно было стать либо веб-дизайнером, либо программистом, либо специалистом по привлечению интернет-трафика.
-
-
-
-
-
-
-
-
-
-
-
-
-
Специалист по трафику занимается комплексным привлечением посетителей на сайт, который продвигает. При этом использует все возможные инструменты продвижения: от социальных сетей до SEO продвижения.
-
-
-
-
-
-
-
-
-
-
-
-
/ Рисовать Йося с детства не умел, а Фотошоп казался ему чересчур не удобным в освоении, поэтому веб-дизайн отбросил сразу же.
/ Программирование виделось довольно сложным и занудным делом, доступным для быстрого освоения лишь персонажам из «Теории большого взрыва» или Анатолию Вассерману.
/ Оставался трафик. Ну, а что, посетители на сайт нужны всем и всегда. Это почти как менеджер по продажам, только не надо ни с кем общаться и никого уламывать купить «нашу хренотень». Просто приводи людей на сайт и получай за это деньги. То, что нужно. За чем же дело стало? Учебных материалов полно.
-
-
-
-
-
-
-
-
-
-
-
-
/ Контекстная реклама
-
-
-
-
-
-
-
-
-
-
-
-
-
С остатками упорства студента (которое он почти растерял к 5 курсу) Йося ринулся поглощать тему трафика и интернет продвижения сайтов. Тема оказалась настолько обширной, что для начала он решил остановиться на контекстной рекламе из поисковиков. В конце концов, за услуги по трафику чаще всего платят именно бизнесмены, а Яндекс директ и Google Adwords — наиболее подходящие инструменты для привлечения целевой аудитории.
-
-
-
-
-
-
-
-
-
-
-
-
Контекстная реклама — это текстовые объявления, которые показываются пользователям по запросам, если эти запросы рекламодатель добавил в настройки рекламной кампании. Объявления показываются пользователю именно в тот момент, когда он сам проявил интерес к товару или услуге.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Контекстная реклама в 2016 году остается одним из самых эффективных инструментов интернет-маркетинга. По данным АКАР на фоне общего снижения объема рекламного рынка контекст вырос на 17% за 9 месяцев 2015 года. По мнению экспертов британской компании Group M, канал продолжит рост на 6% в следующем году.
-
-
-
-
-
-
-
-
-
-
-
-
-
/Яндекс со всех сторон был ближе
и понятней, поэтому Йося принялся окучивать Яндекс Директ, благо большое количество бесплатных видео роликов, статей и советов от бывалых пользователей, размещенных в интернете, позволяло сделать первый шаг в настройке рекламных кампаний и самому в этом разобраться.
Настроив 3 тестовых кампании, Йося счел, что уже вполне разбирается в теме и может достигать неплохие результаты и решил, что тренироваться лучше не на «кошках», а на живых клиентах.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
И вот здесь наша история делает ключевой поворот
-
-
-
-
-
-
-
-
-
-
-
Йося разместил заказ на нескольких фрилансерских сайтах, и ему дико повезло. Ему, не имеющему ни отзывов, ни долгого времени работы, поступил заказ на продвижение в Директе салона красоты из Саратова (правда получил он его случайно, потому что засиделся в онлайн игре до 7 утра, и первым смог отреагировать на заявку на фрилансерском сайте).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Расчехлив все свои навыки общения, приобретенные в долгих интернет-спорах, Йося получил свой первый проект и бюджет на продвижение. Надо сказать, что легкость освоения оказалась иллюзорной — всё давалось с большим трудом. Успехи были локальными, деньги доставались тяжело. Заказчика постоянно не устраивала то цена клика, то малое количество заявок с сайта.
И тогда у Йоси созревает коварный план: учебу в сфере интернет-маркетинга должен оплатить работодатель. Оставив вольные хлеба, Йося устраивается помощником в серьезное digital-агентство на 20 000 рублей в месяц. Зарплата не ахти какая, зато есть доступ к интересным проектам, живым кейсам, а главное есть возможность экспериментировать в интернет-маркетинге за чужой счет, то есть за счет клиентов.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Юзабилити
-
-
-
-
-
-
-
-
-
-
-
Работа у Йоси не сказать, чтобы трудная. Он вплотную занялся настройкой контекстной рекламы для клиентов агентства. Поначалу ему доверили только одного заказчика — интернет магазин автозапчастей.
Но вот в чем засада, после начала работы клиент начал жаловаться на малое количество заявок, которое поступает с его рекламных кампаний. Понятное дело, ни Йосю, ни его начальника, ни клиентов такое не устраивает.
Особенно обидно Йосе за то, что он свою первую зарплату потратил не на яростный кутеж, а на большой тренинг по контекстной рекламе. Да и показатели по рекламным кампаниям у него довольно неплохие, а заявок у клиентов нет.
-
-
-
-
-
-
-
-
-
-
-
-
Юзабилити — это уровень удобства и простоты использования сайта. Чем выше уровень юзабилити, тем больше расположены к сайту посетители. Это напрямую влияет на лояльность, количество посещений и даже количество продаж.
-
-
-
-
-
-
-
-
-
-
-
-
-
Йося с упорством настоящего интернет-маркетолога продолжал работать над улучшением своих рекламных кампаний, пока не обратил свое пристальное внимание на сайт заказчика.
Сайт был сделан в лучших традициях 90-х годов: куча текстов, ссылок, менюшек, закладок и гиганский каталог автозапчастей, в котором только заказчик и мог разобраться. Иными словами, воронка продаж была выстроена очень криво.
(Йося еще не знал этого термина, но догадывался что одним лишь привлечением большего объема трафика проблему не решить).
Воронка продаж — маркетинговый термин, описывающий процесс продажи товара или услуги. Процесс продажи состоит из нескольких этапов, на каждом из которых часть клиентов отсеивается, и горлышко воронки сужается.
-
-
-
-
-
-
-
-
-
-
-
-
Йося на курсах по интернет маркетингу (на которые потратил последние сбережения) уже изучил основы юзабилити сайтов, а также основы продаж через сайт. Дождавшись очередной жалобы от этого клиента, Йося строго заявил, что работать в таком формате совершенно невозможно, что даже если он соберет весь трафик со всего интернета, продаж на этом сайте заказчику не видать, пока он этот сайт не переделает.
Заказчик Йосе попался сговорчивый, сам заказчик видел сайты своих конкурентов и понимал, что его интернет ресурс до них не дотягивает. Заказчик предложил Йосе (раз он такой умный) внести необходимые изменения в сайт, у заказчика был свой специалист по сайтам, который не разбирался в продажах, но был толковым технарем, от Йоси нужны были только конкретные рекомендации.
Проштудировав с полдюжины книг по юзабилити, Йося через неделю представил свой проект сайта для автозапчастей с конкретными рекомендациями по улучшению. Конечно, большинство из этих рекомендаций были почти нереализуемы в рамках небольшого регионального интернет-магазина, однако, внедрив даже треть всех рекомендаций, сайт магическим образом начал приносить заявки и заказы, при этом рекламные кампании Йося не менял.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
/ Повышение
Руководство диджитал-агенства, видя такие успехи, решило поощрить Йосю и резко повысить его в должности. Совсем недавно уволился старший менеджер по маркетингу, который отвечал за комплексное привлечение покупателей для топовых клиентов, а толкового спеца на адекватную зарплату найти было непросто.
Йосе предложили при соблюдении показателей занять вакантную должность интернет-маркетолога с зарплатой в 50 тысяч рублей.
-
-
-
-
-
-
-
-
-
-
-
-
-
Такой шанс наш герой упустить не мог, но в то же время он понимал, что его сегодняшний арсенал навыков явно недостаточен для этой работы. Воспользовавшись проверенными методиками он решил пойти на тренинг по интернет-маркетингу, где хотел прокачаться сразу по нескольким направлениям. Главным критерием при выборе такого рода тренеров для него стал опыт работы в сфере маркетинга и успешные кейсы с примерами работ.
Найдя по отзывам и кейсам успешную компанию, Йося решает вписаться в плотный 6-месячный практический курс. Надо сказать, учеба дается ему относительно легко, потому что на работе он может применить все полученные навыки.
-
-
-
-
-
-
-
-
-
-
-
-
На этом курсе он полностью осваивает сразу несколько направлений:
-
-
-
-
-
-
-
-
-
-
-
/ Веб-аналитику
С помощью инструментов аналитики Йося научился отслеживать все, что делают посетители на тех сайтах, которые он продвигает. Теперь он знает, где находятся дырки в воронке продаж, и какие каналы трафика стоит использовать.
/ Медийную рекламу
В этом разделе Йося изучил все нюансы баннерной рекламы. Теперь он точно знает, где и как использовать topline, rich-media, pop-under, screenglide и просто флеш баннера, и как именно это влияет на продажи сайта.
/ Видео рекламу
Йося знал, что такие видеохостинги как YouTube, Vimeo, Rutube, VideoClick, Imho — это отличная площадка для размещения рекламы. Но как именно это делать, и чем отличается формат pre-roll от overlay, он не понимал. На тренингах он восполнил этот пробел и научился получать дешевых клиентов с помощью видео.
/ SMM
Конечно, у Йоси была страничка в соц. сетях? и не одна, но он даже себе не представлял, какой огромный инструментарий имеют различные социальные сети для привлечения клиентов и увеличения продаж. Этот блок был для Йоси самым интересным.
/ RTB и CPA
RTB (Real Time Bidding) — технология закупки медийной рекламы с помощью онлайн-аукционов показалась Йосе довольно интересной штукой, позволяющей охватить большое количество потенциальных клиентов по приемлемым ценам, но самым перспективным моментом для Йоси оказалась работа по модели CPA. Cost Per Action, при которой оплачиваются только определенные действия пользователей на сайте рекламодателя.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Первая сотня
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Закончив свое обучение, Йося стал настоящим самураем трафика. Так же как истинный самурай он вел все свои рекламные кампании хладнокровно, четко, и эффективно. Отсекая все лишние и неэффективные методы и концентрируясь только на том что приносит максимальную выгоду для него и для клиентов.
Именно поэтому к нему постепенно стекались все основные клиенты агенства, и здесь наш герой столкнулся с проблемой, о которой он никогда не задумывался. Йося не справлялся с таким огромным потоком задач.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Йося не справлялся с таким огромным потоком задач
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Руководство агенства, довольно потирая руки и считая месячную прибыль (половину из которой обеспечивал лично Йося), предложило расширяться и нанять в помощь несколько стажеров — маркетологов.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
На это Йося заявил, что не готов нянчиться со студентами за жалкие 50 тысяч рублей в месяц,
и раз уж он теперь становится руководителем отдела интернет-маркетинга, то и зарплата у него должна быть соответствующая, как минимум 100 тысяч рублей. Для убедительности наш герой привел примеры реальных вакансий на сайте HH.ru по запросу «руководитель отдела интернет-маркетинга».
Деваться руководству было некуда, Йося и вправду был ценным сотрудником и приносил компании намного больше, чем 100 тысяч рублей в месяц. Так началась управленческая карьера нашего героя. Теперь он не только отвечал за поток клиентов для заказчиков, но еще и руководил небольшим коллективом из двух фрилансеров на аутсорсинге, одного верстальщика и офисного контент-менеджера.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Незаметно для себя Йося превратился из простого студента в успешного руководителя
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Однако с каждым месяцем мешки под глазами у нашего героя приобретали все более темный цвет, а раздражение накапливалось. Постепенно его работа стала его главным раздражителем. На курсах он познакомился с несколькими предпринимателями, которые жили в Таиланде и работали только через интернет.
Йося завидовал им со страшной силой потому что двухнедельного отдыха ему явно не хватало, да и назойливые клиенты не давали нормально расслабится, обрывая личку, скайп и телефон. К тому же у Йоси появились даже собственные персональные клиенты, которые приходили к нему по рекомендациям действующих клиентов, а отказаться от калыма наше герой не мог.
И не только из-за денег, просто ему было интересно попробовать все, чему он научился на тренингах.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Но Йося хотел вырваться из офиса на волю, жить на юге, погрузив ноги в океан и уткнувшись в монитор ноутбука. Прикинув свои перспективы и посчитав, сколько он может зарабатывать самостоятельно как фрилансер, он понял, что до того же самого уровня ему все равно будет далеко.
Максимум он сможет делать по 70 тысяч рублей, привлекая клиентов для бизнесменов. Только Йося уже знал чит-код в этой сфере: если хочешь больше зарабатывать, ты должен уметь, то что не умеют другие.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
/ Мобильный маркетинг
Йося стал углубляться в самую перспективную отрасль — в мобильный маркетинг. Ходил на конференции, посвященные этой теме, посетил пару тренингов. Начал использовать в своей работе фишки и приемы, о которых рассказывали на этих мероприятиях.
-
-
-
-
-
-
-
-
-
-
-
-
-
В ближайшие пять лет появится 3 миллиарда новых интернет-пользователей, и большинство из них будет заходить на сайты через смартфон.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
150 000 РУБЛЕЙ
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
И вот, когда персональные проекты Йоси стали сопоставимы с его зарплатой, он решил принять стратегическое решение. Осуществить свою мечту — переехать в Таиланд и заниматься только своими собственными проектами.
У него уже сформировалась целая очередь из желающих клиентов. Оно и не удивительно — всем нужны заявки, трафик, продажи, а Йося за несколько лет стал именно тем человеком, которой может всё это обеспечить за разумные деньги, минуя всех посредников и агентства.
Пройдя целый ряд тренингов и специальных конференций, набив массу шишек, Йося стал не просто специалистом, а стратегическим интернет-маркетером.
На этом моменте мы и познакомились с нашим героем.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Сейчас он живет в Таиланде.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Точнее, зимует там, летом приезжает на родину на пару месяцев повидаться с друзьями и родителями, поностальгировать у березки, отдохнуть от азиатской жары. Если спросить у Йоси, что бы он изменил на этом долгом и тернистом пути, то наш герой ответил бы, не задумываясь:
-
-
-
-
-
-
-
-
-
-
-
-
-
Сразу же пошел бы обучаться комплексному интернет-маркетингу у профессионалов. Сэкономил бы кучу времени и нервов для себя, не повторяя нелепых ошибок, а также сэкономил бы мешок денег для клиентов, которые были моими подопытными кроликами. Смог бы уже через полгода реализовать свою мечту и жить в любой точке мира, а не тратить несколько лет на карабкание по карьерной лестнице!
-
-
-
-
-
-
-
Йося
Интернет-маркетолог
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Хотите за 6 месяцев начать зарабатывать столько же, сколько и Йося?
Дистанционный 6 месячный курс с гарантией трудоустройства ПРОФЕССИЯ ИНТЕРНЕТ-МАРКЕТОЛОГ ОТ А ДО Я!
-","
-
-","
-
-
-",2016-11-01 13:26:12.546259,"[10, 7]"
-16,True,kak-delat-moschnye-kreativy-dlya-reklamnyh-kampaniy,Как делать мощные креативы для рекламных кампаний,Рассказ Дмитрия Лукашова — директора по маркетингу образовательного проекта Skillbox.ru,library/hd.jpg,Как делать мощные креативы для рекламных кампаний,3,Рассказ Дмитрия Лукашова — директора по маркетингу образовательного проекта Skillbox.ru — с примерами и объяснениями,library/hd_ll5xs7c.jpg,"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Как делать мощные креативы для рекламных кампаний
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Всем привет!
-
Меня зовут, Дмитрий Лукашов. Я — директор по маркетингу образовательного проекта Skillbox. Не бойтесь, в этой статье я не буду Вам ничего продавать =)
Просто рано или поздно, в деятельности каждого человека наступает момент, когда накапливается критическая масса его профессиональных знаний и он должен ей делиться.
В этом письме я расскажу вам, как делать мощные креативы и относиться к своей деятельности ни как к работе, а как к творческому процессу, независимо от сферы занятости.
Сразу скажу, что это письмо будет большим, так что не забудьте его сохранить или отправить друзьям, чтобы дочитать потом.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Зачем вообще нужен креатив?
Креатив — это не какой-то всплеск и не склад ума. Это набор чётких схем и алгоритмов. Он не обязан быть вирусным. Да и редкий рекламный ход способен на это.
-
-
-
-
-
-
-
-
-
-
-
-
-
У большинства людей AdBlock уже встроен прямо в голову и обойти его можно только хорошей яркой картинкой с креативом.
-
-
-
За последние 2 года я могу вспомнить не больше 10 реклам, которые стали вирусными (есть еще кластер реклам, которые стали вирусными только в сфере рекламщиков, но это с трудом можно назвать достижением).
Креатив на социальных площадках (соц.сети, видео-хостинги, блоги и пр.) позволяет сделать вашу рекламу как минимум заметной. У большинства людей AdBlock уже встроен прямо в голову и обойти его можно только хорошей яркой картинкой с креативом.
Давайте вспомним, когда вы последний раз кликали на рекламу портмоне в пабликах, подписывались на предлагаемый автором канал, кликали по промо-постам или таргетингу в ВК? Наверно это происходит крайне редко. А всё потому, что вы заходите в соц. сеть или на видео-хостинг, чтобы развлечься, проветрить череп, но никак не искать товар с наиболее выгодным предложением. Поэтому и реклама там должна быть яркой, креативной и желательно смешной.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Часть 1: Мои работы
-
Давайте начнём наше с вами знакомство с моих работ. Речь зайдёт лишь об одном классе креатива — о самом лёгком и эффективном. Ниже — четыре поста. Все четыре стали мемами, вышли в «горячее» на Pikabu и других ресурсах, развирусились по пабликам в соц. сетях. И я считаю это достижением, так как мы дополнительно получили большой охват совершенно бесплатно, повысили лояльность и узнаваемость.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Ещё есть сотни подобных креативов, но, из-за ограничения на объём всех моих работ в таком жанре, это заняло бы несколько писем. Я считаю, что маркетинг должен быть не просто креативным, а интересным и смешным именно определённому кругу лиц, который максимально похож на широкий срез целевой аудитории, с которой работает маркетолог.
Если вы обратите внимание на тех, кто смотрит фильмы с Сашей Грей, «Игру Престолов», людей полного телосложения, желающих похудеть к лету, — это всё наша с вами целевая аудитория. Мужчины в возрасте от 24 до 35 лет, с проблемами в личной жизни и карьере, желающие развиваться и изменить свою жизнь.
Меня лично бесит, когда в рекламе я вижу только лишь преимущества продукта. И к этому производители (в данном случае производятлы) добавляют еще и УТП (уникальное торговое предложение), которое таковым не является.
-
-
-
-
-
-
-
-
-
-
~
-
-
-
-
-
-
-
-
-
-
Вот возьмём, к примеру, рекламу доставки пиццы. 90% пиццерий делает своим УТП быструю доставку. Рекламный буклет, раздражающе висящий на вашей входной двери, с радостью сообщает вам об этом. Но так как такое УТП используют 90% пиццерий, быстрая доставка уже не является внеконкурентным преимуществом.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
А если Вы сделаете это вот так:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Часть 2: Рождение креатива
-
Если вы обратите внимание на стиль постов, то заметите, что я совмещаю свои продукты с чем-то медийным и, на первый взгляд, несовместимым. При этом, сами картинки двусмысленны. Именно на двусмысленности и замене ожидания базируются все шутки про Штирлица. Это самые основные приёмы юмора. Всё дело в том, что наш мозг очень ленив и всегда дополняет картинку, которую видит, теми шаблонами, что он уже изучил.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Всё дело в том, что наш мозг очень ленив и всегда дополняет картинку, которую видит, теми шаблонами, что он уже изучил.
-
-
-
Когда у вас получается разрушить шаблоны, которые мозг уже надстроил — рождается смех. Процесс создания таких лёгких креативов очень прост: Я беру свой курс, нечто медийное или проблему целевой аудитории («Игра Престолов», Саша Грей или желание похудеть. Кстати, именно на этом этапе мозг человека надстраивает какие-то шаблоны) и соединяю это через метафору.
Такой фокус можно проделать с любым видом бизнеса и любой медийной темой. К примеру, вы занимаетесь консалтингом. Берёте мужика из известного мема, который говорит: «С самого начала у вас будет какая-то тактика и вы её будете придерживаться». Добавляете логотип и дескрипшн «Создадим какую-то тактику для какого-то бизнеса» (ну или другой) и вуа-ля.
Именно по такому принципу подготовлена очень креативная реклама «Мортона» с узнаваемыми всеми фильмами. Такой приём использовали «Теле2» с фразой Медведева, сказанной им в Крыму.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Часть 3: Упаковка
-
Упаковка важна не меньше, чем сама идея. Для этого вам надо иметь под боком хорошего дизайнера. В моём случае это Владимир Плохов. Он реализует мои идеи именно так, какими их вижу я. На такой уровень понимания выйти достаточно сложно, ведь простого технического задания бывает недостаточно. Важно именно комплексное видение.
-
-
-
-
-
-
-
-
-
-
-
-
-
Каждый креатив необходимо делать в фирменном стиле, который будет читаться и узнаваться.
Если вы создадите 2 креатива, сделанных в разном стиле, у клиентов не будет ассоциативного ряда, связанного с вами. В каждом конкретном рекламном канале должен быть свой подход.
К примеру в ВК, нужно чтобы изображение было продолжением текста, но при этом оно должно являться самостоятельной рекламной единицей. В ютьюбе вы должны сразу сбить с ног оригинальным подходом. Если вы этого не сделаете в течение 5 секунд, пользователь нажмёт «пропустить».
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Места, где креатив излишен:
-
-
-
-
-
-
-
-
-
-
-
01. Контекст
-
-
-
Люди ищут в поиске наиболее выгодные предложения. Вы не затянете их к себе на сайт чередой метафор и пеленой синонимов. Предложите максимум выгод и призовите к действию. Здесь правила стары как мир.
-
-
-
-
-
-
-
-
-
-
-
-
02. Лендинг
-
-
-
Интернет — место, где слишком много обмана, и людям важно чувствовать, что они в безопасности. Креативом или шуткой можно разбавить 1−2 блока на сайте в случае, если мы хотим воздействовать на эмоции целевой аудитории. Либо надо делать отдельные рекламные кампании, направленные именно на веселье.
-
-
-
-
-
-
-
-
-
-
-
-
« Во всех других каналах креатив и юмор просто обязательны. Хотя бы в пропорции 20×80.
-
-
-
-
-
-
-
-
-
-
-
-
Будь то: E-mail, таргетинг, постинг, промоушн, видео, наружная реклама, буклеты. Да даже оформление офиса (чем не канал коммуникации с клиентом, а?) и так далее.
-
-
-
-
-
-
-
-
-
-
-
-
-
Подводные камни
Проблемы креатива
Креатив сам по себе не является рекламным каналом. Это тюнинг уже имеющегося. Отсюда рождается его самая сложная проблема: сложно отследить реальную эффективность, можно замерить только относительную.
-
-
-
-
-
-
-
-
-
-
-
-
-
Всё дело в том, что наш мозг очень ленив и всегда дополняет картинку, которую видит, теми шаблонами, что он уже изучил.
-
-
-
Проблема номер 2 заключается в том, что вы привлечёте много нецелевой аудитории. Вряд ли это такой уж прям минус, ведь ничто не мешает вашей нецелевой аудитории рано или поздно трансформироваться в целевую, но пока она таковой не стала, вы будете собирать левые заявки, а «деревянные» клиенты будут отвлекать ваших продажников.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
На этом всё. Надеюсь, что моё письмо было для вас интересным и полезным. Если это действительно так, — делитесь им, размещайте в блогах, на сайтах и в пабликах, берите за основу к своим тренингам, я не против. Только не забывайте упомянуть меня =)
-
-
-
Дмитрий Лукашов
-
Директор по маркетингу
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Кстати.
Всем, кто оставит заявки в ближайшее время на курс «Интернет-маркетолог», дам несколько личных консультаций по креативу (если у вас свой бизнес — помогу подготовить) абсолютно бесплатно, ничего вымогать не буду, обещаю =) Просто хочется ещё интересных кейсов. Ну это так, пока начальство не видит, но они до этого места вряд ли прочитают =).
-
-
-
-
-
-
-
-
-","
-","
-
-
-",2016-10-28 14:47:42.751069,"[10, 12]"
-15,True,verstaem-pisma-pod-mobilnye-ustroystva,Верстаем письма под мобильные устройства,"Возможно, Вы уже читали наше объявление в блоге Campaign Monitor о том, что email-кампании, созданные при помощи нашего Email Builder, теперь красиво отображаются на всех основных устройствах и клиентах.",library/mobile_mail.jpg,Верстаем письма под мобильные устройства,3,"Возможно, Вы уже читали наше объявление в блоге Campaign Monitor о том, что email-кампании, созданные при помощи нашего Email Builder, теперь красиво отображаются на всех основных устройствах и клиентах.",library/mobilka_mail.jpg,"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Верстаем письма под мобильные устройства.
Пошаговое руководство по Mobile First верстке
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
В данной статье нам хотелось бы погрузиться в подробности того, каким образом удалось достичь того, чтобы все письма красиво отображались на всех основных устройствах и клиентах (включая Android и iOS).
-
-
-
-
-
-
-
-
-
-
-
Напомним, что мы решаем задачу отсутствия поддержки в мобильных клиентах таких функций, как поддержка медиа-запросов, которые необходимы для традиционных подходов к адаптируемым сообщениям электронной почты.
-
-
-
-
-
-
-
-
-
-
-
Как правило, email сообщения кодируются на старомодной настольной версии, основанной на таблицах, где мобильные стили применяются при помощи медиа-запроса max-width для пересчета положений таблиц. В тех клиентах электронной почты, которые не поддерживают данный метод, это может привести к несоответствиям в визуализации и затрудненному прочтению писем.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
➀ Mail нa iOS Колонки размещаются стеком и располагаются по всей ширине, как и было задумано.
➁ Gmail на iOS Уменьшенная в масштабе настольная версия.
➂ Inbox на Android Колонки сжимаются таким образом, чтобы уместиться друг рядом с другом.
➃ Yahoo! На Android Колонки сжимаются и перекрывают друг друга лишь бы уместиться на экране.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Мы собираемся изменить формулу и начать с версии для мобильных устройств (Mobile First), а затем проработать и настольную версию.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Сначала мобильные устройства
-
-
-
-
-
-
-
-
-
-
Кодирование сообщений электронной почты, которые будут «работать» на мобильных устройствах — довольно простая задача. По сути, мы просто будем использовать несколько элементов<div>
Внутренний<div> в HTML с классом .spacing добавляет пространство вокруг текста, что достигается использованием Margin. Подобный метод имеет широкую поддержку (особенно написание с большой буквы M), таким образом код будет поддерживаться и в старой версии Outlook.com.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
➀ Mail нa iOS Колонки размещаются стеком и располагаются по всей ширине, как и было задумано.
➁ Gmail на iOS Колонки размещаются стеком и располагаются по всей ширине, как и было задумано. ➂ Inbox на Android Колонки размещаются стеком и располагаются по всей ширине, как и было задумано. ➃ Yahoo! На Android Колонки размещаются стеком и располагаются по всей ширине, как и было задумано.
-
-
-
-
-
-
-
-
-
-
-
Из-за разрушения отступов, верхний и нижний отступы выпадут из родительского .layoutи из его белого цвета, но вскоре мы это исправим.
-
-
-
-
-
-
-
-
-
-
-
Этот простой email будет отображаться единообразно во всех широко распространенных мобильных клиентах и также в большинстве настольных и веб-клиентах.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Медиа-запрос для настольных версий
-
-
-
-
-
-
-
-
-
-
-
Наш план состоит не только в том, чтобы подавать мобильную версию на всех платформах. Если сообщение будет просматриваться в почтовом клиенте на экране большего размера, мы будем использовать доступное место в нашей полной настольной версии.
-
-
-
-
-
-
-
-
-
-
-
Сначала давайте разделим контент нашего письма на две колонки при помощи другой пары<div>ов:
Это дает нам некоторые классы в нашей таблице стилей, которые мы будем использовать для того, чтобы эти элементы отображались в виде колонок в настольной версии.
-
-
-
-
-
-
-
-
-
-
-
Вот когда наступает очередь медиа-запросов. Обычно, если мы добавляем мобильные стили к настольной версии, мы используем медиа-запрос max- width, таким образом чтобы мобильные стили применялись только вплоть до ширины определенного email-клиента.
Но так как за основу мы берем мобильную версию, вместо этого мы будем использовать медиа-запрос min-width, где стили для настольной версии вступают в силу, когда письмо отображается на минимальной указанной ширине или больше нее:
Все верно — CSS таблицы! Применяяdisplay: table; иdisplay: table-cell; при просмотре в более больших окнах, элемент .layout будет вести себя так, будто это таблица, а элементы .column будут отображаться как ячейки таблицы, левая — шириной 200px, правая — шириной 400px.
Мы поместили display: table;за границами медиа-запроса, поэтому он будет встроен наряду с мобильными стилями. Это также исправляет «поломку» отступов элементов .spacing.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Подобная комбинация медиа-запроса и CSS-таблицы удивительно хорошо поддерживается во всех крупных клиентах электронной почты. Существует несколько заметных исключений, включая новую версию Outlook.com, настольные версии Outlook, а также веб-клиенты Google: Gmail, Google Apps и Inbox.
-
-
-
➀ Mail на iOS CSS таблица справляется с «поломкой» верхнего и нижнего отступов.
➁ Apple Mail Макет с двумя колонками, с сайдбаром и главной колонкой.
-
-
-
Без display: table; на .layout в мобильной версии, эти отступы очутились бы за границами макета и цвета его фона.
-
-
-
-
-
-
-
-
-
-
-
-
Мы разберемся с этим далее.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
*В Outlook 2000–03 поддержка медиа-запроса зависит от установленной версии Internet Explorer. **Старый Outlook.com отображает настольную версию корректно, но новая версия — нет.
-
-
-
-
-
-
-
-
-
-
-
Фиктивные селекторы атрибутов для нового Outlook.com
-
-
-
-
-
-
-
-
-
-
-
На момент публикации, Outlook.com работает параллельно на двух разных веб почтовых клиентах: один с поддержкой медиа-запросов, другой — без.
-
-
-
-
-
-
-
-
-
-
-
К сожалению, тот который поддерживает наш медиа-запрос min-width, на данный момент находится в процессе свертывания, так как пользователей переводят на более новую версию, основанную на Office 365/Outlook Web Access. С точки зрения рендеринга электронных писем — это определенный даунгрейд.
-
-
-
-
-
-
-
-
-
-
-
Тем не менее, мы можем обойти это. У нового Outlook.com есть баг, в котором он находит CSS селектор с селектором атрибутов внутри него, такой как [href] img, отбрасывает часть с селектором атрибутов и оставляет все остальное. В примере выше нам бы остался селектор img, который выберет все изображения, а не только те, вокруг которых есть ссылка.
-
-
-
-
-
-
-
-
-
-
-
Это, само по себе является, плохой особенностью, но означает что мы можем воспользоваться багом и включить копию настольных стилей, которые будет видеть только Outlook.com.
-
-
-
-
-
-
-
-
-
-
-
Мы поместим копию настольных стилей за пределами медиа-запроса, но к каждому правилу добавим фиктивный селектор атрибутов вида, например, [owa].
Другие email-клиенты будут игнорировать этот CSS, так как нет элементов, которые соответствуют селекторам[owa], но Outlook.com применит настольные стили так как мы того и хотели.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
➀ Старый Outlook.com Настольные стили применяются через медиа-запрос.
➁ Новый Outlook.com Настольные стили применяются через хак с фиктивными селекторами атрибутов.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Условная таблица для Outlook
-
-
-
-
-
-
-
-
-
-
-
Чтобы размещать элементы рядом друг с другом в Outlook, нам необходимо использовать HTML таблицу. Но чтобы она не испортила нашу мобильную версию, таблица будет скрыта внутри условных комментариев:
Условные комментарии позволяют нам нацеливаться исключительно на Outlook. Для других клиентов электронной почты этот код выглядит как обычный HTML-комментарий, который будет игнорироваться при обработке электронной почты.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Выражение [if (mso)|(IE)] означает, что мы ориентируемся на все версии Microsoft Office, т.е. Outlook 2007/2010/2013/2016, которые делят свой механизм визуализации с Word, а также со всеми версиями Internet Explorer, который используется для отображения сообщений электронной почты в Outlook 2000/2002/2003.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
➀ Outlook 2000 Колонки поддерживаются специфичной для Outlook табличной разметкой внутри условных комментариев.
➁ Outlook 2007 Колонки поддерживаются специфичной для Outlook табличной разметкой внутри условных комментариев.
-
-
-
-
-
-
-
-
-
-
-
С нашим двухколоночным дизайном с таблицами, поддерживаемыми исключительно в Outlook, остались только веб-клиенты от Google: Gmail, Google Apps и Inbox.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Расчеты для трио веб-клиентов от Google
-
-
-
-
-
-
-
-
-
-
-
Эти клиенты не застаят нас проделать слишком уж большой объем работы. CSS поддерживается только когда кодируется встроено вместе с атрибутами style. Нет поддержки медиа-запросов, а также нет иных способов таргетирования веб-клиентов почты от Google без таргетирования их мобильных приложений.
-
-
-
-
-
-
-
-
-
-
-
Наше решение? Функция расчета в CSS
-
-
-
-
-
-
-
-
-
-
-
Вместо установки фиксированного свойства CSS, например 600px, вы можете задать функцию calc() , в которой содержится математическое выражение. В нашем случае, мы хотим, чтобы ширина наших шаблонов и колонок менялась в зависимости от ширины email-клиента.
-
-
-
-
-
-
-
-
-
-
-
Для ширины нашего.layout мы будем использовать следующую функцию:
-
-
-
-
-
-
-
-
-
-
-
-
width: calc((Desktop Width - Mobile Width) * 100% - (Desktop Width - Mobile Width) * Breakpoint - Desktop Width);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
У шаблона есть настольная ширина в 600px и мобильная ширина в 320px. И мы будем использовать ту же точку прерывания в 620px, как и в нашем медиа-запросе, чтобы переключаться между двумя значениями ширины.
Когда клиент выполняет эту функцию, 100% заменяется на ширину клиента электронной почты. Мы можем математически упростить функцию:
-
-
-
-
-
-
-
-
-
-
-
-
width: calc(28000% - 173000px);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Когда ширина email-клиента составляет в точности 620px, эта функция возвращает 600px, что является нашей желаемой шириной для настольного клиента. Но если ширина email-клиента будет меньше всего на 1 пиксель (619px), то результатом будет 320px - наша мобильная ширина. Это позволяет нам успешно переключаться между настольным и мобильным видом на соответствующих экранах.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Тем не менее, ширина почтового клиента редко будет составлять в точности 619px или 620px. Поэтому следует ограничить диапазон возможных значений ширины теми двумя, которые нам нужны. Мы установили 600px в качестве max-width и 320px в качестве min-width.
-
-
-
-
-
-
-
-
-
-
-
С этими встроенными стилями мы можем добиться чего-то схожего с нашим медиа-запросом без необходимости поддержки медиа-запросов. Хотя calc()не везде поддерживается, функция работает на всех почтовых клиентах Google, и в вебе, и на мобильных версиях.
-
-
-
-
-
-
-
-
-
-
-
Так как более старые мобильные email-клиенты не поддерживают функции calc(), мы также оставим ширину в пикселях в качестве резервного варианта.
Мы проделаем схожие расчеты и для колонок, но они будут основаны на ширине.layout , так как он — родительский элемент элементов .column. Это означает, что мы будем использовать настольную ширину макета в 600px в качестве точки прерывания, поэтому, когда макет переключится на настольную ширину, это же произойдет и с колонками.
-
-
-
-
-
-
-
-
-
-
-
Функция для колонки в 400px работает так же, как и в макете:
Мы также передвинем колонки влево, так чтобы они находились рядом друг с другом в случае с настольной шириной, но располагались стеком в случае мобильной версии, если по ширине помещается только одна колонка:
➀ Gmail Значения ширины заданы при помощи функции calc(), min-width иmax-width.
➁ Google Apps Значения ширины заданы при помощи функции calc(), min-width и max-width.
➂ Inbox Значения ширины заданы при помощи функции calc(), min-width иmax-width.
-
-
-
-
-
-
-
-
-
-
-
И, таким образом, у нас есть адаптивный макет, который работает во всех клиентах Google, а также во всех других крупных клиентах.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Поддержка email-клиентов
-
-
-
-
-
-
-
-
-
-
-
Хотя этот метод, скорее всего, не будет корректно работать в некоторых менее функциональных, мало используемых клиентах, это обычно означает, что люди, открывшие этот email на настольном ПК, увидят мобильную версию.
Да, такое отображение не идеально, но все же когда настольный клиент отображает мобильную версию электронного сообщения — его куда удобнее читать, чем когда на мобильном устройстве весь контент для настольного клиента пытается уместиться на маленьком экране, жертвуя разметкой и читабельностью.
-
-
-
-
-
-
-
-
-
-
-
Спасибо за чтение!
-
-
-
-
-
-
-
-
-
-
-
Мы будем рады получить ваши комментарии касательно улучшений данного метода и вашего его использования :)
-","
-
-","
-
-
-
-",2016-08-15 18:19:33.868571,"[2, 3, 4, 5]"
-14,True,PHP.-Composer-—-rukovodstvo-dlya-novichka,PHP. Composer — руководство для новичка,"С момента выпуска, 1 марта 2012, Composer приобрел широкую популярность благодаря тому, что привнес в PHP крайне необходимую функцию — управление зависимостями.",library/composer_LQ6FKOW.jpg,PHP. Composer — руководство для новичка,3,"С момента выпуска, 1 марта 2012, Composer приобрел широкую популярность благодаря тому, что привнес в PHP крайне необходимую функцию — управление зависимостями.",library/composer_eeQQ4m4.jpg,"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Composer Руководство для новичка
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Composer: руководство для новичка
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
С момента выпуска, 1 марта 2012, Composer приобрел широкую популярность благодаря тому, что привнес в PHP крайне необходимую функцию – управление зависимостями.
Composer является лучшим выходом, чтобы внедрить ПО от других производителей, таких как CSS-фреймворк, плагины jQuery и прочие в ваш проект.
-
-
-
-
-
-
-
-
-
-
-
Я уверен, что существует множество программистов, которые задаются вопросом о преимуществах использования Composer, в то время как другие боятся сделать первый шаг к началу использования новой системы.
В этой статье мы рассмотрим, чем именно является Composer, что эта программа делает, и почему это отличный инструмент для PHP проектов.
-
-
-
-
-
-
-
-
-
-
-
Сначала мы более детально рассмотрим управление зависимостями, а затем установим Composer. Сперва мы рассмотрим программу в общих чертах, а затем остановимся конкретно на некоторых основах. Давайте начнем!
-
-
-
-
-
-
-
-
-
-
-
# Что такое Управление зависимостями?
-
-
-
-
-
-
-
-
-
-
-
Управление зависимостями, на самом деле, довольно простая концепция. Давайте предположим, что вы создаете веб-сайт на одну страницу, используя фреймворк Foundation, необходимый для ваших Javascript и CSS. Как вы убедитесь, что Foundation будет добавлен в ваш проект?
-
-
-
-
-
-
-
-
-
-
-
Обычный метод — перейти на сайт, загрузить программный пакет и поместить его где-то внутри вашего проекта. Пока все идет хорошо. Теперь, что вы делаете, когда вы хотите обновить фреймворк до последней версии? Вы повторяете то же самое, переписывая старую версию.
-
-
-
-
-
-
-
-
-
-
-
Давайте предположим, что это будет повторяться несколько раз, и вы понимаете — что-то сломалось. Разработчики изменили что-то в Foundation, и теперь вы должны выполнить откат, но до какой версии? Вам нужно найти старые версии и начать применять их до тех пор, пока не найдете правильную.
-
-
-
-
-
-
-
-
-
-
-
Даже если вы отсортируете все, что есть, вы перейдете к чужому проекту. Они тоже используют Foundation? Если да, то где он установлен, и какая у него версия?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Это может показаться не такой значимой проблемой для небольшого проекта, но представьте себе проект с 8-10 зависимостями – и это по-прежнему немного! Модульное управление становится невозможным, или, по крайней мере, - это пустая трата времени.
-
-
-
-
-
-
-
-
-
-
-
Управление зависимостями решает эти проблемы за счет автоматизации и стандартизации. Поиск и выборку зависимостей, таких как Foundation, JQuery, Twig, Symphony и так далее, можно сделать программным образом. Определяются также и предпочтительные версии, которые защищают от конфликтов.
-
-
-
-
-
-
-
-
-
-
-
Диспетчер управления зависимостями стандартизирует путь, по которому программные пакеты хранятся, а также где они используются. На деле это означает, что каждый проект, в котором задействован один и тот же диспетчер управления зависимостями, будет следовать той же структуре, по крайней мере, для зависимостей.
-
-
-
-
-
-
-
-
-
-
-
# Установка Composer
-
-
-
-
-
-
-
-
-
-
-
Composer доступен для любой системы, которой вы пользуетесь. В Windows вы должны использовать установочный файл Composer Setup, который можно найти на начальной странице. В системах на операционной базе Linux, включая OSX, вы можете использовать следующую команду, чтобы установить его локально:
-
-
-
-
-
-
-
-
-
-
-
-
curl -sS https://getcomposer.org/installer | php
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Выполните указанную выше команду из вашей директории с проектом. У вас появится файл composer.phar, который вы можете использовать в вашей директории. Я предпочитаю установить все глобально, чтобы я мог использовать его в любой папке, где мне нравится. Чтобы это произошло, выполните следующую команду:
-
-
-
-
-
-
-
-
-
-
-
-
mv composer.phar /usr/local/bin/composer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Что-то может пойти не так в двух случаях. Если вам нужны права администратора, то вам нужно выполнить эту команду от имени пользователя.
-
-
-
-
-
-
-
-
-
-
-
-
mv composer.phar /usr/local/bin/composer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
На OS X Yosemite эта команда может не работать, потому что usr каталога не существует. В таком случае создайте сначала структуру каталога, а затем переместите туда файл как обычно.
-
-
-
-
-
-
-
-
-
-
-
# Введение в Composer
-
-
-
-
-
-
-
-
-
-
-
Существуют два отдельных элемента для управления зависимостями с Composer. Первый — это Composer сам по себе, как инструмент командной строки для захвата и управления зависимостями. Второй – это Packagist, главный репозиторий Composer. Это место, где содержатся все пакеты, которые вы используете.
-
-
-
-
-
-
-
-
-
-
-
При использовании Composer сердцем вашего управления зависимостями будет единственный файл с расширением JSON - composer.json. Основные моменты выглядят примерно так:
Требования для вашего проекта будут перечислены в разделе «требуется». В этом случае я запрашиваю Monolog – популярный фреймворк для логирования. Только потому, что у меня есть файл JSON с информацией, не значит, что я начну использовать Monolog. Вот где начинается командная строка.
-
-
-
-
-
-
-
-
-
-
-
Используя терминал, я в папке проекта выдаю Composer команду установки. Это введет все мои зависимости в проект и совершит иные четкие действия.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Директория vendor была создана для того, чтобы содержать все зависимости, в том числе и сам Composer. На скриншоте показывается monolog и psr, которые являются зависимостями monolog в дополнении к файлу composer.lock.
-
-
-
-
-
-
-
-
-
-
-
На этом этапе вы можете начать использовать ваши зависимости, но для эффективной работы мы можем узнать намного больше. Давайте шаг за шагом изучать Composer.
-
-
-
-
-
-
-
-
-
-
-
# Специальные версии
-
-
-
-
-
-
-
-
-
-
-
Выше в нашем коде мы хотели получить версию 1.12.0, но бывают случаи, когда мы хотим вернуться к более ранним. Есть шесть способов определить необходимую вам версию, давайте взглянем на них:
-
-
-
-
-
-
-
-
-
-
-
Диапазон версии
-
-
-
-
-
-
-
-
-
-
-
Используя операции сравнения, вы можете получить версию выше 1.3 и ниже 1.8 или пойти более сложным путем, используя набор правил с помощью команд И/ИЛИ. В операции могут быть использованы следующие символы: >, <, >=, <= и !=. Команда И представлена в виде пробела или запятой, команда ИЛИ – двойной вертикальной чертой (||).
-
-
-
-
-
-
-
-
-
-
-
Версии >2.7 будет означать любую версию до 2.7 >2.7 <=3.5 будет означать версии от 2.7. до 3.5 включительно.
-
-
-
-
-
-
-
-
-
-
-
Шаблон версии
-
-
-
-
-
-
-
-
-
-
-
С помощью подстановки можно задать шаблон. Использование 2.3.* будет включать в себя все, что выше версии 2.3.0, включая ее саму, но не включая версию 2.4.0. Это эквивалентно значению >=2.3.0 <2.4.
-
-
-
-
-
-
-
-
-
-
-
Символы переноса
-
-
-
-
-
-
-
-
-
-
-
Символы переноса с легкостью позволяют задать диапазон, хотя есть вероятность запутаться при обработке частичных версий. Полная версия состоит из трех чисел, в данном случае перенос обретает смысл.
-
-
-
-
-
-
-
-
-
-
-
2.0.0. – 3.0.0. включает полный диапазон, что означает: все версии выше 2.0.0 и ниже 3.0.0 включительно – приемлемы.
-
-
-
-
-
-
-
-
-
-
-
Частичные версии, такие как 2.0. – 3.0. означают любую версию выше и включительно 2.0. вплоть до версии 3.0 включительно, но не включая версию 3.1.
-
-
-
-
-
-
-
-
-
-
-
Причиной этого, казалось бы, странного поведения является то, что левая сторона основная, в то время как правая шаблонная. Приведенный выше пример будет равен следующему значению >=2.1 <3.1.0
-
-
-
-
-
-
-
-
-
-
-
Область использования Тильды
-
-
-
-
-
-
-
-
-
-
-
Символ тильда~ хорошо подходит для использования в нужной версии. Он позволяет включить все, что идет выше указанной версии, но не перейти на новый уровень. Если вы укажите ~3.6 то дальше вы можете использовать все, что идет выше 3.6. но не 4.0.
-
-
-
-
-
-
-
-
-
-
-
В версиях это обозначается так >-3.6 <4.0.
-
-
-
-
-
-
-
-
-
-
-
Знак вставки
-
-
-
-
-
-
-
-
-
-
-
Знак вставки необходим для разрешения всех непрерывных обновлений. Если проект следует семантической версионизации – недопустимы улучшения, которые нарушают совместимость в основной версии. То есть все, включающее текущую версию и предыдущие, но не включающее более новые, может быть безопасным для использования. Указав ^3.3.5, вы разрешаете использовать все предыдущие версии, но не далее 4.0.
-
-
-
-
-
-
-
-
-
-
-
DEV-MASTER
-
-
-
-
-
-
-
-
-
-
-
Используя dev-master, вы захватываете последнюю (текущую) версию, которой еще не был присвоен номер. Это может быть полезно при разработке, но в будущем может стать причиной ошибок.
-
-
-
-
-
-
-
-
-
-
-
# Блокировка
-
-
-
-
-
-
-
-
-
-
-
Блокировка зависимостей является одной из наиболее полезных функций Composer. Ранее я упомянул файл composer.lock. Он дает возможность заблокировать текущие версии компонентов.
-
-
-
-
-
-
-
-
-
-
-
Блокировка файлов позволяет убедиться, что все работает в одинаковых версиях. То, что приложение не ломается при запуске, не является гарантией работоспособности, и ваши товарищи и производственный сервер не должны использовать разные версии.
Когда вы впервые используете Composer для захвата зависимостей, он записывает определенную версию файла блокировки. Если вы указали 2.3.* и 2.3.5 - это последняя версия, именно она будет установлена и именно она будет записана в файл блокировки.
-
-
-
-
-
-
-
-
-
-
-
Давайте предположим, что разработчик присоединяется к команде через 10 дней. К этому времени зависимость была обновлена до версии 2.3.6. Если разработчик использует правильную команду (composer install) - он получит версию 2.3.5, так как именно она внесена в файл блокировки.
-
-
-
-
-
-
-
-
-
-
-
Разумеется, вы можете решить обновить зависимость. В таком случае следует запустить обновление (composer update). Это позволит захватить последние обновленные версии и переписать файл блокировки. Это распространяется на все источники, к которым могут быть применены обновления.
-
-
-
-
-
-
-
-
-
-
-
# Требования к разработке
-
-
-
-
-
-
-
-
-
-
-
Composer позволяет установить требования к разработке. Это происходит с помощью указания ваших требований в массив require dev вместо массива require.
Faker является классом PHP, генерирующим поддельные данные. Это отличная возможность для разработчиков, но в производстве это не особо используется.
-
-
-
-
-
-
-
-
-
-
-
Имейте в виду, что требования к разработке всегда устанавливаются по умолчанию, Composer не может волшебным образом узнавать, когда он был запущен на производственном сервере. Если вы хотите исключить требования к разработке, вы должны запустить команду install или update c опцией - -no-dev
-
-
-
-
-
-
-
-
-
-
-
# Реальное использование Composer
-
-
-
-
-
-
-
-
-
-
-
Composer используется повсюду в мире PHP. Все известные и крупные компоненты вебсайтов, такие как jQuery, Foundation, Bootstrap, даже в самом WordPress имеется доступный пакет Composer.
-
-
-
-
-
-
-
-
-
-
-
Кроме того, даже самый маленький, но полезный код может быть получен с помощью Composer. Также работают логирование пакетов, таких как Monolog, PHP Mailer, обработка строк, PHP Unit и другие подобные инструменты.
Фреймворк-комьюнити получают большую пользу от Composer за счет способности унифицировать требования к проектам. Столь обожаемые всеми Laravel, FuelPHP, Yii Framework и другие полагаются на Composer для объединения общих функций для проектов.
-
-
-
-
-
-
-
-
-
-
-
Самое большое преимущество, конечно же, скрыто от глаз. Composer очень хорош, когда вам требуется разделить или развернуть код. Вам не потребуется таскать 20-50 мегабайт сопутствующего, но неиспользуемого кода. Вы просто можете зарегистрироваться с помощью composer.json и заблокировать файлы, и все это можно сделать на одной и той же странице в течение нескольких минут.
-
-
-
-
-
-
-
-
-
-
-
# Заключение
-
-
-
-
-
-
-
-
-
-
-
Есть огромное количество вещей, которые вы сможете делать с помощью Composer, и я надеюсь, что этот обзор позволил вам понять его возможности. Помимо того, что Composer дает хорошую автозагрузку сразу после установки, вы сможете подключить скрипты в любой стадии обновления процессов и так далее.
Множество групповых проектов используют Composer, но он также может быть полезен в случае, когда вы работаете в одиночку. Этот инструмент дает вам широкие возможности, ведь в будущем, поддерживая свой проект, никогда не знаешь, когда вам понадобится еще одна рука – Composer!
-
-
-
-
-
-","
-
-","
-
-",2016-08-15 14:58:14.943243,[8]
-13,True,To-do-list-za-8-minut-s-JQuery-i-LocalStorage,To-do лист за 8 минут с JQuery и LocalStorage,"У всех из нас есть дни, когда нам нужно сделать много дел, но мы совсем не знаем, сможем ли мы закончить их все. В таких ситуациях составление списка дел оказывается очень полезным.",library/todo_soc.jpg,To-do лист за 8 минут с JQuery и LocalStorage,3,"У всех из нас есть дни, когда нам нужно сделать много дел, но мы совсем не знаем,
-сможем ли мы закончить их все. В таких ситуациях составление списка дел оказывается
-очень полезным.",library/ssd.jpg,"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
To-do лист за 8 минут с JQuery и LocalStorage
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
To-do лист за 8 минут с JQuery и LocalStorage
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
У всех из нас есть дни, когда нам нужно сделать много дел, но мы совсем не знаем, сможем ли мы закончить их все. В таких ситуациях составление списка дел оказывается очень полезным. Существуют классные мобильные приложения, онлайн сервисы и даже плагины WordPress, выполняющие эту задачу, но задумывались ли вы когда-нибудь, сколько времени займет создание такого приложения самостоятельно?
В этой статье мы создадим базовый список дел. Задачи будут ставиться в одну из трех категорий – в ожидании, в процессе и закончены. Наше приложение позволит ставить все новые задачи в категорию «в ожидании» по умолчанию. Задачи могут легко перемещаться из категории в категорию посредством технологии перетаскивания. Ну и, конечно, задачи могут быть удалены. .
-
-
-
-
-
-
-
-
-
-
-
Предварительные условия
-
-
-
-
-
-
-
-
-
-
-
Следующие библиотеки используются в данном проекте: jQuery 1.10.2
jQuery UI 1.10.3
Bootstrap 2.2.2
-
-
-
-
-
-
-
-
-
-
-
Создание разметки и CSS
Давайте создадим основной внешний вид приложения, прежде чем добавлять функциональные возможности с помощью JavaScript.
В следующем примере кода показывается, как генерируется задача
-
-
-
-
-
-
-
-
-
-
-
-
generateElement({
- id: "123",
- code: "1",
- title: "My Uber Important Task",
- date: "5/2/2014",
- description: "I have to do a lot of steps to implement this task!"
-});
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Удаление задач
-
-
-
-
-
-
-
-
-
-
-
Удалить задачу довольно просто, и это может быть сделано с помощью следующей функции
Задачи, которые мы создаем, могут храниться с помощью баз данных, cookies и многих других технологий. Однако, в этом приложении для удобства и простоты мы будем использовать локальное хранилище HTML5. В JavaScript все эти данные хранит в себе переменное локальное хранилище. Следующий пример кода показывает нам, как данные из списка дел извлекаются из LocalStorage.
-
-
-
-
-
-
-
-
-
-
-
-
var data = JSON.parse(localStorage.getItem("todoData"));
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Каждая задача должна быть сохранена в переменной данных. Пример задачи приведен ниже.
-
-
-
-
-
-
-
-
-
-
-
-
- id : id, // Unique ID; timestamp is used here
- code: "1", // Code identifying the category
- title: title, // Title of the task
- date: date, // Due date
- description: description // Description of the task
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Мы обновляем сохраненные данные в LocalStorage, используя следующий код.
Когда предоставляется форма списка дел, создается новая задача и добавляется на локальное запоминающее устройство, а содержимое страницы обновляется. Следующая команда реализует эту функцию.
-
-
-
-
-
-
-
-
-
-
-
-
var addItem = function() {
- var inputs = $("#" + defaults.formId + " :input"),
- errorMessage = "Title can not be empty",
- id, title, description, date, tempData;
- if (inputs.length !== 4) {
- return;
- }
- title = inputs[0].value;
- description = inputs[1].value;
- date = inputs[2].value;
- if (!title) {
- generateDialog(errorMessage);
- return;
- }
- id = new Date().getTime();
- tempData = {
- id : id,
- code: "1",
- title: title,
- date: date,
- description: description
- };
- // Saving element in local storage
- data[id] = tempData;
- localStorage.setItem("todoData", JSON.stringify(data));
- // Generate Todo Element
- generateElement(tempData);
- // Reset Form
- inputs[0].value = "";
- inputs[1].value = "";
- inputs[2].value = "";
-};
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Реализация технологии перетаскивания
-
-
-
-
-
-
-
-
-
-
-
jQuery UI обеспечивает функциональность перетаскивания. Нам нужно сделать каждую задачу перетаскиваемой и каждую категорию перемещаемой. Чтобы удалить задачу, нам надо скрыть область удаления по умолчанию и показывать ее лишь тогда, когда мы перетаскиваем какой-то элемент. Поэтому, во-первых, мы изменим функцию generateElement(), чтобы сначала сделать элементы списка дел перетаскиваемыми, а затем сделаем область удаления видимой, когда элемент будет перемещен.
Спасибо, что дочитали! Что скажете? Пишите в комментариях :)
-
-
-
-
-
-","
-
-","
-
-",2016-07-26 16:09:17.262238,"[2, 3, 5]"
-12,True,sostoyanie-instrumentov-front-end-razrabotki,Состояние инструментов front-end разработки,Я хотел получить больше информации о нынешних уровнях знания и применения различных инструментов front-end разработки в сообществе.,library/frontend.jpg,Состояние инструментов front-end разработки,3,Я хотел получить больше информации о нынешних уровнях знания и применения различных инструментов front-end разработки в сообществе.,library/frontendlms.jpg,"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Состояние инструментовfront-end на 2016 год
Две недели назад я отправил разработчикам front-end опрос по средствам, которые они используют.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Состояние инструментовfront-end на 2016 год
Две недели назад я отправил разработчикам front-end опрос по средствам, которые они используют.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Цель? Я хотел получить больше информации о нынешних уровнях знания и применения различных инструментов разработки в сообществе. Я часто слышу, что Sass теперь на самом деле является препроцессором выбора, или что {вставьте сюда фреймворк JS} — это последняя и величайшая вещь с момента изобретения нарезного хлеба. И мне зачастую интересно, что я увижу, если напрямую спрошу разработчиков о том, какие инструменты они знают и используют в своих проектах.
-
-
-
-
-
-
-
-
-
-
-
Прежде чем собрать результаты опроса, я рассчитывал на небольшое количество ответов. Люди заняты работой, и довольно сложно просить их отвечать на вопросы без материальной награды. Но на момент написания этой статьи, я получил 1044 ответа, что превзошло мои скромные ожидания! Благодарю тех, кто потратил время, чтобы пройти опрос. Я действительно ценю это.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Итак, пришло время посмотреть результаты. Запаситесь чашкой чая или кофе, и приступим…
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Вступительные оговорки
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Вступительные оговорки
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Эти результаты показывают лишь небольшой пример деятельности разработчиков front-ent в индустрии. Поэтому не стоит принимать их за абсолютную истину. Лучше относиться к ним как к грубому тренду. Если вы пропустили изначальный опрос, но хотели бы поучаствовать в нем, то я оставлю его открытым на следующие несколько недель и буду обновлять результаты, если поступит значительное число ответов.
-
-
-
-
-
-
-
-
-
-
-
Вопрос 1 — Препроцессоры
-
-
-
-
-
-
-
-
-
-
-
Первый вопрос: Какой вы выбираете инструмент предварительной обработки дляCSS?
-
-
-
-
-
-
-
-
-
-
-
Возможные ответы включали все обычные средства, но я решил убрать из списка PostCSS. Просто я не хотел запутать людей, которые используют PostCSS в дополнение с другим препроцессором. Я полагал, что люди, которые используют исключительно PostCSS, выберут пункт «Другое».
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Как вы можете видеть, Sass набрал 66%, и его выбирает большинство разработчиков. Только 13,5% опрошенных не используют инструмент предварительной обработки с CSS. Это указывает, что сейчас мы близки к «пику препроцессорной адаптации».
-
-
-
-
-
-
-
-
-
-
-
Из этих результатов можно вывести только то, что препроцессинг CSS — навык, который должны освоить все разработчики front-end, так как это нужно в большинстве проектов и рабочих процессов.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Пункт «Другое» набрал 21 ответ (2%). Это указывает, что они используют PostCSS в качестве препроцессора.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Вопрос 2 — PostCSS и Rework
-
-
-
-
-
-
-
-
-
-
-
Далее я хотел выяснить, сколько разработчиков знает о так-называемых инструментах «постпроцессинга» вроде PostCSS или Rework. По этой причине я задал вопрос: Вы знаете об этих средствах обработкиCSS?
-
-
-
-
-
-
-
-
-
-
-
Результаты были такими:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Если взглянуть на необработанные результаты, то мы видим, что 72,89% опрошенных не слышали и не использовали PostCSS. По сравнению с этим Rework набрал 25%. Совсем немного разработчиков указали, что они свободно используют этот инструмент.
-
-
-
-
-
-
-
-
-
-
-
Анализируя результаты по обоим средствам, мы видим: 269 разработчиков (только 25%) сообщили, что никогда не слышали о PostCSS или Rework, и 95 (9,1%) свободно используют как минимум один из этих инструментов.
-
-
-
-
-
-
-
-
-
-
-
Я думаю, эти результаты показывают, как нова эта область для многих разработчиков front-end. Я думаю, что эти цифры в будущем возрастут.
-
-
-
-
-
-
-
-
-
-
-
Вопрос 3 — Системы сборки
-
-
-
-
-
-
-
-
-
-
Вопрос 3 — Системы сборки
-
-
-
-
-
-
-
-
-
-
Результаты по следующему вопросу интересовали меня больше всего: Какую систему сборки вы предпочитаете использовать (если вообще используете) в процессе работы над типичным проектом?
-
-
-
-
-
-
-
-
-
-
-
Если взглянуть на статистику загрузок NPM, то мы увидим, что Grunt загружали примерно 1,45 миллиона раз за месяц, Gulp — 1,34 миллиона раз. Поэтому в плане использования они кажутся равными. Хотя недавно предпочтение людей сместилось в сторону Gulp.
-
-
-
-
-
-
-
-
-
-
-
Каковы же результаты опроса?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Отчасти удивляет, что Gulp значительно отрывается. Он набрал 46,7% голосов от разработчиков, которые предпочитают его использовать. А Grunt набрал только 26,3%.
-
-
-
-
-
-
-
-
-
-
-
Только 17,2% опрошенных сказали, что они не используют в проектах систему сборки. Это значит, что большинство разработчиков front-end видят преимущества использования системы сборки для сохранения последовательности/связности проектов и команд.
-
-
-
-
-
-
-
-
-
-
-
Вопрос 4 — Знание библиотекJavaScriptи фреймворков
-
-
-
-
-
-
-
-
-
-
Вопрос 4 — Знание библиотекJavaScriptи фреймворков
-
-
-
-
-
-
-
-
-
-
Еще один интересный для меня вопрос: уровень знания самых популярных библиотек JavaScript и фреймоворков. Этот вопрос служит показателем опыта работы опрошенных с каждой из них.
-
-
-
-
-
-
-
-
-
-
-
Вот как ответили люди:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Неудивительно, что jQuery получила самый высокий процент голосов от разработчиков (91,5%), которые говорят, что свободно ее используют. Эта самая распространенная библиотека среди остальных перечисленных.
-
-
-
-
-
-
-
-
-
-
-
Далее по списку фреймворков JS Angular занимает самый верх относительно количества разработчиков (28,5%), которые свободно его используют. Еще 18,6% опрошенных сказали, что они свободно применяют Backbone, и 15,5% то же сказали про React.
-
-
-
-
-
-
-
-
-
-
-
Если взглянуть на уровень знания фреймворков MV (все кроме jQuery и Underscore), то видно, что лишь 50% опрошенных (531) легко могут использовать как минимум один из этих фреймворков. Способность разрабатывать с помощью хотя бы одного из них — это крайне важный навык для любого разработчика front-end. .
-
-
-
-
-
-
-
-
-
-
-
Но мне интересно еще кое-что: если я когда-нибудь снова запущу этот опрос, сколько разработчиков к тому моменту начнут использовать возможности ES2015? Я уверен, что это перспективная область, и любопытно посмотреть, как она будет расти.
-
-
-
-
-
-
-
-
-
-
-
Вопрос 5 — Какую библиотеку JavaScript или фреймворк вы используете в большинстве проектов?
Следующий вопрос я добавил в последний момент. Но его я хотел задать в опросе с самого начала. Из-за этого поступило всего 467 ответов. Поэтому учтите, что это повлияет на результаты. Но их стоит включить для полноты картины.
-
-
-
-
-
-
-
-
-
-
Вопрос 5 — Какую библиотеку JavaScript или фреймворк вы используете в большинстве проектов?
Следующий вопрос я добавил в последний момент. Но его я хотел задать в опросе с самого начала. Из-за этого поступило всего 467 ответов. Поэтому учтите, что это повлияет на результаты. Но их стоит включить для полноты картины.
-
-
-
-
-
-
-
-
-
-
Вопрос был: Какую библиотеку JavaScript или фреймворк вы используете в большинстве проектов?
-
-
-
-
-
-
-
-
-
-
-
Вот результаты:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Даже с небольшим количеством ответов jQuery была самой используемой библиотекой или фреймворком. Она оторвалась от других и набрала 56,53% (264 голоса). За ней следует Angular с 15,42% (72).
-
-
-
-
-
-
-
-
-
-
-
Я не буду пытаться вывести из этого много заключений, учитывая небольшое количество ответов. Но все-таки интересно, что большинство опрошенных использует в проектах jQuery. Я думаю, что это число сократится со временем, так как люди познакомятся с ES2015 и вернутся к использованию «родного» JavaScript и небольших библиотек.
-
-
-
-
-
-
-
-
-
-
-
Вопрос 6 — Упаковщики модулей JavaScript
Я уже некоторое время использую упаковщики модулей и хотел узнать, применяет ли их большинство разработчиков front-end. И если да, то какие?
-
-
-
-
-
-
-
-
-
-
Вопрос 6 — Упаковщики модулей JavaScript
Я уже некоторое время использую упаковщики модулей и хотел узнать, применяет ли их большинство разработчиков front-end. И если да, то какие?
-
-
-
-
-
-
-
-
-
-
Я задал такой вопрос: Вы используете в рабочем процессе упаковщики модулейJavaScript?
-
-
-
-
-
-
-
-
-
-
-
Ответы были такими:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
В общем, почти половина опрошенных (48,47%) сейчас использует упаковщики модулей, чтобы управлять зависимостями в JavaScript. Среди них 17,7% используют Browserify, 13,6% — RequireJS и 11,5% — Webpack. С недавних пор Webpack набирает популярность, и интересно, чего он достигнет на фоне двух других самых известных инструментов.
-
-
-
-
-
-
-
-
-
-
-
Хотелось бы посмотреть, как эти числа изменятся, когда большинство разработчиков перейдет на ES2015 и начнет использовать инструменты, которые годятся для «транспиляции» JavaScript с помощью Babel.
-
-
-
-
-
-
-
-
-
-
-
В целом, приятно видеть, что многие разработчики пользуются упаковщиками модулей. Я думаю, что количество людей, которые не используют упаковщики, сократится по мере роста их познаний.
-
-
-
-
-
-
-
-
-
-
-
Вопрос 7 — ТестированиеJavaScript
Тестирование! Итак, разработчики тестируют код JavaScript, или только собираются вносить это дело в свои проекты?
-
-
-
-
-
-
-
-
-
-
Вопрос 7 — ТестированиеJavaScript
Тестирование! Итак, разработчики тестируют код JavaScript, или только собираются вносить это дело в свои проекты?
-
-
-
-
-
-
-
-
-
-
Вопрос, который я задал: Какой инструмент вы используете для тестированияJavaScript? (если используете)
-
-
-
-
-
-
-
-
-
-
-
Результаты:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Большинство опрошенных (58,91%) не использует инструменты для тестирования JavaScript. Учитывая, как долго существует тема тестирования в JavaScript, я считаю этот процент очень высоким. Но это та область, которая чаще всего опускается в проекте.
Среди тех, кто тестирует JS, большинство использует Mocha (15,42%) или Jasmine(15,23%).
В итоге, очевидно, что тема тестирования JS все еще остается «белым пятном» для разработчиков.
-
-
-
-
-
-
-
-
-
-
-
Вопрос 8 — Разносторонние инструменты
Последний вопрос был об инструментах, которые разработчики обычно используют для управления упаковкой и рабочим процессом. Вопрос был: С каким из этих инструментов вы работали?
-
-
-
-
-
-
-
-
-
-
Вот ответы людей:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Большинство опрошенных свободно использует NPM и Bower, и многие люди никогда не слышали о Ender.
-
-
-
-
-
-
-
-
-
-
-
Разница между количеством людей, которые знают о Yeoman (по-моему, один из самых полезных инструментов, что я использую), и которые свободно его применяют (22,13%), совсем небольшая. Хотя довольно много людей никогда не слышали о нем (9,86%). По своему опыту скажу, что трата времени на изучение таких вещей стоит того. Это упрощает налаживание проектов.
-
-
-
-
-
-
-
-
-
-
-
Краткие выводы
-
-
-
-
-
-
-
-
-
-
Краткие выводы
-
-
-
-
-
-
-
-
-
-
Итак, что же можно сказать в итоге? Кажется, что темп восприятия инструментов front-end везде довольно высокий. Если вы тот, кто отложил в сторону изучение инструментов рабочего процесса в любой области, будь то CSS, JavaScript, упаковщики модулей или системы сборки, то находитесь в меньшинстве. Эти навыки сейчас служат важной частью того, что значит быть разработчиком front-end в 2015 году.
-
-
-
-
-
-
-
-
-
-
-
В то же время использование инструментов тестирования JavaScript, кажется, отстает от восприятия инструментов в других областях. Эту проблему можно решить, только если лучше просвещать людей о том, как использовать и интегрировать эти инструменты в проектах, и что не менее важно, как писать код JavaScript, который легко тестировать.
-
-
-
-
-
-","
-","
-",2016-07-13 19:09:51.936338,"[2, 3, 4, 5]"
-10,True,pishem-svoy-chat-na-Feathers,Пишем свой чат на Feathers,"В этом посте я бы хотел показать, как можно очень просто создать собственного клона демоверсии чата SlackerYou (jQuery + Firebase) с локальным размещением. Этот чат создал Wes для HackerYou, но мы используем Feathers вместо Firebase.",library/noroot_3.jpg,Пишем свой чат на Feathers,3,"В этом посте я бы хотел показать, как можно очень просто создать собственного клона демоверсии чата SlackerYou (jQuery + Firebase) с локальным размещением. Этот чат создал Wes для HackerYou, но мы используем Feathers вместо Firebase.",library/fancyappui-1080x675.png,"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
аЛЬТЕРНАТИВА Firebase с открытым исходным кодом
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
аЛЬТЕРНАТИВА Firebasасe с открытым исходным кодом
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Firebase — популярная платформа BaaS для создания мобильных и веб-приложений, которые в реальном времени связываются с RESTful или API. Она упрощает подготовку и быстрый запуск приложения. Но если вам нужно больше облачных решений (планы Firebase могут стать дорогими, и вы застрянете на платформе), или вас интересует полный стек разработки в NodeJS, то Feathers станет отличной альтернативой с открытым исходным кодом, которая предоставляет очень простую функциональность, но дает вам гораздо больше контроля.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
В этом посте я бы хотел показать, как можно очень просто создать собственного клона демоверсии чата SlackerYou (jQuery + Firebase) с локальным размещением. Этот чат создал Wes для HackerYou, но мы используем Feathers вместо Firebase.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Для начала давайте скопируем хранилище данных SlackerYou (или какие-нибудь свои данные), которое мы затем преобразуем, чтобы использовать свой сервер.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
git clonegit@github.com:HackerYou/SlackerYou.git
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
git clonegit@github.com: HackerYou/SlackerYou.git
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Если вы хотите опробовать все сразу, копируйте Feathers SlackerYou, запустив следующее:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
git clonegit@github.com:feathersjs/SlackerYou.git cd SlackerYou npm install npm start
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
git clonegit@github.com: feathersjs/SlackerYou.git cd SlackerYou npm install npm start
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Сервер будет доступен по адресу http://localhost:3030.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
СозданиесервераFeathers
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Создание сервера в режиме реального времени с помощью Feathers — это действительно быстрая процедура. С установленным NodeJS в папке хранилища мы можем запустить:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
npm install feathers body-parser feathers-nedb
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
npm install feathers body-parser feathers-nedb
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
который установит feathers, body-parser (чтобы можно было отправлять JSON в REST API) и пакеты feathers-nedb. NEDB — изолированная база данных с файловой системой. Благодаря ей нам не нужно устанавливать собственный сервер баз данных.
Соберем все вместе таким образом:
-
-
-
-
-
-
-
-
-
-
-
-
var feathers = require('feathers');
-var bodyParser = require('body-parser');
-var db = require('feathers-nedb');
-var app = feathers()
- // Configure REST and real-time capabilities
- .configure(feathers.rest())
- .configure(feathers.socketio())
- // REST endpoints can parse JSON
- .use(bodyParser.json())
- // Add a messages API endpoint
- .use('/messages', db('messages'))
- // Host the current folder
- .use('/', feathers.static(__dirname));
-app.listen(3030);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Мы создаем новое приложение Feathers, способное связываться через REST и websockets (в этом случае Socket.io) и добавлять JSON body parser. Затем мы регистрируем службу сообщений, которая использует базу данных NEDB под названием messages.
И, наконец, мы добавляем статичный веб-сервер для текущей папки (так чтобы мы могли размещать файлы HTML и JavaScript) и запускаем все на порте 3030.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Мы создаем новое приложение Feathers, способное связываться через REST и websockets (в этом случае Socket.io) и добавлять JSON body parser. Затем мы регистрируем службу сообщений, которая использует базу данных NEDB под названием messages.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
И, наконец, мы добавляем статичный веб-сервер для текущей папки (так чтобы мы могли размещать файлы HTML и JavaScript) и запускаем все на порте 3030.
-
-
-
-
-
-
-
-
-
-
-
-
Мы можем начать сервер с:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
node app.js
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Наши конечные точки сообщений теперь запускаются по адресу http://localhost:3030/messages (но в настоящий момент они показывают только пустой массив).
-
-
-
-
-
-
-
-
-
-
-
ИЗМЕНЕНИЕКЛИЕНТАJQUERY
Клиент SlackerYou все еще обращается к Firebase. Поэтому чтобы использовать вместо него собственный только что созданный сервер Feathers, нужно обновить части HTML и jQuery. Единственное, что нужно изменить в index.html, это загрузить Socket.io и клиент feathers вместо Firebase JavaScript:
Далее мы можем обновить scripts.js. Можно снова использовать почти весь существующий код, включая метод createMessage, который добавляет новое сообщение с jQuery. Это изменит все, что характерно для Firebase. Но сначала мы создадим соединение Socket.io с сервером, затем создадим клиента Feathers и соединим его с сервисом messages:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
// Create a Socket.io connectionvar socket = io(); // Create a Feathers client that uses that connectionvar app = feathers().configure(feathers.socketio(socket)); // Get the messages servicevar messages = app.service('messages');
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
// Create a Socket.io connection var socket = io(); // Create a Feathers client that uses that connection var app = feathers().configure(feathers .socketio(socket)); // Get the messages service var messages = app.service('messages');
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
В обработчике формы отправки нам нужно заменить
-
-
-
-
-
-
-
-
-
-
-
-
-
-
messagesRef.push(message);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
messagesRef.push(message);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
на
-
-
-
-
-
-
-
-
-
-
-
-
-
-
messages.create(message);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
messages.create(message);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Затем мы можем заменить нижнюю часть скрипта на Feathers-вариант восприятия новых сообщений и получения всех сообщений при загрузке страницы пользователем:
-
-
-
-
-
-
-
-
-
-
-
-
// Add new messages
-messages.on('created', addMessage);
-// Find all existing messages and add them to the page
-messages.find(function(error, messages) {
- if(messages) {
- messages.forEach(addMessage);
- }
-});
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Все вместе это будет выглядеть так:
-
-
-
-
-
-
-
-
-
-
-
-
-// Create a Socket.io connection
-var socket = io();
-// Create a Feathers client that uses that connection
-var app = feathers().configure(feathers.socketio(socket));
-// Get the messages service
-var messages = app.service('messages');
-// C.R.E.A.M - cache your elements
-var messageField = $('#messageInput');
-var nameField = $('#nameInput');
-var messageList = $('.messages');
-function addMessage(data) {
- var username = data.name || 'anonymous';
- var message = data.text;
- // Create an element
- var nameElement = $('<strong>').text(username);
- var messageElement = $('<li>').text(message).prepend(nameElement);
- // Add the message to the DOM
- messageList.append(messageElement);
- // Scroll to the bottom of the message list
- messageList[0].scrollTop = messageList[0].scrollHeight;
-}
-// Listen for the form submit
-$('.chat').on('submit',function(e) {
- // stop the form from submitting
- e.preventDefault();
- // create a message object
- var message = {
- name : nameField.val(),
- text : messageField.val()
- }
- // Save Data to firebase
- messages.create(message);
- // clear message field
- messageField.val('');
-});
-// Add new messages
-messages.on('created', addMessage);
-// Find all messages and add them
-messages.find(function(error, messages) {
- if(messages) {
- messages.forEach(addMessage);
- }
-});
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Вот и все!
Если вы теперь перейдете по http://localhost:3030/, то получите работающий в реальном времени чат, который сохраняет сообщения в файловой базе данных (вы можете посмотреть все сообщения по http://localhost:3030/messages).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Добавление временных отметок
-
-
-
-
-
-
-
-
-
-
-
Теперь настало время для полировки. Прямо сейчас, когда новый пользователь зайдет на страницу нашего чата, все сообщения всегда будут загружаться в произвольном порядке.
Лучший способ привести все сообщения в порядок — это добавить временную отметку created_atкаждому сообщению на сервере и назначить find для сортировки сообщений по временной отметке (сначала старые).
Еще мы добавим условие, по которому в чат будут возвращаться только последние (новые) 10 сообщений.
Здесь на помощь приходит feathers-hooks.Hooks позволяют нам подключиться к сервису до или после того, как запустится метод сервиса (но прежде он будет направлен к клиенту). Чтобы получить hooks мы запускаем
-
-
-
-
-
-
-
-
-
-
-
-
-
-
npm install feathers-hooks
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
И затем мы можем регистрировать hooks. Например, можно добавить временную отметку created_atсообщению before (прежде чем) его отправят в базу данных, как здесь:
-
-
-
-
-
-
-
-
-
-
-
-
app.service('messages'). before({
- create: function(hook, next) {
- // Add the created_at date
- hook.data.created_at = new Date();
- // Go to the next step (save to database)
- next();
- }
-});
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Готовый сервер выглядит так:
-
-
-
-
-
-
-
-
-
-
-
-
var feathers = require('feathers');
-var hooks = require('feathers-hooks');
-var bodyParser = require('body-parser');
-var db = require('feathers-nedb');
-var app = feathers()
- // Configure REST and real-time capabilities
- .configure(feathers.rest())
- .configure(feathers.socketio())
- .configure(hooks())
- // REST endpoints can parse JSON
- .use(bodyParser.json())
- // Add a messages API endpoint
- .use('/messages', db('messages'))
- // Host the current folder
- .use('/', feathers.static(__dirname));
-var messages = app.service('messages');
-// Add hooks
-messages.before({
- create: function(hook, next) {
- // Add the created_at date
- hook.data.created_at = new Date();
- // Go to the next step (save to database)
- next();
- },
- find: function(hook, next) {
- // Sort the result list by created_at date
- hook.params.query.$sort = { created_at: 1 };
- next();
- }
-}).after({
- find: function(hook, next) {
- var size = hook.result.length;
- // Only return the last 10 messages
- hook.result = hook.result.slice(size - 10, size);
- next();
- }
-});
-app.listen(3030);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Чтобы увидеть эффект hooks, давайте удалим старую базу данных и перезапустим сервер:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
rm -rf db-data
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Теперь у нас есть собственный локально размещенный чат, который работает в реальном времени и загружает только последние 10 сообщений.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Заключение
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Заключение
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Firebase отлично подходит, чтобы быстро подготовить и запустить приложение без backend.
Но если вы ищите решение с открытым исходным кодом и с большей свободой, или вам интересно воспользоваться полным стеком разработки с NodeJS, то подойдет Feathers.
Он предоставит простую функциональность с использованием всего нескольких строчек кода.
Если вы хотите узнать больше, например, как использовать другие базы данных вроде MongoDB, то напишите собственные сервисы, а если хотите понять, как применять другие фреймворки JavaScript, чтобы создать приложение в режиме реального времени, переходите на вебсайт Feathers и читайте руководства.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-","
-
-","
-
-",2016-07-13 18:03:22.317547,"[2, 3, 5, 6]"
-7,True,3-klyuchevyh-navyka-uspeshnogo-razrabotchika,3 ключевых навыка успешного разработчика,1) Использование готовых решений 2) Грамотное предварительное планирование системы 3) Правильное применение инструментов разработки,library/3.jpg,3 ключевых навыка успешного разработчика,4,"1) Использование готовых решений
-2) Грамотное предварительное планирование системы
-3) Правильное применение инструментов разработки",library/145570_original.jpg,"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
3 ключевых навыка
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Что позволяет разрабатывать веб-проекты быстро и эффективно
-
-
-
-
-
-
-
-
-
-
Использование готовых решений
Грамотное предварительное планирование системы
Правильное применение инструментов разработки
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Использование готовых решений
Почему лучше всегда использовать готовые библиотеки / фреймворки?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Что такое фреймворки? Это готовый код (скелет приложения), вокруг которого можно легко и быстро собрать готовый продукт. Библиотекой называют почти то же самое, но обычно библиотеки имеют более узкое применение.
-
-
-
-
-
-
-
-
-
-
-
На самом деле в разработке любого веб-проекта, будь то интернет-магазин или сайт знакомств, никогда не приходится писать весь код с нуля.
За все время существования веб-технологий, разработчики успели столкнуться с большинством типовых задач и разработать для них типовые решения.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Для каждой отдельной задачи, существует множество различных библиотек, которые помогут ее решить.
Используя готовые решения, правильно подбирая компоненты, вы всегда будете разрабатывать быстрее и эффективнее других.
Если вы ориентируетесь во всем массиве библиотек и фреймворков, вы сможете сразу понять требования заказчика или предложить решение.
-
-
-
-
-
-
-
-
-
-
-
Нужно ли знать наизусть все эти библиотеки, и уметь работать с каждой?
Очевидно — нет.
-
-
-
-
-
-
-
-
-
-
Не нужно пытаться заранее изучить все библиотеки и вникнуть в их тонкости. Достаточно просто знать, для чего предназначена та или иная библиотека. Как сказано выше, у каждого фреймворка есть класс задач, которые оно решает.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Важно ориентироваться в ситуации, знать что сейчас популярно.
-
-
-
-
-
-
-
-
Таким образом, как только у вас возникает задача, вы, зная хотя бы названия связанных с ней популярных библиотек сможете ее решить.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Таким образом, как только у вас возникает задача, вы, зная хотя бы названия связанных с ней популярных библиотек сможете ее решить.
-
-
-
-
-
-
-
-
-
-
-
Как выбрать библиотеки для проекта?
Конечно прежде, чем использовать готовое решение, вам придется изучить документацию
-
-
-
-
-
-
-
-
-
-
Важным критерием выбора библиотеки является хорошая, полная документация.
Без документации, разработчику придется изучать исходный код, для того что бы разобраться, как все это использовать. Часто бывает, что легче написать свой, новый код, чем разобраться в уже готовом чужом.
По этой причине библиотеки без документации вам сразу не подходят, если они делают что-то, сложнее сложения чисел.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
В хорошей документации всегда есть примеры распространенных случаев использования. Вы легко запрограммируете большинство функций, просто используя примеры. Из документации сразу становится понятно, что может библиотека, а что нет.
-
-
-
-
-
-
-
-
-
-
-
Другим важным критерием — является поддержка сообщества, «коммьюнити». Про хороший фреймворк всегда написано множество статей, существуют профильные форумы или обсуждения.
Если вам потребуется помощь, то вы сможете прочитать эти статьи, или задать вопрос другим разработчикам. Если же статей в интернете нет, как и форумов или обсуждений, то и помощи вы нигде не найдете.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Большинство готовых решений в сфере веб-разработки имеют открытый исходный код.
Это значит, что любой разработчик, пользующийся этим решением, может внести в него улучшения, доработать функции, и исправить ошибки, таким образом помогая не только себе, но и всем другим разработчикам.
Стоит обращать внимание, на уровень вовлеченности других программистов в разработку этого решения.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Если над проектом работают десятки программистов, регулярно выпускаются обновления — значит проект популярен и при обнаружении ошибки ее быстро исправят.
Если же над проектом работает всего один человек, или изменения никто не вносил уже несколько месяцев, то очень высока вероятность, что баги так и останутся неисправленными.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Если над проектом работают десятки программистов, регулярно выпускаются обновления — значит проект популярен и при обнаружении ошибки ее быстро исправят.
Если же над проектом работает всего один человек, или изменения никто не вносил уже несколько месяцев, то очень высока вероятность, что баги так и останутся неисправленными.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Примеры популярных библиотек:
Фронт-энд
-
-
-
-
-
-
-
-
-
-
Примеры популярных библиотек:
Фронт-энд
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Что может помочь верстальщику в его работе?
-
-
-
-
-
-
-
-
CSS-фреймворки. Это готовые наборы css-классов на все случаи жизни. Используя такой фреймворк вам меньше придется самому заботиться о структуре страницы и оформлении элементов. Самый популярный в настоящее время CSS-фреймворк — это Bootstrap (getbootstrap.com)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Что может помочь верстальщику в его работе?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
CSS-фреймворки. Это готовые наборы css-классов на все случаи жизни. Используя такой фреймворк вам меньше придется самому заботиться о структуре страницы и оформлении элементов. Самый популярный в настоящее время CSS-фреймворк — это Bootstrap (getbootstrap.com)
-
-
-
-
-
-
-
-
-
-
-
И конечно, ни один Javascript разработчик не обходится без разнообразных JS-библиотек.
Самая популярная библиотека общего назначения — это jQuery. Она позволяет решить большинство типовых задач: поиск html-элементов, их создание, изменение, применение анимаций, отправка AJAX-запросов.
-
-
-
-
-
-
-
-
-
-
-
Для этой библиотеки уже созданы тысячи различныхплагинов , которые помогут с более конкретными задами: созданием слайдеров, каруселей, превью, календарей.
Почти для любого типа динамического контента на странице есть несколько jQuery-плагинов. Для сложных веб-приложений понадобятся более сложные фреймворки.
Cоздание серверного кода всегда начинается с выбора фреймворка.
-
-
-
-
-
-
-
-
-
-
Популярный «шаблон» проектирования серверной части — это MVC (Model View Controller). Про него написано множество статей, но лучше всего изучить на практике.
MVC-фреймворк поможет разработчику буквально во всем: он сам разберет запрос, пришедший от пользователя и вызовет указанную функцию в вашем коде, поможет вам в удобном виде достать или сохранить данные в БД, поможет сформировать и вывести данные пользователю.
Конечно не для всех веб-приложений нужны такие большие и полнофункциональные фреймворки, поэтому в сообществе родились более простые и легкие в освоении решения, их еще называют « микро-фреймворки»:
Конечно не для всех веб-приложений нужны такие большие и полнофункциональные фреймворки, поэтому в сообществе родились более простые и легкие в освоении решения, их еще называют « микро-фреймворки»:
Так же, частой задачей серверного кода является формирование html-странички, используя определенную логику и данные. Для удобного и быстрого решения этой задачи созданы «Шаблонизаторы»: библиотеки, помогающие генерировать динамическое содержимое веб-страниц. Примеры:Twig (http://twig.sensiolabs.org/), Smarty (http://www.smarty.net/).
-
-
-
-
-
-
-
-
-
-
-
Предварительное планирование
Разработка любого сложного веб-проекта должна начинаться с этапа проектирования и планирования.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Почему это важно? Спланировав систему заранее, мы сильно сэкономим себе время в будущем, нам не придется тратить силы на переписывание кода.
Кроме того, в хорошо спланированную систему можно быстро вносить изменения и добавлять функции. Чистый и понятный программный код так же означает, что поддерживать и развивать систему будет просто.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Как этого добиться? Как правильно планировать систему?
Достаточно заранее описать: все объекты, с которыми будет работать система: виды товаров в магазине, типы страниц, виды элементов, блоков, кнопок, форм все действия и изменения, которые будут происходить с этими объектами
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Важно понимать, что требования к системе будут все время меняться, так что нельзя привязываться к конкретном контексту:
В корзину не всегда будут попадать товары, однажды туда потребуется добавить услугу, доставку или сборку
Кнопка «Купить» не всегда будет внизу формы заказа, она может потребоваться в шапке сайта, или всплывающем окне
В сообществе разработчиков давно сформировались принципы правильного планирования, «Best Practices», вы легко найдете статьи и книги по ним, например
Принципы адаптивной верстки (responsive web-design) Помогут правильно сверстать страницу, которую удобно будет просматривать на всех устройствах, всех размерах и разрешениях экрана.
Методология БЭМ (https://ru.bem.info/) Поможет правильно создавать и применять CSS-правила, так, что бы их можно было легко переиспользовать для других элементов на странице или изменить внешний вид определенных элементов сразу на всех страницах.
ООП-Паттерны для PHP и JS кода (или «Шаблоны проектирования» )
Помогут создать простой и понятный код, который можно переиспользовать или изменять так, что не придется переписывать всю системы из-за одной новой функции.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Так же, как и с библиотеками, вам не требуется сразу понимать все существующие методы, и уметь работать со всеми возможными случаями
Если вы знаете общие принципы хорошего планирования, вы сразу поймете, когда в процессе разработки вам понадобится одна из этих «лучших практик».
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Правильное планирование позволит вам:
• легко адаптировать систему под новые требования • быстро подменять одни компоненты другими • переиспользовать существующий код
-
-
-
-
-
-
-
-
-
-
-
Применение инструментов
Правильное применение инструментов разработчика значительно ускоряет и упрощает разработку.
-
-
-
-
-
-
-
-
-
-
Применение инструментов
Правильное применение инструментов разработчика значительно ускоряет и упрощает разработку.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
О чем идет речь?
Все разработчики так или иначе выбирают себе такие инструменты, программное обеспечение, которое поможет им программировать быстро и не делать ошибок.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
IDE (Интегрированная среда разработки, IDE (англ. Integrated development environment)
Системы контроля версий
Отладочное ПО
Написание тестов
-
-
-
-
-
-
-
-
-
-
-
Почему использование IDE упрощает разработку?
-
-
-
-
-
-
-
-
-
-
-
Мгновенное обнаружение самых распространенных ошибок
Подсказки по использование тегов и их параметров, функций и их аргументов, классов
Встроенная документация, не нужно искать ее отдельно в интернете
Интеграция в с фреймворками
Автоматическое дополнение. IDE допишет за вас имя тега, функции или метода
Автоматическая генерация кода. IDE сгенерирует для вас скелет странички, класса, или шаблонный код
Множество функций для быстрого внесения множественных изменений, когда нужно что-либо перенести, переименовать, удалить. IDE сделает все за вас, больше не нужно вручную проходить по всем файлам проекта и исправлять вручную одно и тоже.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Умный поиск. IDE легко найдет для вас все места в коде, где используется указанная функция или css-правило.
Умная навигация. Вы сможете легко перейти из любого места кода, туда где объявлена указанная функция или css-правило.
Горячие клавиши ускоряют набор кода и использование функций ID
-
-
-
-
-
-
-
-
-
-
-
Как Система контроля версий поможет при разработке?
Полная история всех изменений, легко найти место, в котором все сломалось и посмотреть что конкретно. Если вы долго разрабатываете один проект, вы точно забудете, какие изменения вы сделали месяц назад.
Возможность иметь параллельно две версии проекта. Часто бывает что вы занимались чем-то одним, а потом, на полпути, вам резко пришлось начать заниматься другим функционалом. При этом то, что уже сделано нельзя ни оставить в пол-рабочем состоянии, ни удалить.
Удобство совместной разработки. Очень часто над проектом работает несколько разработчиков. Контроль версий, позволяет им не мешать друг другу, не затирать изменения, не писать несовместимый код.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Отладка
Незаменимый инструмент поиска ошибок, проверки и тестирования При верстке и javascript разработке можно использовать отладчик , встроенный в браузер
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Отладка
Незаменимый инструмент поиска ошибок, проверки и тестирования При верстке и javascript разработке можно использовать отладчик , встроенный в браузер
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Покажет структуру документа, и позволит на лету ее изменить
Покажет все css-правила, примененные к выбранному элементу, позволит добавить или изменить их
Покажет сетевые запросы, как долго грузились картинки и css, а так же в какой момент случился ajax запрос, и какие данные он вернул
Покажет весь загруженный js-код, позволит его отладить, поставить точки остановки (breakpoint), и посмотреть все значения переменных в определенный момент
Позволит «профилировать» код, и узнать какой участок выполнялся дольше всего, найти причины тормозовэ
Выполнить произвольный код на веб-странице
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Для PHP-кода, чуть сложнее, придется настроить на сервере специальное ПО, например XDebug. Отладчик соединится с вашей IDE, и вы так же сможете отладить PHP код, поставить точки остановки (breakpoint), и посмотреть все значения переменных в определенный момент
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Написание тестов
Позволяет избежать ошибок при изменении кода
Быть уверенным, что внесенные изменения, не ломают существующий функционал
Избегать ручного тестирования, однажды написав тест, больше не придется проверять функционал вручную
Конечно написание тестов требует дополнительного времени, и имеет смысл, в основном в проектах с большим числом изменений
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Правильное применение всех этих инструментов позволит избежать 90% всех ошибок в разработке. А использование IDE сильно сократит время, которое вы потратите на написание кода.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ИТОГ
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Главное в любой профессии — знать куда двигаться, куда развиваться, знать о возможных путях улучшения своих навыков и повышении эффективности.
Веб разработчику не нужно знать наизусть все функции языков программирования, все функции всех фреймворков, все горячие клавишы всех редакторов. Достаточно знать об их существовании и понимать что в случае необходимости вы легко их освоите.
-
-
-
-
-
-","
-","
-",2016-07-13 17:43:51.253884,"[3, 7]"
-6,True,da-vasha-«spravka»-menya-trollit!,Да ваша «Справка» меня троллит!,"Порой во время тестирования Open Source проекта, у меня возникает ощущение, что вот так же какую-то ключевую информацию исключили и из раздела «Getting started» справки к ПО. Понятно, что разработчики сопроводительной документации готовят ее бесплатно,",library/noroot_2.jpg,Да ваша «Справка» меня троллит!,3,"Порой во время тестирования Open Source проекта, у меня возникает ощущение,
-что вот так же какую-то ключевую информацию исключили и из раздела «Getting started» справки к ПО.
-Понятно, что разработчики сопроводительной документации готовят ее бесплатно,
-и вовсе не следует ожидать наличия первоклассной документации в чьем-то стороннем проекте, но я говорю не столько о недоработанной документации…",library/bubbling_cauldron-144206.jpg,"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Да ваша «Справка» меня не троллит!
-
-
-
-
-
-
-
-
Если вы достаточно много времени проводите в Интернете, вы, вероятно, знаете, как нарисовать лошадь, по руководству Van Oktop. Однако освежим его в памяти:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Да ваша «Справка» меня не троллит!
-
-
-
-
-
-
-
-
Если вы достаточно много времени проводите в Интернете, вы, вероятно, знаете, как нарисовать лошадь, по руководству Van Oktop. Однако освежим его в памяти:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Между шагом 4 и шагом 5 было пропущено несколько существенных деталей, и они не слишком очевидны.
Потребуется ли мне программа-фоторедактор? Нужно ли мне знать, как пользоваться аэрографом? Требуется ли мне обладать выработанными годами художественными навыками?
-
-
-
-
-
-
-
-
-
-
-
Порой во время тестирования Open Source проекта, у меня возникает ощущение, что вот так же какую-то ключевую информацию исключили и из раздела «Getting started» справки к ПО.
Понятно, что разработчики сопроводительной документации готовят ее бесплатно, и вовсе не следует ожидать наличия первоклассной документации в чьем-то стороннем проекте, но я говорю не столько о недоработанной документации… Я говорю о документации, которая нас троллит!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Зачастую в мануале проекта приведен пронумерованный перечень шагов, которые нужно выполнить, чтобы обеспечить быструю установку и запуск. Но, очевидно, существуют также и ловушки, в которые запросто может угодить новый пользователь, и именно они остаются не освещенными.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Нередко вы находите свидетельство этому в перечне вопросов и проблем проекта, когда десятки пользователей добавляют свои «+1» к одной и той же проблеме, с которой они столкнулись с самого начала. Но с равной вероятностью вы можете встретить озадаченное молчание
-
-
-
-
-
-
-
-
-
-
-
Молча опустить руки
Возможно, они от растерянности опускают руки.
Возможно, они чувствуют себя по-дурацки, считая, что их проблема — это что-то очевидное, что все остальные и так понимают, без инструкции.
Но в действительности всегда находится ощутимое число пользователей, которые даже не попытаются выследить скрытую ошибку. Они просто переключаются на что-то другое.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
И это печальная повесть об упущенных возможностях:
пользователи, протестировавшие новый проект, из которых могли бы получиться полноценные евангелисты или вкладчики проекта, просто сдались, потому что нечто, что, по-видимому, должно быть очень простым, вообще не заработало.
-
Всего лишь несколько предупреждений о вероятных ошибках способно проделать огромную работу по сохранению пользователей в здравом уме и работоспособном состоянии. К сожалению, ими нередко пренебрегают, оставляя пользователей почесывать затылки, пожимать плечами и, наконец, сдаваться.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
И это печальная повесть об упущенных возможностях:
пользователи, протестировавшие новый проект, из которых могли бы получиться полноценные евангелисты или вкладчики проекта, просто сдались, потому что нечто, что, по-видимому, должно быть очень простым, вообще не заработало.
-
Всего лишь несколько предупреждений о вероятных ошибках способно проделать огромную работу по сохранению пользователей в здравом уме и работоспособном состоянии. К сожалению, ими нередко пренебрегают, оставляя пользователей почесывать затылки, пожимать плечами и, наконец, сдаваться.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Задеть за живое
-
-
-
-
-
-
-
-
-
-
Когда я приступил к работе в WalmartLabs в начале 2014, этот феномен недокументированных подводных камней, потраченного зря времени и крушения надежд отчетливо проявлялся в одной конкретной области: тестирование End-to-End (e2e testing). Но я об этом еще не знал.
-
-
-
-
-
-
-
-
-
-
-
-
Для тех, кто не очень знаком с e2e тестированием, поясню: оно относится к использованию инструментов автоматизации для запуска реальных веб-браузеров, которые исполняют сценарий взаимодействия с сайтом, идентичный поведению реального пользователя. Большинство инструментов e2e тестирования — это расширения для библиотеки автоматизированного управления браузерами под названием Selenium.
-
-
-
-
-
-
-
-
-
-
-
-
Каждый, кому приходится поддерживать бесконечный список браузеров (особенно старые версии IE), мечтает о e2e тестировании. Оно берет на себя утомительную рутину и экономит ваше время в процессе сертификации. Вместе с тем, так же быстро, как люди очаровываются этой технологией, так же быстро они начинают и презирать ее.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Наша собственная группа тестирования долгое время отчаянно пыталась развернуть e2e тестирование, но, по большей части, попытки провалились. И мы не одиноки.
Даже в Testing Blog компании Google описана похожая история, в которой e2e тестирование сравнивается с «фильмом, который вы с друзьями единодушно хотели посмотреть, а…затем все вместе пожалели о просмотре.»
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Наша собственная группа тестирования долгое время отчаянно пыталась развернуть e2e тестирование, но, по большей части, попытки провалились. И мы не одиноки.
Даже в Testing Blog компании Google описана похожая история, в которой e2e тестирование сравнивается с «фильмом, который вы с друзьями единодушно хотели посмотреть, а…затем все вместе пожалели о просмотре.»
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Этот пост подчеркивает три главных проблемы e2e тестирования:
Оно ненадежно: ложные результаты — пустая трата времени для всех.
Оно проходит медленно: наборы тестов порой требуют по несколько часов на выполнение.
Оно бесполезно: сложно определить причины, по которым тест провален.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Хочешь сделать хорошо…
Мы приступили к разработке собственного кросс-браузерного решения для end-to-end тестирования, которое бы достигло успеха в реальном мире. Это должно было быть потрясающе!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Мы поставили себе цель: «Наше решение должно быть:»
-
Пригодным для совместной работы: удобным для совместного доступа, позволяющего тестировщикам и разработчикам писать тесты вместе;
Быстрым: позволяющим оперативно прогонять e2e тесты в составе билдов для проверки пул реквестов;
Надежным: больше никаких тестов, которые то работают, то нет!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Мы испробовали многие известные NodeJS обертки для Selenium, обладающие лаконичным и понятным API, и выбрали NightwatchJS за его простой интерфейс и повсеместное применение
Но с самого начала тесты, которые то работают, то нет больно по нам ударили.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Подобно круассану
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Подобно круассану
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Вывести инженера из себя больше, чем «нечто, что не работает», может только то, что работает иногда.
Когда система тестирования выдает ошибки хаотически, без видимых причин, мы называем это «test flake», и это полный отстой.
Test flake пожирает время, отведенное на отладку, и наносит урон репутации системы, потому что пользователи начинают сомневаться в правдивости сообщений об ошибках.
-
-
-
-
-
-
-
-
-
-
-
-
-
Мы представляем тестирование e2e как экспериментальный проект нашей «cart and checkout » команды. Поначалу мы горели энтузиазмом, но вскоре test flake начал его остужать.
Ошибки всплывали на экране, затем исчезают при следующем прогоне теста. Разработчики начинали сомневаться в достоверности того, что сообщала им система.
-
Мы обязаны были все исправить, в противном случае — рисковали навсегда потерять лояльность наших потребителей-разработчиков.
Мы закатали рукава и бросились на борьбу с корневыми причинамиtest flake.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
«Ударь „крота“» За первые несколько недель мы осознали, что очень-оченьмногие годами пытаются решить те же проблемы нестабильного поведения тестов, что и мы. Вот типичные причины нестабильности тестов:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
«Ударь „крота“»
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
За первые несколько недель мы осознали, что очень-очень многие годами пытаются решить те же проблемы нестабильного поведения тестов, что и мы. Вот типичные причины нестабильности тестов:
-
-
-
-
-
-
-
-
-
-
-
Ошибки драйверов: они происходят, когда собственные адаптеры конкретных браузеров Selenium выдают ошибки. Так, например, то и дело IEDriver притворяется, что по элементу кликнули, но на самом деле это не так.
-
-
-
-
-
-
-
-
-
-
-
Неполадки Сети: связь с Selenium обеспечивается при помощи очень болтливого HTTP API. Когда вы прогоняете сотни тестов ежедневно, создаются тысячи HTTP реквестов: и даже один случайно поврежденный пакет может вызвать ощутимые сбои тестов.
-
-
-
-
-
-
-
-
-
-
-
Нестабильность сервисов: многие организации отдают предпочтение сервисам вроде SauceLabs или BrowserStack вместо аутсорсинговой поддержки фермы браузеров.
Хотя эти сервисы обеспечивают множество преимуществ, одновременно с этим они не защищены от собственной нестабильности. Иногда происходят сбои при инициализации виртуальных машин или без видимых причин возникают таймауты.
-
-
-
-
-
-
-
-
-
-
-
Другие неожиданности: время от времени мы натыкаемся на ошибки, по которым ничего нельзя нагуглить, или, что еще хуже, находится один-единственный результат, датированный несколькими годами ранее, и не имеющий никакого решения. Даже спустя месяцы работы над своим проектом мы продолжаем сталкиваться с всё новыми источниками нестабильности тестов.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Будучи хорошими инженерами, мы добросовестно пытались сыграть в «Ударь крота» и отследить причины каждой нестабильности тестов.
Но быстро стало понятно, что нам никогда не удастся обнаружить каждый источник нестабильности (test flake), особенно, с учетом того, что нам не удалось составить полный перечень того, что входит в понятие «test flake».
-
-
-
-
-
-
-
-
-
-
-
-
Мы были готовы впасть в уныние:
мы так далеко продвинулись, и после всех усилий test flake казался непреодолимым препятствием.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Зомби и суп
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Зомби и суп
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
В основе стабильности наших тестов лежал опыт написания юнит-тестов, демонстрирующих превосходную надежность.
Вы можете прогнать юнит-тест миллион раз и получить один и тот же результат, потому что мало что меняется — тестирование проводится локально, на вашем компьютере, никакая сеть не требуется.
-
-
-
-
-
-
-
-
-
-
-
Пребывая в отчаянии, я придумал глупое сравнение: в мире юнит-тестирования процессс предвкушения результатов теста, а затем получения их похож на то, как ужасно голодный человек хватает банку супа прямо с полки своего шкафа. Вот она. У тебя в руках. Дело сделано!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Но в e2e тестировании добыча супа больше похожа на это:
Сесть в машину
Доехать до продуктового магазина
По пути прорваться сквозь зомби-апокалипсис
Схватить банку супа с разграбленного прилавка (если повезет)
Попытаться вернуться домой, сохранив свои мозги нетронутыми
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Ясное дело, никто не хочет заморачиваться со всем этим, когда единственное, что вам нужно чертова банка супа. Но значит ли это, что e2e тестирование обречено считаться ненадежным инструментом?
-
-
-
-
-
-
-
-
-
-
-
Назад, на урок математики
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Спустя несколько недель, на протяжении которых мы бились головами об стол, мы отступили на шаг назад и задумались о том, что же мы на самом деле пытались сделать.
Самым главным для нас было то, что и тестировщикам, и разработчикам были нужны достоверные результаты тестов.
И дав им нестабильно работающую систему, мы бы сломали, выражаясь математическим языком, аксиому, от которой они зависели.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Спустя несколько недель, на протяжении которых мы бились головами об стол, мы отступили на шаг назад и задумались о том, что же мы на самом деле пытались сделать.
Самым главным для нас было то, что и тестировщикам, и разработчикам были нужны достоверные результаты тестов.
И дав им нестабильно работающую систему, мы бы сломали, выражаясь математическим языком, аксиому, от которой они зависели.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
аксиома (сущ) —предположение или исходное положение… заведомо истинное утверждение, принимаемое без доказательств.
-
-
-
-
-
-
-
-
-
-
-
-
Мы задумались о новой концепции:
Старая цель: Заставить Selenium работать без ошибок
Новая цель: Добиться достоверных результатов тестов
-
-
-
-
-
-
-
-
-
-
Разработчикам нужно иметь возможность полагаться на результаты тестов, это аксиома. Мы должны быть в состоянии сказать:«Вы беспокоитесь о том, чтобы писать хорошие тесты — мы берем на себя инфраструктуру.»
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Так как нам сделать результаты тестов надежными, если базовая технология сама по себе не надежная?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Волшебный прием для борьбы с Test Flake:
Если тест провален, запустите его заново
-
-
-
-
-
-
-
-
-
-
Волшебный прием для борьбы с Test Flake:
Если тест провален, запустите его заново
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Это так, воистину.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Это так, воистину.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Мы взяли, казалось бы, костыльное решение — и интегрировали его в систему.
Мы создали менеджер тестов, который в случае провала теста перезапускал его установленное количество раз, прежде чем сообщить об ошибке. Мы сочли, что 3 -х раз будет вполне достаточно. После реализации этого изменения, по идее, все ложные результаты тестов должны были сойти на нет.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
На начальных этапах нашего проекта e2e тестирования, мы беспокоились о нотификаторах о проваленных тестов для разработчиков, потому что не могли быть уверены, что не отправим их в погоню за призраками.
Но после того, как мывстроили свой волшебный прием, можно было не сомневаться, что каждое сообщение об ошибке с высокой степенью вероятности было связано с настоящей ошибкой .
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
И вот тут рухнула наша репутация среди ярых поборников чистых решений:
То есть вы просто-напросто продолжали яростно брутфорсить эту вшивую технологию пока она не заработает?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Я бы хотел ответить на это, продолжая приведенную ранее метафору о зомби и супе, так:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Вместо того, чтобы сесть в свою машину , чтобы ехать в магазин, вы отправитесь туда в сопровождении вооруженного конвоя.
-
-
-
-
-
-
-
-
-
-
-
— Это чересчур? — Ага. — Это малоэффективно? — Безусловно. — Но это позволит добраться до магазина? — Да, черт возьми, да!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
В конечном счете, некрасивое решение, которое восстановит ранее разрушенную аксиому, несравнимо лучше, чем тысячи неудачных попыток найти элегантное решение.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Называя вещи своими именами
-
-
-
-
-
-
-
-
-
-
-
Поиск некрасивых решений для некрасивых проблем не особенно привлекательная задача.
На самом деле это задача сродни разгребанию навоза лопатой.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
И всё же, после того, как однажды навоз был перелопачен, а мы восстановили утраченные силы, наш проект e2e тестирования начал приносить гораздо больше удовольствия!
Мы собрали систему прогона тестов с массовым распараллеливанием, чтобы в разы сократить время выполнения длительных тестов .
-
-
-
-
-
-
-
-
-
-
-
Мы форкнули проект TestSwarm и подготовили несколько симпатичных дашбордов для демонстрации результатов тестов в динамике. Это также помогает в решении проблемы, которая была описана в GoogleTesting Blog, когда сложно с точностью определить причину провала.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Зная, что эти тесты то и дело могут работать ненадежно в связис ошибками настоящих приложений, а не только нестабильностью инфраструктуры, мы создали некоторые аналитические инструменты для того, чтобы выявлять выпадающие значения и определять, какие тесты и браузеры требовали больше повторных прогонов, чем другие:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
С этого момента мы стали все чаще слышать:
«Это круто! Вы должны выложить это как Open-Source..»
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Сначала мы думали: «Ни в коем случае: это же просто груда костылей, никому они не нужны».
Но впоследствии мы задумались о тех людях, которые потратили впустую уйму времени, пытаясь справиться с нестабильными тестами, а потом просто сдались.
Что если мы могли бы предостеречь других от пустой траты времени, и позволили им начать с правильной аксиомы?
Тогда они могли бы потратить свое время, сделав свой вклад в решение более интересных и стоящих проблем!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Сначала мы думали: «Ни в коем случае: это же просто груда костылей, никому они не нужны».
Но впоследствии мы задумались о тех людях, которые потратили впустую уйму времени, пытаясь справиться с нестабильными тестами, а потом просто сдались.
Что если мы могли бы предостеречь других от пустой траты времени, и позволили им начать с правильной аксиомы?
Тогда они могли бы потратить свое время, сделав свой вклад в решение более интересных и стоящих проблем!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Мы стали думать о Разгребании навоза (Shoveling Shit ) не только как о бесславном труде, но и как о бесценном опыте в сфере Open Source, где сложные и запутанные проблемы решаются, помогая покончить с навозом.
-
-
-
-
-
-
-
-
-
-
-
-
-
Всем вместе!
Всем вместе нам нужно стремиться к тому, чтобы ввести в обиход «Разгребание навоза как сервис » (Shoveling Shit as a Service (#SSaaS): не в смысле коммерческой аутсорсиноговой услуги (хотя это было бы интересно!), а скорее в плане дружеской услуги, которую вы можете оказать всему сообществу Open Source.
-
-
-
-
-
-
-
-
-
-
-
-
-
Shit Shoveling 101
Вот основное, что вам нужно знать, чтобы присоединиться к этому движению вместе с нами:
-
-
-
-
-
-
-
-
-
-
Кураж > Совершенство: когда застреваешь с какой-нибудь запутанной проблемой, это часто приводит к снижению мотивации и продуктивности. Не зависайте в поисках красивого решения для каждой проблемы.
Смягчить удар > Сдаться: только подумайте обо всех решенных на 80% проблемах, о которых никто никогда не узнает. Хотя бы устранение шероховатостей, вызванных одной проблемой, может позволить вам решить сотню других
Полезное решение > Красивое решение: если вы можете помочь ближнему смягчить удар, не важно, сколько синей изоленты и пластыря вам для этого потребуется.
Open Source > Closed Source: Выпускать релиз, когда все готово? Неа. Выпускайте релиз, когда решение становится полезным! Хоть немного.
-
-
-
-
-
-
-
-
-
-
-
Присоединяйтесь!
Мы проделали долгий путь, разрабатывая наше решение для e2e тестирования, и теперь мы выпускаем его в свет.
-
-
-
-
-
-
-
-
-
-
Присоединяйтесь!
Мы проделали долгий путь, разрабатывая наше решение для e2e тестирования, и теперь мы выпускаем его в свет.
-
-
-
-
-
-
-
-
-
-
Чтобы поставить наше сравнение с «вооруженным конвоем» на научные рельсы, мы выпускаем следующие инструменты как часть e2e тестовой среды под названием «TestArmada»:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
magellan: Фреймворк-независимый тест раннер, обеспечивающий повторный запуск тестов, browser-as-a-service интеграцию, и вывод отчетов на дашборд или в систему непрерывной интеграции;
magellan-nightwatch: Первый (как мы надеемся, из многих других) плагин, позволяющий запускать magellan на существующем node-based вебдрайвере;
admiral: Наглядные дашборды для отслеживания результатов magellan в динамике
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Мы надеемся развивать эту среду в будущем , и для этого нам нужна ваша помощь! Присоединяйтесь к нам на http://testarmada.github.io
-
-
-
-
-
-
-
-
-
-
-
Мы надеемся развивать эту среду в будущем , и для этого нам нужна ваша помощь! Присоединяйтесь к нам на http://testarmada.github.io
-
-
-
-
-
-
-
-
-
-
-
Какой будет ваша #SSaaS история?
-
-
-
-
-
-","
-","
-",2016-07-13 17:16:56.778115,[3]
-5,True,"pyat-prichin,-pochemu-razrabotchik-po-—-otlichnyy-vybor-karery","Пять причин, почему разработчик ПО — отличный выбор карьеры","Я расскажу вам о том, почему я думаю, что карьера в разработке программного обеспечения является отличным выбором.",library/noroot_1.jpg,"Пять причин, почему разработчик ПО — отличный выбор карьеры",4,"Я расскажу вам о том, почему я думаю, что карьера в разработке программного обеспечения является отличным выбором.",library/shutterstock_380004967.jpg,"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Пять причин
Почему разработчик ПО — отличный выбор карьеры
Мы расскажем вам о том, почему карьера в разработке программного обеспечения является более, чем отличным выбором.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Пять основных причин, чтобы стать программистом:
-
-
-
-
-
-
-
-
-
-
-
Первая причина — КРЕАТИВНАЯ
Если вы спросите людей, какая, по их мнению, работа является творческой, то, скорее всего, они скажут, что это писатель, музыкант или художник.
Но мало кто знает, что разработка программного обеспечения тоже может быть очень креативной. Сама по себе разработка уже по определению креативная работа, так как вы создаете новые функциональные возможности, которых раньше не существовало.
-
Решения могут выражаться разными способами, как структурно, так и в деталях. Часто приходится идти на компромиссы (например, выбирать скорость в противовес потреблению памяти). И, конечно же, принятое решение должно быть правильным. Все это требует творческого подхода.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Вторая причина — КОЛЛЕКТИВНАЯ
Еще один миф это то, что программисты сидят в одиночку за своими компьютерами и разрабатывают ПО сутки напролет.
На самом же деле разработка программного обеспечения это почти всегда коллективная работа. Вы обсуждаете проблемы программирования и пути их решения с ваши коллегами, а так же обсуждаете требования и другие вопросы с продукт-менеджерами, тестировщиками и клиентами.
-
«Необходимо заметить и то, что парное программирование (два программиста, сидящие за одним компьютером) стало очень популярно»
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Третья причина — ВЫСОКООПЛАЧИВАЕМАЯ
А в сочетании с высоким спросом на разработчиков это значит, что вам заплатят очень хорошо. Конечно, существует ряд других профессий, где вы сможете зарабатывать так же хорошо... Но по сравнению с общим населением — разработчики ПО зарабатывают более, чем хорошо.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Четвертая причина — ВОСТРЕБОВАННАЯ
Все чаще и чаще в мире используется программное обеспечение или, как выразился Марк Андриссен (один из самых успешных инвесторов Кремниевой долины): «ПО захватывает мир».
Даже сейчас, когда рынок труда наполнен разработчиками, (в Стокгольме, к примеру, на сегодня это самая популярная и престижная профессия), спрос по-прежнему опережает предложение.
IT-компании сообщают, что найти хорошего программиста — одна из их самых больших проблем. С каждым более-менее хорошим разработчиком регулярно связываются HR-агентства с предложениями сменить работу.
-
"" Не знаю, много ли еще есть профессий, где бы работодатели так конкурировали друг с другом за вас.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Пятая, последняя причина — ПЕРСПЕКТИВНАЯ
Многие рабочие места стремительно исчезают, потому что они могут быть заменены компьютерами или программами.
Но все эти новые программы по-прежнему необходимо разрабатывать и поддерживать, так что перспективы для программистов абсолютно точно выглядя радужными.
-
-
-
-
-
-
-
-
-
-
-
-
-
Но...
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Как насчет аутсорсинга?
-
-
-
-
-
-
-
-
Разве не могут все разработки программного обеспечения быть выведены на аутсорс в страны, где зарплаты намного ниже?
Это пример того, когда идея в теории намного лучше, чем на практике .
Разработка программного обеспечения это такая же исследовательская деятельность, как и проектная деятельность. Она значительно выигрывает от интенсивного сотрудничества.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Кроме того, когда основным продуктом является ПО, то знания, полученные при его разработке, станут залогом конкурентоспособности. Чем легче знания разойдутся в рамках всей компании, тем лучше.
Посмотрим на это с другой стороны.
Аутсорсинг разработки ПО существует уже довольно долгое время. Тем не менее, спрос на местных разработчиков все еще очень высок. Таким образом, компании видят преимущества в том, чтобы нанимать местных разработчиков, которые сведут к нулю их высокие затраты.
-
-
-
-
-
-
-
-
-
~
-
-
-
-
-
-
-
-
-
Как победить?
-
-
-
-
-
-
-
-
-
-
Существует много причин, почему мы считаем, что разработка программного обеспечения это нескучно. Но это не для всех.
К счастью, довольно легко попробовать программировать. Например, — вы можете посетить один из бесплатных онлайн мастер-классов «Точки Кода». Это отличный способ погрузиться в мир программирования, чтобы на практике понять что это такое.
Найти то, что вам действительно нравится делать ради заработка, имеет как минимум два преимущества.
Во-первых, так как вы занимаетесь этим каждый день, работа будет приносить намного больше удовольствия, чем если бы вы делали это только для того, чтобы заработать.
Во-вторых, если вам действительно нравится то, что вы делаете, то у вас намного больше шансов преуспеть в этом.
-
-
-
-
-
-
-
-
-
-
-
"" Нам нравится представленная ниже «диаграмма Венна» о том, что из себя представляет отличная работа.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Так как программирование оплачивается крайне хорошо, мы уверены, что, если вам понравится им заниматься, у вас есть все шансы оказаться в центре диаграммы!
-
-
-
-
-
-","
-","
-",2016-07-13 17:10:18.396249,[7]
-4,True,3-mifa-o-izuchenii-yazykov-programmirovaniya,3 мифа о изучении языков программирования,"Если вы думаете, что это будет так же сложно, как и изучение реального разговорного языка, то вы ошибаетесь. На самом деле, вы стали жертвой того, что называется «Большие заблуждения о языке программирования» — ошибочные убеждения в том, что язык програ",library/noroot_sCjtK4A.jpg,3 мифа о изучении языков программирования,4,"Если вы думаете, что это будет так же сложно, как и изучение реального разговорного языка, то вы ошибаетесь. На самом деле, вы стали жертвой того, что называется «Большие заблуждения о языке программирования» — ошибочные убеждения в том, что язык программирования похож на реальный язык.",library/lookcomua3347.jpg,"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
III мифа об изучении языков программирования
Вы собираетесь выучить ваш первый язык программирования? Почему вы так долго откладывали?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Если вы думаете, что это будет так же сложно, как и изучение реального разговорного языка, то вы ошибаетесь.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
На самом деле, вы стали жертвой того, что называется «Большие заблуждения о языке программирования» — ошибочные убеждения в том, что язык программирования похож на реальный язык.
-
-
-
-
-
-
-
-
-
~
-
-
-
-
-
-
-
-
-
-
Если вы жертва таких заблуждений, то, скорее всего, вы думаете, что язык программирования:
01. Это «язык компьютеров» 02. Чужой и трудно читаемый 03. Требуются годы для изучения
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Позвольте заметить, что все эти три убеждения — мифы.
Продолжайте читать, чтобы узнать, как я развенчиваю эти три мифа и доказываю, что изучение вашего первого языка программирования намного проще, чем вы думаете.
-
-
-
-
-
-
-
-
-
-
-
-
-
Позвольте заметить, что все эти три убеждения — мифы.
Продолжайте читать, чтобы узнать, как я развенчиваю эти три мифа и доказываю, что изучение вашего первого языка программирования намного проще, чем вы думаете.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Миф I: Язык программирования — это «язык компьютеров»
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Миф I: Язык программирования — это «язык компьютеров»
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Запросы в Google чаще всего показывают, что люди спрашивают следующее:
-
-
-
-
-
-
-
«Как быстро овладеть Python?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Видимо, люди думают, что изучение такого языка как Python означает:
-
-
-
— Научиться «говорить с компьютером» — Научиться «думать, как компьютер» — Свободно «говорить» на языке, который не является для них родным
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Они ошибаются!
По правде говоря, подавляющее большинство времени языки программирования предназначены исключительно для таких людей, как мы с вами.
-
-
-
-
-
-
-
-
~
-
-
-
-
-
-
-
-
-
В информатике существуют низкоуровневые языки программирования и высокоуровневые языки программирования.
Низкоуровневый язык, как и язык ассемблера, говорит непосредственно с компьютером, выполняя длинную серию операционных процессов, один байт за один раз. Но на сегодняшний день язык ассемблера является лишь 29-м по частоте использования языком программирования. Большинство программистов пишут на высокоуровневых языках, таких как Python, PHP, Ruby и другие.
Вот какое определение дает словарь высокоуровневому языку программирования:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Язык программирования — это язык, который напоминает естественный язык или математические обозначения...
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Язык программирования — это язык, который напоминает естественный язык или математические обозначения...
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Высокоуровневые языки напоминают естественный язык, а также используют такие понятия, как математика и логика, потому что они разработаны, чтобы их легко могли понять люди — не компьютеры.
Изучение одного из таких языков программирования не означает, что вы научитесь «говорить с компьютером». Весь смысл их существования в том, что вы как раз и не должны этого делать.
И если высокоуровневые языки разработаны специально, чтобы мы могли их легко понять, как же хоть один из них выглядит на самом деле?Читайте дальше...
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Миф II: Язык программирования — чужой и трудно читаемый
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Миф II: Язык программирования — чужой и трудно читаемый
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Если вы попытаетесь прочитать текст, написан-ный на иностранном языке, вы можете столкнуться с:
-
-
-
— Незнакомым для вас алфавитом — Незнакомыми правилами грамматики и синтаксиса — И самое страшное — совершенно новым набор слов, который вы никогда не видели раньше
-
-
-
-
-
-
-
-
-
~
-
-
-
-
-
-
-
-
-
-
Но есливы попробуете читать на каком-нибудь высокоуровневом языке программирования,вы не встретите ничего из вышеперечисленного.
-
-
-
-
-
-
-
-
-
-
-
-
-
Но есливы попробуете читать на каком-нибудь высокоуровневом языке программирования,вы не встретите ничего из вышеперечисленного.
-
-
-
-
-
-
-
-
-
-
~
-
-
-
-
-
-
-
-
-
-
Позвольте мне доказать вам это...
В целях этого примера давайте предположим, что вы знаете английский и мы сравним его с SQL.
Взгляните на этот код справа, написанный на языке программирования SQL:
-
-
-
-
-
-
-
-
-
-
-
-
-
Во-первых,очевидно, что алфавит вам знаком. Все используемые символы легко можно найти на стандартной клавиатуре латинского алфавита.
Во-вторых,обратите внимание на правила грамматики и синтаксиса. Несмотря на небольшие отклонения, INSERT INTO Table (вставить в таблицу) кажется понятной и читаемой фразой. Как человек, говорящий по-английски, вы без труда поймете значение кода.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
И, наконец, посмотрите на слова.
Каждое слово уже существовало в английском языке. Нет иностранных слов, нет труднопроизносимых слов, вы не будете теряться в догадках о значении каждого слова.
В конце концов, весь «лексикон» языка программирования полностью происходит из реального языка — будь то английский, или любой другой язык.
-
-
-
-
-
-
-
-
-
-
И, наконец, посмотрите на слова.
Каждое слово уже существовало в английском языке. Нет иностранных слов, нет труднопроизносимых слов, вы не будете теряться в догадках о значении каждого слова.
В конце концов, весь «лексикон» языка программирования полностью происходит из реального языка — будь то английский, или любой другой язык.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Вот почему язык программирования даже и не язык вовсе. Можно сказать, что на самом деле, язык программирования это скорее сленг, чем язык.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Вот почему язык программирования даже и не язык вовсе. Можно сказать, что на самом деле, язык программирования это скорее сленг, чем язык.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Изучение вашего первого языка программирования теперь не кажется таким сложным, как изучение настоящего языка. И, как вы узнаете дальше, это еще ине займет у вас много времени.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Миф III: Язык программирования требует много времени для изучения
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Миф III: Язык программирования требует много времени для изучения
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Для того, чтобы выучить иностранный язык, вам нужно выучить:
01. Cлова (для того, чтобы выражать свои мысли и идеи) 02. Грамматику(для того, что связывать слова в предложения) 03. Научиться читать, слушать, произносить и говорить
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Для того, чтобы выучить иностранный язык, вам нужно выучить:
01.Cлова (для того, чтобы выражать свои мысли и идеи) 02. Грамматику(для того, что связывать слова в предложения) 03. Научиться читать, слушать, произносить и говорить
-
-
-
-
-
-
-
-
-
-
-
-
-
Это много! Нет ничего удивительного в том, что в среднем требуется от 23 недель до 1,7 года, а может и больше, чтобы выучить новый иностранный язык.
Изучение языка программирования, возможно, заняло бы столько же времени или даже больше, если бы он был создан для того, чтобы «говорить с компьютерами» и был трудно читаемым и непонятным.
Но мы уже знаем, что это не так...
Изучение команд и функций языка программирования (равносильно изучению слов в реальном языке) идет намного проще, потому что языки программирования используют те же слова, что и в настоящем языке (чаще всего английском).
И предполагая, что вы говорите на этом языке, освобождается огромный отрезок времени, который вы бы потратили на его изучение.
-
-
-
-
-
-
-
-
-
-
-
Это много! Нет ничего удивительного в том, что в среднем, требуется от 23 недель до 1,7 года, а может и больше, чтобы выучить новый иностранный язык.
Изучение языка программирования, возможно, заняло бы столько же времени или даже больше, если бы он был создан для того, чтобы «говорить с компьютерами» и был трудно читаемым и непонятным.
Но мы уже знаем, что это не так...
Изучение команд и функций языка программирования (равносильно изучению слов в реальном языке) идет намного проще, потому что языки программирования используют те же слова, что и в настоящем языке (чаще всего английском).
И предполагая, что вы говорите на этом языке, освобождается огромный отрезок времени, который вы бы потратили на его изучение.
-
-
-
-
-
-
-
-
-
-
-
-
-
Точно так же и научиться читать на языке не очень сложно.
-
-
-
-
-
-
-
Все слова будут вам знакомы, и, как мы уже видели, расшифровать язык программирования не так уж и трудно.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Изучение синтаксиса языка программирования
Равносильно изучению грамматики настоящего языка
Довольно нелегко, но помните, что высокоуровневые языки программирования предназначены для легкого понимания, так что их тоже можно выучить без труда.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Изучение синтаксиса языка программирования равносильно изучению грамматики настоящего языка
Довольно нелегко, но помните, что высокоуровневые языки программирования предназначены для легкого понимания, так что их тоже можно выучить без труда.
-
-
-
-
-
-
-
-
-
-
-
-
-
И, наконец
-
-
-
Проблем с тем, чтобы научиться слушать, произносить и говорить точно не существует.
Не знаю как вы, но лично я никогда не слышал, чтобы кто-то разговаривал на языке программирования.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Как видите, не так уж много вам нужноизучить в языке программирования в сравнение с настоящим языком.
-
-
-
-
-
-
-
-
А если вы изучаете меньше, то вы и времени тратите меньше. На самом деле есть множество историй людей, которые выучили язык программирования за считанные месяцы, даже всего за 12 недель.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Годы?
Нет, не думаю.
-
-
-
-
-
-
-
-
-
-
-
-
В заключении...
-
-
-
-
-
-
-
Язык программирования легок в чтении, быстр в изучении и разработан людьми, похожими на нас с вами. Так почему же не взяться за его изучение сегодня?
В конце концов, больше у вас нет никаких отговорок и оправданий.
-
-
-
-
-
-
-
-
-
-
-
-
-","
-","
-",2016-07-13 16:57:03.612801,[7]
-3,True,kak-hranit-paroli,Вы надежно храните свои пароли?,Вы надежно храните свои пароли?,library/noroot.png,Как хранить пароли?,3,"Как вы защищаете свои учетные данные, которые PHP-приложение использует для аутентификации или авторизации во внешних сервисах: базах данных, кэше, облачных хранилищах, почтовых сервисах и т.д.",library/thumb_8c20a7c207bb0990b4c6c482eb9bf593_1.jpg,"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Как хранить секреты? Вы надежно храните свои пароли?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Как вы защищаете свои учетные данные, которые PHP-приложение использует для аутентификации или авторизации во внешних сервисах: базах данных, кэше, облачных хранилищах, почтовых сервисах и т.д.
Куда вы положите их, чтобы они были под рукой во время разработки и безопасны на продакшене?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Только не в Git!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Только
не в Git!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Вам точно не стоит хранить учетные данные в системе контроля версий (в файлах config.json) — они остаются там навечно и их легко просмотреть: git log --follow -p -- config.json.
В чем тут проблема?
Да в том, что вы никогда не знаете, что случится в будущем и кто получит доступ к кодовой базе. Системы контроля версий по своей природе сохраняют все данные в истории, поэтому, даже если вы удалите файл, кто угодно сможет найти и просмотреть учетные данные в истории.
Кроме того, при командной работе права доступа к учетным данным могут быть не у всех разработчиков.
-
-
-
-
-
-
-
-
-
-
-
А если в переменных среды?
Сейчас модно размещать учетные данные в переменных среды.
Похоже, эта мода зародилась среди Ruby-разработчиков вместе с методологией «12 factor App principles».
В этом случае ваш Git-репозиторий остается чист, и вы можете использовать несколько окружений или легко переключаться между ними, просто корректно подобрав конфиги переменных среды.
Но, разумеется, это не обеспечивает безопасность: переменные среды в PHP могут стать доступны злоумышленникам:
-
-
-
-
-
-
-
-
-
-
А если в переменных среды?
Сейчас модно размещать учетные данные в переменных среды.
Похоже, эта мода зародилась среди Ruby-разработчиков вместе с методологией «12 factor App principles».
В этом случае ваш Git-репозиторий остается чист, и вы можете использовать несколько окружений или легко переключаться между ними, просто корректно подобрав конфиги переменных среды.
Но, разумеется, это не обеспечивает безопасность: переменные среды в PHP могут стать доступны злоумышленникам:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
В процессе разработки часто используется функция phpinfo, чтобы проверить, какие расширения установлены или удостоверится, что изменения в настройках PHP корректно сохраняются.
При таком подходе третьим лицам могут стать доступны ваши переменные среды. Ситуация гораздо хуже, чем вы думаете, потому что иногда phpinfo используется в вашем проекте, а вы даже не знаете об этом: например, Symfony Web Debug Toolbar и Laravel debugbar содержат удобную функцию phpinfo из коробки.
И если не они, то какой-нибудь из миллионов других инструментов поддержки разработки может «слить» ваши учетные данные в общий доступ.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
А теперь представьте, что ваше приложение уже запущено на продакшене во время разработки, те или иные дампы оказываются временно доступны онлайн для быстрофикса, а в этот момент появляются гуглоботы и подбирают всю эту информацию.
Тогда найти её в кэше Google или на сайтах вроде archive.org для третьих лиц — вопрос нескольких недель, максимум месяцев.
Вот тут-то для вас и наступит скорбный день. Поэтому помните: интернет ничего не забывает (а в этом случае еще и ничего не прощает).
-
-
-
-
-
-
-
-
-
-
-
Так какое решение?
-
-
-
-
-
-
-
-
-
-
Так какое решение?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Не будем забывать, что хранение паролей незашифрованными — это вообще ни разу не безопасно. Однако, может быть, мы можем взять 2 небезопасных практики и собрать из них одну безопасную?
Создать секретный ключ, который будет размещен вместе с кодом вашего приложения
Поместить зашифрованные учетные данные в переменную среды
Тогда мы получим преимущества обоих методов: учетные данные нельзя будет просмотреть посторонним, и, даже если переменные среды ненароком будут «слиты» ,злоумышленники не смогут ими воспользоваться. Актуальные учетные данные (или какая-то лазейка, чтобы их извлечь) по-прежнему не будут видны в коде, опубликованном в системе контроля версий.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Не будем забывать, что хранение паролей незашифрованными — это вообще ни разу не безопасно. Однако, может быть, мы можем взять 2 небезопасных практики и собрать из них одну безопасную?
Создать секретный ключ, который будет размещен вместе с кодом вашего приложения
Поместить зашифрованные учетные данные в переменную среды
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Тогда мы получим преимущества обоих методов: учетные данные нельзя будет просмотреть посторонним, и, даже если переменные среды ненароком будут «слиты» ,злоумышленники не смогут ими воспользоваться. Актуальные учетные данные (или какая-то лазейка, чтобы их извлечь) по-прежнему не будут видны в коде, опубликованном в системе контроля версий
-
-
-
-
-
-
-
-
-
-
-
Например :
-
-
-
-
-
-
-
-
-
-
Например:
-
-
-
-
-
-
-
-
-
-
Приведем пример, как использовать предложенное решение в Laravel 5.1. Сначала создадим секретный ключ, который разместим вместе с кодом приложения:
Теперь нужно зашифровать все переменные среды, которые нужно защитить (пароли, учетные данные…).
Это можно сделать, используя tinker или же, если вы собираетесь то и дело использовать их снова, создав новую команду Laravel. Пример команды можно просмотреть здесь, а ниже приведена реализация tinker-way:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
$ php artisan tinker
-# create encrypted instance with your secret key
->>> $c = new \Illuminate\Encryption\Encrypter(config("env.key"));
-=> Illuminate\Encryption\Encrypter {#765}
-# encrypt your plain text values and prefix them with "ENC:"
->>> "ENC:". $c->encrypt("Some Value");
-=> "ENC:eyJpdiI6InJUR2kyc...Q3In0="
->>> "ENC:". $c->encrypt("Another Value");
-=> "ENC:eyJpdiI6IkdcL2ErRW...ifQ=="
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Поскольку нам нужно использовать расшифрованные переменные среды в различных файлах config/xyz.php, дешифровку нужно провести где-то во фронт-контроллере. Поместим приведенный ниже пример кода в самом начале app/bootstrap.php, над остальным кодом:
Теперь secEnv(""ENV_NAME"", ""fallback value"") можно исполльзовать везде, чтобы получить доступ к зашифрованным данным. К примеру, в config/database.php, можно прописать:
Ради полноты картины следует заметить, что наши старые приложения также предоставляют SSH доступ к персистентному хранилищу, который позволяет размещать файлы конфигов и не держать их в Git.
Наши новые приложения вместо этого используют исключительно Git деплоймент и виртуальное хранилище, что делают описываемую в статье тематику еще более актуальной для нас.