Мой 2017. Ретроспектива года.

Что принёс мне 2к17? Нельзя сказать, что для меня год был плохой или хороший, однако он оказался весьма насыщен событиями и изменениями, так что, в любом случае, год запомнился.

 

Платформа Node.js

Создал приложение на базе express, angular2 и API социальных сетей «в стол»…

…зато обернул его в docker 🙂

В этом году я создал более–менее серьёзное приложение на этой платформе. В качестве бэкенда заюзал знакомый уже Express, хотя изначально, я задумывал скрафтить проект на Koa, но как–то дальше MVP не взлетело. Для БД изначально думал взять MySQL, но в итоге переметнулся к MongoDB.

Суть приложения — работа с API социальных сетей – сбор/обработка данных и построение отчётов.

Было много забавных моментов — API то у всех разные, и где–то можно получить определённую инфу, а где–то нет — приходилось делать финты ушами.

Но в итоге, я всё же привёл к единому виду все внутренние интерфейсы взаимодействия с соцсетями и всё заработало как надо. Единственная соцсеть, которая так и не поддалась мне — это злоедрючие одноклассники, об этой проблеме я уже писал ранее.

На фронте заюзал Angular 2 (это был первый серьёзный опыт работы с ним), и он там чертовски хорошо вписался — отзывчивые интерфейсы на Typescript делать оказалось весьма легко и быстро, при этом результат оказывался довольно впечатляющим.

Единственная проблема, с которой столкнулся именно из–за Angular — его трудно дружить с чем–то, что находится вне его собственной экосистемы.

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

Решился этот вопрос с помощью ngZone. По сути я пробросил объект компонента в объект window[‘AccountManagerComponent’], а в popup окне тупо вызвал методы компонента как–то так:

window.opener.AccountManagerComponent.zone.run(function() {
  window.opener.AccountManagerComponent.component.addAccountToList(JSON.parse('!{JSON.stringify(network)}'));
  window.close();
});

Таким вот, нехитрым способом, я сделал внешнюю авторизацию в соцсетях в Angular приложении.

А ещё, благодаря этому проекту, я наконец–то начал активно применять docker, к чему стремился довольно давно, но всё никак не находил времени ознакомиться с этим замечательным инструментом и опробовать в деле — поэтому, то приложение можно без проблем запустить на любой *nix машине при помощи пары команд (и правки nginx конфига).

*   *   *

Единственный косяк приложения — оно так и не ушло в production. До полного покрытия требований оставалось сделать в приложении пару довольно простых компонентов, вроде пользовательского кабинета и построения графиков отчётов, однако, как я понял, заказчика в итоге переманили, а это приложение так и осталось в приватном репозитории bitbucket.

*   *   *

Зато опыт, полученный в том приложении, отразился в другом pet проекте — hunter. Его мы пока не допилили в виду ограниченности времени. Он тоже построен на базе Express/Mongo/Angular, и нацелен на API социальных сетей, только цель взаимодействия у него совсем другая.

Ещё одно приложение работает на связке adonisjs и vue, и предназначено для финансовых расчётов и ведения бухгалтерии внутри нашей компании.

Приложение пока в фазе активной разработки, однако сама по себе связка оказалась довольно эффективным решением.

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

 

Распрощался с Мозаикой и MSC Digital в частности

Да, наверное, все кто меня знает, не ожидали такого стремительного поворота в моей жизни (уж банки–то точно не ожидали от меня такогоXD).

В MSC работают клёвые ребята, однако всё таки пришло время распрощаться с ними. Зацените, кстати, какой клёвый магнитик они мне намутили к уходу:

Уход мой был ознаменован тем, что в марте, совместно с Димастой, мы запустили свой стартап по созданию digital агентства с нуля.

Признаться честно, я долго тянул с уходом — по плану выходить на fulltime в S&T я должен был уже в конце мая, а по факту это случилось в середине июля.

*    *    *

Кстати, об S&T.

Я сам не ожидал, но мы очень стремительно двигаемся вверх. Фактически, мы предлагаем бизнесу качественные услуги по доступной цене. За это короткое время мы стали партнёрами 1С-Битрикс и Advantshop, поддерживаем и дорабатываем несколько крупных проектов, реализовали несколько небольших, поработали с заграничными заказчиками и придумали несколько новаторских способов привлечения клиентов.

В следующем году, у нас (я надеюсь) появится несколько полезных бесплатных онлайн сервисов, запустится полноценный блог и начнутся подкасты и видеопередачи на Youtube.

Но это дела дней грядущих, я же делаю ретроспективу года, поэтому бежим далее по теме.

*    *    *

 

Начал писать о WordPress

Да, было время, когда я не очень–то серьёзно относился к этой системе.

Раньше она была для меня просто популярным блоговым движком, от которого я не ждал ничего особенного. Однако, всё меняется, и избавившись от предрассудков, приобретённых при раннем знакомстве с низкокачественными проектами на этой системе, я решил разобраться, что это за зверь, и с чем его едят.

Результаты некоторых своих изысканий я решил оформлять в виде статей на ikfi.ru, а с недавних пор занялся ещё и адаптацией их для новичков. У таких статей появляется фидбэк, что стало для меня приятной неожиданностью, ведь только помогая учиться другим — учишься сам. Например, таким образом, с помощью фидбэка нашелся более простой способ для вывода флажков WPGlobus в одну строку.

Да и вообще, хорошо это — помогать людям, и настроение сразу поднимается, и желание жить усиливается.:)

В планах есть написание нескольких базовых подборок статей по WordPress для новичков, с подробными объяснениями — что и как работает, поскольку зачастую люди тупо копируют код с stackoverflow и подобных, даже не вдумываясь, что этот код делает и почему работает.

Ну и конечно, написать статьи по поводу дружбы Pods и WPGlobus, а также показать как можно реализовать некоторые вещи, доступные в платной версии WPGlobusPlus самостоятельно — я анонсировал это ещё в начале месяца, но пока руки не дотянулись до написания.

 

Запартнёрились с Bitrix и Advantshop

Зачем это нужно?

Партнёрство с крупными компаниями даёт тебе несколько преимуществ. И да, речь не пойдёт о доверии клиента к компаниям со значками «официальный партнёр 1C-Bitrix», это вообще на мой взгляд – тупое дерьмо, как и встраивание своих логотипов в сайты клиентов. Речь идёт о чисто шкурном интересе.

Вот, например, Битрикс.

Партнёрство с ним позволяет вам покупать решения самого битрикса и дополнительные модули с некоторой скидкой. Причём в договоре чётко прописано, что сами вы не имеете права брать с клиента денег меньше, чем стоит решение.

По сути, это означает, что для покупки лицензии стандарт, вы берёте с клиента положенные 15990, а битриксу платите 9540. Нормально? Нормально.:)

А ещё, можно получить бесплатную NFR лицензию для своей компании, но тут условие — она будет бесплатной, пока вы приносите битриксу деньги.

Advantshop подразумевает несколько иную систему партнёрства. Эти чуваки делают довольно прикольное e–commerce решение, которое есть в двух вариантах – SAAS или коробочная версия.

Они сами занимаются привлечением клиентов и передают их партнёрам. Вам остаётся лишь выполнить поставленные клиентом задачи и упаковывать магазины. Ну, а в случае, если ты знаешь и умеешь в C#, то можешь начать писать модули для CMS и зарабатывать на этом.

Правда есть и минусы работы с ними — очень тугая система оплаты и очень тугая ТП — иногда ответ приходится ждать сутки, а иногда ответ настолько шедевральный, что хоть–стой–хоть–падай.

 

Выполненные проекты

OpenSource

В этом году довольно мало (по сравнению с предыдущим) участвовал в каких–либо OS проектах. К сожалению, сейчас времени катастрофически не хватает на это. Могу отметить, разве что, мелкие утилитки для браузера, вроде Font–Usage–Info. Не знаю, можно–ли это считать OpenSource, но доработал модуль эквайринга РФИ для OpenCart 1.5 (по факту просто адаптировал версию для OC 2).

 

Сайты

Сайтов в этом году было много. Чертовски много. Хотя в основной своей массе не разрабатывались с нуля, но дорабатывались существующие сайты.

Если можно так сказать, то я дебютировал в e–commerce. До этого мне приходилось иметь дело с сервисами различной сложности, контентными сайтами и лендингами, поэтому я открыл для себя новый мир.

В целом, не могу сказать, что очень этому рад — в основной своей массе работать приходится с тем же OpenCart, и не было ещё такого, чтобы доставался проект с нормальным кодом. Обычно это либо нахераченный говнокод прямо в файлах движка, либо сомнительной ценности VQ/OcMod файлы.

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

Самое удивительное в OpenCart, так это отсутствие ORM (даже PDO нету!). Работая с этой системой пришлось вспоминать как когда–то я писал голые SQL запросы. Обработка форм в этом движке, после того же Yii, – это настоящая жопоболь десятого лэвла.

Сука, битрикс

Битрикс расстроил меня. Они настолько внедрили в головы идею, что 1С + 1С:Битрикс = Любовь, что мы даже не ожидали, что нужно будет ещё этот самый 1С научить корректно работать с битриксом. Да и в самом битриксе не всё так идеально, тут тоже нужно ещё постараться чтобы хоть что–то заработало.

ТП у Битрикса, это что–то гениальное. На мой запрос, по поводу выгрузки количественных коэффициентов (чтобы можно было разграммовку сделать, например), мне ответили, что в движке на текущий момент имеется такая проблема. Как только её решат — мне отпишутся в тикете.

Проходит пара дней и мне приходит от битрикса уведомление. Я, радостный, бегу смотреть что там.

 

Обращение автоматически закрыто!

Как по мне, так 1с — просто оухели. Мало того, что грёбанное ядро D7 не могут окончательно внедрить уже несколько лет, мало того, что половина шаблонов компонентов свернут вам глаза в круассан, так ещё и в ТП они умудряются грамотно послать наухй.

Всмысле будет обсуждаться? Это что–ли нестандартный функционал???!!! ?

Я мог бы такое простить тому же OpenCart или WP, но, чёрт возьми, это грёбанный коммерческий движок за несколько десятков косарей! Вы там в Битриксе вообще что–ли поодуревали?

Но не всё так печально!

Были проекты и на WordPress. Странно, эта система меня прямо радует. Пока работал в MSC, склепал WP тему для тепличного (в плане дизайна/вёрстки это было адище, правда насколько я сейчас осведомлён, во всех косяках проекта винят только меня), а уже в S&T сделали мультиязычный сайт для поляков, сайт для рекламного агентства, мультиязычный сайт для воронежских разработчиков автомобильного железа и софта, да и для себя сайтов на нём понаделали.

И это только то, что делали с нуля — помимо этого была куча проектов которые нужно было доработать, подверстать или частично переделать.

 

Лендинги

Сейчас вообще мало кому они нужны, многие сажают маркетологов за тильду и те фигачат лендосы сами. Другой вариант — интерактивные SPA, но на этом поприще тусуются в основном крупные игроки — малый и средний бизнес вряд–ли финансово могут потянуть разработку такого уровня, да и не пришли они ещё к пониманию, что тупой html страницы с формами захвата уже недостаточно для удержания клиента — потребности пользователей неумолимо растут, остаётся лишь шагать в ногу со временем и предлагать только лучшее, а это стоит денег.

Однако, всё же, вангую, что интерактивные SPA в качестве лендосов, будут иметь более массовый выход в 2к18, и те из вас, кто не в состоянии потянуть в штате фронтендера, рискуют просрать рынок лендингов в грядущем году — пузырь дорогих html–одностраничников, похоже, лопнул (но это не точно).

Сам я, будучи в MSC, успел сверстать прикольный лендос для клиники иглотерапии – этот кейс уже был разобран на ikfi. Ну, а в целом, ничего интересного на этом поприще не было.

 

Парсеры

Ха! Сотрудничество с Advantshop открыло для меня новое направление деятельности. Почти каждому клиенту нужен стартовый набор товаров. Для этого в адванте предусмотрены возможности CSV импорта каталога и категорий.

Обычно клиент указывает сайт (свой старый или поставщика или конкурента или ещё кого) откуда товары должны перекочевать в новый магазин на адвантшопе.

До сих пор, был только один клиент, который предоставил готовую выгрузку поставщика. В этой CSV было 60 полей — для каждого атрибута отдельное поле. И скажу я вам, конвертировать CSV в CSV это довольно муторное занятие (ведь нужно предусмотреть корректную мутацию каждого поля).

Был ещё один клиент, которому похоже уже кто–то делал выгрузку под адвант, но это была охеренная халтура, пришлось писать много регулярок, чтобы выделить свойства и атрибуты товаров из тупо скопированных html описаний.

Однако обычно, клиент просто указывает сайт. Для парсинга HTML юзается Symfony компонент DomCrawler — он показал себя весьма достойно (не падает на больших данных), однако и в нём есть косяки в обработке сложных селекторов, так что, пока не ясно, будем ли мы и в следующем году юзать PHP для этих целей, или выберем что–то другое.

Встречаются на этом поприще крепкие орешки. У меня до сих пор лежит кэш на ~28Gb сайта сантехники, обработка кэша занимает около 8 часов (выкачивалось всё это около 3 суток) и на выходе мы имеем 14 csv файлов и ~54000 товаров c описаниями, атрибутами, опциями и прочим.

Проблема кейса в том, что клиенту дали неверную информацию о возможностях системы (ну не тянет базовый тариф столько товаров), но клиента (какой сюрприз) не волнуют эти проблемы, он хочет получить заполненный магазин и начать продавать. В общем, там история продолжается до сих пор, мы применяли кучи фильтраций в попытках достигнуть консенсуса, в итоге пришли к ~35k товаров и повышению тарифного плана. Посмотрим, что из этого выйдет.

 

Знакомства. Грёбаные. Знакомства.

Похоже, в прошлом году, я недостаточно хорошо осознал, что знакомства через интернет — это сказки. Реально, либо тебя кидают в игнор после первого сообщения, либо в процессе общения, а то и сразу после взаимного лайка.

Да и сами беседы обычно далеко не заходят. Вот сижу иной раз, и думаю — то–ли я слишком тупой, то–ли слишком умный.

Короче, по итогам года — было 6 или 7 перерегистраций на тиндере в разное время. С него я получил фидбэк от четырёх–пяти людей, и лишь пару адекватных бесед, всё равно, приведших в никуда.

Mamba — как по мне, это вообще сервис для неадекватов. Реально, ни одной адекватной беседы. Это либо боты, либо какие–то тётки, страдающие от безделья и не способные нормально поддерживать разговор.

А ещё именно из–за этих пиадрасов моя анкета расположена на over9000 сайтов знакомств, которые находятся в одной франшизе. Это, блин, бесит, и вероятно они могут получить от меня иск в следующем году.

Забавно то, что похоже список юзеров у них не меняется. Каждый раз когда я просматриваю его – там одни и те же люди.

Короче, я отчаялся и удалил все аккаунты.

 

Начинаю продавать квартиру

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

И тоска – не самый главный недостаток. Yota там берёт максимум 3G, причём нужно отключать поддержку LTE – иначе можно получать стабильный отлуп от сети и быструю разрядку аккумулятора.

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

Сейчас я живу у родителей, наш офис в шести трамвайных остановках от меня. Заправляю тачку, ну раз или максимум два в неделю по 10 литров – экономия охеренная, и мне абсолютно похйу, что об этом думают другие.

Крч, меня всё это достало, и я решил избавиться от той квартиры, чтобы приобрести другую, поближе к цивилизации так сказать. Сейчас ещё ничего не ясно наверняка, думаю следующий год всё расставит на места.

 


Ну вот, собственно, и всё. Поздравляю вас с тем, что вы там отмечаете.


 

Ну и, вот вам ёлочка 😉

Фоточка моей мегаёлки

comments powered by Disqus