Как стать автором
Поиск
Написать публикацию
Обновить
323.67

JavaScript *

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

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

Календарь тренировок — когда пет-проект чуть больше to-do листа

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров2K

В декабре 2023 я впервые задумался о похудении. Тогда при росте 194 см я весил 116 кг. Раньше я только играл в мини-футбол, вообще не следил за едой и даже не заглядывал в спортзал.

Начал нормально питаться, поменял привычки, добавил силовые тренировки, к сентябрю 2024 скинул около 30 кг. Это был рекорд по минимальному весу.

Сейчас, через полгода, вешу 89 кг. Оказалось, что нарастить мышцы намного труднее, чем избавиться от жира. Надеюсь, что эти +3 кг в основном мышцы. Почему так: теперь могу подтянуться 11 раз вместо 9, и на фото видны изменения — делаю такие сравнения каждые пару месяцев.

Читать далее

Проблемы и их решения при разработке игры на A-Frame

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров1.1K

Привет, Хабр!

A-Frame — интересный фреймворк для создания WebVR-приложений, но, статей о нём в русскоязычном сегменте не так много. А ведь это не плохой инструмент, который позволяет разрабатывать VR-сцены, используя простой HTML-подобный синтаксис и JavaScript.

Если вы когда-нибудь задумывались о создании своей VR-игры или интерактивного 3D-опыта в браузере, но не хотели погружаться в сложные движки вроде Unity или Unreal, то A-Frame — отличный вариант для старта.

В этой статье я разберу проблемы, с которыми можно столкнуться при разработке игры на A-Frame, и покажу, как их решить. Готовы к погружению в мир WebVR? Тогда поехали!

Войти в VR-режим

Как 9.3 уязвимость ждала открытия 3 года

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров6K

В крупнейшем JavaScript фреймворке, Next.js, была найдена критическая уязвимость 9.3/10, на исправление которой Vercel потребовалось 13 дней.

Читать далее

Разбираем Pino: как работает самый быстрый логер для Node.js

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров5.5K

Pino — один из самых быстрых логгеров для Node.js, но как он устроен внутри? В этой статье мы углубимся в низкоуровневые механизмы: разберём, как работают транспорты, чем отличается multistream от pipeline, и как настроить логирование без потери производительности. Вы узнаете, как использовать child loggers, маскировать данные с redact и избегать типичных проблем. Этот материал для тех, кто хочет понять Pino на фундаментальном уровне и применять его с максимальной эффективностью.

Читать далее

Redux: Реанимируем легаси проект

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.2K

Всем привет.

Немного контекста. У нас есть легаси проект, который пишется уже на протяжении порядка пяти лет. Когда мы его стартовали, было принято решение использовать redux в качестве стэйт менеджера. Сейчас не вижу смысла рассуждать на тему того, было ли это решение правильным, имеем то, что имеем, а именно кучу кода, мигрировать который на что-то иное вряд ли получится за адекватное время одновременно с написанием новых фич. А в чем проблема, спросите вы, redux прекрасный инструмент, зачем от него отказываться? Проблема в том, что философия глобальности redux побудила команду писать код, который постепенно превратился в неподдерживаемое нечто. Вообще, конечно, странная штука – глобальные переменные испокон веков считались антипаттерном, но redux, который по сути является глобальным объектом, обрел такую популярность и повсеместное использование.  Но это так, мысли вслух.

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

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

Читать далее

Книга: «Искусство юнит-тестирования с примерами на JavaScript. 3-е межд. изд.»

Время на прочтение4 мин
Количество просмотров1.2K
Привет, Хаброжители!

Если вы хоть раз сталкивались с юнит-тестами, вы знаете, что это одновременно и благословение, и проклятие. С одной стороны, они помогают ловить баги на ранних этапах, с другой — могут превратиться в настоящий ад, если написаны неправильно. Книга «Искусство юнит-тестирования с примерами на JavaScript» от Роя Ошерова и Владимира Хорикова — это глубокий, практический и местами даже философский взгляд на то, как писать тесты, которые действительно работают, а не создают дополнительные проблемы. И в этой статье вы не только узнаете о самой книге, но и мнение о ней от научного редактора российского издания — Дмитрия Колфилда.
Читать дальше →

Postman скрипт для обновления токена авторизации

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров5.7K

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

В какой-то момент мне это надоело, и я задумался как это дело автоматизировать. Узнал, что можно написать Pre-request скрипт для коллекции в постмане, который будет выполняться перед каждым запросом, а уже в этом скрипте делать запрос токена авторизации.

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

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

Итак исходное положение. Имеем некую коллекцию запросов в постмане и все креды для авторизации сохранённые в переменных.

У нас есть запрос Auth, который получает токен авторизации.

Читать далее

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

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров2.7K

Привет, меня зовут Андрей, и я написал книгу.

Нет, не о синтаксисе и не про очередной набор «лучших практик».
А о том, что часто остаётся за кадром — в рефлексии, в мыслях после проектов, в спорах между «пишем быстро» и «делаем правильно».

Читать далее

Создание простого хука для работы с формами в React на основе `zod`

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров1.3K

Создание простого хука для работы с формами в React на основе zod

В этой статье мы реализуем удобный хук useForm, который минимизирует ререндеры и упрощает работу с формами в React, используя FormData для сбора данных и zod для валидации. Рассмотрим разницу между контролируемыми и неконтролируемыми компонентами.

Читать далее

Создание игры с помощью LLM более полугода назад и этой же игры теперь. Что изменилось?

Уровень сложностиПростой
Время на прочтение16 мин
Количество просмотров10K

И вот прошло 9 месяцев, модели стали значительно совершеннее, и качество написания кода улучшилось в разы, если не на порядок.

Тогда в своей статье «Кажется, LLM программирует лучше меня» я с изрядной долей самоиронии описал в подробностях пошагово написание кода игры «Шарики», Lenes (Color Lines).

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

Поэтому проведем такой же эксперимент с новейшей моделью такого же размера и попробуем на экспертном уровне оценить степень прогресса в данной области.

Что изменилось за это время?

Для тех, кто хочет сразу получить конечный ответ: в прошлый раз эта игра была создана за 15 шагов, теперь за 2 шага.

Читать далее

Создание анонимного чата в Telegram: Бот с MiniApp интерфейсом. Часть 2 — VueJS3 + Centrifugo с монетизацией приложения

Время на прочтение33 мин
Количество просмотров4.1K

В первой части мы построили бэкенд на FastAPI, Aiogram, Redis и Centrifugo, заложив основу для анонимного чата в Telegram. Теперь пришло время развернуть фронтенд и создать стильный и отзывчивый интерфейс с использованием VueJS 3 в формате Telegram MiniApp.

В этой статье мы:

Разработаем интерактивный UI с фильтрами поиска, анимациями загрузки и real-time чатом.
Настроим мгновенный обмен сообщениями через Centrifugo без лишних запросов к серверу.
Интегрируем монетизацию для заработка на рекламе в приложении.
Выполним деплой на удаленный сервер и подготовим проект к продакшену.

Если вы хотите создать быстрый, удобный и монетизируемый анонимный чат в Telegram, который работает без задержек и перезагрузок, — эта статья для вас!

Читать далее

16 NPM-пакетов, о которых должен знать каждый Node.js-разработчик

Уровень сложностиПростой
Время на прочтение20 мин
Количество просмотров10K

В этой статье мы рассмотрим 16 обязательных для любого Node.js‑разработчика NPM‑пакетов. Мы подробно расскажем о них, включая их ключевые особенности, как их установить и как именно вы можете использовать их в своих проектах для улучшения ваших рабочих процессов.

Читать далее

Типовой ES-модуль в TeqFW или «сборник вредных советов»

Уровень сложностиСложный
Время на прочтение6 мин
Количество просмотров234

Я ранее описал принципы, которыми руководствуюсь при разработке веб-приложений, а также требования, предъявляемые со стороны платформы TeqFW к JS-коду. В этой публикации я покажу, как выглядит код типового модуля платформы, где не используется статический импорт. Хочу сразу отметить, что кажущаяся сложность материалов обусловлена непривычностью представленных концепций. Наработанный опыт и инерция мышления — сильные вещи! Тем, кто имеет ограниченный опыт в JS-разработке, этот материал будет проще для восприятия, в то время как опытным разработчикам предстоит преодолеть барьер устоявшихся привычек. На мой взгляд, несмотря на то что "TypeScript — это суперсет JavaScript", самыми сложными концепции платформы станут именно для TS-разработчиков.

Ну, вот - я предупредил, дальнейшее чтение - на ваш страх и риск.

Читать далее

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

Что делать когда взяли на первую работу

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров3.4K

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

Погрузиться в этот бред

Frontend-архитектура, которая работает: как я строю Vue-приложения с минимумом сложностей

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров9.5K

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

Если вы тоже ищете способы сделать свой код чище и поддерживаемым, или просто хотите обсудить разные подходы к архитектуре, — добро пожаловать в комментарии. Давайте разбираться вместе!

Разобраться в архитектуре

Классическая жизнь фронтенд-приложений и их сопровождение

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров3.9K

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

Читать далее

Готовим геотаргетинг на nginx + GeoIP2 и связываем с локализацией в Next.js

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров2.1K

В этой статье поделюсь быстрым способом настройки геотаргетинга на nginx + GeoIP2 в связке с локализацией Next.js на примере решения реальной задачи.

Вы узнаете как подключить и настроить GeoIP2 к nginx, как приоритизировать и настроить критерии выбора домена и локали, и как подружить это с Next.js

Читать далее

Зачем изучать создание сайтов и что для этого нужно знать

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров3.8K

Начнем с того, что в настоящее время огромное количество (а если точнее, то 5,5 миллиарда за 2024 год) пользователей по всему Интернету регулярно посещают различные сайты и веб‑страницы в поисках нужной им информации. И Вы в том числе.

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

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

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

Читать далее

Cohere Command — революция, которую мы пропустили

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров14K

🔪 Карусель триальных токенов под ребро облачному LLM провайдеру

Облачный LLM провайдер Cohere предоставляет бесплатно 20 запросов в минуту без проверки кредитной карты. Я просто не смог отказаться от задумки сделать веселую карусель.

Читать далее

Как MobX делает объекты реактивными с помощью Proxy

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров2.6K

Привет! На связи снова Дмитрий — React-разработчик, который стремится разобраться, как всё устроено, и делится информацией с вами.

В прошлой статье мы подробно разобрали, что такое Proxy и как он работает, поэтому повторяться не будем. Сегодня поговорим о том, как MobX использует Proxy, создавая свою "реактивную магию".

Как MobX делает объекты реактивными?

MobX превращает обычные объекты JavaScript в реактивные, что позволяет автоматически отслеживать изменения их свойств и обновлять зависимости. В основе этого механизма лежат два ключевых инструмента: makeAutoObservable и observable. 

Читать далее

Вклад авторов