• Технодом — новый low cost хостер

      В середине февраля я увидел в твиттере сообщение о запуске нового low cost хостера — Технодом. Тогда я не обратил на него внимания, но недавно наткнулся на их новый способ продвижения серверов — аукцион, начальная стоимость сервера в котором, составляла всего 30 рублей. Это заставило меня рассмотреть данный проект более детально. Под катом постараюсь рассказать более подробно.
      Читать дальше →
      • –1
      • 7.8k
      • 9
    • PhoneJS — Новый HTML5-фреймворк для мобильных приложений

        Новые инструменты для разработки под мобильные устройства появляются сегодня чуть ли не каждый день. Большая часть из них — это HTML5-фреймворки, с помощью которых, обладая навыками веб-программиста, можно создавать приложения для смартфонов и планшетов, не углубляясь в изучение платформенных SDK и других языков.

        Мы видим этот тренд и видим примеры реализации пользовательских интерфейсов на HTML5, не уступающих по качеству нативным приложениям, и верим, что за HTML5 стоит будущее кросс-платформенных мобильных приложений.



        В настоящее время веб-технологии и JavaScript, в частности — это очень либеральная среда, не привязанная к конкретным средствам и методологиям разработки. Как в любой подобной ситуации, с одной стороны это дает свободу, с другой стороны вносит долю хаоса.

        Мы в DevExpress организовали небольшую команду, которая на протяжении нескольких месяцев анализировала и пробовала различные существующие средства и подходы. Результат полученного опыта — PhoneJS — наше комплексное решение для создания кросс-платформенных мобильных приложений на HTML5.

        Встречайте PhoneJS
      • Spintires — (симулятор грязевиков на Kickstarter) — «тайга, которой нужны ваши крылья»



          Spintires: The ultimate off-road challenge! — (ссылка на KickStarter)
          Демо-верия предлагаемая на KickStarter линк на страничку с демо
          Более ранняя демо-версия 2009 года прямой линк
          Исходный код демо-версии 2009 года прямой линк

          Oovee Game Studios, одна из восходящих звезд Объединенного Королевства вышла на Кикстартер с дебютным проектом «Spintiers». Событие хоть и отмеченное на известном британском новостном ресурсе Rock Paper Shotgun (что уже само по себе говорит за игру), но, к сожалению, не вызвавшее достаточного резонанса среди игроков. Причины могут быть разными и не последняя из них – жанр. Это не гоночный симулятор, не полноценный симулятор дальнобойщика, а симулятор «месителя грязи». По крайней мере, из демо-версии складывается именно такое впечатление. Однако, даже демо-версия намного глубже чем кажется, даже если не проваливаться в колею. Если присмотреться – это отличнейшая база под будущую игру, необычный сеттинг не без изюминок.

          А ведь в демо, между прочим, представлен шикарный парк отечественного автомобилестроения. При должном исполнении это может сделать ее своеобразным Сталкером от мира колес. Из чрева железных монстров при переключении коробки передач доносится забористая русская речь, вокруг расстилается живописная тайга, прорезанная линиями разбитых троп и дорог, и ведь елки-палки… все действительно родное, от и до. Как так? В Британии появились поклонники колесного русского духа? Вопрос на миллион долларов.



          Что еще можно сказать об этой игре? Перво-наперво то, что Spin Tires не игра, а демонстрация физического движка Havok. Техническая демо-версия, созданная специально для конкурса Havok Physics Innovation Contest.
          Особенностями этой демо-версии стало наличие «физичных» покрытий (вода, грязь) и взаимодействие с ними объектов (грузовых и не очень автомобилей), деформация грязевых и водных участков ландшафта в реальном времени, очень красивое и эффектное освещение. Как это часто бывает в случае удачных решений – демо постепенно начало превращаться в игру. Именно с этим демо Oovee Game Studios и обратилась к игрокам, чтобы собрать средства на полноценную игру.

          Все выше сказанное — легкий набросок собственных эмоций на базе доступной и типовой информации, которую легко можно почерпнуть в сети. А что произойдет, если копнуть глубже?

          Читать дальше →
        • Установка и настройка JetBrains PhpStorm 6 под Windows 7 для разработки web-приложений на PHP

          Я Microsoft Scum и привык к наличию инсталляторов, после успешного выполнения которых у меня на машине установлено и настроено всё необходимое.

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

          Как это работает


          Будучи web-разработчиком под ASP.NET ещё с 2003 года, я привык, что разрабатываемое приложение крутится на IIS. Сейчас вместе со Студией ставится компактная версия IIS, и, признаться, разработка под ним в большинстве случаев гораздо удобнее развёртывания дополнительной разработческой среды под полноценным IIS.

          У PHP также есть режим запуска в качестве сервера с выбором корневой директории приложения. Однако, выяснилось, что такой режим не позволяет по-человечески отлаживать продукт. По этой причине мы будем воссоздавать более или менее родную среду для работы фреймворков: Apache+PHP. При этом возможность отладки и тестирования обеспечивается отдельными модулями, у которых есть конкретная сборка под конкретную сборку PHP без каких-либо свобод выбора. Оно и к лучшему — отсутствие свободы выбора версий ограничивает нас всего одним сценарием установки. Его то мы и опишем.
          Читать дальше →
        • Основы профессиональной верстки электронных писем

          Верстка электронных писем
          Ни для кого не секрет, что e-mail маркетинг только начинает набирать обороты во всем мире. А для России – это ещё и вовсе молодая ниша на рынке. И профессиональная верстка электронных писем здесь один из составляющих факторов успеха. Под профессиональной версткой понимается не только визуально красиво и надежно сверстанный макет, но и то, как выглядит usability открытки с маркетинговой точки зрения, как оптимизирована графика вместе с типографией для спам-фильтров и многое другое. Верстка электронных писем довольно обширная тема, в одной статье все не уместить, поэтому в данном посте постараюсь описать только базовые элементы и приемы, надежно проверенные за годы практики и работающие в top самых используемых почтовых клиентах мира: iPhone 4S/5; Outlook 07/10/13; iPad; Apple Mail; Android 2.3/4.0; Yahoo; Gmail. Если рассматривать только российский рынок, то нельзя не упомянуть о Mail.ru и Яндекс.Почта.

          Что нужно знать в начале?


          Сразу хочу выделить несколько из основных и важных моментов:

          1. В нашем арсенале имеется очень урезанный набор css-свойств, которые поддерживаются всеми почтовиками. При этом, стили нужно прописывать inline, а в head выносить только вендорные свойства и те блоки объявлений, которые не несут нагрузки на основную стилизацию письма. Ну и использовать link in head — крайне нежелательно.
          2. Не используйте background-image в основных визуальных элементах дизайна и не помещайте в изображения важную текстовую информацию. Вообще нужно всегда учитывать такой вариант, что письмо будет просматриваться получателем без единого изображения.


          Каркас


          Пожалуй каждый, кто хоть раз верстал письмо под рассылку, знает, что каркас лучше строить с помощью таблиц. На самом деле простая блочная модель div поддерживается на данный момент во всех перечисленных выше почтовиках, за исключением MS Outlook начиная с 2007 версии. Это связано с тем, что в качестве движка последние версии Outlook используют Microsoft Word, который в свою очередь много не знает о блочных css-свойствах. Игнорировать при верстке данный почтовый клиент я не рекомендую, поэтому в качестве фундамента все же используйте table. Да и добившись хорошего результата для Outlook, можно быть уверенным, что в большинстве почтовиках, письмо будет смотреться тоже хорошо, а скорее и лучше.

          В качестве примера рассмотрим наиболее важные элементы из следующего, не сложного шаблона:
          Шаблон письма для рассылки
          Читать дальше →
        • Песочница для PHP

          В одном из наших проектов существует возможность написания плагинов для расширения функционала сервиса.
          Пользователи создают плагины-приложения в нашем интерфейсе и описывают их логику на PHP.
          Необходимо было ограничить возможности PHP, чтобы никто нам случайно не нашкодил.
          Существует некоторое количество инструментов для исполнения кода PHP в защищенной среде: выполнение в отдельном процессе, сохранение кода в файле и вызов через cli с урезанными возможностями или использование специализированных расширений для PHP.
          В силу специфики сервиса и приложений а так же для возможности использования песочницы на всех ОС (процессы и расширения для sandbox не работают в Windows) с базовыми настройками PHP был написан небольшой класс: Ext_Sandbox_PHPValidator.
          Читать дальше →
        • Как я писал робота для квазиарбитражной торговли биткоинами

          • Tutorial

          Месяц назад, когда цена биткоина достигла 250 долларов, а затем упала до 50, у меня появилось желание поучаствовать в этом веселье, написав торгового бота, который бы зарабатывал на подобных изменениях.

          Выяснилось, что две наиболее популярные биржи, на которых торгуют биткоинами — это MtGox и BTC-e. Я положил деньги на одну из них и принялся думать, как предсказать изменение цены, а также, как это автоматизировать. Дело осложнялось тем, что на этих биржах можно покупать и продавать только на свои средства, поэтому нельзя играть на понижение, занимая короткую позицию, потому что, как говорил Матроскин: «Чтобы продать что-нибудь ненужное, нужно сначала купить что-нибудь ненужное».
          Читать дальше →
        • Boris — небольшой, но надежный REPL для php

          • Tutorial
          REPL есть у python, ruby, clojure. REPL — read-eval-print loop. Если описать на псевдокоде что такое REPL — это будет выглядеть как-то так:
          while(true){
              echo eval($input->get());
          }
          

          Подобная реализация позволяет разработчику эксперементировать с кодом как ему вздумается без создания файлов. Вы можете совершить ошибку, Boris выдаст сообщение об этом, но продолжит работать ожидая новый код.
          Читать дальше →
        • geoDNS с помощью Powerdns и nginx

            Обожаю задачи “на стыке технологий”, это одна из таких.
            Задача:
            • реализовать geoDNS*
            • c возможностью wildcard (*.some.tst. A 1.2.3.4)
            • с возможностью менять содержимое зон на ходу, добавлять новые зоны пачками
            • без необходимости запускать громоздкие скрипты на каждый запрос “мимо кеша”
            • научиться тестить этот реактор (с локалхоста, а не кучи proxy/VDS)


            *) под geoDNS я подразумеваю возможность для клиентов из разных регионов отдавать разные, например, адреса сервера/А-записи (для США отдаётся IP сервера в США, для СНГ — в москве, для ЕС — в Европе ...)

            Статья описывает
            • метод реализации geoDNS
            • метод тестирования
            • эскизное решение на “чистом nginx”

            Если интересно, причём же здесь nginx, прошу под кат.
            Читать дальше →
          • Мониторинг mod_security и MySQL с помощью Splunk

              Доброе время суток, хаброжители.
              Хочу поделиться реализацией мониторинга виртуального сервера, который я поддерживаю.
              Операционная система: CentOS 6.3 x64, однако описываемая ситуация подойдет и для других платформ, как *Win так и *nix.
              Постановка задачи.
              На сервере установлены сервисы: apache2, MySQL, postfix и реализована защита apache на базе mod_security.
              Хозяина сервера не устраивает подключение по ssh консолью и чтение логов в текстовом редакторе, кроме того не было наглядности нагрузок на сервер, количества запросов, сложности запросов к серверу. Я предложил Zabbix сервер, но клиент сказал категорический «нет». Ну что-ж, на то он и клиент, чтобы быть всегда правым.
              Необходимо максимально быстро отыскивать сложившуюся ситуацию, связанную с безопасностью сервера, и исходя из события принимать меры к устранению проблемы.

              Сразу приведу скриншот того, что получилось:


              Прошу под кат. Будут еще скриншоты
            • Пять программ номеронабирателей (dialers) для Android

                Приветствуем вас, Хабралюди! Мы решили продолжить рассказ о софте, которым можно заменить не самые удобные и функциональные стандартные приложения Meizu MX2. Как я уже говорил в предыдущей статье, посвященной обзорам клавиатур, важно признавать недостатки своих продуктов и предлагать адекватные решения возникших проблем, а не отсиживаться за шаблонными фразами. Вот и в этот раз мы вынуждены признать, что телефонное приложение из комплекта Flyme подойдет только самым нетребовательным пользователям. Остальным мы предлагаем познакомиться с пятью сторонними «диалерами», которые с легкостью заменят стандартный.


                Обзор пяти программ номеронабирателей для Android
              • Оперативная реакция на DDoS-атаки

                Один из ресурсов, за которым я присматриваю, вдруг стал неожиданно популярным как у хороших пользователей, так и у плохих. Мощное, в общем-то, железо перестало справляться с нагрузкой. Софт на сервере самый обычный — Linux,Nginx,PHP-FPM(+APC),MySQL, версии — самые последние. На сайтах крутится Drupal и phpBB. Оптимизация на уровне софта (memcached, индексы в базе, где их не хватало) чуть помогла, но кардинально проблему не решила. А проблема — большое количество запросов, к статике, динамике и особенно базе. Поставил следующие лимиты в Nginx:

                на соединения
                limit_conn_zone $binary_remote_addr zone=perip:10m;
                limit_conn perip 100;
                

                и скорость запросов на динамику (fastcgi_pass на php-fpm)
                limit_req_zone $binary_remote_addr zone=dynamic:10m rate=2r/s;
                limit_req zone=dynamic burst=10 nodelay;
                

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

                Но плохиши продолжали долбить, и захотелось их отбрасывать раньше — на уровне фаервола, и надолго.

                Сначала сам парсил логи, и особо настырных добавлял через iptables в баню. Потом парсил уже по крону каждые 5 минут. Пробовал fail2ban. Когда понял, что плохишей стало очень много, перенёс их в ipset ip hash.

                Почти всё хорошо стало, но есть неприятные моменты:
                — парсинг/сортировка логов тоже приличное (процессорное) время отнимает
                — сервер тупит, если началась новая волна между соседними разборками (логов)

                Нужно было придумать как быстро добавлять нарушителей в черный список. Сначала была идея написать/дописать модуль к Nginx + демон, который будет ipset-ы обновлять. Можно и без демона, но тогда придётся запускать Nginx от рута, что не есть красиво. Написать это реально, но понял, что нет столько времени. Ничего похожего не нашёл (может плохо искал?), и придумал вот такой алгоритм.

                При привышении лимита, Nginx выбрасывает 503-юю ошибку Service Temporarily Unavailable. Вот я решил на неё и прицепиться!

                Для каждого location создаём свою страничку с ошибкой
                error_page 503 =429 @blacklist;
                

                И соответствующий именованный location
                location @blacklist {
                    fastcgi_pass    localhost:1234;
                    fastcgi_param   SCRIPT_FILENAME    /data/web/cgi/blacklist.sh;
                    include         fastcgi_params;
                }
                

                Дальше интересней.
                Нам нужна поддержка CGI-скриптов. Ставим, настраиваем, запускаем spawn-fcgi и fcgiwrap. У меня уже было готовое для collectd.

                Сам CGI-скрипт
                Читать дальше →
              • Дизассемблируем Windows Explorer — отключаем группировку на панели задач

                  Однажды, в 2009 году, вышла Windows 7. В то время я сидел на Висте, которая притормаживала на моем стареньком компьютере, и я решил пересесть на семерку сразу после ее выхода.

                  Первое, на что я обратил внимание после установки — новая панель задач. А конкретнее — тот факт, что она группирует кнопки по программе, к которой они принадлежат.



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



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

                  Под катом:
                  • Подробная демонстрация того, как можно самостоятельно подправить принцип работы такого системного процесса, как explorer, под себя, используя отладчик OllyDbg.
                  • Готовое решение описанной выше проблемы.

                  Читать дальше →
                • Separate – Шаблонизатор для PHP

                    image
                    Представляю вашему вниманию PHP шаблонизатор, который я разрабатывал несколько лет и только недавно выложил в сеть.

                    Как все началось и зачем вообще нужен еще один шаблонизатор?


                    Smarty и другие популярные шаблонизаторы мне показались слишком громоздкими для простых проектов и я решил разработать собственный шаблонизатор. Первая версия появилась еще в 2004 году. В процессе разработки интернет проектов я постоянно внедрял новые идеи и прочие улучшения. В настояший момент движок шаблонизатора состоит из всего одного файла и все равно имеет ряд уникальных возможностей.

                    На сайте separate.esud.info вы можете скачать исходный код. Также там доступна подробная документация всех функций на трех языках – русском, английском и немецком. Я надеюсь что проект заинтересует людей и будет в будущем активно развиваться. Поэтому код я выложил в Github на сайте github.com/esud/separate

                    Подробное описание вы найдете на сайте ru.separate.esud.info/documentation
                    Ниже я коротко опишу ключевые возможности.

                    Читать дальше →
                  • Покупка хостинга в Китае: зачем это нужно и как это трудно



                      Сегодня я хочу рассказать уважаемым хабра客 о покупке китайского хостинга, серверах, особой лицензии на интернет-деятельность, цензуре в Китае. И даже пару слов про облака у меня найдется.
                      Читать дальше →
                    • CSS3-генераторы. Лучшее









                        Доброго времени суток! Сразу объяснюсь по поводу оформления поста: однажды, наткнувшись на статью о CSS-генераторах, меня не сильно порадовало безмерное количество информации и навигационных элементов в представленных генераторах, и еще больше — их пользовательский интерфейс! Возмутило то, что инструменты для работы со стилями — сами не выдержаны в рамках возможностей, которые они представляют… как так?!

                        Когда занимаешься творчеством, хочется иметь подручные средства и инструменты на освоение и работу с которыми тратишь минимум усилий и времени. В результате всего этого, пришла мысль: отобрать лучшие инструменты и организовать их для частого использования (а-ля навигационное меню, такой себе: Quick Launch).

                        Надеюсь, для многих ноу-хау станет хорошим помощником в процессе веб-разработки.
                        Читать дальше →
                      • WindowsAndroid позволяет запускать Android 4.0 ICS как Windows-приложение



                          Если вы хотите запускать приложения под Android на своем ПК или ноутбуке с Windows, то теперь такая возможность появилась. Новая программа WindowsAndroid позволяет запускать Android 4.0 Ice Cream Sandwich как «родное» приложение для Windows. Соответственно, в открывшемся окне можно работать со всеми Android-программами.

                          Читать дальше →
                        • Приём онлайн платежей в Европе в 2013 году

                          • Translation
                          Чтобы зарабатывать деньги в сети, у вас должна быть возможность принимать платежи. Это может казаться простым, но в действительности это не совсем так, и американские подрывные инновационные компании, такие как Stripe и Square, пока ещё не функционируют в Европе.

                          Поиск вариантов приёма платежей для Vinetrade стал для меня одной из самых сложных задач, но я многому научился. Поэтому я решил, что стоит изложить свои мысли о рынке карточных платежей, о перспективах его развития и о том, чего недостает европейскому сегменту этого рынка.

                          Почему это сложно


                          Самый простой способ приёма платежей онлайн – это использование банковской карты (кредитной или дебетовой). За всеми карточными платежами стоит определённое количество банковских операций. Законы о защите прав потребителей позволяют покупателям требовать у своего банка возврата денег, если что-либо пойдет не так (например, если они заплатили за товар, но не получили его). Если банк не сможет получить эти деньги от предприятия, принявшего платёж, он терпит убытки.
                          Читать дальше →
                        • Загрузка GNU/Linux без стороннего загрузчика

                          • Tutorial
                          В данной статье я приведу пример, как можно отказаться от использования стороннего загрузчика, будь то Grub или Lilo, если ваш компьютер поддерживает современный стандарт UEFI, пришедший на замену BIOS. Интересной особенностью будет то, что все работы проводим на уже установленной и рабочей системе.
                          По уровню сложности данная статья ориентирована на опытных пользователей Linux, т.к. некоторых моментов я касаюсь поверхностно, полагаясь на очевидность, чтобы не уходить от основной освещаемой темы.

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