Как стать автором
Обновить
-13
Карма
0
Рейтинг

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

  • Публикации
  • Комментарии

Угрозы информационной безопасности в эпоху цифровой трансформации

Информационная безопасность

Введение


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

image
Рис 1. Цифровая трансформация — переход к 6-му технологическому укладу

Не все компании готовы к новым и достаточно жестким требованиям, которые им предъявляет ЦТ, а именно, к полной модернизации методов ведения бизнеса, пересмотру внутренних бизнес-процессов и новой культуре взаимоотношений внутри компании. Мало того, менеджмент должен быть подготовлен, как к позитивным, так и к негативным последствиям цифровой трансформации.
Читать дальше →
Всего голосов 7: ↑6 и ↓1 +5
Просмотры4.5K
Комментарии 2

Новости

Показать еще

Проверка орфографии в приложениях Qt

C++Qt
Из песочницы

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

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Просмотры1.6K
Комментарии 1

Как построить четкие модели классов и получить реальные преимущества от UML

Retail RocketСовершенный кодПроектирование и рефакторингUML DesignООП
Перевод

Мне показался близким подход Леона Старра к объяснению чётких моделей классов и описанию их преимуществ. Настолько, что мы в Retail Rocket решили сделать перевод его большой статьи "How To Build Articulated UML Class Models". Будем выкладывать по частям, под катом — первая из трёх.

Читать далее
Всего голосов 18: ↑14 и ↓4 +10
Просмотры9.9K
Комментарии 2

Запускаем Rust-приложение на мобильной ОС Аврора

КРОКПрограммированиеРазработка мобильных приложенийRust

Всем привет! Меня зовут Шамиль, я ведущий инженер-разработчик в КРОК. Помимо всего прочего мы в компании занимаемся ещё и разработкой мобильных приложений для операционной системы Аврора, есть даже центр компетенций по ней.

Для промышленной разработки мы, конечно же, пока используем связку C++ и QML, но однажды подсев на "ржавую" иглу Rust, я не мог не попробовать применить свой любимый язык программирования для написания мобильных приложений. В этой статье я опишу эксперимент по написанию простейшего приложения на Rust, предназначенного для запуска на мобильном устройстве под управлением вышеупомянутой ОС. Сразу оговорюсь, что легких путей я не искал – эксперименты проводил на сертифицированной версии Авроры, которая добавила огонька в этот процесс. Но, как говорится, только защищённая ОС, только хардкор.

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

Читать далее
Всего голосов 35: ↑35 и ↓0 +35
Просмотры4.9K
Комментарии 9

Многопоточность на низком уровне

JUG Ru GroupПрограммирование.NETC#Параллельное программирование

Очень часто при обсуждении многопоточности на платформе .NET говорят о таких вещах, как детали реализации механизма async/await, Task Asynchronous Pattern, deadlock, а также разбирают System.Threading. Все эти вещи можно назвать высокоуровневыми (относительно темы хабрапоста). Но что же происходит на уровне железа и ядра системы (в нашем случае — Windows Kernel)?


На конференции DotNext 2016 Moscow Гаэл Фретёр, основатель и главный инженер компании PostSharp, рассказал о том, как в .NET реализована многопоточность на уровне железа и взаимодействия с ядром операционной системы. Несмотря на то, что прошло уже пять лет, мы считаем, что никогда не поздно поделиться хардкорным докладом. Гаэл представил нам хорошую базу по работе процессора и атомнарным примитивам.



Вот репозиторий с примерами из доклада. А под катом — перевод доклада и видео. Далее повествование будет от лица спикера.

Читать дальше →
Всего голосов 42: ↑41 и ↓1 +40
Просмотры21.5K
Комментарии 16

Анастасия Тихонова: «Нам крупно повезло, что атаки APT пока еще не привели к массовым человеческим жертвам»

Group-IBИнформационная безопасностьРеверс-инжинирингКиберпанк


У нас новый проект: начиная с этого поста мы будем знакомить вас с профессиями и ведущими специалистами Group-IB, расскажем об их работе, исследованиях и кейсах, о том, как и где можно пройти обучение и, конечно, дадим ссылку на актуальные вакансии. Первый гость — Анастасия Тихонова, ее интервью мы даем прямой речью и, что называется, без купюр.
Читать дальше →
Всего голосов 22: ↑16 и ↓6 +10
Просмотры12.9K
Комментарии 31

Пишем LR(0)-анализатор. Простыми словами о сложном

Алгоритмы
Из песочницы

Введение



Добрый день.
Не нашел простого и внятного описания данного алгоритма на русском языке. Решил восполнить сей пробел. Прежде всего что это такое? LR(0)-анализатор в первую очередь это синтаксический анализатор. Цель синтаксического анализатора обработать входной поток лексем(базовые элементы языка, которые производит лексический анализатор на основе входного потока символов, примеры лексем — число, запятая, символ) и сопоставить его с описанием языка заданного в определенном формате. Сопоставление заключается в построении определенной структуры данных, чаще всего — дерева. Дальше эта структура пойдет на следующий этап — семантический анализ, где уже компилятор пытается понять смысл, заключенный в дереве.

Существует 2 класса синтаксических анализаторов — восходящие анализаторы и нисходящие. Первые строят дерево начиная с листьев, которые являются входными лексемами, вторые соответственно наоборот начинают с корня дерева. Собственно LR и значит то, что анализатор будет читать поток слева направо (L — 'Left') и строить дерево снизу вверх (пусть не смущает буква R, которая значит Right, объяснения даны чуть ниже). Индекс 0 обозначает то что мы не предпросматриваем следующие лексемы, а работаем только с текущей. Какие же плюсы даёт нам выбор этого типа анализаторов?
  • Он быстр.
  • Покрывает множество языков. То есть если вы придумали язык и описали его, то с большой долей вероятности LR-анализатор его сможет обработать.
  • Синтаксические ошибки обнаруживаются так быстро как это возможно. Сразу же как встречается символ, который не соответствует предыдущему входному потоку, мы можем вывести ошибку об этом.

Есть и недостатки:
  • Относительная сложность построения.
  • Можно вогнать анализатор в ступор неоднозначностью описания языка.


Читать дальше →
Всего голосов 75: ↑71 и ↓4 +67
Просмотры23.6K
Комментарии 17

Дональд Кнут: про ассемблер, транслятор и грамотное программирование

EdisonПрограммированиеАлгоритмыПрофессиональная литература
Перевод
"Literate programming (грамотное программирование) — отношение к компьютерным программам, как к литературе: компьютерная программа пишется не столько для компьютера, сколько для людей, чтобы люди могли ее прочитать. И поскольку я пишу программы, то я, в некотором роде, учитель."

image


«Давайте изменим традиционные приоритеты в создании программ: вместо представления о нашей задаче как о создании инструкций «Что делать?» для компьютера сконцентрируемся на объяснении другим людям описаний нашего видения того, что под управлением программы должен делать компьютер.»
Читать дальше →
Всего голосов 32: ↑29 и ↓3 +26
Просмотры22.1K
Комментарии 6

Вышел .NET 5. И что?

КонтурПрограммирование.NETC#

Несколько недель назад вышел .NET 5. На сайте Microsoft можно найти подробный анонс со всеми изменениями, но главный вопрос для меня, как для разработчика — и что с того? Что мне с выхода пятого дотнета, как я могу его использовать, есть ли смысл переходить на новую версию прямо сейчас? На эти вопросы я постараюсь ответить дальше.


image

Читать дальше →
Всего голосов 44: ↑44 и ↓0 +44
Просмотры37.6K
Комментарии 100

Как дурак C# учил. Часть 1

Программирование.NETИзучение языков

Запись 1


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

Это дневник человека, изучающего программирование для удовольствия. Не для профессии, не для заработка. Я не живу в Нигерии с кнопочным телефоном и не нахожусь в отчаянном положении. Я просто учусь и программирую для развлечения в свободное от работы и семейных дел время. Шоу в реальном времени. Публикуется пачками по 5 записей.
Читать дальше →
Всего голосов 63: ↑53 и ↓10 +43
Просмотры85.4K
Комментарии 109

Примеры xpath-запросов к html

Разработка веб-сайтов
Xpath — это язык запросов к элементам xml или xhtml документа. Также как SQL, xpath является декларативным языком запросов. Чтобы получить интересующие данные, необходимо всего лишь создать запрос, описывающий эти данные. Всю «черную» работу за вас выполнит интерпретатор языка xpath.
Очень удобно, не правда ли? Давайте посмотри какие возможности предлагает xpath для доступа к узлам веб-страниц.
Читать дальше →
Всего голосов 61: ↑57 и ↓4 +53
Просмотры391.8K
Комментарии 47

ref locals и ref returns в C#: подводные камни производительности

MicrosoftПрограммирование.NETC#
Перевод
В языке C# с самого начала поддерживалась передача аргументов по значению или по ссылке. Но до версии 7 компилятор C# поддерживал только один способ возврата значения из метода (или свойства) — возврат по значению. В C# 7 ситуация изменилась с введением двух новых возможностей: ref returns и ref locals. Подробнее о них и об их производительности — под катом.

Читать дальше →
Всего голосов 27: ↑26 и ↓1 +25
Просмотры18.7K
Комментарии 12

Умный print для C

C

Для тех кто пишет на С, возможно, будет интересно как мне удалось создать умную функцию print(), в которую можно кидать переменные любого типа — дженерик print.

show me the code
Всего голосов 90: ↑87 и ↓3 +84
Просмотры11.9K
Комментарии 29

Магия тензорной алгебры: Часть 2 — Векторные и тензорные операции. Ранги тензоров

Математика

Содержание


  1. Что такое тензор и для чего он нужен?
  2. Векторные и тензорные операции. Ранги тензоров
  3. Криволинейные координаты
  4. Динамика точки в тензорном изложении
  5. Действия над тензорами и некоторые другие теоретические вопросы
  6. Кинематика свободного твердого тела. Природа угловой скорости
  7. Конечный поворот твердого тела. Свойства тензора поворота и способ его вычисления
  8. О свертках тензора Леви-Чивиты
  9. Вывод тензора угловой скорости через параметры конечного поворота. Применяем голову и Maxima
  10. Получаем вектор угловой скорости. Работаем над недочетами
  11. Ускорение точки тела при свободном движении. Угловое ускорение твердого тела
  12. Параметры Родрига-Гамильтона в кинематике твердого тела
  13. СКА Maxima в задачах преобразования тензорных выражений. Угловые скорость и ускорения в параметрах Родрига-Гамильтона
  14. Нестандартное введение в динамику твердого тела
  15. Движение несвободного твердого тела
  16. Свойства тензора инерции твердого тела
  17. Зарисовка о гайке Джанибекова
  18. Математическое моделирование эффекта Джанибекова


Введение


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

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

Скалярное произведение — это хорошо. Но как же быть с остальными операциями? Как они связываются с геометрией пространства и представимы ли в тензорном виде? Разумеется представимы, ведь векторы — это… тензоры! И скаляры — это тоже тензоры. Привычные нам математические объекты лишь частные примеры более общего понятия, коим является тензор.

Вот об этом мы и поговорим под катом.
Читать дальше →
Всего голосов 33: ↑33 и ↓0 +33
Просмотры91.8K
Комментарии 3

Иерархические (рекурсивные) запросы

SQL
Дерево объектов

Чтобы понять рекурсию, сначала надо понять рекурсию. Возможно, поэтому рекурсивные запросы применяют так редко. Наверняка вы представляете что такое SQL-запрос, я расскажу, чем рекурсивные запросы отличаются от обычных. Тема получилась объемная, приготовьтесь к долгому чтению. В основном речь пойдет об Oracle, но упоминаются и другие СУБД.

Читать дальше →
Всего голосов 108: ↑103 и ↓5 +98
Просмотры396.7K
Комментарии 159

Динамическое определение класса в Python

Ненормальное программированиеPythonООП
Под динамическим определением объекта можно понимать определение во время исполнения. В отличие от статического определения, которое используется в привычном определении класса с помощью ключевого слова class, динамическое определение использует встроенный класс type.

Метакласс type


Класс type часто используется для получения типа объекта. Например так:

h = "hello"
type(h)
<class 'str'>

Но у него есть другое применение. Он может инициализировать новые типы.
Читать дальше →
Всего голосов 16: ↑15 и ↓1 +14
Просмотры6.4K
Комментарии 16

О выборе структур данных для начинающих

ПрограммированиеРазработка игр
Перевод
image

Часть 1. Линейные структуры


Массив


Когда вам нужен один объект, вы создаёте один объект. Когда нужно несколько объектов, тогда есть несколько вариантов на выбор. Я видел, как многие новички в коде пишут что-то типа такого:

// Таблица рекордов
int score1 = 0;
int score2 = 0;
int score3 = 0;
int score4 = 0;
int score5 = 0;

Это даёт нам значение пяти рекордов. Этот способ неплохо работает, пока вам не потребуется пятьдесят или сто объектов. Вместо создания отдельных объектов можно использовать массив.

// Таблица рекордов
const int NUM_HIGH_SCORES = 5;
int highScore[NUM_HIGH_SCORES] = {0};

Будет создан буфер из 5 элементов, вот такой:



Заметьте, что индекс массива начинается с нуля. Если в массиве пять элементов, то они будут иметь индексы от нуля до четырёх.
Читать дальше →
Всего голосов 42: ↑40 и ↓2 +38
Просмотры114.8K
Комментарии 31

Реализуем глобальную обработку исключений в ASP.NET Core приложении

OTUSПрограммирование.NETASPC#
Перевод

Сегодня в этой статье мы обсудим концепцию обработки исключений в приложениях ASP.NET Core. Обработка исключений (exception handling) — одна из наиболее важных импортируемых функций или частей любого типа приложений, которой всегда следует уделять внимание и правильно реализовывать. Исключения — это в основном средства ориентированные на обработку рантайм ошибок, которые возникают во время выполнения приложения. Если этот тип ошибок не обрабатывать должным образом, то приложение будет остановлено в результате их появления.

В ASP.NET Core концепция обработки исключений подверглась некоторым изменениям, и теперь она, если можно так сказать, находится в гораздо лучшей форме для внедрения обработки исключений. Для любых API-проектов реализация обработки исключений для каждого действия будет отнимать довольно много времени и дополнительных усилий. Но мы можем реализовать глобальный обработчик исключений (Global Exception handler), который будет перехватывать все типы необработанных исключений. Преимущество реализации глобального обработчика исключений состоит в том, что нам нужно определить его всего лишь в одном месте. Через этот обработчик будет обрабатываться любое исключение, возникающее в нашем приложении, даже если мы объявляем новые методы или контроллеры. Итак, в этой статье мы обсудим, как реализовать глобальную обработку исключений в ASP.NET Core Web API.

Читать далее
Всего голосов 15: ↑7 и ↓8 -1
Просмотры3.8K
Комментарии 7

Делаем фильтры «как в экселе» на ASP.NET Core

Разработка веб-сайтов.NETC#

«Сделайте нам фильтры «как в экселе», — довольно популярный запрос на разработку. К сожалению, реализация запроса в общем виде «слегка» длинее, чем его лаконичная постановка. Если вдруг вы никогда не пользовались этими фильтрами, то вот пример. Основная фишка в том, что в строчке с названиям колонок появляются выпадающие списки со значениями из выбранного диапазона. Например в колонках А и B — 4000 строк и 3999 значений (первую строчку занимают названия колонок). Таким образом, в соответсвтующих выпадающих списках будет по 3999 значений. В колонке C — 220 строк и 219 значений в выпадающем списке соответственно.


Пример реализации на C# под катом
Всего голосов 16: ↑15 и ↓1 +14
Просмотры4.8K
Комментарии 9

Методы скрытия элементов веб-страниц

RUVDS.comРазработка веб-сайтовCSSHTML
Перевод


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

  • Некий элемент совершенно невидим и, более того, удалён из потока документа.
  • Глазами элемент не увидеть, но он присутствует в документе и доступен для ассистивных технологий наподобие средств для чтения с экрана.
  • Элемент видим, но скрыт от средств для чтения с экрана.

Статья, перевод которой мы сегодня публикуем, посвящена разбору методов скрытия элементов веб-страниц с использованием HTML и CSS. Здесь будут рассмотрены такие вопросы, как доступность контента, анимация, сценарии использования технологий скрытия данных на страницах.
Читать дальше →
Всего голосов 46: ↑45 и ↓1 +44
Просмотры41.1K
Комментарии 8

Информация

В рейтинге
5,884-й
Зарегистрирован
Активность