Все потоки
Поиск
Написать публикацию
Обновить
342.69

Веб-разработка *

Делаем веб лучше

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

Создание блога на FastAPI с нуля: JWT, Markdown и современный веб-дизайн

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

В этой статье мы создадим полноценный мини-блог на FastAPI с нуля, используя современные технологии веб-разработки. Вы узнаете, как реализовать JWT-аутентификацию, работать с Markdown и создать привлекательный пользовательский интерфейс.

Мы рассмотрим асинхронную работу с SQLAlchemy 2, включая сложные запросы и связи ManyToMany, а также интеграцию фронтенда с использованием Jinja2.

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

Читать далее

Onlyoffice и Р7 офис: макросы на Javascript (туториал)

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

В этом туториале рассказывается про базовые возможности написания макросов в программе Р7 офис – российском пакете, являющемся ответвлением Onlyoffice. Код примеров одинаково работает в обеих программах. Есть некоторые отличия в деталях интерфейса, но в целом базовые функции работают одинаково.

Главная причина, почему так полюбились макросы в этих пакетах – автор статьи веб-разработчик, а эти макросы пишутся на Javascript :) Они, разумеется, не будут работать в Microsoft Office и других версиях офиса, но макросы чаще создаются для упрощения работы того, кто редактирует файл, а не для тех, кто потом будет смотреть на результат, и этого было вполне достаточно. Эта статья также ограничивается макросами для таблиц, поскольку большая часть автоматизации требуется именно для Excel-файлов.

Cтатья построена по принципу «какие базовые микрозадачи возникают в процессе решения большинства задач и как их решать». Также продемонстрирована доступность большей части функционала классического javascript на примере работы со строками, объекта Math и даже fetch.

Читать далее

PHP и C: как мы заставили кассу АТОЛ 30Ф работать в веб-системе

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

Интеграция оборудования с веб-системами часто становится непростой задачей, особенно когда дело касается специфических устройств, таких как кассы. В одном из наших проектов потребовалось настроить взаимодействие кассы АТОЛ 30Ф с веб-приложением, работающим на PHP. Этот кейс стал для нас важным шагом в изучении возможностей автоматизации и оптимизации бизнес-процессов.

Как все начиналось

Касса АТОЛ 30Ф — это популярное решение для ритейла, но её работа традиционно рассчитана на использование с локальными системами, такими как 1С. Нам же нужно было подключить её к веб-приложению, чтобы обеспечить удалённое управление операциями.

Проблема заключалась в том, что драйверы кассы были написаны на языке C и не имели нативной поддержки PHP. Задача заключалась в том, чтобы связать веб-приложение с физическим устройством напрямую, сохранив его функциональность и производительность. Решение мы нашли в технологии FFI (Foreign Function Interface), позволяющей PHP взаимодействовать с библиотеками на других языках.

FFI: как PHP взаимодействует с C

FFI — это расширение PHP, которое открывает доступ к библиотекам на C. С его помощью можно описать функции библиотеки и вызывать их из PHP-кода, как если бы они были встроенными.

Работа началась с изучения заголовочного файла библиотеки драйвера АТОЛ 30Ф. Этот файл содержал описание ключевых функций, включая команды для управления устройством, передачи данных и получения ответов. Благодаря FFI мы смогли подключить библиотеку и использовать её функции прямо из веб-приложения.

Читать далее

Обновление Laravel 11.34: Fluent-запросы и новые возможности

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

На этой неделе команда Laravel выпустила версию 11.34, представив новые возможности, такие как метод Request::fluent(), хелпер Number::spellOrdinal() для преобразования чисел в порядковые слова, условное определение маршрутов, сокращенные методы для фейковых HTTP-ответов и многое другое.

Читать далее

Pushy на пределе: рост и развитие WebSocket-прокси Netflix

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

Pushy — это WebSocket‑сервер Netflix, который поддерживает долговременные WebSocket‑соединения с устройствами, на которых работает приложение Netflix. Благодаря этому данные с бэкенд‑сервисов можно отправлять на устройства по мере необходимости. При таком подходе нет нужды в постоянного опроса сервисов устройствами. За последние несколько лет Pushy пережил огромный рост, превратившись из сервиса для негарантированной доставки сообщений в неотъемлемую часть экосистемы Netflix. В этом материале вы узнаете о том, как мы развивали и масштабировали сервер Pushy, стремясь к тому, чтобы он хорошо справлялся со своими текущими обязанностями, и к тому, чтобы подготовить его к будущим нагрузкам. Он поддерживает сотни миллионов одновременных WebSocket‑подключений, доставляет адресатам сотни тысяч сообщений в секунду и удерживает стабильный уровень надёжности доставки сообщений в 99,999%.

Читать далее

Призываю переименовать Layers в Feature-Sliced Design методологии

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

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

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

Читать далее

OpenShift: улучшенный Kubernetes или переплата за техподдержку?

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

Привет, Хабр! В прошлых постах мы разобрали особенности Docker на разных системах и его не менее интересного собрата Podman от Red Hat. Сегодня поговорим о ещё одном творении той же компании — OpenShift, который позиционируется, как "корпоративная" версия Kubernetes. Но так ли всё радужно, как рассказывают на презентациях?

Читать далее

Зачем нужен сертифицированный WAF и когда его стоит использовать? Обзор и настройка файрвола веб-приложений

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

Привет, Хабр! Меня зовут Иван Коробов, я ведущий инженер по информационной безопасности в Selectel. В этой статье познакомимся с WAF: узнаем, что это такое и в каких случаях его применение обязательно. Также разберемся, как этот инструмент использовать с продуктами Selectel.
Читать дальше →

JavaScript. Как сделать невероятно быстрый многопоточный Data Grid на 1 000 000 строк. Часть 1/2: нюансы работы с DOM

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

Demo | GitHub

Особенности Fast Data Grid:
— Невероятно быстрый
— Многопоточный
— Всего 523 строчки кода
— Нет зависимостей
— Vanilla JavaScript

Попробуйте скролл и поиск по 1 000 000 строк — Fast Data Grid.

В статье перечислю нюансы работы с DOM. Про многопоточность в следующей статье.

Читать далее

Как мы увеличили выручку и рост посетителей в ~1,5 раза, разработав для Гриль №1 новый сайт и приложение

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

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

Читать далее

Как работает bytearray в Python? Смотрим реализацию на C

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

Привет! Меня зовут Никита Соболев, я core-разработчик языка программирования CPython, а так же автор серии видео про его устройство.

Сегодня я хочу рассказать, как bytearray устроен внутри.

Под катом будет про: интересные оптимизации, разные аллокаторы в CPython, C pointer math, детали устройства данной структуры данных.

Если вам такое интересно или целиком незнакомо – добро пожаловать!

Читать далее

Go отлаживать на проде, избавляться от хардкода и переходить на Ginkgo/Gomega: доклады для гоферов

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

Что делать, если сервис на проде внезапно лег, а куда копать — непонятно. Знакомая ситуация? Запускать отладчик ой как страшно, но иногда это единственное решение. Как подготовиться и избежать фиаско? Несколько полезных советов дал ведущий инженер в платформе. А еще в нашей подборке — хардкор без хардкода на платформенном сервисе с CEL в конфиге и осознанный, но безболезненный переход на Ginko/Gomega для смелых Go-тестировщиков.

Читать далее

Как заставить ИИ на базе LLM писать полноценные приложения на HTML + CSS + JavaScript

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

Вы хотите создавать веб-приложения и игры при помощи голосовых сообщений Телеграм боту?

Тогда читайте эту статью и вы можете даже поиграть в игру, созданную ИИ ;)

Читать далее

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

Работа с куки-файлами хуже сапёрного дела

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

Если в этом посте вам в основном интересно, как что ломается, сразу можете переходить к последнему разделу.

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

Читать далее

Книга: «Рецепты TypeScript»

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

«Рецепты TypeScript» Стефана Баумгартнера – книга из серии «книг рецептов» O’Reilly. Такое название серии объясняется структурой этих книг: вместо бесконечных теоретических выкладок, сквозь которые продираться не то что нелегко, а попросту скучно, авторы предлагают погружаться в материал через «рецепты» – примеры реальных задач, которые сопровождаются лаконичными и понятными решениями и их подробным обсуждением – того, как автор к ним пришёл и почему они являются действенными. В этот ряд «поваренных книг» вписывается и та, о которой мы поговорим сегодня.
Читать дальше →

«Безумный» CSS квиз от гика

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


Хабр, привет! Я стабильно пишу здесь о CSS. Мне радостно, что моя работа вам полезна. Только я немного заскучал. Мне хочется повеселиться и отвести душу. В общем, я придумал новый формат статей в виде квиза.


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


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


Так, вы готовы? Давайте посмотрим, что я вам подготовил.

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

Воспоминания о GeoCities, предтече социальных сетей из 1990-х годов

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

Если в 90-е годы вам приходилось пользоваться интернетом, возможно, вы помните сайты на домене GeoCities. Это популярный веб-хостинг, действовавший в США с 1994 по 2009 год включительно. В Японии он и вовсе продержался вплоть до 2019 года. На пике популярности хостинг GeoCities обслуживал десятки миллионов персональных сайтов. В сегодняшней статье мы кратко пройдемся по истории компании и в заключение посмотрим на наиболее «характерные» сайты ушедшей эпохи 90-х.

Читать далее

Вышел TypeScript 5.7

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

Сегодня мы рады сообщить о выходе TypeScript 5.7!

Если вы не знакомы с TypeScript, то это язык, который развивает JavaScript, добавляя синтаксис для деклараций типов и аннотаций. Этот синтаксис может быть использован компилятором TypeScript для проверки типов нашего кода, а также может быть удален для создания чистого, идиоматического JavaScript-кода. Проверка типов полезна тем, что позволяет заранее выявить ошибки в нашем коде, но добавление типов в код также делает его более читаемым и позволяет таким инструментам, как редакторы кода, предоставлять нам такие мощные возможности, как автозавершение, рефакторинг, поиск всех ссылок и многое другое. TypeScript является надмножеством JavaScript, поэтому любой правильный код JavaScript также является правильным кодом TypeScript, и если вы пишете JavaScript в редакторе, таком как Visual Studio или VS Code, TypeScript также является основой вашего опыта работы с редактором JavaScript! Вы можете узнать больше о TypeScript на нашем сайте typescriptlang.org.

Читать далее

Python REST API: Flask, Connexion и SQLAlchemy (часть 3)

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

Это перевод статьи от Philipp Acsany

В этой третьей части серии вы узнаете, как:

Работать с несколькими таблицами с взаимосвязанной информацией в базе данных
Создавать связи «один ко многим» в базе данных
Управлять связями с помощью SQLAlchemy
Сериализовать сложные схемы данных со связями с помощью Marshmallow
Отображать связанные объекты в клиентском интерфейсе

Читать далее

Observable – удобный state-manager

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

Я вас понимаю. Да – еще один. Но давайте посмотрим, вдруг правда?

Давайте определимся с тем, что такое удобно. Конечно, у нас разные представления об удобстве, поэтому я опишу свои с примерами из api react:

Читать далее

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