Наши услуги

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

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 разработчик
Смотреть все

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

Блог

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

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

Статьи

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-проект — это управление изменениями в среде с ограниченными ресурсами и унаследованным кодом. Лидер должен действовать последовательно: диагностировать, показать результат на пилоте, масштабировать и измерять. Только так команда получит предсказуемый процесс, а продукт — устойчивое развитие, несмотря на устаревающий стек.
24.09.2026
Асинхронность в Dart: Event Loop, Future и Stream для мидл-разработчика Dart — однопоточный язык с асинхронной моделью выполнения, построенной на event loop. Понимание этой модели отличает мидл-разработчика от джуниора: джуниор просто пишет await и надеется, что всё сработает, а мидл понимает, почему код выполняется именно в таком порядке, и умеет предсказывать поведение программы под нагрузкой. Однопоточность и изоляты Главный тезис, который нужно усвоить: Dart-код в рамках одного изолята выполняется в одном потоке. Это означает, что никакие две функции не выполняются одновременно. Параллелизм достигается не потоками, а изолятами (isolates), каждый из которых имеет собственную память и собственный event loop. Внутри одного изолята concurrency реализуется через очередь событий. Задача разработчика — не блокировать этот поток долгими синхронными операциями, иначе UI зависнет или сервер перестанет отвечать на другие запросы. Event Loop: две очереди Event loop в Dart обрабатывает две очереди в строго определённом порядке: Microtask queue — очередь микрозадач, обрабатывается до полного опустошения. Event queue — очередь событий: таймеры, I/O, сообщения из портов, колбэки Future. Алгоритм работы цикла: Выполнить весь синхронный код текущего стека. Опустошить microtask queue полностью, включая микрозадачи, добавленные в процессе выполнения. Взять одно событие из event queue и выполнить его. Снова опустошить microtask queue. Повторять шаги 3–4 бесконечно. Отсюда практическое следствие: микрозадачи всегда имеют приоритет над событиями. Если бесконечно добавлять микрозадачи, event queue никогда не будет обработана — поток зависнет. Порядок выполнения на примере Рассмотрим классический пример, который часто спрашивают на собеседовании: print('A') — синхронный код, выполняется первым. Future(() => print('B')) — планирует событие в event queue. Future.microtask(() => print('C')) — планирует микрозадачу. print('D') — синхронный код, выполняется до цикла. Порядок вывода: A, D, C, B. Сначала весь синхронный код, затем microtask, и только потом event. Future: контракт и распространённые ошибки Future<T> — это объект, представляющий результат асинхронной операции, который станет доступен позже. У него три состояния: uncompleted, completed with value, completed with error. Ключевые моменты, которые мидл обязан знать: await не блокирует поток — он приостанавливает выполнение текущей функции и возвращает управление event loop. Ошибка внутри async-функции автоматически оборачивается в Future.error. Необработанная ошибка в Future приводит к unhandled exception и может уронить изолят. Future.wait завершается с ошибкой при первом же отклонённом Future, если не указан параметр eagerError: false. Пример корректной обработки Плохой вариант — ловить ошибку через try/catch вокруг await, но забывать про случаи, когда Future не ожидается. Хороший вариант — явно обрабатывать ошибку на границе: Использовать try/catch вокруг await для синхронного стиля. Использовать .catchError для цепочек без await. Никогда не игнорировать возвращаемый Future без обработки ошибок. Stream: поток данных во времени Stream<T> — это последовательность асинхронных событий. Если Future — это одно значение в будущем, то Stream — это много значений, распределённых во времени. Различают два вида: Single-subscription stream — допускает только одного слушателя, события буферизуются до подписки. Broadcast stream — допускает множество слушателей, события теряются, если никто не слушает. Мидл должен понимать разницу между StreamController и StreamController.broadcast, а также уметь трансформировать потоки через map, where, asyncMap, transform. Backpressure и управление потоком Одна из частых проблем при работе со Stream — backpressure, когда производитель генерирует события быстрее, чем потребитель успевает их обрабатывать. Решения: Использовать await for, который естественным образом приостанавливает обработку. Применять pause() и resume() на подписке. Ограничивать буфер через StreamController с явной стратегией. Zone и перехват асинхронных ошибок Zone — механизм, позволяющий перехватывать и обрабатывать асинхронные ошибки и управлять контекстом выполнения. Фреймворки вроде Flutter используют зоны для перехвата ошибок в кадре рендеринга. Мидл должен знать, что runZonedGuarded позволяет обернуть всё приложение и логировать любые необработанные асинхронные исключения. Практические выводы Не блокируйте event loop синхронными вычислениями — выносите их в изолят через compute или Isolate.run. Помните о приоритете microtask queue: не злоупотребляйте scheduleMicrotask. Всегда обрабатывайте ошибки в Future и Stream — иначе получите молчаливый сбой в продакшене. Различайте single-subscription и broadcast streams и выбирайте подходящий тип осознанно. Используйте Zone для централизованного логирования асинхронных ошибок. Понимание event loop — это фундамент, на котором строятся в
21.09.2026
Как объяснить бабушке внедрение методологии в PHP Представьте, что вы пришли к бабушке на кухню и она печёт пироги. У неё есть проверенный рецепт, любимая скалка и порядок действий, который она повторяет каждый раз. В программировании на PHP такой порядок действий и называется методологией. Внедрить методологию — значит договориться всей командой готовить пироги одинаково, чтобы результат был предсказуемым и вкусным. Что такое методология простыми словами Методология — это свод правил, по которым программисты пишут код. Она отвечает на вопросы: кто что делает, в каком порядке, как проверяем результат и как исправляем ошибки. Без неё каждый разработчик варит свою кашу, и в итоге на кухне хаос. Три кита любой методологии Планирование — сначала решаем, что готовим, потом берёмся за продукты. Повторяемость — один и тот же рецепт даёт один и тот же пирог. Контроль — пробуем блюдо до того, как подать гостям. Зачем это нужно именно в PHP PHP — язык простой и доступный, поэтому на нём легко писать код «как получится». Но когда проект растёт, такой код превращается в клубок спагетти. Методология помогает навести порядок: разделить ответственность, использовать фреймворки, писать тесты и проводить ревью кода. Пример из жизни бабушки Если бабушка печёт одна, ей достаточно памяти. Но если она позовёт внуков на помощь, придётся объяснить: кто месит тесто, кто лепит, кто следит за духовкой. Это и есть внедрение методологии на кухне. Пошаговый план внедрения Выбрать методологию, подходящую команде: Scrum, Kanban или лёгкий Scrumban. Договориться о правилах кода: стандарты PSR, единый стиль, обязательные комментарии. Настроить инструменты: Git, Composer, PHPUnit, статический анализатор. Разбить работу на небольшие задачи и распределить роли. Проводить регулярные встречи: планирование, обзор, ретроспектива. Постепенно улучшать процесс, а не ломать всё сразу. Ошибки, которых стоит избегать Внедрять всё и сразу — команда утонет в правилах. Копировать чужой процесс без учёта своих задач. Забывать про обучение и поддержку новичков. Считать методологию самоцелью, а не инструментом. Как понять, что всё получилось Хороший признак — когда бабушка и внуки пекут пироги вместе, никто не путается, а гости хвалят результат. В программировании это значит: код понятен, ошибок меньше, релизы выходят вовремя, а команда не выгорает. Методология — это не бюрократия, а способ сделать общую работу спокойной и предсказуемой. Внедряйте постепенно, обсуждайте с командой и не бойтесь корректировать правила. Тогда PHP-проект будет радовать и разработчиков, и пользователей.
Открыть все статьи
bg_1
Остались вопросы? Задавайте их немедленно.
мы проконсультируем совершенно бесплатно