Do it satchmo way

Недавно потребовалось быстро развернуть более-менее универсальный магазин для нашего нового проекта торговли велотоварами. PHP-системы мне как-то не нравились и из симпатии к python начал было писать проект на django, но вскоре понял, что скорее всего получается велосипед, и начал искать что-то готовое. Оно пришло в виде Satchmo, весьма универсального и накручиваемого решения для электронной торговли. Что понравилось – немало настроек, в которых поначалу можно запутаться. Есть тонкости в адаптации под себя, но они описаны в документации (один отсутствующий момент – это как обновлять sitemaps, пришлось додумывать и доделывать самома). Но главное, магазин развернулся из коробки и через пару часов в нём уже можно было добавлять товары. А вот допиливания мелочей происходят уже по ходу, и зачастую незаметно для посетителей 🙂

Чудны дела

Удивительно, но совсем рядом с теми людьми, кто проводит конференции разработчиков высоконагруженных систем находятся довольно забавные люди. Кто-то сравнивает непонятно что, непонятно с чем, а кто-то, видимо, начитавшись подобного пишет платёжные системы на ASP.NET, сталкивается с проблемами нагрузки и, вместо того чтобы заниматься оптимизацией БД, репликацией, установкой load balancer’а, делает такой финт: ставит несколько серверов, обслуживающих веб-запросы, которые за собой лезут к единой базе. Клиентам предлагает самостоятельно искать, какой-же из серверов сейчас доступен. Но даже, если ты счастливо находишь этот доступный сервер, это не значит, что ты совершишь свою операцию: база то одна на всех, и задержка ответов у неё дикая, и, например, список доступных провайдеров выдать быстро уже не может. Ну хорошо, отвечают они, вот вы действительно не можете получить этот список, так попробуйте увеличить время ожидания ответа. Но, максимальный таймаут прописан уже на их стороне, в обслуживающем веб-сервере и увеличить его никак! Задаюсь теперь вопросом: сколько же должно быть записей, чтобы для их получения и форматирования в SOAP-ответ требовалось более 3 минут? Вопрос почему же нельзя сделать простейший master (read/write) — slave (read) и брать статусы, списки и т.п. со второго сервера, а так-же почему бы не сделать простейший скрипт распределения нагрузки самим уже отпал 🙂

Дополнение: В процессе работы выяснился момент, что у ребят в WSDL были указаны неверные адреса сервиса, из-за этого и происходили проблемы с получением списка. Но перебор серверов всё-равно требуется.

Болезнь велосипеда в криптосредствах

Насколько мне известно, у нас в стране официально признан только криптопровайдер КриптоПро, и это всерьёз касается серьёзных банков и т.п. организаций. Недостаток его в том, что он сделан в виде COM-объекта, но решение как к нему подключиться, если потребуется, можно найти. А для всех остальных случаев, есть надёжный и удобный GPG/PGP с интерфейсами под кучи языков программирования, отлаженными библиотеками, и поддержкой всех платформ. Но вот как понять очередных «гениев», создающих свои библиотеки шифрования с какими-то бредовыми наворотами? Уже в третий раз за короткий срок сталкиваюсь с необходимостью прикрутить поделку неизвестных творцов и на этот раз это вообще шедевр — используются RSA ключи и нормальная PGP подпись, только в начало добавлены хэши и идентификатор ключа, да чуть изменены строковые разделители. Почему нельзя было обойтись обычной armor-записью и вытаскивать данные прямо из подписи? И ведь не поленились, написали версии под разные платформы и к тому же под C, C++, Delphi и Java.

Болезнь придумывания своего, походу, поражает только российские умы. Работали с британскими аутсорсерами одних наших партнеров — сразу предложили GPG. А наши всё пытаются или какую-то .NET DLL пропихнуть, или ещё какое-нибудь чудо, которому из настроек можно только адрес сервера дать и гадай какие у неё таймауты на соединение и логика запроса. А могли бы упростить работу по поддержке и себе. Но, пока им удобнее сотворить некое Windows DLL, а вы там уж сами разбирайтесь.