• Создаем калькулятор с единицами измерений

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

      image

      Представьте, что вам нужно написать калькулятор, который умеет не просто считать цифры, а оперировать физическими (измеряемыми) величинами – складывать длину, конвертировать количество чего-то из одной единицы измерения в другую, и т.п. Первым делом, давайте обозначим чуть конкретнее задачу. У нас будут вот такие фичи:
      Читать дальше →
    • Информационные системы с понятийными моделями. Часть вторая

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

        Здесь, во второй части, поговорим о том, как может быть реализована полнофункциональная информационная система, основанная на понятийном моделировании предметных областей. Теперь уже в деталях рассмотрим информационную систему LANCAD, которую в нашей компании “ИНСИСТЕМС” используют для организации проектной деятельности по разработке проектно-сметной документации для строительства.

        Следует заметить, что появление информационной системы LANCAD явилось результатом реализации нескольких крупных проектов компании.

        Читать дальше →
      • Представление об однородном пространстве-времени

        Представление о пространстве и времени


        Статья продолжает серию статей про наше представление пространства и времени.


        Кажется логичным, что мы сначала рассмотрели пространство, а затем его танец во времени, но вот вопрос: почему? Почему нельзя сначала рассмотреть танец, а потом рассмотреть пространство? Причин несколько:


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

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


        В данной статье мы научимся смотреть на танец пространства в целом.

        Читать дальше →
      • Информационные системы с понятийными моделями. Часть первая

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

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

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

          Читать дальше →
        • «Принцип макарон»: ученые организовали произвольный доступ к ДНК-памяти

            Ученым из Иллинойсского университета в Урбане-Шампейне удалось реализовать ДНК-хранилище со случайным (произвольным) доступом к данным. Об их подходе и о том, что общего у цепочек ДНК с макаронами, расскажем далее.

            Читать дальше →
            • +17
            • 4,2k
            • 7
          • Magic link или история о том, как мы упростили жизнь пользователю

              В статье я поделюсь личным опытом разработки и реализации “волшебных ссылок”. Расскажу зачем они нужны в нашем проекте, как функционируют и в конце даже всплакну над тем, что отсутствие такого функционала в больших системах используемых мною заставляет меня гневно рвать на себе волосы.

              Код будет только в одном месте, т.к. основная цель статьи — рассказать про саму идею, а не показать то, насколько красив код.


              Вжууух читать
              • +10
              • 3,3k
              • 9
            • Ой, у вас баннер убежал!

              Ну. И что?
              Реклама
            • Делаем Маркетплейс, интегрированный в облако онлайн-касс

                В декабре прошлого года мы участвовали в хакатоне со своей платформой прототипирования. За отведенные два дня мы замахнулись с нуля разобраться с онлайн-кассой и её облачной экосистемой, а также сделать прототип сервиса — Маркетплейс. Как и ожидалось, мы потратили 80% времени на интеграцию с незнакомым устройством, а за оставшиеся 20% хорошо развлеклись и сделали всё остальное.


                Честно, нас удивила простота входа в этот облачный мир, его масштабы (160 тысяч пользователей практически на старте), возможности и… дыры. В итоге у нас всё получилось, а компания-организатор, по их заявлениям, вот-вот стартует проект маркетплейса.


                В этой статье я покажу как за 2-3 часа был сделан веб-сервис, интегрированный с облачными кассами и пригодный для обкатки на фокусной группе клиентов. Сам проект доступен для ознакомления и клонирования в виде исходников в github и онлайн версии.



                Читать дальше →
              • Почему мы живем внутри пространства, но сбоку от времени. Разница в восприятии времени и пространства

                  Представление о пространстве и времени (время)


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


                  Представление о времени


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


                  Время мы не осознаем целиком, лишь его часть, выбранную нами для изучения. Чтобы разные части стыковались, мы верим в существование Абсолютном времени. Это позволяет предположить, что, изучая время, мы изучаем какую-то часть Абсолютного времени.

                  Читать дальше →
                • 5 различий работы аналитика в проектах и продуктовой разработке

                    Когда речь заходит о роли аналитика в IT, то всегда приходится добавлять кучу уточнений. Бизнес или системный аналитик? Анализ в продуктовой разработке или в проектной, как это, например, часто бывает в консалтинге? На внутренней разработке или на заказной?.. Заказчика государственного или негосударственного? И так далее.

                    До прихода в Туту.ру я работала в IT-консалтинге на ERP-проектах и в заказной продуктовой разработке, здесь же я занимаюсь системным анализом во внутреннем продукте «Авиа». Отдел системного анализа у нас состоит из 9 аналитиков и 1 технического писателя. Далее на своем опыте я расскажу, что меняется в голове специалиста и в рабочих процессах при смене формата деятельности на внутреннюю продуктовую разработку с точки зрения анализа, а заодно поделюсь, как устроен процесс в целом у нас в Туту.ру.

                    Читать дальше →
                  • Опыт построения интеграционной платформы на базе ServiceMix (Camel) и RabbitMQ

                    Как только в компании появляется хотя бы две информационных системы, которым необходимо обмениваться данными, возникает вопрос, как организовать их взаимодействие. Вариантов множество: файловый обмен, линки между базами данных, web или rest сервисы, различные системы обмена сообщениями, устаревшие RPC и CORBA, новомодный gRPC и т.д. Выбор зависит от предпочтений участников проекта и от возможностей систем (архитектура системы, используемая платформа, наличие готового API и пр.). Предположим, выбрали какой-то способ обмена, системы начали взаимодействовать, все хорошо. Но потом возникает третья система, с которой тоже надо интегрироваться, потом четвертая и т.д. Нужно опять садиться и выбирать способ обмена, и не факт что удастся ограничиться уже используемыми технологиями (где-то это продиктовано ограничениями новых систем, где-то разработчик настоял на другой технологии или захотел попробовать что-то новое). С ростом количества систем растет количество и сложность взаимодействий между ними, растет количество используемых технологий. В итоге вся интеграционная архитектура компании начинает напоминать запутанный клубок разноцветных ниток, как-то связывающих системы компании, который все сложнее распутывать при разборе ошибок и доработках. Рано или поздно начинают приходить мысли о создании единой интеграционной среды, которая прозрачно и расширяемо свяжет все системы воедино.

                    В этой статье я расскажу об опыте использования Apache ServiceMix (Camel) и RabbitMQ для построения такой интеграционной среды.
                    Читать дальше →
                  Самое читаемое