Дайджест находок вебмастера 2016-10-27

27/10/2016

Полезно иногда заглядывать в исходники интересных сайтов, вот некоторые из моих находок.

Такой же вебвизор как и в Яндекс Метрике. Бесплатный чуть более чем полностью. https://www.smartlook.com/

%d1%81%d0%ba%d1%80%d0%b8%d0%bd%d1%88%d0%be%d1%82-2016-10-27-13-31-42

Наблюдать за пользователями сайта realtime? Да еще и кликать за них мышью? Да, такое возможно.

https://peekin.io/ Сам сервис хоть и бесплатен, но в стадии alpha.

Stay tuned.

Блеск и нищета OpenCart как движка для интернет-магазина

13/10/2016

Это продолжение серии статей «Как я запускал интернет-магазин«. Часть 1 (Аналитика спроса перед запуском). Часть 2 (Выбор движка для интернет-магазина).

opencart1-500x500

А еще я в некотором роде разработчик. Для меня HTML, CSS, JS не пустые аббревиатуры, в 1999 году я сделал первый PHP+MySQL сайт за деньги. Сейчас у меня другое занятие, которое приносит деньги, но хотелось окунуться в чудесный мир e-commerce за небольшие деньги и сжатые сроки. По опросам знакомых веб-студий я сошелся на мнении, что нужно ставить OpenCart. Модулей ведь много, на все случаи жизни практически. Да и в базе движок выглядит достаточно приличным. И мой давний приятель, у которого довольно раскрученный магазин с хорошим трафиком, сказал «только Opencart есть движок с православно правильной архитектурой».

Ну, думаю, буду экономить свое дорогое время разработчика, буду покупать модули, это же дешевле стоимости часов разработчика. Забегая вперед, в итоге пришлось мне тратить ОЧЕНЬ МНОГО своего времени разработчика после установки модулей чтобы их просто подружить друг с другом да и просто устранить проблемы, не говоря уже о том, что многие модули работают мягко говоря не так, как ожидалось. А некоторые модули вообще оказались несовместимыми друг с другом 🙁 .

Итак, закатал я рукава и полез по колено в OpenCart, думал, всего-то, установить пару модулей и вперед к вершинам электронной коммерции и маркетинга.

Первым делом нужно выбрать нужную шкурку. Ну ок, магазин ведь ручного инструмента, поэтому поехали искать по ключевому слову «Tools». И вот она, черная тема в зеленой палитре на вьетнамском сайте. Купил за $25. Ставлю. И сразу же — оппа! Оказалось, что при достаточно большом описании категории оно неправильно позиционируется и текст прячется под фиксированным размером «бокса» ну и много всего по мелочи. Ушел редактировать стили темы, разбираться что где хранится, какова структура. Так что «сели и поехали» это скорее всего не про нас.

Открытие №1. Выяснилось, что модули любят ПЕРЕЗАТИРАТЬ код движка. Это значит, однажды установив подобный модуль вы лишитесь совместимости с новыми версиями OpenCart. Для решения этой проблемы придумали систему VQMOD или же ее реинкарнацию OPMOD, механизм, который стал частью Opencart. Суть ее в том, чтобы описывать изменения кода в специальном формате в файле XML, который потом достаточно загрузить через FTP или встроенный механизм загрузки и у вас будет установленный модуль. То есть сам функционал модуля описывается текстом, который нужно найти через Regexp в исходном файле и кодом, который нужно добавить или заменить в нужном месте. Таким образом выполняется эдакая прекомпиляция модулей в итоговый файл, который затем хранится где-то в кеше. Нужно ли говорить, c какой болью выходит отладка модуля? А взаимодействие одного модуля с другим?

Впрочем, вы и так не сможете без крови и соплей переехать на новую версию OpenCart потому что разработчики НЕ ЗАБОТЯТСЯ ОБ ОБРАТНОЙ СОВМЕСТИМОСТИ. То есть так и сказали, релиз OpenCart 2.2 не используйте, что-то он вышел у нас слишком сырым.

Открытие №2. Модулей ОЧЕНЬ много, и из модулей нужно уметь ВЫБИРАТЬ, потому что количество модулей только интеграции с Новой Почтой много-много. Вот, например, простыня статьи с выбором из ШЕСТИ модулей которые делают примерно одно и то же. Так я приобрел модуль Microformats Pro, функционал которого в последствии был продублирован функционалом модуля CompleteSEO. И теперь мне не очень понятно, не случится ли что-то с поисковой выдачей, если я выключу модуль Microformats Pro и перейду на поддержку микроформатов через CompleteSEO и полная ли в CompleteSEO поддержка этих самых микроформатов.

Открытие №3. Разнообразная (хорошая и не очень) техподдержка модулей.
Я купил модуль для интеграции с Google Tag Manager, который сразу же (!) не смог установиться на Opencart 2.1.0.1. Индус-разработчик по началу никак не реагировал на запросы, и только после запроса на возврат денег сразу же отписался и признал проблему с установкой, выпустил обновление.

Ведь у Opencart Store нет механизма попробовать модуль перед использованием, то есть я должен его купить и после этого, если возникнут какие-то проблемы, требовать возврата денег.

Открытие №4. Модули бывают несовместимыми.
Например, есть модуль, который собирает все шаги заказа на одной странице, чтобы не проводить покупателя через 6 страниц-шагов проведения заказа на одной странице и выполняет сам заказ при помощи AJAX. И это правильно и хорошо, но делает модуль Google Tag Manager чуть менее чем полностью бесполезным, поскольку перестает считать сумму заказа в аналитике Google Analytics через механизм dataLayer, поскольку сам механизм заказа стал работать по-другому. И здесь без программиста тоже уже никак не обойтись.

Открытие №5. К работе с SSL готов? Не совсем.
Скорее всего вы слышали, что сайты с SSL гугл любит больше, чем сайты без поддержки SSL, да и в Opencart это должно поддерживаться «одной галкой», но нет, не все так просто. Механизм админки перестает корректно работать с заказами, поскольку он делает AJAX запрос к API из HTTPS на HTTP, а это уже небезопасная операция, что также отобрало на отладку порядочно моего времени.

Мультимагазин. Хм. У нас есть отдельная категория товаров, таких как уровни и нивелиры, и хорошей идеей было запустить интернет-магазин отдельно, с отдельным дизайном. И да, сделать это оказалось просто и легко, с той же «шкуркой», по тем же правилам обработки заказов и единой базой клиентов. Но вот незадача, нет способа прикрутить Google Analytics к отдельному магазину. Да, вот так.

Фильтры. Это такая штука, которая нужна, пожалуй, каждому магазину. Это когда помимо категорий товары хорошо бы показывать «для мужчин», «для женщин», «для детей», «для строителей», «для детей строителей» и так далее. Очень полезно с точки зрения удобства использования. Внутренним функционалом OpenCart они представлены не очень хорошо, и следует использовать сторонний плагин типа MegaFilter. Но к этому плагину мне делать подход пока страшно O_o.

Резюме. Не смотря на то, что в базовой поставке Opencart достаточно неплох, я все еще не представляю, как быть с обновлениями версий движка магазина и что делать с несовместимостью модулей и как влиять на поставщиков модулей и их качество. Использовать OpenCart как есть, без каких-либо модулей не представляется возможным. Мы же хотим и различные оплаты принимать и доставки и гибко управлять SEO настройками, а это неизбежно потребует от нас влезания в ад модулей и поиска ответов на различных форумах и группах вконтакта.

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

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

Дайджест моих находок

20/09/2016

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

 

Фреймворк Grid Style Sheets — https://gridstylesheets.org/ или Constraints Cascaded Style Sheets.

Это не очередной bootstrap, это способ сделать хороший динамичный лейаут через JS + CSS используя идеи верстки с ограничениями (я не знаю как лучше перевести constraints layout). Использует алгоритм Cassowary для управления органичениями (constraints) при вычислении лейаута, тот же самый что и Apple в Cocoa верстке. Позволяет делать фантастические вещи, в том числе и очень респонсив верстку. Возможно, это то, каким должен быть CSS в будущем.

 

Язык ELM — http://elm-lang.org/.

Язык, который тесно связан с фреймворком, компилируемый в Javascript диалект Хаскеля. Я бы его рассматривал как альтернативу AngularJS, так как его область применения – только фронтенд. На него обязательно стоит посмотреть уже хотя бы потому, что он служит примером хорошей расширяемой архитектуры веб-приложений с функциональным подходом.

 

Playlist from ClojureTRE 2016 conference. Отметитил для себя отличные выступления Никиты Прокопова про Rum и Девида Нолана про ClojureScript.

 

Книгу, которую рекомендует как обязательную к прочтению Рич Хики How To Solve it и его PDF copy. И, конечно, не могу не порекомендовать его знаменитый доклад Hammok Driven Development. Если кратко изложить суть, то она будет следующей: прежде чем что-то кодить отойдите в сторону, подумайте, решите проблему сначала в голове. Решение проблем это навык, и как любой навык его можно и нужно качать так же как мы качаем мышцу.

Parinfer — великолепный способ indent + paredit в одном флаконе. Очень удобно для разработки Clojure(Script) приложений, выравнивание будет автоматически устанавливать нужные скобочки. Для суперленивых. Есть плагины для всех популярных редакторов.

TODO: прочитать Tools for thought.

APFS доступен в macOS Sierra

11/08/2016

APFS действительно новая файловая система от Apple вобравшая в себя лучшие черты ZFS.

Но в дисковой утилите вы его не найдете, только через командную строку diskutil

diskutil apfs list
WARNING: You are using a pre-release version of the Apple File System called
APFS which is meant for evaluation and development purposes only.
Files stored on APFS volumes may not be accessible in future releases
of macOS.  You should back up all of your data before using APFS and
regularly back up data while using APFS, including before upgrading
to future releases of macOS.
You can pass the «-IHaveBeenWarnedThatAPFSIsPreReleaseAndThatIMayLoseData»
option between the «APFS» verb and the APFS sub-verb to bypass this message.
Proceed? (y/N) y
No APFS Containers

 

Подробнее здесь.

Как я запускал интернет-магазин. Часть 2. Выбор движка интернет-магазина.

29/07/2016

Часть 2. Выбор движка для нашего интернет-магазина.

В части 1 я рассказал про аналитику рыночной ниши и ее потенциал для заработка. И сразу же возникает технический вопрос, что будем использовать, а не написать ли свой интернет-магазин? Не смотря на то, что я сам разработчик, но тратить время на разработку своего велосипеда с нуля, при всех преимуществах, пока не стал. Решил обойтись малой кровью и попробовать использовать то, что уже есть на рынке. Про некоторых популярных я сегодня вам расскажу.

Популярные претенденты:

У меня были такие критерии для выбора:

По опросам друзей лидировал Opencart, затем CS Cart и Magento. Opencart богат недорогими расширениями-модулями, в тоже время ценник на модули и на рейт программиста для Magento сильно выше. Ну а CS Cart, по отзывам, уже содержит в базе большинство функционала, который для opencart и magento поставляется в виде плагинов.

К Opencart куплена шкурка-тема, пришлось ее немного доработать для исправления глюков.

Какие плагины необходимо устанавливать в обязательном порядке? Выделю следующие:

Поскольку по-умолчанию страница оформления заказа в Opencart работает в 5 этапов также пришлось применить скрипт оптимизации оформления заказа, сборка всех полей заказа на одну страницу.

Скриншот 2016-07-29 15.03.33

Для повышения безопасности и благотворного влияния на поисковики был подключен SSL сертификат от Startssl. И настроил перенаправление с http на https версию сайта.

Скриншот 2016-07-29 15.04.31

 

Итого мои впечатления от выбора: Opencart позволяет быстро «взлететь» и специалистов-разработчиков на рынке очень много, поэтому можно их «перебрать» и найти годного специалиста по критерию цена/качество. В целом для меня как для разработчика покопаться в Opencart и его плагинах оказалось опытом довольно интересным, но малоприятным. Все потому, что разработчики Opencart решили применить такое себе кунг-фу VQMOD для того, что бы код движка был неизменным и его можно было «патчить» без изменения. Идея хорошая, но реализация в виде XML файла, который содержит строки для regexp поиска и замены кода кусками … мягко говоря не очень.

В следующей части я расскажу про инструменты аналитики и продвижения интернет-магазина: Google Tag Manager, Google Analytics, Yandex.Metrika + Webvisor, Google Search Console и Yandex.Webmaster.

 

Читайте продолжение: Часть 3. Блеск и нищета Opencart.

Обзор Xiaomi Roidme 2s

25/07/2016

Для непосвященных FM-трансмиттер это устройство, которое передает аудио сигнал на FM частоте, которую вы можете словить в вашем автомобиле. Таким образом вы можете проигрывать любимые мелодии со смартфона используя аудиосистему автомобиля без необходимости использовать какие-либо провода.

FM-трансмиттерами я пробовал пользоваться и раньше. Для iPhone 4 у меня был Griffin iTrip, который я бы не сказал, что хорошо работал, да еще и адски быстро садил батарею, да и требовал быть подключенным к непосредственно телефону. Roidme же предлагает еще и подпитывать ваш телефон, имея два (!) разъема зарядки по 2A, что, конечно же, не может не оценить ваша вторая половина, когда сможет одновременно заряжать и свой и ваш смартфон.

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

После запуска двигателя Roidme займет предустановленную FM частоту о чем оповестит вас звуковым сигналом, а также цветом индикатора разъема. В Roidme 2S цвета, которыми будет мигать устройство настраиваются прямо из приложения.

IMG_2148

Различие Roidme от Roidme 2s внешне только в наличии дырочки микрофона. Roidme 2s также имеет возможность работы как fands free используя встроенный микрофон, однако, на моем опыте это не очень хорошая идея, поскольку качество звука оставляло желать лучшего. Оно и понятно, расстояние до источника звука (меня) довольно приличное и таких помех как шум от двигателя предостаточно.
IMG_2149

Rodime и Roidme 2s абсолютно идентичны сбоку, но отличаются внутренностями.IMG_2150

С RoidMe я столкнулся с неприятной особенностью, что нельзя его настроить из iPhone. Для изменения частоты с дефолтной 94,6 на более свободную пришлось использовать Android.

IMG_2151

IMG_2152

 

В качестве бонуса ваш Roidme способен мониторить вольтаж аккумулятора в автомобиле в состоянии работы и в выключенном.
IMG_2153

 

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

Как я запускал интернет-магазин. Часть 1. Анализ спроса и потенциальной прибыли.

22/07/2016

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

Стратегия интернет-магазина.

С чего начинается запуск? Обычное дело, когда есть идея, которая нравится ее автору, но как протестировать ее на жизнеспособность? Как понять, сколько будет вообще потенциальных продаж, какова прибыль и через какое время?

Потенциальный спрос на товары и его динамика.

Как узнать количество продаж товара в той же Розетке? Конечно, они не поделятся статистикой, а есть ли другой способ? Оказывается есть.

Для этого есть такая гипотеза: 1% от количества всех поисковых запросов заканчиваются покупкой. Как посчитать количество поисковых запросов? Есть ответ — статистика поисковых запросов в популярных сервисах.

Категорий много, вручную набивать будет долго. Используем ParseHub для получения списка всех категорий с сайта оптового поставщика.

Скриншот 2016-07-22 16.28.04

Тестируем категории в планировщике ключевых слова в Google Adwords и получаем детальный отчет по ключевым словам категорий ручного инструмента за два года. .

Скриншот 2016-07-22 16.19.38

Также видно, кто откуда приходят покупатели и в каких пропорциях. Киев делает 30,8% всех покупок по отношению к Украине.

Скриншот 2016-07-22 16.35.09

Динамика спроса по товарным категориям

И динамику спроса по каждой товарной категории.

Скриншот 2016-07-22 16.37.30

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

В среднем в наших товарных категориях около 60000 поисковых запросов в месяц. Тренд по поисковым запросам через сервисы планировщик ключевых слова в Google Adwords и Yandex Wordstat показывает, что запросы по данным категориям растут примерно на 15% в год. Это значит приблизительно 600 потенциальных покупок ручного инструмента всего в Украине в среднем за месяц, в следующем 2017 году потенциально будет 690 покупок, в 2018 будет 793, а в 2019 будет 912, если динамика в 15% останется неизменной. Если мы претендуем выйти к 2019 году на объем треть рынка продажи ручного инструмента в месяц, то это будет примерно 304 покупки в месяц. А понимание этого факта нам дает возможность посчитать приблизительную прибыль.

Какая будет прибыль через три года?

Допустим в 2019 мы захватили треть рынка. Какая будет прибыль?

При марже на уровне 25% и среднем чеке в 300грн/мес у нас будет объем продаж 114000грн/мес., следовательно, валовая прибыль 28500грн/мес. Поехали от обратного, решим небольшое уравнение и построим линейную зависимость (хотя, конечно, правильнее было бы нелинейную).

Скриншот 2016-07-22 15.58.01

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

Итак, потенциальные цифры по прибыли понятны, сезонность спроса в целом тоже.

UPDATE: Часть 2. Выбор движка интернет-магазина.

Tern — умный autocomplete для Javascript в различных редакторах

Просто посмотрите на демо, и все станет понятно без слов.Скриншот 2016-07-22 12.03.08

http://ternjs.net/doc/demo/#simple

Много про Docker, CoreOS, Ansible и Xen

15/07/2016

Завел отдельный блог по тематике контейнеризации про Docker, Ansible, Xen, CoreOS : http://blog.it-premium.com.ua

Прошу любить и жаловать. И читать. И комментировать.

Видео и слайды мастер-класса про ИТ для бизнеса

08/07/2016

Чистый концентрат моего опыта управлением ИТ с точки зрения бизнеса и аутсорсинга ИТ-процессов.

Об этом и другом я рассказал на небольшом мастер-классе. Спасибо «Клубу деловых людей» за предоставленную возможность и Саше Пузько за помощь в съемке.

Слайды

Видео