Как стать автором
Обновить
2
0

Пользователь

Отправить сообщение

Дайджест: Технологии DPI и оборудование СОРМ

Время на прочтение3 мин
Количество просмотров12K
В третьем тематическом дайджесте мы подобрали наши свежие материалы, в которых разобраны различные аспекты технологий Deep Packet Inspection и оборудования СОРМ.

Другие выпуски дайджеста:


Читать дальше →
Всего голосов 25: ↑19 и ↓6+13
Комментарии0

Iptables: немного о действии REDIRECT, его ограничениях и области применения

Время на прочтение2 мин
Количество просмотров52K

Данная заметка повествует о действии REDIRECT в iptables, его ограничениях и области применения.

Iptables и REDIRECT


Действие REDIRECT предназначено для перенаправления пакетов с одного набора портов на другой внутри одной системы, не выходя за пределы хоста.
Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии2

Информационная безопасность АСУ ТП: Дон Кихот в эру кибероружия

Время на прочтение13 мин
Количество просмотров57K

В данной статье проведена систематизация требований к информационной безопасности (ИБ) АСУ ТП. Требования выбраны из доступных на настоящий момент стандартов, в первую очередь, из NIST SP 800-82 «Guide to Industrial Control Systems (ICS) Security» и разрабатываемой новой редакции серии ISA/IEC 62443 «Security for Industrial Automation and Control Systems».

АСУ ТП взаимодействуют с объектами физического мира и обеспечивают защиту от аварий и катастроф. В англоязычной литературе АСУ ТП называют Industrial Control Systems (ICS) или Industrial Automation and Control Systems (IACS). В мире IT технологий их можно сравнить с Дон Кихотом, который остался верен простым, но не очень модным принципам в уже давно изменившемся мире.

Поэтому, была проведена параллель с функциональной безопасностью и рассмотрен комплекс требований, позволяющих обеспечить обе стороны безопасности АСУ ТП, и функциональную, и информационную.

Похожие проблемы следует решать и для других кибер-физических систем, включая IoT и встроенные управляющие системы.
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии8

Видео лучших докладов .NET-конференции DotNext 2015 Moscow

Время на прочтение4 мин
Количество просмотров18K



Уже через две с половиной недели в Питере пройдет большая .NET-конференция DotNext.

Предыдущая конференция DotNext прошла в декабре в Москве. В этом посте я, по уже сложившейся традиции, расскажу о ее лучших докладах (по мнению участников).

Конференцию посетило около 450 человек, и еще около 100-150 смотрели ее онлайн. Свои отзывы нам оставили более 400 человек — это около 70% участников. Такой процент позволяет нам говорить о том, что наша выборка релевантна, а рейтинг — довольно объективен.

10 место


Александр ControlFlow Шведов, JetBrains — Дизайн и эволюция C# на примере свойств
Средняя оценка: 4.41



Эдакий экскурс в историю построения языка, позволяющий взглянуть на один из элементов современного C# глазами ее разработчиков. В докладе речь идет не только о том, какие свойства сейчас, но и о том, как они эволюционировали от версии к версии.
Читать дальше →
Всего голосов 27: ↑24 и ↓3+21
Комментарии4

Тест бесплатных программ для восстановления данных. Версия читателей Хабра

Время на прочтение7 мин
Количество просмотров93K
Приветствую всех Хабровчан!

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

  1. R.Saver 2.8
  2. Handy Recovery 5.5
  3. GetDataBack 1.0
  4. PhotoRec/TestDisk 7.0
  5. RecoveRx 3.0
  6. DMDE 2.10.2
  7. Zero Assumption Recovery 9.2
  8. Active@ File Recovery 14

Мы протестировали их. Результаты тестов ниже.

Внимание! Много скриншотов.

UPD Добавлены тесты еще двух утилит.
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии43

Паттерны ООП в метафорах

Время на прочтение17 мин
Количество просмотров566K
Большинство литературы посвященной паттернам в ООП (объектно-ориентированном программировании), как правило, объясняются на примерах с самим кодом. И это правильный подход, так как паттерны ООП уже по-умолчанию предназначаются для людей, которые знают что такое программирование и суть ООП. Однако порой требуется заинтересовать этой темой людей, которые в этом совершенно ничего не понимают, например «не-программистов» или же просто начинающих «компьютерщиков». Именно с этой целью и был подготовлен данный материал, который призван объяснить человеку любого уровня знаний, что такое паттерн ООП и, возможно, привлечет в ряды программистов новых «адептов», ведь программирование это на самом деле очень интересно.
Статья предназначена исключительно для новичков, так что «старожилы» ничего нового для себя не узнают. В основном статья описывает известные паттерны из книги «Приемы объектно-ориентированного программирования. Шаблоны проектирования.», но более популярным и простым языком.
Читать дальше →
Всего голосов 214: ↑201 и ↓13+188
Комментарии86

Записки правдивого архитектора: просто о самом главном (Ч.2)

Время на прочтение9 мин
Количество просмотров21K
Архитектура – это про будущее…
— именно на этой мысли мы остановились в конце 1й части статьи. Продолжаем.

Что такое хорошая архитектура?


Хорошая архитектура – та, что соответствует своему назначению, т.е. позволяет решать поставленные перед ней задачи.

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

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

Это возможно, если при проектировании учитывается набор так называемых нефункциональных требований. Пользователь начинает их замечать только в случае их нарушения — пользователь сосредоточен, прежде всего, на функционале, который ему необходим. Но это не значит, что этот аспект должен уйти из нашего фокуса внимания. Когда эти требования нарушаются, для пользователя зачастую это выглядит просто – система не работает.
Читать дальше →
Всего голосов 19: ↑12 и ↓7+5
Комментарии31

Подходы к проектированию RESTful API

Время на прочтение17 мин
Количество просмотров146K

Автор: Вячеслав Михайлов, Solutions Architect.

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

Часть 1. Теория


Итак, как мы все знаем, API — application programming interface (интерфейс программирования приложений), набор правил и механизмов, с помощью которых одно приложение или компонент взаимодействует с другими

Почему хороший API — это важно?

  • Простота использования и поддержки. Хороший API просто использовать и поддерживать.
  • Хорошая конверсия в среде разработчиков. Если всем нравится ваш API, к вам приходят новые клиенты и пользователи.
  • Выше популярность вашего сервиса. Чем больше пользователей API, тем выше популярность вашего сервиса.
  • Лучше изоляция компонентов. Чем лучше структура API, тем лучше изоляция компонентов.
  • Хорошее впечатление о продукте. API — это как бы UI разработчиков; это то, на что разработчики обращают внимание в первую очередь при встрече с продуктом. Если API кривой, вы как технический эксперт не будете рекомендовать компаниям использовать такой продукт, приобретая что-то стороннее.


Теперь посмотрим, какие бывают виды API.

Виды API по способу реализации:
  • Web service APIs
    • XML-RPC and JSON-RPC
    • SOAP
    • REST

  • WebSockets APIs
  • Library-based APIs
    • Java Script

  • Class-based APIs
    • C# API
    • Java



Виды API по категориям применения:

  • OS function and routines
    • Access to file system
    • Access to user interface

  • Object remoting APIs
    • CORBA
    • .Net remoting

  • Hardware APIs
    • Video acceleration (OpenCL…)
    • Hard disk drives
    • PCI bus



Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии37

Опыт лекций по введению в шаблоны проектирования

Время на прочтение8 мин
Количество просмотров42K
Позвольте небольшое предисловие — обозначу в нём цель статьи.
Я по субботам студентам младших курсов преподаю введение в шаблоны проектирования. Вот, хочу поделиться опытом, описать план нескольких первых лекций. Большинству читателей, я полагаю, сам излагаемый мной материал давно знаком, но, возможно, порядок и способ изложения покажутся любопытными.
Слишком часто, увы, нам рассказывают что-то, но не говорят, зачем это нужно, или говорят даже, но будто вскользь. Скажем, обыкновенно, говоря о C#, расскажут, что такое базовый класс и интерфейс, каким синтаксисом нужно пользоваться, чтобы написать их, приведут пример, где базовым будет класс «Птица», а наследниками «Утка» и «Орёл», но зачем всё это нужно, какая от всей — потенциально сложной — иерархии классов достигается польза, не говорят: это будто бы в тени, подразумевается само собою. И вот потому у многих учеников, ещё не успевших набить свои шишки, в голове перевёрнутая картина мира — они неплохо представляют, что за инструменты даны им в руки, но зачем они изобретены и к чему применимы, понимают смутно.
Вот поэтому я сочинил несколько учебных примеров, на которых можно показать зачем нужны некоторые подходы. Правда, придётся принять условность — будем бить из пушки по воробьям, а то и по воображаемым мишеням. Зато пристреляемся и уж во вражеский бруствер точно попадём, случись что.
Сразу скажу, что от вопросов совсем простых мы быстро перейдем к довольно сложным (ну, скажем, к компоновщику), потому читайте до конца, если уж не с начала.
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии80

Шаблон проектирования View в языках с зависимыми типами

Время на прочтение11 мин
Количество просмотров10K


Шаблоны проектирования! Впервые я узнал о них на курсе Software Design, когда учился в магистратуре Академического университета. Мы писали различные программы на Java с использованием шаблонов. С тех пор это словосочетание ассоциируется у меня с чем-то таким ООПшным. Однако, разбираясь с языком Agda, я наткнулся на статью The Power Of Pi, которая рассказывает про шаблоны проектирования в языках с зависимыми типами!

В этом посте я хочу рассказать об одном из этих шаблонов, который называется View. С его помощью можно реализовывать пользовательские правила pattern matching'a. Если вам интересно, что это за шаблон, что такое пользовательский pattern matching, каковы особенности pattern matching'а в языках с зависимыми типами, и вы знакомы с каким-нибудь функциональным языком программирования со статической типизацией (Haskell, Scala, Ocaml, F#) — добро пожаловать под кат!
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии1

Шпаргалка по шаблонам проектирования

Время на прочтение2 мин
Количество просмотров1.4M

Перевод pdf файла с сайта http://www.mcdonaldland.info/ с описанием 23-х шаблонов проектирования GOF. Каждый пункт содержит [очень] короткое описание паттерна и UML-диаграмму. Сама шпаргалка доступна в pdf, в виде двух png файлов (как в оригинале), и в виде 23-х отдельных частей изображений. Для самых нетерпеливых — все файлы в конце статьи.

Под катом — много картинок.

Читать дальше →
Всего голосов 192: ↑179 и ↓13+166
Комментарии66

Скрытые зависимости как «запах» проектирования

Время на прочтение3 мин
Количество просмотров8.3K
Марк Симан написал замечательный пост «Service Locator нарушает инкапсуляцию». Название поста говорит само за себя о том, что он посвящён паттерну (анти-паттерну) Service Locator. Когда программист произвольно в коде вызывает IoC-контейнер для разрешения зависимости того или иного объекта — он использует Service Locator анти\паттерн. Марк рассматривает следующий пример:
public class OrderProcessor : IOrderProcessor
{
    public void Process(Order order)
    {
        var validator = Locator.Resolve<IOrderValidator>();
        if (validator.Validate(order))
        {
            var shipper = Locator.Resolve<IOrderShipper>();
            shipper.Ship(order);
        }
    }
}

Читать дальше →
Всего голосов 10: ↑6 и ↓4+2
Комментарии36

Observer vs Pub-Sub

Время на прочтение4 мин
Количество просмотров66K
Observer и Pub-sub, наверное самые известные паттерны взаимодействия в мире разработки интерфейсов и JavaScript. Но несмотря на свою известность, некоторые разработчики считают эти паттерны одинаковыми, что и послужило подспорьем написать данную статью.



Пофилософствуем
Всего голосов 16: ↑13 и ↓3+10
Комментарии43

50 цитат о программировании всех времён

Время на прочтение6 мин
Количество просмотров161K
Перевёл после прочтения комментариев к статье «О ненависти к C++». В цитатах можно найти ответы на большинство возникших там вопросов.

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

49. Lisp — это не язык, а строительный материал.
— Alan Kay

48. Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены.
— Edward V Berard
Читать дальше →
Всего голосов 344: ↑336 и ↓8+328
Комментарии136

Джефф Дин из компании Google — это Чак Норрис нашего времени

Время на прочтение4 мин
Количество просмотров225K
«Джефф Дин компилирует и запускает свой код перед коммитом, но только чтобы проверить на баги компилятор и CPU», — вот один из множества шуточных фактов о Джеффе Дине.

Джефф Дин считается кем-то вроде Чака Норриса. Отличие только в том, что он вовсе не герой боевиков, а инженер-программист компании Google.

Шутки о нём впервые появились на 1 апреля шесть лет назад. Один из коллег Дина по имени Кентон Варда открыл страничку, куда каждый мог добавлять факты о Джеффе Дине. Идею с энтузиазмом подхватили другие разработчики — и вскоре наполнили страничку множеством таких «фактов».
Читать дальше →
Всего голосов 395: ↑364 и ↓31+333
Комментарии123

Паттерны для новичков: MVC vs MVP vs MVVM

Время на прочтение6 мин
Количество просмотров798K
Добрый день, уважаемые коллеги. В этой статье я бы хотел рассказать о своем аналитическом понимании различий паттернов MVC, MVP и MVVM. Написать эту статью меня побудило желание разобраться в современных подходах при разработке крупного программного обеспечения и соответствующих архитектурных особенностях. На текущем этапе своей карьерной лестницы я не являюсь непосредственным разработчиком, поэтому статья может содержать ошибки, неточности и недопонимание. Заинтригованы, как аналитики видят, что делают программисты и архитекторы? Тогда добро пожаловать под кат.
Читать дальше →
Всего голосов 45: ↑40 и ↓5+35
Комментарии37

Руководство разработчика Prism — часть 6, продвинутые сценарии MVVM

Время на прочтение36 мин
Количество просмотров19K
Оглавление
  1. Введение
  2. Инициализация приложений Prism
  3. Управление зависимостями между компонентами
  4. Разработка модульных приложений
  5. Реализация паттерна MVVM
  6. Продвинутые сценарии MVVM
  7. Создание пользовательского интерфейса
    1. Рекомендации по разработке пользовательского интерфейса
  8. Навигация
    1. Навигация на основе представлений (View-Based Navigation)
  9. Взаимодействие между слабо связанными компонентами

В предыдущей главе было описано, как создать основные элементы паттерна MVVM, разделив интерфейс пользователя, логику представления и бизнес-логику по отдельным классам (представление, модель представления и модель), реализовать между ними взаимодействие (посредством привязки данных, команд и интерфейсов валидации данных), организовать их создание и настройку.

Реализация паттерна MVVM, используя эти основные элементы, скорее всего, подойдёт под большинство сценариев в вашем приложении. Однако можно встретиться с более сложными сценариями, которые требуют расширения паттерна MVVM, или применения более продвинутых методов. Это, скорее всего, произойдёт, если ваше приложение будет большим или сложным, но с этим можно встретиться и во многих небольших приложениях. Библиотека Prism предоставляет компоненты, которые реализуют многие из этих методов, позволяя вам легко использовать их в ваших приложениях.

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

Раздел «Продвинутое создание и настройка», даёт представление о том, как создавать и настраивать компоненты при использовании контейнера внедрения зависимости, такого как Unity Application Block (Unity), или Managed Extensibility Framework (MEF). Заключительный раздел описывает, как можно протестировать приложения MVVM, и даёт представление о модульном тестировании классов модели и модели представления, а также о тестировании поведений.
Читать дальше →
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

Анонс .NET-конференции DotNext 2016 Piter

Время на прочтение1 мин
Количество просмотров5.4K


В пятницу, 3 июня, в Санкт-Петербурге пройдет .NET-конференция DotNext 2016 Piter. Это будет уже пятая по счету конференция DotNext, третья в Петербурге. Второй раз подряд конференцию примет гостиница «Radisson Пулковская».

Что мы припасли для вас на этот раз? Как всегда, крутейшие темы от крутейших докладчиков.

В частности, на конференции выступят:
  • Авторы крутейших книг о .NET Dino Esposito и Sasha Goldshtein;
  • Разработчики ReShaper и новой IDE для C# под названием Rider;
  • Сотрудники Microsoft, как евангелисты, так и инженеры, причем самого крутого уровня
  • Лучшие хаброавторы, лидеры .NET-хаба;
  • Лучшие докладчики предыдущих конференций DotNext;
  • Организаторы и спикеры SPb .NET Community;
  • Традиционные спонсоры DotNext — JetBrains и Futurice;
  • Кто-то из вас — мы ждем от вас заявок!

Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии12

Использование ClickOnce и прокси-сервера

Время на прочтение2 мин
Количество просмотров9.1K
ClickOnce — технология Майкрософт для развёртывания приложений. Приложения ClickOnce могут проверять наличие новых версий по мере их доступности и автоматически заменять любые обновленные файлы, что очень удобно.

Бывает так, что для управления доступом пользователей к Интернету и ресурсам внешней сети используется прокси-сервер (с аутентификацией или без). ClickOnce предоставляет поддержку встроенной проверки подлинности прокси-сервера в Windows, начиная с версии .NET Framework 3.5, но не поддерживает другие протоколы проверки подлинности, такие как «Обычная проверка подлинности» или «Краткая проверка подлинности».
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии5

Что делает программное обеспечение качественным?

Время на прочтение21 мин
Количество просмотров19K
image
КДПВ

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

У вас возникает вопрос: какие качества программного обеспечения приводят разработчика к успеху или к неудаче? Как я могу улучшить свой софт и помочь бо́льшему количеству людей стать успешным? Я могу ясно сформулировать некоторые основные принципы или полагаюсь на интуицию в зависимости от конкретного случая? (Рождение и воплощение одной мысли это два совершенно разных действия).

Возможно это что-то вроде принципов Дитера Рамса, способствующих качественному дизайну программного обеспечения?

  • Хороший проект является инновационным.
  • Хороший проект делает продукт полезным.
  • Хороший проект эстетичен.
  • Хороший проект делает продукт понятным.
  • Хороший проект ненавязчив.
  • Хороший проект честен.
  • Хороший проект длителен.
  • Хороший проект продуман до мельчайших деталей.
  • Хороший проект безвреден для окружающей среды.
  • В хорошем проекте дизайна настолько мало, насколько это возможно.
Читать дальше →
Всего голосов 24: ↑16 и ↓8+8
Комментарии6

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность