Обновить
256K+

Веб-разработка *

Делаем веб лучше

445,59
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Еще раз о веб-компонентах…

Время на прочтение5 мин
Охват и читатели15K


Каждый раз, когда в какой-либо статье, либо в комментариях, упоминается группа стандартов Web Components, происходит практически одно и то же: люди, которые, зачастую, весьма слабо представляют о чем идет речь, начинают делиться «экспертными» мнениями. Каждый раз обсуждения скатываются к одному и тому же накатанному сценарию, название которого рифмуется со словом «грач». А мне очень хотелось бы позитива, конструктива и перехода к вопросам практического применения. В данной статье, я попытаюсь разом ответить на подавляющее большинство типичных вопросов и опровергнуть максимум общих заблуждений. Впоследствии, в тяжелой ситуации, можно будет отбиться одной ссылкой. Итак, поехали.
Читать дальше →

Backend United #2: Фарш

Время на прочтение2 мин
Охват и читатели3.5K

Всем привет! Меня зовут Фрол Крючков, я тимлид группы разработки в Авито. 22 сентября приглашаю всех в наш офис на Backend United 2: Фарш — встречу, посвященную тестированию бэкенда. С коллегами мы поговорим об основных приемах тестирования бэкенда, отличиях тестирования на разных языках, CDC-подходе к тестированию микросервисов, механике и сложностях внедрения Pact и выясним, как создать честные и эффективные изоляционные тесты в микросервисной архитектуре. С докладами, кроме меня, выступят представители Radio QA, Juno и Lifland Gaming.


Под катом — тезисы выступлений докладчиков, ссылка на регистрацию и трансляцию встречи.


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

Борьба с грязными побочными эффектами в чистом функциональном JavaScript-коде

Время на прочтение25 мин
Охват и читатели24K
Если вы пробуете свои силы в функциональном программировании, то это значит, что вы довольно скоро столкнётесь с концепцией чистых функций. Продолжая занятия, вы обнаружите, что программисты, предпочитающие функциональный стиль, похоже, прямо-таки одержимы этими функциями. Они говорят о том, что чистые функции позволяют рассуждать о коде. Они говорят, что чистые функции — это сущности, которые вряд ли будут работать настолько непредсказуемо, что приведут к термоядерной войне. Ещё вы можете узнать от таких программистов, что чистые функции обеспечивают ссылочную прозрачность. И так — до бесконечности.

Кстати, функциональные программисты правы. Чистые функции — это хорошо. Но есть одна проблема…


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

Способы синхронизации вкладок браузера

Время на прочтение5 мин
Охват и читатели41K


Давным-давно в далёкой галактике появилась задача по синхронизации вкладок браузера для веб-плеера, наподобие VK: нужно было организовать обмен данными между вкладками, отслеживать их количество и назначать задачи некоторым из них. Всю реализацию нужно было выполнить на клиенте. Информации собрано много, и набралось на целую статью.

Ниже опишу различные способы решения подобных задач.
Читать дальше →

Оптимизация графики для веба: самое важное

Время на прочтение54 мин
Охват и читатели104K
Автор электронной книги — Эдди Османи, один из руководителей разработки Google Chrome

tl;dr


Cжатие изображений всегда должно быть автоматизировано


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

Большинство CDN (например, Akamai) и сторонних решений вроде Cloudinary, imgix, Fastly Image Optimizer, Instart Logic SmartVision и ImageOptim API предлагают комплексные автоматизированные решения для оптимизации изображений.

На чтение статей и настройку конфигурации вы потратите время, которое дороже оплаты их услуг (у Cloudinary есть бесплатный тариф). Но если всё-таки не хотите отдавать работу на аутсорсинг по соображениям стоимости или из-за дополнительной latency, то выбирайте приведённые выше варианты с открытым исходным кодом. Проекты Imageflow или Thumbor предлагают альтернативу на собственном хостинге.
Читать дальше →

PHP 7.3. Что нового

Время на прочтение8 мин
Охват и читатели59K


Синтаксис


  1. Смягчение требований к синтаксису Heredoc и Nowdoc
  2. Поддержка конечных запятых в вызовах функций и методов
  3. Ссылки в list()

Устаревшие возможности (deprecated)


  1. Функция image2wbmp() объявлена устаревшей
  2. Флаги FILTER_FLAG_SCHEME_REQUIRED и FILTER_FLAG_HOST_REQUIRED при использовании FILTER_VALIDATE_URL объявлены устаревшими
  3. Регистро-независимые константы объявлены устаревшими

Новые возможности


  1. Опциональный выброс исключений при ошибках в функциях json_encode и json_decode
  2. Добавление функции is_countable()
  3. Добавление функций array_key_first() и array_key_last()
Читать дальше →

Игры с пользовательским восприятием и скорость работы веб-сайтов и приложений

Время на прочтение4 мин
Охват и читатели5.1K


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


ПРИМЕЧАНИЕ. Статья вдохновлена беседой с Адой Кэннон, которая защищает интересы разработчиков в проекте интернет-браузера Samsung Internet и в серии наших роликов Google Chrome Developers YouTube «Дизайнер и разработчик». Прослушать более полную запись разговора можно, скачав ее или подписавшись на наш подкаст на платформе iTunes или  Google Play Музыка.

Никогда не задумывались, почему когда вы звоните куда-нибудь в поддержку, вам на время ожидания включают музыку? А вы представьте свои ощущения, если бы вместо музыки была бы мертвая тишина. Канал CNN провел опрос, который показал, что если вызов абонента поставить на удержание, то в 70 процентов случаев звонящий положит трубку в первые 60 секунд тишины: ему может показаться, что вызов оборвался, да и само ожидание кажется дольше. Поэтому смысл «музыки» в том, чтобы заполнить чем-то ожидание и занять время абонента.

В аэропорте Хьюстона была похожая проблема: пассажиры жаловались, что приходится долго ждать багажа. После приземления самолета у терминала пассажиры довольно быстро добирались до карусели, и поэтому им приходилось ждать своего багажа в среднем семь минут — причем жаловаться не перестали, даже когда аэропорт расширил штат. Поэтому было решено отвести самолеты дальше от терминала, чтобы пассажирам приходилось идти дольше — и жалобы упали почти до нуля.

Переведено в Alconost
Читать дальше →

Различия между компиляцией веб-сайта и веб-приложения

Время на прочтение6 мин
Охват и читатели8K
Существует множество разновидностей модулей ASP.NET на основе различных платформ, таких как Web Forms, Web Pages, Model-View-Controller (MVC) и самой новой — Core. В этой статье я хочу рассмотреть ряд различий между компиляцией веб-сайта ASP.NET и веб-приложения ASP.NET.

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

Как работает Headless Chrome

Время на прочтение19 мин
Охват и читатели134K
Уже из названия понятно, что headless-браузер — это нечто без головы. В контексте фронтенда — это незаменимый инструмент разработчика, с помощью которого можно тестировать код, проверять качество и соответствие верстке. Виталий Слободин на Frontend Conf решил, что необходимо познакомиться с устройством этого инструмента поближе.

Под катом компоненты и особенности работы Headless Chrome, интересные сценарии использования Headless Chrome. Вторая часть про Puppeteer — удобную Node.js-библиотеку для управления Headless-режимом в Google Chrome и Chromium.


О спикере: Виталий Слободин — бывший разработчик PhantomJS — тот, кто закрыл его и похоронил. Иногда помогает Константину Токареву ( annulen) в «воскрешенной» версии QtWebKit — том самом QtWebKit, где есть поддержка ES6, Flexbox и многие других современных стандартов.

Виталий любит исследовать браузеры, в свободное время копаться в WebKit, Chrome и прочее, прочее. Про браузеры сегодня и поговорим, а именно про безголовые браузеры и всю их семейку призраков.

Удалённое выполнение кода через загрузку картинок на вашем сервере или локальном компьютере в ghostscript/imagick

Время на прочтение2 мин
Охват и читатели10K
Кратко: если у вас на сайте есть загрузка изображений и вы обрабатываете их при помощи популярной библиотеки ImageMagick, то загрузив картинку можно выполнить shell-команду с правами юзера веб-сервера (например: загрузить RAT, майнер, слить исходники, получить доступ к базе, вызвать отказ и т.п.)

Странно, что мимо хабросообщества прошла стороной новость (оригинал) о новых дырах в библиотеке GhostScript и как следствие множестве других библиотек, использующих её под капотом. Итак, что мы имеем?
Читать дальше →

Оптимизация работы с прототипами в JavaScript-движках

Время на прочтение15 мин
Охват и читатели8.4K
Материал, перевод которого мы сегодня публикуем, подготовили Матиас Байненс и Бенедикт Мейрер. Они занимаются работой над JS-движком V8 в Google. Эта статья посвящена некоторым базовым механизмам, которые характерны не только для V8, но и для других движков. Знакомство с внутренним устройством подобных механизмов позволяет тем, кто занимается JavaScript-разработкой, лучше ориентироваться в вопросах производительности кода. В частности, здесь речь пойдёт об особенностях работы конвейеров оптимизации движков, и о том, как осуществляется ускорение доступа к свойствам прототипов объектов.


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

Контекст выполнения и стек вызовов в JavaScript

Время на прочтение7 мин
Охват и читатели138K
Если вы — JavaScript-разработчик или хотите им стать, это значит, что вам нужно разбираться во внутренних механизмах выполнения JS-кода. В частности, понимание того, что такое контекст выполнения и стек вызовов, совершенно необходимо для освоения других концепций JavaScript, таких, как поднятие переменных, области видимости, замыкания. Материал, перевод которого мы сегодня публикуем, посвящён контексту выполнения и стеку вызовов в JavaScript.


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

Понижаем уровень связанности с помощью DI для улучшения тестируемости кода, пример реализации

Время на прочтение4 мин
Охват и читатели2.1K

В началье статьи хочу сразу заметить, что я не претендую на новизну, а только хочу поделиться/напомнить о такой возможности как IoC DI.


Также у меня почти нет опыта написания статей, это моя первая. Я старался как мог, если что не судите строго.


О чем вообще речь


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


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


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


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


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

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

Ближайшие события

Мобильная версия Хабра. Версия 3.0

Время на прочтение5 мин
Охват и читатели22K
Возможно, кто-то из вас сейчас впервые окажется на мобильной версии Хабра, а кто-то наоборот скажет, что «это уже третья версия и что ни говори, а в 2009 году она была самой-самой». Как бы там ни было, в этот раз захотелось сделать не просто анонс новой мобильной версии. Приятно было именно отмотать время назад и вспомнить, как всё было.
Читать дальше →

Эффективное использование методов массивов в JavaScript

Время на прочтение5 мин
Охват и читатели21K
Автор материала, перевод которого мы публикуем сегодня, говорит, что в последние несколько месяцев ему, при проверке пулл-реквестов, постоянно попадались одни и те же четыре недочёта, связанных с нерациональным использованием методов массивов в JavaScript. Для того чтобы таких недостатков кода, которые раньше появлялись и в его программах, стало меньше, он и написал эту статью.


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

Дайджест свежих материалов из мира фронтенда за последнюю неделю №329 (27 августа — 2 сентября 2018)

Время на прочтение4 мин
Охват и читатели15K
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.

FYI: На следующей неделе дайджеста не будет в связи с отпуском.


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

PHP-Дайджест № 138 (20 августа – 2 сентября 2018)

Время на прочтение3 мин
Охват и читатели13K

Свежая подборка со ссылками на новости и материалы. В выпуске: последняя бета PHP 7.3, Laravel Nova, сайт с идеями для следующих версий PHP, новости о Yii 3, порция полезных инструментов, видео, и многое другое. Приятного чтения!


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

Размещение веб-приложения на Amazon Web Services. Дёшево. Возможно ли это?

Время на прочтение3 мин
Охват и читатели37K

Наверняка все слышали про Amazon Web Services (AWS). А некоторые даже заглянули на страницу Pricing. И заметили, что цены там заметно выше, чем на DigitalOcean, Linode, Hetzner Cloud и др. Вот таблица для сравнения цен:


Тип RAM CPUs Диск Трафик Цена
DigitalOcean - 4 GB 2 vCPUs 80 GB 4 TB $20
Linode Linode 4GB 4 GB 2 vCPUs 80 GB 4 TB $20
AWS t2.medium 4 GB 2 vCPUs - - $40

Amazon берёт деньги за трафик, причём цены тоже не низкие:



Так для чего же тогда выбирать Amazon? Вот какие причины вижу я:


  1. Большое количество полезных сервисов.
  2. Free Tier.

О втором и пойдет речь в этой статье.

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

Почему человек из мира Java стал горячим сторонником Node.js и JavaScript?

Время на прочтение20 мин
Охват и читатели27K
Дэвид Хэррон, автор материала, перевод которого мы публикуем сегодня, задался следующим вопросом: «Должен ли человек, работавший более 10 лет в Sun Microsystems, в команде Java SE, до последнего вздоха думать лишь о байт-коде Java и создавать экземпляры абстрактных интерфейсов?». Он задавал этот вопрос применительно к себе, и для него платформа Node.js, после Java, оказалась подобна глотку свежего воздуха. Дэвид говорит, что когда он был уволен из Sun в январе 2009 года (прямо перед поглощением этой компании Oracle), он узнал о Node.js. Эта технология его зацепила. Что значит «зацепила»? С 2010-го года он много писал о программировании для Node.js. А именно, написал несколько книг, в том числе — «Node.js Web Development», четвёртое издание которой вышло в этом году. Он подготовил множество небольших материалов о Node.js, опубликованных в интернете. Фактически, он уделил очень много времени и сил, рассказывая о платформе Node.js и о возможностях JavaScript. Почему того, кто раньше занимался исключительно Java, так увлекли Node.js и JavaScript?

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