Рубрика «Блог компании ДоксВижн»

Метапрограммирование — вид программирования, связанный с созданием программ, которые порождают другие программы как результат своей работы, либо программ, которые меняют себя во время выполнения. (Википедия)

Говоря более простым языком, метапрограммированием в рамках JavaScript можно считать механизмы, позволяющие анализировать и менять программу в режиме реального времени в зависимости от каких-либо действий. И, скорее всего, вы так или иначе используете их при написании скриптов каждый день.

Читать полностью »

При разработке приложений на React довольно неудобно создавать независимые друг от друга компоненты, т.к. стандартным способом для обмена данными между ними является "Lifting State Up". Этот подход постепенно загрязняет ненужными свойствами промежуточные компоненты, делая их неудобными для повторного использования.

image

Наиболее популярными средствами решения этой проблемы (и некоторых других) являются такие библиотеки как Redux и Mobx, позволяющие хранить данные в отдельном месте и передавать их компонентам напрямую. В этой статье я хочу продемонстрировать наш подход к решению данного вопроса.
Читать полностью »

Когда я задумался о внедрении зависимостей в TypeScript, то первое, что мне посоветовали — inversify. Я посмотрел эту и другие библиотеки, реализующие паттерн Service Locator, и даже сделал свою собственную — typedin.

Но когда я работал над версией typedin 2.0, то в конце концов понял, что вообще никакой библиотеки не нужно. В TypeScript есть все необходимое.

Нативная инверсия зависимостей в TypeScript и React - 1Читать полностью »

В этой статье я расскажу, как мы генерируем документацию из комментариев в коде TypeScript. В целом, все довольно просто, если требования простые. Впрочем, донастроить под себя тоже не очень трудно.

Что у нас получилось — можно посмотреть здесь.

Вжух и готово — генерируем документацию из TypeScript кода с typedoc - 1Читать полностью »

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

Эта статья во многом вдохновлена докладом Павла Силина на РИТ 2017, однако здесь много моего собственного опыта и размышлений. Примеры будут на React + TypeScript, однако подход не привязан к какой-либо технологии.

Заменяй и властвуй — подход SOLID для разработки повторно используемых компонентов в вебе - 1Читать полностью »

Глобальная область видимости (aka namespace в TypeScript) — уже давно не круто. Можно долго перечислять преимущества модулей (ES6 модулей, в частности), но лично для меня решающим стала возможность использовать SystemJS для динамической загрузки исходников и Rollup, для сборки бандла.

Однако, первое, с чем пришлось столкнуться при внедрении ES6-модулей- безумное количество import выражений, с безумным количеством точек внутри:

import { FieldGroup } from "../../../Common/Components/FieldGroup/FieldGroup";

Ужасный import кракен — как использовать ES6-модули и не сойти с ума - 1Читать полностью »

Все чаще и чаще мы стали выводить свои программы в облака. Хорошо это или плохо — рассуждать не станем, но вот о ситуации, когда необходимо состыковать локальные программы с облачными, мы сегодня с вами немного поговорим: в разрезе нашей СЭД Docsvision и установленного локально на пользовательский ПК любого почтового клиента. Представим себе задачу: открыть ссылку на «карточку» Docsvision, которая пришла по почте пользователю в почтовый клиент, установленный локально на его компьютере. Изучив вопрос, проанализировав опыт наших партнеров, мы нашли решение, которым и хотим с вами поделиться.
Читать полностью »

3 месяца назад я вышла из декретного отпуска и, вновь приступив к работе бизнес-аналитика, прочувствовала на себе одну прописную истину. Было бы легче возвращаться к работе, заранее продумав, как сохранить себя «в профессиональной форме» за время декрета. IT-сфера настолько изменчива, что порой не успеваешь за новыми методологиями и технологиями, даже постоянно находясь внутри процесса, а уж выпадение из него — как минимум, на год — и вовсе может сыграть злую шутку.

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

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

Декретный отпуск в IT, или как не потерять себя в профессии - 1
Читать полностью »

Одна из особенностей Angular, присущая и первой и новой версии — высокий порог вхождения. Новый Angular, помимо всего прочего, трудно даже запустить. А и запустив, легко получить 1-2 Мб скриптов и порядка нескольких сотен запросов при загрузке hello world страницы. Можно, конечно, использовать всякие стартеры, seed'ы или Angular CLI, но для использования в серъезном проекте нужно самому во всем разбираться.

В этой статье я постараюсь описать, как настроить удобную среду разработки с использованием SystemJS, и production сборку Angular приложения на основе Rollup, с выходом около 100кб скриптов и нескольких запросов при открытии страницы. Использовать будем TypeScript и SCSS.

Попробовать все в деле можно в моем angular-gulp-starter проекте.

Angular — настройка среды разработки и production сборки с AOT-компиляцией и tree-shaking (Gulp, Rollup, SystemJS) - 1Читать полностью »

Пользователь Василий обращается в техподдержку «Не выделяется номер при регистрации документа ошибка 1234, для исправления приходится перезапускать службу сервера приложений. Ошибка возникла 05.05 приблизительно в 15:10-15:50. Воздействие инцидента: Снижена эффективность работы пользователей».

А на самом деле Василий не сказал, что перезапуск службы сервера приложений приводит к ошибкам при обновлении пользовательских онлайн отчетов у всех работников компании. Другими словами, ни один пользователь не может посмотреть актуальные онлайн отчеты по существующим документам, что равносильно остановке документооборота в компании в принципе. Получается, Василий не дал необходимой информации для того, чтобы его обращению присвоили правильный приоритет – и это несмотря на то, что у него была такая возможность. И, если реальный приоритет ниже заявленного — это не так страшно, то в противоположном случае это может иметь опасные последствия. В связи с чем встает закономерной вопрос: как узнать, что хотел донести пользователь, но по какой-то причине застеснялся и в последний момент сообщил совсем другое?

Битва экстрасенсов в технической поддержке, или как помочь пользователю правильно проставить приоритет инцидента - 1

Читать полностью »