Search
Write a publication
Pull to refresh
92
0
Сергей @SkyManPHP

User

Send message

Улучшаем юзабилити за 5 минут

Reading time4 min
Views7.3K
В этой блогозаписи я намерена поделиться несколькими такими советами по увеличению юзабилити сайта, каждый из которых очень лёгок в реализации. Не все они кросс-браузерны, но всё равно они «глазурь на тортике»: читатель и не заметит, что их нет.

1. Отображайте нажатия кнопок и кнопкоподобных ссылок


Мой излюбленный совет. Когда стиль кнопки задаётся в CSS, или когда для отображения необычной кнопки используется рисунок (либо как фон, либо как элемент <img />), то кнопка не реагирует на нажатие во всех или в некоторых браузерах (зависит от ситуации). Вот какой простой уловкою вы можете дать знать посетителю сайта, что он и впрямь нажал на нечто нажимаемое:

.mybutton:active {
   position: relative;
   top: 1px;
   left: 1px;
}

Этим кодом кнопка смещается на 1 пиксел направо и на 1 пиксел вниз, когда её нажимают. Испробуйте: выглядит весьма убедительно.

Есть другие, не менее быстрые варианты: придать границе свойство inset, указать свойству text-indent значение 1px, изменить направление градиентного фона (что можно сделать быстро, если для этого не придётся прибегнуть ко графическому редактору, то есть если где-то ещё на сайте используется готовый перевёрнутый градиент), или комбинация нескольких из них.

2. Плавные переходы (CSS3 transitions)


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

CSS3: жизнь без префиксов

Reading time4 min
Views24K
Префиксы вещь хорошая. Они помогают производителям браузеров в реализации новых возможностей. Но жизнь разработчиков от них становится только сложнее. Префиксов много, иногда наблюдаются различия в синтаксисе.

Проблема очевидна. Нужен способ облегчить работу с префиксами.

Естественно, перестать использовать префиксы было бы неразумно. Но переложить обязанность по их генерации на существующие специально для этого инструменты вполне возможно. Я попробовал перечислить возможные варианты.
Читать дальше →

Plugin Detector — каталог и рейтинг плагинов jQuery

Reading time6 min
Views5.6K
Последние четыре года я работал верстальщиком в разных питерских веб-студиях.

От полуподвальных контор из 3-5 человек до больших фирм 25-40 человек, работающих на рынке дорогих сайтов для крупных заказчиков. Но независимо от размера компании задачи были одни и те же.
  • нужно продать дизайн
  • сделать сайт, который не стыдно положить в портфолио
  • сделать оригинально, как еще не делали конкуренты

Таким образом, задачи верстальщикам и дизайнерам ставились одинаковые: «давайте что-то креативное, свежее, интересное».

Я очень хорошо понимаю верстальщиков, дизайнеров и владельцев веб-студий, поэтому чтобы облегчить им поиск плагинов под готовый функционал и в то-же время показать что-то свежее, чего еще многие [возможно] не видели, решил уволиться отовсюду, и запустить проект Plugin Detector



В этой статье будет затронуто:
описание функционала, история создания, маркетинг в бизнесе веб-студий и работа с клиентами

Пользовательские атрибуты в Python

Reading time11 min
Views192K
Вы когда нибудь задумывались о том, что происходит, когда вы ставите точку в python? Что скрывает за собой символ str(“\u002E”)? Какие тайны он хранит? Если без мистики, вы знаете как происходит поиск и установка значений пользовательских атрибутов в python? Хотели бы узнать? Тогда… добро пожаловать!
Читать дальше →

BIND: храним зоны в mysql (Dynamically Loadable Zones — BIND DLZ)

Reading time4 min
Views15K
Возможность Berkeley Internet Name Daemon (BIND) хранить зоны DNS в базе mysql не шибко известна и крайне плохо документирована. Документация заморожена на моменте включения отдельного патча DLZ в основную ветку BIND, а это BIND 9.4.* и 2005-2006 годы. Я постараюсь хотя бы частично восполнить этот пробел, выложив под хабракатом рабочие на данный момент инструкции с примерами. Мое описание совершенно не претендует на полноту, но простейшую зону прописать позволит.
Отдельно хочу заметить, что DLZ поддерживает не только mysql, список поддерживаемых хранилищ также под хабракатом.
Читать дальше →

Открыт репозиторий с играми для Ubuntu 10.04, 10.10, 11.04, 11.10

Reading time1 min
Views9.8K
Вчера на сайте UALinux появилась новость о том, что они подготовили репозиторий с играми для Убунты. Репозиторий содержит 250 игр разного жанра: их можно установить кнопочкой на сайте, или же привычно добавить репозиторий и ставить пакеты.
Сами игры в большинстве своем довольно примитивные: в мире есть уже много чего гораздо круче восстаний антропоморфных кроликов, или шариков в лабиринте, но есть игры из детства, портированные с консоли, аналоги старых добрых Worms, несколько «гоночек» и еще много чего интересного. Ну и, самое главное, что все игры доступны бесплатно: подключай репозиторий, ставь и играй.
Несколько игрушек, кстати, уже есть есть в дистрибутиве самой убунты, но в репозитории версии новее.
В общем, удачного убивания времени.

PS: Судя по комментам к моим предыдущим постам, на Хабре живут люди из UALinux. Поэтому, думаю, можно оставить в комментариях названия игр, которых не хватает в репозитории, но хотелось бы их там видеть.

Резервное копирование данных в MySQL

Reading time5 min
Views151K
Резервное копирование базы данных — это такая штука, которую вечно приходится настраивать для уже работающих проектов прямо на «живых» production-серверах.
Подобная ситуация легко объяснима. В самом начале любой проект еще пуст и там просто нечего копировать. В фазе бурного развития головы немногочисленных разработчиков заняты исключительно прикручиванием фишек и рюшек, а также фиксом критических багов с дедлайном «позавчера». И только когда проект «взлетит», приходит осознание, что главная ценность системы — это накопленная база данных, и её сбой станет катастрофой.
Эта обзорная статья — для тех, чьи проекты уже достигли этой точки, но жареный петух ещё не клюнул.
Читать дальше →

Парсер PSD файлов на CoffeeScript

Reading time2 min
Views5.7K

Автор скрипта psd.js — Райан Лефевр. Скрипт, как вы уже догадались, умеет открывать photoshop документы, как в браузере, так и на стороне Node.js.

Демонстрация возможностей (ранняя beta, не удивляйтесь, что некоторые файлы не откроются. На github странице проекта многие жалуются на это).

Пример вывода информации на Node.js:
{PSD} = require 'psd.js'
 
psd = PSD.fromFile './path/to/file.psd'
psd.parse()
 
for layer in psd.layerMask.layers
console.log "Layer: #{layer.name}"
console.log "Size: width=#{layer.cols}, height=#{layer.rows}"
console.log "Position: top=#{layer.top}, left=#{layer.left}"

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

Автоматическое оповещение читателей о новостях с помощью ВКонтакте. Часть 4

Reading time2 min
Views15K
На хабре уже было несколько статей о работе с вконтактом (раз, два, три), однако оно производилось через простые запросы на страницы с последующим ее парсингом. Это ужасно неправильно, так как если верстка страницы либо порядок запросов поменяется — скрипт перестанет работать. Кроме того, если не ошибаюсь, это запрещено правилами сайта.
Для этого есть официальный API от вконтакте.

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

Пишем простой плагин для Sublime Text 2

Reading time3 min
Views33K
Введение

Странно, но поискав на Хабре упоминания текстового редактора Sublime Text 2 я почти ничего не нашел. Спешу исправить положение и рассказать хабраюзерам об этом прекрасном инструменте. Вначале очень коротко расскажу о том чем же он так хорош, потом напишем простой но полезный плагин.
Читать дальше →

Пишем справочник по математике под Android, подключаем рекламу Begun

Reading time20 min
Views27K
Здравствуйте, уважаемые Хабровчане! Вы видели немало постов на тему разработки под android. В данном посте я попытаюсь наиболее подробно изложить свой небольшой опыт разработки под эту ОС.

Небольшое вступление


Проанализировав маркет я понял, что на нем очень много игр, развлекательных и социальных приложений. По-настоящему нужных приложений очень мало, поэтому я решил сделать «карманный» справочник по высшей математике с удобной навигацией по темам, состоящий из трех разделов: математический анализ, аналитическая геометрия, теория вероятностей. Далее обо всем по порядку.
Читать дальше →

Работающий Pull to refresh

Reading time3 min
Views13K
Это рассказ о том, как получилась работающая реализация Pull to refresh под Android. Совсем не будет примеров кода. Немного картинок и в конце статьи ссылка на архив проекта.

Недавно встала необходимость встроить в текущее приложение Pull to refresh. Это сейчас модно, пользователи привыкли, и для твиттер-клиентов уже стало стандартом. Поиск готовых решений в сети вывел на единственный вариант — open-source проект Johan Nilsson android-pulltorefresh на Github.



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

Поставщики содержимого. Взаимодействие с контактами

Reading time4 min
Views4.9K
image
Доброго времени суток, уважаемые Хабровчане!

Как все вы знаете — Android это потенциально развивающаяся и конкуретноспособная операционная система. Разработчиков под эту систему с каждым днем ставновится все больше и больше. Хоть я и начинающий разработчик под Android, я не буду рассказывать вам, как установить Eclipse и ADT под него.

В этом топике я хотел бы рассказать о поставщиках содержимого в операционной системе Android и привести небольшой пример работы с одним из них.

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

Angry Birds стали веб-приложением

Reading time1 min
Views3.8K


На конференции Google I/O компания Rovio презентовала веб-версию Angry Birds, основанную на WebGL. Она «брендированная» (расположена по адресу chrome.angrybirds.com и снабжена логотипом Хрома), но запускается и в других браузерах. Впрочем, вот тут вошедшая в поговорку скорость Chrome становится настоящим конкурентным преимуществом — от нее теперь зависит количество FPS.
Игра уже была добавлена в Chrome Web Store.

Google также объявил на I/O о введении покупок внутри веб-приложений из Chrome Web Store, установив комиссию всего лишь в 5% (за что удостоился овации от разработчиков), и в Angry Birds обещаны такие внутриигровые товары (например, Mighty Eagle).

Прогнозирую снижение производительности труда офисных работников вдвое.
И появление множества постов «вот теперь пора устраивать похороны флэша».

Update: у многих после 20-го уровня не загружался 21-й, но, как сообщается, это уже исправлено. Кроме того, у части макюзеров забавная проблема: игра работает во всех браузерах, кроме Хрома.

Проверка кармы пользователя сайта habrahabr.ru с помощью Python на Android

Reading time2 min
Views25K
Я очень люблю язык программирования Python и так же люблю Android OS. Для меня было приятным открытием, что для этой ОС существует полноценный интерпретатор Python, но я постоянно откладывал знакомство с ним. В этой статье я хочу рассказать про основные принципы программирования на этом языке под эту ОС.

SL4A

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

Драммофон: портативная цифровая ударная установка

Reading time5 min
Views9K
Добрый день, уважаемые хабровчане. Пока следующая статья про микроконтроллеры STM32F в процессе написания, я решил поделиться с вами моим старым проектом, собранным еще на AVRках. Честно говоря, меня не слишком тянуло возвращаться к теме AVR, но т.к. я недавно раскопал старые материалы по своим проектам, я решил что лучше будет поделиться ими с общественностью. Проект очень простой, а результат, на мой взгляд, довольно интересный, что делает это устройство хорошим стартом для новичков. В общем, если кто желает повторить – добро пожаловать под кат, начинаем делать цифровую портативную ударную установку.
Читать дальше →

Лого тостер за 5 минут

Reading time1 min
Views9K


Увидел я вот такой тостер. И загорелся сделать что то подобное своими руками. Для того чтобы каждое утро радовать своих близких разными картинками на тостах. Оказалось, что это довольно таки просто.
Нам понадобится: алюминиевая банка, и простые инструменты.
Читать дальше →

Масштабируемые JavaScript приложения

Reading time22 min
Views40K
Более месяца назад в статье FAQ по JavaScript: задавайте вопросы был задан вопрос «Подскажите примеры хорошего подхода организации JS кода к сайту на достаточно высоком уровне. Как можно узнать подробнее практики реализации например gmail?».

Пришло время ответить на данный вопрос. Я немного затянул т.к. хотел рассказать доклад на одноименную тему на Я.Субботнике. Доклад был очень коротким многие важные моменты пришлось выкинуть. Статья — более-менее полная версия.

Эта статья о том, как сделать крупное веб-приложение расширяемым и поддерживаемым: архитектура, подходы, правила.
Читать дальше →

Оригинальный способ хранения изображений флагов

Reading time1 min
Views3.6K
Поставил сегодня я новую бета версию Skype и заодно решил посмотреть старым добрым Restorator'ом какие ресурсы (картинки в частности) содержит 25 мегабайтный файл. И наткнулся на очень интересный способ хранения флагов стран:


Upd: Рисунок оригинальный, ничего не менял, только прозрачные области белым цветом залил.

Плагин для «живых» форм

Reading time4 min
Views15K
Статья посвящена плагину, который упрощающает жизнь client-side программиста.

При заполнении формы случается так, что учитывая введенные данные, форму нужно менять (прятать и показывать поля). Простейший пример: при заказе доставки товара пользователь выбрал «самовывоз», значит поля про адрес доставки можно спрятать, зато было бы здорово показать карту проезда для самовывоза.

И что дальше

Часто такая логика остается без реализации, однако если вы заботитесь о своих пользователях, то делать это нужно.

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

Второй подход это писать «портянки» javascript'а который всю эту логику реализует на стороне клиента. Особенно грустно писать «каскадную» логику типа «если ввели a в поле A, показать B, если ввели c в поле B, то показать D. Если в A ввели что-то другое, спрятать B, а потом D».

Оба варианта нельзя назвать удобными. Прежде всего потому что логика реализуется императивным стилем вместо уместного для таких случаев декларативного. Но выход есть!
Читать дальше →

Information

Rating
Does not participate
Location
Украина
Registered
Activity