Рубрика «Анализ и проектирование систем» - 115

Как часто, программируя очередную бизнес-фичу, вы ловили себя на мысли: есть же на Земле люди, которые пишут базы данных, распознают лица на фотографиях, делают фреймворки и реализуют интересные алгоритмы. Почему в моей работе всё сводится к перекладыванию из одной таблицы БД в другую, вызову http-сервисов, верстке html-формы и прочей «бизнес-лапше»? Может быть я занимаюсь чем-то не тем или работаю не в той компании?

Как перестать бояться и полюбить синтаксический анализ? - 1

Хорошая новость в том, что интересные задачи окружают нас повсюду. Сильное желание и смелость творят чудеса на пути к цели — задача любого масштаба станет вам под силу, стоит просто начать её делать.

Недавно мы написали синтаксический анализатор языка запросов 1С и его транслятор в обычный SQL. Это позволило нам выполнять запросы к 1С без участия 1С :) Минимальная рабочая версия на regexp-ах получилась недели за две. Ещё месяц ушёл на полноценный парсер через грамматики, разгребание нюансов структуры БД разных 1С-объектов и реализацию специфических операторов и функций. В результате решение поддерживает практически все конструкции языка, исходный код выложен на GitHub.

Под катом мы расскажем, зачем нам это понадобилось, как удалось, а так же затронем несколько интересных технических подробностей.

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

image

JSON — это стандарт де-факто, когда заходит речь о (де)сериализации, обмене данными в сети и мобильной разработке. Но насколько хорошо вы знакомы с JSON? Все мы читаем спецификации и пишем тесты, испытываем популярные JSON-библиотеки для своих нужд. Я покажу вам, что JSON — это идеализированный формат, а не идеальный, каким его многие считают. Я не нашёл и двух библиотек, ведущих себя одинаково. Более того, я обнаружил, что крайние случаи и зловредная полезная нагрузка могут привести к багам, падениями и DoS, в основном потому, что JSON-библиотеки основаны на спецификациях, которые со временем развиваются, что оставляет многие вещи плохо или вообще не задокументированными.

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

Как можно определить понятие жизни программы? Жизнь программы можно описать повторяющейся последовательностью конечных процессов в компьютере выполненных в контексте выбранной предметной области. Обязательно конечных, в каком-то разумном временном отрезке.

design

Когда появляется программа? Скорее всего, программа появляется в голове у проектировщика/разработчика, можно назвать это design-time. Но так как этот момент не поддаётся контролю компьютера (пока), то предположим, что моментом появления программы является момент создания минимального запускаемого (о подробном смысле этого термина стоит поговорить отдельно) исходного кода.

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

Продолжая тему, начатую уважаемым drosselmayer в цикле статей об интеллектуальных транспортных системах (ИТС) и о системах взимания платы (СВП), хотелось бы несколько расширить её и попробовать рассказать о дальнейшем развитии информационно-коммуникационных технологий в интересах автотранспортной отрасли.

Начну с небольшого обзора.

В настоящее время в России водительские права имеют почти две трети населения. Или в абсолютных цифрах – около 100 миллионов человек. Количество транспортных средств перевалило за 50 миллионов. Любой из тех, кто сам водит автомобиль, на себе ощутил возросшую плотность движения, а жители городов дополнительно – трудности парковки.

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

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

Мы, как технари, уделяем мало времени разговорам о коммуникации, управлении проектами и приоритизации. Это те навыки, которые превращают хорошего программиста в отличного инженера. Сегодня я собираюсь сфокусироваться на одном из аспектов управления проектами, в котором мы очевидно плохи – искусстве оценки сроков.

image

Если есть сомнения в том, что это действительно необходимый навык, вспомните этот ужасный, но часто задаваемый вопрос: «Как много времени это займёт?». Даже если вы супер-Agile и не верите в дедлайны, будьте уверены, что кто-нибудь сломается под давлением и выдаст дату, к которой и будет привязана ваша команда. И когда эта дата наступит, а вы не будете готовы к запуску, ваш менеджер будет злиться, потому что из-за вас она будет глупо выглядеть; отдел продаж будет злиться, потому что они обещали самым важным заказчикам продукт уже сегодня; и ваша команда тоже будет злой, потому что они работали пять выходных подряд пытаясь вложиться в невозможный дедлайн. Так что давайте избежим всего этого и создадим план, пригодный к жизни.

Для примера я хочу предложить упражнение, которое я позаимствовал из курса “Intro to Development” от Microsoft. Цель – оценить время покраски комнаты. Это тот тип упражнения, который не требует каких-то специфичных знаний о какой-то системе.

Теперь, прежде чем скроллить вниз, подумайте и набросайте свою оценку — сколько времени уйдет на то, чтобы покрасить комнату? Не пропускайте эту часть – важно записывать свои мысли, чтобы следить за их эволюцией.

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

Информационное моделирование зданий (BIM): как построить стадион (или другое здание) с первого раза и под контролем - 1
Пересечение CAD-чертежей и актуальной оперативной информации.

Представьте, что у вас 20 строительных площадок, и на каждой что-то каждый день происходит. Вы, естественно, хотите знать, что, как и почему. Раньше вы обходили их ногами, потом стали пользоваться данными веб-камер, а теперь стандартом в индустрии становится информационное моделирование зданий/сооружений, или BIM (Building Information Modelling). Это проектирование, строительство и эксплуатация в одной IDE. Собственно, такой подход уже стал государственным в Великобритании, Сингапуре, Норвегии и Китае. У нас же BIM пока применяется для того, чтобы на этапе предпроекта или проекта визуализировать то, что собираются построить. А ещё сейчас делают первые шаги, чтобы ловить проблемы в момент появления, а не когда о них доложат.

Естественно, было бы странно, если бы всё то, что касается финансов и начинается со слов «очень наглядный», не встречалось бы в штыки.

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

Или, например, вы строите стадион.
Читать полностью »

Насколько сложно построить полноценный сервис email-маркетинга? Что для этого нужно предусмотреть? Какие подводные камни могут встретиться на пути пытливых умов разработчиков?

Что нам стоит сервис email-маркетинга построить? Взгляд изнутри, часть первая - 1

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

Сразу оговорюсь, что в статье рассмотрена только техническая сторона вопроса.
Читать полностью »

О производительности именованных каналов в многопроцессных приложениях - 1В статье об особенностях новой версии Visual Studio одним из главных нововведений (с моей точки зрения) оказалось разделение ранее монолитного процесса среды разработки (devenv.exe) на компоненты, которые будут работать в отдельных процессах. Это уже сделано для системы контроля версий (переезд с libgit на git.exe) и некоторых плагинов, а в будущем и другие части VS будут вынесены в подпроцессы. В связи с этим в комментариях возник вопрос: «А не замедлит ли это работу, ведь обмен данными между процессами требует использования IPC (Inter Process Communications)?»

Нет, не замедлит. И вот почему.
Читать полностью »

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

Тогда я написал пост «Заблуждения программистов относительно „времени“», в котором указал 34 ошибочных представления и заблуждения, относящихся как к календарному, так и к системному времени. С большинством из них я столкнулся сам, занимаясь дебаггингом программ (как рабочих, так и тестовых).

Заблуждения большинства программистов относительно «времени» - 1

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

image
Про предмет статьи ходит много домыслов — от «русский Барроуз» до «не имеющий аналогов». Вызвано это в немалой степени отсутствием (доступной) полноценной документации, немногочисленным кругом лиц, имевших с ними дело да и немалым временем, прошедшим с тех пор. «Эльбрус» превратился в один из мифов ушедшей эпохи.

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

Так что автор из свойственной ему любознательности попытался разобраться с доступной документацией и составить более — менее цельную картину. Если читателю это интересно — добро пожаловать под кат.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js