Обновить
194.42

JavaScript *

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

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

Оверинжиниринг в бэкенде: «промышленные» решения, которые чаще вредят, чем помогают

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

За годы работы с TypeScript, Java, Kotlin и Go я не раз сталкивался с одним и тем же паттерном: команда внедряет «правильное» архитектурное решение — и получает не гибкость, а технический долг.

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

В результате принцип KISS — «Keep It Simple, Stupid» — работает не хуже, чем в 1930-х, когда его впервые сформулировали в среде авиационных инженеров. В этой статье — мой личный список подходов, которые в 90% случаев (особенно в REST-серверах) приносят больше вреда, чем пользы.

Читать далее

Новости

Почему Google Таблицы лучше Excel для частного инвестора, и при чем здесь Apps Script

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

Каждый инвестор рано или поздно сталкивается с необходимостью ведения учёта своего портфеля, особенно если брокеров несколько. В перв��м приближении для этого подходит Excel: многим знаком, работает локально и почти всегда установлен на компьютере. Подходит для расчета доходности, учета дивидендов.

Однако механическая работа со временем утомляет, а возможности Excel для автоматизации онлайн получения котировок ограничены. Google Таблицы решают эту проблему: это изначально облачный инструмент. Чтобы получить актуальную цену акций, достаточно одной формулы.

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

Читать далее

URLPattern — pattern matching, который мы ждали

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

Привет, Хабр! На связи снова Сергей, ведущий фронтенд-разработчик из Центрального университета. В последнее время я преисполнился URL и опять хочу про него рассказать. 

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

Читать далее

Веб. К черту фреймворки! Пишем свой starter-kit с роутером и сторами. Часть 2

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

Пробуем собрать свой минималистичный starter-kit.

Туториал из трех частей.

В предыдущей части мы реализовали причудливый конфиг на webpack + собственный роутинг.

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

В следующей рассмотрим работу с web-компонентами.

Читать далее

DANILOS

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

Буду хвастаться своим прекрасным рабочим столом на macOS.

От читателей жду комментарии на тему того, как это можно улучшить, потому что мои решения далеки от идеала — сделано «на коленке».

Часть этого процесса я уже описывал в предыдущей статье.

Как и многие, я понял, что рабочий стол — это не место для файлов и папок.

Это не секрет, что возможность класть туда всё нужное и ненужное — ужасная практика, порождающая хаос.

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

Примерно 10 лет назад я понял, что хочу видеть там канбан-доску.

Зачем? Чтобы это постоянно включало в работу.

Как я это сделал:
Основной template, — Vite + Tailwind, с вертикальными фреймами и кнопкой для открытия меню. Plash опенсерсная утилита которая заменяет рабочий стол на safari с любой ссылкой или локальным html. и любые веб приложения.

Читать далее

Числовой тип данных с плавающей точкой float IEEE 754

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

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

Читать далее

Ну это полный мэтч! Как мы сделали бота для знакомств в чатах

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

Всем привет, я Иван, продакт-менеджер. И я остою в айтишном чате — человек двести, может, чуть больше. Там всё как обычно: обсуждаем новости, спорим про фреймворки, кидаем мемы.

Сообщений очень много, и когда новички приходят, пишут интро о себе — через пару минут их уже никто не видит, всё уходит в ленту. В какой-то момент стало интересно: можно ли эту проблему решить алгоритмом?

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

Читать далее

Obsidian-совместимые заметки в своём приложении: Nest.js, Prisma, gray-matter

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

В этой статье я покажу, как связать Nest.js и Obsidian: хранить заметки в формате Markdown прямо из бэкенда, редактировать и синхронизировать их с базой данных. Если вы тоже любите Obsidian и пишете pet-проекты — это может вам помочь.

Читать далее

Я попробовал Solid.js — и начинаю ненавидеть React

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

Команда JavaScript for Devs подготовила перевод статьи, в которой разработчик с восьмилетним опытом работы с React делится неожиданным открытием: Solid.js оказался проще, логичнее и… приятнее в использовании. Меньше перерендеров, ближе к нативному вебу, честное поведение API и настоящие веб-компоненты — кажется, у React появился достойный конкурент.

Читать далее

Протоколы (устройства) системы DevelSCADA (часть 2)

Время на прочтение5 мин
Количество просмотров249

Протокол OPC является наиболее универсальным, так как поддерживает все популярные типы данных и механизмы обмена информации, поэтому многие SCADA системы в принципе не поддерживают никаких дополнительных протоколов, помимо OPC, и подключение к другим протоколам осуществляют посредством сторонних OPC серверов. В DevelSCADA же работа с наиболее популярными протоколами ведется напрямую, а OPC используется для работы с протоколами, поддержка которых еще не реализована в ядре.

В DevelSCADA используется версия протокола OPC UA, так как он на данный момент является наиболее популярным и кросплатформенным. Так же протокол OPC UA имеет множество механизмов по защите соединения, что может быть актуальным при работе по незащищенном каналам связи (к примеру через сеть интернет).

Читать далее

Я мигрировал свой монорепозиторий на Bun — вот мой честный отзыв

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

Недавно я перенёс Intlayer (решение для i18n) — монорепозиторий, состоящий из нескольких приложений (Next.js, Vite, React, design-system и т. д.) — с pnpm на Bun.

Кратко (TL;DR): если бы я знал заранее, я бы, вероятно, не делал этого.
Я думал, что это займёт пару часов. В итоге ушло около 20 часов.

Меня привлекло обещание «всё в одном» и впечатляющие показатели производительности.
Я попробовал, я собрал — всё билдилось молниеносно, круто.
Затем я сделал коммит… и столкнулся с первой проблемой.

Читать далее

Как я полюбил LESS и с его помощью добавил в CSS статическую типизацию на основе венгерской нотации (часть 3)

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

В первой части я рассказывал об основах CSS-препроцессора LESS: переменных, миксинах, и некоторых полезных приёмах. Во второй — про автоматическую проверку файлов с картинками и генерацию CSS из них же прямо в процессе компиляции, про то, как сделать изображения адаптивными, про миксины в роли функций и про основы написания LESS-плагинов на Javascript'е (они сильно расширяют базовые возможности LESS).

Cегодня же мы погрузимся в тему плагинов достаточно глубоко и добавим в CSS… ни много ни мало — статическую типизацию с валидацией! Которая, как и полагается системе статических типов, позволит отлавливать семантические ошибки ещё на уровне компиляции, а значит — писать более безопасный CSS-код с меньшим количеством сюрпризов. Кроме того, мы попробуем сделать систему разрешения потенциальных конфликтов, связанных с глобальностью таких элементов CSS, как анимации. Полный код плагина ищите в конце статьи.

В процессе же поговорим о разных тонкостях написания миксинов, которые могут быть полезны.

Добро пожаловать под кат!

Читать далее

Выбор языка программирования для создание более трудных проектов: как сделать правильный выбор новичку?

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

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

Сложность языка зависит не только от его особенностей, но и от вашего опыта и готовности разбираться в материалах. Объективного критерия нет.

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

Читать далее

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

Препарируем signal: непростой примитив

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

Всем привет! Меня зовут Кулаев Сергей, я — Angular-разработчик в ПСБ. В этой статье я поделюсь с вами внутренним устройством примитива signal (сигнал). В Angular уже достаточно давно появилась возможность обрабатывать изменения данных через этот примитив, и большинству людей он уже знаком, но мало кто понимает, как он устроен под капотом. В ходе статьи мы разберём, что из себя представляет сигнал, в каких библиотеках он встречается, а также напишем свою собственную наивную реализацию сигнала и на её основе детально разберём принцип его работы. Статья будет полезна тем, кто при изучении технологий любит построить свой «велосипед», чтобы разобраться, как это работает на пальцах.

Читать далее

Как я подружил бэкенд с API AmoCRM: связь сущностей, отправка данных, защита от дублей

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

Интеграция простой формы с AmoCRM на «бумаге» выглядит просто. Кажется, что можно просто отправить контакт, создать лид, прикрепить товары к сделке — и готово». На практике всё наоборот.

Честно говоря, документация AmoCRM сначала меня запутала. Я полез гуглить по моей ситуации (связка формы с CRM) почти ничего. Посмотрел ролик на YouTube про библиотеку. Понял основы, но всё равно оставалось куча вопросов.

Дело в том, что AmoCRM в упор не видит дубликаты контактов и товаров. При очистке дублей из админки ничего не удаляется. Все из-за уникальных ID, которые назначаются при отправке данных.

После множества экспериментов, я все таки смог подружить небольшой бэкенд и API AmoCRM.

Читать далее

Протоколы (устройства) системы DevelSCADA (часть 1)

Время на прочтение7 мин
Количество просмотров798

Система DevelSCADA, как и любая SCADA система, в первую очередь предназначена для взаимодействия с каким либо физическим оборудованием. Для этого система поддерживает набор популярных протоколов связи с различными устройствами автоматики. В DevelSCADA, для удобства работы, реализован механизм «Устройств», который позволяет без необходимости обращаться к низкоуровневым данным протокола, посредством графического интерфейса, настраивать связь с устройством и формировать список переменных, обмен значениями которых необходим в процессе работы с этим устройством.

Читать далее

Bricks: от идеи до UI за 60 секунд

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

Привет! Я — Дмитрий Гусев, Frontend-разработчик в команде Bricks в кластере Core Services в Авито, в статье подробно рассказываю, как и зачем мы внедрили механизм предварительного просмотра проектируемого интерфейса в реальном времени прямо в админку Bricks: зачем это понадобилось, как всё устроено под капотом и с какими неожиданностями столкнулись по пути.

Предварительно просмотреть!

Использование Yandex Embedder на JavaScript

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

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

Но сначала несколько слов о том, почему Embedder — это очень важно.

Читать далее

Создаём AI-ассистента для код-ревью с нуля

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

С нуля создаем Node.js-сервис для GitHub, который использует LLM (OpenRouter) для построчного код-ревью Pull Request. Разберем: верификацию вебхуков, борьбу с непредсказуемостью LLM и превращение хаоса в отказоустойчивый инструмент.

Начать внедрение LLM

Настройка Express 5 для продакшна в 2025 году. Часть 2

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

Эта статья поможет вам создать приложение Express 5 с поддержкой TypeScript.

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

Настоятельно рекомендую писать код вместе со мной. Мы будем использовать подход "Разработка через тестирование" (test-driven development, TDD) для создания REST API, который может стать основой вашего следующего приложения Express.

Читать далее
1
23 ...

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