Как-то по долгу службы появилась необходимость добавить к поиску на сайте всем известную фичу, сервис «Возможно вы имели в виду…» или «Поиск с опечатками». Стали думать как реализовывать. Сторонние сервисы и api использовать не хотелось, ибо время до чужого сервера и назад, да и в целом не очень хорошо. Как раз кстати пришелся модуль pg_trgm, который ищет близкие к запросу слову на основе триграммного индекса.
Влад Мерк @13i
психолог, коуч, дизайнер, разработчик, бизнесмен
Zend Framework: подключаем OpenID
8 мин
2.1KВ своем проекте (Вопросы и ответы для программистов) на Zend Framework мне стало необходимо подключить OpenID и после часа работы я успешно подключил стандартный зендовский сервис. Думаю класс, как легко и удобно(как и все в зенде), но как оказалось этот сервис не работает с OpenId 2.0, да — он просто не дописан.
Немного порывшись в исходниках я это подтвердил — Consumer.php * todo OpenID 2.0 (7.3) XRI and Yadis discovery
Потом посмотрел по багтрекеру и оказалось что это весит уже давно(очень) и никто не спешит доделывать. Тогда я и начал искать альтернативу. Выбор попал на openidenabled.com/php-openid.
Далее приведу пример, который позволит тем кто еще только собирается подключать сделать это минут за 15.
Немного порывшись в исходниках я это подтвердил — Consumer.php * todo OpenID 2.0 (7.3) XRI and Yadis discovery
Потом посмотрел по багтрекеру и оказалось что это весит уже давно(очень) и никто не спешит доделывать. Тогда я и начал искать альтернативу. Выбор попал на openidenabled.com/php-openid.
Далее приведу пример, который позволит тем кто еще только собирается подключать сделать это минут за 15.
+19
Виджет выбора OpenID провайдера на Prototype
1 мин
1.4KКогда-то я уже писал, как интегрировать OpenID авторизацию в ваш сайт. Речь шла о серверной части.
Сейчас же я говорю о UI части — виджет для выбора провайдера.
В качестве клиентской библиотеки для своего проекта я выбрал prototype и первым делом я полез в гугл поискать готовое решение. Удалось найти такое, но только для JQuery — code.google.com/p/openid-selector
И так мне ничего не оставалось как написать OpenID selector самому. Вот что получилось
![image](https://habrastorage.org/getpro/habr/post_images/6ee/bd3/983/6eebd398316d8ad2cb7288164cbba3ed.png)
Сейчас же я говорю о UI части — виджет для выбора провайдера.
В качестве клиентской библиотеки для своего проекта я выбрал prototype и первым делом я полез в гугл поискать готовое решение. Удалось найти такое, но только для JQuery — code.google.com/p/openid-selector
И так мне ничего не оставалось как написать OpenID selector самому. Вот что получилось
![image](https://habrastorage.org/getpro/habr/post_images/6ee/bd3/983/6eebd398316d8ad2cb7288164cbba3ed.png)
+24
jQuery.keyboard v0.2.0
4 мин
5.7K![](https://habrastorage.org/getpro/habr/post_images/a14/065/cfd/a14065cfdd1718d9ff96acab1f34a9ad.png)
Снова приветствую Хабрасообщество. Недельку назад я выкладывал свою либу jQuery.keyboard. Там было несколько недостатков, нереализованных идей, да и огромное количество предложений и положительных отзывов побудили меня к быстрому написанию новой версии
+63
jQuery.Tree
2 мин
25KТоварищ caffeine искал плагин к jQuery, который делает дерево с чекбоксами, которые имеют три состояния — установленный, снятый и «чуть-чуть установленный». Не нашел, попросил меня написать. Я написал и делюсь со всеми желающими.
+62
Загрузка браузером нескольких файлов
5 мин
30KЕсли нужно дать пользователю возможность загрузки нескольких файлов, традиционное решение на данный момент — использовать для этой цели 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+ такую возможность предоставляют.
Достаточно написать что-то вроде
К сожалению, «Опера» (ещё с версии 3.5) отправляет, при использовании мультизагрузки, файлы в контейнере «multipart/mixed», который PHP не понимает.
Я попробовал исправить эту ситуацию.
Последнюю ситуацию можно улучшить, если использовать встроенную в браузеры возможность множественной загрузки файлов. Из всех браузеров сейчас данную возможность не поддерживает только Internet Explorer (впрочем, мы ещё не видели девятую версию, может там что-то изменится), остальные браузеры — Opera 9 и выше (а так же версии 3.5—6.05), Firefox 3.6+, Chrome 3.0.191.0+ и Safari 4.0.1+ такую возможность предоставляют.
Достаточно написать что-то вроде
Copy Source | Copy HTML
- <form enctype="multipart/form-data" method="post">
- <input type="file" min="1" max="9999" name="file[]" multiple="true" />
- <input type="submit" name="submit" />
- </form>
PHP оказался готов к такой конструкции (именно для него в параметре «name» стоят квадратные скобки), он просто разложит загружаемые файлы по элементам массива $_FILES, если только мы не используем «Оперу».К сожалению, «Опера» (ещё с версии 3.5) отправляет, при использовании мультизагрузки, файлы в контейнере «multipart/mixed», который PHP не понимает.
Я попробовал исправить эту ситуацию.
+95
Организация on-line платежей на сайте. Для тех, кто никогда этим не занимался, но боится, что придётся. Часть 2: архитектура
13 мин
7.1KВслед за первой частью, призванной в первую очередь показать, что «не так страшен чёрт, как его малюют»
Статья об архитектуре части проекта, которая занимается он-лайн платежами. Намеренно не хотелось бы сейчас подробно описывать API конкретного биллинга или процедуру регистрации в нём. Тонкости конкретных биллингов нужно обсуждать отдельно, иначе тему просто не раскрыть. Цель статьи: обсудить вариант архитектуры, позволяющий нанизывать новые виды биллингов и типы платежей, с наименьшей головной болью.
Статья об архитектуре части проекта, которая занимается он-лайн платежами. Намеренно не хотелось бы сейчас подробно описывать API конкретного биллинга или процедуру регистрации в нём. Тонкости конкретных биллингов нужно обсуждать отдельно, иначе тему просто не раскрыть. Цель статьи: обсудить вариант архитектуры, позволяющий нанизывать новые виды биллингов и типы платежей, с наименьшей головной болью.
+56
jQuery.keyboard v0.1.0
2 мин
5.6K![](https://habrastorage.org/getpro/habr/post_images/495/cca/2ee/495cca2ee96e43116cb9623af1d89791.png)
У меня есть на примете как минимум два проекта, в которых понадобится активное управление с помощью клавиатуры. Поэтому, я сел и написал удобный и красивый плагин для jQuery, который выкладываю во всеобщий доступ под свободной лицензией LGPL.
+131
Поиск по сайту на основе Yandex.XML
3 мин
13KПочему-то вебмастера ленятся сделать нормальный поиск по своему сайту. Особенно это касается высокопосещаемых сайтов, где качественный поиск был бы очень удобен для рядового пользователя.
Чаще всего прибегают к готовому решению от Google, с помощью которого можно еще и подзаработать на контекстной рекламе. Но для рунета я бы посоветовал сделать поиск при помощи сервиса Yandex.XML, потому что такой поиск больше адаптирован под морфологию русского языка. К тому же вы можете получить шанс получить самые жирные биды для контекста, если будете использовать поисковый директ.
В этом посте я хочу подробно показать вам, что подобный поиск организовать совсем не сложно. Это займет всего несколько минут и выльется в десяток строк на PHP.
Чаще всего прибегают к готовому решению от Google, с помощью которого можно еще и подзаработать на контекстной рекламе. Но для рунета я бы посоветовал сделать поиск при помощи сервиса Yandex.XML, потому что такой поиск больше адаптирован под морфологию русского языка. К тому же вы можете получить шанс получить самые жирные биды для контекста, если будете использовать поисковый директ.
В этом посте я хочу подробно показать вам, что подобный поиск организовать совсем не сложно. Это займет всего несколько минут и выльется в десяток строк на PHP.
+26
Динамический CSS?
4 мин
19K![xCSS PHP Class](https://habrastorage.org/getpro/habr/post_images/360/46c/bb3/36046cbb305fcb1f0c322fa9956b95d0.jpg)
+53
Вращение объектов в 3D
2 мин
5.1KПриветствую тебя, %username.
![image](https://habr.com/images/px.gif#%3D%22http%3A%2F%2Fimg12.imageshack.us%2Fimg12%2F5241%2Frotation.gif%22)
Сегодня я хочу продемонстрировать возможности замечательного IMagick, и показать как с легкостью можно получить анимированное 3D gif изображение. Это может пригодиться, например в магазинах, которые продают мобильные телефоны, и хотят продемонстрировать покупателям телефон в 3D, без использования Flash.
![image](https://habr.com/images/px.gif#%3D%22http%3A%2F%2Fimg12.imageshack.us%2Fimg12%2F5241%2Frotation.gif%22)
Сегодня я хочу продемонстрировать возможности замечательного IMagick, и показать как с легкостью можно получить анимированное 3D gif изображение. Это может пригодиться, например в магазинах, которые продают мобильные телефоны, и хотят продемонстрировать покупателям телефон в 3D, без использования Flash.
+56
Создаём правильный «мокрый пол» c перспективой изображения на Javascript
1 мин
1.8KВ контексте одного из моих текущих проектов была поставлена задача сделать «мокрый пол». Картинок на пол планировалось класть огромное количество (но всего по паре на страницу, с заменой). В перспективе. В перспективе, кстати, временной и пространственной.
Не найдя ничего стоящего, я взялся написать свой велосипед. И, по-сидев два с лишним вечера, сочинилась небольшая js-библиотека с generic-названием iWet.
UPD: Версия 0.2
Не найдя ничего стоящего, я взялся написать свой велосипед. И, по-сидев два с лишним вечера, сочинилась небольшая js-библиотека с generic-названием iWet.
UPD: Версия 0.2
- Добавил белую маску. См. Демо.
- Выложил исходик маски в .psd
- Вылечил баг с мельканием картинки при загрузке страницы
- Добавил readme.txt и licence.txt
- Минимальные косметические изменения кода
+69
Честные и благородные способы сделать так, чтобы в интернете вас любили и уважали (не seo)
1 мин
11K![image](http://kortunov.com/lj/muha-slon-small.gif)
Недавно в Самаре прошла конференция веб-разработчиков 404 на которой я делал доклад о секретах продвижения Турбомилка в интернете. Скромность — это модно, но не практично. Мало сделать что-то крутое, про это нужно интересно рассказать, причем, нужным людям.
В ходе доклада я рассказал как нам помогает наш корпоративный блог (в том числе на Хабре), что мы туда пишем и как следим за результатами. Плюс, показал картинки про великие и ужасные Хабра-эффект и Digg-эффект.
Делать доклад мне помогал Платон Днепровский из UIDesign Group за что ему большое спасибо. (ролик рекомендуется смотреть прямо с Vimeo в HD-качестве)
+29
51 Веб Приложение для Дизайнеров и Разработчиков
11 мин
13KПеревод
Веб дизайн и разработка претерпели значительные изменения в течении последних лет, точно так же изменились используемые технологии и инструменты. Эти изменения придали жизнь таким инструментам, которые сделали нашу жизнь проще, и дали возможность предоставлять нашим клиентам более качественные услуги. Коммуникации и совместная работа на огромных расстояниях уже не проблема и управление проектом стало весьма простой задачей.
Веб дизайнеры и разработчики могут также сделать свою работу с любого компьютера имеющего доступа к Интернету, без использования своих обычных приложений. Дизайн, тестирование, разработка, применение, все можно сделать непосредственно в Интернете.
Данная статья представляет 51 веб приложений для дизайнеров и разработчиков.
Веб дизайнеры и разработчики могут также сделать свою работу с любого компьютера имеющего доступа к Интернету, без использования своих обычных приложений. Дизайн, тестирование, разработка, применение, все можно сделать непосредственно в Интернете.
Данная статья представляет 51 веб приложений для дизайнеров и разработчиков.
+71
TAG_ADD Plugin
3 мин
1.1K![](http://s3.amazonaws.com/floomby/8_3_2009/YCE6ZcsXk6nZodWxPqQyA.png)
Как-то раз мне пришлось писать форму для добавления постов в блог. Помимо стандартных полей (название, дата, текст и.т.д.) необходимо было привинтить юзабельную форму добавления тегов.
Т.к. я кодю в jQuery, то и выбор был однозначным.
Вот необходимые задачи, которые я поставил перед собой:
- Легко в настройке
- Все теги храняться в одном файле (в кэше)
- Минимальная нагрузка на сервер и клиента
- Список тегов — подсказок открывается только для выбранного запроса на определенный тег.
+45
Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Зарегистрирован
- Активность
Специализация
Fullstack Developer, SEO Specialist
Lead
Web development
Design of outdoor advertising
Logo design
UI/UX design
Web design
Graphic design
Adaptive design
Development of corporate identity
SEO strategy developing
SEO optimization