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

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

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

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

Как я фотоконкурс в группе ВК изобретал

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

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

А кто-то быть может идей по улучшениям накидает - милости прошу!

Здесь будет немного ссылок - например, на результаты уже завершившихся конкурсов - но надеюсь это допустимо, т.к. всё это касается некоммерческой группы - это лишь кружок по интересам - энтузиасты, которые в XXI веке заряжают фотоплёнкой старые камеры и пытаются что-то фотографировать :) Как следствие - описываемый способ не очень хорош для "продвижения", для этого как раз лайки и репосты самое то - наш же подход имеет цель именно дать возможность посоревноваться-поразвлечься имеющимся подписчикам.

Итак, что же там удалось придумать

Почему текстовые форматы не идеальны в разработке: пример на JSON

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

JSON - наш повседневный помощник, но вместе с другими текстовыми форматами он может преподнести неприятные сюрпризы: потеря точности чисел, громоздкие файлы, путаница с датами. Рассказываю, как этих проблем избежать и повысить эффективность с помощью стриминга в Node.js, а также MessagePack и Protobuf. Узнайте, где подводные камни и как их обходить на практике!

Если хотите понять, в чём именно проблема на иллюстрации, загляните в статью — там всё разобрано :-)

Читать далее

React на сервере — это не PHP

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

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

Некоторое время назад наткнулся на интересную статью в блоге Кристофера Артмана, которой он сравнивает до чего эволюционировал Реакт в наше время и задается вопросом, о том, не вернулись ли мы в отправную точку, и Реакт на сервере - это старый добрый PHP.

Кроме самой статьи мне интересно было почитать комментарии к ней. И там довольно большое количество людей не согласилось с автором.

Под катом Вы найдете вольный перевод (или даже рерайт) этой статьи, а с оригиналом можно ознакомится по ссылке.

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Для чего?

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

Читать далее

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

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

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

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

Читать далее

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

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

В рамках данной темы будут рассмотрены способы оптимизации запросов в 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.8K

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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