Как стать автором
Обновить
1
0

Пользователь

Отправить сообщение

Учебный пример разработки PHP-класса с использованием TDD

Время на прочтение7 мин
Количество просмотров19K
В данном посте приводится учебный пример разработки PHP-класса, который совершает запрос к Twitter API с целью выборки статусов пользователя по его никнейму. Кроме того, Twitter-класс кеширует полученные данные с использованием еще одного PHP-класса, который осуществляет простое кеширование данных в файлах.

Целью поста является закрепление собственных знаний, полученных в результате прочтения некоторых книг, статей, а также возможность получить комментарии от опытных TDD-практиков, с указанием на грубые ошибки в процессе разработки или в тестах.

Читать дальше →
Всего голосов 48: ↑41 и ↓7+34
Комментарии26

Клиент не всегда прав или опять про дизайн…

Время на прочтение5 мин
Количество просмотров13K
Почему-то постоянно встречаю на Хабре устаревшее утверждение, что «клиент всегда прав». Современный бизнес уже так не считает, клиент НЕ всегда прав. Но пост не об этом (про «клиент НЕ всегда прав» напишу в другой раз, если вам интересно, о чем можно сообщить в комментариях), а про отдельную проблему отношений исполнителей и клиентов.

В частности, хочу поговорить о разработке дизайнов и конкретно о дизайне сайта. Всем известно, что процесс это тонкий, и иногда превращается в сущий ад.

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

Под катом рецепты правильной работы и не только...
Всего голосов 27: ↑14 и ↓13+1
Комментарии95

Регистрация своей фирмы собственными руками, туду-лист

Время на прочтение12 мин
Количество просмотров51K
Дисклаймер: описываю только свой личный опыт и мнения автора могут не совпадать с мнением автора. Статья огромная, читать много.

Пишу эту статью, и представляю себе тебя, читателя Хабра, которой в обеденный перерыв залез почитать что-нибудь для развития. А этот читатель, т.е. ты (да, не отворачивай глаза от букв, именно ты) давно наслышан, что своё дело – это круто. И, может быть, как раз не хватало лёгкого пинка, чтобы выйти из зоны будничного комфорта и что-нибудь, да предпринять.

Эта статья адресована тем, кто уже «на грани». Она почти лишена философии и туманных ссылок, просто тупо туду-лист. Бери и делай. Намеренно избавляю тебя от объяснений, зачем молодому проекту нужна госрегистрация, такая ли уж это свобода – быть собственником и от куда взять деньги на госпошлину. Статья адресована московским стартаперам, гео-патчи от других городов приветствуются в комментариях.
Будем считать, что с формой собственности определились — это ООО и упрощенка 6%. Если кому нужно ИП – там проще, справишься и без этой статьи.

Для создания фирмы необходимо:

Минимальный реквизит для создания своей компании
Подробности под кОтом.
Всего голосов 372: ↑351 и ↓21+330
Комментарии248

Единая авторизация пользователей с поддержкой нескольких сервисов

Время на прочтение6 мин
Количество просмотров67K
Yii EAuth extension При реализации одного из проектов на Yii framework у меня возникла задача сделать регистрацию и авторизацию пользователей через сторонние сервисы (Google, Facebook, Twitter, etc).

У данной задачи есть два пути решения:
  • Использовать сервис авторизации, например Loginza;
  • Реализовывать функции авторизации самостоятельно для каждого сервиса.
UPDATE: Актуальная версия и инструкция по настройке доступны на github.com. Инструкция в данной статье подходит для EAuth версии <= 1.1.3.
Я выбрал второй вариант...
Всего голосов 148: ↑136 и ↓12+124
Комментарии105

Шардинг MySQL на Yii Framework

Время на прочтение6 мин
Количество просмотров21K
Начну с того, что наш проект находится на начальной стадии развития, а его запуск планируется на 1е ноября. И, чтобы сразу отсечь всю возможную критику касаемо преждевременной оптимизации, скажу, что перед командой была поставлена задача разработать приложение, справляющееся с резкими скачками нагрузки (от 1000 до 50000 и т. п.). В связи с этим было решено закладывать хорошо масштабируемую архитектуру, позволяющую легко и быстро увеличивать производительность системы за счет аппаратной части (по принципу scale-out).

Что мы для этого сделали...
Всего голосов 56: ↑53 и ↓3+50
Комментарии35

HTML5 Prefetching — Предварительная загрузка документов

Время на прочтение2 мин
Количество просмотров8.2K
Аж в 2003 году Mozilla представила новый механизм для оптимизации загрузки страниц. И существует большой шанс, что технология войдет в HTML5.

Суть же метода в том, что на любой странице браузеру можно указать документы (страница, файл стилей, картинка), которые в скором времени могут понадобиться пользователю. И он заранее их закэширует.
Узнать, как использовать prefetching
Всего голосов 45: ↑41 и ↓4+37
Комментарии36

Symfony2\SecurityBundle

Время на прочтение14 мин
Количество просмотров41K
Аутентификация и Авторизация Автор рассказывает об устройстве бандла Security (на мой взгляд, самого трудного в понимании для symfony-новичков) и разбирает пример его применения. Статья будет особенно полезна для тех, кто желает знать, как работает их инструмент: Symfony2 Security в общем и FOSUserBundle в частности — однако не подходит для первого знакомства с фреймворком, поскольку требует знания некоторых из его компонент.
Статья была опубликована 21 марта 2011 года, когда ещё не вышла финальная версия symfony2.0, однако принципы работы бандла не изменились.

Оригинальная статья — «Symfony2 Blog Application Tutorial Part V: Intro to Security» — часть цикла обучающих статей на примере создания блога.
Есть прямое продолжение/дополнение статьи — «Symfony2 Blog Application Tutorial Part V-2: Testing Secure Pages», где даётся пример тестирования «закрытых» частей приложения.


Читать дальше →
Всего голосов 64: ↑54 и ↓10+44
Комментарии18

Lock-free memcache API

Время на прочтение5 мин
Количество просмотров4.9K
Доброго времени суток, хабражители!
Этот пост есть краткий конспект многих часов раздумий, каляк на бумаге, набросков кода и, в конце-концов, реально работающего кода в продакшене.
Наш сайт (и далее — просто сайт) активно использует мемкеш для горячих данных. Код, заполняющий мемкеш, может работать очень долго (0,5 секунд — это долго) и при этом пользовательские запросы успевают запустить ещё сотню процедур обновления. Последстия понятны, однако долго мы просто не могли их заметить на уровне общей нагрузки. Только когда мы увидели всплески времени на обслуживание некоторых запросов (от возросшей нагрузки они ещё и попадали в SLOW_QUERIES_LOG MySQL) — тогда и закипела работа.
Пара рисунков, 100 строк кода и увлекательные пояснения здесь.
Всего голосов 57: ↑49 и ↓8+41
Комментарии69

Кризис Drupal

Время на прочтение3 мин
Количество просмотров8.7K
В последнее время наметились довольно очевидные признаки того, что можно назвать критическим этапом в развитии Drupal.

Февраль 2008: началась разработка Drupal 7.

Октябрь 2008: 285 незакрытых багов для Drupal 7.

Март 2009: Пришёл специалист по переделке интерфейса Drupal 7 (D7UX).

Июнь 2009: 3120 незакрытых багов (13 763 в общей сложности).

Сентябрь 2009: Первоначально предполагалось заморозить код на этом этапе, но решили разработать (с нуля) ещё 10 новых фич и включить их в состав Drupal 7.
Читать дальше →
Всего голосов 174: ↑152 и ↓22+130
Комментарии209

Читаем QR код

Время на прочтение5 мин
Количество просмотров1.1M
Иногда возникают такие ситуации, когда нужно прочитать QR код, а смартфона под рукой нет. Что же делать? В голову приходит лишь попробовать прочитать вручную. Если кто-нибудь сталкивался с такими ситуациями или кому просто интересно как же читается QR код машинами, то данная статья поможет вам разобраться в этой проблеме.

В статье рассмотрены базовые особенности QR кодов и методика дешифрирования информации без использования вычислительных машин.

Иллюстраций: 14, символов: 8 510.
Читать дальше →
Всего голосов 623: ↑614 и ↓9+605
Комментарии109

Инструменты командной строки для веб-разработчика

Время на прочтение3 мин
Количество просмотров40K
Жизнь веб-разработчика омрачена сложностями. Особенно неприятно, когда источник этих сложностей неизвестен. То ли это проблема с отправкой запроса, то ли с ответом, то ли со сторонней библиотекой, то ли внешний API глючит? Существует куча различных прилад, способных упростить нам жизнь. Вот некоторые инструменты командной строки, которые лично я считаю бесценными.
Читать дальше →
Всего голосов 227: ↑217 и ↓10+207
Комментарии30

Обработка входящей почты на PHP

Время на прочтение2 мин
Количество просмотров37K
Хочу поделиться рецептом, как совместить php-скрипт и почтовый сервер Postfix для автоматической обработки входящей почты.

С помощью такой связки мы собираем статистику по количеству возвратов bounce-писем:Undelivered Mail Returned to Sender.

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

Как это сделать...
Всего голосов 73: ↑62 и ↓11+51
Комментарии43

CBS или упрощенный вид стилизирования и написания скриптов в ваших проектах

Время на прочтение4 мин
Количество просмотров1.2K

Вступление



Привет хабровчане,

Вашему вниманию хотел бы предоставить небольшую, но полезную функцию которая:
  • Сделает работу верстальщика немного проще и чище
  • Упростит выборку элементов на странице через популярные платформы, аля jQuery


Смысл функции в том, что бы вместе с загрузкой страницы/после неё определить важные параметры клиента, такие как:
Браузер, версия браузера, О.С, движек браузера и.т.п
И разместить их в html тэг вашей страницы.

Дальше — больше. Читаем?

Читать дальше →
Всего голосов 50: ↑39 и ↓11+28
Комментарии34

Пакетная обработка изображений в Picasa с помощью ImageMagick

Время на прочтение3 мин
Количество просмотров5K
imageВ нашем офисе мы используем Picasa для обработки множества сканов и фотографий. Мы используем Picasa уже несколько лет и очень довольны. Однако, Picasa не предоставляет всех необходимых нам функций, а некоторые слишком сложно использовать при нашем объеме работ. Чтобы упростить нашим сотрудникам задачу, я решил автоматизировать некоторые процессы, используя два основных компонента: набор консольных утилит ImageMagick, и довольно малоизвестный Picasa Button API.

В качестве примера я опишу небольшое приложение, которое мы используем для совмещения нескольких изображений в одно, одним кликом прямо из интерфейса Picasa. Немного разобравшись с ImageMagick, можно легко модифицировать этот код для других задач.

Читать дальше →
Всего голосов 50: ↑49 и ↓1+48
Комментарии7

Определение кодировки текста в PHP — обзор существующих решений плюс еще один велосипед

Время на прочтение7 мин
Количество просмотров104K
Столкнулся с задачей — автоопределение кодировки страницы/текста/чего угодно. Задача не нова, и велосипедов понапридумано уже много. В статье небольшой обзор найденного в сети — плюс предложение своего, как мне кажется, достойного решения.

1. Почему не mb_detect_encoding() ?


Если кратко — он не работает.
Подробнее - под катом
Всего голосов 115: ↑104 и ↓11+93
Комментарии82

Регулярные выражения для валидации распространенных видов данных

Время на прочтение2 мин
Количество просмотров492K
Для проверки текстовых полей на валидность обычно используют регулярные выражения. Существует несколько наиболе распространенных видов таких даных, как например номер кредитки, дата в определенном формате и т. д. На сайте html5pattern.com собирается коллекция регулярных выражений для таких данных (там это позиционируется, как возможное содержимое html5-атрибута pattern у inpit-элементов, но эти регулярные выражения можно использовать и для привычной валидации с помощью javascript). Актуальные для российской аудитории примеры, вместе с соответствующими регулярными выражениями вы можете посмотреть под катом.
Читать дальше →
Всего голосов 133: ↑97 и ↓36+61
Комментарии66

Нечёткий поиск в тексте и словаре

Время на прочтение13 мин
Количество просмотров264K

Введение


Алгоритмы нечеткого поиска (также известного как поиск по сходству или fuzzy string search) являются основой систем проверки орфографии и полноценных поисковых систем вроде Google или Yandex. Например, такие алгоритмы используются для функций наподобие «Возможно вы имели в виду …» в тех же поисковых системах.

В этой обзорной статье я рассмотрю следующие понятия, методы и алгоритмы:
  • Расстояние Левенштейна
  • Расстояние Дамерау-Левенштейна
  • Алгоритм Bitap с модификациями от Wu и Manber
  • Алгоритм расширения выборки
  • Метод N-грамм
  • Хеширование по сигнатуре
  • BK-деревья
А также проведу сравнительное тестирование качества и производительности алгоритмов.
Читать дальше →
Всего голосов 171: ↑170 и ↓1+169
Комментарии33

Реализация нечеткого поиска

Время на прочтение6 мин
Количество просмотров43K


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

В данной статье описывается возможная реализация нечеткого поиска, которая была применена для поиска на сайте edatuda.ru.
Читать дальше →
Всего голосов 112: ↑105 и ↓7+98
Комментарии22

Pokki: веб-приложения внутри ОС

Время на прочтение2 мин
Количество просмотров43K
Веб-приложения в последнее время набирают большую популярность. С ними мы имеем возможность делать ну всё, что угодно, не покидая окна браузера: обмениваться фото, редактировать видео, смотреть кино, слушать музыку, работать с почтой, создавать презентации. Есть много «облачных» инструментов и для веб-разработчиков, вот, кстати, недавняя хорошая подборка.

Но, да, пусть это и здорово — «не покидая окна браузера» и всё такое. Но в какой-то момент начинает казаться, что это перебор: всё-таки со стороны системы в целом, браузер — это одна программа, и пользователю не очень легко её настроить для удобной работы с приложениями, которые доступны «изнутри». Конечно, тут на помощь приходят расширения для браузеров, а в случае с Хромом — эдакие полноэкранные аддоны, которые так и называются — «приложения». Но в любом случае, это означает, что у них отсутствует чёткая интеграция с ОС, для их работы нужно держать браузер открытым, и так далее.

В случае с каким-нибудь хромбуком, это не проблема — там браузер и есть операционная система, высший слой, он не закрывается никуда. Но для Windows или OSX, описанная проблема всё ещё существует.

Pokki — это попытка решить это проблему, предложив шаг в сторону сближения десктоп- и веб-приложений. Это платформа позволять загружать приложения в таскбар Windows и работать с ними, как если бы они были частью системы, независимой от браузера.

Pokki app screen

Читать дальше →
Всего голосов 64: ↑58 и ↓6+52
Комментарии39

.phar — исполняемые PHP-архивы

Время на прочтение4 мин
Количество просмотров53K
Данную статью я хочу посвятить одному интересному нововведению в PHP 5.2 (с версии 5.3 входит в стандартную поставку PHP) — PHAR.
image
PHAR — это утилита для создания исполняемых архивов в PHP, аналог JAR в Java.
PHAR ползволяет упаковать много файлов в один, в результате чего Ваше приложение может работать с целой библиотекой, как с одним файлом.
PHAR умеет создавать, читать, записывать и конвертировать такие форматы, как TAR, ZIP и, собственно, PHAR.
Доступ к файлам в архиве осуществляется напрямую, без необходимости распаковки архива, через PHP Stream Wrapper, тоесть с файлами из архива работают все функции, которые поддерживают PHP Stream Wrapper.
Читать дальше →
Всего голосов 137: ↑128 и ↓9+119
Комментарии80

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность