Наши услуги

Мы предлагаем

serv2
Сайт визитка - лендинг
Одна шаблонная страница - когда надо сегодня
serv2
Сайт магазин с CRM
Главная страница, каталог товаров/услуг, личный кабинет продавца
serv2
Дизайн для своего сайта
Нарисуем вам новый дизайн
serv2
Доработка существующего сайта
Когда что-то сломалось
serv2
Дизайн печатной продукции
Визитки, баннеры, стикеры и прочее нецифровое, что можно будет потрогать :)
serv2
Не знаю как объяснить - посмотрите сами
И такое делаем :)

Почему мы?

Минимум взаимодействий
Минимум взаимодействий
Из материалов только ваша страница или сайт
Всегда на связи
Всегда на связи
Голосовые, текст, видео - как удобно :)
Бывает и дорого, но есть бесплатно
Бывает и дорого, но есть бесплатно
Качество не зависит от цены
Индивидуальный подход
Индивидуальный подход
Разумеется :)
business
Коротко

О нас

wow5
2015
работаем успешно с
wow3
5
Реализованных проектов

Это начало интересного текста обо мне

Чуть позже напишу тут интересный текст

Партнёров пока нет
Но, ты пиши если что :)

Наши работы

Работа 1
Работа 2

Ознакомьтесь с нашим сервисом и комфортным сотрудничеством

Тарифы

Сайтик фри
0
Точно такой лендинг
checkedВаши фото, контакты и тексты
checkedИмя сайта имя.dencompany.ru
checkedБез мелкого шрифта и камней
Лайт
от
5 000
₽/год
Когда сайт пробник понравился и надо расширяться
checkedСамостоятельное имя сайта
checkedИндивидуальные настройки
checkedCRM (личный кабинет продавца)
checkedБез мелкого шрифта и камней
Хочу всё
от
15 000
₽/мес
Когда налажен процесс или не очень, но надо много и не хочется вникать
checkedСамостоятельное имя сайта
checkedИндивидуальный дизайн
checkedCRM (личный кабинет продавца)
checkedПеренос товаров с текущего сайта
checkedБез мелкого шрифта и камней

Профессионалы своего дела

Наша команда

Фото
Fullstack ведущий программист
Денис

О нас говорят

Отзывы клиентов

Фото отзыв
Я — специалист по SMM
Linda
Дизайнер
Фото отзыв
Отзыв 1
Mark
Backend разработчик
Смотреть все

Все, что нужно знать о бизнесе

Блог

Читать блог
Фото блог
06
10.2026
5 основных инструментов для продвижения интернет-бизнеса
Я — специалист по SMM.
Фото блог
06
10.2026
5 основных инструментов для продвижения интернет-бизнеса
Раньше работала дома.
Фото блог
06
10.2026
5 основных инструментов для продвижения интернет-бизнеса
Я работала дома.

Все, что нужно знать о создании сайтов

Статьи

06.10.2026
SCSS для мидл-разработчика: от синтаксиса до архитектуры SCSS (Sassy CSS) — это один из двух синтаксисов препроцессора Sass, полностью совместимый с обычным CSS. Для разработчика уровня middle недостаточно знать вложенность и переменные: важно понимать компиляцию, организацию кода, работу с миксинами, функциями и модульной архитектурой. Эта статья поможет систематизировать знания и закрыть пробелы, которые часто всплывают на код-ревью и технических интервью. Чем SCSS отличается от Sass и Less Многие путают SCSS и Sass, считая их синонимами, но это разные синтаксисы одного препроцессора. Sass использует отступы вместо фигурных скобок и не требует точек с запятой, тогда как SCSS — это надмножество CSS: любой валидный CSS-файл является валидным SCSS-файлом. Именно поэтому SCSS стал де-факто стандартом в современных проектах. Отличия от Less принципиальнее: Sass реализован на Ruby (и Dart Sass для современной компиляции), имеет более мощную систему функций и модулей, а также строгую типизацию значений. Less ближе к CSS по поведению переменных и не предоставляет такой гибкости в работе с коллекциями и миксинами. Базовый синтаксис, который должен быть доведён до автоматизма Переменные и область видимости Переменные объявляются через $ и имеют лексическую область видимости. Внутри блока переменная, объявленная заново, не перезаписывает внешнюю, если не использовать флаг !global. Локальные переменные видны только внутри блока, где объявлены. Глобальные переменные объявляются на верхнем уровне файла. !default позволяет задать значение по умолчанию, которое можно переопределить до импорта. Вложенность и селектор родителя Вложенность — главная причина проблем с производительностью CSS у начинающих. Мидл-разработчик должен осознанно ограничивать глубину вложенности тремя уровнями и использовать амперсанд & для генерации составных селекторов. Избегайте вложенности ради краткости — она увеличивает специфичность. Применяйте & для псевдоклассов, псевдоэлементов и модификаторов БЭМ. Помните, что & подставляет весь составной селектор, а не только последний элемент. Партиалы, импорт и модули Файлы с префиксом _ называются партиалами и не компилируются в отдельные CSS. Исторически использовался @import, но он устарел: сегодня применяется @use и @forward, которые изолируют пространства имён и предотвращают дублирование кода. @use подключает модуль с собственным неймспейсом. @forward реэкспортирует члены модуля для внешнего использования. @import оставлен для обратной совместимости, но в новых проектах не применяется. Миксины, функции и плейсхолдеры Миксины Миксин — это блок стилей, который можно переиспользовать через @include. В отличие от плейсхолдеров, миксины копируют код в каждое место вызова, поэтому злоупотребление ими раздувает CSS. Миксины стоит применять для параметризуемых конструкций: медиазапросов, генерации сеток, вендорных префиксов. Если стили не принимают аргументов и не зависят от контекста — лучше использовать плейсхолдер %name и @extend. Функции Встроенные функции Sass (map-get, nth, lighten, mix) покрывают большинство задач. Начиная с Dart Sass многие цветовые функции помечены как устаревшие — им на смену пришли модульные аналоги, например color.adjust и color.scale. Пользовательские функции объявляются через @function и обязательно возвращают значение через @return. Их удобно использовать для вычислений на основе карт конфигурации. Плейсхолдеры и @extend Плейсхолдеры не попадают в итоговый CSS, если не были расширены. @extend объединяет селекторы в один список, что уменьшает размер файла, но может непредсказуемо влиять на каскад. Используйте их точечно — например, для базовых классов кнопок или типографики. Структура проекта и архитектура Классический подход — паттерн 7-1: семь директорий (abstracts, base, components, layout, pages, themes, vendors) и один корневой файл main.scss. Такая структура предсказуема для команды и упрощает онбординг новых разработчиков. Abstracts — переменные, миксины, функции, плейсхолдеры. Base — сброс стилей, типографика, базовые теги. Components — независимые UI-блоки: кнопки, карточки, формы. Layout — каркас страницы: хедер, футер, сайдбар, сетка. Pages — стили, специфичные для конкретных страниц. Themes — цветовые схемы и темы оформления. Vendors — сторонние библиотеки и их переопределения. Для мидла важно не просто знать структуру, а уметь обосновать её выбор: где заканчивается компонент и начинается лейаут, как избежать циклических зависимостей между партиалами, почему @use предпочтительнее глобальных переменных. Типичные ошибки и как их избежать Глубокая вложенность — приводит к раздутой специфичности и конфликтам. Использование @import — дублирует CSS и замедляет сборку. Миксины вместо плейсхолдеров — лишний объём итогового файла. Глобальные переменные без !default — усложняют переопределение в темах. Игнорирование source maps — затрудняет отладку в браузере. Отдельно стоит упомянуть производительность: современные
30.09.2026
Оптимизация кода на Perl: разработка игр Perl редко воспринимают как язык для игр, однако его гибкость, богатая библиотека CPAN и высокая скорость прототипирования делают его вполне пригодным для создания текстовых квестов, roguelike-игр и симуляций. Оптимизация кода в таких проектах критична: даже простая логика на больших картах или при высокой частоте кадров может замедлиться. Рассмотрим практические приёмы ускорения Perl-кода без потери читаемости. Профилирование как первый шаг Прежде чем менять код, необходимо найти узкие места. В Perl для этого есть встроенный модуль Devel::NYTProf или более старый Devel::DProf. Запустите игру с профилировщиком и проанализируйте отчёт: какие подпрограммы вызываются чаще всего; сколько времени уходит на регулярные выражения; где происходят лишние копирования структур данных. В играх типичные «горячие точки» — обсчёт коллизий, обновление состояния объектов и рендеринг текстового интерфейса. Оптимизация структур данных Perl-хэши удобны, но на больших объёмах работают медленнее массивов. Для игрового поля (например, тайловой карты) лучше использовать одномерный массив с индексом y * width + x. Это ускоряет доступ в 2–3 раза. Для объектов игрока, врагов и предметов вместо хэшей с произвольными ключами применяйте массивы фиксированной длины или Class::XSAccessor — он генерирует XS-аксессоры, работающие почти как в C. Замените %tile на @tile с известным размером. Избегайте вложенных хэшей там, где хватит плоской структуры. Используйте pack и unpack для хранения больших массивов чисел. Ускорение регулярных выражений Регулярные выражения — мощный инструмент Perl, но в игровом цикле они могут стать тормозом. Если вы парсите команды игрока или диалоги NPC, компилируйте шаблоны один раз с флагом /o или через qr//. Для простых проверок (например, «является ли символ цифрой») используйте index или substr вместо regex. В цикле обновления игры откажитесь от regex вовсе, если это возможно. Управление памятью и копированием Perl копирует данные при передаче в подпрограммы, если не использовать ссылки. В играх с тысячами объектов это критично. Передавайте ссылки на массивы и хэши, а внутри функции работайте с @{$ref}. Избегайте возврата больших списков — возвращайте ссылку. Используйте wantarray для контекстно-зависимого поведения. Применяйте Scalar::Util::refaddr для сравнения ссылок без копирования. Игровой цикл и тайминги Основной цикл игры должен быть максимально лёгким. Разделите логику на фиксированные шаги (например, 60 обновлений в секунду) и рендеринг. Для задержек используйте Time::HiRes::sleep, а не sleep с целыми секундами. Если игра сетевая, выносите тяжёлые вычисления в отдельные процессы через fork или threads. Но помните: потоки в Perl требуют копирования данных, поэтому обмен через очереди должен быть минимальным. Кэширование и мемоизация Многие игровые вычисления повторяются: путь поиска, урон от оружия, генерация случайных чисел с ограничениями. Используйте мемоизацию через Memoize или собственный хэш-кэш. Определите функцию, которая вызывается с одними и теми же аргументами. Сохраните результат в хэше по ключу из аргументов. Перед вычислением проверяйте наличие ключа. Для генерации случайных чисел в играх применяйте Math::Random::MT — он быстрее встроенного rand и даёт лучшие последовательности. Снижение накладных расходов на ООП Классическое ООП в Perl через bless и хэши удобно, но медленно. Для игровых сущностей рассмотрите: Class::XSAccessor — быстрые аксессоры; Mouse или Moo с XS-бэкендом; плоские структуры с функциями вместо методов. Если игра небольшая, откажитесь от объектов вовсе: используйте массивы и подпрограммы, работающие с ними по ссылке. Практический пример: оптимизация коллизий Допустим, у вас есть массив врагов и игрок. Наивная проверка каждого врага с каждым — O(n²). Для 100 врагов это 10 000 проверок за кадр. Решение — пространственное разбиение: Разделите карту на сетку ячеек. Каждый объект привяжите к ячейке. Проверяйте коллизии только внутри соседних ячеек. Это снижает сложность до O(n) и даёт кратный прирост FPS даже на Perl. Итог Оптимизация Perl-кода для игр строится на трёх принципах: измеряй, а не угадывай; избегай копирований и лишних абстракций; используй XS-модули там, где важна скорость. Начните с профилирования, затем перейдите к структурам данных и игровому циклу. Даже скромные изменения — замена хэшей на массивы, компиляция regex и мемоизация — способны ускорить текстовую игру в несколько раз, сохранив гибкость и выразительность Perl.
29.09.2026
Внедрение методологии разработки в ActionScript: руководство для лидера ActionScript, несмотря на завершение официальной поддержки Flash Player, остаётся важным языком для поддержки legacy-проектов, авиационных тренажёров, интерактивных инсталляций и образовательных приложений. Для технического лидера внедрение методологии в такой среде — задача особая: команда часто небольшая, кодовая база унаследована, а сроки сжаты. Ниже — практический план действий. Почему ActionScript требует отдельной методологии Язык имеет ряд особенностей, которые напрямую влияют на организацию процесса: Динамическая типизация при слабом контроле компилятора повышает риск ошибок времени выполнения. Событийная модель на базе EventDispatcher провоцирует запутанные цепочки вызовов, если нет дисциплины. Устаревший инструментарий — Apache Flex SDK, Flash Builder, старые версии Ant и Maven — ограничивает автоматизацию. Дефицит специалистов означает, что знания хранятся у одного-двух разработчиков, а не в команде. Именно поэтому лидеру важно выбрать методологию, устойчивую к неопределённости и не требующую тяжёлой инфраструктуры. Выбор подхода: Kanban с элементами Scrum Для команд ActionScript-разработки оптимален Kanban с ограничением WIP и короткими еженедельными синхронизациями. Полноценный Scrum с двухнедельными спринтами часто не работает из-за непредсказуемых задач по поддержке legacy-кода. Ключевые принципы Визуализируйте поток задач на доске: Backlog, In Progress, Review, Testing, Done. Ограничьте количество одновременных задач на разработчика — не более двух. Введите обязательный code review для каждого изменения в .as и .mxml файлах. Проводите ежедневный стендап на 10 минут и еженедельный обзор метрик. Роль лидера на каждом этапе внедрения Лидер — не наблюдатель, а активный участник. Его задача — снять сопротивление и показать выгоду на конкретных примерах. Первый месяц: диагностика Начните с аудита кодовой базы. Подсчитайте количество файлов, средний размер классов, число FIXME и TODO. Соберите статистику по частоте регрессий. Эти цифры станут основой для аргументации изменений. Второй месяц: пилот Выберите один модуль и примените к нему новую методологию. Покажите команде измеримый результат: снижение числа багов на 20–30% или ускорение релиза. Успех пилота — главный аргумент для масштабирования. Третий месяц: масштабирование Распространите практики на остальные модули. Введите единый шаблон pull request, автоматическую проверку стиля через FlexPMD и обязательное покрытие критичных классов тестами на FlexUnit. Инструменты, которые стоит внедрить Система контроля версий — Git с обязательной стратегией ветвления Git Flow. CI — Jenkins или GitLab CI с шагом сборки через Ant или Maven. Статический анализ — FlexPMD и ASDocs для контроля качества. Тестирование — FlexUnit для юнит-тестов, Selenium с Flash-плагином для приёмочных. Трекинг задач — Jira или YouTrack с настроенными workflow. Типичные ошибки лидера Избегайте крайностей. Не пытайтесь внедрить всё сразу — команда утонет в процессах. Не игнорируйте сопротивление: опытные ActionScript-разработчики часто скептичны к «модным» практикам. Не заменяйте живое общение ритуалами: короткий разговор решает больше, чем формальная встреча. Помните: методология — это инструмент, а не самоцель. Её задача — сделать работу команды предсказуемой, а код — поддерживаемым. Метрики успеха Отслеживайте четыре показателя: Lead Time — время от задачи до релиза. Change Failure Rate — доля релизов, вызвавших инциденты. Deployment Frequency — частота выкаток. Покрытие тестами — доля критичных классов под тестами. Рост первых трёх метрик и увеличение покрытия — объективный признак того, что методология прижилась. Заключение Внедрение методологии в ActionScript-проект — это управление изменениями в среде с ограниченными ресурсами и унаследованным кодом. Лидер должен действовать последовательно: диагностировать, показать результат на пилоте, масштабировать и измерять. Только так команда получит предсказуемый процесс, а продукт — устойчивое развитие, несмотря на устаревающий стек.
Открыть все статьи
bg_1
Остались вопросы? Задавайте их немедленно.
мы проконсультируем совершенно бесплатно