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

Введение

Умение реализовать грамотное REST API — полезный навык в наше время, т.к. все больше сервисов предоставляют свои возможности с помощью API. Но разработка REST API не ограничивается реализацией HTTP запросов в определенном стиле и формированием ответов в соответствии со спецификацией. Задача обеспечения безопасности REST API не так очевидна, как, например, обеспечение безопасности баз данных, но ее необходимость не менее важна.
В настоящее время многие онлайн системы с помощью API передают приватные данные пользователей, такие как медицинские или финансовые. Текущая же ситуация с безопасностью в веб-приложениях весьма печальна: по данным Comnews порядка 70% содержат кри­тичес­кие уязвимости. Поэтому всем, кто участвует в проектировании, реализации и тестировании онлайн систем, важно иметь общую картину по существующим угрозам и способам обеспечения безопасности как всей системы, так и используемого REST API.

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

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

Цитата из документации GCC [1]:
Атрибут cleanup предназначен для запуска функции, когда переменная выходит из области видимости. Этот атрибут может быть применён только к auto-переменным, и не может быть использован с параметрами или с static-переменными. Функция должна принимать один параметр, указатель на тип, совместимый с переменной. Возвращаемое значение функции, если оно есть, игнорируется.

Если включена опция -fexceptions, то функция cleanup_function запускается при раскрутке стека, во время обработки исключения. Отметим, что атрибут cleanup не перехватывает исключения, он только выполняет действие. Если функция cleanup_function не выполняяет возврат нормальным образом, поведение не определено.

Атрибут cleanup - 1

Атрибут cleanup поддерживается компиляторами gcc и clang.

В этой статье я приведу описание различных вариантов практического использования атрибута cleanup и рассмотрю внутреннее устройство библиотеки, которая использует cleanup для реализации аналогов std::unique_ptr и std::shared_ptr на языке C.
Читать полностью »

Как поезд проходит путь от станции до станции: особенности маршрутизации - 1

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

Он разделён на блок-участки. Блок-участок — это маленький отрезок перегона, чаще всего от светофора до светофора. В обычной ситуации на одном блок-участке может находиться только один поезд. То есть если на блок-участке сейчас кто-то есть, в его начале горит запрещающий сигнал, не позволяющий следующему поезду заехать на него. А на блок-участке до этого горит жёлтый, ограничивающий максимальную скорость.

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

От переводчика: предлагаю вашему вниманию перевод очень старой статьи, опубликованной 15 января 1983 года. Несмотря на столь внушительный возраст, статья показалась мне интересной, и возможно, что она будет полезной для кого-то и сегодня. На эту статью, кстати, ссылается раздел справки man locate(1) на opennet.ru: https://www.opennet.ru/man.shtml?topic=locate.

Быстрый поиск файлов - 1

Краткое содержание

Статья описывает механизм быстрого поиска файлов в UNIX. Он объединяет два метода компрессии данных с новой техникой поиска строк, и предназначен для быстрого поиска произвольных файлов. Код, интегрированный в стандартную утилиту find, производит поиск в предварительно созданной базе данных, обновляемой ежедневно. Это отличает его от обычного механизма поиска совпадений ключа с кандидатами, которые генерируются «на лету» из разбросанной (по диску) структуры директорий.

База данных путей к файлам является инкрементально-кодированным, отсортированным в лексикографическом порядке списком (иногда называемом «сжатым спереди» файлом), который также подвергнут обычному биграмному кодированию с целью получения эффективного сжатия. Коэффициент сжатия составляет от 5 до 6 по сравнению с обычным ASCII-представлением. Список сканируется с использованием модифицированного линейного поиска, специально приспособленного для инкрементального кодирования, при этом типичное время, затрачиваемое алгоритмом, на 40-50% меньше, чем обычный поиск.
Читать полностью »

Привет, меня зовут Александр Васин, я бэкенд-разработчик в Едадиле. Идея этого материала началась с того, что я хотел разобрать вступительное задание (Я.Диск) в Школу бэкенд-разработки Яндекса. Я начал описывать все тонкости выбора тех или иных технологий, методику тестирования… Получался совсем не разбор, а очень подробный гайд по тому, как писать бэкенды на Python. От первоначальной идеи остались только требования к сервису, на примере которых удобно разбирать инструменты и технологии. В итоге я очнулся на сотне тысяч символов. Ровно столько потребовалось, чтобы рассмотреть всё в мельчайших подробностях. Итак, программа на следующие 100 килобайт: как строить бэкенд сервиса, начиная от выбора инструментов и заканчивая деплоем.

Практическое руководство по разработке бэкенд-сервиса на Python - 1

TL;DR: Вот репка на GitHub с приложением, а кто любит (настоящие) лонгриды — прошу под кат.
Читать полностью »

Как научиться разработке на Python: новый видеокурс Яндекса - 1Осенью прошлого года в московском офисе Яндекса прошла первая Школа бэкенд-разработки. Мы сняли занятия на видео и сегодня рады поделиться на Хабре полным видеокурсом Школы. Он позволит вам научиться промышленной разработке на Python. Авторы лекций — опытные разработчики в Яндексе. К каждому видео приложены ссылки на примеры и полезные материалы.

Для изучения курса нужно знать основы Python и понимать, как приложения развёртываются на серверах. Мы ждём, что вы умеете делать запросы к базам данных и знаете, как создаются веб‑приложения, — хотя бы на начальном уровне.
Читать полностью »

Боремся с пробками в маленьком городе за небольшой бюджет: результаты 6 месяцев проекта - 1

Старый добрый советский светофор имеет два режима: работает и не работает. Его первая оптимизация — добавить в реле ночной и дневной режимы. Вторая — такая же: добавить утренний, вечерний и дневной, отличающиеся разными задержками таймера переключения ламп. И дальше — всё. Дальше нужны датчики и внешние потоки информации либо вообще связная сеть.

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

Но мы пошли чуть дальше: в городе Новомосковске (120 тысяч жителей) поставили на светофоры камеры, поменяли все контроллеры и связали всё это в одну сеть. Бюджет у города небольшой, поэтому правила пока эвристические без всякого космоса вроде data mining и машинного обучения, светофорных объектов не очень много (потому что даже поставить 21 камеру уже дорого), но мы смогли добиться вполне конкретных результатов.

Скорость прохождения перекрёстков с нашими «умными светофорами» и обычных перекрёстков рядом увеличилась. Мы научились приоритизировать поток машин утром на крупный завод, считать и обрабатывать транзитные фуры и даже замахнулись на ГЛОНАСС-датчики «скорой», чтобы убирать возможные заторы перед ними. Читать полностью »

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

Хранилища данных (DWH) — не новая история. Традиционно они использовались для составления отчетности. А вот полноценное моделирование и прогнозирование сквозных бизнес-процессов на данных DWH началось относительно недавно. Используя собранные данные современные инструменты анализа позволяют не просто делать дашборды с выпадающими окнами, но еще и настраивать в отношении каждого атрибута алгоритмы прогнозирования и оптимизации, масштабировать алгоритмы теории игр на все предприятие в целом. А также строить и сразу же тестировать гипотезы о дальнейшем развитии бизнеса на реальных данных.

Особенности data-driven в нефтехимии - 1

И вроде как звучит всё прекрасно. Но не все компании спешат брать с пример с передовиков (Booking.com, Amazon.com) и продолжают работать по старинке. Так что же им мешает? Как минимум, понимания целесообразности масштабных инвестиций в инструментарий по обработке данных, трудозатратность внедрения процессов описания данных, появления новых ролей (кураторы данных, ответственные за качество данных, инженеры и архитекторы данных и т.п.), научиться считать экономический эффект от внедрения управления данными, четко вычленять драйверы затрат, как сделать дата офис самоокупаемым, увязать со стратегией компании и из возможных вызовов выбрать те, которые продвинут компанию вперед, и многое другое.

Меня зовут Виктория Краснова, я руководитель Управления корпоративными данными СИБУРа. Вместе с моим коллегой, лидером команды Data Governance Ринатом Абдурахмановым, расскажем, как это делаем мы.
Читать полностью »

Привет!

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

Данные к нам поступают снаружи, также они формируются внутри компании, а если говорить о данных телеком-компании, то это для внутренних сотрудников кладезь информации о клиенте, его интересах, привычках, месторасположении. При грамотном профилировании и сегментации рекламные предложения выстреливают наиболее эффективно. Однако, на практике не все так радужно. Те данные, которые хранят компании, могут быть безнадежно устаревшими, избыточными, повторяющимися, либо об их существовании никому не известно, кроме узкого круга пользователей. ¯_(ツ)_/¯

DataGovernance своими силами - 1


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

Именно мы об это мы и поговорим под катом, а также о том, как нам помог opensource-стек.
Читать полностью »

Обеспечить удалёнку и не облажаться. Советы ИТ-директору - 1

Сегодня главная проблема компаний, особенно крупных, заключается в том, что отправка нескольких тысяч сотрудников на удалённую работу — это трудная задача как для ИБ, так и для ИТ-службы в целом. Вы можете отправить людей домой, сделать VPN, но подключение к корпоративной сети большого количества не очень контролируемых вами устройств — действительно непростая работа. Очевидно, что не получится каждому удалённому сотруднику выдать антивирус и систему предотвращения утечек.

Еще одна проблема — как обеспечить работу всего набора корпоративных приложений из дома на разношерстном парке оборудования: от старенького ПК на Windows 7 до iPad’а.

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


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