Pull to refresh
37
0
Серега @thecoder

Бекенд на микросервисах

Send message

Как я подключался к QIWI

Reading time6 min
Views34K

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


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

Было принято решение принимать платежи через QIWI, во-первых потому что их автоматы есть практически везде, а во-вторых (тссс, большой секрет!) они готовят запуск системы прямых платежей со счета сотового оператора, без всяких дурацких СМС и девяностодевятипроцентных комиссий.

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

Сказано – сделано!


Для сайта был взят вполне заурядный VDS, на котором собран вполне заурядный же серверный набор – nginx спереди, Apache позади.

Основа в виде некоей CMS у меня уже была, в том числе в ней был реализован и модуль личных счетов пользователей с подключаемыми модулями платежных систем.

Для работы с SOAP проще всего взять с гуглокода класс nuSOAP (http://code.google.com/p/nusoap-for-php5/).

Затем нам надо сделать две вещи:
  1. Отправку на сервер QIWI информации о попытке платежа
  2. Прием от QIWI на наш сервер пакета с информацией об изменении статуса платежа.

Документация, жаль, что не очень подробная, есть здесь: https://ishop.qiwi.ru/docs/OnlineStores_Protocols_SOAP.pdf
Читать дальше →

5 подсказок для получения положительных отзывов

Reading time3 min
Views957
Как стимулировать людей к написанию положительных отзывов?


В своей последней статье habrahabr.ru/blogs/startup/76650 я говорила о ценности отрицательных отзывов и получила много интересных комментариев и полезной информации. Спасибо всем! Одним из главных вопросов, которые мы обсуждали в комментариях, был: как вообще заставить людей писать отзывы? Поэтому я решила опубликовать статью на эту тему.

Отзыв о потребительских товарах может стать мощным инструментом увеличения объема продаж, но от него мало толку, если вы не можете уговорить ваших потребителей оставлять отзывы после контактов с вами. Чтобы вы могли использовать отзывы о ваших товарах в своих интересах, вам нужны потребители, готовые выкроить в своём графике 5 минут, чтобы дать вам знать, что они действительно думают. Вот как вы можете убедить их в том, что это стоит потраченного ими времени и усилий:
Читать дальше →

Загрузка браузером нескольких файлов

Reading time5 min
Views30K
Если нужно дать пользователю возможность загрузки нескольких файлов, традиционное решение на данный момент — использовать для этой цели Flash (реже — Java applet или ActiveX). В случае, если соответствующий плагин недоступен, пользователю, как правило, показывают стандартный HTML-элемент для загрузки файла.

Последнюю ситуацию можно улучшить, если использовать встроенную в браузеры возможность множественной загрузки файлов. Из всех браузеров сейчас данную возможность не поддерживает только Internet Explorer (впрочем, мы ещё не видели девятую версию, может там что-то изменится), остальные браузеры — Opera 9 и выше (а так же версии 3.5—6.05), Firefox 3.6+, Chrome 3.0.191.0+ и Safari 4.0.1+ такую возможность предоставляют.

Достаточно написать что-то вроде
Copy Source | Copy HTML
  1. <form enctype="multipart/form-data" method="post">
  2.    <input type="file" min="1" max="9999" name="file[]" multiple="true" />
  3.    <input type="submit" name="submit" />
  4. </form>
PHP оказался готов к такой конструкции (именно для него в параметре «name» стоят квадратные скобки), он просто разложит загружаемые файлы по элементам массива $_FILES, если только мы не используем «Оперу».

К сожалению, «Опера» (ещё с версии 3.5) отправляет, при использовании мультизагрузки, файлы в контейнере «multipart/mixed», который PHP не понимает.

Я попробовал исправить эту ситуацию.
Читать дальше →

Организация on-line платежей на сайте. Для тех, кто никогда этим не занимался, но боится, что придётся. Часть 2: архитектура

Reading time13 min
Views7.2K
Вслед за первой частью, призванной в первую очередь показать, что «не так страшен чёрт, как его малюют»

Статья об архитектуре части проекта, которая занимается он-лайн платежами. Намеренно не хотелось бы сейчас подробно описывать API конкретного биллинга или процедуру регистрации в нём. Тонкости конкретных биллингов нужно обсуждать отдельно, иначе тему просто не раскрыть. Цель статьи: обсудить вариант архитектуры, позволяющий нанизывать новые виды биллингов и типы платежей, с наименьшей головной болью.
Читать дальше →

Все что нужно знать о секционировании (Часть 2)

Reading time6 min
Views13K
Часть 1

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

Текст любой ценой: PPT

Reading time3 min
Views5.1K
Некоторое время назад мы с вами обсуждали получение чистого текста из различных форматов данных: будь то PDF или DOC. В одном из обсуждений был высказано предположение, что при парсинге презентаций PowerPoint я заработаю геморрой или другую страшную болезнь мягкой точки. Что ж, волей судеб мне пришлось доставать текст и из этого «сладенького» формата. Скажу честно, геморрой заработать не удалось, а вот класс для парсинга презентаций вышел.
Читать дальше →

Верстка повторяющихся блоков

Reading time3 min
Views14K
Довольно часто при верстке сайта возникает необходимость размещать блоки одинаковой ширины, но разной высоты в контейнере с переменной шириной (читай резиновом). Плюс на этот список может применяться фильтр, который JS-ом скрывает или показывает элементы списка, при этом он не должен разрушать «строки», верстку, или образовывать дыры, поэтому решения на таблицах не катят сразу. Простейший пример — каталог товаров:


Читать дальше →

Интернет-магазин оружия своими руками

Reading time3 min
Views2.3K
Читал несколько постов в рубрике «Мой бизнес», возможно и мой опыт будет кому-то интересен.

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

Итак, обо всем по порядку.

Интернет-магазин промышленного оборудования

Reading time3 min
Views1.2K
Начну с того, что больше года назад устроился в компанию занимающуюся продажей промышленного оборудования и комплектующих. Работал я там неполный день, что-то вроде приходящего сотрудника. Вскоре, я предложил начальству разработать интернет-магазин, так как это может увеличить и упростить продажи.
Почему я говорю упростить? Всё из-за того, что есть разные типы оборудования, одни стоят условно 5.000руб, а другие больше 500.000 евро. Вот как раз, дорогое оборудование продавать через интернет сложно, если не сказать невозможно, всё из-за того что такую технику покупают заводы и предприятия, ну и сомо-собой всё идёт через главных инженеров и откаты им, чтоб купили именно у вас, это самая простая схема, чаще всего всё гораздо сложнее.
Читать дальше →

Аналог Time Machine для Windows

Reading time3 min
Views24K
Time Machine Каждый из нас иногда теряет информацию. По своей ошибке (дрогнувшая рука, не вовремя нажатые клавиши CTRL+S), либо по неудачному стечению обстоятельств (выбило пробки, завис компьютер). Иногда речь идет о пустяках. Бывает, что приходится заново выполнять работу. В худшем же случае, ценная информация оказывается безвозвратно утеряна.

Все мы знаем, что необходимо периодически делать бэкапы. Знаем, но не делаем. А если и делаем, то, по закону подлости, когда надо, копия месячной давности — это лучшее, что удается найти. А ведь случается и так, что утерянный файл было создан всего лишь пару часов назад.
Когда я не мог определиться с темой диплома, один знакомый рассказал мне про TimeMachine от Apple и предложил сделать аналог для Windows. Непрерывная защита данных – это то, о чем я всегда подсознательно мечтал.
Читать дальше →

Map/Reduce: решение реальных задач — TF-IDF — 2

Reading time3 min
Views14K
Продолжая статью “Использование Hadoop для решения реальных задач”, хочу напомнить, что в прошлой статье мы остановились на том, что посчитали такую характеристику как tf(t,d), и сказали, что в следующем посте мы будем считать idf(t) и завершим процесс вычисления значения TF-IDF для данного документа и термина. Поэтому предлагаю долго не откладывать и переходить к этой задаче.

Важно заметить, что idf(t) не зависит от документа, потому как считается на всем корпусе. Это нетрудно увидеть, посмотрев на формулу:



Вероятно, она нуждается в некоторых пояснениях. Итак, |D| это мощность корпуса документов — иными словами, просто количество документов. Мы знаем его, поэтому считать ничего не надо. Знаменатель же логарифма — это количество таких документов d которые содержат интересующий нас токен t_i.

Читать дальше →

А давайте подружимся с SSH

Reading time7 min
Views3.2K
Многие мои знакомые так или иначе используют протокол SSH (заходя на свои роутеры, веб хостинги и непосредственно на собственные компьютеры дома и в офисе), при этом не все об этом знают.



Я расскажу о нескольких стандартных возможностях, не открою ничего нового и сакраментального администраторам, но простые пользователи существенно упростят себе работу и, возможно, даже начнут активнее пользоваться этим великолепным протоколом.

В этой заметке вы узнаете:
  • как прописать псевдонимы для соединений
  • как настроить авторизацию без пароля
  • как передавать файлы по SSH
  • как запускать графические приложения по SSH
  • а так же получите общие советы по опциям SSHD


Читать дальше →

PHP-AMQP Что нового у Друзей?

Reading time4 min
Views6.9K
При построении социальной сети по типу шардинга встает проблема обмена данными между шардами. Традиционная репликация в данном случае не подходит по разным причинам. Тема шардинга — это отельная большая тема и не является предметом данной статьи.
В данной архитектуре для реализации «ленты Друзей» или «Новостной ленты» лучше использовать сервер очередей используя систему: Подписка-Уведомление. В качестве брокера обмена предлагается использовать сервер очередей RabbitMQ, реализующий протокол AMQP, который был выбран по причине хорошей масштабируемости. Серверная часть реализована на PHP, используя расширение php-rabbit (описание АПИ).
Читать дальше →

Вращение объектов в 3D

Reading time2 min
Views5.1K
Приветствую тебя, %username.
image



Сегодня я хочу продемонстрировать возможности замечательного IMagick, и показать как с легкостью можно получить анимированное 3D gif изображение. Это может пригодиться, например в магазинах, которые продают мобильные телефоны, и хотят продемонстрировать покупателям телефон в 3D, без использования Flash.


Читать дальше →

Универсальная система мониторинга Zabbix — введение

Reading time4 min
Views438K
LogoВ любой сети, где есть больше, чем один сервер, очень полезно бывает иметь перед глазами полную картину происходящего. В крупных сетях, где количество хостов переваливает за несколько десятков, следить за каждым в отдельности — непосильная задача для администраторов. Для облегчения задачи наблюдения применяются системы мониторинга, и я расскажу об одной из них, которой на Хабре не посвящено ни одной полноценной статьи.

И так, встречайте: Zabbix.
И что он из себя представляет?

Browsera — новый инструмент тестирования сайта

Reading time2 min
Views5.1K
Browsera — сразу определимся что это не ещё один сервис бесплатных скриншотов. Этот сервис позволяет проводить атоматизированнное тестирование кросс-браузерности вашей вёрстки, то есть читается ваш html код, стили, скрипты — и моделируется их отрисовка в соответствии с особенностями того или иного браузера. Впрочем, сервис также генерирует скриншот для каждого браузера: будет что отослать верстальщику.

image
Читать дальше →

1001-ый способ вертикального выравнивания

Reading time2 min
Views128K
О вертикальном выравнивании блока неизвестной высоты по центру или низу родителя сказано много. Есть способы, основанные на display:table-cell для хороших браузеров (без кавычек) и expression для IE, способы, основанные на относительном позиционировании (могут плохо работать при переполнении). В этой заметке будет описан способ, работающий на особенностях такого мощного отображения, как встроенный блок (display:inline-block).
Читать дальше →

7 шагов для систематизации процесса дизайна и разработки

Reading time6 min
Views4.4K
Систематизация означает создание процессов или предопределенного набора мер, которые предназначены для ускорения выполнения трудоемких и повторяющихся задач.

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

Мой редактор BB кодов

Reading time1 min
Views3.3K
Некоторое время назад я опубликовал статью «Простейший редактор BB кодов». В запале обсуждения пообещал выполнить редактор в виде плагина. Вчера у меня выдалось несколько свободных часов, вот выполняю обещание.
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity