Search
Write a publication
Pull to refresh
0
Richard_Ferlow @Richard_Ferlowread⁠-⁠only

User

Send message

Введение в HTML5 History API

Reading time4 min
Views242K
До появления HTML5 единственное, что мы не могли контролировать и управлять (без перезагрузки контента или хаков с location.hash) — это история одного таба. С появлением HTML5 history API все изменилось — теперь мы можем гулять по истории (раньше тоже могли), добавлять элементы в историю, реагировать на переходы по истории и другие полезности. В этой статье мы рассмотрим HTML5 History API и напишем простой пример, иллюстрирующий его возможности.

Основные понятия и синтаксис


History API опирается на один DOM интерфейс — объект History. Каждый таб имеет уникальный объект History, который находится в window.history. History имеет несколько методов, событий и свойств, которыми мы можем управлять из JavaScript. Каждая страница таба(Document object) представляет собой объект коллекции History. Каждый элемент истории состоит из URL и/или объекта состояния (state object), может иметь заголовок (title), Document object, данные форм, позиция скролла и другую информацию, связанную со страницей.

Основные методы объекта History:
  1. window.history.length: Количество записей в текущей сессии истории
  2. window.history.state: Возвращает текущий объект истории
  3. window.history.go(n): Метод, позволяющий гулять по истории. В качестве аргумента передается смещение, относительно текущей позиции. Если передан 0, то будет обновлена текущая страница. Если индекс выходит за пределы истории, то ничего не произойдет.
  4. window.history.back(): Метод, идентичный вызову go(-1)
  5. window.history.forward(): Метод, идентичный вызову go(1)
  6. window.history.pushState(data, title [, url]): Добавляет элемент истории.
  7. window.history.replaceState(data, title [, url]): Обновляет текущий элемент истории
Читать дальше →

Простой способ управления удалёнными устройствами

Reading time4 min
Views23K
Что хотелось:

  • при завершении задачи в jenkins выводить уведомление на компьютере и как дополнение — вывести его на физический дисплей, подключенный к arduino;
  • интерфейс, который можно открыть на телефоне или планшете, для управления проигрывателем музыки на компьютере и видеоплеером на raspberry pi;
  • интерфейс, доступный снаружи локальной сети, для вывода значения с датчиков, установленных на arduino.

Что получилось:

  • клиент, запускаемый на устройстве, с декларацией методов на python;
  • RESTful api для запуска «методов»(картинка справа выведена через него);
  • «панели управления» с web-интерфейсом;
  • сервис для управления устройствами, методами и панелями.

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

JavaScript обёртка скроллбара в виде jQuery плагина

Reading time6 min
Views68K
Проблема стилизации скроллбара браузера до сих пор актуальна, несмотря на огромное количество скриптов, предназначенных для решения данной задачи. Рассмотрим реализацию стилизуемого скроллбара, максимально приближенного к родному поведению браузера.

Существует два основных подхода для стилизации скроллбара средствами HTML/CSS, каждый из которых имеет свои плюсы и минусы:

  • Эмуляция скролла средствами JavaScript
  • JavaScript обёртка над родным скроллом

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

Делаем жизнь проще, GruntJS (для новичков)

Reading time5 min
Views84K

Что такое GruntJS


Большинство JS разработчиков уже используют какие-то инструменты компоновки для своих разработок, даже если не знают или не используют этот термин. Они объединяют файлы при разработке, уменьшают код JavaScript-а, чтобы ускорить загрузку страниц и конвертировать Sass, или уменьшают количество файлов в CSS для браузера, и много чего другого. Чаще всего это разные инструменты, что есть не очень удобно.

Grunt помогает управлять всеми этими шагами в одном месте и организовать сторонние компоненты.
Читать дальше →

Uploadcare — файловое хранилище для сайтов и приложений

Reading time3 min
Views14K
image
Привет! Хочу рассказать о проекте, который наверняка окажется полезным многим разработчикам. В двух словах объяснить, зачем он нужен, достаточно сложно, но я попробую. Uploadcare — сервис для приложений и сайтов, упрощающий получение файлов от пользователей, их хранение и передачу по сети.

Тот, кто хоть раз делал форму с <input type="file">, знает, что ничего сложного в этом нет, но есть неприятные моменты, возникающие по пути. Вот только некоторые из них:

— нельзя сохранить форму с файлом по ajax;
— нельзя показать форму с уже выбранным файлом;
— если вы ожидаете картинку, нужно убедиться, что загружена картинка;
— сервер должен быть готов принимать большое тело запроса;
— в некоторых фреймворках загруженный файл является источником повышенной опасности;
— удобная загрузка нескольких файлов реализуется достаточно сложно;
— индикация процесса загрузки реализуется еще сложнее;
— на диске сервера может закончиться место;
Читать дальше →

02 — «Тонкий» клиент и «толстый» сервер

Reading time3 min
Views35K
Всем отличного дня! В прошлом выпуске нашего блога мы рассказывали о том, что такое виртуализация и как она работает в общих чертах. Сегодня поговорим о железе, на котором крутится все это великолепие.

image
Поехали!

PHP HTML DOM парсер с jQuery подобными селекторами

Reading time3 min
Views146K
Добрый день, уважаемые хабровчане. В данном посте речь пойдет о совместном проекте S. C. Chen и John Schlick под названием PHP Simple HTML DOM Parser (ссылки на sourceforge).

Идея проекта — создать инструмент позволяющий работать с html кодом используя jQuery подобные селекторы. Оригинальная идея принадлежит Jose Solorzano's и реализована для php четвертой версии. Данный же проект является более усовершенствованной версией базирующейся на php5+.

В обзоре будут представлены краткие выдержки из официального мануала, а также пример реализации парсера для twitter. Справедливости ради, следует указать, что похожий пост уже присутствует на habrahabr, но на мой взгляд, содержит слишком малое количество информации. Кого заинтересовала данная тема, добро пожаловать под кат.
Читать дальше →

Повторяющийся зубчатый фон на CSS

Reading time2 min
Views45K


Давно на хабре не было постов про CSS и я решил восполнить этот пробел. Сегодня мы учимся готовить зубчатый фон используя только средства CSS и никаких изображений!

Важные требования к такому забору:

  • Никаких изображений!
  • Он должен спокойно тянуться по горизонтали
  • Обязательно должен поддерживать неравномерный фон у подложки
  • Фон не должен требовать никакой экстра-разметки. Лучше всего будет избегать псевдо-элементов (экономия — хорошо).

Поддерживаемые браузеры: Chrome, Firefox (> 3.6), Opera (>= 12), Safari (>= 5), IE10.

Для IE 7, 8 у нас будет фоллбэк в виде обычной заливки. А вот с IE9 проблема — он не поддерживает градиенты, но при этом понимает hsla и rgba цвета. Воистину «великолепный» браузер. Что ж, его пока придётся игнорировать. Если кто–то подскажет хороший фоллбэк для IE буду только благодарен.
Читать дальше →

LibreOffice в корпоративном секторе — от теории к практике

Reading time4 min
Views37K

LibreOffice в корпоративном секторе — к старту готов


Есть на Хабре такая хорошая статья за авторством frozer, в которой рассматривается развертывание (с помощью Active Directory) и использование LibreOffice (LO) в корпоративной среде.

Единственный минус статьи — только теоретический подход. Т.е. автор описывает что можно сделать для корпоративной интеграции LO, но практическая часть отсутствует, как таковая.

Я пытался узнать секреты и получить советы на официальном русскоязычном форуме LO, и вот что получил в ответ:
Есть самый эффективный путь.
Скомпильте из иисходников под себя. Или заплатите тому, кто это сделает.
Это явно не тот метод. В интернете информации тоже очень мало, поэтому будем восполнять пробелы.

Инструкция — под катом.
Читать дальше →

Ресурсы, о которых должен знать каждый Android-разработчик

Reading time6 min
Views189K
Сегодня я хочу поделиться с вами моим вольным переводом статьи, написанной Сергеем Повзнером (Sergey Povzner). Сергей ведёт блог bongizmo.com и занимается разработкой туристических гидов под общим названием Citybot.

В то время как Android продолжает свой невероятный рост, всё больше и больше программистов начинают разрабатывать приложения на этой платформе. Если ты начинаешь свой путь сегодня, то ты определенно — счастливчик. За последние годы Android значительно повзрослел и избавился от множества детских болезней. Информации по платформе более чем достаточно. Я же расскажу о самых важных ресурсах.

Статья будет полезна как новичкам, так и опытным разработчикам. Это гид по миру Android-разработки.
Читать дальше →

Codeacademy анонсировала курс по изучению PHP

Reading time1 min
Views16K


Прислушавшись к многочисленным просьбам команда Codeacademy выпустила курс по изучению PHP — одного из самых популярных языков программирования.

$action = $_GET['PHP Courses'];

К сожалению, сейчас есть только базовый курс PHP и Codeacademy призывает всех помочь дальнейшему развитию курса PHP.

Рекомендации по созданию сайтов, оптимизированных для смартфонов

Reading time3 min
Views15K
Уровень подготовки веб-мастера: любой

Люди все чаще предпочитают пользоваться смартфонами, и все больше сайтов оптимизируют свой контент для просмотра на этих устройствах. С тех пор как мы последний раз говорили о дизайне сайтов для мобильных платформ, нам удалось значительно улучшить поддержку их содержания. Так, ещё в декабре 2011 года был запущен робот Google для мобильных сайтов, который обрабатывает именно такой контент.
Сегодня мы хотим дать вам рекомендации по созданию и оптимизации сайтов, чтобы они одинаково хорошо отображались как на обычном компьютере, так и на смартфоне.

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

Sony SmartWatch, 7 приложений мечты

Reading time3 min
Views70K


Предисловие


На днях вышло в свет обновление для часов Sony Smart Watch, и я, как наверное и большинство обладателей сего девайса, решил в очередной раз заглянуть в гуглмаркет для поиска интересных, а главное полезных приложений для часов. Автор обзора обновления сообщил — приложений уже порядка 200, что меня сильно обрадовало, и я кинулся просматривать все подряд. Но, потратив не один час, я в итоге установил лишь одно, которое в итоге меня все равно частично разочаровало. Неужели нет приложений, которые действительно могут раскрыть потенциал связки «Часы — Телефон»? Ведь именно их отсутствие вынудило меня забросить эти часы через пару недель после покупки. Или же сам принцип такой связки в реальной жизни малоперспективен и годен лишь для проверки твиттера с часов? Задавшись этими вопросами, я как дизайнер (от слова design — проектировать), решил устроить небольшой брейнсторм на тему «Приложения, которые смогут раскрыть потенциал связки SmartWatch + Телефон».
Что же из этого вышло?

Бесплатный Wi-Fi, с небольшой изюминкой

Reading time7 min
Views50K
Данная статья повествует о небольшом проекте бесплатной Wi-Fi сети, об основных технических проблемах и решениях. Цель – просто рассказать о достаточно оригинальном проекте.

Чуть меньше года назад, моё руководство решило на территории организации развернуть сеть бесплатного Wi-Fi для посетителей. Все было бы просто и прозаично, если бы не одно интересное условие: прежде чем пользователь попадет в Интернет, он должен посмотреть информационную страницу, с нашей «рекламой».

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

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

Как начать работать с GitHub: быстрый старт

Reading time6 min
Views1.3M


Распределенные системы контроля версий (DVCS) постепенно замещают собой централизованные. Если вы еще не используете одну из них — самое время попробовать.

В статье я постараюсь показать, как можно быстро начать экспериментировать с git, используя сайт github.com.

В статье не будут рассмотрены различия между разными DVCS. Также не будет детально рассматриваться работа с git, по этой теме есть множество хороших источников, которые я приведу в конце статьи.
Читать дальше →

Почтовыйбланк.рф — сосредоточьтесь на любимом деле, а вопросы с почтой России решим именно мы!

Reading time2 min
Views18K

Привет, Друзья!


Недавно нам потребовалось отправить порядка 25 отправлений почтой России за раз. Мы искренне хотели сократить время нахождения на почте, но не нашли ни один вариант автоматизации заполнения и оплаты бланков онлайн.

На коленке реализовав базовый функционал, мы поделились им с самыми близкими людьми. Быстро получив фидбэк и «золотой пост» в несуществующем бложике, добили личный кабинет с шаблонами и реализовали API.

В конечном итоге проект так быстро встал в топ по основным запросам и начал расти, что через месяц мы представляли его в кабинете замдиректора по IT Почты России, а позже получили консалтинг от самого Петра Диденко!

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

Dater — определяет часовой пояс, локализует и форматирует время в PHP

Reading time4 min
Views22K


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

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

И так, встречайте — Dater, и его основные возможности:

  • Биндинг форматов
  • Локализация текстов и форматов
  • Расширение списка опций форматирования
  • Автоопределение часового пояса
  • Конвертация времени с учётом часового пояса
  • Автоматическая конвертация времени в $_GET, $_POST, $_REQUEST с учётом часового пояса
  • Автоматическая конвертация часового пояса в шаблоне отправляемых данных
Читать дальше →

Проверяем PHP движок на прочность

Reading time5 min
Views9.3K
Всем привет, недавно задался идеей написать PHP движок для своих нужд, так сказать и уровень повысить и получить что-то полезное. Почти сразу задался вопросом, а на сколько легко можно будет его взломать? Не секрет, что взломать можно все, что угодно, но вопрос в том, на сколько это будет проблематично и каждый ли хакер сможет это сделать?

Формы


Пожалуй, самая частая уязвимость в каком-либо проекте, будь то форма для комментариев, или форма логина. Без хороших проверок, эта штука ничего не стоит.
Одна из распространенных ошибок — это сохранять все что ты получил:
foreach( $_POST as $item ){}

Любой человек может через отладчик добавить в тот же свой собственный пункт, пусть это и не дает большого взлома, но вещь крайне не приятная.
Читать дальше →

Полезные сниппеты на HTML5

Reading time4 min
Views84K
Эта подборка полезных сниппетов, использующих HTML5, может помочь вам улучшить ваш сайт.

Автозаполнение в текстовых полях


Используя HTML5-элемент datalist вы можете создать текстовое поле с автозаполнением. Очень удобно!
<input name="frameworks" list="frameworks" />

<datalist id="frameworks">
	<option value="MooTools">
	<option value="Moobile">
	<option value="Dojo Toolkit">
	<option value="jQuery">
	<option value="YUI">
</datalist>

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

Простые правила приема платежей на сайте

Reading time3 min
Views37K
Поводом для написания этого поста стало столкновение с очередным случаем вопиющего дибилизма на странице оплаты: каптча в форме ввода данных банковской карты на сайте Ассиста.

Я примерно 3 года работал в отрасли электронной коммерции и был напрямую связан с приемом платежей. То что написано ниже — капитанские советы для тех, кто еще не устал бегать по граблям или пока не понял чего хочет (а в действительности НЕ хочет) делать потенциальный клиент. (Фродеры в отличие от потенциальных клиентов любят заполнять огромные формы!) Если вы не согласны, приводите контр-примеры в комментариях. Я и другие читатели будут вам благодарны.
Читать советы...

Information

Rating
Does not participate
Location
Россия
Registered
Activity