• Используем Webpack вместо Sprockets в Ruby on Rails

    За работу frontend части приложения в Ruby on Rails отвечает библиотека Sprockets, которая не дотягивает до потребностей современного frontend приложения. В чем именно не дотягивает можно почитать, например, здесь и здесь.


    Хотя уже есть достаточно статей на тему связки webpack+rails и даже специальный гем есть, предлагаю посмотреть на еще один велосипед, умеющий также деплой делать.



    Читать дальше →
  • Биллинг в SaaS-приложениях на Ruby on Rails

      Когда перед разработчиками встает вопрос реализации подписки, как это было с нами при разработке LPCloud, многие используют уже готовые решения, например recurly.com, chargify.com, spreedly.com и др. У них есть, конечно, свои плюсы и минусы, но мы так и не смогли найти подходящий сервис, который бы удовлетворял нас по всем факторам и мы решили написать свою собственную систему регулярных платежей. В качестве процессинга карт мы выбрали cloudpayments.ru

      Для удобства работы с оплатой по картам, мы заюзали известный gem activemerchant от Shopify, но столкнулись с такой делемой – activemerchant не поддерживал cloudpayments. Мы быстренько решили эту проблему допилив гем, он доступен на нашем аккаунте на гитхабе.

      Вкратце


      Нам требовалась система, которая бы имела следующие возможности:
      • Возможность привязки карт пользователей
      • Ежемесячный/ежегодный биллинг
      • Индивидуально настраиваемый триальный период для пользователей
      • Возможность обновления тарифа клиентом в любое время

      Читать дальше →
    • Знакомимся с Otto, наследником Vagrant

        Otto — это новый продукт от Hashicorp, логический наследник Vagrant, призванный упростить процесс разработки и деплоя программ в современном мире облачных технологий. Концептуально новый подход к проблеме, проверенные технологии под капотом и открытый исходный код. Персональный DevOps ассистент разработчика.


        Читать дальше →
        • +21
        • 30,7k
        • 9
      • ECFG: сажаем ~/.emacs на диету

          Друзья, сегодня я хочу поделиться с вами реализацией идеи по созданию модульной, переносимой и масштабируемой конфигурации для вашего любимого текстового редактора, опробованную в деле за многие месяцы на самых различных сочетаниях железа и ПО: Emacs Config.

          image
          Читать дальше →
        • DDoS-атаки и электронная коммерция: современные подходы к защите



            В маркетинговых материалах по защите от DDoS-атак, публикуемых всевозможными компаниями, раз за разом встречаются ошибки одного и того же плана. А именно, приводятся взятые из чьих-либо отчётов данные о зафиксированных атаках объёмом, например, 400 Гбит/с, делается вывод, что всё плохо и нужно срочно что-то делать, но при этом в характеристиках предлагаемых услуг указан верхний предел объёма фильтруемых атак в 10 Гбит/с. И такие несоответствия возникают довольно часто.

            Происходит это потому, что специалисты, которые создают саму услугу, не очень верят в то, что столь мощные атаки вообще реальны. Потому что ни сами эти специалисты, ни кто-либо, кого они знают, с такими атаками не сталкивались. И потому возникает актуальный для e-commerce вопрос: какие угрозы действительно сейчас актуальны, а какие маловероятны? Как оценивать риски? Обо всём этом и многом другом рассказывается в докладе Артёма Гавриченкова на конференции Bitrix Summer Fest.
            Читать дальше →
            • +14
            • 18,8k
            • 8
          • С аниме дорога летит незаметно или что посмотреть по дороге в отпуск



              Август — закат лета и последняя возможность вырваться в отпуск (кстати, в августе особенно хороша Карелия). Самое время определяться с видом отдыха — в отеле, палатке или на даче — и собирать вещи, загружать полезные приложения, покупать всякие гаджеты. И чтобы не скучать в дороге, нужно озаботиться каким-то развлечением и пищей для ума. Например, взять с собой интересную книгу. Но иногда хочется отдохнуть от чтения и дать отдых мозгам. Обычно здесь рука тянется запустить очередной сериал или полнометражку, но всё же не торопитесь: на кинематографе свет клином не сошёлся. Есть ещё один жанр, который может подарить не меньше удовольствия — аниме.

              Поклонникам не надо объяснять, что это такое. Но если вы сейчас скривились и вспомнили «Сейлор Мун» и «Покемона», то не торопитесь осуждать: аниме столь же разнообразно, как и кинематограф. В этом жанре есть как очень глубокие и серьёзные полнометражные фильмы, и сериалы, так и совершенно бестолковые и проходные поделки. Просто по ТВ почти невозможно посмотреть хорошее и качественное аниме, поэтому у многих сформировалось предубеждение относительно японской мультипликации. И всё же мы рекомендуем поближе познакомиться с этим жанром по пути в жаркие страны, в горы или в деревню.
              Читать дальше →
            • Сайт с нуля на полном стеке БЭМ-технологий. Методология Яндекса

              • Tutorial
              На прошлой неделе BBC рассказала, что для новой версии главной страницы использовала методологию БЭМ, созданную в Яндексе. По такому случаю мы решили поднять материалы мастер-класса «Разрабатываем сайт с нуля на полном стеке БЭМ-технологий» и рассказать вам, как начать использовать полный стек БЭМ-технологий в своих проектах.

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



              В статье мы расскажем, в чём преимущество вёрстки независимыми блоками и что такое уровни переопределения, познакомимся с готовыми библиотеками блоков и инструментами для автоматизации сборки. Покажем, как разные инструменты — например, autoprefixer, css-препроцессор Stylus или модульная система YModules — упрощают жизнь разработчика и создают по-настоящему удобную платформу, если встроить их в процесс разработки по БЭМ.

              На живом примере мы объясним, в чём польза декларативного подхода, когда одни и те же идеи можно использовать как для CSS, так и для JavaScript. Отдельно остановимся на декларативных шаблонах BEMHTML и BEMTREE, которые позволяют преобразовывать данные в БЭМ-дерево, описанное в формате BEMJSON и, затем в HTML. Рассмотрим в деталях, как написать серверную часть приложения по БЭМ-методологии.
              Читать дальше →
            • Одиннадцатиклассница, или тестируем баги вёрстки



                В современном вебе несправедливо мало внимания уделяется хоть сколько-нибудь автоматизированному тестированию UI. Особенно это касается статической вёрстки. На проекте 2ГИС Онлайн мы попытались частично восполнить этот пробел. Какие полезные практики мы приобрели, и о каких хороших библиотеках мы узнали, расскажем далее.
                Получить плюс пять к качеству
              • Делаем email-уведомления и увеличиваем число платящих клиентов

                  image

                  Коммуникация с пользователями важная составляющая любого проекта. Иногда нужно идти на встречу пользователям и первыми начинать диалог. Email-уведомления — идеальный способ сообщить человеку о каких-то изменениях и результатах. Это может привести к очень неожиданно приятным результатам. О том, как мы делали email-уведомления для LPCloud пойдет речь в этой статье.
                  Читать дальше →
                  • +12
                  • 9,4k
                  • 4
                • Новая глобальная программа IBM для предпринимателей позволяет ускорить процесс разработки облачных решений



                    Компания IBM объявила о запуске программы IBM Global Entrepreneur Program for Cloud Startups, которая позволит стартапам и технологическим предпринимателям воспользоваться преимуществами платформы IBM Cloud, а также получить доступ к глобальной сети корпоративных заказчиков, консультантов и инновационных центров IBM с целью ускорить разработку, масштабирование и развитие облачных решений.

                    По отзывам более чем 300 венчурных инвесторов и бизнес-ангелов, полученным в 2014 году со всего мира, большая часть вложений была направлена на технологические компании, в особенности, занимающиеся разработкой облачных и мобильных технологий (источник: 2014 Global Venture Capital Confidence Survey). В свою очередь, IBM вносит вклад в активное развитие отрасли, предлагая компаниям инструменты, необходимые для создания облачных приложений нового поколения и капитализации доходов от продаж.

                    Читать дальше →
                  • Опыт продвижения проекта с минимальными затратами



                      Год назад началась история Raindrop.io. За это время сервис посетило 250 000 человек, а количество сохраненных закладок перевалило за 2.5 миллиона. На данный момент реализована веб-версия, расширения для всех браузеров, Android и iOS клиент. Как и прежде в проекте я один. В этом посте я постараюсь поделиться накопленным опытом и рассказать о важных событиях случившихся с проектом.
                      Читать дальше →
                    • Семь принципов создания современных веб-приложений

                      • Перевод
                      • Tutorial
                      Эта статья основана на моей презентации с конференции BrazilJS в августе 2014 года. Она базируется на идеях, о которых я писал в блоге недавно, в основном, в связи с UX и производительностью.

                      Я хочу представить 7 действенных принципов для веб-сайтов, которые хотят применить JavaScript для управления UI. Эти принципы являются результатом моей работы как веб-дизайнера, но также как давнего пользователя WWW.

                      JavaScript бесспорно стал незаменимым инструментом для разработчиков фронтенда. Сейчас сфера его применения расширяется на другие области, такие как серверы и микроконтроллеры. Этот язык программирования выбрали престижные университеты, чтобы обучать студентов основам информатики.

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

                      • Должен ли JavaScript использоваться как замена функциям браузера: история, навигация, рендеринг?
                      • Умирает ли бэкенд? Нужно ли вообще рендерить HTML?
                      • Правда ли, что будущее за приложениями на одной странице (Single Page Applications, SPA)?
                      • Должен ли JS генерировать страницы на веб-сайте и рендерить страницы в веб-приложениях?
                      • Нужно ли использовать техники вроде PJAX или TurboLinks?
                      • Каково точное отличие между веб-сайтом и веб-приложением? Должно ли остаться что-то одно?
                      Читать дальше →
                    • Краудфандинг в России: выйти из долины смерти

                        Вопреки многочисленным отзывам вроде «Краудфандинг? Не в этой стране!», сегодня на «С миру по нитке» нам удалось создать работающий российский краудфандинговый сервис. За полтора года проект «С миру по нитке» успел несколько раз переродиться, пережил разлад среди основателей, несколько раз прогремел на весь рунет и несколько раз чуть не умер.



                        Родился «С миру по нитке» совершенно случайно. В то время (октябрь 2010 года) мы занимались совсем другим проектом и искали для него инвестиции. Время для поиска инвестиций было совсем тугое. Вот и мы дошли до того, что под очень интересный проект смогли найти только банковский заём. Поняли, что нам это не подходит и начали искать альтернативы. Наткнулись на Kickstarter, но оказалось, что там запустить свой проект нереально (работает только для резидентов США), а в России подобных сервисов не было.

                        И что было дальше?
                      • Что такое Томита-парсер, как Яндекс с его помощью понимает естественный язык, и как вы с его помощью сможете извлекать факты из текстов

                          Мечта о том, чтобы машина понимала человеческий язык, завладела умами еще когда компьютеры были большими, а их производительность – маленькой. Главная проблема на пути к этому заключается в том, что грамматика и семантика естественных языков слабо поддаются формализации. Кроме того, от языков программирования их отличает присутствие многозначности.

                          Конечно, мечта о полноценной коммуникации с компьютером на естественном языке пока еще далека от полноценной реализации примерно настолько же, как и мечта об искусственном интеллекте. Однако некоторые результаты есть уже сейчас: машину можно научить находить нужные объекты в тексте на естественном языке, находить между ними связи и представлять необходимые данные в формализованном виде для дальнейшей обработки. В Яндексе уже достаточно давно применяется такая технология. Например, если вам придет письмо с предложением о встрече в определенном месте и в определенное время, специальный алгоритм самостоятельно извлечет нужные данные и предложит внести ее в календарь.

                          image

                          Вскоре мы планируем отдать эту технологию в open source, чтобы любой мог пользоваться ей и развивать ее, приближая тем самым светлое будущее свободного общения между человеком и компьютером. Подготовка к открытию исходных кодов уже началась, но процесс этот не такой быстрый, как нам бы хотелось, и, скорее всего, продлится до конца этого года. За это время мы постараемся как можно больше рассказать о своем продукте, для чего запускаем серию постов, в рамках которой расскажем об устройстве инструмента и принципах работы с ним.

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

                            Присылает нам заказчик (Газпром) свою версию договора.
                            Понимаем — нашу они не подпишут,
                            вносим реквизиты и отправляем обратно.
                            Пропадают на две недели… возвращают протокол разногласий к договору.


                            Последняя неделя выдалась жаркой на переговоры с юристами заказчиков. Проекты я не веду, но так уж получилось, что все договора проходят через меня. Соответственно, я участвую в их согласовании.
                            Читать дальше →
                          • Больше нет писем в папке Spam: настройка SMTP-сервера

                              Недавно мы настраивали SMTP-сервер для нашего проекта. Вопрос стоял так: что нужно сделать, чтобы письма, отправленные нашим пользователям, не попадали в папку со спамом или попадали туда как можно реже?

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

                              Приведенные советы актуальны только если вы используете свой собственный SMTP-сервер. При использовании, например, SMTP сервера Google всё уже сделано за нас. Как правило. В любом случае рекомендую проверить (см. подразделы Как проверить?).
                              Читать дальше →