• Zend Framework 2: Service Manager

    • Tutorial

    Service Manager (SM, CM) в ZF2.


    Service Manager — это один из ключевых компонентов Zend Framework 2, который существенно облегчает жизнь разрабочика избавляя его от дублирования кода и рутинных операций по созданию и настройки сервисов, позволяя их конфигурировать на максимально высоком уровне. СМ, по своей натуре, является реестром сервисов, основная задача которого — создание и хранение сервисов. Можно сказать, СМ является очень продвинутой версий компонента Zend_Registry из Zend Framework 1.
    СМ реализует паттерн Service Locator. Во многих частях приложения (например, в AbstractActionController) можно встретить функции getServiceLocator(), которые возвращают класс Zend\ServiceManager\ServiceManager. Такое несоответствие названия метода и возвращаемого типа легко объясняется тем, что getServiceLocator() возвращает объект, реализующий интерфейс ServiceLocatorInterface:
    Читать дальше →
  • Iterator, ArrayAccess, Countable: Объект как массив

      0. Intro.


      В стандартной поставке php имеются 2 интересных интерфейса, позволяющие значительно изменять поведение объектов в языке.
      Это Iterator и ArrayAccess. Первый позволяет итерировать объект через такие конструкции each, foreach, for. Второй же, в свою очередь, позволяет обращаться к объекту, как к массиву применяя привычное $array[] = 'newItem'. Соответственно, для полноценной эмуляции массива, объект обязан заимплементить оба интерфейса.
      Читать дальше →
    • Zend_Form_Element: создание своего элемента

        0. Intro.

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

        habr 1
        Читать дальше →
      • Восстановление убитых MBR и таблицы разделов

          0. Intro.


          Ситуация следующая. Есть винт на 160Гб. На нем 2 раздела — 40Гб и 120Гб. С целью установки убунты как второй системы была произведена разбивка 120Гб -> 100+10+2+8.

          Далее, с целью отката изменений, были объединены диски (10, 2 и 8) обратно в один 20Гб и отформатирован в NTFS. В нагрузку к этому, были проведены операции с MBR, результатом которой явилась ее смерть.

          Итоги

          1. При загрузке системы выводится сообщение MBR helper not found;
          2. fdisk показывает один большой 160Гб диск.

          Дураку понятно, что это начало веселой ночи.
          Далее, под катом, решения вопроса.
          Читать дальше →
        • Oxygen-gtk. Единый вид приложений GTK и Qt

            0. Intro.


            В рамках проекта KDE начал развиваться проект oxygen-gtk, главная задача которого — это создание единства внешнего вида GTK приложений, запущенных под KDE и нативных KDE приложений. В отличии от других движков с аналочными целями, этот не зависит от Qt.
            Читать дальше →
          • Скрипт для работы с виртуальными хостами apache2 на локале

              0. Intro


              Для чего это все? Цели было 2:
              1. избавиться от рутины ковыряния в консоли и файлах
              2. получить экспы в разработке shell-скриптов.

              1. Что это такое?


              Ниже будет представлен скрипт, для работы с виртуальными хостами апача под кубунтой для локальной машины только. Для сервера врядли сгодится. Не для этих целей писался.
              Читать дальше →
            • Визуальная интеграция Firefox в KDE 4

                0. Intro.


                Не секрет, что Firefox под KDE выглядит уж совсем коряво, даже со стилями qtcurve. Не знаю как кому, но мне лично хочется, что бы все приложения в моем DE выглядели одинаково. Поэтому, занявшись этим вопросом, я перепробовал кучу стилей для гнома (gtk styles таб в systemsettings) и плагинов для firefox.
                Читать дальше →
              • 10 способов побороть проблемы в IE6

                • Перевод

                1. Используйте DOCTYPE


                Лучше всегда прописывать доктайп в заголовке каждой html-страницы, причем, строгий режим рекомендуется:

                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

                для XHTML:

                <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

                от себя добавлю, что недопускайте никаких сторонних символов перед доктайпом. Ни пробелов, ни переносов строки — иначе появятся странные поля у body и html
                Читать дальше →
              • Улучшаем юзабилити Krusader

                  0. Интро.


                  Несомненно, krusader является лидером среди графических файловых менеджеров. Внешне похож на знаменитый Total Commander, но функциональность слабее. Я сейчас покажу, как можно немного улучшить юзабилити для повседневного использования. А делать мы это будем через useractions. С их помощью, можно сделать практически любое действие с файлами и программой, не важно что, упаковка файлов одним кликом или сложные действия с группой файлов, или еще с чем (можно аж до закачки файлов с нета с последующей их обработкой).
                  Читать дальше →
                • Установка SVN практически на любой хостинг (static svn)

                    0. Интро

                    Практически всегда хостинг не предусматривает поддержку svn для конечного пользователя или эта возможность идет в качестве дополнительной платной опции, а обновлять проект с большим количеством файлов — занятие не из легких. Тем более, когда изменения затронули много связанных между собой файлов. Старый вариант через фтп или закачка архива с последующей его распаковкой не особо подходит, так как влечет за собой вероятность возникновения ошибок. Будь-то недокачка какого-то файла (ftp) либо неверные права на папки\файлы (архивом). Все это для примера. Но есть более удобный способ решить эту проблему. Установить svn на хостинг.
                    Читать дальше →