• Безопасность сайтов с лирическими отступлениями

      Недавно я писал для одного заказчика обзорный документ по безопасности web приложений, после чего я подумал, что было бы неплохо выложить его на общее обозрение.
      Статья написана для непрофессионалов, поэтому дабы сделать ее более интересной для притязательных пользователей хабра, я разбавил текст некоторыми случаями из жизни.
      Читать дальше →
    • 7+ превосходных инструментов для оптимизации изображений

      • Translation
      Перевод статьи 8 Excellent Tools for Optimizing Your Images
      К сожалению на момент перевода один из сервисов перестал работать. Но хабровчане предложили еще много хороших решений!

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

      Есть несколько бесплатных инструментов помогающих уменьшить и оптимизировать изображения. В этой статье вы найдете удобные инструменты для создания картинок для веба настолько маленьких по весу, насколько это возможно.
      Обзор инструментов — под катом.
      Читать дальше →
    • Nginx + PHP-FPM против Apache2 Prefork + mod_php

        Все началось с этой темы на форуме, когда многие на полном серьезе стали рассуждать, мол, nginx совсем не быстрее Apache, и даже перевод документации с официального сайта был неубедителен. Как известно, нет ничего более приятного, чем провести тестирование и показать график для привлечения внимания. Вот например график по обще нагрузке на сервер, попробуйте угадать где тут этап тестирования Nginx, а где — Apache.
        image
        Ну а перед тем как узнать правильный ответ — немного про сервер и механизм тестирования.
        Дабы исключить всякие подозрения на «подкручивание» своих VDS, тест проводился на стороннем сервере, любезно предоставленным мне для теста одним из участников форума вот в такой кнофигурации:
        AMD Athlon X2 5600+ 4 GB DDR2 2×400 GB HDD с Linux Debian в минимальной установке. Весь софт устанавливался стандартным образом — через apt-get. И PHP и Apache ставились в минимальном режиме.
        Для объекта тестирования я поставил очень легкий блог Moscquito, который работает без MySQL, написав туда пару постов и камменты.
        Дальше самое интересное
      • Пользовательские расширения для Extjs

          imageКаждый раз, когда я ищу информацию в сети по extjs, нахожу что-то новенькое и интересное, что можно с легкостью интегрировать в проект на extjs.
          Сегодня день особенный, так как я нашел не инструмент, а целый репозиторий пользовательских расширений. Появился он еще в 2008 году*. Может я его и замечал раньше, но видимо он тогда еще не обладал таким изобилием расширений, какое можно наблюдать сейчас.

          Что бы все были в курсе, приведу список мест, где потенциально могут прятаться пользовательские расширения, которые могут вам пригодиться.
          Огласите весь список, пожалуйста...
        • Установка PHP-FPM на Debian из пакетов

            PHP-FPM — патч к PHP, предоставляющие альтернативный интерфейс FastCGI. Обычно используется с nginx в проектах с высокими нагрузками или дефицитом ресурсов. Для удобной и упрощенной инсталляции мы собрали PHP-FPM в пакет для Debian 5 Lenny. Последнюю пару недель тестировали и тюнили, сейчас выложили в публичный доступ. Над пакетами в поте лица трудился viliar, которому дружно направляем за это благодарности и карму. Багрепорты и замечания приветствуются, лучше комментами к посту.

            Инструкция по установке


            Читать дальше →
          • Nested Grids с помощью ExtJS 3.0

              Введение



              image

              Суть проблемы, рассматриваемой в данной статье заключается в том, что Grid объекты библиотеки ExtJS не предназначены для использования в контексте вложенности. В общем случае, такая задача редко становится перед разработчиком. И все же, иногда, как, например, в моем случае, с ней приходится сталкиваться. Ниже я попытаюсь поделиться накопленным опытом, и, возможно, окажу тем самым кому-нибудь неоценимую помощь, на что искренне надеюсь :). Итак, в добрый путь…

              Читать дальше →
            • Ресайз изображений на лету

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

                  В этой статье мы поговорим о некоторых иногда упускаемых разработчиками аспектах, влияющих на общую производительность веб приложения. В частности рассмотрим как влияет на производительность множественные подключения внешних файлов, наличие «мертвого» кода, акселерация путем кешеров опкода и FastCGI для PHP.
                  Читать дальше →
                • Организация on-line платежей на сайте. Для тех, кто никогда этим не занимался, но боится, что придётся

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

                      Вслед за первой частью, призванной в первую очередь показать, что «не так страшен чёрт, как его малюют»

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

                        Если нужно дать пользователю возможность загрузки нескольких файлов, традиционное решение на данный момент — использовать для этой цели 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 не понимает.

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

                          Debug Logo

                          Многие задают мне один и тот же вопрос:
                          «Как дебажить этот $%*!%$! JavaScript?».

                          Так вот, во-первых JavaScript — не $%*!%$! А как я его дебажу — сейчас расскажу.

                          (Примечание: наверное эта статья больше для новичков. Так что не судите строго)

                          Читать дальше →
                        • jQuery.keyboard v0.1.0


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