• Apache vs Nginx: практический взгляд

    • Translation
    Apache vs Nginx

    Введение


    Apache и Nginx — 2 самых широко распространенных веб-сервера с открытым исходным кодом в мире. Вместе они обслуживают более 50% трафика во всем интернете. Оба решения способны работать с разнообразными рабочими нагрузками и взаимодействовать с другими приложениями для реализации полного веб-стека.

    Несмотря на то, что у Apache и Nginx много схожих качеств, их нельзя рассматривать как полностью взаимозаменямые решения. Каждый из них имеет собственные преимущества и важно понимать какой веб-сервер выбрать в какой ситуации. В этой статье описано то, как каждый из этих веб-серверов ведет себя при различных условиях.
    Читать дальше →
  • CSS3 hover effects. Пошаговый туториал

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

    Демо материалы лежат здесь.

    Предупреждение: эффекты работают только в современных браузерах, поддерживающих возможности CSS3.

    Подготовка к работе.

    Итак, для того, чтобы создавать наши эффекты нам понадобится вот такая простая дефолтная html-структура:

    <div class="effect>
      <img src="img/ef1.jpg" alt="Effect #1" />
      <div class="caption">
        <h4>Title is Here</h4>
        <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut.</p>
        <a class="btn" href="#" title="View More">View More</a>
      </div>
    </div>
    

    Читать дальше →
    • +19
    • 87k
    • 8
  • Мультизагрузка в wysiwyg редакторе



    Суть вот в чем, есть редактор (для примера: imperavi.com/redactor) и есть необходимость загружать сразу много картинок за один раз. В идеале простым перетаскиванием, а в нашем случае редактор кушает только одну картинку за раз. Это нужно поправить.

    Покопавшись в api редактора и не найдя ничего про мультизагрузку, я начал думать, как решить эту проблему, не прибегая к каким-то глобальным разработкам вроде написания плагина с нуля. Это займет много времени и усилий, к тому же время поджимало и сделать нужно до вечера.
    Читать дальше →
    • +15
    • 10.5k
    • 2
  • Эксплуатируем XSS уязвимость на сайте ipay.ua для кражи карточных данных

      Продолжая пентестинг отечественных платежных систем, я остановился на довольно популярном в Украине платежном сервисе ipay.ua.

      Меня интересовало, на сколько PCI DSS сертификация платежными системами и проводимое ими ежеквартальное ASV-сканирование (в том числе на наличие XSS уязвимостей) гарантирует защиту данных клиентов.

      Моё внимание привлекла форма p2p переводов по адресу www.ipay.ua/ru/p2p. Проверяя форму на фильтрацию вводимых данных, я добрался до поля для комментария (оно по умолчанию скрыто, что бы оно появилось, нужно поставить курсор в поле «Телефон получателя»). Как обычно, для первичной проверки, начал вводить текст:
      <script>alert('XSS!')
      
      … И только я закрыл скобку, как увидел на экране модальное окно с сообщением.

      Читать дальше →
    • IPv6 не нужен?

        Недавно прочитал заметку, смысл которой сводится к тому, что не мешало бы проверить, вдруг вы уже используете IPv6 и ничего не замечаете. Следствием этого, на мой взгляд, является другой смысл, что для подавляющего большинства IPv6 ничего нового не принесёт: сайты будут так же открываться, а телефоны так же звонить.

        Последнее время IPv6 перестал быть новым, возможно это относится только к моей среде общения, но говорить об IPv6 как о новом протоколе — перестали. Читать о том как здорово поднимать туннели ради доступа к заветному и недоступному уже совсем неинтересно. IPv6 стал одним из… Казалось бы, наконец-то, можно кричать «Ура!», но став одним из, он потерял драйвер роста, превратившись в заурядный. Доказать потребителю что ему надо именно это стало сложнее, потребитель не готов платить за один из…

        Под катом продолжение истории, о том, как мы купили билеты на поезд IPv6 и остались на перроне, в общем смысле история провала, надеюсь, не окончательного. Это именно история, как работает IPv6, я думаю, уже все знают, минимум технических деталей и настроек, максимум личных впечатлений.
        Читать дальше →
      • Быстрое обнаружение поддерживаемых SNMP-устройством MIB-модулей

          При внедрении систем мониторинга и управления IT-инфраструктурой часто приходится сталкиваться с «нестандартными» устройствами. Нередко про такое устройство наверняка известно только то, что оно поддерживает SNMP. Подключение его к проекту придется начать с ответа на вопрос о том, какую информацию о себе оно предоставляет. Обычно для этого проводится полный опрос устройства, и полученные данные анализируются на предмет выявления полезной информации… Но тут, как говорится, есть нюансы. В этой заметке я расскажу об одном таком — о разработанном нами алгоритме быстрого определения «поддерживаемых» устройством MIB-модулей.
          Читать дальше →
          • +9
          • 18.1k
          • 3
        • Эксплуатируем root-уязвимость в роутерах Asus

          В начале 2015 года компания Asus исправила критичнейшую уязвимость в своих роутерах. «Дыра» была в службе по имени infosvr, использующейся утилитами Asus для облегчения настройки роутера путём его автоматического обнаружения в локальной сети. Уязвимость позволяла выполнять любые команды с правами root (ведь infosvr тоже root), что давало злоумышленнику полный контроль над системой.

          Но Asus выпустила исправленные прошивки. Теперь это всё в прошлом. Или нет? Хм… А как часто обыватели обновляют прошивки на своих роутерах?



          Прошу под кат за подробностями, историей обнаружения, исследованиями, инструкциями и… эксплоитами.
          Читать дальше →
        • 300 потрясающих бесплатных сервисов

          • Translation


          Автор оригинальной статьи Ali Mese добавил ещё 100 новых бесплатных сервисов. Все 400 потрясающих сервисов доступны здесь. И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



          A. Бесплатные Веб-Сайты + Логотипы + Хостинг + Выставление Счета

          • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
          • Bootswatch: Бесплатные темы для Bootstrap.
          • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
          • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
          • Strikingly.com Domain: Конструктор веб-сайтов.
          • Logaster: Онлайн генератор логотипов и элементов фирменного стиля (new).
          • Withoomph: Мгновенное создание логотипов (англ.).
          • Hipster Logo Generator: Генератор хипстерских логотипов.
          • Squarespace Free Logo: Можно скачать бесплатную версию в маленьком разрешении.
          • Invoice to me: Бесплатный генератор счета.
          • Free Invoice Generator: Альтернативный бесплатный генератор счета.
          • Slimvoice: Невероятно простой счет.

          Читать дальше →
        • Очередные уязвимости нулевого дня в различных роутерах

            Похоже, начало года не задалось для производителей роутеров. Буквально сегодня я сообщал о критических уязвимостях в роутерах различных производителей, связанных с небезопасной обработкой протокола UPnP. И вот ещё одна новость на эту же тему. На сей раз уязвимости совершенно разные. Затронуто оборудование:

            • D-Link DIR-615, DIR-600 и DIR-300 (rev B)
            • Netgear DGN1000B
            • Cisco Linksys E1500/E2500
            • Netgear SPH200D


            Уязвимости довольно различны, но их объединяет несколько фактов: один автор и нежелание вендора выпускать патч (если верить автору).
            Читать дальше →
          • Пространства имен в PHP, разъяснение

            • Translation
            • Tutorial
            Прим.пер.: Я в курсе, что на момент перевода актуальная версия PHP — 5.5, а также что есть мудрая книга мануал. Но мне показалось интересным, то как автор преподносит namespace функционал, возможно кому-то из тех, кто только постигает азы (да и не только, есть немало бородатых разработчиков, остановившихся на PHP 5.2), статья поможет проникнуться. Ходор.

            В PHP, начиная с версии 5.3 появились пространства имен. Большинство современных языков уже давно заимели себе такой функционал, но PHP немного опаздывал. Тем не менее, у каждой новой функции есть свое предназначение, давайте выясним, какие выгоды мы можем извлечь, используя namespace.

            В PHP у вас не может быть два класса, названных одинаково, все они должны быть уникальны. Проблема этого ограничения в том, что если вы используете чью-либо стороннюю библиотеку, предоставляющую класс с именем User, то вы не можете создать свой собственный класс, также названный User. Это по настоящему скверно, ведь User — очень удобно имя для класса, не так ли?

            Пространства имен позволяют нам обойти эту проблему, и мы можем создать столько классов User, сколько нам понадобится.Кроме того пространства имен позволят нам организовать код в удобные пакеты, а также обозначить свои права владения этим кодом.
            Давайте взглянем на самый обычный класс...
          • Буфер вывода в PHP

            • Translation
            В этой статье я хочу рассказать о том, как реализован слой «буферизации вывода» в PHP, как работает и как с ним взаимодействовать из PHP. В этом слое нет ничего сложного, но многие разработчики либо совсем не понимают, как с ним обращаться, либо не имеют полной ясности. Всё, о чём я буду писать, относится к PHP версии 5.4 и выше. Именно начиная с неё изменились многие вещи, связанные с буфером вывода (БВ). По сути, этот функционал был полностью переписан, поэтому совместимость с версией 5.3 сохранилась лишь частично.

            Что такое буфер вывода?


            Поток вывода в PHP содержит байты, обычно в виде текста, которые разработчику надо вывести на экран. Чаще всего для этого используется конструкция echo или printf(). Во-первых, нужно понимать, что любая функция, которая что-то выводит, будет использовать БВ из области PHP. Если говорить о расширениях для PHP, то можно получить доступ к функциям, пишущим в SAPI напрямую, в обход любого вышерасположенного БВ. API C задокументировано в lxr.php.net/xref/PHP_5_5/main/php_output.h, отсюда можно почерпнуть немало информации, например, о размере буфера по умолчанию.

            Второй важный момент: слой БВ является не единственным слоем, в котором буферизуются выводимые данные.

            И третье: в зависимости от SAPI, который вы используете (веб или cli), слой БВ может вести себя по-разному.

            Ниже представлена схема, которая поможет понять всё вышесказанное:

            Читать дальше →
          • Как создать веб-сайт, используя видео с YouTube в качестве фона?

            • Translation


            Большие видео на заднем плане веб-сайтов — довольно популярный тренд в веб-дизайне. Умело примененные видео могут сделать веб-сайт более драматичным и привлекательным для пользователей.

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

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

            Хотя и наиболее популярным способом создания видео-фона является использование HTML5 видео тега вместе с некоторыми параметрами CSS, стоит также обратить внимание на альтернативные источники видео, например, YouTube. В этом случае, вам не придется переживать о медленном ответе сервера, потому что запрос будет отправляться напрямик в YouTube.

            В этой статье, я покажу вам, как можно построить клевый сайт, использующий видео с YouTube в качестве фона. Мы будем использовать jQuery.mb.YTPlayer.js для редактирования и управления внешним видом нашего видео. Итак, приступим!

            Скачать исходники
            Демо
            Читать дальше →
          • VNC-рулетка. Srsly?

              image

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

              srsly.de — VNC-рулетка. Обновляйте страницу, получайте каждый раз новый сервер со скриншотом. Можете подключаться к нему через веб-клиент или через обычный VNC, ставить лайки, репортить или даже добавлять свои VNC-серверы в базу!

              Для сканирования использовался zmap, который сканировал порты 5900-5910, затем python-скрипт пытался подключиться к серверу и снять скриншот. Веб-часть написана на Go.

              Развлекайтесь.
              Hacker News
            • Несколько интересных особенностей MySQL

                В не очень далеком прошлом мне пришлось покопаться немного в исходном коде MySQL, и разобраться в некоторых аспектах его работы. В ходе работы лопаткой, и эксперимeнтов, я наткнулся на несколько очень интересных особенностей, часть из которых просто забавна, а в случае некоторых бывает очень интересно понять, чем руководствовался программист, который принимал решение сделать именно так.

                Начнем с такого интересного типа, как ENUM.

                mysql> CREATE TABLE enums(a ENUM('c', 'a', 'b'), b INT, KEY(a));
                Query OK, 0 rows affected (0.36 sec)
                
                mysql> INSERT INTO enums VALUES('a', 1), ('b', 1), ('c', 1);
                Query OK, 3 rows affected (0.05 sec)
                Records: 3  Duplicates: 0  Warnings: 0
                


                Итак, у нас есть таблица, в ней есть два столбца. У первого, a, тип ENUM, у второго, b, INT. В таблице три строки, у всех трех значение b равно 1. Интересно, чему равны минимальный и максимальный элементы в столбце a?

                mysql> SELECT MIN(a), MAX(a) FROM enums;
                +--------+--------+
                | MIN(a) | MAX(a) |
                +--------+--------+
                | c      | b      |
                +--------+--------+
                1 row in set (0.00 sec)
                


                Кажется странным, было бы разумно, если бы самым маленьким был 'a', а самым большим — 'c'.
                А что если выбрать минимум и максимум только среди тех строк, где b = 1? То есть, среди всех строк?

                mysql> SELECT MIN(a), MAX(a) FROM enums WHERE b = 1;
                +--------+--------+
                | MIN(a) | MAX(a) |
                +--------+--------+
                | a      | c      |
                +--------+--------+
                1 row in set (0.00 sec)
                


                Вот так мы заставили MySQL поменять свое мнение о том, как сравнивать поля в ENUM, просто добавив предикат.
                Разгадка такого поведения заключается в том, что в первом случае MySQL использует индекс, а во втором нет. Это, конечно, не объясняет, почему MySQL сравнивает ENUMы по разному для сортировки в индексе, и при обычном сравнении.

                Второй пример проще и лаконичнее:

                mysql> (SELECT * FROM moo LIMIT 1) LIMIT 2;
                +------+
                | a    |
                +------+
                |    1 |
                |    2 |
                +------+
                2 rows in set (0.00 sec)
                


                Когда я показал этот запрос своему коллеге, который занимается разработкой парсера SQL, его вопрос был не «почему этот запрос возвращает две строки», а «как надо написать SQL парсер так, чтобы такой запрос был валидным, без того, чтобы написать правило, специально разрешающее такой запрос».

                Интересно, что далеко не любой SELECT в скобках сработает, в частности, UNION в скобках — это синтаксическая ошибка:

                mysql> (SELECT * FROM moo UNION ALL SELECT * FROM hru) LIMIT 2;
                ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION ALL SELECT * FROM hru) LIMIT 2' at line 1
                


                Еще несколько интересных примеров под катом
                Читать дальше →
              • Обработка и оформление отчетов в Excel на PHP

                • Tutorial

                Не редко при разработке некоего проекта, возникает необходимость в формировании отчетной статистики. Если проект разрабатывается на Delphi, C# или к примеру, на С++ и под Windows, то тут проблем нет. Всего лишь необходимо воспользоваться COM объектом. Но дела обстоят иначе, если необходимо сформировать отчет в формате excel на PHP. И чтобы это творение функционировало на UNIX-подобных системах. Но, к счастью, не так все плохо. И библиотек для этого хватает. Я свой выбор остановил на PHPExcel. Я уже пару лет работаю с этой библиотекой, и остаюсь доволен. Поскольку она является кроссплатформенной, то не возникает проблем с переносимостью.


                PHPExcel позволяет производить импорт и экспорт данных в excel. Применять различные стили оформления к отчетам. В общем, все на высоте. Даже есть возможность работы с формулами. Только необходимо учитывать, что вся работа (чтение и запись) должна вестись в кодировке utf-8.

                Читать дальше →
              • DOMPDF – экспорт данных из PHP в PDF

                • Tutorial
                С помощью библиотеки DOMPDF можно создавать PDF файлы из HTML кода. Нужно только сверстать некий HTML шаблон и передать его DOMPDF и уже на выходе получить сгенерированный PDF файл. Но не надо забывать и то, что эта библиотека не движок для обработки веб-страниц, а значит и шаблоны должны быть сверстаны с использованием самых базовых средств: HTML тегов и CSS стилей. Хотя разработчики заявляют, что их библиотека поддерживает стандарты CSS 2.1 и даже некоторые свойства CSS 3. С полным их перечнем можно ознакомиться здесь. Есть, кстати, один минус – она является довольно “прожорливой” к оперативной памяти. Поэтому возможно придется задуматься об аренде виртуального выделенного сервера. Но это зависит от содержания и объема планируемых PDF документов. С другой стороны она вам может помочь сэкономить много времени на разработку различных отчетов в формате PDF.
                Читать дальше →
              • Мемы в Parallels: «Релиз будет 1 мая… А сегодня какое мая?»

                  image Внутренний фольклор и юмор своих разработчиков есть в каждой команде, хотя не в каждой его бережно собирают и архивируют. Но мы в Parallels заботливо делали это несколько лет подряд. Не так давно мы поделились профессиональным словариком девелоперов Parallels. А сегодня на очереди – возможность заглянуть в тот раздел нашего интранета, где мы храним свои мемы и шутки. Многие из них пришли аж из середины 2000х.

                  Разработка

                  • И почему мне так в субботу хочется сделать commit, а в понедельник — revert?
                  • [копаясь в перловом коде]… Проклятый не-C++!!!
                  • Я нарисую эту диаграммку прямо сейчас. Возможно, даже сегодня.
                  • — Эти виндовоз-девелоперы… – Нет, нужно говорить «разработчики для Windows», по аналогии с «афроамериканцами».
                  • Ниибета — это бета, которая обязательно должна выйти независимо ни от чего
                  • Раздолбайство и общий фрэймворк — разные вещи!
                  Читать дальше →
                • FreeBSD, dhcp, ip unnumbered и все все все…

                    Наша небольшая компания подключает абонентов к интернету по технологии vlan-per-user.
                    Так исторически сложилось и в этом есть как плюсы, так и минусы, но разговор сейчас не об этом.
                    Обычно на каждый vlan выделяется сеть серых адресов, которая потом через NAT выпускается в большой мир. Но иногда абоненты хотят реальный белый адрес, и до недавнего времени им выдавалась /30 сеть. Что в реалиях настоящего очень расточительно и абоненты с реальными адресами переводятся на подключение по технологии SuperVLAN (RFC 3069).

                    Ниже история перехода
                  • Курс пиксель-арта

                      Это перевод публикации «Les Forges Pixel Art Course».

                      pdf на английском.

                      Часть 1: Правильные инструменты
                      Часть 2: Линии и кривые
                      Часть 3: Перспективы
                      Часть 4: Тень и свет
                      Часть 5: Палитры цветов
                      Часть 6: Сглаживание
                      Часть 7: Текстуры и размытие
                      Часть 8: Мир тайлов

                      Предисловие


                      Есть много определений пиксель-арта, но здесь мы будем использовать такое: изображение пиксель-арт, если оно создано целиком руками, и присутствует контроль над цветом и позицией каждого пиксела, который нарисован. Несомненно, в пиксель арте включение или использование кистей или инструментов размытия или машин деградации (degraded machines, не уверен), и других опций ПО, которые «современны», нами не используются (вообще-то put at our disposal значит «в нашем распоряжении», но по логике вроде правильнее так). Он ограничен инструментами такими как «карандаш» и «заливка».

                      Тем не менее не скажешь, что пиксель-арт или не-пиксель-арт графика — более или менее красива. Справедливее сказать, что пиксель-арт другой, и он лучше подходит для игр стиля «ретро» (как Супер Нинтендо или Гейм Бой). Вы можете также комбинировать техники изученные здесь, с эффектами из не-пиксель-арта, для создания гибридного стиля.

                      Так, здесь вы будете изучать техническую часть пиксель-арта. Тем не менее никогда я не сделаю вас художником… по простой причине, что я тоже не художник. Я не научу вас ни человеческой анатомии, ни структуре искусств, и мало скажу о перспективе. В этом руководстве, вы можете найти много информации о техниках пиксель-арта. В конце, вы должны будете быть способны создать персонажей и пейзаж для ваших игр, при условии что вы будете внимательны, практиковаться регулярно, и применять данные советы.
                      Читать дальше →
                    • Mikrotik автоматическое переключение на резервный канал для динамического ip адреса (выдаваемого по DHCP)



                      Приветствую, Хабр! В связи с плохим качеством линии меня попросили настроить автоматическое переключение на резервный канал. Для этой цели предоставили роутер MikroTik RB 951Ui.

                      Думал, что проблем не возникнет… Всего-то настроить проверку канала и маршруты. Но, к сожалению, оба провайдера выдают IP динамически. Сначала я попробовал подставить в маршрут название интерфейса, но пинг не проходил. Прочитав несколько статей, включая зарубежные сайты, но не нашел решения проблемы, которое мне подошло бы. Пришлось знакомится с RouterOS по ближе, а в частности с созданием скриптов…

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