• Httplug — абстрагирование от клиента HTTP для PHP

      HTTPlug


      В прошлом году PHP-FIG приняла стандарт PSR-7, описывающий работу с сообщениями HTTP. Хорошая статья об этом стандарте и его применении была на Хабре. И хотя PSR-7 — большой шаг вперёд, ему не хватает логичного продолжения — общего интерфейса клиентов HTTP. Созданием недостающего компонента занялась группа PHP-HTTP.

      Читать дальше →
    • Замена PEAR на Composer

        Думаю, большинство разработчиков, использующих PHP, уже в знают, что популярные проекты начинают отказываться от распространения через PEAR в пользу Composer (например PHPUnit и Symfony). Некоторые расстраиваются по этому поводу, дескать, теперь вместо однократной общесистемной установки того же PHPUnit, придётся включать его зависимостью в каждый проект. Совсем необязательно! Composer прекрасно умеет устанавливать пакеты для общего использования.
        Читать дальше →
        • +12
        • 10.5k
        • 3
      • Российский «автопилот» для автомобилей

          РобоСиВи На Хабре уже не раз писали об «автопилотах» для автомобилей, разрабатываемых Google, BMW и Volkswagen. Но подобные разработки есть и у нас в России. Компания «РобоСиВи» разрабатывает универсальный навигационный комплекс, способный работать в составе наземных транспортных средств, водных роботов, БПЛА. В апреле 2012 года компания официально стала резидентом космического кластера инновационного центра «Сколково» и впоследствии получила грант на развитие проекта.
          Читать дальше →
        • Защищаем веб-формы от спама без CAPTCHA — 2: Ботобор

            Три года назад на Хабре была опубликована статья «Form Spam Bot Blocker: Защищаем Web-формы без CAPTCHA!», рассказывающая о принципиально отличном от CAPTCHA решении для PHP по защите форм от спам-ботов. Это решение основано на идеях, изложенных в своих статьях Филом Хааком (Phil Haack) — Honeypot Captcha и Недом Батчелдером (Ned Batchelder) — Stopping spambots with hashes and honeypots. К сожалению, предложенный в статье класс, написан для PHP4 и не развивается с 2007-го года. Хочу предложить вашему вниманию его аналог на PHP5.
            Читать дальше →
          • Пространства имён + PHPUnit = 100% покрытие тестами

              Давно хотел поделиться с общественностью способом тестировать код, использующий функции для работы с внешней средой: с сокетами, БД, файлами и чем угодно ещё. Сегодня, увидев статью Runkit + PHPUnit = 100% покрытие тестами, решил, что сейчас самое время.
              Решение с Runkit красивое, но есть одна проблема — Runkit не распространяется вместе PHP, его надо ставить отдельно. Я же хочу предложить подход, работающий в обычной поставке PHP 5.3+, при одном условии — проект должен использовать пространства имён.
              Читать дальше →
            • Почему разметка должна быть не только валидной, но и логичной. Пример из жизни

                Я работаю в веб-студии, постоянно пользующейся услугами верстальщиков-фрилансеров. И если несколько лет назад верстальщики частенько присылали код, пестревший ошибками разметки, то сейчас это уже большая редкость. К сожалению совсем другая картина с логикой разметки, автоматического валидатора которой, насколько мне известно, пока нет. В надежде, привлечь внимание верстальщиков к этой стороне их работы, хочу рассказать о недавнем случае, показывающем, что логичность разметки не менее важна чем её валидность.
                Читать дальше →
              • Mylyn Generic Web Templates Connector и баг-трекер PEAR

                  Последнее время я не мыслю свою работу в Eclipse без Mylyn. С помощью Mylyn я свёл в единый список задачи из Jira, используемой по работе, Mantis, используемой в собственном проекте, Redmine, используемой ещё на одном проекте… Благо для всех этих систем есть готовые коннекторы. Но вот сегодня мне понадобилось подключить ещё и баг-трекер PEAR, для которого коннектора нет. К счастью, добрые люди предусмотрели в Mylyn такую штуку, как Generic Web Templates Connector, позволяющую, в теории, подключиться к любому баг-трекеру. Под катом я поделюсь опытом настройки этого коннектора для PEAR.
                  Читать дальше →
                • Загрузка файлов и open_basedir: почему надо пользоваться стандартными функциями

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

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

                    Читать дальше →
                  • ejabberd: общие списки

                      image
                      Предыдущие заметки про настройку ejabberd 1, 2 и 3.

                      ejabberd позволяет создать заранее подготовленные списки контактов, доступные определённым группам пользователей. Так как наш сервер настраивается под корпоративные нужды, это было бы кстати. Приходит новый человек, подключается к серверу, а у него в списке контактов уже есть все, кто ему может понадобиться, да ещё и по отделам сгруппированные.
                      Как сделать такие списки...
                    • ejabberd: Поиск по визитным карточкам

                        В заметке ejabberd с авторизацией через LDAP я описал основные моменты по настройке сервера ejabberd. В заметке внешние программы аутентификации показал как можно использовать внешнюю программу, если не хватает функционала встроенных модулей. Теперь добавим поиск по визитным карточкам пользователей.
                        Читать дальше →
                        • +12
                        • 5.6k
                        • 4
                      • ejabberd: внешние программы аутентификации

                          В заметке ejabberd с авторизацией через LDAP я описал основные моменты по настройке сервера ejabberd и подключения его к LDAP. К сожалению возможностей стандартного модуля LDAP-аутентификации нам не хватило. Однако ejabberd позволяет использовать внешние, в том числе собственные, программы для этой цели.
                          Читать дальше →
                          • +15
                          • 4.5k
                          • 3
                        • ejabberd с авторизацией через LDAP

                            Я достаточно давно и без сожалений расстался с ICQ. Воспользовавшись возможностью, поднял свой собственный Jabber-сервер, которым с успехом и пользуюсь по сей день. Однако не у всех моих сотрудников есть Jabber-аккаунт (не все даже знают, что это такое :-), что несколько затрудняет общение по работе. Для общения с остальными, для организации безопасной и независимой системы обмена сообщениями, я решил поднять корпоративный jabber-сервер. А так как у нас активно используется LDAP, то логичным показалось задействовать его для аутентификации пользователей и управления учётными записями.
                            Читать дальше →
                          • ТЗ: макеты или текст?

                              В заметке ТЗ для web-разработчика автор пишет:
                              считаю что одно из самых правильных способов подачи информации есть графический, т.е. лучше один раз увидеть, чем сто раз услышать.

                              Никак не комментируя заметку в целом, хотелось бы сделать несколько замечаний по поводу разных способов представления информации в ТЗ и не только в нём.

                              Читать дальше →
                            • Разница между разметкой и представлением

                                Прочитав комментарии к заметке Firefox 3: * {display: block } bug, понял что заметная часть читателей Хабра, в том числе серьёзно занимающиеся веб-разработкой, не совсем верно представляют себе что-то же такое HTML, и почему теги отображаются так, а не иначе.

                                Читать дальше →
                              • Вредные советы: как писать в техподдержку

                                  Сообщая об ошибке
                                  Помните, что в техподдержке
                                  Все сотрудники владеют
                                  Телепатией на «пять»
                                  Им подробности ошибки
                                  Знать не надо совершенно
                                  Пусть там сами угадают
                                  Что у вас произошло
                                  Читать дальше →
                                • Как хостинги отбивают клиентов

                                    Сегодня знакомому пришло письмо, якобы от компании AGAVA, такого содержания:
                                    Уважаемый пользователь платного хостинга компании AGAVA, сообщаем вам о том,
                                    что в связи с реорганизацией, подразделение виртуального хостинга прекращает работу с 15 апреля 2008 года.

                                    Компания AGAVA заключила договор с хостинг провайдером SlavHost.ru о передаче своих клиентов на обслуживание.

                                    Сотрудники компании AGAVA совместно с SlavHost.ru приложат все возможные усилия,
                                    чтобы перенос ваших данных прошел успешно.

                                    Для получения подробных инструкций о переносе ваших сайтов
                                    необходимо связаться с технической поддержкой компании SlavHost.ru,
                                    контакты которой вы можете найти на сайте www.slavhost.ru/contact.php

                                    Пожалуйста, во избежание отключения, осуществите перенос ваших сайтов до 15 апреля 2008 года.

                                    Благодарим за сотрудничество.

                                    Читать дальше →
                                  • Различия в поведении window.open в разных браузерах

                                      При разработке одного сайта столкнулся с необходимостью проверить работу функции window.open в разных браузерах. Результаты решил оформить и выложить, глядишь кому понадобится, а кто и дополнит, что ещё лучше…

                                      Для тестирования использовались: FireFox 3 beta 3, Netscape Navigator 9, Internet Explorer 6, Opera 9 и Konqueror 3.5 (тест Safari отдельно, в конце топика). При этом FireFox 3 тестировался в двух конфигурациях: по умолчанию и c TabMixPlus (с разрешением открывать popup-ы в новых окнах). Рабочая среда: KDE 3.5 на Debian.
                                      Читать дальше →
                                    • FireFox 3 beta 3

                                        Сегодня Mozilla Foundation выпустила 3-ю бету браузера FireFox3. Скачать версию под свою любимую ось можно здесь.
                                        Об основных изменениях (на русском) можно прочитать, например, здесь, я же хочу вкратце рассказать, что бросилось в глаза мне после установки новой версии…
                                        Читать дальше →
                                      • Опенсорс, стандарты и… утюг

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

                                          Предыстория такова. Был у меня утюг (приложение), от известной фирмы Tefal. Работал он достаточно стабильно, был прост в использовании и несильно требователен к ресурсам. Как и у любого другого приложения изредка случались глюки — при определённом наклоне из испарителя капала вода. Но в целом он меня устраивал.

                                          И вот случилась неприятность — утюг упал с гладильной доски. Ничего страшного, но один уголок откололся. Часть отвалилсь наружу, другая внутрь. Мелкая бытовая поломка, немного клея и десять минут работы. Если бы не одно «но»…

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

                                          Из-за такой простой вещи как один единственный болт, я должен терять время (полдня на дорогу, и ещё ждать пока сделают), тратить деньги (дорога + ремонт) и нервы (какого хрена я должен куда-то ехать и что-то платить?!)

                                          А ведь я мог бы решить проблему просто и быстро если бы болт был стандартным, а сам утюг, вследствие этого открытым и доступным для изменения…
                                        • Что знает шестиклассник о компьютерах? Результаты.

                                            По просьбам тех, кто помогал составить опрос, привожу результаты.

                                            Первым делом меня удивило количество детей в классе — всего 12 (отвечали только 10). Нас в классе, помню, было 25… Ну это даже лучше, что немного :-)

                                            Итак. Самостоятельно с компьютером умеют работать все. Писать и рисовать умеют, по их заявлениям, так же все, но ниже расскажу подробнее.
                                            Читать дальше →