Как стать автором
Обновить
34
0
Дмитрий @Demven

Senior Software Engineer

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

URI — сложно о простом (Часть 1)

Время на прочтение 12 мин
Количество просмотров 291K
image

Привет хабр!

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

"Пфф, ссылки они и в Африке ссылки, чего тут разбираться?" — скажете вы, тогда я задам вопрос:

Что есть что и куда нас приведет?
  • http://example.com
  • www.example.com
  • //www.example.com
  • mailto:user@example.com

Если вы не знаете однозначного ответа или вам просто интересно и если вы не боитесь огромного количества трехбуквенных аббревиатур — милости прошу под кат.
Читать дальше →
Всего голосов 80: ↑77 и ↓3 +74
Комментарии 47

«Аполлон» против лунного заговора: что реальнее осуществить?

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

Пролог


image
Астронавты Олдрин (слева) и Армстронг в Хьюстоне во время тренировки выхода на лунную поверхность (22 апреля 1969 года)

Знаете, кого мне всегда напоминали сторонники теорий заговора? Назойливых шахматистов.

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

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

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

А что же тогда делать? Да все очень просто. Надо замолчать. А затем попросить теоретика заговора рассказать все с начала. Нет-нет, не пересказывать теорию, которая обычно является «сутью произошедшего». А описать. Все. Как было сделано. Подробно. С самого начала.

Давайте так и сделаем на примере лунного заговора, который живуч на фоне миссий LRO, Opportunity, Rosetta и сегодняшних ежедневных снимков все приближающегося Плутона.
Читать дальше →
Всего голосов 112: ↑106 и ↓6 +100
Комментарии 352

Делаем веб-формы удобнее для заполнения

Время на прочтение 5 мин
Количество просмотров 27K
Привет, Хабр! Сегодня для работы в Интернете все чаще используются мобильные устройства, а не компьютеры. При этом, на многих сайтах есть формы для ввода данных, позволяющие совершить покупку или подписаться на рассылку. Как результат, пользователям приходится много раз вводить на разных сайтах такие сведения о себе, как имя, номер телефона и адрес. Удобство веб-форм имеет огромное значение, потому что при работе с ними всегда вероятны ошибки, в результате чего многие пользователи вовсе отказываются от заполнения. Три года назад мы представили функцию автозаполнения в браузере Chrome, которая упрощает ввод данных в формы. Теперь Chrome полностью поддерживает в формах атрибут autocomplete в соответствии с современным стандартом WHATWG HTML. Благодаря этому веб-мастера и разработчики могут помечать поля атрибутами, например name и street-address (имя и адрес), не изменяя интерфейс или другой код сайта. Те, кто реализовал эти возможности, отмечают, что их формы стали заполняться чаще.

автозаполнение форм на смартфоне

Например, если пометить поле для ввода электронного адреса, то код будет выглядеть так:

<input type="text" name="customerEmail" autocomplete="email"/>

Больше кода под катом!
Всего голосов 27: ↑24 и ↓3 +21
Комментарии 11

Справочник методов console в JS

Время на прочтение 6 мин
Количество просмотров 34K
Со времён систематизации методов объекта console прошло достаточно много времени, некоторые браузеры получили поддержку недостающих ранее методов. Таблица вызывает естественный интерес у разработчиков, поэтому — почему бы её не обновить, дополнив в одной статье описаниями? Github.
Читать дальше →
Всего голосов 44: ↑40 и ↓4 +36
Комментарии 12

Основные ловушки при использовании кэша в HTML5-приложениях

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

Чтобы использовать AppCache, создается файл описания с расширением «appcache», например, manifest.appcache. В этом файле можно перечислить все файлы, которые должны кэшироваться. Чтобы включить эту функцию на вашем сайте, необходимо включить ссылку на этот файл описания на вашей веб-странице в html-элемент следующим образом:
Читать дальше →
Всего голосов 21: ↑19 и ↓2 +17
Комментарии 2

Создание универсального веб-приложения сайта Habrahabr.ru при помощи Web App Template

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

Хабровчане, привет!

В предыдущей статье мы с вами познакомились с шаблоном для создания универсальных веб-приложений – Web Application Template. Если кратко, то Web Application Template позволяет вам «превратить» сайт в приложение для Windows, Windows Phone или Android, добавив в него возможности интеграции с ОС и механизм распространения через магазин приложений.

Сегодня мы рассмотрим практический пример: как при помощи Web Application Template быстро и просто создать веб-приложение для Windows и Windows Phone на основе сайта habrahabr.ru.
Перейти к созданию приложения
Всего голосов 26: ↑25 и ↓1 +24
Комментарии 2

Гид по заголовкам кэширования HTTP для начинающих

Время на прочтение 8 мин
Количество просмотров 82K
В статье данные сведения по заголовкам кэширования (ЗК) для HTTP и соответствующее поведение сетей доставки контента (CDN). Если вам хочется разобраться, каким образом заголовки кэширования вписываются в современный веб, или вам просто интересно, о чём говорят ваши коллеги – эта статья для вас.

Если вы уже понимаете преимущества ЗК, и хотите расширить свои знания, я рекомендую вам обратиться к документации от W3.

Что могут ЗК сделать для вас?


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

Настройки кэширования веб-трафика крайне важны для посещаемых сайтов. Если вы платите за трафик, получаете доход от электронной коммерции, или просто хотите поддерживать свою репутацию хорошего веб-разработчика, вам нужно разбираться в том, как работает кэширование.
Читать дальше →
Всего голосов 36: ↑33 и ↓3 +30
Комментарии 8

Общение скриптов из разных вкладок браузера

Время на прочтение 3 мин
Количество просмотров 18K
Мне захотелось наладить общение скриптов из разных вкладок браузера. Будущий API SharedWorker позволяет передавать данные между разными iframe и даже вкладками или окнами. В Chrome он работает давно, в Firefox – недавно, а в IE и Safari его не видать. Но существует кроссбраузерная альтернатива, о которой мало кто знает. Давайте разбираться.

Представьте, что на одной вкладке человек залогинился, затем открыл другую, и там разлогинился. На первой он вроде как залогинен, но когда он сделает там что-либо, ему выдадут ошибку. Хорошо было бы хотя бы показать ему диалог о том, что он разлогинился и ему надо войти ещё раз.
Читать дальше →
Всего голосов 31: ↑27 и ↓4 +23
Комментарии 15

Введение в fetch

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

Прощай, XMLHttpRequest!


fetch() позволяет вам делать запросы, схожие с XMLHttpRequest (XHR). Основное отличие заключается в том, что Fetch API использует Promises (Обещания), которые позволяют использовать более простое и чистое API, избегать катастрофического количества callback'ов и необходимости помнить API для XMLHttpRequest.
Читать дальше →
Всего голосов 35: ↑30 и ↓5 +25
Комментарии 145

Material Design: на Луну и обратно

Время на прочтение 11 мин
Количество просмотров 386K
“Это унылое диалоговое окно действительно нужно?”



В этой статье я изложил главные принципы Material Design и дал советы по их воплощению. Текст написан по следам мастер-класса для разработчиков, который мы, Роботы, устраивали совместно с российским офисом Google (Think Mobile).


Когда-то все продукты Google выглядели по-разному плохо. Даже один продукт на разных платформах выглядел неконсистентно.

Все стало меняться в 2011 году, когда в Google начали усиленно работать над унификацией визуальной части экосистемы своих продуктов и назвали все это Project Kennedy.

При чем тут Кеннеди?
Легенда такова: президент Кеннеди инициировал программу полёта человека на Луну (если верить, что этот полёт когда-либо был). А большой начальник в Google Ларри Пейдж исповедует принцип, что продукты нет смысла улучшать на 10% — они должны быть в 10 раз лучше, чем у конкурентов. Если уж запускать продукт, то сразу на Луну. Вот и здесь было решено круто всё переделать.

Читать дальше →
Всего голосов 146: ↑135 и ↓11 +124
Комментарии 120

Количественные CSS селекторы

Время на прочтение 7 мин
Количество просмотров 91K
Вам когда-нибудь хотелось прямо в CSS коде посчитать, в меню 4 элемента или 10? Для четырех задать им ширину по 25%, а если набралось десять — прижать их друг к другу и уменьшить отступы?
Как выяснилось, CSS умеет работать с разным количеством элементов, позволяя избавиться от головных болей и лишнего кода на js.


Читать дальше →
Всего голосов 65: ↑61 и ↓4 +57
Комментарии 24

Верстка email рассылок от А до Я для чайников

Время на прочтение 9 мин
Количество просмотров 402K
Уже 3 с лишним года занимаюсь дизайном и версткой почтовых рассылок, которые ориентированы на англоязычных пользователей. За время работы перелопатили огромную кучу информации, перепробовали много вариантов верстки, набили достаточное количество шишек. Были найдены и исправлены типичные баги, которые в той или иной мере повторялись во всех почтовых клиентах. Также нашлись проблемы с некоторыми CSS свойствами — различные почтовые клиенты интерпретировали их по разному. Каждое письмо тестировалось на самых популярных почтовых клиентах: Gmail, Outlook, Yahoo, Android, iOS, MozillaThunderbird, Microsoft Outlook, The Bat. Рассылки ходят на сотни миллионов пользователей и приносят очень хорошие результаты. Итак, приступим к изучению.
Читать дальше →
Всего голосов 66: ↑62 и ↓4 +58
Комментарии 35

Ресайз картинок в браузере. Все очень плохо

Время на прочтение 10 мин
Количество просмотров 104K
Если вы когда-нибудь сталкивались с задачей ресайза картинок в браузере, то вы наверное знаете, что это очень просто. В любом современном браузере есть такой элемент, как холст (<canvas>). На него можно нанести изображение нужных размеров. Пять строчек кода и картинка готова:

function resize(img, w, h) {
  var canvas = document.createElement('canvas');
  canvas.width = w;
  canvas.height = h;
  canvas.getContext('2d').drawImage(img, 0, 0, w, h);
  return canvas;
}

Из холста картинку можно сохранить в JPEG и, например, отправить на сервер. Можно было на этом закончить статью, но сперва давайте взглянем на результат. Если вы поставите рядом такой холст и обычный элемент <img>, в который загружена та же картинка (исходник, 4 Мб), то вы увидите разницу.

img
Читать дальше →
Всего голосов 156: ↑152 и ↓4 +148
Комментарии 90

Очень быстрые классы на JavaScript с красивым синтаксисом

Время на прочтение 8 мин
Количество просмотров 54K
При написании серьезных проектов перед JavaScript программистами встает выбор: пожертвовать качеством кода и писать классы руками, или же пожертвовать скоростью и использовать систему классов. А если использовать систему, то какую выбрать?

В статье рассмотрена система автора, которая не уступает по скорости классам, написанным «от руки» (другими словами — одна из самых быстрых в мире). Но при этом классы имеют приятную структуру в стиле Си.

Системы классов


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

Каждый из этих велосипедов отличается своим набором возможностей, своим стилем программирования и своим падением скорости. Так, например, создание класса MooTools примерно в 90 раз медленнее, чем создание класса, написанного от руки. Зачем тогда нужны все эти системы?
Читать дальше →
Всего голосов 53: ↑43 и ↓10 +33
Комментарии 110

Чеклист оптимизации изображений

Время на прочтение 6 мин
Количество просмотров 9.9K
Все мы знаем знаменитое выражение «Content is king». Но, если говорить более конкретно, нужно уточнить, что в Интернете важнее всего изображения (как копирайтеру, мне сложно говорить эти слова, но это действительно так).

Как пользователи интернета, мы жаждем изображений — чем больше, тем лучше. Но, как разработчики, создатели контента и владельцы сайтов, мы впадаем в тоску из-за проблем с изображениями. По последним данным HTTP Archive, средняя страница весит 1795 КБ, из которых 56% (1000 KB) занимают изображения. Это делает изображения, наверное, наиболее благодатной почвой для улучшения скорости загрузки страниц. И это — то, почему мы в Radware так много времени вкладываем в оптимизацию изображений.

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


Изображение взято с сайта litmus.com

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

10 рекомендаций по html-верстке электронных писем

Время на прочтение 4 мин
Количество просмотров 106K
Рекомендация первая: забудьте про блочную верстку. Весь лэйаут должен быть на таблицах. При этом, без крайней необходимости — их тоже лучше не использовать. Также следует выкинуть из головы представления о семантике, сокращенных css-правилах, валидации, плавающих блоках — и прочее. Самый распространенный в РФ почтовый сервис на данный момент (mail.ru) вообще не понимает стили (css). Любые тэги/атрибуты style заменяются на xstyle и не работают. Вообще все.

Так что, фактически, при вёрстке html для почтовой рассылки надо мысленно переместиться в 90-ые годы прошлого века и смело использовать все распространенные приёмы того времени.

Для тех, кто с ними не знаком (как я был) — напомню:
Читать дальше →
Всего голосов 124: ↑111 и ↓13 +98
Комментарии 104

Unreal Engine 4 достиг фотореализма

Время на прочтение 1 мин
Количество просмотров 46K
Дизайнер и 3D-художник Бенуа Деро (Benoît Dereau) опубликовал невероятно реалистичное демку на движке Unreal Engine 4 (зеркало). Если так пойдёт и дальше, то в очках виртуальной реальности мы вообще не сможем отличить вымышленный мир от реальности.


Читать дальше →
Всего голосов 54: ↑48 и ↓6 +42
Комментарии 56

Web Components — будущее Web

Время на прочтение 12 мин
Количество просмотров 114K
Спустя какое время стало ясно, что основная идея Prototype вошла в противоречие с миром. Создатели браузеров ответили на возрождение Javascript добавлением новых API, многие из которых конфликтовали с реализацией Prototype.

— Sam Stephenson, создатель Prototype.js, You Are Not Your Code

Создатели браузеров поступают гармонично. Решение о новых API принимают с учётом текущих трендов в opensource сообществах. Так prototype.js способствовал появлению Array.prototype.forEach(), map() и т.д., jquery вдохновил разработчиков на HTMLElement.prototype.querySelector() и querySelectorAll().

Код на стороне клиента становится сложнее и объёмнее. Появляются многочисленные фреймворки, которые помогают держать этот хаос под контролем. Backbone, ember, angular и другие создали, чтобы помочь писать чистый, модульный код. Фреймворки уровня приложения — это тренд. Его дух присутствует в JS среде уже какое-то время. Не удивительно, что создатели браузеров решили обратить на него внимание.
Читать дальше →
Всего голосов 95: ↑89 и ↓6 +83
Комментарии 90

58 признаков хорошего интерфейса

Время на прочтение 16 мин
Количество просмотров 380K
У хорошего интерфейса пользователя высокая конверсия и его просто использовать. То есть, он хорош и для бизнеса, и для использующих его людей. Вот список опробованных нами идей.

1 Один столбец вместо нескольких


Один столбец точнее отражает то, что вы хотите донести. Пользователи проходят сверху вниз по более предсказуемому пути. В дизайне с несколькими колонками есть риск отвлечения пользователя от основной задачи страницы.

image
Читать дальше →
Всего голосов 226: ↑182 и ↓44 +138
Комментарии 102

Как разогнать эмулятор Android

Время на прочтение 3 мин
Количество просмотров 142K
Intel HAXM
Каждый, кто хоть раз работал с эмулятором для разработки приложений под Android, знает, что даже на современном железе эмулятор тормозит так, что для его использования нужно нечеловеческое терпение. То есть, наверное, надо самому стать андроидом-киборгом.

Но есть и еще один метод – попроще.

Intel Hardware Accelerated Execution Manager (Intel HAXM) — это решение, использующее аппаратные возможности виртуализации (Intel VT) и позволяющее значительно ускорить работу эмулятора Android.

Данное решение работает в паре с эмулятором Android для х86 устройств. При этом, эмулятор будет работать со скоростью, приближенной к скорости работы реального устройства, что поможет сократить время на запуск и отладку приложения.
Читать дальше →
Всего голосов 90: ↑84 и ↓6 +78
Комментарии 50

Информация

В рейтинге
Не участвует
Откуда
Гомель, Гомельская обл., Беларусь
Дата рождения
Зарегистрирован
Активность