Обновить
512K+

JavaScript *

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

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

Компилируем FFmpeg в WebAssembly (=ffmpeg.js): Часть 2 — Компиляция с Emscripten

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



Список переведённых частей серии:


  1. Приготовления
  2. Компиляция с Emscripten (вы тут)
  3. Конвертация avi в mp4


Начиная с этой части, материал будет посложнее, так что не стесняйтесь гуглить по ходу чтения, если не понимаете, что происходит.


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


В этой части мы разберём:


  1. Как настроить окружение для Emscripten в Docker
  2. Использование emconfigure и emmake 
  3. Как решать проблемы, возникающие при компиляции FFmpeg с Emscripten

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

Каскадная инвалидация кэша. Часть 2

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


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

Создаем простой сервис коллтрекинга, часть 1

Время на прочтение10 мин
Охват и читатели4.5K
В рамках статьи будет рассмотрен один из возможных вариантов реализации коллтрекинга на сайте. Данный материал написан сугубо в образовательных целях и не несет в себе цели замены существующих специализированных сервисов, предоставляющих услугу «calltracking».

Требования к функционалу


  1. Сервис должен предоставлять возможность подстановки номера (номеров) по источнику перехода на сайт — переход из поисковых систем, переход по рекламе, переход по ссылкам с utm метками.
  2. Сервис должен закреплять показываемый номер за посетителем сайта и отображать данный номер при дальнейшем посещении.
  3. При инициации звонка на показываемый номер сервис должен инициировать создание события в Google Analytics.
Читать дальше →

Компилируем FFmpeg в WebAssembly (=ffmpeg.js): Часть 1 — Приготовления

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



Список переведённых частей серии:


  1. Приготовления (вы тут)
  2. Компиляция с Emscripten
  3. Конвертация avi в mp4




Из этой части вы узнаете:


  1. Зачем это всё нужно
  2. Как скомпилировать FFmpeg в Docker



Зачем это всё нужно


Главные задачи у серии публикаций такие:


  1. Создать туториал по использованию Emscripten для компиляции C/C++ библиотек в JavaScript (более детальный и полезный, чем написанные ранее)
  2. Персональная памятка

Почему FFmpeg?


FFmpeg — это свободный проект с открытым исходным кодом, состоящий из обширного набора библиотек и программ для обработки видео, аудио и других мультимедийных файлов/трансляций. (из Википедии)


Библиотеки JavaScript, которая предоставляла бы подобные возможности, попросту не существует. Если вы погуглите «ffmpeg.js», то найдёте несколько решений, подобных тому что мы собираемся сделать:



Эти библиотеки, конечно, можно использовать, но у них есть свои недостатки:


  1. Используемые версии как FFmpeg, так и Emscripten устарели
  2. Проекты не поддерживаются уже долгое время

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

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

Server Side Rendering для React App на Express.js

Время на прочтение7 мин
Охват и читатели45K
На написание этой статьи меня сподвигло отсутствие какого-либо более-менее полного мануала, как же сделать Server Side Rendering для React приложения.

Когда я столкнулся с этой проблемой, у меня было 2 варианта это сделать, либо Next.js фреймворк, либо используя Express.js.

На инвестигейт Next.js было потрачено около 100 часов, чтоб завести его для нашей готовой крупной OTT платформы, но проблем было настолько много, что мы от него отказались (по этому поводу напишу статью еще), остался выбор за малым, Express.js, про который я и хочу рассказать.

Полный код демо-примера, рассматриваемого в статье, тут.
Читать дальше →

Полная жизнь на Svelte

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

У Радислава Гандапаса есть отличная книга Полная Ж. В ней говорится о том, как оценить направления своей жизни, и как разработать план развития.


Мне захотелось создать инструмент, который будет в моем смартфоне и поможет составить мой радар.


image

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

Дайджест свежих материалов из мира фронтенда за последнюю неделю №386 (21 — 27 октября 2019)

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


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

Friendly Open Space JS: Рендеринг на стороне клиента и создание враппера

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

«Friendly Open Space» — очень молодой фреймворк, но бегать уже умеет :-)


В данной статье по освоению «Friendly Open Space», мы освоим рендеринг шаблона в браузере и запуск приложения на локальной файловой БД.

Ядро фреймворка поддерживает два типа сборки шаблона на клиенте:

  1. Рендеринг полностью выполняется на стороне клиента
  2. Выполняется запрос на рендеринг шаблона серверу, с последующим выводом его в окне браузера.

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

Продвинутые структуры данных. Часть первая: Направленный ациклический граф

Время на прочтение3 мин
Охват и читатели29K
Всем привет! Уже на следующей неделе стартуют занятия в новой группе курса «Алгоритмы для разработчиков». В связи с этим, делимся с вами переводом совсем небольшого, но довольно интересного материала.




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

«Направленный ациклический граф? Никогда об этом не слышал. Не думай, что все обо мне знаешь!», вы можете сказать, но именно этот граф делает возможным контроль версий. Да, Git представляет из себя ациклический граф. В этой статье я поделюсь с вами знаниями о направленных ациклических графах (Directed Acyclic Graphs, DAG), а затем покажу, как написать свой собственный.
Читать дальше →

На практике в 80-90% случаев веб-приложение тормозит из-за фронтенда: интервью с Иваном Акуловым

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


Иван Акулов — Google Developer Expert в веб-технологиях и основатель перформанс-компании PerfPerfPerf. Уже совсем скоро на HolyJS 2019 Moscow он проведет воркшоп, посвященный, как ни странно, перформансу — поиску проблем в React, дебагу медленных приложений и другим рантайм-вещам. 


Чтобы больше погрузить читателей и посетителей HolyJS 2019 Moscow в тему, мы обсудили с Иваном:


  • Самые популярные проблемы перформанса;
  • Чем измерять производительность и в чем могут быть проблемы;
  • Как оптимизировать перформанс;
  • Поиск проблем с производительностью в React;
  • Пользу перехода на HTTP/2 и HTTP/3;
  • Паким фреймворком лучше пользоваться на новых проектах;
  • О пользе WebAssembly;
  • Где искать полезную информацию о перформансе;
  • О чем будет его воркшоп и кому на него будет интересно прийти (и зачем вообще ходить на воркшопы).

Вопросы задают Дмитрий Махнёв и Артём Кобзарь из программного комитета HolyJS.

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

Redux — Не нужен! Заменяем с помощью useContext и useReducer в React?

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

image


Доброго времени суток, Хабровчане!


Хочу рассказать о том, как я недавно узнал о неких "хуках" в React. Появились они относительно недавно, в версии [16.8.0] от 6 февраля 2019 года (что по скоростям развития FrontEnd — уже очень давно)


Прочитав документацию я заострил свое внимание на хуке useReducer и сразу же задал себе вопрос: "Эта штука способна полностью заменить Redux!?" потратил несколько вечеров на эксперименты и теперь хочу поделиться результатами и своими выводами.

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

Каскадная инвалидация кэша. Часть 1

Время на прочтение6 мин
Охват и читатели9.7K
Вот уже несколько лет, как почти каждая статья о передовых подходах к кэшированию рекомендует пользоваться в продакшне следующими методиками:

  • Добавление в имена файлов информации о версии содержащихся в них данных (обычно — в виде хэша данных, находящихся в файлах).
  • Установка HTTP-заголовков Cache-Control: max-age и Expires, управляющих временем кэширования материалов (что позволяет исключить повторную валидацию соответствующих материалов для посетителей, возвращающихся на ресурс).



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

filename: '[name]-[contenthash].js'

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

Элегантные паттерны в современном JavaScript (сборная статья по циклу от Bill Sourour)

Время на прочтение6 мин
Охват и читатели6.1K
Привет, Хабр! Довольно известный преподаватель JavaScript Bill Sourour в своё время написал несколько статей по современным паттернам в JS. В рамках этой статьи мы постараемся обозреть идеи, которыми он поделился. Не то чтобы это были какие-то уникальные паттеры, но надеюсь статья найдёт своего читателя. Данная статья не «перевод» с точки зрения политики Хабра т.к. я описываю свои мысли, на которые меня навели статьи Била.

RORO


Абревиатура обозначает Receive an object, return an object — получить объект, вернуть объект. Привожу ссылку на оригинал статьи: ссылка

Билл писал, что пришёл к способу написанию функций при котором большинство из них принимают только один параметр — объект с аргументами функций. Возвращают они также объект результатов. На эту идею Билла вдохновила деструктуризация(одна из фич ES6).

Для тех, кто не знает о деструктуризации приведу необходимые пояснения по ходу рассказа.
Читать дальше →

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

Ом-ням-ням и валидация данных

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

Всем привет! Поговорим немного про валидацию данных. Что в этом сложного и зачем вообще это может понадобиться, скажем, в проекте написанном на typescript? Typescript довольно неплохо всё контролирует, остаётся максимум проверять ввод пользователя. То есть закинуть в проект десяток регулярок и всё, казалось бы тему можно закрывать, но… Далеко не всегда, а в случае с вебом примерно никогда, весь проект находится в единой кодовой базе и использует одни и теже типы. На стыке таких кодовых баз как раз и возникают ситуации, когда ожидание не соответствует реальности и тут typescript уже не помощник. Несколько примеров:

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

Работаем с куки как с классом javascript

Время на прочтение3 мин
Охват и читатели3.8K
Всем привет! Сегодня я хочу рассмотреть очень популярный вопрос: как работать с куки? Везде предлагаются очень разные методы, но вот какой лучше? Определенного ответа на этот вопрос нет, но я хочу предложить очень удобный способ, и если ты заинтересовался — добро пожаловать под каст.
Читать дальше →

Иваново! Митап в честь 10-летия Node.js

Время на прочтение2 мин
Охват и читатели2.1K
Привет, Хабр! Компания involta вновь приглашает всех продвинутых IT-специалистов, а также тех, кто хочет ими стать, в свой новый просторный офис. На этот раз мы готовим масштабное погружение в мир JavaScript, чтобы поговорить о самой популярной технологии вселенной JS — программной платформе Node.js.

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

Почти всё о будущей HolyJS 2019 Moscow

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


8-9 ноября в Москве состоится HolyJS 2019 Moscow — большая конференция для JavaScript-разработчиков. Раньше мы публиковали на Хабре длинные списки с формальным описанием докладов, но кажется, всё это и так можно прочитать на сайте.

Вместо этого мы собрали почти полный состав программного комитета и обсудили самые важные вещи: что сейчас интересного происходит в мире JavaScript, браузерного фронтенда, серверного бэкенда и в других областях, что про это стоит послушать и как это влияет на программу конференции. Добавили кучу интересных ссылок и красивых фотографий. Заходите под кат, располагайтесь, мы начинаем.
Читать дальше →

Кто он — убийца JavaScript?

Время на прочтение8 мин
Охват и читатели61K
Некоторые языки программирования — это языки, которые любят разработчики. Некоторые языки программирования лишь терпят. Для многих программистов JavaScript попадает в последнюю категорию, являясь языком, который нужно понимать каждому, кто пишет клиентские части веб-проектов, но таким, который никто не обязан любить.

Десять лет назад очевидно было то, что JavaScript имеет все шансы, так сказать, править миром. За эту честь сражались и другие платформы — такие, как Java, Flash и Silverlight. Всем этим трём платформам нужны, для работы в браузерах, специальные плагины. Все три меняют HTML-подход к формированию интерфейсов на что-то другое. Это позволило им уйти далеко вперёд от JavaScript в плане возможностей. Например — они умели проигрывать видео, выводить анимацию, рисовать что-то на экране. Всё это другие платформы поддерживали задолго до появления стандартного тега <video>, механизмов CSS-анимации и HTML-элемента canvas. Но всё это стало причиной их краха. Так, когда в мире начался бум мобильного интернета, и когда это было учтено в HTML, другие платформы оказались не у дел.



Ирония есть и в том, что происходит сейчас. В то самое время, когда JavaScript царствует в мире веб-разработки, появился один проект, вроде бы не особенно масштабный, который, когда-нибудь в будущем, способен стать убийцей JavaScript. То, о чём мы тут говорим, началось с экспериментальной технологии asm.js. Как это может выглядеть? Прежде чем ответить на этот вопрос — давайте немного притормозим и поговорим о современном положении дел.
Читать дальше →

Жизнь по талонам или как мы оптимизируем работу социальных служб

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

Недавно к нам в команду поступил запрос на создание прототипа системы по выдачи билетов, что и было сделано за какие-то 40 часов работы включая обсуждение "ТЗ", проектирование, реализацию и даже некие доработки. Сделали мы и подумали, что такое простое приложение может быть очень даже полезным для широкой аудитории. В итоге, мы слегка поколдовали на IONDV. Framework, придумали социальное предназначение и заодно протестировали IONDV. Studio.


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

Темы секции Frontend на DUMP Казань: ML для фронтенд-разработчика, пиксельная магия, SvelteJS, смех, пот и слезы

Время на прочтение3 мин
Охват и читатели1.7K
«Все об этом говорят, некоторые понимают, (как они думают), а занимаются, по-настоящему, лишь единицы» — цитата программного директора DUMP Казань. Если вы думаете, что вы тертый калач фронтенд, и ничего нового на конференциях не услышите, то загляните на frontend-секцию 8 ноября. Мы вспотели, пока слушали мат.часть некоторых докладов и истории взлетов-падений.


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