Итак, мы с вами добрались до третьей, самой «хардовой» части цикла. Сегодня поговорим про gRPC.Что такое gRPC? Сам RPC — удалённый вызов процедур (иногда вызов удалённых процедур; RPC от англ. remote procedure call) — класс технологий, позволяющих программам вызывать функции или процедуры других программ, делая это так, как если бы они находились в одном адресном пространстве. Буква g в названии — это гугловая реализация этих технологий.Разберем это все на примере.Допустим, что вы — программис…
История возникновения паттерновПеред тем как ответить на вопрос - зачем нужны паттерны проектирование - сделаем немольшой исторический экскурс.С появлением первых программ, разработчики начали выделять в них некоторые повторяющиеся куски программного кода, для повторного их использования. Эти части когда, которые решали конкретные задачи в приложении, начали выделяться в самостоятельные сущности, и среди них начали выделять наилучшие варианты их реализации. Эти самостоятельные сущности в итоге…
В прошлом году я решил поучаствовать в гейм-джеме js13kgames. Это длящееся один месяц ежегодное соревнование по созданию с нуля игры на JavaScript, которая должна уместиться в 13 КБ (в zip). Места как будто не очень много, но с достаточным количеством креативности при таких ограничениях можно достичь многого. Просто взгляните на потрясающие примеры прошлых лет: Underrun (победитель в 2018 году); Ninja vs Evil-corp (победитель в 2020 году); Beat Rocks (второе место в 2021 году). Хотя в прош…
В этой статье разберем еще одну малоизвестную, но не менее полезную возможность @reduxjs/toolkitПредыдущая статья по redux и @reduxjs/toolkitДля начала разберем варианты и возможности типизации createAsyncThunkСанки можно типизировать как при помощи дженериков,createAsyncThunk<Returned, ThunkArg, ThunkApiConfig>()так и при помощи непосредственно аргументовcreateAsyncThunk( 'asyncThunkTypePrefix', (arg: ThunkArg, apiConfig: ThunkApiConfig) => {} )где:- Returned – тип возвра…
В предыдущих публикациях (раз, два) я рассматривал возможности использования внедрения зависимостей в чистом JavaScript (без TypeScript, аннотаций и транспиляции). В данной публикации я продолжаю погружаться в вопросы использования DI в JS и более пристально рассматриваю роль идентификатора зависимости в создании объектов контейнером. Внимание! В данной публикации я не рассказываю, как надо программировать, я лишь показываю, как можно.ПредусловияКак уже было сказано в предыдущих публикациях, з…
В прошлой части мы рассмотрели основные концепты и различия каждого фреймворка. Для большего понимания различий фреймворков, а также выбора, какой из них подходит для ваших проектов и команды, в этой статье рассмотрим подход каждого фреймворка к написанию монолитных частей фронтенд приложений: функционала, управления состоянием и роутинга.Оптимальность функционала и его переиспользованиеAngularJS изначально предполагал использование сервисов для управления поведением компонентов и создания ряд…
Сборщик Vite предоставляет не только хороший функционал, но и удобный API для создания плагинов, позволяющих кастомизировать его практически под любую задачу. То есть, плагины можно писать не только для публикации их в npmjs.com репозитории, но и для автоматизации исключительно своих задач.Сложность написания плагина сравнима со сложностью написания сценария для Gulp или GitHub Actions. Для примера напишем плагин, который будет вставлять фрагменты кода в файл index.html. В зависимости от проек…
Эта статья — перевод оригинальной статьи "Introducing Next.js Commerce 2.0".Также я веду телеграм канал “Frontend по-флотски”, где рассказываю про интересные вещи из мира разработки интерфейсов.ВступлениеСегодня мы с радостью представляем Next.js Commerce 2.0.App Router Ready: Использование компонентов React Server, Server Actions, встроенных лейаутов, метаданных и всех новых шаблонов из недавно выпущенного App Router.Динамическая витрина: Динамическая витрина с Edge-рендерингом, работ…
С самого рождения JavaScript в каком-то смысле был языком для манипулирования текстом — от веб-страничек в самом начале до полноценных компиляторов сейчас. Неудивительно, что в современных JS-движках достаточно много сил уделено оптимизации внутреннего представления строк и операций над ними. В этой статье я хочу рассмотреть, как могут быть представлены строки в движке V8. Попытаюсь продемонстрировать их эффект, обогнав C++ в очень честном бенчмарке. А также покажу, в каких случаях они могут…