Как стать автором
Поиск
Написать публикацию
Обновить
3407.1
RUVDS.com
VDS/VPS-хостинг. Скидка 15% по коду HABR15
Сначала показывать

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

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

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


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

Хакеры: Россия и Китай

Время на прочтение13 мин
Количество просмотров22K
По данным «Лаборатории Касперского», в мире киберпреступности сейчас лидируют три крупнейшие «мафии»: китайская, русская (русскоязычная) и латиноамериканская. Отличительной чертой «русских хакеров» всегда было изобретение новых технологий, специализация на создании сетей из заражённых компьютеров, крупные кражи денег у банков и их клиентов, спам-рассылки и DDoS-атаки. Китайские киберпреступники сосредоточились на атаках против пользователей онлайн-игр, краже данных и интеллектуальной собственности, считают эксперты. Но если тема «русских хакеров» давно стала повесткой мировых СМИ, то об их китайских коллегах пишут заметно реже.



Многие страны активно привлекают высококвалифицированных специалистов в области информационной безопасности, и этому ежедневно также посвящается немало новостей: от операций «армии хакеров» Китая, до атак «российских кибер-диверсантов» на энергосистему Украины. Что это: фейк или новая реальность? Хакеры какой страны — России или Китая — опаснее, многочисленнее, применяют наиболее изощренные методы атак?
Читать дальше →

Сервер в облаках: Итоги проекта

Время на прочтение2 мин
Количество просмотров5.1K
Друзья, пора подвести итоги нашего проекта-конкурса «Сервер в облаках». Если кто-то не в курсе, мы запилили фановый гик-проект: сделали маленький сервер на Raspberry Pi 3, прикрутили к нему GPS-трекер и датчики, погрузили всё это добро на воздушный шар и доверили силам природы. Где приземлится шар, ведомо только богам ветров и покровителям воздухоплавания, поэтому мы предложили всем желающим ставить точки на карте — чьи точки окажутся ближе всего к фактическому месту посадки, получают «вкусные» призы.



Итак, наш сервер уже слетал в облака, и пора подвести итоги нашего конкурса.

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

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


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

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

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


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

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

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


Читать дальше →
Согласно третьему закону Кларка, любая развитая технология неотличима от магии. Действительно, многое в IT воспринимается как сплав технологий и шаманства. «Вжуух!» — и по мановению волшебной палочки где-то далеко рождается новый сервер. «Системы виртуализации,» — понимают одни. «Колдовство...» — думают другие. Компьютерные эффекты дают нам чудовищ, которые кажутся такими же реальными, как выпуски новостей; в режиме он-лайн разворачиваются масштабные битвы, а стриминговые сервисы погружают нас в фантастические миры. И за всем этим стоит брутальное серверное оборудование. Здесь есть слабые юниты массовки, которые почти ничего не могут, а есть прокачанные «танки» — виртуальные серверы, которым всё по плечу. Ну а в фэнтезийных мирах есть лишь одна раса, которая может с ними сравниться — безрассудные орки! Только они никогда не променяют силу и хороший топор на волшебные палочки с низким SLA. А чтобы проверить, насколько хорошо вы осознаете, где проходит граница между фэнтези и реальностью, магией и мощью, мы подготовили тест.
Проверим, что вам ближе, орки или VDS. WAAAGH!!!

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

Время на прочтение20 мин
Количество просмотров26K
Дэвид Хэррон, автор материала, перевод которого мы публикуем сегодня, задался следующим вопросом: «Должен ли человек, работавший более 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
Читать дальше →

Организация эффективного взаимодействия микросервисов

Время на прочтение5 мин
Количество просмотров16K
В последнее время микросервисные архитектуры пользуются определённой популярностью. От того, как взаимодействуют микросервисы, может зависеть производительность и масштабируемость решений, основанных на них. Это взаимодействие может быть синхронным или асинхронным. В материале, перевод которого мы представляем вашему вниманию сегодня, рассматриваются синхронные методы взаимодействия микросервисов. А именно, речь пойдёт об исследовании двух технологий: HTTP/1.1 и gRPC. Первая технология представлена стандартными HTTP-вызовами. Вторая основана на использовании высокопроизводительного RPC-фреймворка от Google. Автор материала предлагает взглянуть на код, необходимый для реализации взаимодействия микросервисов с использованием HTTP/1.1 и gRPC, провести замеры производительности, и выбрать технологию, которая позволяет организовать обмен данными между микросервисами наилучшим образом.


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

Angular: неочевидные возможности селекторов директив

Время на прочтение3 мин
Количество просмотров5.9K
Если вы когда-нибудь создавали директивы Angular, то вы, вероятно, использовали в качестве селектора конструкцию, в которой используются скобки: ([]). Такой подход, хотя чаще всего применяется именно он, не является единственно возможным. На самом деле, селекторы, используемые в директивах, дают программисту широкий простор для творчества. Для того чтобы продемонстрировать эту идею в действии, в материале, перевод которого мы публикуем сегодня, рассмотрена методика создания директивы, предназначенной для работы с внешними ссылками, которые имеются в шаблоне. В частности, речь пойдёт о том, как можно находить обычные HTML-элементы, и, при необходимости, исключать из выборки некоторые из них, используя псевдокласс :not.

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

Трансляция запуска проекта «Сервер в облаках»

Время на прочтение2 мин
Количество просмотров3.5K
Мы долго думали, стоит ли делать для трансляции отдельный пост, и решили, что раз в проекте принимает участие уже более 450 хабражителей, то почему бы и нет.



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

Итак, полетели!
Читать дальше →

CORS, CSP, HTTPS, HSTS: о технологиях веб-безопасности

Время на прочтение8 мин
Количество просмотров41K
Автор материала, перевод которого мы публикуем сегодня, говорит, что существует множество причин изучать веб-безопасность. Например, вопросами безопасности интересуются пользователи веб-сайтов, которых беспокоит возможность кражи их персональных данных. Безопасность заботит веб-разработчиков, которые стремятся к повышению уровня защиты создаваемых ими проектов. То же самое можно сказать и о начинающих программистах, которые ищут работу и готовятся к собеседованиям. Цель этой статьи заключается в том, чтобы понятным языком рассказать о некоторых важных технологиях веб-безопасности. Прежде чем приступить к разговору об этих технологиях, при упоминании которых обычно оперируют сокращениями вроде CORS, CSP и HSTS, рассмотрим пару базовых концепций безопасности.

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

До запуска сервера остались ровно сутки

Время на прочтение1 мин
Количество просмотров4.7K
Итак, наш пилот сверился с прогнозом погоды на завтра (и она вполне пригодная для полета), нашел поляну, с которой мы сможем взлететь, и написал, что к полету готов.



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

Старт состоится в этой точке: 56.360802, 37.697475
Читать дальше →

Разработка прогрессивного веб-приложения Nothing за 15 минут

Время на прочтение5 мин
Количество просмотров15K
В Google Play есть одно приложение, разработанное Chilango Lab, у которого больше миллиона загрузок и довольно высокий рейтинг. Называется оно Nothing, что можно перевести как «Ничто», и замечательно оно тем, что не делает абсолютно ничего. В нём, правда, спрятана приятная пасхалка, но это не меняет дела. Если проанализировать это приложение, то окажется, что его размер — 14 Мб, при установке оно занимает 19,24 Мб.


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

Ему это удалось. А именно, он воссоздал функционал Nothing, используя HTML, CSS и JavaScript, оформив его в виде прогрессивного веб-приложения (PWA, Progressive Web App). Оно работает без подключения к интернету, вызывать его можно, как и обычное приложение, с главного экрана. Основная разница между обычным Android-приложением и его PWA-копией заключается в размерах. Первое, напомним, занимает на устройстве 19,24 Мб. Второе — 205 Кб.
Читать дальше →

Отзывчивые изображения: CSS-приёмы, которые помогают экономить время

Время на прочтение3 мин
Количество просмотров30K
Если вы занимаетесь веб-разработкой, то высока вероятность того, что вам знакомы два чудовища, о которых пойдёт речь в статье, перевод которой мы сегодня публикуем. Речь идёт об изображениях и о дедлайнах. Иногда, по каким-то причинам, картинки никак не хотят помещаться в те места макетов страниц, которые для них предназначены, а вы не можете потратить несколько часов на то, чтобы с этим разобраться.



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

Random.org — история длиной в 20 лет

Время на прочтение8 мин
Количество просмотров23K
Уже совсем скоро в рамках проекта «Сервер в облаках» у нас полетит воздушный шар, чьи координаты места приземления — настоящий генератор истинно случайных чисел, у которого источником энтропии является движение воздушных масс. На момент написания этого поста более 100 хабражителей принимают участие в этой интеллектуальной гонке – угадать/рассчитать место приземления сервера и выиграть сертификат на участие в регате. Присоединяйся!



А пока идет гонка и подготовка к полету, мы вспомнили, что у Random.org, одного из самых популярных онлайн-генераторов, предоставляющего истинно случайные числа, источником энтропии тоже является атмосфера, точнее, атмосферные шумы. К тому же сайт скоро будет справлять 20-летие. И история развития Random.org оказалась настолько феерична, и в духе нашего проекта, что в честь «энтропийного совпадения» и скорого юбилея мы решили перевести её для вас.
Читать дальше →
Компания RuVDS проводит конкурс с крутыми призами Выражение «сервер в облаках» стало настолько устойчивым, что мы, хабражители, уже не воспринимаем его как что-то буквальное. Между тем, датацентры, в которых находятся облачные хранилища, находятся далеко не в облаках, а иногда и вовсе под землей, в старых бункерах или укрепленных командных пунктах. Мы, группа энтузиастов из компании RuVDS, собравшись в очередной раз за кружкой пятничного пива, подумали: «А почему бы нам не сделать сервер в облаках? Настоящий сервер и в настоящих облаках?».
Хочу подробностей

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

Время на прочтение11 мин
Количество просмотров42K
Автор статьи, перевод которой мы публикуем сегодня, говорит, что создал свой первый веб-сайт когда ему было 14 лет, в виде школьного проекта. Тогда перед ним стояла простая задача: разработать сайт, содержащий некий текст, изображения и таблицу. Обычно к школьным проектам он относился так: сначала о них забывал, а когда подходил срок сдачи, делал их в самый последний момент. Однако в тот раз всё было совсем не так. Особенно его интересовало то, как будет выглядеть его первый сайт. Тогда, для того, чтобы сделать всё так, как надо, он приложил все усилия. Автор материала говорит, что, ещё с тех давних времён, он стремился к тому, чтобы то, что он делает, выглядело бы как можно более привлекательно. Это стремление живо в нём до сих пор. Здесь он хочет поделиться советами по дизайну веб-страниц.

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

JavaScript: исследование объектов

Время на прочтение10 мин
Количество просмотров29K
Материал, перевод которого мы сегодня публикуем, посвящён исследованию объектов — одной из ключевых сущностей JavaScript. Он рассчитан, преимущественно, на начинающих разработчиков, которые хотят упорядочить свои знания об объектах.



Объекты в JavaScript представляют собой динамические коллекции свойств, которые, кроме того, содержат «скрытое» свойство, представляющее собой прототип объекта. Свойства объектов характеризуются ключами и значениями. Начнём разговор о JS-объектах с ключей.
Читать дальше →

11 библиотек (наборов компонентов) для React Native, о которых стоит знать в 2018-м

Время на прочтение5 мин
Количество просмотров30K
В начале года мы опубликовали несколько материалов о популярных наборах компонентов для React, Angular и Vue. Сегодня мы представляем вашему вниманию перевод статьи из той же серии, посвящённой React Native. Учитывая непрекращающийся рост популярности React, и то, что мобильные приложения и PWA становятся всё востребованнее, неудивителен тот факт, что React Native привлекает всё большее внимание сообщества разработчиков.



Фреймворк React Native очень похож на React в том плане, что его применение подталкивает программиста к созданию пользовательских интерфейсов с использованием изолированных компонентов. Наборы таких компонентов, предназначенные для разработки интерфейсов, дают разработчикам готовые модули, использование которых помогает экономить время, ускоряя работу. Здесь мы обсудим одиннадцать наборов компонентов, которые отличаются хорошей поддержкой их создателей. Они, надеемся, пригодятся всем, кому приходится разрабатывать интерфейсы на React Native
Читать дальше →

Информация

Сайт
ruvds.com
Дата регистрации
Дата основания
Численность
11–30 человек
Местоположение
Россия
Представитель
ruvds