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

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

Да и не только Москва и Питер генерируют постоянный трафик. Появляются и другие экономические и культурные центры. В Казань летает свыше 10 рейсов в день. В Краснодар – более 20.

Вслед за изменением поведения людей, меняется и такая консервативная область, как авиация. Гибкие тарифы, билеты с открытой датой, а теперь и проездные билеты.

100% онлайн-авиапроездной или Как укротить систему бронирования - 1

Сегодня расскажем, как реализовали онлайн-покупку, оформление и изменение билетов в рамках авиапроездного или multipass. И дали активно путешествующим возможность курсировать между городами максимально легко. Если вам интересны технические аспекты укрощения систем бронирования, или вы один из путешественников – наша статья для вас.
Читать полностью »

Модульная архитектура и многоразовый код - 1

Меня всегда интересовала разработка многоразового и целостного кода. Но проблема многоразового кода останавливается на этапе переноса в другую инфраструктуру. Если приложение расширяется плагинами, то плагины пишутся под конкретное приложение. А что если вынести логику приложения в плагин (далее — модуль), а интерфейс приложения из управляющего звена превратить в управляемый модулем компонент. На мой взгляд, самая главная задача в подобном сценарии, упростить базовые интерфейсы до минимума и дать возможность переписать или расширить любой фрагмент всей инфраструктуры в отдельности. Если интересно, что вышло из идеи модульного кода, то добро пожаловать под кат.
Читать полностью »

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

в 7:46, , рубрики: f-критерий, f-распределение, f-тест, t-критерий, t-распределение, t-тест, z-критерий Фишера, z-распределение, z-тест, Алгоритмы, Анализ и проектирование систем, бета распределение, биноминальное распределение, гамма распределение, геометрическое рапределение, гипергеометрическое распределение, двойное показательное, двойное экспоненциальное, Занимательные задачки, критерий Пирсона, критерий согласия, критерий хи квадрат, математика, моделирование, нормальное распределение, отрицательное биноминальное, плотность вероятности, показательное распределение, профит фактор, распределение Бернулли, распределение Вейбулла, распределение Гаусса, распределение Коши, распределение Лапласса, распределение Паскаля, распределение Пирсона, распределение пуассона, распределение Стьюдента, распределение Фишера, распределение хи квадрат, распределение Эрланга, случайная величина, статистика, статистический тест, статитический анализ, теория вероятностей, тест Стьюдента, тест Фишера, экспоненциальное распределение

«Правда, чистая правда и статистика» или «15 распределений вероятности на все случаи жизни» - 1 Статистика приходит к нам на помощь при решении многих задач, например: когда нет возможности построить детерминированную модель, когда слишком много факторов или когда нам необходимо оценить правдоподобие построенной модели с учётом имеющихся данных. Отношение к статистике неоднозначное. Есть мнение, что существует три вида лжи: ложь, наглая ложь и статистика. С другой стороны, многие «пользователи» статистики слишком ей верят, не понимая до конца, как она работает: применяя, например, тест Стьюдента к любым данным без проверки их нормальности. Такая небрежность способна порождать серьёзные ошибки и превращать «поклонников» теста Стьюдента в ненавистников статистики. Попробуем поставить токи над i и разобраться, какие модели случайных величин должны использоваться для описания тех или иных явлений и какая между ними существует генетическая связь.
Читать полностью »

Разработка взаимодействия с пользователем мобильных устройств — ключевые принципы - 1

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

Хорошая разработка пользовательского интерфейса решает обе эти проблемы проектирования:

  • Чтобы быть полезным, мобильное приложение должно быть полностью ориентировано на пользователя. Тот устанавливает ваше приложение потому, что ему надо решить насущную для него проблему. Таким образом, приложение имеет чётко определённое «понимание цели». Думайте о том, что именно ваши пользователи будут пытаться выполнить, сосредоточивайтесь на их ключевых целях, и удаляйте все препятствия с ведущего к ним пути.
  • Пользовательский интерфейс обязан быть предельно ясным. Чтобы эффективно использовать разработанный вами интерфейс, должна быть обеспечена возможность легко понимать, для чего он и как его использовать. В нём просто не должно быть ни малейшего места для какой-либо путаницы.

Ниже изложены 9 принципов разработки, являющиеся, по моему мнению, ключевыми при обеспечении, действительно, высококачественного взаимодействия с пользователем.
Читать полностью »

Микросервисы: пожалуйста, не нужно - 1
Иллюстрация @alvaro_sanchez

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

Естественно, в реальности все оказалось совсем наоборот. Когда смотришь назад, на произошедшее, то зрение оказывается ближе к 100%, чем когда смотришь с надеждой в будущее.

Я хочу рассказать о некоторых важных заблуждениях и подводных камнях движения за микросервисы с точки зрения человека, который работал в компании, убежденной в идее целительных свойств микросервисов. Я не хочу, чтобы выводом этой статьи для вас стало "микросервисы == плохо", но в идеале я хотел бы, чтобы вы задумались о проблемах когда будете решать, подходит ли вам микросервисная архитектура.Читать полностью »

В течение последних шести лет в Яндексе идет работа над системой под кодовым называнием YT (по-русски мы называем её «Ыть»). Это основная платформа для хранения и обработки больших объемов данных — мы уже о ней рассказывали на YaC 2013. С тех пор она продолжала развиваться. Сегодня я расскажу о том, с чего началась разработка YT, что нового в ней появилось и что ещё мы планируем сделать в ближайшее время.

YT: зачем Яндексу своя MapReduce-система и как она устроена - 1

Кстати, 15 октября в офисе Яндекса мы расскажем не только о YT, но и о других наших инфраструктурных технологиях: Media Storage, Yandex Query Language и ClickHouse. На встрече мы раскроем тайну — расскажем, сколько же в Яндексе MapReduce-систем.

Какую задачу мы решаем?

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

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

Функциональная безопасность, Часть 3 из 3. МЭК 61508: Систематичная случайность или случайная систематичность? - 1 Безопасности на Хабре посвящен целый хаб, и, пожалуй, никто особенно не задумывается, что именно вкладывается в понятие «безопасность», и так все ясно: информационная безопасность (security). Однако, есть еще и другая сторона безопасности, safety, связанная с рисками для здоровья и жизни людей, а также окружающей среды. Поскольку информационные технологии сами по себе опасности не представляют, то обычно говорят о функциональной составляющей, то есть о безопасности, связанной с правильным функционированием компьютерной системы. Если информационная безопасность стала критична с появлением интернета, то функциональная безопасность рассматривалась и до появления цифрового управления, ведь аварии происходили всегда.

Данная статья продолжает серию публикаций на тему функциональной безопасности.

Во вводной части 1:

— обоснована важность оценивания и обеспечения функциональной безопасности для компьютерных систем управления;
— рассмотрены архитектуры систем, для которых необходимо оценивать и обеспечивать функциональную безопасность; к таким системам относятся АСУ ТП (Industrial Control Systems) на базе программируемых логических контроллеров (ПЛК), встроенные системы (Embedded Systems) и уровень устройств (Device Layer) для интернета вещей;
— кратко представлено множество стандартов, относящихся к функциональной безопасности в различных сферах применения.

В части 2 рассмотрена общая структура стандарта МЭК 61508 «Функциональная безопасность систем электрических, электронных, программируемых электронных, связанных с безопасностью» (IEC 61508 Functional safety of electrical/electronic/programmable electronic safety-related systems) и используемая в нем терминология.

Описание достаточно непростой терминологической казуистики заняло целую статью, и теперь пора разобраться со структурой требований МЭК 61508.

Не рекомендуется к прочтению тем, кто не интересуется стандартизацией.
Читать полностью »

Spring Boot стартер для Apache Ignite своими руками - 1

Вот уже вышло две статьи в потенциально очень длинной серии обзоров распределённой платформы Apache Ignite (первая про настройку и запуск, вторая про построение топологии). Данная статья посвящена попытке подружить Apache Ignite и Spring Boot. Стандартным способом подключения некой библиотеки к Spring Boot является создание для этой технологии «стартера». Несмотря на то, что Spring Boot весьма популярен и на Хабре описывался не единожды, про то, как делать стартеры, вроде бы ещё не писали. Этот досадный пробел я постараюсь закрыть.

Статья посвящена преимущественно Spring Boot'у и Spring Core, так что те, кого тема Apache Ignite не интересует, всё равно могут узнать что-то новое. Код выложен на GitHub, стартера и демо-приложения.
Читать полностью »

image

От переводчика:

На этого интересного автора, Адама Торнхила, я набрел при поиске видео с конференции GOTO. Кому данная статья покажется интересной, советую посмотреть его выступление. Я немного заморочился с переводом (благодарен Тане за помощь!), потому что тематика показалась очень своеобразной, не встречал ранее аналогичные работы (буду рад ссылкам в комментариях!). Статья свежая, августа 2016, в оригинале называется Software ®Evolution — Part 1. В тексте идет повествования от первого лица, но имеется в виду автор оригинальной статьи.

Как эволюция кода позволяет понимать большие кодовые базы

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

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


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