Так получилось, что в течение нескольких месяцев я занимался разработкой букмарклетов, сделав их около десятка. Использовал как jQuery, так и native JavaScript. О том, с какими подводными камнями я столкнулся, что нового узнал и нашел — об этом пойдет речь под катом.
scvorec @scvorec
User
Документация по API платежных систем
1 min
7.3KЗа прошедший год в рамках проектов довелось поработать с рядом отечественных платежных системам. После чего, помимо опыта, осталось немного документации, которой и хочу поделиться. Возможно, кому-то пригодится в будущем.
+78
audio.js — слушаем музыку в любом браузере
1 min
70Kaudio.js — это javascript библиотека, позволяющая использовать HTML5 тэг повсюду. Что скрывается за словом «повсюду». Если есть возможность использовать тэг , то будет использоваться он, иначе будет подключен плеер на flash. В библиотеку так же входит и UI отображение для этого плеера, которое может быть видоизменено с помощью css.
+71
+109
Номер телефона
1 min
292KРегулярное выражение для валидации номера телефона:
Ориентировано на российские мобильные + городские с кодом из 3 цифр (например, Москва).
^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$
Ориентировано на российские мобильные + городские с кодом из 3 цифр (например, Москва).
+52
Google Maps API
8 min
356KTutorial

Картографический сервис – зачем это? Ну например, я 10 лет жил в нашей маленькой провинции, а потом взял и понаехал в Москву, и всё для меня так ново. А где магазины, боулинг, кафешки, парки отдыха – надо знать же, где тратить московскую зарплату. Но вот беда, как узнать? Раньше был справочник «Желтые страницы» и там была карта и всё по адресам. Чтобы найти что-то уходило масса времени. Сейчас стало всё в разы проще. Вот прекрасный пример: http://www.pushkino.org/. Но это далеко не всё.
Я могу отслеживать погоду, пожары, пробки (кстати!) в реальном времени.
Мой заказчик может не вводить свой адрес, а попросту отметить его на карте и я буду знать куда доставить ему товар – какое классное решение, не надо всего этого – «Проспект маршала Блюхера, 43, г. Санкт-Петербург, Россия».
+69
Тюнинг меню Оперы
2 min
7.4K
+24
PHPLego: Плагины к сайту своими руками
11 min
14K
Доброго утра, дорогие Хаброчитатели!
Хотелось ли вам когда-нибудь сделать модули к сайту ненавязчивыми, такими, чтобы было достаточно положить модуль в папку, и не проделывать больше никакой работы по их подключению. Чтобы однажды написанный блок сайта можно было использовать на новых проектах снова, независимо от их структуры.
В этой статье я хочу поделиться скромным микровелосипедом, который помогает мне в нелегком деле сайтостроительства.
Наше первое знокомство с вами оказалось очень интересным, и я искренне признателен вам, за вашу конструктивную критику. Надеюсь продолжить в том же ключе.
Итак, для себя я сформулировал задачу по следующим криетриям:
1) Каждый модуль должен содержать все необходимое для работы в одной папке — и шаблоны, и модель, и контроллер. Дабы его легко можно было скопипастить, подправить — и вуаля — новый модуль.
2) Модуль ничего не должен знать о тех, кто его создает — все необходимые ему для работы данные он получает через конструктор. Это для того, чтобы модуль работал не только на моем сайте, но и на всех сайтах моих друзей и клиентов без всякого допиливания напильником.
3) Для того, чтобы пользоваться модулем его не должно быть нужно где-либо регистрировать или инклудить дополнительные файлы. Это тупо раздражает.
4) Модуль может состоять из модулей. Т.е. должна быть поддержка вложенных модулей.
5) Ссылки (a href=...) внутри шаблонов модулей должны быть относительными, не зависящими от того, на какой глубине вложенности находится модуль. Чтобы банально не править шаблоны, если мы перемещаем модуль из одного родительского модуля в другой.
6) Сам сайт тоже должен быть модулем, раз уж на то пошло. Дабы можно было купить у друга уже рабочий сайт, положить себе в папку и встроить весь его на какую-нибудь страницу без лишних переделок.
Ну вот, для одной статьи я думаю достаточно, приступим к реализации.
+35
AppStore. Как Bills for iPad стала №1 в США
8 min
4.2KОпыт от тех, кто создал самую продаваемую программу для iPad в США.
Есть много статей о том как зарабатывать деньги на мобильных приложениях в AppStore и Android market. Но сколько разработчиков реально были наверху? Наша программа Bills for iPad в период с 26 по 29 июня 2010 июня была самой продаваемой в AppStore в США программой для iPad.

Как зарабатывать в AppStore? Вот механизмы, которые доступны:
AppStore, по-моему мнению, нацелен именно на доходы от “продажи программ”. Два главных рейтинга, Топ самых скачиваемых программ (Top paid) и Топ самых доходных программ (Top grossing), раздел “новое”, а также разделы AppStore, где Apple выделяет новые интересные программы — все это мотивирует на создание новых, лучших продуктов. Отсюда такое громадное количество программ в магазине — свыше 300,000.
Есть много статей о том как зарабатывать деньги на мобильных приложениях в AppStore и Android market. Но сколько разработчиков реально были наверху? Наша программа Bills for iPad в период с 26 по 29 июня 2010 июня была самой продаваемой в AppStore в США программой для iPad.

Как зарабатывать в AppStore? Вот механизмы, которые доступны:
- Продажа программ.
- Внутренние покупки
- Реклама
AppStore, по-моему мнению, нацелен именно на доходы от “продажи программ”. Два главных рейтинга, Топ самых скачиваемых программ (Top paid) и Топ самых доходных программ (Top grossing), раздел “новое”, а также разделы AppStore, где Apple выделяет новые интересные программы — все это мотивирует на создание новых, лучших продуктов. Отсюда такое громадное количество программ в магазине — свыше 300,000.
+81
Разработка системы управления прайсами за один день. Пример использования eDocLib
4 min
2.5KВозможность самостоятельной настройки системы «под себя», пожалуй, один из важных параметров, влияющих на выбор решения для управления бизнесом. Однако далеко не все системы позволяют сделать все самому и именно так, как это нужно для конкретной компании.
Под катом – пример того, как настроить систему eDocLib для управления прайсами компании, не зависимо от масштабов бизнеса и компетенции сотрудников, занимающихся закупками.
Под катом – пример того, как настроить систему eDocLib для управления прайсами компании, не зависимо от масштабов бизнеса и компетенции сотрудников, занимающихся закупками.
0
PHPLego: Ненавязчивый AJAX
9 min
21K
Здравствуйте дорогие хаброчитатели!
Думали ли Вы когда-нибудь о том, чтобы Ваш сайт одинаково хорошо работал с включенным JavaScript-ом и без JavaScript-а? Чтобы, если JavaScript включен, блоки сайта перегружались AJAX-сом, а если JavaScript-а нет, то происходил просто переход на новую страницу?
Хмм… Я думаю, что это интересная задачка, и вот какое простое решение мне удалось придумать. В этой статье я попытаюсь в общих чертах описать суть этого решения, не вдаваясь особо в неинтересные детали.
Для себя я сформулировал задачу, по следующим критериям:
- Переход по разделам сайта внутри и вне блоков должен осуществляться обычными ссылками, без каких бы то ни было onclick=”…”.
- При включенном JavaScript-е блоки сайта перегружают только свою область страницы (свой div). При выключенном JavaScript-е должен происходить обычный переход по ссылке.
- Должен существовать только один глобальный обработчик нажатия на ссылки $(“a”).click(…), который и делает всю работу по перегрузке нужных элементов страницы. Если же JavаScript отключен, то этот обработчик просто не срабатывает, и сайт продолжает работать в обычном режиме.
- Постинг форм при включенном JavaScript-е также обновляет только ту область, в которой находится эта форма. При отключенном – все работает как обычно.
- Должна быть возможность запретить AJAX-презагрузку некоторым областям страницы, например, поставив им какой-нибудь класс «noajax». Это если после перехода по ссылке меняется слишком много данных на странице, и они все в разных блоках. Тогда разумней перегрузить всю страницу целиком, чем обновлять каждый блочёк по отдельности. Оно и быстрее будет.
- Должна быть возможность указать ссылке блок, который она должна перегрузить. Допустим, если нам нужно перегрузить не только текущий блок, но и блок родитель.
- Если блок был загружен ранее, то он должен браться из кеша, дабы не гонять лишний трафик и не напрягать лишним запросом сервер.
- В случае, если блок загружен из КЭШа, пользователь должен как-то понимать что эта не самая актуальная информация, и иметь возможность обновить блок.
- Никакого JavaScript-a. Это конечно мое личное мнение, но я ненавижу писать на JavaScript-е. Поэтому я добавил еще один пункт. Смысл его в том, чтобы разрабатывая модули к сайту я не писал ни строчки JavaScript-а (ну максимум одну-две на модуль, и то для каких-нибудь чекбосов в форме). Не знаю, как ты, дорогой хаброчтец, но я, твою мать, лучше продам свою душу дьяволу, чем буду дебажить свой JavaScript во всех многообразиях браузеров!
Ну, вот собственно и все пожелания. Итак, приступим к реализации…
+53
Входите! Вход без логина и пароля
8 min
21KКто виноват?
Одна из часто встающих задач при разработке web-проектов — пустить пользователя на сайт без ввода логина и пароля, при этом авторизовав его.
Вот некоторые примеры таких ситуаций:
- Ссылка на активацию аккаунта только что зарегистрированным пользователем.
- Ссылка на восстановление пароля.
- Приглашение (возвращение) на сайт пользователя, который давно не заходил.
В каждом из этих случаев нам нужно создать для пользователя некий ключ и добавить его в URL, отправленный в письме.
+66
Определение кодировки текста в PHP — обзор существующих решений плюс еще один велосипед
7 min
105KСтолкнулся с задачей — автоопределение кодировки страницы/текста/чего угодно. Задача не нова, и велосипедов понапридумано уже много. В статье небольшой обзор найденного в сети — плюс предложение своего, как мне кажется, достойного решения.
Если кратко — он не работает.
1. Почему не mb_detect_encoding() ?
Если кратко — он не работает.
+93
С чего начинается СДЛ-сайт
4 min
3.5KВполне понятно, что просто сделать сайт — мало. Нужно позаботиться о его развитии и привлечении целевой аудитории.
Хочется сразу объяснить разницу между «подлыми сеошниками» и грамотными оптимизаторами, занимающимися продвижением сайтов.
Для меня продвижение сайта — это работа по привлечению на сайт целевой аудитории и ее удержание для совершения посетителями определенных действий.
Исходя из второй части определения, перед тем, как приглашать на сайт посетителей, нужно подготовить его к их приходу и сделать максимально удобный ресурс.
Основная задача подготовки – однозначно убедить посетителя, что вы решаете проблему, с которой пришел посетитель. Условно говоря, продавать ЖК-телевизоры можно по-разному: вы можете просто предоставить список моделей с характеристиками и пусть покупатель сам с этим разбирается, а если вы решаете задачу, которая называется «индивидуальный домашний кинотеатр под ключ», подбираете под своего покупателя нужное оборудование, снабжаете его кабелями и настраиваете на дому, и под завязку дарите ему DVD с новым фильмом – вы решаете его проблему и повышаете свой авторитет.
Короче говоря, точек зрения на то, каким должен быть сайт – куча: у программиста, дизайнера, владельца и прочих завязанных в этой работе – своя. Но мы-то его для людей делаем?
Хочется сразу объяснить разницу между «подлыми сеошниками» и грамотными оптимизаторами, занимающимися продвижением сайтов.
Для меня продвижение сайта — это работа по привлечению на сайт целевой аудитории и ее удержание для совершения посетителями определенных действий.
Исходя из второй части определения, перед тем, как приглашать на сайт посетителей, нужно подготовить его к их приходу и сделать максимально удобный ресурс.
Основная задача подготовки – однозначно убедить посетителя, что вы решаете проблему, с которой пришел посетитель. Условно говоря, продавать ЖК-телевизоры можно по-разному: вы можете просто предоставить список моделей с характеристиками и пусть покупатель сам с этим разбирается, а если вы решаете задачу, которая называется «индивидуальный домашний кинотеатр под ключ», подбираете под своего покупателя нужное оборудование, снабжаете его кабелями и настраиваете на дому, и под завязку дарите ему DVD с новым фильмом – вы решаете его проблему и повышаете свой авторитет.
Короче говоря, точек зрения на то, каким должен быть сайт – куча: у программиста, дизайнера, владельца и прочих завязанных в этой работе – своя. Но мы-то его для людей делаем?
-16
Веб-слайсы
6 min
2.3KTranslation
Существуют четыре вида действий с веб-слайсами:
- Находка: пользователь находит веб-слайс на странице и добавляет его.
- Обновление: Internet Explorer использует механизм загрузки ленты для периодической проверки изменений веб-слайса.
- Уведомление: Когда веб-слайс обновляется, его текст в панели Избранное становится жирным.
- Отображение: пользователь может просмотреть изменения веб-слайса нажав на него на панели Избранного.
+14
Сторожевой пёс следит за вами (мониторинг хостинга)
4 min
15KВнимание! Данная статья для web-программистов — содержит исходники и техн. подробности.
У Вас было такое – что простой вопрос повергал Вас в ступор и глубокие раздумья? У меня такое случается каждый раз, когда клиенты или друзья спрашивают меня:
И ответить нечего, потому что все (все!) наши замеры не в пользу хостинговых компаний, даже никого конкретно приводить не буду — сами сможете проверить, выполнив рекомендации в этой статье.
Казалось бы, где зарыта собака? Ведь для нас хостинг – это одна из любимейших мозолей, на которую часто наступают, потому что мы – SEOнизаторы. Мы трудимся – чтобы выводить свои сайты и клиентов в топы, а плохой и нестабильный хостинг распугивает сканирующих роботов Яндекса, Гугла и иже с ними. Впрочем, часто хостинг валится и днём, особенно во время пиковых нагрузок около 18:00 из-за наплыва в Интернете зевак под вечер.
Вот самое простое, что бывает – сайт исправно работает днём, пока бдит саппорт хостера. А ночью иногда исправно «лежит» в нокдауне. Например, скрипты хостера делают бекапы и все перегружено. Клиенты спят, покупатели спят, сайт спит. Все довольны, кроме поисковых пауков.
Первое, что мы сделали – купили свой дорогой сервер и отвезли его к Каравану (спасибо ребятам за отличное качество колокейшн). Но сервер у нас не резиновый, и как услугу хостинг мы не предоставляем. Поэтому пустить всех наших и не можем.
Чтобы как-то контролировать ситуацию – я написал пару лет назад монитор стабильности хостинга. Сейчас, когда у нас уже много других конкурентных преимуществ – мы готовы выложить исходники и алгоритм работы для Хабраобщественности, чему и посвящен этот пост.

— Андрей, какой хостинг порекомендуешь для нашего сайта?
И ответить нечего, потому что все (все!) наши замеры не в пользу хостинговых компаний, даже никого конкретно приводить не буду — сами сможете проверить, выполнив рекомендации в этой статье.
Казалось бы, где зарыта собака? Ведь для нас хостинг – это одна из любимейших мозолей, на которую часто наступают, потому что мы – SEOнизаторы. Мы трудимся – чтобы выводить свои сайты и клиентов в топы, а плохой и нестабильный хостинг распугивает сканирующих роботов Яндекса, Гугла и иже с ними. Впрочем, часто хостинг валится и днём, особенно во время пиковых нагрузок около 18:00 из-за наплыва в Интернете зевак под вечер.
Вот самое простое, что бывает – сайт исправно работает днём, пока бдит саппорт хостера. А ночью иногда исправно «лежит» в нокдауне. Например, скрипты хостера делают бекапы и все перегружено. Клиенты спят, покупатели спят, сайт спит. Все довольны, кроме поисковых пауков.
Первое, что мы сделали – купили свой дорогой сервер и отвезли его к Каравану (спасибо ребятам за отличное качество колокейшн). Но сервер у нас не резиновый, и как услугу хостинг мы не предоставляем. Поэтому пустить всех наших и не можем.
Чтобы как-то контролировать ситуацию – я написал пару лет назад монитор стабильности хостинга. Сейчас, когда у нас уже много других конкурентных преимуществ – мы готовы выложить исходники и алгоритм работы для Хабраобщественности, чему и посвящен этот пост.
+53
Запрещаем использование известных UserJS
4 min
2KВведение
UserJS предоставляет пользователям удобный и простой механизм модификации веб-страниц, именно благодаря этому многие пользователи автоматизирую свои действия с помощью UserJS, а иногда и обходят слабые системы защиты.
Больше всего от использования UserJS пользователями страдают браузерные онлайн-игры, многие из которых уже начали войну против UserJS. Так, например, в игре Travian используются поддельные скрытые веб-формы, которые иногда появляются вместе с обычными, UserJS-скрипты, написанные без учета этой особенности, ошибаются и отправляют данные через фэйковую форму, за что игрок немедленно получает наказание.
Хотелось бы сразу отметить, что бороться можно только с известными UserJS-скриптами, показанное решение не универсально и не может защитить от любого скрипта.
Сегодня я представляю на ваш суд свой метод борьбы с пользовательскими скриптами — MD5-хэширование с последующим сравнением. Основные действующие роли играют JavaScript и PHP.
-1
Подборка роликов о создании макета дизайна и сайта в Adobe Fireworks
3 min
18KЧто такое Fireworks и зачем он нужен

Я сам не являюсь веб-дизайнером, я программист. Основные задачи, которые я решаю с помощью графического редактора — это минимальная модификация растровой и векторной графики, нарезка готового дизайна, оптимизация изображений, создание прототипов и т.п. Photoshop и Illustrator без проблем решают эти задачи, однако их в состоянии решить и Fireworks. А теперь вспомним про стоимость Photoshop + Illustrator (700$ + 600$) и сравним со стоимостью Fireworks (300$).
Частенько бывает, что Fireworks не справляется с отображение родных файлов Photoshop и Illustrator. Возникают глюки с отображением некоторых эффектов. В таких случаях обычно помогает эталонный скриншот, который позволяет понять где проблема и при возможности исправить ее. Также есть альтернативные редакторы (Gimp, Pixelmator), которые открывают исходный файл, но уже со своими глюками, которых нет в Fireworks.
Таким образом, вряд ли Fireworks заинтересует дизайнеров, уже работающих в Photoshop, его основные пользователи — это программисты, верстальщики, проектировщики и небольшая часть дизайнеров (во всяком случае в России).
Подборка роликов о Fireworks
Покопавшись в рунете на предмет наличия видео о Fireworks на русском языке я наткнулся на некий вакуум. Все имеющиеся ссылки вели на Youtube. Вот к нему я обратился, а результаты поиска под хабракатом. Кому будут интересны эти ролики? Прежде всего программистам, отчасти верстальщикам, которые хотят понять как создается веб-дизайн и почему им не всегда нужен Photoshop.
+31
Создание сайта из готовых компонентов на примере сайта заказа еды в офис
14 min
8.7KВ окрестностях нашего офиса нет приличного общепита, поэтому обеды нам привозят на заказ из одного кафэ. Заказ осуществляется за день (на понедельник заказ делается с пятницы), по телефону, с перечислением всех блюд и их количества (в случае если заказ не изменился относительно вчерашнего достаточно просто сказать это). Как компания, занимающаяся разработкой ПО, преимущественно веб, мы до недавнего времени жили по принципу «Сапожник без сапог», и весь учет заказов велся ответсвенным за заказ еды человеком на листочке, в случае изменения заказа нужно было писать письмо этому ответственному человеку, а он уже пересчитывал общий заказ.
Выкроив немного свободного времени в перерыве между проектами реализовал (именно реализовал, а не написал — почему именно так, расскажу немного ниже) систему для заказа еды. За основу, как нетрудно догадаться исходя из тематики блога, была взята CMS Drupal, которая является моим основным инструментом уже около полутора лет.
Цели данного топика:
Итак, что должно быть реализовано в проекте:
Выкроив немного свободного времени в перерыве между проектами реализовал (именно реализовал, а не написал — почему именно так, расскажу немного ниже) систему для заказа еды. За основу, как нетрудно догадаться исходя из тематики блога, была взята CMS Drupal, которая является моим основным инструментом уже около полутора лет.
Цели данного топика:
- Показать новичкам на довольно простом примере, как создается сайт невысокой сложности на CMS Drupal
- Кратко расказать про несколько основных модулей — как правило они применяются в 90% проектов на друпале
- Показать как можно собрать сайт на друпале из готовых компонентов, не написав при этом ни одной строчки кода (на самом деле будет пара строк кода, но немного не в том виде, как он обычно пишется =))
Итак, что должно быть реализовано в проекте:
- Меню — список блюд, разделенных на категории, с возможностью описания блюд
- Индивидуальные заказы — пользователь может сделать и заказ, просмотреть его содержимое и изменить
- Сводный заказ — список всех заказаных пользователями блюд с указанием их количества
- Возможность делиться впечатлениями о блюдах — тут просто возможность комментирования и рейтингования
+88
Модуль для кулинарного сайта
2 min
2.4KПривет %username%,
В ответ на «Нетривиальная задача для Node Reference поля Drupal», решил подпилить для кулинарии один из кастомных модулей.
В ответ на «Нетривиальная задача для Node Reference поля Drupal», решил подпилить для кулинарии один из кастомных модулей.
+10
Information
- Rating
- Does not participate
- Location
- Украина
- Date of birth
- Registered
- Activity