Pull to refresh
6
0
Send message

SSH у людей не достаточно безопасен. Как я борюсь с паранойей

Reading time3 min
Views25K
Под моим надзором примерно 1000 железных серверов, VPS даже не начинаю считать. Пару десятков из них обладают весьма критичными данными. И банальный ssh с ключами в стандартной ситуации не достаточно безопасен. Не все «кожаные люди» берегут ключи, поговорим как защититься от возможности потери ключа пользователем.
Читать дальше →
Total votes 46: ↑43 and ↓3+40
Comments63

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

Reading time18 min
Views173K
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 элементов, вот такой:



Заметьте, что индекс массива начинается с нуля. Если в массиве пять элементов, то они будут иметь индексы от нуля до четырёх.
Читать дальше →
Total votes 42: ↑40 and ↓2+38
Comments32

SHA2017 CTF: Нужно больше трафика

Reading time16 min
Views11K


Всем доброго времени суток. Только что подошел к концу SHA2017 CTF и в этой статье, я бы хотел рассмотреть решение одного интересного таска Abuse Mail (300) из раздела Network.
Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments1

Управление бесколлекторным двигателем по сигналам обратной ЭДС – понимание процесса

Reading time13 min
Views112K
Когда я начал разрабатывать блок управления бесколлекторным двигателем (мотор-колесом), было много вопросов о том, как сопоставить реальный двигатель с абстрактной схемой из трех обмоток и магнитов, на которой, как правило, все объясняют принцип управления бесколлекторными двигателями.

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

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

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


Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments18

Поддержание положения в сервоприводе: подчинённое регулирование vs шаговый режим

Reading time22 min
Views75K

После выхода предыдущих статьей о векторном управлении электродвигателями поступило много вопросов о позиционном приводе – как приводом отрабатывать заданное положение? Как работает сервопривод в современных станках, как использовать сигнал с датчика положения, чем отличается шаговый привод от сервопривода с подчиненным регулированием? Давайте всё покажу в виде картинок и видео.
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments63

Многоступенчатая организация хранения резервных копий для самых маленьких

Reading time5 min
Views17K
Совсем недавно по планете прокатились волны WannaCry и его клонов. А сама проблема шифровальщиков стоит перед системными администраторами уже более 10 лет. Рано или поздно – но все внедренные и реализованные меры по защите от шифровальщиков не помогают и все-таки находится пользователь, который открывает письмо, вложение и получает полный «букет». Также много «приятных и увлекательных» часов получает системный администратор.

И тут то все четко начинают понимать, что нужны резервные копии (много, разных, в разных местах). Т.е. правило 3-2-1, придуманное и описанное Peter-ом Krogh-ом, весьма желательно выполнять. Данная статья – пример, который помогает сделать реальным выполнение данного правила на «коленке» — без покупки дорогостоящего оборудования (в условиях жесткой экономии).
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments18

Немного реверс-инжиниринга USB flash на контроллере SK6211

Reading time7 min
Views32K
Недавно, обсуждая нюансы работы USB flash на данном ресурсе, столкнулся с тем, что основная масса технически грамотных людей в силу отсутствия литературы не имеет представления об основных принципах работы NAND контроллеров, в связи с чем появляется масса далеких от реальности заявлений об особенностях оптимизации микропрограмм устройств, либо делаются неверные выводы о причинах выхода из строя самих устройств.

Дабы немного развеять иллюзии, попробуем методами реверс-инжиниринга проанализировать алгоритмы работы NAND контроллера производства SKYMEDI SK6211 на примере готового изделия в виде USB flash 8Gb, выпущенной компанией Kingston.


рис. 1
Читать дальше →
Total votes 56: ↑54 and ↓2+52
Comments41

Критическая уязвимость SambaCry: как защититься

Reading time3 min
Views23K


В популярном пакете для создания сетевых дисков на различных ОС Samba обнаружена критическая уязвимость, позволяющая удаленно получать контроль над Linux и Unix-системами. Ошибка просуществовала 7 лет — уязвимости CVE-2017-7494 подвержены все версии пакета, начиная с Samba 3.5.0, который вышел 1 марта 2010 года. Сегодня мы поговорим о том, как защититься от этой уязвимости.
Total votes 19: ↑17 and ↓2+15
Comments19

Начинаем работать в STM32CubeMX. Часть 3

Reading time8 min
Views57K
Продолжаем цикл про основы работы STM32MXCube и программированию микроконтроллеров STM32.

Часть 1
Часть 2

В прошлых частях мы освоили базовые настройки микроконтроллера, работу с GPIO, таймером, DMA и DAC. В этой части мы познакомимся с ADC и USB.
Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments14

VHD Native Boot снаружи и внутри

Reading time9 min
Views43K
Цель настоящей статьи — рассказать о моем опыте работы с весьма полезной и не слишком хорошо известной функцией Windows, которая называется VHD Native Boot, то есть способности загружаться с виртуального жесткого диска формата VHD/VHDx.

Начиная с 7-й версии, в Windows появилась возможность создавать виртуальные диски VHD/VHDx (далее просто VHD), а также подсоединять и отсоединять их через графический интерфейс «Управление дисками» и утилиту командной строки diskpart. Кроме этого, Windows научилась с таких дисков загружаться, и все бы ничего, но этот самый Native Boot был доступен только обладателям старших версий, то есть от Pro и выше. Очевидно, что это было лишь маркетинговое ограничение, потому что с появлением Windows 10, а я проверял Anniversary Update (1607) и Creators Update (1703), никаких ограничений больше нет. Это работает и в Windows 10 Home, причем она может выступать как в роли хоста, так и в роли гостя. О том, как это выглядит и как это можно использовать, вы узнаете ниже.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments10

«Полезняшки» или «Реестр Windows как платформа»

Reading time10 min
Views48K
Хочу рассказать вам историю, как решение конкретных прикладных задач привело меня к использованию реестра Windows в качестве платформы для хранения и исполнения кода.
Читать дальше →
Total votes 92: ↑84 and ↓8+76
Comments35

Исправляем ошибки установки обновлений Windows 7

Reading time6 min
Views260K
Windows 7 по-прежнему остается популярной операционной системой в корпоративной среде, несмотря на то, что уже вышли две новые версии клиентских ОС. Расширенная поддержка «семёрки» закончится лишь 14 января 2020 г., а это значит, что ближайшие 4 года для нее будут выходить обновления, исправляющие обнаруженные уязвимости.

Существует правило – если есть обновления, то есть и проблемы с их установкой. Давайте разберем, какие основные проблемы возникают при обновлении Windows 7 через Windows Server Update Services (WSUS) и как их исправить с наименьшими затратами.

Осторожно, настоящая уличная магия!
Total votes 22: ↑19 and ↓3+16
Comments20

Виртуальное приватное облако: подготовка образов

Reading time13 min
Views19K
VPC Image Building

В сервисе «Виртуальное приватное облако» имеется большой набор готовых образов операционных систем для создания виртуальных машин.


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


Иногда возникает необходимость изменить набор предустановленных пакетов или конфигурационные файлы системы в готовом образе — например, у пользователей, которые разворачивают кластер однотипных серверов.


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

Читать дальше →
Total votes 23: ↑20 and ↓3+17
Comments4

Zabbix 3.0.4: Агент Windows с TLS, LLD дисков, простой пример S.M.A.R.T. и только командная строка

Reading time14 min
Views44K
Будем считать, что сервер Zabbix 3.0.4 у нас установлен. Для скриптов установки агента будем использовать, по хардкору, только родную командную строку Windows, без питонов, перлов и т.п., т.е. без дополнительных инсталляций в систему агента. Шифрование настроим с помощью PSK.

Внешний IP Zabbix сервера пусть будет — 30.0.1.1
Локальный IP Zabbix сервера – 10.3.10.1
Адрес тестового узла – 30.0.1.3
По форвардинг портов тут говориться не будет. Узел в примере будет слушать 10050, сервер – 10051.

Постановка задачи:

1) Упростить установку агентов на системы Windows
2) Настроить шифрование между агентом и сервером.
3) Настроить обнаружение дисков (имена, модели, серийные номера, типы) c помощью утилиты smartmontools, контроль S.M.A.R.T.
4) Создать масштабируемый шаблон сценария развёртывания.
5) Настроить оповещение.
6) Использовать только командную строку.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments13

Массивы в РНР 7: хэш-таблицы

Reading time22 min
Views35K
Хэш-таблицы используются везде, в каждой серьёзной С-программе. По сути, они позволяют программисту хранить значения в «массиве», индексируя его с помощью строк, в то время как в языке С допускаются только целочисленные ключи массива. В хэш-таблице строчные ключи сначала хэшируются, а затем уменьшаются до размеров таблицы. Здесь могут возникать коллизии, поэтому нужен алгоритм их разрешения. Существует несколько подобных алгоритмов, и в РНР используется стратегия связных списков (linked list).

В Сети есть немало замечательных статей, подробно освещающих устройство хэш-таблиц и их реализации. Начать можно с http://preshing.com/. Но имейте в виду, вариантов структуры хэш-таблиц — несметное множество, и ни один из них не совершенен, в каждом есть компромиссы, несмотря на оптимизацию циклов процессора, использования памяти или хорошее масштабирование потокового окружения (threaded environment). Одни варианты лучше при добавлении данных, другие — при поиске и т. д. Выбирайте реализацию в зависимости от того, что для вас важнее.

Хэш-таблицы в РНР 5 подробно рассмотрены в материале phpinternalsbook, который я написал вместе с Nikic, автором хорошей статьи про хэш-таблицы в РНР 7. Возможно, её вы тоже сочтёте интересной. Правда, она писалась до релиза, поэтому некоторые вещи в ней слегка отличаются.

Здесь же мы подробно рассмотрим, как устроены хэш-таблицы в РНР 7, как с ними можно работать с точки зрения языка С и как ими управлять средствами РНР (используя структуры, называемые массивами). Исходный код в основном доступен в zend_hash.c. Не забывайте, что хэш-таблицы мы используем везде (обычно в роли словарей), следовательно, нужно проектировать их так, чтобы они быстро обрабатывались процессором и потребляли мало памяти. Эти структуры решающе влияют на общую производительность РНР, поскольку местные массивы не единственное место, где используются хэш-таблицы.
Читать дальше →
Total votes 58: ↑57 and ↓1+56
Comments14

Эффективное использование Github

Reading time13 min
Views123K

Github — важная часть жизни современного разработчика: он стал стандартом для размещения opensource-проектов. В «2ГИС» мы используем гитхаб для разработки проектов web-отдела и хостинга проектов с открытым кодом.

Хотя большинство из нас пользуются сервисом практически каждый день, не все знают, что у него есть много фишек, помогающих облегчить работу или рутинные операции. Например, получение публичного ключа из URL; отслеживание того, с каких сайтов пользователи приходят в репозиторий; правильный шаринг ссылок на файлы, которые живут в репозиториях гитхаба; горячие клавиши и тому подобное. Цель этой статьи — рассказать о неочевидных вещах и вообще о том, что сделает вашу работу с гитхабом продуктивнее и веселее (я не буду рассматривать здесь работу с API гитхаба, так как эта тема заслуживает отдельной статьи).


Содержание



Читать дальше →
Total votes 149: ↑148 and ↓1+147
Comments38

Прикручивание диаграммы Гантта

Reading time15 min
Views11K
При разработке системы документооборота возникла необходимость отображать данные в виде диаграммы Гантта. После непродолжительных поисков был найден подходящий бесплатный компонент, который нужно было прикрутить к «движку» easla.com.

Мой опыт прикручивания JS-компоненты к движку на Yii с описание, кодом и примерами под катом.
Читать дальше →
Total votes 19: ↑14 and ↓5+9
Comments9

Управление задачами в проектной организации

Reading time34 min
Views12K
Потребовал главный инженер автоматизировать процесс управления задачами. Поручений своим подчиненным он дает много, но вручную контролировать процесс их исполнения просто нереально. Помнить все поручения тем более невозможно. Поэтому сразу настоял на использовании подходящих средств автоматизации.

Нетривиальные задачи потребовали нетривиального подхода. Подробное описание с картинками и исходным кодом под катом.
Читать дальше →
Total votes 17: ↑11 and ↓6+5
Comments37

Внутреннее представление значений в PHP 7 (часть 2)

Reading time11 min
Views20K
image
Kore Nordmann

В первой части мы рассматривали высокоуровневые различия во внутреннем представлении значений между PHP 5 и PHP 7. Как вы помните, главное отличие заключается в том, что zval больше не выделяются отдельно и не хранят в себе refcount. Простые значения, вроде целочисленных или с плавающей точкой, могут храниться прямо в zval, в то время как сложные значения представляются с помощью указателя на отдельную структуру.
Читать дальше →
Total votes 50: ↑44 and ↓6+38
Comments3

Внутреннее представление значений в PHP7 (часть 1)

Reading time13 min
Views27K
В связи с большим объёмом материала, публикацию пришлось разбить на две части. В первой из них я расскажу о том, как менялись реализации zval (Zend value) начиная с пятой версии PHP. Также обсудим реализацию ссылок. Во второй части будет подробно рассмотрена реализация отдельных типов данных, таких как строки и объекты.

zval’ы в PHP 5


Структура zval в пятой версии выглядит так:

typedef struct _zval_struct {
    zvalue_value value;
    zend_uint refcount__gc;
    zend_uchar type;
    zend_uchar is_ref__gc;
} zval;

Как видите, конструкция включает в себя value, type и дополнительную информацию __gc, о чём я расскажу ниже. Value представляет собой объединение различных возможных значений, которые может хранить zval:
Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments3

Information

Rating
Does not participate
Registered
Activity