Pull to refresh
23
0
Михаил Красильников @Mekras

Веб-разработчик

Send message

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

Reading time4 min
Views11K

HTTPlug


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

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

Замена PEAR на Composer

Reading time2 min
Views11K
Думаю, большинство разработчиков, использующих PHP, уже в знают, что популярные проекты начинают отказываться от распространения через PEAR в пользу Composer (например PHPUnit и Symfony). Некоторые расстраиваются по этому поводу, дескать, теперь вместо однократной общесистемной установки того же PHPUnit, придётся включать его зависимостью в каждый проект. Совсем необязательно! Composer прекрасно умеет устанавливать пакеты для общего использования.
Читать дальше →

Российский «автопилот» для автомобилей

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

Защищаем веб-формы от спама без CAPTCHA — 2: Ботобор

Reading time3 min
Views28K
Три года назад на Хабре была опубликована статья «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% покрытие тестами

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

Почему разметка должна быть не только валидной, но и логичной. Пример из жизни

Reading time2 min
Views1.5K
Я работаю в веб-студии, постоянно пользующейся услугами верстальщиков-фрилансеров. И если несколько лет назад верстальщики частенько присылали код, пестревший ошибками разметки, то сейчас это уже большая редкость. К сожалению совсем другая картина с логикой разметки, автоматического валидатора которой, насколько мне известно, пока нет. В надежде, привлечь внимание верстальщиков к этой стороне их работы, хочу рассказать о недавнем случае, показывающем, что логичность разметки не менее важна чем её валидность.
Читать дальше →

Mylyn Generic Web Templates Connector и баг-трекер PEAR

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

Загрузка файлов и open_basedir: почему надо пользоваться стандартными функциями

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

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

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

ejabberd: общие списки

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

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

ejabberd: Поиск по визитным карточкам

Reading time2 min
Views6.4K
В заметке ejabberd с авторизацией через LDAP я описал основные моменты по настройке сервера ejabberd. В заметке внешние программы аутентификации показал как можно использовать внешнюю программу, если не хватает функционала встроенных модулей. Теперь добавим поиск по визитным карточкам пользователей.
Читать дальше →

ejabberd: внешние программы аутентификации

Reading time2 min
Views4.9K
В заметке ejabberd с авторизацией через LDAP я описал основные моменты по настройке сервера ejabberd и подключения его к LDAP. К сожалению возможностей стандартного модуля LDAP-аутентификации нам не хватило. Однако ejabberd позволяет использовать внешние, в том числе собственные, программы для этой цели.
Читать дальше →

ejabberd с авторизацией через LDAP

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

ТЗ: макеты или текст?

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

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

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

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

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

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

Вредные советы: как писать в техподдержку

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

Как хостинги отбивают клиентов

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

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

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

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

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

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

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

Различия в поведении window.open в разных браузерах

Reading time5 min
Views17K
При разработке одного сайта столкнулся с необходимостью проверить работу функции 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

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

Опенсорс, стандарты и… утюг

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

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

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

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

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

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

Что знает шестиклассник о компьютерах? Результаты.

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

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

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

Information

Rating
Does not participate
Location
Долгопрудный, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Software Architect, Web Developer
Lead
PHP
Docker
OOP
Linux
Designing application architecture
System analysis
Symfony