Рубрика «разработка» - 113

[Советуем почитать] Предыдущие 14 частей цикла

Часть 1: Обзор движка, механизмов времени выполнения, стека вызовов
Часть 2: О внутреннем устройстве V8 и оптимизации кода
Часть 3: Управление памятью, четыре вида утечек памяти и борьба с ними
Часть 4: Цикл событий, асинхронность и пять способов улучшения кода с помощью async / await
Часть 5: WebSocket и HTTP/2+SSE. Что выбрать?
Часть 6: Особенности и сфера применения WebAssembly
Часть 7: Веб-воркеры и пять сценариев их использования
Часть 8: Сервис-воркеры
Часть 9: Веб push-уведомления
Часть 10: Отслеживание изменений в DOM с помощью MutationObserver
Часть 11: Движки рендеринга веб-страниц и советы по оптимизации их производительности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 13: Анимация средствами CSS и JavaScript
Часть 14: Как работает JS: абстрактные синтаксические деревья, парсинг и его оптимизация

В наши дни использование классов являются одним из самых популярных способов структурирования программных проектов. Этот подход к программированию применяется и в JavaScript. Сегодня мы публикуем перевод 15 части серии материалов, посвящённых экосистеме JS. В этой статье речь пойдёт о различных подходах к реализации классов в JavaScript, о механизмах наследования и о транспиляции. Начнём мы с рассказа о том, как работают прототипы и с анализа различных способов имитации наследования, основанного на классах, в популярных библиотеках. Далее мы поговорим о том, как, благодаря транспиляции, можно писать JS-программы, использующие возможности, которые либо отсутствуют в языке, либо, хотя и существуют в виде новых стандартов или предложений, находящихся на разных стадиях согласования, пока не реализованы в JS-движках. В частности, речь пойдёт о Babel и TypeScript и о классах ECMAScript 2015. После этого мы разберём несколько примеров, демонстрирующих особенности внутренней реализации классов в JS-движке V8.

image

Читать полностью »

Дипломные работы выпускников Технопроектов, весна 2018 - 1

Дважды в год мы набираем студентов в наши Технопроекты, и дважды в год выпускаем лучших из них только после защиты дипломного проекта, доказывающего, что не зря они два года впитывали IT-премудрости. 22 мая прошла очередная защита, на которой кроме выпускников Технопарка (МГТУ), Технотрека (МФТИ) и Техноатома (МИФИ) впервые выступали и ребята из нашего Технополиса (Санкт-Петербургский политехнический университет им. Петра Великого). А еще новшеством этой защиты стали 4 выпускных проекта, которые делали совместно студенты из российских ВУЗов и студенты Worcester Polytechnic Institute (Массачусетс, США). И сегодня мы расскажем о шести самых интересных выпускных проектах этой защиты.
Читать полностью »

[Советуем почитать] Предыдущие 13 частей цикла

Все мы знаем о том, что JavaScript-код веб-проектов может разрастаться до прямо-таки огромных размеров. А чем больше размер кода — тем дольше браузер будет его загружать. Но проблема тут не только во времени передачи данных по сети. После того, как программа загрузится, её ещё надо распарсить, скомпилировать в байт-код, и, наконец, выполнить. Сегодня мы представляем вашему вниманию перевод 14 части серии материалов об экосистеме JavaScript. А именно, речь пойдёт о синтаксическом анализе JS-кода, о том, как строятся абстрактные синтаксические деревья, и о том, как программист может повлиять на эти процессы, добившись повышения скорости работы своих приложений.

image
Читать полностью »

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

Вот первый: Вот второй:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 .filter(int => isEven(int))
 .filter(int => isBiggerThan(3, int))
 .map(int => int + 1)
 .map(int => toChar(int))
 .filter(char => !isVowel(char))
 .join('')
// 'fhjl'
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 .filter(isEven)
 .filter(isBiggerThan(3))
 .map(plus(1))
 .map(toChar)
 .filter(not(isVowel))
 .join('')
// 'fhjl'

«Готов поспорить, что второй вариант отличается гораздо лучшей читабельностью, чем первый», — говорит автор материала, перевод которого мы сегодня публикуем. По его словам — всё дело в аргументах методов filter() и map().

Секреты JavaScript-кухни: специи - 1

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

Есть у меня мечта: разработать собственную компьютерную игру.

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

Чего не хватает тем, кто хочет разработать игру?

Я считаю, что всего три основных компонента влияют на то, хотим мы играть в какую-то игру, или же не хотим.

  1. Игровая механика.
  2. Сеттинг.
  3. Идентичность.

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

1. Самый интересный момент в написании компьютерной игры — это игровые механики.
Их нельзя полноценно передать ни текстом, ни статичными картинками. Игровые механики — это процесс.

Так или иначе, именно здесь нужен прототип. Трёхдневный прототип с самыми основными функциями игры, который будет описываться всего парой фраз. Если он увлечёт вас настолько, что вы сами захотите продолжения — всё более или менее правильно. Можно дополнять и украшать.

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

Вы будете смеяться, но получилось.

Зелёный шарик, 16*16 пикселей размером, убегал от красного шарика…

— О, круто! А можешь так же, но в 3D? — подзадоривал меня старший брат.

Именно он показал мне, что такое программирование, когда я был совсем ребёнком.

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

Библиотека ненаписанных книг - 1
Читать полностью »

Материал, перевод которого мы представляем вашему вниманию, посвящён исследованию особенностей объектных литералов в JavaScript, в частности — новшеств, которые появились в свежих версиях стандарта ECMAScript.

JavaScript обладает мощной и удобной возможностью создания объектов с использованием объектных литералов. Стандарт ES2015 (ES6) упрощает работу с объектами при создании приложений для современных браузеров (кроме IE) и для платформы Node.js.

Новшества объектных литералов в JavaScript ES6 - 1
Читать полностью »

image

Привет! Мы закрываем сезон Университетов DataLine семинаром в Санкт-Петербурге.

28 июня ждем вас на семинар «Виртуальная инфраструктура для разработчиков: возможности, приложения и сервисы». Поговорим о том, как облачная инфраструктура и сервисы могут быть полезны разработчикам. Рассмотрим примеры развертывания тестовых сред и работу с контейнерами и приложениями.

Осталось всего несколько мест, регистрация обязательна!
Читать полностью »

Конструкция async/await появилась в стандарте ES7. Её можно считать замечательным улучшением в сфере асинхронного программирования на JavaScript. Она позволяет писать код, который выглядит как синхронный, но используется для решения асинхронных задач и не блокирует главный поток. Несмотря на то, что async/await — это отличная новая возможность языка, пользоваться ей правильно не так уж и просто. Материал, перевод которого мы публикуем сегодня, посвящён разностороннему исследованию async/await и рассказу о том, как использовать этот механизм правильно и эффективно.

image
Читать полностью »

Привет! Мы продолжаем нашу экспериментальную серию статей, наблюдая за которой вы можете в реальном времени влиять на ход создания игры на UWP. Сегодня мы поговорим о постоянно возникающем в рядах разработчиков вопросе — «Где хранить данные?». Присоединяйтесь и делитесь своими мыслями в комментариях!

А где вы храните данные? - 1Читать полностью »

Материал, перевод которого мы сегодня представляем вашему вниманию, посвящён разработке чат-бота для Facebook Messenger. Бот, который называется Aww Bot, общаясь с пользователями, будет отправлять им картинки симпатичных котов и собак.

Разработка чат-бота для Facebook Messenger на node.js - 1
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js