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

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

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

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

Забытые технологии: CGI

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

Навеяло комментариями: у людей стойкая ассоциация между Perl как языком и CGI как технологией, использовавшейся в начале веб‑времен.

Всё логично: на тот момент Perl был одним из немногих распространенных скриптовых языков, и естественно что на нем делать CGI‑скрипты было удобнее, чем на shell, например.
Но это не означает что одно к другому было гвоздями прибито.

А вообще технология была по‑своему хорошая: установили вебсервер (как правило — Apache), настроили каталог, из которого запускаются скрипты — и запускай что хочешь.

Попробую показать к чему можно приспособить это в наше время...

Читать далее

DDD против реальности: распространённые ловушки и их решение в NestJS

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

Сложно внедрить DDD в NestJS, не запутавшись в абстракциях? В статье рассмотрены частые ошибки - от комбайна в контроллерах до формальных Value Objects. Разбираем, как выделять слои (Domain, Application, Infrastructure, Interface), правильно использовать Entities и репозитории и создавать поддерживаемую архитектуру.

Читать далее

Сборка Django-приложения при помощи Nuitka в onefile

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

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

Меня зовут Данил, и я старший специалист в компании Увеон. Занимаюсь серверной частью Termidesk Assistant - это утилита для удаленных рабочих столов.

К нам в команду пришла интересная задача, нужно было собрать всю серверную часть в один исполняемый файл (.elf) и в дальнейшем на его основе сделать установочный файл (.deb), чтобы создать и запустить сервис. Все это для того, чтобы оптимизировать наше приложение как по скорости, так и по внешним зависимостям, а также создать возможность использования Termidesk Assistant в локальных изолированных сетях.

О Nuitka мало что известно в Python-среде, особенно мало информации на русском языке, поэтому я решил взяться за написание этой статьи и расписать всё то, что успел собрать за время работы над задачей.

Читать далее

Как и зачем проводить кастдевы при разработке SaaS-продукта (с примерами из опыта)?

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

Предположим, у нас есть проект или идея SaaS продукта. Возможно мы уже разработали первую версию, у нас есть пользователи и в целом мы куда-то движемся. Как понять, что именно разрабатывать дальше, чтобы продукт рос, а пользователи платили? Как понять, какую именно обратную связь принимать от пользователей?

Читать далее

Домашняя аптечка под контролем. Цифровой помощник для забывчивых педантов

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

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

Читать далее

Индекс галерности и удержание сотрудников

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

Галеры - это компании, которым плевать на сотрудников. Это естественным образом приводит к высокой текучке кадров. На мой взгляд, на аутстафе такое встречается чаще, чем на аутсорсе или в продуктовой компании. Потому что на аутстафе увеличение твоей полезности на проекте влияет на оплату примерно никак.

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

Читать далее

Performance и оптимизация TypeScript-типов в больших проектах

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

Узнайте, почему большие TypeScript-проекты начинают "захлёбываться" от рекурсивных типов и обилия импортов, и как с помощью правильной структуры монорепы, настройки tsconfig и диагностики ускорить время компиляции и работу IDE. Рассматриваем инструменты, параллельную сборку, оптимизацию рекурсивных типов и прочие техники, которые помогут сохранить ваш проект быстрым и удобным.

Читать далее

90% разработчиков не понимают принцип инверсии зависимостей из SOLID. DIP — это не про абстракции

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

Зачастую, когда речь заходит про принцип инверсии зависимостей, можно услышать, что инверсия зависимостей (далее DIP) — это что-то там про зависимость от абстракций, и приводятся примеры, где в качестве «плохого» случая, используются конкретные классы, а в исправленном случае, используются абстрактные классы или интерфейсы. Но такая трактовка принципа в корне неверна.

Почему такая трактовка неверна и в чем же суть принципа — об этом и пойдет речь далее.

Читать далее

Релиз MoonShine v3. История и нововведения

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

Я, Данил Щуцкий (CutCode), уже более 2-х лет работаю над open-source админ-панелью для Laravel — MoonShine. 10 декабря 2024 г. состоялся релиз MoonShine v3. В этой статье хотел рассказать о проделанной работе и про основные нововведения по проекту.

Читать далее

Яндекс капча: попытки установки для самых джун’ых

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

Яндекс капча: попытки установки для самых джун’ых.

Для чего?

Почему вдруг «молодо-зелено» учит «плавали-знаем» тому, что и так описано в оф.документации? Дело в том, что эта документация не сильно newbie-friendly. И если вы никогда до этого не ставили на сайт капчу, то имеется ненулевой шанс, что и не поставите, не прочитав данное «крео». Документация написана довольно сносно, но не для тех, кто здесь впервые. Не хватает основы — концепции (хотя раздел концепций в документации имеется…).

Читать далее

TanStack Router: современный и типобезопасный роутер для React

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

Если вы пишете на React и любите TypeScript, вам стоит обратить внимание на TanStack Router - современный, гибкий и полностью типобезопасный роутер. В статье разбираю его ключевые возможности (loaders, кэширование, работу с query-параметрами, SSR) и сравниваем с другими популярными решениями.

Читать далее

Оптимизация запросов в DjangoORM: когда и как использовать Raw SQL

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

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

Читать далее

Дайджест новостей по PHP, Laravel и Symfony за декабрь'2024

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

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

Сергей Пантелеев, Кирилл Несмеянов и Данил Щуцкий собрали новости за декабрь в PHP, Symfony и Laravel (соответственно). Всё самое интересное. Если вы хотите быть в теме происходящего, этот материал точно для вас. 🚀

Читать далее

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

Руководство по Convex. Часть 3

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


Привет, друзья!


В этой серии статей я рассказываю о Convex — новом открытом и бесплатном решении BaaS (Backend as a Service — бэкенд как услуга), которое выглядит очень многообещающе и быстро набирает популярность среди разработчиков.


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


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


В конце мы также рассмотрим расширенный пример использования Convex для разработки полноценного веб-приложения.


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

Как настроить свой первый сервер: инструкция от фронтендера

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

Часто на первом проекте кажется, что самое сложное позади: приложение готово, осталось только показать его миру. Но что, если сервер под угрозой?

В этой статье — простая и проверенная инструкция по настройке безопасного сервера для вашего первого fullstack-приложения. От SSH до SSL и двухфакторной аутентификации — рассказываю, как я защитил свой SaaS-проект Transcribator.

Читать далее

Часть 1: Как я создал идеальный REST API — микросервис инцидентов на Java и Spring

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

В этой статье вы узнаете, как спроектировать и реализовать REST API для микросервиса на Java с использованием Spring Framework.

Рассмотрим лучшие практики, принципы архитектуры, реализацию CRUD-операций и удобные инструменты, такие как Lombok, ControllerAdvice, MapStruct. Эта статья будет полезна как начинающим разработчикам, так и тем, кто хочет улучшить свои навыки в проектировании REST API.

Читать далее

Почему джуны путаются в асинхронном коде (и как научиться с ним работать)

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

Асинхронный код часто становится камнем преткновения для начинающих разработчиков. Почему функции выполняются не в том порядке, зачем нужны промисы, и что делает async/await? В статье я простыми словами объясняю:

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

Если асинхронность вызывает больше вопросов, чем ответов, загляните в статью - там всё по шагам. 🙂

Читать далее

Деплоймент нескольких ASP.Net Core-приложений на VPS сервере и настройка доступа к ним по доменному имени 3-го уровня

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

Деплоймент нескольких ASP.Net Core-приложений на VPS сервере с Ubuntu и настройка доступа к ним по доменному имени 3-го уровня.

Читать далее

Будущее микросервисов: уйдем ли мы к монолитам 2.0?

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

Микросервисы или монолит? Споры об архитектуре программного обеспечения не утихают, но с 2018-2020 годов наметился интересный тренд: компании начинают переоценивать сложность микросервисного подхода. Возвращение к монолитам, но уже с учетом современных инструментов, вызывает жаркие обсуждения в техническом сообществе.

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

Структура FastAPI приложения

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

В данной статья я решил описать свой опыт создания шаблона для проектов, использующих FastAPI, SQLAlchemy, Docker

Читать далее

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