2015 год: опыт покупок в онлайн магазинах и доставка

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

Самое интересное, что ещё в 2012 году я помню как рассказывал немецкому заказчику о слабо развитом рынке онлайн торговли и главное электронны платежей в Украине (по крайней мере тогда мне так казалось).
Наверно сейчас можно сделать вывод, что это уже далеко не так. И сектор онлайн торговли в некоторых сферах (электроники и техники точно) планомерно и окончательно вытесняет традиционные торговые сети и мелкий ритэйл (т.к. совмещает широкий выбор, низкие цены и простоту поиска/сравнения). Онлайн платежи в пределах Украины тоже стали достаточно просты, понятны и прозрачны.


Read more ...

Метро 2035 - постапокаллиптическая антиутопия...

метро 2035

"Конечно же, простые люди не хотят войны. […] Но в конце концов, есть лидер страны, который и определяет политику, и народ всегда легко склонить следовать этой политике, независимо от того, идёт ли речь о демократии, фашистской диктутаре, парламентском правлении или коммунистической диктатуре. […] Абсолютно всё равно. Необходимо лишь сказать людям, что на них напали враги. Обвинить пацифистов в отсутсвии патриотизма и утверждать, что они опасны для страны. Такой способ подходит для любой страны." - Герман Геринг. Интервью с Густавом Гильбертом в тюремной камере, 18 апреля 1946, Нюрнбергский Дневник

Удивительно, но эта цитата (в моём вольном переводе) попалась мне как раз перед тем, как я начал писать этот отзыв о книге Дмитрия Глуховского "Метро 2035". Собственно, такое ощущение, что эта цитата и есть вижимка всей книги.

Если идти последовательно, то 10 лет назад "Метро 2033" завлекало, как боевик в оригинальном антураже - монстры, тайны, мистика (местами наивно и натянуто, но это же фантастика). "Метро 2034" имело тот же антураж, но, честно говоря, прошло мимо меня и показалось просто продолжением ради продолжения денег .

"Метро 2035" другое. Исключительно по стилистике - читать местами довольно трудно из-за рваных фраз и обилия троеточий, которые, видимо, символизировали панику, страсть, надрыв и прочее по ходу повествования. Это всё ещё боевик, местами захватывающий и напряженный. Но здесь больше нет мистики и мутантов (они просто "вымерли"). Человек виной всем ужасам, что происходят в метро. Здесь собраны все наши любимые герои из предыдущих частей... хотя и предстают, через 1-2 года, в неожиданных образах. Но в итоге роман получился откровенно политическим, чего не скрывает и сам автор. И за что автор тут же получил ярлык "белоленточной оппозиции" в комментариях и отзывах. В итоге невозможно однозначно рекоммендовать читать этот роман почитателям серии. Теперь надо смотреть ещё и на политические взгляды - одни сочтут роман "белоленточной туфтой", другие "хорошей басней на современную полит. ситуацию".

А жаль... что интересная идея в итоге политизировалась.

Не знаю на сколько корректна моя формулировка "постапокаллиптическая антиутопия". Если с "постапокаллиптикой" всё понятно, ядерный взрыв -> метро -> анархия -> всё плохо. То "антиутопия" - это традиционно идеальное общество под полным контролем (которое, обычно, рушится после того как "одна пружинкна выскочила из механизма"). В "Метро 2035" автор удивительным образов совместил общество, где "анархия и всё плохо", с "полным контролем". Главный герой Артём выступает, по канонам жанра, в роли "пружинки".

При прочтении не покидало чувство, что если подобно Рею Бредбери, развернуть этот роман в "некоторой стране", "некотором городе" и "воевать с неким абстрактным соседом", то получится "451 градус по Фаренгейту". [Дальше спойлер...]


Read more ...

О годе 2015-ом и наступившем 2016

В конце года все блогеры традиционно подводят итоги года. Я ни чем не отличаюсь, разве что делаю это в начале нового года, а не в конце старого. Всё это о работе, писать личном и тем более о личных планах - это не тот формат ;)

Успел в 2015:

  • Написал коммерческий проект на Yii2
  • Перешёл с PHP на Ruby и Ruby on Rails (но PHP не бросаю :))
  • Возненавидел магию Rails и понял специфику применимости Ruby
  • Понял, что абсолютно не знал ООП до этого
  • Узнал о Ruby фрэймворке Lotus.rb, вдохновлён этим подходом
  • Понял, что делал архитектуры веб приложений не правильно (думаю ещё не раз это пойму :) )
  • Открыл мир JavaScript SPA с Vue.js
  • Начал перевод документации по Vue.js на русский язык
  • Написал SPA с Vue.js + WebPack + Babel/ES6 - никогда ещё не писал так много JS и не испытывал так много удовольствия при этом!
  • Перешёл на MacOS
  • Вместе с другом и коллегой занял 1-е место в EU Web Challenge в Кракове (номинация "Команда")
  • Уделил время развитию блога, начал снова писать статьи, добавлять функционал (прикрутил CI/CD, так что за время написания этой статьи авто деплой принёс пару хотфиксов :) )

При этом добрую половину произошедшего (Vue.js и прогресс во фронтенде) я и близко не предвидел. Самое интересное в проф. жизни происходит спонтанно.

Не успел в 2015:

  • Перевод доки по Vue.js остановился после релиза 1.0, так и не начал заново
  • Не дошёл до серьёзной литературы по DDD и не попробовал на практике
  • Не довёл до реализации идею локального митапа по веб технологиям в Харькове
  • Не помог ребятам из Yii Team написать коммьюнити сайт, хотя и начинал, но приоритеты изменились (в связи с переходом на Руби)

Хочу в 2016:

  • Разобраться с языком Elixir, понять его применимость к моим нуждам
  • Использовать Lotus.rb наравне с Rails или хотя бы Trailblazer архитектуру , иначе долго я Рельсы не смогу терпеть :)
  • Написать proof of concept PHP приложение без фрэймворка (пока очень абстрактные идеи)
  • Поездить по ИТ конференциям
  • Организовать те самые веб митапы в Харькове
  • Расшевелить свою Ruby команду на качественный скачек (Привет, друзья, если вы меня сейчас читаете... "Шевелитесь !" :))
  • Научиться лаконично писать... да и дописать все драфты статей в блоге
  • А самое главное - жду неожиданных открытий, не менее впечатляющих, чем были в этом году

Как ускорить Vagrant (общие папки)

vagrant

Я разрабатываю PHP и Ruby веб приложения с использованием Vagrant и мне кажется, что это хорошее направление. Но есть одно "но" - плохая производительность веб приложений в Vagrant.
Основная проблема это низка скорость виртуализированной дисковой системы (папок с общим доступом между Хост машиной и Vagrant машиной).

Папки с общим доступом по-умолчанию

При стандартной конфигурации Vagrant-а, как
config.vm.synced_folder "./", "/var/www"
используется стандартный механизм папок с общим доступом в VirtualBox, но это работает медленно. И мы ощущаем последствия этого в виде медленного отклика веб приложений (это происходит из-за автоподгрузки классов и других операций связаных с диском).

Но есть пути улучшить это :

rsync

Если изменить конфигурацию на использование rsync
config.vm.synced_folder "./", "/var/www", type: "rsync"
то после vagrant reload
он не будет монтировать синхронизированную папку, а сделает физическое синхронизирование файлов в хранилище VirtualBox. Самое интересное, что внутренняя ФС VirtualBox очень быстрая (в отличии от ФС с общим доступом) и мы получаем очень хорошую производительность.

Но есть "ложка дегтя" :

  • для автоматизации синхронизации изменений с Хост машины на VB надо запускать vagrant rsync-auto каждый раз при запуске Vagrant машины

  • после каждого изменения файла проходит 2-3 сек. до синхронизации в VB

  • синхронизация односторонняя, нет нормальной возможности синхронизировать изменения обратно с VB на Хост машину (разработчики Vagrant обещали подумать над двусторонней синхронизацией, но пока это невозможно)

Так что на данный момент rsync не универсальный способ, но самый производительный.

NFS

Другой способ это использовать примонтированные NFS диски. Vagrant также поддерживает эту возможность
config.vm.synced_folder "./", "/var/www", type: "nfs"
и не забудьте запустить vagrant reload

После этого всё выглядит также, как и дисках с общим доступом по-умолчанию. Не надо ждать синхронизации или запускать синхронизацию вручную. Но производительность будет лучше (хотя и не такая, как при rsync).
Один минус - это не будет работать под Windows. А на Linux требуется установить спец. NFS пакет на Host и Vagrant машины.
На Host sudo apt-get install nfs-kernel-server nfs-common portmap.
На Vagrant sudo apt-get install nfs-common portmap.
Также NFS требует настроить в Vagrant Private network (а не public или bridget), должно быть примерно так
config.vm.network :private_network, ip: "10.10.11.11"

После единоразовой настройки всё будет работать автоматически и достаточно надежно. И это мой выбор на данный момент.

Иногда я встречал странные замедления при работе NFS в некоторых проектах. Пробуя разные параметры подключения, определил, что это может быть связано с локами файловой системы. И данная конфигурация улучшала производительность :
config.vm.synced_folder "./", "/var/www", type: "nfs", nfs_version: "4,nolock"

PHP opcode кэш (и подобные)

Ещё один аспект, который можно улучшить. использование opcode-ОЗУ кэша. Для PHP есть несколько вариантов - APC или Zend Opcache. Я не уверен, но для других скриптовых языков также могут быть подобные вещи. Например, включить APC кэш в Ubuntu можно так :
~~~ sudo apt-get install php-apc sudo service apache2 restart ~~~ В Vagrant машине вы увидете существенное ускорение PHP приложения с APC.

С другой стороны - рассматривайте это замедление работы диска в Vagrant, как хороший индикатор производительности вашего веб приложения. Если оно тормозит в Vagrant - возможно, будет тормозить и в Production :)


Read more ...

Основы Vue.js 1.0 (базовые концепции)

vue

Перевод статьи из блога Evan You "VUE.JS: A (RE)INTRODUCTION". Переведён прямой речью от лица автора.

Не забывайте, что мы переводим документацию Vue.js на русский язык. Присоединяйтесь! Детали тут.

Vue.js это библиотека для построения веб интерфейсов. В связке с некоторыми инструментами её даже можно назвать “фрэймворк”, однако это скорее набор необязательных инструментов, которые работают вместе действительно хорошо. Сейчас, если вы не слышали о Vue.js и не пользовались им раньше, вы думаете: "Какое счастье, ещё один скучный JavaScript фрэймворк!" Я понимаю это. Действительно, Vue не такая уж и новинка — впервые я начал работу над его прототипом почти два года назад, а первый публичный релиз произошёл в феврале 2014. С течением времени он эволюционировал и сейчас многие пользуются Vue.js в production.

Так что же предлагает Vue? Чем отличается от конкурентов? Что должно заставить вас изучать эту библиотеку, в то время как уже существуют Angular, Ember и React? Эта статья прольёт свет на эти вопросы, проведя вам короткий экскурс в мир концепций Vue.js. Надеюсь, по прочтению, вы получите ответы на ваши вопросы.


Read more ...
Евгений
Кузьминов "iJackUA"
Web Team Lead
в MobiDev (Харьков, Украина)
Code in PHP and Ruby, play with JS/Node.JS, evaluate Elixir, explore databases, use Ubuntu and MacOS, think about IT people and management

Заметки