Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 1027 сообщений
Cообщения с меткой

стандарты - Самое интересное в блогах

Следующие 30  »
Юрий_Скилев

Ответственность перед обществом ныне утеряна. Не пора ли вспомнить?

Четверг, 25 Августа 2016 г. 19:44 (ссылка)

Это цитата сообщения Оксана_Лютова Оригинальное сообщение


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



Пора одуматься.



 



ЭТО Ж КАКОЙ ТИРАН ВСЕ ЖЕ БЫЛ...КАК СТАЛИН ВВЕЛ УГОЛОВНУЮ ОТВЕТСТВЕННОСТЬ ЗА НЕСОБЛЮДЕНИЕ ГОСТОВ.

 





Цитата из Указа: "За выпуск недоброкачественной продукции ... подвергать тюремному заключению на срок от 5 до 8 лет".  

Читать далее...
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

[Перевод] Представляем RAIL: модель оценки производительности сайта

Четверг, 18 Августа 2016 г. 12:08 (ссылка)



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



Представляем статью авторства Пола Айриша и Пола Льюиса из команды Google Chrome о разработанной ими модели оценки производительности сайта. Ее можно с уверенностью назвать User-Centered Performance.

Возьмем, например, время загрузки страницы, что является наиболее популярной темой сегодня. Проблема в том, что кто-то использует достаточно сложную формулу вычисления индекса скорости, кто-то измеряет по body.onload, кто-то по DOMContentLoaded или, возможно, по еще какому-то событию.



Ни у кого из нас нет бесконечного времени, которое мы могли бы посвятить оптимизации производительности сайта, поэтому нужно остановиться на каком-то критерии: что важно для оптимизации, а что нет. И также нам надо договориться о том, что значит слово «производительный сайт» для наших пользователей, потому что мы делаем сайты именно для них.



Множество команд по всему миру работало над концепцией производительности веб-сайтов, включая команду Айри.рф, и мы вместе пришли к такой модели, которая считает пользователя центром всей этой истории с производительностью. Эту модель назвали RAIL = Response + Animation + Idle + Load.



Что же такое RAIL в двух словах:




  • RAIL – это модель, в которой пользовательский опыт разбивается на несколько ключевых действий. Например, клик, протягивание (движение с нажатой клавишой мыши или тачпада), скроллинг, загрузка.

  • RAIL устанавливает цели по производительности для этих действий. Например, от клика до отрисовки действий по этому клику должно пройти не более 100 миллисекунд.

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



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



«Медленно»



Что значит «медленно»? Поменять что-то в DOM – медленно? Как насчет тэга

https://habrahabr.ru/post/308026/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Стандарты архитектуры для Internet of Things

Пятница, 12 Августа 2016 г. 21:27 (ссылка)

На днях мне понадобилась информация о том, какая архитектура IoT является типовой (референсной). Такую информацию оперативно найти не удалось ни на «хабре», ни на других ресурсах. Оказалось, что первые попытки разработать стандарты в этом направлении были предприняты всего два года назад, и работы все еще находятся в стадии «проект». В этой статье вы найдете «срез» состояния разработки стандартов IEEE & ISO/IEC по описанию референсной архитектуры IoT (IoT Reference Architecture).



image

Источник



Зачем нужны стандарты?



Начнем с холиварной неоднозначной темы стандартизации.

Мировой технический прогресс движется в следующем направлении: когда технология становится достаточно зрелой, наступает пора ее стандартизации, что является шагом к так называемым «открытым системам» с типовыми компонентами и интерфейсами. Если рассматривать известный Gartner Hype Cycle, то стандартизация может выполняться с упреждением, задолго до готовности технологии к массовому внедрению.



Весь мир технических (и не только) изделий определяется стандартами, а без этого всех нас накрыл бы хаос.



Что касается IoT, то использование стандартов является еще и важной платформой при работе с крупными государственными и корпоративными заказчиками, в том числе и в области приложений, важных для безопасности (safety critical, security critical, mission critical, etc.).

«Прославляя» стандартизацию нельзя не сказать о «темной стороне силы», к которой, на мой взгляд, относится:



— существование избыточного количества стандартов, отсутствие четкой системы, наличие разных организаций, занимающихся стандартизацией в одной и той же сфере;

— неполное и неравномерное покрытие объектов стандартизации;

— «война стандартов», т.е. лоббирование интересов отдельных фирм в ущерб решению общих проблем стандартизации;

— регламентация в основном только наиболее простых объектов и массовых процессов;

— бюрократизированная процедура и долгий срок разработки стандартов (в среднем, три-пять лет), что приводит к их консерватизму и отставанию от практических потребностей.

Тем не менее, мир стандартов существует, и нам в нем жить.



IEEE vs ISO/IEC



Те, кто сталкивался с миром стандартов, знает, что в области IT этот мир биполярен, поскольку есть две общепризнанных организации: IEEE (Institute of Electrical and Electronics Engineers) и IEC (International Electrotechnical Commission – Международная электротехническая комиссия, МЭК).

В разных областях стандартизации взаимное влияние IEEE и IEC различно, но «в среднем» (есть исключения) Америка любит IEEE, а Европа – IEC.



По некоторым направлениям IEC сотрудничает с ISO, например, интересующей нас областью IoT занимается ISO/IEC JTC1 (Joint Technical Committee in International and Communication Technology).



Существуют, конечно, и другие международные организации по стандартизации, например, CENELEC, разрабатывающий EN (European Normative), ITU-T (International Telecommunication Union Telecommunication Standardization Sector), американский NIST (National Institute of Standards and Technology) и многие другие.



Чем занимается IEEE в области IoT



IoT попал в сферу интересов IEEE и ISO/IEC JTC1 практически одновременно. В июле 2014 года была создана рабочая группа IEEE P2413 и проведен первый митинг по разработке «Standard for an Architectural Framework for the Internet of Things (IoT)». В состав рабочей группы вошли представители Cisco, Emerson, Hitachi, Honeywell, Huawei, Intel, Kaspersky Lab, Rockwell Automation, Schneider Electric, Siemens, STMicroelectronics, Toshiba, Yokogawa и другие. Microsoft и Google замечены не были.



В 2014-2016 гг. митинги проводятся 4 раза в год. Подробной информации о состоянии разработки на сайте группы не приводится, есть только высокоуровневые презентации.



Интересным фактом является внимательное отношение рабочей группы IEEE P2413 к вопросам обеспечения надежности и безопасности (Dependability & Security).



image

Источник



Следовательно, IoT планируется к применению в области уже упомянутых систем, важных для безопасности (safety critical, security critical, mission critical, etc.). Это подтверждается также участием в разработке стандарта «монстров» промышленной автоматизации.



Чем занимается ISO/IEC JTC1 в области IoT



Решение по созданию рабочей группы “Working Group on Internet of Things (WG10)” было принято на пленарном митинге ISO/IEC JTC1 в 2014 году. В январе 2015 года состоялся первый митинг WG10, на котором было принято решение по разработке стандарта ISO/IEC 30141 “Internet of Things Reference Architecture (IoT-RA)”, с тех пор подобные митинги проводятся трижды в год. На странице ISO/IEC JTC1 содержится исходный отчет по состоянию дел в области IoT (Study Report on IoT Reference Architectures/Frameworks) и некоторые результаты работы “WG10 on IoT”. Остановимся на упомянутом отчете

Что удается понять из скудных фактов?



Во-первых, многие положения будущего стандарта IoT-RA заимствуются из смежных уже стандартизированных областей, таких как:



— домашние электронные системы (Home Electronic Systems, описанные в стандартах серии ISO/IEC 14543);

— MPEG-V архитектура для управления медиа (Media context and control, описанные в стандартах серии ISO/IEC 23005);

— Sensor Network Reference Architecture (SNRA, описанная в стандартах серии ISO/IEC 29182).

По поводу последней архитектуры следует отметить, что именно она явилась стандартизованным прообразом архитектуры IoT, предложив четыре типовых уровня: device, network, service, and application.



Во-вторых, описание архитектуры для IoT будет адаптировано из уже существующих с 2012 стандартов ITU-T ( (International Telecommunication Union Telecommunication Standardization Sector), в частности ITU-T Y.2060 «Overview of the Internet of things».



Соответствующие уровни архитектуры и связь между ними (так называемая «экосистема») приведены ниже.



image



image

Источник



В-третьих, разрабатываемые требования к компонентам IoT будут структурированы согласно таксономии, предложенной в ITU-T Y.2066 «Common requirements of the Internet of things», которая включает в себя следующие группы требований:



— Implementation and operability requirements;

— Non-functional requirements

— Application support requirements;

— Service requirements;

— Communication requirements;

— Device requirements;

— Data management requirements;

— Security and privacy protection requirements.



Заключение



В ближайшее время предполагается выпуск стандартов, описывающих референсную архитектуру (Reference Architecture) для IoT. Этот факт еще более приблизит IoT к «открытым системам» с типовыми совместимыми компонентами и интерфейсами.



С 2014 года разработка таких стандартов ведется параллельно IEEE Working Group P2413 и ISO/IEC “Working Group on Internet of Things (WG10)”. Наличие двух стандартов добавит головной боли поставщикам компонентов и системным интеграторам.



Открытой информации об этих разработках доступно немного. Очевидно, что стандартизоваться будут уже существующие наработки, в частности, от ITU-T, согласно которым референсная архитектура включает четыре типовых уровня: device layer, network layer, service layer, and application layer.
Original source: habrahabr.ru.

https://habrahabr.ru/post/307668/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Стандарты архитектуры для Internet of Things

Пятница, 12 Августа 2016 г. 21:27 (ссылка)

image

Источник



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

В этой статье вы найдете «срез» состояния разработки стандартов IEEE & ISO/IEC по описанию референсной архитектуры IoT (IoT Reference Architecture).





Зачем нужны стандарты?

Начнем с холиварной неоднозначной темы стандартизации.

Мировой технический прогресс движется в следующем направлении: когда технология становится достаточно зрелой, наступает пора ее стандартизации, что является шагом к так называемым «открытым системам» с типовыми компонентами и интерфейсами. Если рассматривать известный Gartner Hype Cycle, то стандартизация может выполняться с упреждением, задолго до готовности технологии к массовому внедрению.

Весь мир технических (и не только) изделий определяется стандартами, а без этого всех нас накрыл бы хаос.

Что касается IoT, то использование стандартов является еще и важной платформой при работе с крупными государственными и корпоративными заказчиками, в том числе и в области приложений, важных для безопасности (safety critical, security critical, mission critical, etc.).

«Прославляя» стандартизацию нельзя не сказать о «темной стороне силы», к которой, на мой взгляд, относится:

— существование избыточного количества стандартов, отсутствие четкой системы, наличие разных организаций, занимающихся стандартизацией в одной и той же сфере;

— неполное и неравномерное покрытие объектов стандартизации;

— «война стандартов», т.е. лоббирование интересов отдельных фирм в ущерб решению общих проблем стандартизации;

— регламентация в основном только наиболее простых объектов и массовых процессов;

— бюрократизированная процедура и долгий срок разработки стандартов (в среднем, три-пять лет), что приводит к их консерватизму и отставанию от практических потребностей.

Тем не менее, мир стандартов существует, и нам в нем жить.



IEEE vs ISO/IEC

Те, кто сталкивался с миром стандартов, знает, что в области IT этот мир биполярен, поскольку есть две общепризнанных организации: IEEE (Institute of Electrical and Electronics Engineers) и IEC (International Electrotechnical Commission – Международная электротехническая комиссия, МЭК).

В разных областях стандартизации взаимное влияние IEEE и IEC различно, но «в среднем» (есть исключения) Америка любит IEEE, а Европа – IEC.

По некоторым направлениям IEC сотрудничает с ISO, например, интересующей нас областью IoT занимается ISO/IEC JTC1 (Joint Technical Committee in International and Communication Technology).

Существуют, конечно, и другие международные организации по стандартизации, например, CENELEC, разрабатывающий EN (European Normative), ITU-T (International Telecommunication Union Telecommunication Standardization Sector), американский NIST (National Institute of Standards and Technology) и многие другие.



Чем занимается IEEE в области IoT

IoT попал в сферу интересов IEEE и ISO/IEC JTC1 практически одновременно.

В июле 2014 года была создана рабочая группа IEEE P2413 и проведен первый митинг по разработке «Standard for an Architectural Framework for the Internet of Things (IoT)». В состав рабочей группы вошли представители Cisco, Emerson, Hitachi, Honeywell, Huawei, Intel, Kaspersky Lab, Rockwell Automation, Schneider Electric, Siemens, STMicroelectronics, Toshiba, Yokogawa и другие. Microsoft и Google замечены не были.

В 2014-2016 гг. митинги проводятся 4 раза в год. Подробной информации о состоянии разработки на сайте группы не приводится, есть только высокоуровневые презентации.

Интересным фактом является внимательное отношение рабочей группы IEEE P2413 к вопросам обеспечения надежности и безопасности (Dependability & Security).



image

Источник



Следовательно, IoT планируется к применению в области уже упомянутых систем, важных для безопасности (safety critical, security critical, mission critical, etc.). Это подтверждается также участием в разработке стандарта «монстров» промышленной автоматизации.



Чем занимается ISO/IEC JTC1 в области IoT

Решение по созданию рабочей группы “Working Group on Internet of Things (WG10)” было принято на пленарном митинге ISO/IEC JTC1 в 2014 году. В январе 2015 года состоялся первый митинг WG10, на котором было принято решение по разработке стандарта ISO/IEC 30141 “Internet of Things Reference Architecture (IoT-RA)”, с тех пор подобные митинги проводятся трижды в год. На странице ISO/IEC JTC1 содержится исходный отчет по состоянию дел в области IoT (Study Report on IoT Reference Architectures/Frameworks) и некоторые результаты работы “WG10 on IoT”. Остановимся на упомянутом отчете

Что удается понять из скудных фактов?

Во-первых, многие положения будущего стандарта IoT-RA заимствуются из смежных уже стандартизированных областей, таких как:

— домашние электронные системы (Home Electronic Systems, описанные в стандартах серии ISO/IEC 14543);

— MPEG-V архитектура для управления медиа (Media context and control, описанные в стандартах серии ISO/IEC 23005);

— Sensor Network Reference Architecture (SNRA, описанная в стандартах серии ISO/IEC 29182).

По поводу последней архитектуры следует отметить, что именно она явилась стандартизованным прообразом архитектуры IoT, предложив четыре типовых уровня: device, network, service, and application.

Во-вторых, описание архитектуры для IoT будет адаптировано из уже существующих с 2012 стандартов ITU-T ( (International Telecommunication Union Telecommunication Standardization Sector), в частности ITU-T Y.2060 «Overview of the Internet of things».

Соответствующие уровни архитектуры и связь между ними (так называемая «экосистема») приведены ниже.



image



image

Источник



В-третьих, разрабатываемые требования к компонентам IoT будут структурированы согласно таксономии, предложенной в ITU-T Y.2066 «Common requirements of the Internet of things», которая включает в себя следующие группы требований:

— Implementation and operability requirements;

— Non-functional requirements

— Application support requirements;

— Service requirements;

— Communication requirements;

— Device requirements;

— Data management requirements;

— Security and privacy protection requirements.



Заключение

В ближайшее время предполагается выпуск стандартов, описывающих референсную архитектуру (Reference Architecture) для IoT. Этот факт еще более приблизит IoT к «открытым системам» с типовыми совместимыми компонентами и интерфейсами.

С 2014 года разработка таких стандартов ведется параллельно IEEE Working Group P2413 и ISO/IEC “Working Group on Internet of Things (WG10)”. Наличие двух стандартов добавит головной боли поставщикам компонентов и системным интеграторам.

Открытой информации об этих разработках доступно немного. Очевидно, что стандартизоваться будут уже существующие наработки, в частности, от ITU-T, согласно которым референсная архитектура включает четыре типовых уровня: device layer, network layer, service layer, and application layer.

Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/307668/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Эллеонора1969

Без заголовка

Четверг, 11 Августа 2016 г. 17:58 (ссылка)
liveinternet.ru/users/irina...396091830/

Цитата сообщения RUSSA_N Прочитать целикомВ свой цитатник или сообщество! Словари вязальных терминов и международные стандарты размеров одежды       Англо-Русский Словарик   Термины Абб...
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Ирина_Берта

Без заголовка

Среда, 11 Августа 2016 г. 02:08 (ссылка)
liveinternet.ru/users/irina...396091830/


Цитата сообщения RUSSA_N Прочитать целикомВ свой цитатник или сообщество! Словари вязальных терминов и международные стандарты размеров одежды       Англо-Русский Словарик   Термины Абб...

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Светланка-Тольятти

Словари вязальных терминов и международные стандарты размеров одежды

Понедельник, 08 Августа 2016 г. 11:44 (ссылка)
liveinternet.ru/users/maija...395862335/

Цитата сообщения RUSSA_N Прочитать целикомВ свой цитатник или сообщество! Словари вязальных терминов и международные стандарты размеров одежды       Англо-Русский Словарик   Термины Абб...
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Для квантового компьютера IBM опубликованы первые программы

Пятница, 05 Августа 2016 г. 13:55 (ссылка)





Квантовыми вычислениями сейчас занимаются почти все крупные компании, связанные с информационными технологиями. IBM, Google, Microsoft — все проводят исследования в этой сфере. Корпорация IBM успешно создала собственную 5-кубитную квантовую микросхему. На основе микросхемы был создан квантовый компьютер с названием IBM Quantum Experience. Четыре кубита используются для работы с данными, а пятый — для коррекции ошибок во время проведения вычислений (ошибки без коррекции — ахиллесова пята квантовых компьютеров). Это оборудование установлено в одной из исследовательских лабораторий IBM, которая находится в штате Нью-Йорк, США.



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



Сейчас IBM Quantum Experience доступен только для исследователей. Для получения возможности поработать с системой нужно четко указать задачи, для которых необходимо задействовать ресурсы этого сервиса. Квантовый компьютер IBM является универсальной системой, способной справиться с любыми квантовыми алгоритмами. Это выгодно отличает такой компьютер от адиабатических квантовых систем.







Благодаря универсальности IBM Quantum Experience может решать ряд задач гораздо более эффективно, чем это могут сделать обычные компьютеры, пускай и сверхпроизводительные. В основном это задачи следующего характера:

• Быстрая обработка огромных баз данных;

• Оптимизация процессов, характер которых близок к так называемой задаче коммивояжера;

• Анализ и обработка научных данных с выявлением определенных закономерностей;

• Разложение чисел на простые множители при помощи алгоритма Шора. Если квантовые системы начнут работать с такими операциями, о криптографии в современном ее виде придется забыть.









Что касается последнего примера, то квантовый компьютер IBM может работать с этим алгоритмом. Но для действительно эффективной работы требуется больше кубитов. К 2025 году наша компания собирается собрать систему, содержащую от 50 до 100 кубитов. В этом случае уже можно говорить о начале работы над сложными практическими задачами.







С мая этого года с квантовым компьютером IBM смогли поработать многие специалисты из различных сфер. Некоторые представили собственные программы для IBM Quantum Experience. Больше всех алгоритмов представила астрофизик Кристин Морано из Калифорнийского технологического института (США). По словам Морано, это наиболее простые квантовые алгоритмы, например, алгоритмы Гровера и Дойча — Йожи, написанные на Python. Морано предлагает пользователям, имеющим доступ к IBM Quantum Experience, модифицировать эти программы для себя и опробовать их работу на квантовой системе.

Original source: habrahabr.ru.

https://habrahabr.ru/post/307172/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

[Перевод] Прощай, объектно-ориентированное программирование

Пятница, 05 Августа 2016 г. 13:26 (ссылка)





Я в течение десятилетий программировал на объектно-ориентированных языках. Первым из них стал С++, затем был Smalltalk, и наконец .NET и Java. Я фанатично использовал преимущества наследования, инкапсуляции и полиморфизма, этих трёх столпов парадигмы объектно-ориентированного программирования. Мне очень хотелось воспользоваться обещанным повторным использованием и прикоснуться к мудрости, накопленной моими предшественниками в этой новой и захватывающей сфере. Меня волновала сама мысль о том, что я могу мапить объекты реального мира в классы и думал, что весь мир можно аккуратно разложить по местам.



Я не мог ошибаться сильнее.



Наследование — первый павший Столп







На первый взгляд, наследование — главное преимущество парадигмы ООП. Все приводимые нам упрощённые примеры иерархий, казалось, имели смысл.







А «повторное использование» — вообще термин дня. Нет, пожалуй, даже года, а то и больше. Я всё это проглатывал и бежал реализовывать в реальных проектах моё новообретённое видение.



Проблема бананов, обезьян и джунглей



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



Появился новый проект, я не забывал о своей идее с классом и испытывал большой энтузиазм. Без проблем. Повторное использование спешит на помощь. Нужно просто взять класс из другого проекта и применить его. Ну… вообще-то… не просто класс. Понадобится родительский класс. Но… Но это всё. Гхм… погодите… кажется, нужен будет ещё родитель родителя… А потом… в общем, нужны ВСЕ родители. Хорошо… хорошо… Я с этим разберусь. Без проблем.



Ну замечательно. Теперь не компилируется. Почему??? А, понятно… Этот объект содержит этот другой объект. Так что он мне тоже нужен. Без проблем. Погодите… Мне не нужен всего лишь тот объект. Мне нужен его родитель, и родитель родителя, и т.д. Для каждого вложенного объекта мне нужны родители, а также их родители, и их родители, родители… Мда. Джо Армстронг, создатель Erlang, когда-то сказал прекрасные слова:



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



Решение проблемы банана, обезьян и джунглей



Можно выйти из ситуации, не создавая слишком глубоких иерархий. Но поскольку наследование является ключом к повторному использованию, то любые накладываемые на этот механизм ограничения однозначно уменьшат преимущества, получаемые от него. Верно? Верно. Так что же делать бедному объектно-ориентированному программисту, который слепо поверил обещаниям? Агрегировать (contain) и делегировать (delegate). Об этом чуть позже.



Проблема ромба



Рано или поздно эта проблема поднимет свою уродливую и, в зависимости от языка, неразрешимую голову.







Большинство ОО-языков это не поддерживают, хотя оно и выглядит вполне здраво. Так в чём дело? Посмотрим на этот псевдокод:



Class PoweredDevice {
}

Class Scanner inherits from PoweredDevice {
function start() {
}
}

Class Printer inherits from PoweredDevice {
function start() {
}
}

Class Copier inherits from Scanner, Printer {
}


Обратите внимание, что классы Scanner и Printer оба реализуют функцию start. Тогда какую функцию start унаследует класс Copier? Та, что реализована классом Scanner? Или классом Printer? Не могут же они обе унаследоваться.



Решение проблемы ромба



Решение очень простое: не делайте так. Вот именно. Большинство ОО-языков не позволят так сделать. Но… что если мне нужно смоделировать такую ситуацию? Мне нужно моё повторное использование! Тогда вы должны агрегировать и делегировать.



Class PoweredDevice {
}

Class Scanner inherits from PoweredDevice {
function start() {
}
}

Class Printer inherits from PoweredDevice {
function start() {
}
}

Class Copier {
Scanner scanner
Printer printer
function start() {
printer.start()
}
}


Класс Copier теперь содержит экземпляры Printer и Scanner. Он делегирует реализацию функции start классу Printer. А может так же легко делегировать Scanner’у. Эта проблема — ещё одна трещина в Столпе Наследования.



Проблема хрупкого базового класса



Итак, я уменьшаю свою иерархию и не позволяю ей становиться цикличной. Проблема ромба решена. И всё снова стало хорошо. Пока вдруг… Однажды мой код перестал работать. При этом я его не менял. Ну, наверное, это баг… Хотя, погоди… Что-то изменилось… Но этого не было в моём коде. Похоже, изменение произошло в классе, от которого я наследовал. Как изменение в базовом классе могло сломать мой код??? А вот как… Возьмём следующий базовый класс (он написан на Java, но вам будет легко разобраться с кодом, даже если вы не знаете этого языка):



import java.util.ArrayList;

public class Array
{
private ArrayList a = new ArrayList();

public void add(Object element)
{
a.add(element);
}

public void addAll(Object elements[])
{
for (int i = 0; i < elements.length; ++i)
a.add(elements[i]); // this line is going to be changed
}
}


ВАЖНО: Обратите внимание на выделенную строку. Позднее она изменится и всё сломает. У этого класса две функции интерфейса: add() и addAll(). Функция add() добавляет одиночный элемент, а addAll()несколько элементов посредством вызова функции add(). А вот производный класс:



public class ArrayCount extends Array
{
private int count = 0;

@Override
public void add(Object element)
{
super.add(element);
++count;
}

@Override
public void addAll(Object elements[])
{
super.addAll(elements);
count += elements.length;
}
}


Класс ArrayCount — специализация общего класса Array. Единственная разница в их поведении заключается в том, что ArrayCount содержит счётчик количества элементов. Давайте подробнее разберём оба класса.




  • Array add() добавляет элемент в локальный ArrayList.

  • Array addAll() вызывает локальный ArrayList для добавления каждого элемента.

  • ArrayCount add() вызывает свой родительский add(), а затем инкрементирует счётчик.

  • ArrayCount addAll() вызывает свой родительский addAll(), а затем инкрементирует счётчик по количеству элементов.



И всё работает замечательно. А теперь критическое изменение выделенной строки:



public void addAll(Object elements[])
{
for (int i = 0; i < elements.length; ++i)
add(elements[i]); // эта строка была изменена
}


Что касается владельца базового класса, то он работает так, как заявлено. И проходит все автотесты. Но владелец не обращает внимание на производный класс. И владелец производного класса сильно разочарован. Теперь ArrayCount addAll() вызывает родительский addAll(), который внутри себя вызывает add(), управление которым уже было ПЕРЕХВАЧЕНО производным классом. В результате счётчик инкрементируется при каждом вызове add() производного класса, а затем СНОВА инкрементируется по количеству элементов, добавляемых addAll() производного класса. ТО ЕСТЬ, ЭЛЕМЕНТЫ ПОДСЧИТЫВАЮТСЯ ДВАЖДЫ.



Раз такое может произойти, автор производного класса должен ЗНАТЬ, как был реализован базовый класс. И он должен быть информирован о каждом изменении в базовом классе, поскольку это может иметь непредсказуемое влияние на производный класс. Гхм! Эта огромная трещина будет всегда угрожать стабильности драгоценного Столпа Наследования.



Решение проблемы хрупкого базового класса



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



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



Проблема иерархии



Каждый раз, создавая новую компанию, мне приходится решать проблему, связанную с выбором места для документации компании. Нужно ли мне сделать папку Документы, а внутри неё создать папку Компания? Или мне нужно сделать папку Компания, а внутри неё — Документы? Оба варианта рабочие, но какой из них правильный? Какой лучше?



Идея иерархии “общее/частное” заключалась в том, чтобы были некие общие базовые классы (родители), и их специализированные версии — производные классы (дети). И даже ещё более специализированные, если следовать по цепочке наследования (см. схему иерархии форм в начале статьи). Но если родитель и ребёнок могут произвольно меняться местами, то с этой моделью явно что-то не так.



Решение проблемы иерархии



А не так с ней то… что иерархия “общее/частное” не работает. Так для чего тогда хороши иерархии?



Для включения (Containment).



Если посмотреть на реальный мир, то вы везде будете натыкаться на иерархии включения. А чего вы не найдёте, так это иерархии “общее/частное”. Не будем пока на этом останавливаться. Объектно-ориентированная парадигма изначально была взята из реального мира, наполненного объектами. Но потом она начала использовать порочные модели, вроде иерархии “общее/частное”, аналогов которым в жизни не существует. Зато мир наполнен иерархиями включения. Хороший пример — ваши носки. Они лежат ящике, который находится внутри шкафа, который находится внутри вашей комнаты, которая находится внутри вашего дома и т.д.



Другой пример иерархий включения — папки в компьютере. Они содержат файлы. Как мы их категорируем? Если вспомнить о документах компании, то не особо-то и важно, куда их класть, в папку Документы или в папку Барахло. Важно то, что я категорирую их с помощью тэгов. Я помечаю файл такими тэгами:




  • Document

  • Company

  • Handbook



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



Инкапсуляция, второй обрушившийся столп







На первый взгляд, инкапсуляция — второе важнейшее преимущество объектно-ориентированного программирования. Переменные объекта защищены от доступа снаружи, то есть они инкапсулированы в объект. Больше не нужно беспокоиться о глобальных переменных, к которым обращается кто ни попадя. Инкапсуляция — это сейф для ваших переменных. Инкапсуляция просто НЕВЕРОЯТНАЯ!!! Долгой жизни инкапсуляции… До тех пор, пока не возникнет…



Проблема ссылки (The Reference Problem)



Ради повышения производительности, функциям передаются не значения объектов, а ссылки на них. Это означает, что и сами функции передают не объекты, а ссылки. Если ссылка на объект передаётся конструктору объектов, то он кладёт её в приватную переменную, защищённую инкапсулированием. Но переданный объект небезопасен! Почему? Потому в какой-то части нашего кода содержится указатель на объект, то есть код, вызывающий конструктор. Но он ДОЛЖЕН иметь ссылку на объект, в противном случае он не сможет передать её конструктору.



Решение проблемы ссылки



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



Полиморфизм, третий обрушившийся Столп







Полиморфизм — это рыжеволосый пасынок Объектно-Ориентированной Троицы. Вроде Ларри Файна в этой компании. Куда бы они не отправились, он был с ними, но всегда на вспомогательных ролях. Это не значит, что полиморфизм плох, просто для его использования вам не нужен ОО-язык. Его могут предоставить интерфейсы. Причём безо всякой дополнительной объектно-ориентированной нагрузки. Кроме того, в случае с интерфейсами вы не ограничены количеством возможных поведений, которые можно сочетать. Так что без лишних разговоров прощаемся с ОО-полиморфизмом, и приветствуем полиморфизм на основе интерфейсов.



Нарушенные обещания







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



И что теперь?



Привет, функциональное программирование. Мне очень понравилось работать с тобой в последние годы. Чтобы вы знали: я не принимаю любые ваши обещания за чистую монету. Я сначала проверю их, чтобы поверить. Обжёгшись на молоке, будешь дуть и на воду. Ну вы поняли.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/307168/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

NIST: SMS нельзя использовать в качестве средства аутентификации

Пятница, 05 Августа 2016 г. 10:12 (ссылка)





Американский институт стандартов и технологий (NIST) выступил за отказ от использования SMS в качестве одного из элементов двухфакторной аутентификации. В очередном черновике стандарта Digtial Authentication Guideline представители ведомства указывают, что «[внеполосная аутентификация] с помощью SMS будет запрещена стандартом и не будет допускаться в его последующих изданиях».



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



Под внеполосной аутентификацией здесь подразумевается использование второго устройства для идентификации личности пользователя.



Почему SMS нельзя использовать для аутентификации



В документе NIST напрямую не указаны причины того, почему SMS не следует использовать в качестве элементов двухфакторной системы аутентификации. Тем не менее, очевидно, что представители Института учли в черновике многочисленные сообщения о взломах и перехватах SMS.



В частности, широкую огласку получила история с взломом Telegram-аккаунтов российских оппозиционеров. О том, что система авторизации по SMS в мессенджере возможно скомпрометирована заявил Павел Дуров. По мнению создателя Telegram, атака не могла быть осуществлена без вмешательства спецслужб. Однако эксперты Positive Technologies провели собственное исследование, в результате которого им удалось перехватить коды аутентификации Telegram и WhatsApp с помощью уязвимостей сетей SS7.



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







Кроме того, ранее мы публиковали результаты исследования защищенности сетей SS7. Итоговый уровень безопасности сетей SS7 всех исследованных операторов мобильной связи оказался крайне невысок. В 2015 году в отношении операторов связи и их сетей SS7 могли быть реализованы атаки, связанные с утечкой данных абонентов (77% успешных попыток), нарушениями в работе сети (80%) и мошенническими действиями (67%).



Популярность этой темы легко проверить. Соответствующие запросы в поисковых системах выдают ссылки на специализированные ресурсы в закрытом интернете:







В закрытом сегменте сети можно найти массу сервисов для взлома SS7:







Заказы на подобные взломы также размещаются вполне открыто:







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



Что теперь будет



Лучшие практики, публикуемые NIST не являются юридически обязывающими стандартами. Однако многие государственные ведомства и агентства США следуют им, что также делают и многие компании, представляющие ИТ-отрасль. Поэтому многие из них после столь однозначеного вердикта Института стандартов и технологий начнут присматриваться к альтернативным способам аутентификации, помимо SMS.



Среди таких альтернатив, к примеру, приложения, доставляющие пользователям двухфакторные коды, обновляющиеся каждые 30 секунд — среди них такие, как Google Authenticator, Authy, Duo. Крупные корпорации разрабатывают инструменты, которые работают на основе похожих принципов (RSA SecureID).



Тем не менее, полного и повсеместного отказа от систем аутентификации, основанных на применении SMS в ближайшем будущем не произойдет. Однако постепенно будет расти число сервисов, которые поддерживают двухфакторную аутентификацию не только через SMS, но и внутри своих приложений. И именно такие системы будут показывать лучшие результаты в деле обеспечения безопасности пользователей.
Original source: habrahabr.ru.

https://habrahabr.ru/post/307156/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<стандарты - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda