• Как принимать платежи по кредитным картам — опыт Badoo

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

      Предпочтения пользователей меняются в зависимости от страны и устройства, с которого они заходят на сайт. Очень близки к идеалу оказались банковские карты, популярность которых растет из года в год, в том числе и в России. Это не только один из самых распространенных способов оплаты, но и самый прибыльный из всех доступных на сайте Badoo, а их более 20.

      Сегодня мы подробней расскажем о том, что осталось за рамками предыдущей статьи о биллинге: об обработке платежей посредством банковских карт; что надо знать и к чему готовиться, если вы только собираетесь их подключать; как увеличить их эффективность, если они у вас уже есть. В целом статья рассчитана на неподготовленных читателей, но и специалисты, возможно, найдут для себя кое-что интересное.
      Читать дальше →
    • Большое руководство по Yiinitializr

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

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



      Yiinitializr — библиотека, помогающая упростить и ускорить цикл разработки приложения на основе фреймворка Yii. Из коробки доступны 3 варианта структурных шаблонов:
      • Basic — создан для проектов небольших масштабов;
      • Intermediate — подойдёт для большинства проектов средней сложности;
      • Advanced — будет хорошим выбором для более сложных проектов с необходимостью предоставления собственного API.

      Почему стоит ознакомиться с этой статьёй? Отсутствие доходчивой документации вводит ещё неискушённых разработчиков в ступор (проверено на себе), а куча различных сюрпризов (например, в виде багов) замечательно дополняют это ощущение. Я попытался разобрать процесс работы с Yiinitializr до винтиков, чтобы уберечь вас от большинства неприятностей на пути его освоения.

      На этом, я думаю, описательных слов достаточно. Если вы читаете эту статью, значит вы уже, скорее всего, знаете, что такое Yiinitializr, и хотите получить ответы на конкретные вопросы по его использованию. А если всё-таки ещё не знаете, то основную суть, я надеюсь, вы уловили, так что не бойтесь читать дальше.
      Читать дальше →
    • Быстрый выбор случайных значений из больших таблиц MySQL по условию

      Задача выбора случайных строчек из таблицы довольно часто возникает перед разработчиками.
      В случае, если используется СУБД MySQL, обычно она решается примерно следующим способом:

      SELECT *
      FROM users
      WHERE role_id=5
      ORDER BY rand()
      LIMIT 10


      Такой код работает крайне медленно для больших таблиц.
      Если в запросе не нужно использовать WHERE или таблица небольшая, есть эффективные решения, например habrahabr.ru/post/54176 или habrahabr.ru/post/55864.
      Но готовых решений для большой таблицы и необходимости фильтровать по условию, получая при каждом запросе новые значения, я не нашел, поэтому описание моего способа под катом.
      Читать дальше →
    • Конкурс уязвимостей, или Ломай меня полностью!

        19 марта мы объявили о начале месяца поиска уязвимостей «Проверь Badoo на прочность». Сегодня нам хочется подвести первые итоги и поделиться с вами промежуточными результатами, рассказать, как мы готовились к проверке на прочность, рассмотреть самые интересные уязвимости и сделать «фейспалм».

        И для начала немного статистики:
        • за первые две недели участники прислали нам почти 500 заявок с потенциальными уязвимостями;
        • около 50 заявок оказались дубликатами;
        • каждая десятая заявка содержала в себе реальную уязвимость (самые опасные были исправлены в течение нескольких часов);
        • Более 150 заявок составили ошибки, не связанные с безопасностью сайта, и около 10% из них относятся к платформам, не участвующим в конкурсе.
        • большинство уязвимостей пришлось на самый главный компонент системы ― профиль (как только участники конкурса не издевались над аккаунтами пользователей: удаляли и загружали фотографии, манипулировали комментариями, интересами, личными данными и адресами электронной почты).
        • Более половины присланных уязвимостей ― различные CSRF, в основном затрагивающие загруженный или написанный пользователями контент (удаление и загрузка фото и комментариев, работа с чёрным списком, избранным и т.д.).
        Читать далее
      • Тестирование в Mail.Ru Group

          Эта статья написана по мотивам одноименного доклада на Highload++'2012. Предназначена она для руководителей, которые смогут, взглянув на наше тестирование, сравнить его с тестированием в своем проекте, для программистов и системных администраторов, которым представится возможность посмотреть на тестирование как на очень интересную работу, и, конечно, для тестировщиков.

          В статье я расскажу, о том, каким на самом деле может быть тестирование, как мы сделали тестирование продуктивной и интересной работой, какие задачи мы решаем, и почему работать у нас хорошо.
          Читать дальше →
        • Linux на сервер с Windows Server, или Vbox \ VmWare как сервис



          Начало


          Передо мной встала задача запускать при загрузке компьютера (как сервис), на Windows Server 2008R2 виртуальные машины, но обходя проблемы Hyper-V.
          Данные советы подойдут для не серверных систем тоже.
          Были проведены поиски в интернете, и результатов оказалось довольно много, но по-настоящему рабочих, как это бывает всегда — только один.
          Мучения были долгими, но увенчались успехом, о чём и хотелось бы написать.
          Читать дальше →
        • Bitcoin получил официальное признание


            Европейский Центральный Банк выпустил 55ти страничную публикацию, посвященную исследованию существующих виртуальных платежных систем. В документе подробно рассматриваются в качестве примера валюты Second Life и Bitcoin. Самое интересное, что, во первых, Bitcoin посвящено не менее четверти документа, а, во вторых, выводы исследования кажутся вполне объективными и более того содержат положительную характеристику для этой валюты и системы ее обращения.

            Это событие фактически означает официальное признание существование данной валюты, ее состоятельности и платежеспособности. Кроме того открываются перспективы для легализации работы фьючерсных бирж, таких как icbit.se. Последние, к слову, запустили беспоставочные фьючерсные торги на кокаин, золото и нефть


            Комментарии в других источниках
          • Потоковая загрузка и обработка видео посредством node.js + php и ffmpeg — часть первая

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

            Поскольку тема очень обширная, разделю ее на разделы:

            1. Общие проблемы, нюансы, с которыми пришлось столкнуться
            2. Загрузка видео (на этой теме, пожалуй, не буду останавливаться, поскольку она уже поднималась в этом и этом посте.
            3. Обработка видео.
            4. Сохранение в облачном хранилище.

            Читать дальше →
          • Анализируем загрузку веб-страницы

            • Перевод
            Ниже перевод статьи «Optimizing Page Load Time», в которой автор математически рассчитывает оптимальный размер файлов для эффективной передачи при веб-запросах, рассматривает некоторые прикладные вопросы оптимизации загрузки страницы с учетом особенностей браузеров, а также дает несколько развернутых и ценных советов. Мои комментарии далее курсивом.

            Существует распространенное мнение, что быстро загружающая страница положительно влияет на впечатление пользователя (improve the user experience). В последние годы многие сайты начали использовать для этой цели технологию AJAX, чтобы уменьшить время ожидания (при загрузке данных). Вместо того, что запрашивать с сервера новую страницу полностью при каждом клике, браузер часто можно либо поменять вид самой страницы (отобразив или скрыв какие-либо блоки), либо подгрузить небольшую порцию HTML-, XML- или JavaScript-кода и внести изменения на существующую страницу. В любом случае, это значительно уменьшает время, проходящее между кликом пользователя и окончанием визуализации браузером нового содержания.

            Что влияет на загрузку страницы?



            Однако, для большинства сайтов, загрузка страницы затрагивает десятки внешних объектов, основное время загрузки тратится на различные HTTP-запросы картинок, JavaScript-файлов и файлов стилей. AJAX, возможно, поможет в данной ситуации, но ускорение или удаление этих HTTP-запросов может принести гораздо больше пользы, хотя на данный момент нет единого мнения (a common body of knowledge), как именно это следует делать.

            читать дальше на webo.in →