Pull to refresh
-1
0
Кирилл Морозов @kirmorozov

Архитектор Magento, консультант по интеграциям.

Send message
Для кого-то свершилась мечта.
Срезали 150ms инициализации системы.
Так держать.
Спасибо за свое «фе», но хоть бы подсказал где глаза болят больше всего.
Такие конструктивные комментарии отбивают все желание писать что-либо на хабре.
Не хотел сильно уходить от оригинала, и рвать глаза гугло-переводчиком, после которого очень больно читать.
Если хочется почитать дело — оригинал.
Есть есть конкретные замечания по тексту, неточности перевода, дайте знать.
Привет,
У использования абстракции для импорта данных есть один минус — скорость, часто этот минус больше плюса по простоте реализации.
Время импорта 10 продуктов подобным способом составляет порядка 10 секунд на моём ноутбуке.

Импорт 100k+, 150k+ товаров превращается в кошмар и ужас при каждом обновлении.
И еще если кеш очистится из-за какого-то чудо-кода модуля и начинает тормозить фронт…

Самый надежный способ на практике:
1. Загрузка данных в транзитную transit_flat табличку тупеньким скриптиком.
2. Создаем товар создав строчки в «catalog_product_entity», «catalog_product_entity_int» для атрибутов visibility, status, tax_class.
3. catalog_category_product для привязки к категории, catalog_product_website для привязки к магазину.
4. И для каждого нужного атрибута:
Insert into catalog_product_entity{_int|_varchar|_text} from… transit.field_x as value select transit_flat transit inner join catalog_product_entity as cpe ON… on duplicate update…
5. Для склада все просто: все всегда лежит в «cataloginventory_stock_item», можно «cataloginventory_stock_status» обновить сразу и не ждать индексатора.

Описанный выше метод работает быстро так как все операции происходят в памяти базы данных mysql: search using index — O(log(N)), full scan — O(N), insert — O(1).
10-20 минут для каталога, который некоторые считают огромным, хватает.

Прошу прощения, что так сжато.
Надеюсь найдется время договориться по NDA, подготовить «консерву» быстрого импорта.

Ты прав, я забыл настолько, что даже написать забыл. :)
Не все так печально, все картинки оптимизируются по запросу на месте.
Так даже pagespeed умеет, рекомендую для начала.
Коллега, мы (все IT) решаем одну единственную задачу, но разными способами.
Уменьшить затраты времени для человека. Точное выражение которой:
T = посетители*(время загрузки)+(время сжатия)+(время интеграции решения)
Если использовать ваш «молоток», то время интеграции решения с обработкой всех ссылок на картинки и его поддержка может обойтись дороже, чем «топор» обработки Accept.
Я просто вкрутил это дело в свое время за часов 20 от идеи до боевого.
Pagespeed, который работает как ваш молоток, жрет немало памяти и медленней отдает html из-за отсутствующей картинки. Использовал сам.

Если все запросы за картинками идут простыми GET запросами.
Простой запрос GET, простой ответ, в зависимости от заголовка.
Хром и все приличные браузеры добавляют заголовок Accept:… image/webp…
Что сомнительного если браузер получит ответ с заголовком Content-Type: image/webp и WebP картинкой внутри?
Не глядя на User-Agent, просто по Accept заголовку, по факту оказывается вполне достаточно.
Браузеру важен какой Content-Type, он доступен по ссылке *.png или *.jpg значения не имеет.
И не тратит такие ценные миллисекунды на обработку html.
Уже полгода перехватываю и Accept: image/webp и подменяю картинки на месте.
Никаких проблем и жизнь прекрасна, только Content-Type в ответе нужно указать image/webp.
И никаких правок в html, забыли про пункт «оптимизируй картинки» совсем.
Это к математикам — значит, что горе-программист должен уйти в отставку.
Поздарваляю :)

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

Коллеги, а Математиков которые знают что такое O(N) и O(M*N) не пробовали выводить?
Одного курса по сложности аглогитмов хватит все остальное — технические инструменты.
И никакая магистратура не нужна, просто увеличиваем N.
Ребята прекрасно пинимают, что это — фундамент на котором работают как гиганты так и встраиваемы системы.

Заходите, на кофе в субботу, и код пописать и с коллегами поболтать.
Code Contribution Day, синхронно с Венецией.
Все ТУТ
Еще лучше, уже идем в нужном нарпавлении.
Как получить сообщение о фактической оплате сразу после оплаты?
Продавцу нужно будет еще какую-то кнопку нажимать уже после оплаты.
Коллега, IT чаще всего решает задачу оптимизации времени.
Для данного случая:
Задача
Mаксимально быстро и дешево открыть точку самовывоза/покупки товара, для интернет-магазина. Все акции и программы лояльности должны быть сквозными по умолчанию.
Найти самый быстрый путь для данных от БД магазина до терминала и принтера чеков.
Решение
Использовать custom scheme для передачи необходимых данных для приема оплаты, печати чека в приложения на устройствах iOS и Android и попросить поставщиков касс/терминалов сделать такие API в приложениях.
Ожидаемый результат
Это должно уменьшить к-во часов инженеров на интеграции, уменьшить время запуска новой точки продаж, уменьшить стоимость поддержки на местах. Может и отрыть двери для построения розничных сетей под крышами Интернет-магазинов.
Привет,
Подключали PinPad.
Чтоб было больше уверенности у покупателя.
Все один в один c Терминалом 2Can / Яндекс mPOS
Уже радует, но какова стоимость внедрения?
Если сравнить с:
За недельку прикрутили нужное API в админке и запустили это дело на iPad. Все замечательно.
1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity