Обновить
256K+

JavaScript *

Прототипно-ориентированный язык программирования

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

Функциональное тестирование современных web-приложений

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


Современные web-приложения зачастую содержат множество "движущихся частей" и сторонних зависимостей. В процессе рефакторинга и добавления/изменения функциональности в таком приложении может произойти поломка существующих use-case сценариев и нестабильная работа в определенных браузерах.


Для своевременного обнаружения таких ситуаций и выполнения непрерывной интеграции необходимо функциональное тестирование web-приложения. В статье пойдет речь о двух бесплатных open-source решениях:


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

React.js State of the art (интервью с Max Stoiber)

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


Современная разработка веб-интерфейсов сосредоточена вокруг нескольких больших сообществ. На протяжении последних пяти лет React завоевывал симпатии программистов из самых разных отраслей. React – это одна-единственная библиотека, сделавшая MVC рудиментарным в программировании веб-интерфейсов. Сегодня React используется крупнейшими компаниями для разработки самых разнообразных продуктов — Facebook, Airbnb, BBC, Coursera, eBay, Expedia, IMDB, список можно продолжать.

Одной из уникальных особенностей мира React является крупнейшее и очень активное сообщество опенсорс-разработчиков вокруг него. Max Stoiber — один из людей, благодаря которым React стал тем, чем он является на сегодня как проект. На протяжении последних нескольких лет он работал над популярнейшим boilerplate проектом в сообществе и внедрял новейшие и лучшие технологии в массовое использование.

Мы поговорили с Максом о новых веяниях в сообществе, о статической типизации для разработки с React, о новом подходе стилизации компонентов и о snapshot-тестировании.

К секретам разработки на React можно приобщиться ниже в интервью.
Читать дальше →

Qemu.js с поддержкой JIT: фарш всё же можно провернуть назад

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

Несколько лет назад Фабрис Беллар написал jslinux — эмулятор ПК, написанный на JavaScript. После этого был ещё как минимум Virtual x86. Но все они, насколько мне известно, являлись интерпретаторами, в то время как написанный значительно раньше тем же Фабрисом Белларом Qemu, да и, наверное, любой уважающий себя современный эмулятор, использует JIT-компиляцию гостевого кода в код хостовой системы. Мне показалось, что самое время реализовать обратную задачу по отношению к той, которую решают браузеры: JIT-компиляцию машинного кода в JavaScript, для чего логичнее всего виделось портировать Qemu. Казалось бы, почему именно Qemu, есть же более простые и user-friendly эмуляторы — тот же VirtualBox, например — поставил и работает. Но у Qemu есть несколько интересных особенностей


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

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


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

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

Как Phoenix убивает React

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


Около полутора лет назад мы написали внутренний инструмент для корпоративных анонсов. Изначально в нём использовался Phoenix для бэкенда и React для фронтенда. Тем самым мы получали преимущества Redux и каналов Phoenix при доставки обновлений в браузер в реальном времени.


Это позволило получить великолепный живой интерфейс, но снизило скорость разработки и стало причиной малого количества участвующих в процессе разработчиков. Около трёх месяцев назад мы приняли решение выкинуть React и вернуться к серверному рендерингу.


Почему мы решили заменить React


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

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

Дайджест свежих материалов из мира фронтенда за последнюю неделю №237 (14 — 20 ноября 2016)

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


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

Управление роботом на Ардуино из приложения на Node.js

Время на прочтение9 мин
Охват и читатели16K
В прошлый раз мы рассмотрели, как сделать свой мини-терминал с режимом «вопрос-ответ» на роботе с Ардуиной с библиотекой babbler_h. Сегодня посмотрим, как эту же библиотеку использовать для управления роботом из настольного приложения на JavaScript+Node.js.

Чтобы меняться данными с роботом, в клиентской части на JavaScript+Node.js используем специально написанную по такому случаю библиотеку Babbler.js. Для работы с последовательным портом Babbler.js использует стандартную библиотеку node-serialport, но строит поверх нее некоторые дополнительные удобства.
Читать дальше →

Какой язык программирования стоит выучить первым? (ʇdıɹɔsɐʌɐɾ: ɯǝʚɯо ņıqнqvиʚɐdu)

Время на прочтение10 мин
Охват и читатели618K
Многие начинают путь к изучению программирования, открыв поздним вечером Google. Обычно ищут что-то вроде «Как выучить…». Но как тот, кто ищет подобное, решает, какой именно язык программирования выбрать?

Кто-то, начитавшись сайтов и блогов крупнейших компьютерных компаний, рассуждает так: «В Кремниевой долине что ни слово –  то Java. Думаю, это – то, что мне нужно». Бывает и так: «Haskell. Он ведь на пике популярности. Страшно подумать, что будет дальше. Определённо – Haskell». И даже так: «Этот суслик на логотипе Go – такая няшка. Хочу знать Go».
Читать дальше →

Представляем библиотеку right-angled, конструктор гридов для angular2

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


Сегодня хотим рассказать о том, как мы решили отдать долг open source сообществу и создали библиотеку right-angled. Только вчера мы перевели ее в статус beta и решили поделиться этой отличной новостью с Хабрасообществом c самым первым.
Читать дальше →

ReactJS: отказ от JSX с сохранением удобства

Время на прочтение2 мин
Охват и читатели12K
ReactJS — это Javascript библиотека для разработки веб-компонентов на основе виртуального DOM. ReactJS стал уже достаточно популярен за тот год, как его выпустила в свет компания Facebook. В ближайшее время можно ожидать интереса к этой библиотеке со стороны еще большего количества компаний, потому что ReactJS позволяет создавать надежные, производительные интерфейсы быстро.
Читать дальше →

Про веб-клиент 1С

Время на прочтение9 мин
Охват и читатели122K
Одной из приятных особенностей технологии 1С:Предприятие является то, что прикладное решение, разработанное по технологии управляемых форм, может запускаться как в тонком (исполняемом) клиенте под Windows, Linux, MacOS X, так и как веб-клиент под 5 браузеров – Chrome, Internet Explorer, Firefox, Safari, Edge, и все это – без изменения исходного кода приложения. Более того – внешне приложение в тонком клиенте и в браузере функционирует и выглядит практически идентично.
Найдите 10 отличий (под катом 2 картинки):
Читать дальше →

Ваш язык программирования — отстой

Время на прочтение54 мин
Охват и читатели141K
1 Почему JavaScript отстой
• 1.1 Плохая конструкция
• 1.2 Система типов
• 1.3 Плохие функции
• 1.4 Отсутствующие функции
• 1.5 DOM
2 Почему Lua отстой
3 Почему PHP отстой
• 3.1 Исправлено в поддерживаемых в настоящее время версиях
4 Почему Perl 5 отстой
5 Почему Python отстой
• 5.1 Исправлено в Python 3
6 Почему Ruby отстой
7 Почему Flex/ActionScript отстой
8 Почему скриптовые языки отстой
9 Почему C отстой
10 Почему C++ отстой
11 Почему .NET отстой
12 Почему C# отстой
13 Почему VB.NET отстой
15 Почему Objective-C отстой
16 Почему Java отстой
• 16.1 Синтаксис
• 16.2 Исправлено в Java 7 (2011)
• 16.3 Модель
• 16.4 Библиотека
• 16.5 Обсуждение
17 Почему Backbase отстой
18 Почему XML отстой
19 Почему отстой XSLT/XPath
20 Почему CSS отстой
• 20.1 Исправлено в CSS3
21 Почему Scala отстой
22 Почему Haskell отстой
23 Почему Closure отстой
24 Почему Go отстой
• 24.1 Базовые средства программирования (базовый язык)
• 24.2 Взаимосовместимость
• 24.3 Стандартная библиотека
• 24.4 Набор инструментальных средств
• 24.5 Сообщество
25 Почему Rust отстой
• 25.1 Безопасность
• 25.2 Синтаксис
• 25.3 Конструкция API и система типов
• 25.4 Сообщество
• 25.5 Набор инструментальных средств

Почему JavaScript отстой


Учтите, что некоторые положения относятся не к самому JavaScript, а к программным интерфейсам веб-приложений (https://developer.mozilla.org/en/docs/Web/API).

Плохая конструкция

• Каждый скрипт исполняется в едином глобальном пространстве имён, доступ в которое возможен в браузерах с оконным объектом.
• Camel-регистр никуда не годится:

XMLHttpRequest
HTMLHRElement

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

Обзор децентрализованных крипто-платформ. Часть 2: Lisk

Время на прочтение6 мин
Охват и читатели7.6K
imageЭтим постом мы продолжаем цикл обзоров блокчейн-платформ (Часть 1: Waves), которые крайне редко упоминаются и обсуждаются в российских СМИ, однако, широко известны в узких «криптовалютных» кругах и среди энтузиастов.

Во втором материале цикла речь пойдет об open source блокчейн-платформе Lisk, которой к марту этого года за время предварительной продажи монет (ICO) удалось собрать 14 009 BTC и более 80 млн XCR на общую сумму 5,9 млн долларов.

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

Двусторонний binding данных с ECMAScript-2015 без Proxy

Время на прочтение8 мин
Охват и читатели9.4K
Привет, уважаемые читатели Хабра. Эта статья некое противопоставление недавно прочитанной мной статье «Односторонний binding данных с ECMAScript-2015 Proxy». Если вам интересно узнать, как же сделать двусторонний асинхронный биндинг без лишних структур в виде Proxy, то прошу под кат.
Читать дальше →

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

GraphQL CMS, вторая версия уже в открытом доступе

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

Оригинал статьи на английском.


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


В данной статье я коротко расскажу о второй версии GraphQL CMS. Вы увидите что нового во второй версии и чего стоит ожидать в будущих версиях.

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

Функциональный TypeScript

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

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


Примечание от переводчика: весь код для удобства я оформил в репозитории.


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


  • функции вместо примитивов
  • трансформация данных через pipeline
  • выделение общих (generic) функций

Начнём же!

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

Производительность межпроцессного обмена сообщениями в node.js

Время на прочтение3 мин
Охват и читатели11K
Разрабатывая приложение на node.js, столкнулся с необходимостью обмена сообщениями между процессами одной машины. В такой ситуации обычно я применял redis Pub/Sub, бонусом получая возможность масштабирования на несколько серверов. Но сейчас встал вопрос именно о локальном обмене и его производительности.

Я решил исследовать существующие варианты обмена сообщениями. Задача эта достаточно стандартна и известна как IPC (Inter Process Communications). Но что можно сделать на js и на какую производительность при этом рассчитывать?

Проведя серию тестов и получив результаты решил поделиться ими с хабрасообществом. Заинтересованных прошу под кат.
Читать дальше →

СМАРТ ТВ – будущее телевидения

Время на прочтение8 мин
Охват и читатели12K
Привет, Хабр! Сегодня предлагаем обсудить тему рынка Smart TV: рассмотрим перспективность данной технологии, ее ограничения, а также затронем вопросы о рынке разработки приложений для телевизоров.
image
Читать дальше →

CleverScrollbar.js — Сайдбар для понятной навигации

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

Для тех, кому хочется сразу посмотреть, о чём идёт речь: пример работы библиотеки. Нажмите на кнопку "Load Scrollbar!", чтобы увидеть результат.


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


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

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

Дайджест свежих материалов из мира фронтенда за последнюю неделю №236 (7 — 13 ноября 2016)

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

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

Математика в JavaScript

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

Введение


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

От переводчиков


Всем привет, с вами Максим Иванов и Дмитрий Сергиенков, и сегодня мы решили, что мы не будем говорить о модных и полезных штуках типа ReactJS, Angular, TypeScript и других. Сегодня мы уделим внимание математике в JavaScript. Если вам нравится математика, вы можете заниматься ей всё свободное время, но если вашей целью являются не научные изыскания, а работа программистом, математика вряд ли станет лучшим объектом для изучения.
Читать дальше →